From: Date: January 26 2006 11:50am Subject: bk commit into 4.1 tree (aelkin:1.2459) BUG#15699 List-Archive: http://lists.mysql.com/commits/1665 X-Bug: 15699 Message-Id: <200601261050.k0QAo00k030539@dsl-hkigw8-feb0de00-199.dhcp.inet.fi> Below is the list of changes that have just been committed into a local 4.1 repository of elkin. When elkin does a push these changes will be propagated to the main repository and, within 24 hours after the push, to the public repository. For information on how to access the public repository see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html ChangeSet 1.2459 06/01/26 12:49:55 aelkin@stripped +5 -0 BUG#15699 importing the fix from 5.0 mysql-test/r/rpl_ignore_table.result 1.1 06/01/26 12:49:52 aelkin@stripped +16 -0 New BitKeeper file ``mysql-test/r/rpl_ignore_table.result'' mysql-test/r/rpl_ignore_table.result 1.0 06/01/26 12:49:52 aelkin@stripped +0 -0 BitKeeper file /usr_rh9/home/elkin.rh9/MySQL/FIXES/mysql-4.1-bug16487/mysql-test/r/rpl_ignore_table.result mysql-test/t/rpl_multi_update4.test 1.1 06/01/26 12:47:59 aelkin@stripped +44 -0 New BitKeeper file ``mysql-test/t/rpl_multi_update4.test'' mysql-test/t/rpl_multi_update4-slave.opt 1.1 06/01/26 12:47:59 aelkin@stripped +1 -0 New BitKeeper file ``mysql-test/t/rpl_multi_update4-slave.opt'' mysql-test/r/rpl_multi_update4.result 1.1 06/01/26 12:47:59 aelkin@stripped +25 -0 New BitKeeper file ``mysql-test/r/rpl_multi_update4.result'' sql/sql_parse.cc 1.475 06/01/26 12:47:59 aelkin@stripped +10 -5 BUG#15699,16487 merge of the fix made in 5.0 mysql-test/t/rpl_multi_update4.test 1.0 06/01/26 12:47:59 aelkin@stripped +0 -0 BitKeeper file /usr_rh9/home/elkin.rh9/MySQL/FIXES/mysql-4.1-bug16487/mysql-test/t/rpl_multi_update4.test mysql-test/t/rpl_multi_update4-slave.opt 1.0 06/01/26 12:47:59 aelkin@stripped +0 -0 BitKeeper file /usr_rh9/home/elkin.rh9/MySQL/FIXES/mysql-4.1-bug16487/mysql-test/t/rpl_multi_update4-slave.opt mysql-test/r/rpl_multi_update4.result 1.0 06/01/26 12:47:59 aelkin@stripped +0 -0 BitKeeper file /usr_rh9/home/elkin.rh9/MySQL/FIXES/mysql-4.1-bug16487/mysql-test/r/rpl_multi_update4.result # This is a BitKeeper patch. What follows are the unified diffs for the # set of deltas contained in the patch. The rest of the patch, the part # that BitKeeper cares about, is below these diffs. # User: aelkin # Host: dsl-hkigw8-feb0de00-199.dhcp.inet.fi # Root: /usr_rh9/home/elkin.rh9/MySQL/FIXES/mysql-4.1-bug16487 --- 1.474/sql/sql_parse.cc 2005-12-07 20:57:53 +02:00 +++ 1.475/sql/sql_parse.cc 2006-01-26 12:47:59 +02:00 @@ -2840,21 +2840,26 @@ 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, --- New file --- +++ mysql-test/r/rpl_ignore_table.result 06/01/26 12:49:52 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; --- New file --- +++ mysql-test/r/rpl_multi_update4.result 06/01/26 12:47:59 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; --- New file --- +++ mysql-test/t/rpl_multi_update4-slave.opt 06/01/26 12:47:59 --replicate-wild-do-table=d1.% --- New file --- +++ mysql-test/t/rpl_multi_update4.test 06/01/26 12:47:59 # 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