2004-05-05 20:24:21 +02:00
|
|
|
stop slave;
|
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.
2004-04-13 22:40:16 +02:00
|
|
|
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;
|
2004-05-05 20:24:21 +02:00
|
|
|
start slave;
|
2005-09-14 14:31:38 +02:00
|
|
|
set sql_log_bin=0;
|
|
|
|
create database mysqltest_from;
|
|
|
|
set sql_log_bin=1;
|
|
|
|
create database mysqltest_to;
|
|
|
|
use mysqltest_from;
|
|
|
|
drop table if exists a;
|
|
|
|
CREATE TABLE a (i INT);
|
|
|
|
INSERT INTO a VALUES(1);
|
|
|
|
DELETE alias FROM a alias WHERE alias.i=1;
|
|
|
|
SELECT * FROM a;
|
|
|
|
i
|
|
|
|
insert into a values(2),(3);
|
|
|
|
delete a alias FROM a alias where alias.i=2;
|
|
|
|
select * from a;
|
|
|
|
i
|
|
|
|
3
|
|
|
|
use mysqltest_to;
|
|
|
|
select * from a;
|
|
|
|
i
|
|
|
|
3
|
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.
2004-04-13 22:40:16 +02:00
|
|
|
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;
|
2005-09-14 14:31:38 +02:00
|
|
|
ERROR 42S02: Table 'mysqltest_to.t1' doesn't exist
|
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.
2004-04-13 22:40:16 +02:00
|
|
|
select * from t2;
|
2005-09-14 14:31:38 +02:00
|
|
|
ERROR 42S02: Table 'mysqltest_to.t2' doesn't exist
|
|
|
|
set sql_log_bin=0;
|
|
|
|
drop database mysqltest_from;
|
|
|
|
set sql_log_bin=1;
|
|
|
|
drop database mysqltest_to;
|