include/master-slave.inc [connection master] call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT"); call mtr.add_suppression("Write to binary log failed: Multi-row statements required more than .max_binlog_stmt_cache_size"); call mtr.add_suppression("Write to binary log failed: Multi-statement transaction required more than .max_binlog_cache_size"); SET GLOBAL max_binlog_cache_size = 4096; SET GLOBAL binlog_cache_size = 4096; SET GLOBAL max_binlog_stmt_cache_size = 4096; SET GLOBAL binlog_stmt_cache_size = 4096; disconnect master; connect master,127.0.0.1,root,,test,$MASTER_MYPORT,; CREATE TABLE t1(a INT PRIMARY KEY, data VARCHAR(30000)) ENGINE=Innodb; CREATE TABLE t2(a INT PRIMARY KEY, data VARCHAR(30000)) ENGINE=MyIsam; CREATE TABLE t3(a INT PRIMARY KEY, data VARCHAR(30000)) ENGINE=Innodb; ######################################################################################## # 1 - SINGLE STATEMENT ######################################################################################## connection master; *** Single statement on transactional table *** Got one of the listed errors *** Single statement on non-transactional table *** Got one of the listed errors include/wait_for_slave_sql_error_and_skip.inc [errno=1590] *** Single statement on both transactional and non-transactional tables. *** Got one of the listed errors include/wait_for_slave_sql_error_and_skip.inc [errno=1590] include/diff_tables.inc [master:t1,slave:t1] ######################################################################################## # 2 - BEGIN - IMPLICIT COMMIT by DDL ######################################################################################## connection master; TRUNCATE TABLE t1; TRUNCATE TABLE t2; TRUNCATE TABLE t3; set default_storage_engine=innodb; BEGIN; Got one of the listed errors Got one of the listed errors Got one of the listed errors INSERT INTO t1 (a, data) VALUES (7, 's');; INSERT INTO t2 (a, data) VALUES (8, 's');; INSERT INTO t1 (a, data) VALUES (9, 's');; ALTER TABLE t3 ADD COLUMN d int; BEGIN; Got one of the listed errors Got one of the listed errors INSERT INTO t1 (a, data) VALUES (19, 's');; INSERT INTO t2 (a, data) VALUES (20, 's');; INSERT INTO t1 (a, data) VALUES (21, 's');; CREATE TABLE t4 SELECT * FROM t1; BEGIN; Got one of the listed errors Got one of the listed errors INSERT INTO t1 (a, data) VALUES (27, 's');; INSERT INTO t2 (a, data) VALUES (28, 's');; INSERT INTO t1 (a, data) VALUES (29, 's');; CREATE TABLE t5 (a int); connection slave; include/diff_tables.inc [master:t1,slave:t1] ######################################################################################## # 3 - BEGIN - COMMIT ######################################################################################## connection master; TRUNCATE TABLE t1; TRUNCATE TABLE t2; TRUNCATE TABLE t3; BEGIN; Got one of the listed errors Got one of the listed errors Got one of the listed errors COMMIT; connection slave; include/diff_tables.inc [master:t1,slave:t1] ######################################################################################## # 4 - BEGIN - ROLLBACK ######################################################################################## connection master; TRUNCATE TABLE t1; TRUNCATE TABLE t2; TRUNCATE TABLE t3; BEGIN; Got one of the listed errors Got one of the listed errors Got one of the listed errors ROLLBACK; Warnings: Warning 1196 Some non-transactional changed tables couldn't be rolled back connection slave; include/diff_tables.inc [master:t1,slave:t1] ######################################################################################## # 5 - PROCEDURE ######################################################################################## connection master; TRUNCATE TABLE t1; TRUNCATE TABLE t2; TRUNCATE TABLE t3; CREATE PROCEDURE p1(pd VARCHAR(30000)) BEGIN INSERT INTO t1 (a, data) VALUES (1, pd); INSERT INTO t1 (a, data) VALUES (2, pd); INSERT INTO t1 (a, data) VALUES (3, pd); INSERT INTO t1 (a, data) VALUES (4, pd); INSERT INTO t1 (a, data) VALUES (5, 's'); END// TRUNCATE TABLE t1; TRUNCATE TABLE t1; BEGIN; Got one of the listed errors COMMIT; TRUNCATE TABLE t1; BEGIN; Got one of the listed errors ROLLBACK; connection slave; include/diff_tables.inc [master:t1,slave:t1] ######################################################################################## # 6 - XID ######################################################################################## connection master; TRUNCATE TABLE t1; TRUNCATE TABLE t2; TRUNCATE TABLE t3; BEGIN; Got one of the listed errors Got one of the listed errors Got one of the listed errors INSERT INTO t1 (a, data) VALUES (7, 's');; INSERT INTO t2 (a, data) VALUES (8, 's');; INSERT INTO t1 (a, data) VALUES (9, 's');; ROLLBACK TO sv; Warnings: Warning 1196 Some non-transactional changed tables couldn't be rolled back COMMIT; connection slave; include/diff_tables.inc [master:t1,slave:t1] ######################################################################################## # 7 - NON-TRANS TABLE ######################################################################################## connection master; TRUNCATE TABLE t1; TRUNCATE TABLE t2; TRUNCATE TABLE t3; BEGIN; Got one of the listed errors Got one of the listed errors Got one of the listed errors INSERT INTO t1 (a, data) VALUES (8, 's');; INSERT INTO t1 (a, data) VALUES (9, 's');; INSERT INTO t2 (a, data) VALUES (10, 's');; INSERT INTO t1 (a, data) VALUES (11, 's');; COMMIT; BEGIN; Got one of the listed errors COMMIT; connection slave; include/diff_tables.inc [master:t1,slave:t1] ######################################################################## # 8 - Bug#55375(Regression Bug) Transaction bigger than # max_binlog_cache_size crashes slave ######################################################################## # [ On Slave ] SET GLOBAL max_binlog_cache_size = 4096; SET GLOBAL binlog_cache_size = 4096; SET GLOBAL max_binlog_stmt_cache_size = 4096; SET GLOBAL binlog_stmt_cache_size = 4096; include/stop_slave.inc include/start_slave.inc CALL mtr.add_suppression("Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage.*"); CALL mtr.add_suppression("Multi-statement transaction required more than 'max_binlog_stmt_cache_size' bytes of storage.*"); CALL mtr.add_suppression("Writing one row to the row-based binary log failed.*"); CALL mtr.add_suppression("Slave SQL.*The incident LOST_EVENTS occurred on the master. Message: error writing to the binary log"); connection master; TRUNCATE t1; connection slave; connection master; SET GLOBAL max_binlog_cache_size= ORIGINAL_VALUE; SET GLOBAL binlog_cache_size= ORIGINAL_VALUE; SET GLOBAL max_binlog_stmt_cache_size= ORIGINAL_VALUE; SET GLOBAL binlog_stmt_cache_size= ORIGINAL_VALUE; disconnect master; connect master,127.0.0.1,root,,test,$MASTER_MYPORT,; BEGIN; Repeat statement 'INSERT INTO t1 VALUES($n, repeat("a", 32))' 128 times COMMIT; connection slave; include/wait_for_slave_sql_error.inc [errno=1197] SELECT count(*) FROM t1; count(*) 0 include/show_binlog_events.inc SET GLOBAL max_binlog_cache_size= ORIGINAL_VALUE; SET GLOBAL binlog_cache_size= ORIGINAL_VALUE; SET GLOBAL max_binlog_stmt_cache_size= ORIGINAL_VALUE; SET GLOBAL binlog_stmt_cache_size= ORIGINAL_VALUE; include/stop_slave.inc include/start_slave.inc connection master; connection slave; SELECT count(*) FROM t1; count(*) 128 ######################################################################################## # CLEAN ######################################################################################## connection master; DROP TABLE t1; DROP TABLE t2; DROP TABLE t3; DROP TABLE IF EXISTS t4; DROP TABLE t5; DROP PROCEDURE p1; include/rpl_end.inc