mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-30 04:26:45 +03:00 
			
		
		
		
	The following is an excerption from the WL.
      
   1. Change so that MIXED is default format
      1.1 to change the default for command line --binlog-format
      1.2 to alter global_system_variables.binlog_format calculation
          basing on command line --binlog-format parameter and 
          its default.
   2. Change test suite so that more testing is done by MIXED format.
      2.1 to check if there are test cases requiring --binlog-foramt=statement via
          `source include/have_binlog_format_statement.inc' and affected by 
          altering the latter to be "mixed".
      2.2 to check the content of such vulnerable cases to find if
          extending to the mixed does not modify results. In that case simply
          substitute source arguments as explained.
      2.3 if a test in mixed mode deals with features triggering
          row-binlogging then if necessary we can switch explicitly
          to statement mode or create another test to run with 
          non-recommended STATEMENT mode
   
          Particullarily, extracting INSERT DELAYED 
          binlogging subtest for statement mode is performed, and 
          the snippet is moved into a separate test file.
          Note that since now all three modes verify this use case
          through 3 different tests.
   
   No changes in item 3 of HLD appeared to be needed.
mysql-test/extra/binlog_tests/binlog.test:
  Moving INSERT DELAYED verification section into separate file. The latter is sourced
  from two different files: the current one and a newly created for STATEMENT
  mode check.
mysql-test/extra/rpl_tests/rpl_loaddata.test:
  require mixed_or_statement
mysql-test/extra/rpl_tests/rpl_stm_000001.test:
  require mixed_or_statement
mysql-test/extra/rpl_tests/rpl_stm_charset.test:
  require mixed_or_statement
mysql-test/r/binlog_stm_binlog.result:
  new result to correspond to MIXED mode.
mysql-test/r/rpl_rbr_to_sbr.result:
  result changed
mysql-test/t/archive.test:
  require mixed_or_statement
mysql-test/t/binlog_stm_binlog.test:
  require exclusive mixed format because of INSERT DELAYED.
mysql-test/t/binlog_stm_blackhole.test:
  require mixed_or_statement
mysql-test/t/binlog_stm_ctype_cp932.test:
  require mixed_or_statement
mysql-test/t/binlog_stm_ctype_ucs.test:
  require mixed_or_statement
mysql-test/t/binlog_stm_drop_tmp_tbl.test:
  require mixed_or_statement
mysql-test/t/binlog_stm_innodb_stat.test:
  require mixed_or_statement
mysql-test/t/binlog_stm_insert_select.test:
  require mixed_or_statement
mysql-test/t/binlog_stm_mix_innodb_myisam.test:
  require mixed_or_statement
mysql-test/t/create_select_tmp.test:
  require mixed_or_statement
mysql-test/t/ctype_cp932_binlog_stm.test:
  require mixed_or_statement
mysql-test/t/date_formats.test:
  MIXED case appended to the replace instruction
mysql-test/t/mysqlbinlog.test:
  require mixed_or_statement
mysql-test/t/mysqlbinlog2.test:
  require mixed_or_statement
mysql-test/t/ndb_multi.test:
  require mixed_or_statement
mysql-test/t/rpl000013.test:
  require mixed_or_statement
mysql-test/t/rpl_heap.test:
  require mixed_or_statement
mysql-test/t/rpl_loaddata_s.test:
  require mixed_or_statement
mysql-test/t/rpl_mixed_ddl_dml.test:
  require mixed_or_statement
mysql-test/t/rpl_rbr_to_sbr.test:
  Rather meaningless line is discarded.
  The test does not loose anything without it and without considering the WL.
mysql-test/t/rpl_rewrt_db.test:
  require mixed_or_statement
mysql-test/t/rpl_rotate_logs.test:
  require mixed_or_statement
mysql-test/t/rpl_stm_EE_err2.test:
  require mixed_or_statement
mysql-test/t/rpl_stm_flsh_tbls.test:
  require mixed_or_statement
mysql-test/t/rpl_stm_log.test:
  require mixed_or_statement
mysql-test/t/rpl_stm_max_relay_size.test:
  require mixed_or_statement
mysql-test/t/rpl_stm_multi_query.test:
  require mixed_or_statement
mysql-test/t/rpl_stm_mystery22.test:
  require mixed_or_statement
mysql-test/t/rpl_stm_no_op.test:
  require mixed_or_statement
mysql-test/t/rpl_stm_reset_slave.test:
  require mixed_or_statement
mysql-test/t/rpl_stm_until.test:
  require mixed_or_statement
mysql-test/t/rpl_temp_table.test:
  require mixed_or_statement
mysql-test/t/rpl_trigger.test:
  require mixed_or_statement
mysql-test/t/rpl_trunc_temp.test:
  require mixed_or_statement
mysql-test/t/user_var-binlog.test:
  require mixed_or_statement
sql/mysqld.cc:
  Implementation of making BINLOG_FORMAT_MIXED to be the default of
  global_system_variables.binlog_format. Not in the case of embedded.
mysql-test/extra/binlog_tests/binlog_insert_delayed.test:
  Snippend sourced from two tests to verify INSERT DELAYED in all three binlog formats.
mysql-test/include/have_binlog_format_mixed.inc:
  Part of exclusive MIXED format requirement
mysql-test/include/have_binlog_format_mixed_or_statement.inc:
  requirement to have mixed or statement. Most of the tests with STATEMENT format indeed
  are tolerant to MIXED format to yield the same result files. There are few exception
  because of features triggering RBR events when MIXED format.
mysql-test/r/binlog_statement_insert_delayed.result:
  BitKeeper file /home/elkin/MySQL/TEAM/FIXES/5.1/wl3368_mixed_default/mysql-test/r/binlog_statement_insert_delayed.result
mysql-test/r/have_binlog_format_mixed.require:
  Exclusive MIXED format
mysql-test/t/binlog_statement_insert_delayed.test:
  BitKeeper file /home/elkin/MySQL/TEAM/FIXES/5.1/wl3368_mixed_default/mysql-test/t/binlog_statement_insert_delayed.test
		
	
		
			
				
	
	
		
			165 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			165 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| # Test for the new options --start-datetime, stop-datetime,
 | |
| # and a few others.
 | |
| 
 | |
| # TODO: Need to look at making row based version once new binlog client is complete.
 | |
| -- source include/have_binlog_format_mixed_or_statement.inc
 | |
| 
 | |
| # Embedded server doesn't support binlogging
 | |
| -- source include/not_embedded.inc
 | |
| 
 | |
| --disable_warnings
 | |
| drop table if exists t1;
 | |
| --enable_warnings
 | |
| reset master;
 | |
| 
 | |
| # We need this for getting fixed timestamps inside of this test.
 | |
| # I use a date in the future to keep a growing timestamp along the
 | |
| # binlog (including the Start_log_event). This test will work 
 | |
| # unchanged everywhere, because mysql-test-run has fixed TZ, which it
 | |
| # exports (so mysqlbinlog has same fixed TZ).
 | |
| set @a=UNIX_TIMESTAMP("2020-01-21 15:32:22");
 | |
| set timestamp=@a;
 | |
| create table t1 (a int auto_increment not null primary key, b char(3));
 | |
| insert into t1 values(null, "a");
 | |
| insert into t1 values(null, "b");
 | |
| set timestamp=@a+2;
 | |
| insert into t1 values(null, "c");
 | |
| set timestamp=@a+4;
 | |
| insert into t1 values(null, "d");
 | |
| insert into t1 values(null, "e");
 | |
| 
 | |
| flush logs;
 | |
| set timestamp=@a+1; # this could happen on a slave
 | |
| insert into t1 values(null, "f");
 | |
| 
 | |
| # delimiters are for easier debugging in future
 | |
| 
 | |
| --disable_query_log
 | |
| select "--- Local --" as "";
 | |
| --enable_query_log
 | |
| 
 | |
| #
 | |
| # We should use --short-form everywhere because in other case output will
 | |
| # be time dependent (the Start events). Better than nothing.
 | |
| #
 | |
| 
 | |
| --exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000001 
 | |
| 
 | |
| --disable_query_log
 | |
| select "--- offset --" as "";
 | |
| --enable_query_log
 | |
| --exec $MYSQL_BINLOG --short-form --offset=2 $MYSQLTEST_VARDIR/log/master-bin.000001 
 | |
| --disable_query_log
 | |
| select "--- start-position --" as "";
 | |
| --enable_query_log
 | |
| --exec $MYSQL_BINLOG --short-form --start-position=604 $MYSQLTEST_VARDIR/log/master-bin.000001 
 | |
| --disable_query_log
 | |
| select "--- stop-position --" as "";
 | |
| --enable_query_log
 | |
| --exec $MYSQL_BINLOG --short-form --stop-position=604 $MYSQLTEST_VARDIR/log/master-bin.000001 
 | |
| --disable_query_log
 | |
| select "--- start-datetime --" as "";
 | |
| --enable_query_log
 | |
| --exec $MYSQL_BINLOG --short-form "--start-datetime=2020-01-21 15:32:24" $MYSQLTEST_VARDIR/log/master-bin.000001 
 | |
| --disable_query_log
 | |
| select "--- stop-datetime --" as "";
 | |
| --enable_query_log
 | |
| --exec $MYSQL_BINLOG --short-form "--stop-datetime=2020-01-21 15:32:24" $MYSQLTEST_VARDIR/log/master-bin.000001 
 | |
| 
 | |
| --disable_query_log
 | |
| select "--- Local with 2 binlogs on command line --" as "";
 | |
| --enable_query_log
 | |
| 
 | |
| # This is to verify that some options apply only to first, or last binlog
 | |
| 
 | |
| --exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000001 $MYSQLTEST_VARDIR/log/master-bin.000002
 | |
| 
 | |
| --disable_query_log
 | |
| select "--- offset --" as "";
 | |
| --enable_query_log
 | |
| --exec $MYSQL_BINLOG --short-form --offset=2 $MYSQLTEST_VARDIR/log/master-bin.000001 $MYSQLTEST_VARDIR/log/master-bin.000002
 | |
| --disable_query_log
 | |
| select "--- start-position --" as "";
 | |
| --enable_query_log
 | |
| --exec $MYSQL_BINLOG --short-form --start-position=604 $MYSQLTEST_VARDIR/log/master-bin.000001 $MYSQLTEST_VARDIR/log/master-bin.000002
 | |
| --disable_query_log
 | |
| select "--- stop-position --" as "";
 | |
| --enable_query_log
 | |
| --exec $MYSQL_BINLOG --short-form --stop-position=130 $MYSQLTEST_VARDIR/log/master-bin.000001 $MYSQLTEST_VARDIR/log/master-bin.000002
 | |
| --disable_query_log
 | |
| select "--- start-datetime --" as "";
 | |
| --enable_query_log
 | |
| --exec $MYSQL_BINLOG --short-form "--start-datetime=2020-01-21 15:32:24" $MYSQLTEST_VARDIR/log/master-bin.000001 $MYSQLTEST_VARDIR/log/master-bin.000002
 | |
| --disable_query_log
 | |
| select "--- stop-datetime --" as "";
 | |
| --enable_query_log
 | |
| --exec $MYSQL_BINLOG --short-form "--stop-datetime=2020-01-21 15:32:24" $MYSQLTEST_VARDIR/log/master-bin.000001 $MYSQLTEST_VARDIR/log/master-bin.000002
 | |
| 
 | |
| --disable_query_log
 | |
| select "--- Remote --" as "";
 | |
| --enable_query_log
 | |
| 
 | |
| --exec $MYSQL_BINLOG --short-form --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001 
 | |
| 
 | |
| --disable_query_log
 | |
| select "--- offset --" as "";
 | |
| --enable_query_log
 | |
| --exec $MYSQL_BINLOG --short-form --offset=2 --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001 
 | |
| --disable_query_log
 | |
| select "--- start-position --" as "";
 | |
| --enable_query_log
 | |
| --exec $MYSQL_BINLOG --short-form --start-position=604 --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001 
 | |
| --disable_query_log
 | |
| select "--- stop-position --" as "";
 | |
| --enable_query_log
 | |
| --exec $MYSQL_BINLOG --short-form --stop-position=604 --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001 
 | |
| --disable_query_log
 | |
| select "--- start-datetime --" as "";
 | |
| --enable_query_log
 | |
| --exec $MYSQL_BINLOG --short-form "--start-datetime=2020-01-21 15:32:24" --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001
 | |
| --disable_query_log
 | |
| select "--- stop-datetime --" as "";
 | |
| --enable_query_log
 | |
| --exec $MYSQL_BINLOG --short-form "--stop-datetime=2020-01-21 15:32:24" --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001
 | |
| 
 | |
| --disable_query_log
 | |
| select "--- Remote with 2 binlogs on command line --" as "";
 | |
| --enable_query_log
 | |
| 
 | |
| --exec $MYSQL_BINLOG --short-form --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001 master-bin.000002
 | |
| 
 | |
| --disable_query_log
 | |
| select "--- offset --" as "";
 | |
| --enable_query_log
 | |
| --exec $MYSQL_BINLOG --short-form --offset=2 --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001  master-bin.000002
 | |
| --disable_query_log
 | |
| select "--- start-position --" as "";
 | |
| --enable_query_log
 | |
| --exec $MYSQL_BINLOG --short-form --start-position=604 --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001  master-bin.000002
 | |
| --disable_query_log
 | |
| select "--- stop-position --" as "";
 | |
| --enable_query_log
 | |
| --exec $MYSQL_BINLOG --short-form --stop-position=130 --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001  master-bin.000002
 | |
| --disable_query_log
 | |
| select "--- start-datetime --" as "";
 | |
| --enable_query_log
 | |
| --exec $MYSQL_BINLOG --short-form "--start-datetime=20200121153224" --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001 master-bin.000002
 | |
| --disable_query_log
 | |
| select "--- stop-datetime --" as "";
 | |
| --enable_query_log
 | |
| --exec $MYSQL_BINLOG --short-form "--stop-datetime=2020/01/21 15@32@24" --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001 master-bin.000002
 | |
| 
 | |
| --disable_query_log
 | |
| select "--- to-last-log --" as "";
 | |
| --enable_query_log
 | |
| 
 | |
| --exec $MYSQL_BINLOG --short-form --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT --to-last-log master-bin.000001
 | |
| 
 | |
| # clean up
 | |
| --disable_query_log
 | |
| select "--- end of test --" as "";
 | |
| --enable_query_log
 | |
| drop table t1;
 | |
| 
 | |
| # End of 4.1 tests
 |