mirror of
https://github.com/MariaDB/server.git
synced 2026-01-06 05:22:24 +03:00
Merge sanja.is.com.ua:/home/bell/mysql/bk/mysql-4.1
into sanja.is.com.ua:/home/bell/mysql/bk/work-bug8-4.1
This commit is contained in:
16
mysql-test/r/rpl_ignore_table.result
Normal file
16
mysql-test/r/rpl_ignore_table.result
Normal file
@@ -0,0 +1,16 @@
|
||||
stop slave;
|
||||
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;
|
||||
start slave;
|
||||
**** Test case for BUG#16487 ****
|
||||
**** Master ****
|
||||
CREATE TABLE test.t4 (a int);
|
||||
CREATE TABLE test.t1 (a int);
|
||||
UPDATE test.t4 NATURAL JOIN test.t1 SET t1.a=5;
|
||||
**** Slave ****
|
||||
SELECT * FROM t4;
|
||||
a
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t4;
|
||||
25
mysql-test/r/rpl_multi_update4.result
Normal file
25
mysql-test/r/rpl_multi_update4.result
Normal file
@@ -0,0 +1,25 @@
|
||||
stop slave;
|
||||
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;
|
||||
start slave;
|
||||
drop database if exists d1;
|
||||
drop database if exists d2;
|
||||
drop database if exists d2;
|
||||
create database d1;
|
||||
create table d1.t0 (id int);
|
||||
create database d2;
|
||||
use d2;
|
||||
create table t1 (id int);
|
||||
create table t2 (id int);
|
||||
insert into t1 values (1), (2), (3), (4), (5);
|
||||
insert into t2 select id + 3 from t1;
|
||||
update t1 join t2 using (id) set t1.id = 0;
|
||||
insert into d1.t0 values (0);
|
||||
use d1;
|
||||
select * from t0 where id=0;
|
||||
id
|
||||
0
|
||||
drop database d1;
|
||||
drop database d2;
|
||||
1
mysql-test/t/rpl_ignore_table-slave.opt
Normal file
1
mysql-test/t/rpl_ignore_table-slave.opt
Normal file
@@ -0,0 +1 @@
|
||||
--replicate-ignore-table=test.t1 --replicate-ignore-table=test.t2 --replicate-ignore-table=test.t3
|
||||
28
mysql-test/t/rpl_ignore_table.test
Normal file
28
mysql-test/t/rpl_ignore_table.test
Normal file
@@ -0,0 +1,28 @@
|
||||
source include/master-slave.inc;
|
||||
|
||||
#
|
||||
# BUG#16487
|
||||
#
|
||||
# Requirement:
|
||||
# Multi-updates on ignored tables should not fail even if the slave does
|
||||
# not have the ignored tables.
|
||||
#
|
||||
# Note table t1, t2, and t3 are ignored in the option file to this test.
|
||||
#
|
||||
|
||||
--echo **** Test case for BUG#16487 ****
|
||||
--echo **** Master ****
|
||||
connection master;
|
||||
CREATE TABLE test.t4 (a int);
|
||||
CREATE TABLE test.t1 (a int);
|
||||
|
||||
# Expect: The row must *not* by updated on slave, since t1 is ignored
|
||||
UPDATE test.t4 NATURAL JOIN test.t1 SET t1.a=5;
|
||||
|
||||
--echo **** Slave ****
|
||||
sync_slave_with_master;
|
||||
SELECT * FROM t4;
|
||||
|
||||
connection master;
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t4;
|
||||
1
mysql-test/t/rpl_multi_update4-slave.opt
Normal file
1
mysql-test/t/rpl_multi_update4-slave.opt
Normal file
@@ -0,0 +1 @@
|
||||
--replicate-wild-do-table=d1.%
|
||||
44
mysql-test/t/rpl_multi_update4.test
Normal file
44
mysql-test/t/rpl_multi_update4.test
Normal file
@@ -0,0 +1,44 @@
|
||||
# Let's verify that multi-update is not always skipped by slave if
|
||||
# some replicate-* rules exist.
|
||||
# (BUG#15699)
|
||||
|
||||
source include/master-slave.inc;
|
||||
|
||||
### Clean-up
|
||||
|
||||
connection master;
|
||||
--disable_warnings
|
||||
drop database if exists d1;
|
||||
drop database if exists d2;
|
||||
|
||||
connection slave;
|
||||
drop database if exists d2;
|
||||
--enable_warnings
|
||||
|
||||
### Test
|
||||
|
||||
connection master;
|
||||
create database d1; # accepted by slave
|
||||
create table d1.t0 (id int);
|
||||
create database d2; # ignored by slave
|
||||
use d2;
|
||||
create table t1 (id int);
|
||||
create table t2 (id int);
|
||||
insert into t1 values (1), (2), (3), (4), (5);
|
||||
insert into t2 select id + 3 from t1;
|
||||
# a problematic query which must be filter out by slave
|
||||
update t1 join t2 using (id) set t1.id = 0;
|
||||
insert into d1.t0 values (0); # replication works
|
||||
|
||||
sync_slave_with_master;
|
||||
use d1;
|
||||
#connection slave;
|
||||
select * from t0 where id=0; # must find
|
||||
|
||||
### Clean-up
|
||||
connection master;
|
||||
drop database d1;
|
||||
drop database d2;
|
||||
|
||||
|
||||
# End of test
|
||||
@@ -2840,21 +2840,26 @@ unsent_create_error:
|
||||
if ((res= multi_update_precheck(thd, tables)))
|
||||
break;
|
||||
|
||||
if ((res= mysql_multi_update_lock(thd, tables, &select_lex->item_list,
|
||||
select_lex)))
|
||||
break;
|
||||
|
||||
res= mysql_multi_update_lock(thd, tables, &select_lex->item_list,
|
||||
select_lex);
|
||||
#ifdef HAVE_REPLICATION
|
||||
/* Check slave filtering rules */
|
||||
if (thd->slave_thread)
|
||||
if (all_tables_not_ok(thd,tables))
|
||||
{
|
||||
if (res!= 0)
|
||||
{
|
||||
res= 0; /* don't care of prev failure */
|
||||
thd->clear_error(); /* filters are of highest prior */
|
||||
}
|
||||
/* we warn the slave SQL thread */
|
||||
my_error(ER_SLAVE_IGNORED_TABLE, MYF(0));
|
||||
break;
|
||||
}
|
||||
#endif /* HAVE_REPLICATION */
|
||||
|
||||
if (res)
|
||||
break;
|
||||
|
||||
res= mysql_multi_update(thd,tables,
|
||||
&select_lex->item_list,
|
||||
&lex->value_list,
|
||||
|
||||
Reference in New Issue
Block a user