From: Date: September 3 2008 11:57am Subject: bzr commit into mysql-5.1 branch (aelkin:2677) Bug#36099 List-Archive: http://lists.mysql.com/commits/53142 X-Bug: 36099 Message-Id: <200809030957.m839vcjD013668@mysql1000.dsl.inet.fi> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit #At file:///home/andrei/MySQL/BZR/mysql-5.1-5.1.29-rc/ 2677 Andrei Elkin 2008-09-03 Bug #36099 replicate-do-db affects replaying RBR events with mysqlbinlog The replication filtering rules were inappropiately applied when executing BINLOG pseudo-query. The rules are supposed to be active only at times when the slave's sql thread executes an event. Fixed with correcting a condition to call replication rules only if the slave sql thread executes the event. added: mysql-test/suite/rpl/r/rpl_binlog_query_filter_rules.result mysql-test/suite/rpl/t/rpl_binlog_query_filter_rules-master.opt mysql-test/suite/rpl/t/rpl_binlog_query_filter_rules.test modified: sql/log_event.cc === added file 'mysql-test/suite/rpl/r/rpl_binlog_query_filter_rules.result' --- a/mysql-test/suite/rpl/r/rpl_binlog_query_filter_rules.result 1970-01-01 00:00:00 +0000 +++ b/mysql-test/suite/rpl/r/rpl_binlog_query_filter_rules.result 2008-09-03 09:57:34 +0000 @@ -0,0 +1,11 @@ +drop table if exists t1; +reset master; +create table t1 (a int); +insert into t1 values (1); +flush logs; +drop table t1; +must be 1 +select * from t1; +a +1 +drop table t1; === added file 'mysql-test/suite/rpl/t/rpl_binlog_query_filter_rules-master.opt' --- a/mysql-test/suite/rpl/t/rpl_binlog_query_filter_rules-master.opt 1970-01-01 00:00:00 +0000 +++ b/mysql-test/suite/rpl/t/rpl_binlog_query_filter_rules-master.opt 2008-09-03 09:57:34 +0000 @@ -0,0 +1 @@ +--replicate-do-db='impossible_database' === added file 'mysql-test/suite/rpl/t/rpl_binlog_query_filter_rules.test' --- a/mysql-test/suite/rpl/t/rpl_binlog_query_filter_rules.test 1970-01-01 00:00:00 +0000 +++ b/mysql-test/suite/rpl/t/rpl_binlog_query_filter_rules.test 2008-09-03 09:57:34 +0000 @@ -0,0 +1,31 @@ +# regression test for +# Bug#36099 replicate-do-db affects replaying RBR events with mysqlbinlog +# The test verifies that the slave side filtering rule does not affect +# applying of row-events on master via mysqlbinlog + +-- source include/have_log_bin.inc +-- source include/not_embedded.inc +-- source include/have_binlog_format_row.inc + +--disable_warnings +drop table if exists t1; +--enable_warnings + +reset master; + +create table t1 (a int); +insert into t1 values (1); + +flush logs; +--exec $MYSQL_BINLOG $MYSQLTEST_VARDIR/log/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/bug36099.sql + +drop table t1; +--exec $MYSQL -e "source $MYSQLTEST_VARDIR/tmp/bug36099.sql" + +--echo must be 1 +select * from t1; + +# cleanup + +drop table t1; +remove_file $MYSQLTEST_VARDIR/tmp/bug36099.sql; === modified file 'sql/log_event.cc' --- a/sql/log_event.cc 2008-08-27 18:52:44 +0000 +++ b/sql/log_event.cc 2008-09-03 09:57:34 +0000 @@ -7843,8 +7843,9 @@ int Table_map_log_event::do_apply_event( int error= 0; - if (!rpl_filter->db_ok(table_list->db) || - (rpl_filter->is_on() && !rpl_filter->tables_ok("", table_list))) + if (rli->sql_thd->slave_thread /* filtering is for slave only */ && + (!rpl_filter->db_ok(table_list->db) || + (rpl_filter->is_on() && !rpl_filter->tables_ok("", table_list)))) { my_free(memory, MYF(MY_WME)); }