From e653222d3051095da3c1c7ff4777ba2dbe12cf32 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 14 Dec 2006 14:05:25 +0400 Subject: Bug#17642 mysqlbinlog: Restore from row-based binlog fails Problem: mysqlbinlog_base64 failed sporadically. Reason: Missing "flush logs" before running $MYSQL_BINLOG, which could start dumping the log file before server has finished writting into it. Fix: - implementing --force-if-open option to "mysqlbinlog" - adding --disable-force-if-open to make $MYSQL_BINLOG fail on non-closed log files, to garantee that nobody will forget "flush logs" in the future. - adding "flush logs" into all affected tests. client/mysqlbinlog.cc: Implementing --force-if-open option with TRUE by default mysql-test/mysql-test-run.pl: Using --disable-force-if-open for all tests to avoid sporadic test failures because of running "mysqlbinlog" on a non-flushed binlog files. mysql-test/r/binlog_row_mix_innodb_myisam.result: FLush log before running dumping. mysql-test/r/binlog_stm_mix_innodb_myisam.result: FLush log before running dumping. mysql-test/r/mysqlbinlog.result: FLush log before running dumping. mysql-test/r/mysqlbinlog2.result: FLush log before running dumping. mysql-test/r/mysqlbinlog_base64.result: FLush log before running dumping. mysql-test/r/user_var-binlog.result: FLush log before running dumping. mysql-test/t/binlog_row_mix_innodb_myisam.test: FLush log before running dumping. mysql-test/t/binlog_stm_mix_innodb_myisam.test: FLush log before running dumping. mysql-test/t/mysqlbinlog.test: FLush log before running dumping. Adding new tests: - checking that $MYSQL_BINLOG returns an error on a non-closed binlog file because of --disable-force-if-open - checking that it does not return an error with --force-if-open mysql-test/t/mysqlbinlog2.test: FLush log before running dumping. mysql-test/t/mysqlbinlog_base64.test: FLush log before running dumping. mysql-test/t/user_var-binlog.test: FLush log before running dumping. --- mysql-test/t/mysqlbinlog_base64.test | 1 + 1 file changed, 1 insertion(+) (limited to 'mysql-test/t/mysqlbinlog_base64.test') diff --git a/mysql-test/t/mysqlbinlog_base64.test b/mysql-test/t/mysqlbinlog_base64.test index 66aaff83254..1ca018218b2 100644 --- a/mysql-test/t/mysqlbinlog_base64.test +++ b/mysql-test/t/mysqlbinlog_base64.test @@ -15,6 +15,7 @@ load data infile '../std_data_ln/words.dat' into table t2; # # Save binlog # +flush logs; --exec $MYSQL_BINLOG --hexdump $MYSQLTEST_VARDIR/log/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/mysqlbinlog_base64.sql # -- cgit v1.2.1