Bug #17400 Cluster Replication: delete & update of rows in table without pk fails on slave.
Submitted: 14 Feb 2006 21:17 Modified: 13 May 2006 15:36
Reporter: Jonathan Miller Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Cluster: Replication Severity:S2 (Serious)
Version:5.1.7 OS:Linux (Linux 32 Bit OS)
Assigned to: Mats Kindahl CPU Architecture:Any

[14 Feb 2006 21:17] Jonathan Miller
Description:
Works:
-- source include/master-slave.inc
eval create table t1 (a int primary key, b int) engine=$engine_type;
insert into t1 values(1,1);
delete from t1;
drop table t1;
sync_slave_with_master;

Fails:
-- source include/master-slave.inc
eval create table t1 (a int, b int) engine=$engine_type;
insert into t1 values(1,1);
delete from t1;
drop table t1;
sync_slave_with_master;

ERRORS:
060215  0:14:43 [Note] NDB Binlog: logging ./test/t1
060215  0:14:44 [ERROR] Slave: Error in Delete_rows event: row application failed, Error_code: 137
060215  0:14:44 [ERROR] Slave: Error in Delete_rows event: error during transaction execution on table test.t1, Error_code: 137
060215  0:14:44 [ERROR] Slave (additional info): Unknown error Error_code: 1105
060215  0:14:44 [Warning] Slave: Unknown error Error_code: 1105
060215  0:14:44 [Warning] Slave: Unknown error Error_code: 1105
060215  0:14:44 [ERROR] Error running query, slave SQL thread aborted. Fix the problem, and restart the slave SQL thread with "SLAVE START". We stopped at log 'master-bin.000001' position 666

PERROR:
MySQL error code 137: No more records (read after end of file)

How to repeat:
See above.

Note, test belongs to new ./t/rpl_ndb_delete_nowhere.test test not checked in yet.
[14 Feb 2006 21:18] Jonathan Miller
Note: Replace $engine_type with NDB
[16 Feb 2006 1:51] Jonathan Miller
I also get it for new test CURRENT_TEST: rpl_ndb_multi_update3
060216  4:33:36 [ERROR] Slave: Error in Update_rows event: row application failed, Error_code: 137
060216  4:33:36 [ERROR] Slave: Error in Update_rows event: error during transaction execution on table test.t1, Error_code: 137
060216  4:33:36 [ERROR] Slave (additional info): Unknown error Error_code: 1105
060216  4:33:36 [Warning] Slave: Unknown error Error_code: 1105
060216  4:33:36 [Warning] Slave: Unknown error Error_code: 1105

--disable_warnings
DROP TABLE IF EXISTS t1;
DROP TABLE IF EXISTS t2;
--enable_warnings

CREATE TABLE t1 (
  a1  char(30),
  a2  int,
  a3  int,
  a4  char(30),
  a5  char(30)
);

CREATE TABLE t2 (
  b1  int,
  b2  char(30)
);

# Insert one row per table
INSERT INTO t1 VALUES ('Yes', 1, NULL, 'foo', 'bar');
INSERT INTO t2 VALUES (1, 'baz');
# This should update the row in t1
UPDATE t1 a, t2
  SET    a.a1 = 'No'
  WHERE  a.a2 =
    (SELECT  b1
     FROM    t2
     WHERE   b2 = 'baz')
  AND a.a3 IS NULL
  AND a.a4 = 'foo'
  AND a.a5 = 'bar';

sync_slave_with_master;
connection slave;
SELECT * FROM t1;
SELECT * FROM t2;
[24 Feb 2006 21:32] Jonathan Miller
Okay I also get this when replicating from NDB -> MyISAM using PARTITION BY LIST

--disable_warnings
select "--- Start test 3 partition LIST testing --" as "";
select "--- Do setup --" as "";
--enable_query_log

CREATE TABLE t1 (id MEDIUMINT NOT NULL, b1 BIT(8), vc VARCHAR(255), bc CHAR(255), d DECIMAL(10,4) DEFAULT 0, f FLOAT DEFAULT 0, total BIGINT UNSIGNED, y YEAR, t DATE)PARTITION BY LIST(id) (PARTITION p0 VALUES IN (2, 4), PARTITION p1 VALUES IN (42, 142));

--disable_warnings
select "--- Test 3 Alter to add partition --" as "";
--enable_query_log

SHOW CREATE TABLE t1;
sync_slave_with_master;
SHOW CREATE TABLE t1;

--disable_query_log
select "--- Perform basic operation on master and ensure replicated correctly --" as "";
--enable_query_log

--source include/rpl_multi_engine3.inc

--disable_warnings
select "--- End test 3 partition LIST testing --" as "";
select "--- Do Cleanup --" as "";
--enable_query_log

DROP TABLE IF EXISTS t1;

060225  0:18:29 [ERROR] Slave: Error in Delete_rows event: row application failed, Error_code: 137
060225  0:18:29 [ERROR] Slave: Error in Delete_rows event: error during transaction execution on table test.t1, Error_code: 137
060225  0:18:29 [ERROR] Slave (additional info): Unknown error Error_code: 1105
060225  0:18:29 [Warning] Slave: Unknown error Error_code: 1105
060225  0:18:29 [Warning] Slave: Unknown error Error_code: 1105
[17 Mar 2006 7:44] Jonathan Miller
New Test case

Attachment: rpl_ndb_dd_partitions.test (application/octet-stream, text), 8.20 KiB.

[17 Mar 2006 7:47] Jonathan Miller
Mats,

The test case I attached today produce the following:

060317 10:40:35 [Note] NDB Binlog: logging ./test/t1
060317 10:40:50 [ERROR] Slave: Error in Delete_rows event: row application failed, Error_code: 137
060317 10:40:50 [ERROR] Slave: Error in Delete_rows event: error during transaction execution on table test.t1, Error_code: 137
060317 10:40:50 [ERROR] Slave (additional info): Unknown error Error_code: 1105
060317 10:40:50 [Warning] Slave: Unknown error Error_code: 1105
060317 10:40:50 [Warning] Slave: Unknown error Error_code: 1105
060317 10:40:50 [ERROR] Error running query, slave SQL thread aborted. Fix the problem, and restart the slave SQL thread with "SLAVE START". We stopped at log 'master-bin.000001' position 3033

TEST                            RESULT
-------------------------------------------------------
rpl_ndb_dd_partitions          [ fail ]

Errors are (from /home/ndbdev/jmiller/clones/mysql-5.1-new/mysql-test/var/log/mysqltest-time) :
mysqltest: At line 103: could not sync with master ('select master_pos_wait('master-bin.000001', 3826)' returned NULL)
(the last lines may be the most important ones)

I did a pull and rebuild last night so it should be current code base. Thanks /jbm
[19 Apr 2006 13:43] Mats Kindahl
Bug fixed in current clone done (5.1.10). Missed the 5.1.9 clone-off by a few hours.
[20 Apr 2006 8:41] Jon Stephens
Thank you for your bug report. This issue has been committed to our
source repository of that product and will be incorporated into the
next release.

If necessary, you can access the source repository and build the latest
available version, including the bugfix, yourself. More information 
about accessing the source trees is available at
    http://www.mysql.com/doc/en/Installing_source_tree.html

Additional info:

Documented bugfix in 5.1.10 changelog. Closed.
[21 Apr 2006 7:36] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/5260
[2 May 2006 12:48] Jonathan Miller
I seem to have hit this one again. And since you are having fun with "bit" today this should add to that fun.

rpl_bit_npk.test returns:

060502 15:08:14 [ERROR] Slave: Error in Update_rows event: row application failed, Error_code: 137
060502 15:08:14 [ERROR] Slave: Error in Update_rows event: error during transaction execution on table test.t1, Error_code: 137
060502 15:08:14 [ERROR] Slave (additional info): Unknown error Error_code: 1105
060502 15:08:14 [Warning] Slave: Unknown error Error_code: 1105
060502 15:08:14 [Warning] Slave: Unknown error Error_code: 1105
060502 15:08:14 [ERROR] Error running query, slave SQL thread aborted. Fix the problem, and restart the slave SQL thread with "SLAVE START". We stopped at log 'master-bin.000001' position 835

repeat:
./mysql-test-run.pl --do-test=rpl_bit_npk --mysqld=--default-storage-engine=ndb --force --with-ndbcluster-all  

Note: This was done from mysql-5.1-new pulled yesterday and built with comp-pent-debug-max script
[11 May 2006 9:50] Mats Kindahl
Patch for bug pushed into current release clone (5.1.10).  The bug requires no additional documentation.
[13 May 2006 15:36] Jon Stephens
If there was nothing new to document, then there was no need to put it in Documenting status. :)

Closed bug report.