mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 02:46:29 +01:00 
			
		
		
		
	 39018f2a5a
			
		
	
	
	39018f2a5a
	
	
	
		
			
			Renamed suite/rpl/include/rpl_sync.inc to rpl_sync_test.inc to remove clash with include/rpl_sync.inc
		
			
				
	
	
		
			82 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| # Both of the following tests check that comparison of binlog BI
 | |
| # against SE record will not fail due to remains from previous values
 | |
| # in the SE record (before a given field was set to null).
 | |
| #
 | |
| # In MIXED mode:
 | |
| # - Insert and update are executed as statements
 | |
| # - Delete is executed as a row event
 | |
| # - Assertion: checks that comparison will not fail because the update
 | |
| #              statement will clear the record contents for the nulled
 | |
| #              field. If data was not cleared, some engines may keep
 | |
| #              the value and return it later as garbage - despite the
 | |
| #              fact that field is null. This may cause slave to
 | |
| #              falsely fail in the comparison (memcmp would fail
 | |
| #              because of "garbage" in record data).
 | |
| #
 | |
| # In ROW mode:
 | |
| # - Insert, update and delete are executed as row events.
 | |
| # - Assertion: checks that comparison will not fail because the update
 | |
| #              rows event will clear the record contents before
 | |
| #              feeding the new value to the SE. This protects against
 | |
| #              SEs that do not clear record contents when storing
 | |
| #              nulled fields. If the engine did not clear the data it
 | |
| #              would cause slave to falsely fail in the comparison
 | |
| #              (memcmp would fail because of "garbage" in record
 | |
| #              data). This scenario is pretty much the same described
 | |
| #              above in MIXED mode, but checks different execution
 | |
| #              path in the slave.
 | |
| 
 | |
| # BUG#49481: RBR: MyISAM and bit fields may cause slave to stop on
 | |
| #  delete cant find record
 | |
| 
 | |
| -- source include/rpl_reset.inc
 | |
| 
 | |
| -- connection master
 | |
| -- eval CREATE TABLE t1 (c1 BIT, c2 INT) Engine=$engine
 | |
| INSERT INTO `t1` VALUES ( 1, 1 );
 | |
| UPDATE t1 SET c1=NULL where c2=1;
 | |
| -- sync_slave_with_master
 | |
| 
 | |
| -- let $diff_tables= master:t1, slave:t1
 | |
| -- source include/diff_tables.inc
 | |
| 
 | |
| -- connection master
 | |
| # triggers switch to row mode when on mixed 
 | |
| DELETE FROM t1 WHERE c2=1 LIMIT 1;
 | |
| -- sync_slave_with_master
 | |
| 
 | |
| -- let $diff_tables= master:t1, slave:t1
 | |
| -- source include/diff_tables.inc
 | |
| 
 | |
| -- connection master
 | |
| DROP TABLE t1;
 | |
| -- sync_slave_with_master
 | |
| 
 | |
| -- source include/rpl_reset.inc
 | |
| 
 | |
| -- connection master
 | |
| 
 | |
| # BUG#49482: RBR: Replication may break on deletes when MyISAM tables
 | |
| #  + char field are used
 | |
| 
 | |
| -- eval CREATE TABLE t1 (c1 CHAR) Engine=$engine
 | |
| 
 | |
| INSERT INTO t1 ( c1 ) VALUES ( 'w' ) ;
 | |
| SELECT * FROM t1;
 | |
| UPDATE t1 SET c1=NULL WHERE c1='w';
 | |
| -- sync_slave_with_master
 | |
| 
 | |
| -- let $diff_tables= master:t1, slave:t1
 | |
| -- source include/diff_tables.inc
 | |
| 
 | |
| -- connection master
 | |
| # triggers switch to row mode when on mixed 
 | |
| DELETE FROM t1 LIMIT 2;
 | |
| -- sync_slave_with_master
 | |
| 
 | |
| -- let $diff_tables= master:t1, slave:t1
 | |
| -- source include/diff_tables.inc
 | |
| 
 | |
| -- connection master
 | |
| DROP TABLE t1;
 | |
| -- sync_slave_with_master
 |