1
0
mirror of https://github.com/MariaDB/server.git synced 2025-12-24 11:21:21 +03:00

fix for BUG#11139 (multi-delete with alias breaking replication if table rules are

present): the problem originally was that the tables in auxilliary_tables did not have 
the correct real_name, which caused problems in the second call to tables_ok(). 
The fix corrects the real_name problem, and also sets the updating flag properly, 
which makes the second call to tables_ok() unnecessary.
This commit is contained in:
sasha@asksasha.com
2005-09-14 06:31:38 -06:00
parent 1e6736b543
commit 00eae49b5c
7 changed files with 117 additions and 30 deletions

View File

@@ -4,6 +4,26 @@ reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
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
create table t1 (a int);
create table t2 (a int);
insert into t1 values (1);
@@ -15,7 +35,10 @@ select * from t2;
a
1
select * from t1;
ERROR 42S02: Table 'test.t1' doesn't exist
ERROR 42S02: Table 'mysqltest_to.t1' doesn't exist
select * from t2;
ERROR 42S02: Table 'test.t2' doesn't exist
drop table t1,t2;
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;

View File

@@ -1 +1 @@
--replicate-wild-ignore-table=test.%
"--replicate-rewrite-db=mysqltest_from->mysqltest_to" --replicate-do-table=mysqltest_to.a

View File

@@ -1,4 +1,41 @@
#multi delete replication bugs
source include/master-slave.inc;
#BUG#11139 - improper wild-table and table rules
#checking for multi deletes with an alias
connection master;
set sql_log_bin=0;
create database mysqltest_from;
set sql_log_bin=1;
connection slave;
create database mysqltest_to;
connection master;
use mysqltest_from;
--disable_warnings
drop table if exists a;
--enable_warnings
CREATE TABLE a (i INT);
INSERT INTO a VALUES(1);
DELETE alias FROM a alias WHERE alias.i=1;
SELECT * FROM a;
insert into a values(2),(3);
delete a alias FROM a alias where alias.i=2;
select * from a;
save_master_pos;
connection slave;
use mysqltest_to;
sync_with_master;
select * from a;
# BUG#3461
connection master;
create table t1 (a int);
create table t2 (a int);
@@ -19,7 +56,13 @@ select * from t1;
error 1146;
select * from t2;
# cleanup
connection master;
drop table t1,t2;
set sql_log_bin=0;
drop database mysqltest_from;
set sql_log_bin=1;
connection slave;
drop database mysqltest_to;
# End of 4.1 tests