mirror of
https://github.com/MariaDB/server.git
synced 2026-01-06 05:22:24 +03:00
Fix for BUG#3461 "multi-table DELETE replicated despite replicate-wild-ignore-table":
In tables_ok(), when there is no table having "updating==TRUE" in the list,
return that we don't replicate this statement (the slave is supposed to
replicate *changes* only).
In practice, the case can only happen for this statement:
DELETE t FROM t,u WHERE ... ;
tables_ok(t,u) will now return 0, which (check all_tables_not_ok())
will give a chance to tables_ok(t) to run.
sql/slave.cc:
In tables_ok(), when there is no table having "updating==TRUE" in the list,
return that we don't replicate this statement (the slave is supposed to
replicate *changes* only).
In practice, the case can only happen for this statement:
DELETE t FROM t,u WHERE ... ;
tables_ok(t,u) will now return 0, which (check all_tables_not_ok())
will give a chance to tables_ok(t) to run.
This commit is contained in:
23
mysql-test/t/rpl_multi_delete2.test
Normal file
23
mysql-test/t/rpl_multi_delete2.test
Normal file
@@ -0,0 +1,23 @@
|
||||
source include/master-slave.inc;
|
||||
create table t1 (a int);
|
||||
create table t2 (a int);
|
||||
|
||||
insert into t1 values (1);
|
||||
insert into t2 values (1);
|
||||
|
||||
delete t1.* from t1, t2 where t1.a = t2.a;
|
||||
|
||||
save_master_pos;
|
||||
select * from t1;
|
||||
select * from t2;
|
||||
|
||||
connection slave;
|
||||
# BUG#3461 would cause sync to fail
|
||||
sync_with_master;
|
||||
error 1146;
|
||||
select * from t1;
|
||||
error 1146;
|
||||
select * from t2;
|
||||
|
||||
connection master;
|
||||
drop table t1,t2;
|
||||
Reference in New Issue
Block a user