mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-24 07:13:33 +03:00 
			
		
		
		
	 7be4bc4e55
			
		
	
	7be4bc4e55
	
	
	
		
			
			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.
		
	
		
			
				
	
	
		
			89 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| -- source include/have_binlog_format_mixed_or_statement.inc
 | |
| -- source include/master-slave.inc
 | |
| 
 | |
| # Test is dependent on binlog positions
 | |
| 
 | |
| # prepare version for substitutions
 | |
| let $VERSION=`select version()`;
 | |
| 
 | |
| # stop slave before he will start replication also sync with master
 | |
| # for avoiding undetermenistic behaviour
 | |
| save_master_pos;
 | |
| connection slave;
 | |
| sync_with_master;
 | |
| stop slave;
 | |
| 
 | |
| connection master;
 | |
| # create some events on master
 | |
| create table t1(n int not null auto_increment primary key);
 | |
| insert into t1 values (1),(2),(3),(4);
 | |
| drop table t1;
 | |
| create table t2(n int not null auto_increment primary key);
 | |
| insert into t2 values (1),(2);
 | |
| insert into t2 values (3),(4);
 | |
| drop table t2;
 | |
| 
 | |
| # try to replicate all queries until drop of t1
 | |
| connection slave;
 | |
| start slave until master_log_file='master-bin.000001', master_log_pos=323;
 | |
| sleep 2;
 | |
| wait_for_slave_to_stop;
 | |
| # here table should be still not deleted
 | |
| select * from t1;
 | |
| --replace_result $MASTER_MYPORT MASTER_MYPORT
 | |
| --replace_column 1 # 9 # 11 # 23 # 33 #
 | |
| --query_vertical SHOW SLAVE STATUS
 | |
| 
 | |
| # this should fail right after start
 | |
| start slave until master_log_file='master-no-such-bin.000001', master_log_pos=291;
 | |
| # again this table should be still not deleted
 | |
| select * from t1;
 | |
| sleep 2;
 | |
| wait_for_slave_to_stop;
 | |
| --replace_result $MASTER_MYPORT MASTER_MYPORT
 | |
| --replace_column 1 # 9 # 11 # 23 # 33 #
 | |
| --query_vertical SHOW SLAVE STATUS
 | |
| 
 | |
| # try replicate all up to and not including the second insert to t2;
 | |
| start slave until relay_log_file='slave-relay-bin.000004', relay_log_pos=746;
 | |
| sleep 2;
 | |
| wait_for_slave_to_stop;
 | |
| select * from t2;
 | |
| --replace_result $MASTER_MYPORT MASTER_MYPORT
 | |
| --replace_column 1 # 9 # 11 # 23 # 33 #
 | |
| --query_vertical SHOW SLAVE STATUS
 | |
| 
 | |
| # clean up
 | |
| start slave;
 | |
| connection master;
 | |
| save_master_pos;
 | |
| connection slave;
 | |
| sync_with_master;
 | |
| stop slave;
 | |
| 
 | |
| # this should stop immediately as we are already there
 | |
| start slave until master_log_file='master-bin.000001', master_log_pos=776;
 | |
| sleep 2;
 | |
| wait_for_slave_to_stop;
 | |
| # here the sql slave thread should be stopped
 | |
| --replace_result $MASTER_MYPORT MASTER_MYPORT bin.000005 bin.000004 bin.000006 bin.000004 bin.000007 bin.000004
 | |
| --replace_column 1 # 9 # 23 # 33 #
 | |
| --query_vertical SHOW SLAVE STATUS
 | |
| 
 | |
| #testing various error conditions
 | |
| --error 1277
 | |
| start slave until master_log_file='master-bin', master_log_pos=561;
 | |
| --error 1277
 | |
| start slave until master_log_file='master-bin.000001', master_log_pos=561, relay_log_pos=12;
 | |
| --error 1277
 | |
| start slave until master_log_file='master-bin.000001';
 | |
| --error 1277
 | |
| start slave until relay_log_file='slave-relay-bin.000002';
 | |
| --error 1277
 | |
| start slave until relay_log_file='slave-relay-bin.000002', master_log_pos=561;
 | |
| # Warning should be given for second command
 | |
| start slave sql_thread;
 | |
| start slave until master_log_file='master-bin.000001', master_log_pos=776;
 | |
| 
 | |
| # End of 4.1 tests
 |