1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

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.
This commit is contained in:
Luis Soares
2011-05-05 23:48:15 +01:00
parent ca6e7781ef
commit e367a789d1
3 changed files with 41 additions and 1 deletions

View File

@ -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)

View File

@ -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;

View File

@ -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;