Commit 0907c913 authored by Sven Sandberg's avatar Sven Sandberg

Merged BUG#11766427, BUG#59539 from 5.1 to 5.5.

No conflicts.
parents 49417455 f1b638d3
...@@ -714,10 +714,18 @@ Exit_status process_event(PRINT_EVENT_INFO *print_event_info, Log_event *ev, ...@@ -714,10 +714,18 @@ Exit_status process_event(PRINT_EVENT_INFO *print_event_info, Log_event *ev,
*/ */
start_datetime= 0; start_datetime= 0;
offset= 0; // print everything and protect against cycling rec_count 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) if (((my_time_t)(ev->when) >= stop_datetime)
|| (pos >= stop_position_mot)) || (pos >= stop_position_mot))
{ {
......
...@@ -903,3 +903,15 @@ master-bin.000002 # Query # # CREATE DATABASE test1 ...@@ -903,3 +903,15 @@ master-bin.000002 # Query # # CREATE DATABASE test1
master-bin.000002 # Query # # use `test1`; CREATE TABLE t1(id int) 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 # # use `test1`; DROP TABLE `t1` /* generated by server */
master-bin.000002 # Query # # DROP DATABASE test1 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;
...@@ -527,3 +527,23 @@ exec $MYSQL_BINLOG $MYSQLD_DATADIR/$master_binlog | $MYSQL test 2>&1; ...@@ -527,3 +527,23 @@ exec $MYSQL_BINLOG $MYSQLD_DATADIR/$master_binlog | $MYSQL test 2>&1;
let $binlog_file= query_get_value(SHOW MASTER STATUS, File, 1); let $binlog_file= query_get_value(SHOW MASTER STATUS, File, 1);
source include/show_binlog_events.inc; 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;
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment