mariadb/mysql-test/t/user_var-binlog.test
unknown e653222d30 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.
2006-12-14 14:05:25 +04:00

27 lines
922 B
Text

# Requires statement logging
-- source include/have_binlog_format_mixed_or_statement.inc
# TODO: Create row based version once $MYSQL_BINLOG has new RB version
# Embedded server does not support binlogging
--source include/not_embedded.inc
# Check that user variables are binlogged correctly (BUG#3875)
create table t1 (a varchar(50));
reset master;
SET TIMESTAMP=10000;
SET @`a b`='hello';
INSERT INTO t1 VALUES(@`a b`);
set @var1= "';aaa";
SET @var2=char(ascii('a'));
insert into t1 values (@var1),(@var2);
--replace_column 2 # 5 #
--replace_regex /table_id: [0-9]+/table_id: #/
show binlog events from 102;
# more important than SHOW BINLOG EVENTS, mysqlbinlog (where we
# absolutely need variables names to be quoted and strings to be
# escaped).
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
flush logs;
--exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000001
drop table t1;
# End of 4.1 tests