diff --git a/mysql-test/extra/rpl_tests/rpl_row_basic.test b/mysql-test/extra/rpl_tests/rpl_row_basic.test index a2635130ea3..48ddbaf244a 100644 --- a/mysql-test/extra/rpl_tests/rpl_row_basic.test +++ b/mysql-test/extra/rpl_tests/rpl_row_basic.test @@ -248,12 +248,17 @@ connection master; INSERT INTO t1 VALUES ('K','K'), ('L','L'), ('M','M'); --echo **** On Master **** sync_slave_with_master; +# since bug#31552/31609 idempotency is not default any longer. In order +# the following test DELETE FROM t1 to pass the mode is switched +# temprorarily +set @@global.slave_exec_mode= 'IDEMPOTENT'; DELETE FROM t1 WHERE C1 = 'L'; connection master; DELETE FROM t1; query_vertical SELECT COUNT(*) FROM t1 ORDER BY c1,c2; sync_slave_with_master; +set @@global.slave_exec_mode= default; let $last_error = query_get_value("SHOW SLAVE STATUS", Last_SQL_Errno, 1); disable_query_log; eval SELECT "$last_error" AS Last_SQL_Error; diff --git a/mysql-test/suite/rpl/r/rpl_ignore_table.result b/mysql-test/suite/rpl/r/rpl_ignore_table.result index e7200b31212..cdc3f5e9579 100644 --- a/mysql-test/suite/rpl/r/rpl_ignore_table.result +++ b/mysql-test/suite/rpl/r/rpl_ignore_table.result @@ -115,6 +115,7 @@ GRANT INSERT, INSERT (a), UPDATE (a), REFERENCES (a) ON `test`.`t4` TO 'mysqltes show grants for mysqltest4@localhost; Grants for mysqltest4@localhost GRANT USAGE ON *.* TO 'mysqltest4'@'localhost' IDENTIFIED BY PASSWORD '*196BDEDE2AE4F84CA44C47D54D78478C7E2BD7B7' +set global slave_exec_mode='IDEMPOTENT'; drop table t1, t4, mysqltest2.t2; drop database mysqltest2; delete from mysql.user where user like "mysqltest%"; @@ -132,6 +133,7 @@ INSERT INTO t5 (word) VALUES ('TEST’'); SELECT HEX(word) FROM t5; HEX(word) 54455354E28099 +set @@global.slave_exec_mode= default; SELECT HEX(word) FROM t5; HEX(word) 54455354E28099 diff --git a/mysql-test/suite/rpl/r/rpl_row_basic_2myisam.result b/mysql-test/suite/rpl/r/rpl_row_basic_2myisam.result index eb817859517..22284a26412 100644 --- a/mysql-test/suite/rpl/r/rpl_row_basic_2myisam.result +++ b/mysql-test/suite/rpl/r/rpl_row_basic_2myisam.result @@ -430,10 +430,12 @@ START SLAVE; **** On Master **** INSERT INTO t1 VALUES ('K','K'), ('L','L'), ('M','M'); **** On Master **** +set @@global.slave_exec_mode= 'IDEMPOTENT'; DELETE FROM t1 WHERE C1 = 'L'; DELETE FROM t1; SELECT COUNT(*) FROM t1 ORDER BY c1,c2; COUNT(*) 0 +set @@global.slave_exec_mode= default; Last_SQL_Error 0 SELECT COUNT(*) FROM t1 ORDER BY c1,c2; diff --git a/mysql-test/suite/rpl/r/rpl_row_basic_3innodb.result b/mysql-test/suite/rpl/r/rpl_row_basic_3innodb.result index 85a19a65fdd..f7b9e5d627a 100644 --- a/mysql-test/suite/rpl/r/rpl_row_basic_3innodb.result +++ b/mysql-test/suite/rpl/r/rpl_row_basic_3innodb.result @@ -430,10 +430,12 @@ START SLAVE; **** On Master **** INSERT INTO t1 VALUES ('K','K'), ('L','L'), ('M','M'); **** On Master **** +set @@global.slave_exec_mode= 'IDEMPOTENT'; DELETE FROM t1 WHERE C1 = 'L'; DELETE FROM t1; SELECT COUNT(*) FROM t1 ORDER BY c1,c2; COUNT(*) 0 +set @@global.slave_exec_mode= default; Last_SQL_Error 0 SELECT COUNT(*) FROM t1 ORDER BY c1,c2; diff --git a/mysql-test/suite/rpl/t/rpl_ignore_table.test b/mysql-test/suite/rpl/t/rpl_ignore_table.test index fd4ae64165a..7f13b16b0de 100644 --- a/mysql-test/suite/rpl/t/rpl_ignore_table.test +++ b/mysql-test/suite/rpl/t/rpl_ignore_table.test @@ -119,6 +119,13 @@ show grants for mysqltest3@localhost; show grants for mysqltest4@localhost; # Cleanup +# connection slave; +# BUG31552 changes idempotency is not default any longer +# In order the following `delete from mysql.user', +# where mysqltest1 does not exist on slave, +# to succeed on slave the mode is temporarily changed +set global slave_exec_mode='IDEMPOTENT'; + connection master; drop table t1, t4, mysqltest2.t2; drop database mysqltest2; @@ -129,7 +136,10 @@ delete from mysql.db where user like "mysqltest%"; # move it to slave instead #delete from mysql.tables_priv where user like "mysqltest%"; delete from mysql.columns_priv where user like "mysqltest%"; + sync_slave_with_master; +# bug#31552: do not restore the mode here but later in order +# to succeed with yet the following delete from mysql.tables_priv #BUG27606 delete from mysql.tables_priv where user like "mysqltest%"; @@ -155,6 +165,7 @@ CREATE TEMPORARY TABLE tmptbl504451f4258$1 (id INT NOT NULL) ENGINE=MEMORY; INSERT INTO t5 (word) VALUES ('TEST’'); SELECT HEX(word) FROM t5; sync_slave_with_master; +set @@global.slave_exec_mode= default; # bug#31552 comments above connection slave; SELECT HEX(word) FROM t5; --error 1146 diff --git a/mysql-test/suite/rpl_ndb/r/rpl_ndb_dd_advance.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_dd_advance.result index 931fbb78c82..7f26313894c 100644 --- a/mysql-test/suite/rpl_ndb/r/rpl_ndb_dd_advance.result +++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_dd_advance.result @@ -301,7 +301,6 @@ SELECT COUNT(*) FROM history; COUNT(*) 400 *** DUMP MASTER & SLAVE FOR COMPARE ******** -set @@global.slave_exec_mode='IDEMPOTENT' /* to ignore missed records in mysql.proc */; *************** TEST 2 CLEANUP SECTION ******************** DROP PROCEDURE IF EXISTS tpcb.load; DROP PROCEDURE IF EXISTS tpcb.trans; diff --git a/mysql-test/suite/rpl_ndb/r/rpl_row_basic_7ndb.result b/mysql-test/suite/rpl_ndb/r/rpl_row_basic_7ndb.result index fe1b55f7ec3..4db69a7dce3 100644 --- a/mysql-test/suite/rpl_ndb/r/rpl_row_basic_7ndb.result +++ b/mysql-test/suite/rpl_ndb/r/rpl_row_basic_7ndb.result @@ -378,7 +378,7 @@ C1 C2 1 2 2 4 3 6 -set @@global.slave_exec_mode= 'STRICT'; +set @@global.slave_exec_mode= default; --- on slave: old values should be overwritten by replicated values --- SELECT * FROM t7 ORDER BY C1; C1 C2 @@ -430,10 +430,12 @@ START SLAVE; **** On Master **** INSERT INTO t1 VALUES ('K','K'), ('L','L'), ('M','M'); **** On Master **** +set @@global.slave_exec_mode= 'IDEMPOTENT'; DELETE FROM t1 WHERE C1 = 'L'; DELETE FROM t1; SELECT COUNT(*) FROM t1 ORDER BY c1,c2; COUNT(*) 0 +set @@global.slave_exec_mode= default; Last_SQL_Error 0 SELECT COUNT(*) FROM t1 ORDER BY c1,c2; diff --git a/sql/log_event.cc b/sql/log_event.cc index 28f9afec9a0..2490e54282f 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -122,7 +122,6 @@ static void inline slave_rows_error_report(enum loglevel level, int ha_error, thd->net.last_error[0] != 0 ? ";" : "", handler_error == NULL? "" : handler_error, log_name, pos); ->>>>>>> } #endif