mirror of
https://github.com/MariaDB/server.git
synced 2025-01-22 14:54:20 +01:00
d8d6db6f78
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.
65 lines
1.6 KiB
Text
65 lines
1.6 KiB
Text
# Check the replication of the FOREIGN_KEY_CHECKS variable.
|
|
|
|
-- source include/master-slave.inc
|
|
|
|
eval CREATE TABLE t1 (a INT AUTO_INCREMENT KEY) ENGINE=$engine_type;
|
|
eval CREATE TABLE t2 (b INT AUTO_INCREMENT KEY, c INT, FOREIGN KEY(b) REFERENCES t1(a)) ENGINE=$engine_type;
|
|
|
|
SET FOREIGN_KEY_CHECKS=0;
|
|
INSERT INTO t1 VALUES (10);
|
|
INSERT INTO t1 VALUES (NULL),(NULL),(NULL);
|
|
INSERT INTO t2 VALUES (5,0);
|
|
INSERT INTO t2 VALUES (NULL,LAST_INSERT_ID());
|
|
SET FOREIGN_KEY_CHECKS=1;
|
|
SELECT * FROM t1 ORDER BY a;
|
|
SELECT * FROM t2 ORDER BY b;
|
|
sync_slave_with_master;
|
|
SELECT * FROM t1 ORDER BY a;
|
|
SELECT * FROM t2 ORDER BY b;
|
|
|
|
connection master;
|
|
SET TIMESTAMP=1000000000;
|
|
CREATE TABLE t3 ( a INT UNIQUE );
|
|
SET FOREIGN_KEY_CHECKS=0;
|
|
# Had to add 1022 for run with ndb as ndb uses different
|
|
# error and error code for error ER_DUP_ENTRY. Bug 16677
|
|
--error 1022, ER_DUP_ENTRY
|
|
INSERT INTO t3 VALUES (1),(1);
|
|
sync_slave_with_master;
|
|
|
|
connection master;
|
|
SET FOREIGN_KEY_CHECKS=0;
|
|
DROP TABLE IF EXISTS t1,t2,t3;
|
|
SET FOREIGN_KEY_CHECKS=1;
|
|
sync_slave_with_master;
|
|
|
|
#
|
|
# Bug #32468 delete rows event on a table with foreign key constraint fails
|
|
#
|
|
|
|
connection master;
|
|
|
|
eval create table t1 (b int primary key) engine = $engine_type;
|
|
eval create table t2 (a int primary key, b int, foreign key (b) references t1(b))
|
|
engine = $engine_type;
|
|
|
|
insert into t1 set b=1;
|
|
insert into t2 set a=1, b=1;
|
|
|
|
set foreign_key_checks=0;
|
|
set @@session.binlog_format=row;
|
|
delete from t1;
|
|
|
|
--echo must sync w/o a problem (could not with the buggy code)
|
|
sync_slave_with_master;
|
|
select count(*) from t1 /* must be zero */;
|
|
|
|
|
|
# cleanup for bug#32468
|
|
|
|
connection master;
|
|
drop table t2,t1;
|
|
|
|
sync_slave_with_master;
|
|
|
|
|