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

There are two minor issues that I would like you to do:

- Please change the name of the test to something that relates to the
  problem (i.e., filtering rules) rather than a bug number.

- Please disable warnings for the "drop table if..." since it may or may not
  produce a warning depending on how the preceding tests behave. If you're
  unlucky, you will get a test failure for this test because some test before
  your forgot to drop the t1 table.

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-02
>       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/binlog/r/binlog_row_bug36099.result
>   mysql-test/suite/binlog/t/binlog_row_bug36099-master.opt
>   mysql-test/suite/binlog/t/binlog_row_bug36099.test
> modified:
>   sql/log_event.cc
> 
> per-file messages:
>   mysql-test/suite/binlog/r/binlog_row_bug36099.result
>     new result file
>   mysql-test/suite/binlog/t/binlog_row_bug36099-master.opt
>     a filtering option that would refuse to replicate a row event of the main test on
> slave
>   mysql-test/suite/binlog/t/binlog_row_bug36099.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/binlog/r/binlog_row_bug36099.result'
> --- a/mysql-test/suite/binlog/r/binlog_row_bug36099.result	1970-01-01 00:00:00 +0000
> +++ b/mysql-test/suite/binlog/r/binlog_row_bug36099.result	2008-09-02 15:48:28 +0000
> @@ -0,0 +1,14 @@
> +drop table if exists t1;
> +Warnings:
> +Note	1051	Unknown table 't1'

I would suggest to disable the warning here since it is unimportant if this
statement produces a warning or not.

> +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/binlog/t/binlog_row_bug36099-master.opt'
> --- a/mysql-test/suite/binlog/t/binlog_row_bug36099-master.opt	1970-01-01 00:00:00
> +0000
> +++ b/mysql-test/suite/binlog/t/binlog_row_bug36099-master.opt	2008-09-02 15:48:28
> +0000
> @@ -0,0 +1 @@
> +--replicate-do-db='impossible_database'
> 
> === added file 'mysql-test/suite/binlog/t/binlog_row_bug36099.test'
> --- a/mysql-test/suite/binlog/t/binlog_row_bug36099.test	1970-01-01 00:00:00 +0000
> +++ b/mysql-test/suite/binlog/t/binlog_row_bug36099.test	2008-09-02 15:48:28 +0000
> @@ -0,0 +1,28 @@
> +# 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
> +
> +drop table if exists t1;
> +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-02 15:48:28 +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 Elkin2 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#36099Mats Kindahl3 Sep