summaryrefslogtreecommitdiff
path: root/mysql-test
diff options
context:
space:
mode:
authorguilhem@mysql.com <>2004-04-13 22:40:16 +0200
committerguilhem@mysql.com <>2004-04-13 22:40:16 +0200
commit066382e6e721b24043970e90d1d8757162ccc5b4 (patch)
tree97fe6cf195e64ae2f13d84055ffddf513449ec15 /mysql-test
parentc640a3904a9fa90d7402810d380002283bab6c79 (diff)
downloadmariadb-git-066382e6e721b24043970e90d1d8757162ccc5b4.tar.gz
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.
Diffstat (limited to 'mysql-test')
-rw-r--r--mysql-test/r/rpl_multi_delete2.result21
-rw-r--r--mysql-test/t/rpl_multi_delete2-slave.opt1
-rw-r--r--mysql-test/t/rpl_multi_delete2.test23
3 files changed, 45 insertions, 0 deletions
diff --git a/mysql-test/r/rpl_multi_delete2.result b/mysql-test/r/rpl_multi_delete2.result
new file mode 100644
index 00000000000..8b6d87801fe
--- /dev/null
+++ b/mysql-test/r/rpl_multi_delete2.result
@@ -0,0 +1,21 @@
+slave stop;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+reset master;
+reset slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+slave start;
+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;
+select * from t1;
+a
+select * from t2;
+a
+1
+select * from t1;
+Table 'test.t1' doesn't exist
+select * from t2;
+Table 'test.t2' doesn't exist
+drop table t1,t2;
diff --git a/mysql-test/t/rpl_multi_delete2-slave.opt b/mysql-test/t/rpl_multi_delete2-slave.opt
new file mode 100644
index 00000000000..b828d03fafb
--- /dev/null
+++ b/mysql-test/t/rpl_multi_delete2-slave.opt
@@ -0,0 +1 @@
+--replicate-wild-ignore-table=test.%
diff --git a/mysql-test/t/rpl_multi_delete2.test b/mysql-test/t/rpl_multi_delete2.test
new file mode 100644
index 00000000000..c5128833843
--- /dev/null
+++ b/mysql-test/t/rpl_multi_delete2.test
@@ -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;