mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Bug#31552 Replication breaks when deleting rows from out-of-sync table
without PK Bug#31609 Not all RBR slave errors reported as errors bug#32468 delete rows event on a table with foreign key constraint fails The first two bugs comprise idempotency issues. First, there was no error code reported under conditions of the bug description although the slave sql thread halted. Second, executions were different with and without presence of prim key in the table. Third, there was no way to instruct the slave whether to ignore an error and skip to the following event or to halt. Fourth, there are handler errors which might happen due to idempotent applying of binlog but those were not listed among the "idempotent" error list. All the named issues are addressed. Wrt to the 3rd, there is the new global system variable, changeble at run time, which controls the slave sql thread behaviour. The new variable allows further extensions to mimic the sql_mode session/global variable. To address the 4th, the new bug#32468 had to be fixed as it was staying in the way.
This commit is contained in:
@ -174,11 +174,18 @@ sync_slave_with_master;
|
||||
INSERT INTO t7 VALUES (1,3), (2,6), (3,9);
|
||||
SELECT * FROM t7 ORDER BY C1;
|
||||
|
||||
# since bug#31552/31609 idempotency is not default any longer. In order
|
||||
# the preceeding test INSERT INTO t7 to pass the mode is switched
|
||||
# temprorarily
|
||||
set @@global.slave_exec_mode= 'IDEMPOTENT';
|
||||
|
||||
connection master;
|
||||
--echo --- on master: new values inserted ---
|
||||
INSERT INTO t7 VALUES (1,2), (2,4), (3,6);
|
||||
SELECT * FROM t7 ORDER BY C1;
|
||||
sync_slave_with_master;
|
||||
|
||||
set @@global.slave_exec_mode= default;
|
||||
--echo --- on slave: old values should be overwritten by replicated values ---
|
||||
SELECT * FROM t7 ORDER BY C1;
|
||||
|
||||
@ -206,12 +213,19 @@ SELECT * FROM t8 ORDER BY a;
|
||||
INSERT INTO t8 VALUES (1,2,3), (2,4,6), (3,6,9);
|
||||
SELECT * FROM t8 ORDER BY a;
|
||||
|
||||
# since bug#31552/31609 idempotency is not default any longer. In order
|
||||
# the preceeding test INSERT INTO t8 to pass the mode is switched
|
||||
# temprorarily
|
||||
set @@global.slave_exec_mode= 'IDEMPOTENT';
|
||||
|
||||
connection master;
|
||||
--echo --- on master ---
|
||||
# We insert a row that will cause conflict on the primary key but not
|
||||
# on the other keys.
|
||||
INSERT INTO t8 VALUES (2,4,8);
|
||||
sync_slave_with_master;
|
||||
set @@global.slave_exec_mode= default;
|
||||
|
||||
--echo --- on slave ---
|
||||
SELECT * FROM t8 ORDER BY a;
|
||||
|
||||
|
Reference in New Issue
Block a user