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

BUG#32205 Replaying statements from mysqlbinlog fails with a syntax error, replicates

fine

The reason of this bug is that when mysqlbinlog dumps a query, the query is written to
output with a delimeter appended right after it, if the query string ends with a '--'
comment, then the delimeter would be considered as part of the comment, if there are any
statements after this query, then it will cause a syntax error.

Start a newline before appending delimiter after a query string


mysql-test/r/mysqlbinlog.result:
  Update result for BUG#32205
mysql-test/r/mysqlbinlog2.result:
  Update result for BUG#32205
mysql-test/r/user_var-binlog.result:
  Update result for BUG#32205
mysql-test/suite/binlog/r/binlog_stm_ctype_ucs.result:
  Update result for BUG#32205
mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result:
  Update result for BUG#32205
mysql-test/suite/binlog/t/binlog_stm_mix_innodb_myisam.test:
  fix test for BUG#32205
mysql-test/suite/rpl/r/rpl_row_mysqlbinlog.result:
  Update result for BUG#32205
mysql-test/suite/rpl/r/rpl_stm_charset.result:
  Update result for BUG#32205
sql/log_event.cc:
  Start a newline before appending delimiter after a query string
mysql-test/suite/binlog/r/binlog_start_comment.result:
  Add test for BUG#32205
mysql-test/suite/binlog/t/binlog_start_comment.test:
  Add test for BUG#32205
This commit is contained in:
unknown
2007-12-17 21:13:25 +08:00
parent 89a89950ae
commit 0968c713aa
11 changed files with 413 additions and 191 deletions

View File

@ -0,0 +1,15 @@
reset master;
drop table if exists t1,t2;
create table t1 (word varchar(20)) -- create table t1;
create table t2 (word varchar(20)) -- create table t2;
load data infile '../std_data_ln/words.dat' into table t1 -- load data to t1;
insert into t2 values ("Ada");
flush logs;
select * from t2;
word
Ada
flush logs;
select * from t2;
word
Ada
drop table t1,t2;

View File

@ -19,7 +19,8 @@ SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.uniq
SET @@session.sql_mode=0/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
insert into t2 values (@v)/*!*/;
insert into t2 values (@v)
/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;

View File

@ -375,9 +375,9 @@ is not null;
is not null
1
select
@a like "%#%error_code=0%ROLLBACK/*!*/;%ROLLBACK /* added by mysqlbinlog */;%",
@a like "%#%error_code=0%ROLLBACK\n/*!*/;%ROLLBACK /* added by mysqlbinlog */;%",
@a not like "%#%error_code=%error_code=%";
@a like "%#%error_code=0%ROLLBACK/*!*/;%ROLLBACK /* added by mysqlbinlog */;%" @a not like "%#%error_code=%error_code=%"
@a like "%#%error_code=0%ROLLBACK\n/*!*/;%ROLLBACK /* added by mysqlbinlog */;%" @a not like "%#%error_code=%error_code=%"
1 1
drop table t1, t2;
set @@session.binlog_format=statement;

View File

@ -0,0 +1,22 @@
# Test case for bug#32205 Replaying statements from mysqlbinlog fails
# with a syntax error, replicates fine
-- source include/have_log_bin.inc
reset master;
--disable_warnings
drop table if exists t1,t2;
--enable_warnings
create table t1 (word varchar(20)) -- create table t1;
create table t2 (word varchar(20)) -- create table t2;
load data infile '../std_data_ln/words.dat' into table t1 -- load data to t1;
insert into t2 values ("Ada");
flush logs;
select * from t2;
--exec $MYSQL_BINLOG $MYSQLTEST_VARDIR/log/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/binlog_start_comment.binlog
--exec $MYSQL < $MYSQLTEST_VARDIR/tmp/binlog_start_comment.binlog
flush logs;
select * from t2;
# clean up
drop table t1,t2;
--system rm $MYSQLTEST_VARDIR/tmp/binlog_start_comment.binlog

View File

@ -19,7 +19,7 @@ eval select
is not null;
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
eval select
@a like "%#%error_code=0%ROLLBACK/*!*/;%ROLLBACK /* added by mysqlbinlog */;%",
@a like "%#%error_code=0%ROLLBACK\\n/*!*/;%ROLLBACK /* added by mysqlbinlog */;%",
@a not like "%#%error_code=%error_code=%";
drop table t1, t2;