List:Commits« Previous MessageNext Message »
From:Andrei Elkin Date:September 2 2008 5:48pm
Subject:bzr commit into mysql-5.1 branch (aelkin:2677) Bug#36099
View as plain text  
#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'
+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));
   }

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