Description:
A non-concurrent workload containing INSERT/UPDATE/DELETE CREATE/DROP TABLE and SET AUTOCOMMIT = OFF; causes replication failure:
081020 21:39:15 [ERROR] Slave SQL: Could not execute Update_rows event on table test.t1; Can't find record in 't1', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log master-bin.000001, end_log_pos 2747, Error_code: 1032
081020 21:39:15 [Warning] Slave: Can't find record in 't1' Error_code: 1032
081020 21:39:15 [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 2062
How to repeat:
This is an unsimplifed test case. Some queries are likely redundant however without an automatic test case simplification tool, it is extremely time-consuming to reduce those test cases further.
--disable_abort_on_error
--source include/master-slave.inc
--source include/have_innodb.inc
SET binlog_format = 'row';
CREATE TABLE `t1` (
`int` int,
`int_key` int,
pk integer auto_increment,
`char_key` char (1),
`char` char (1),
key (`int_key` ),
primary key (pk),
key (`char_key` )
) ENGINE=innodb;
INSERT IGNORE INTO t1 VALUES ('1', '9', NULL, 'c', 'k');
DELETE FROM `t1` WHERE `char` < 0 LIMIT 1;
INSERT INTO `t1` ( `int` ) VALUES ( 2 );
INSERT INTO `t1` ( `int_key` ) VALUES ( 3 );
CREATE TABLE IF NOT EXISTS o ( F1 INTEGER );
CREATE TABLE IF NOT EXISTS r ( F1 INTEGER );
SET AUTOCOMMIT = OFF;
DELETE FROM `t1` WHERE `int` < 5 LIMIT 1;
DROP TABLE IF EXISTS l;
CREATE TABLE IF NOT EXISTS y ( F1 INTEGER );
UPDATE `t1` SET `char_key` = 9 ORDER BY `char` LIMIT 3;
INSERT INTO `t1` ( `char` ) VALUES ( 8 );
DROP TABLE IF EXISTS v;
INSERT INTO `t1` ( `int` ) VALUES ( 8 );
SET AUTOCOMMIT = OFF;
CREATE TABLE IF NOT EXISTS y ( F1 INTEGER );
DELETE FROM `t1` WHERE `char_key` < 2 LIMIT 1;
UPDATE `t1` SET `char_key` = 8 ORDER BY `pk` LIMIT 0;
INSERT INTO `t1` ( `char` ) VALUES ( 6 );
SET AUTOCOMMIT = OFF;
UPDATE `t1` SET `int_key` = 1 ORDER BY `int` LIMIT 4;
DELETE FROM `t1` WHERE `int_key` < 9 LIMIT 1;
UPDATE `t1` SET `pk` = 0 ORDER BY `int` LIMIT 6;
SET AUTOCOMMIT = OFF;
SET AUTOCOMMIT = OFF;
UPDATE `t1` SET `int` = 5 ORDER BY `pk` LIMIT 6;
INSERT INTO `t1` ( `int_key` ) VALUES ( 6 );
UPDATE `t1` SET `pk` = 9 ORDER BY `char_key` LIMIT 4;
DELETE FROM `t1` WHERE `char_key` < 5 LIMIT 1;
INSERT INTO `t1` ( `pk` ) VALUES ( 7 );
SET AUTOCOMMIT = OFF;
DROP TABLE IF EXISTS o;
--save_master_pos
--connection slave
--sync_with_master