Commit 9edcb769 authored by Luis Soares's avatar Luis Soares

BUG#12354268: MYSQLBINLOG --BASE64-OUTPUT=DECODE-ROWS DOES NOT

WORK WITH --START-POSITION
      
If setting --start-position to start after the FD event, mysqlbinlog
will output an error stating that it has not found an FD event.
However, its not that mysqlbinlog does not find it but rather that it
does not processes it in the regular way (i.e., it does not print it).
Given that one is using --base64-output=DECODE-ROWS then not printing
it is actually fine.
      
To fix this, we make mysqlbinlog not to complain when it has not
printed the FD event, is outputing in base64, but is decoding the
rows.
parent f5dde273
...@@ -951,7 +951,8 @@ Exit_status process_event(PRINT_EVENT_INFO *print_event_info, Log_event *ev, ...@@ -951,7 +951,8 @@ Exit_status process_event(PRINT_EVENT_INFO *print_event_info, Log_event *ev,
passed --short-form, because --short-form disables printing passed --short-form, because --short-form disables printing
row events. row events.
*/ */
if (!print_event_info->printed_fd_event && !short_form) if (!print_event_info->printed_fd_event && !short_form &&
opt_base64_output_mode != BASE64_OUTPUT_DECODE_ROWS)
{ {
const char* type_str= ev->get_type_str(); const char* type_str= ev->get_type_str();
if (opt_base64_output_mode == BASE64_OUTPUT_NEVER) if (opt_base64_output_mode == BASE64_OUTPUT_NEVER)
......
...@@ -109,3 +109,13 @@ count(*) ...@@ -109,3 +109,13 @@ count(*)
35840 35840
drop table t1; drop table t1;
drop table t2; drop table t2;
RESET MASTER;
USE test;
SET @old_binlog_format= @@binlog_format;
SET SESSION binlog_format=ROW;
CREATE TABLE t1(c1 INT);
INSERT INTO t1 VALUES (1);
FLUSH LOGS;
DROP TABLE t1;
SET SESSION binlog_format= @old_binlog_format;
RESET MASTER;
...@@ -71,3 +71,32 @@ select count(*) from t2; ...@@ -71,3 +71,32 @@ select count(*) from t2;
--remove_file $MYSQLTEST_VARDIR/tmp/mysqlbinlog_base64.sql --remove_file $MYSQLTEST_VARDIR/tmp/mysqlbinlog_base64.sql
drop table t1; drop table t1;
drop table t2; drop table t2;
#
# BUG#12354268
#
# This test verifies that using --start-position with DECODE-ROWS
# does not make mysqlbinlog to output an error stating that it
# does not contain any FD event.
#
RESET MASTER;
USE test;
SET @old_binlog_format= @@binlog_format;
SET SESSION binlog_format=ROW;
CREATE TABLE t1(c1 INT);
--let $master_binlog= query_get_value(SHOW MASTER STATUS, File, 1)
--let $master_pos= query_get_value(SHOW MASTER STATUS, Position, 1)
--let $MYSQLD_DATADIR= `SELECT @@datadir`
INSERT INTO t1 VALUES (1);
FLUSH LOGS;
--disable_result_log
--exec $MYSQL_BINLOG --base64-output=DECODE-ROWS --start-position=$master_pos -v $MYSQLD_DATADIR/$master_binlog
--enable_result_log
DROP TABLE t1;
SET SESSION binlog_format= @old_binlog_format;
RESET MASTER;
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