List:Commits« Previous MessageNext Message »
From:Mats Kindahl Date:September 3 2008 9:36am
Subject:Re: bzr commit into mysql-5.1 branch (aelkin:2677) Bug#36099
View as plain text  
Hi Andrei,

Patch is approved, but I would prefer if comments emitted to the result file is
marked in some way so that they can easily be distinguished from the SQL
statements that are executed.

Just my few cents,
Mats Kindahl

Andrei Elkin wrote:
> #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 bug is about to refuse execution of a BINLOG pseudo-query on the
>       server.  The reason of the bug appeared to be an inappropiate applying
>       the replication slave side filtering rules.  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
> 
> per-file messages:
>   mysql-test/suite/rpl/r/rpl_binlog_query_filter_rules.result
>     new result file
>   mysql-test/suite/rpl/t/rpl_binlog_query_filter_rules-master.opt
>     a filtering option that would refuse to replicate a row event of the main test
> on
>     slave
>   mysql-test/suite/rpl/t/rpl_binlog_query_filter_rules.test
>     a regression test for the bug
>   sql/log_event.cc
>     avoiding to call the filtering rules if the execution thread is not a slave.
> === 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:31:52
> +0000
> @@ -0,0 +1,12 @@
> +drop table if exists t1;
> +reset master;
> +create table t1 (a int);
> +set @@session.binlog_format=row;
> +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:31:52 +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:31:52
> +0000
> @@ -0,0 +1,32 @@
> +# 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);
> +set @@session.binlog_format=row;
> +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:31:52 +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));
>    }
> 
> 


-- 
Mats Kindahl
Lead Software Developer
Replication Team
MySQL AB, www.mysql.com

Thread
bzr commit into mysql-5.1 branch (aelkin:2677) Bug#36099Andrei Elkin3 Sep
  • Re: bzr commit into mysql-5.1 branch (aelkin:2677) Bug#36099Mats Kindahl3 Sep
  • Re: bzr commit into mysql-5.1 branch (aelkin:2677) Bug#36099He Zhenxing3 Sep
    • Re: bzr commit into mysql-5.1 branch (aelkin:2677) Bug#36099Andrei Elkin3 Sep