List:Commits« Previous MessageNext Message »
From:Sven Sandberg Date:March 25 2011 3:19pm
Subject:bzr commit into mysql-trunk branch (sven.sandberg:3327) Bug#59539
Bug#11766427
View as plain text  
#At file:///home/sven/bzr/debug-max/trunk/ based on revid:georgi.kodinov@stripped

 3327 Sven Sandberg	2011-03-25 [merge]
      Merged BUG#11766427, BUG#59539 from 5.5 to trunk.
      No conflicts.

    modified:
      client/mysqlbinlog.cc
      mysql-test/r/mysqlbinlog.result
      mysql-test/t/mysqlbinlog.test
=== modified file 'client/mysqlbinlog.cc'
--- a/client/mysqlbinlog.cc	2011-01-18 12:09:03 +0000
+++ b/client/mysqlbinlog.cc	2011-03-25 15:18:28 +0000
@@ -683,10 +683,18 @@ Exit_status process_event(PRINT_EVENT_IN
       */
       start_datetime= 0;
       offset= 0; // print everything and protect against cycling rec_count
+      /*
+        Skip events according to the --server-id flag.  However, don't
+        skip format_description or rotate events, because they they
+        are really "global" events that are relevant for the entire
+        binlog, even if they have a server_id.  Also, we have to read
+        the format_description event so that we can parse subsequent
+        events.
+      */
+      if (ev_type != ROTATE_EVENT &&
+          server_id && (server_id != ev->server_id))
+        goto end;
     }
-    if (server_id && (server_id != ev->server_id))
-      /* skip just this event, continue processing the log. */
-      goto end;
     if (((my_time_t)(ev->when) >= stop_datetime)
         || (pos >= stop_position_mot))
     {

=== modified file 'mysql-test/r/mysqlbinlog.result'
--- a/mysql-test/r/mysqlbinlog.result	2010-12-29 05:35:31 +0000
+++ b/mysql-test/r/mysqlbinlog.result	2011-03-25 15:18:28 +0000
@@ -905,3 +905,15 @@ master-bin.000002	#	Query	#	#	CREATE DAT
 master-bin.000002	#	Query	#	#	use `test1`; CREATE TABLE t1(id int)
 master-bin.000002	#	Query	#	#	use `test1`; DROP TABLE `t1` /* generated by server */
 master-bin.000002	#	Query	#	#	DROP DATABASE test1
+RESET MASTER;
+USE test;
+CREATE TABLE t1 (a INT);
+SET GLOBAL SERVER_ID = 2;
+DROP TABLE t1;
+FLUSH LOGS;
+SHOW TABLES IN test;
+Tables_in_test
+t1
+SHOW TABLES IN test;
+Tables_in_test
+SET GLOBAL SERVER_ID = 1;

=== modified file 'mysql-test/t/mysqlbinlog.test'
--- a/mysql-test/t/mysqlbinlog.test	2010-12-29 05:35:31 +0000
+++ b/mysql-test/t/mysqlbinlog.test	2011-03-25 15:18:28 +0000
@@ -536,3 +536,23 @@ exec $MYSQL_BINLOG $MYSQLD_DATADIR/$mast
 let $binlog_file= query_get_value(SHOW MASTER STATUS, File, 1);
 source include/show_binlog_events.inc;
 
+#
+# BUG#11766427 BUG#59530: Filter by server id in mysqlbinlog fails
+# This test checks that the format description log event is not
+# filtered out by the --server-id option.
+#
+RESET MASTER;
+USE test;
+CREATE TABLE t1 (a INT);
+--let $old_server_id= `SELECT @@GLOBAL.SERVER_ID`
+SET GLOBAL SERVER_ID = 2;
+DROP TABLE t1;
+--let $master_binlog= query_get_value(SHOW MASTER STATUS, File, 1)
+FLUSH LOGS;
+# The following should only create t1, not drop it.
+--exec $MYSQL_BINLOG --server-id=1 $MYSQLD_DATADIR/$master_binlog | $MYSQL
+SHOW TABLES IN test;
+# The following should only drop t1, not create it.
+--exec $MYSQL_BINLOG --server-id=2 $MYSQLD_DATADIR/$master_binlog | $MYSQL
+SHOW TABLES IN test;
+eval SET GLOBAL SERVER_ID = $old_server_id;

No bundle (reason: revision is a merge (you can force generation of a bundle with env var BZR_FORCE_BUNDLE=1)).
Thread
bzr commit into mysql-trunk branch (sven.sandberg:3327) Bug#59539Bug#11766427Sven Sandberg25 Mar