--source include/have_binlog_format_row.inc --source include/have_innodb.inc --source include/master-slave.inc let $engine_type=INNODB; connection slave; set @saved_slave_type_conversions = @@global.slave_type_conversions; CREATE TABLE type_conversions ( TestNo INT AUTO_INCREMENT PRIMARY KEY, Source TEXT, Target TEXT, Flags TEXT, On_Master TEXT, On_Slave TEXT, Expected TEXT, Compare INT, Error TEXT); SELECT @@global.slave_type_conversions; SET GLOBAL SLAVE_TYPE_CONVERSIONS=''; SELECT @@global.slave_type_conversions; SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_NON_LOSSY'; SELECT @@global.slave_type_conversions; SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_LOSSY'; SELECT @@global.slave_type_conversions; SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_LOSSY,ALL_NON_LOSSY'; SELECT @@global.slave_type_conversions; --error ER_WRONG_VALUE_FOR_VAR SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_LOSSY,ALL_NON_LOSSY,NONEXISTING_BIT'; SELECT @@global.slave_type_conversions; # Checking strict interpretation of type conversions connection slave; SET GLOBAL SLAVE_TYPE_CONVERSIONS=''; source extra/rpl_tests/type_conversions.test; # Checking lossy integer type conversions connection slave; SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_NON_LOSSY'; source extra/rpl_tests/type_conversions.test; # Checking non-lossy integer type conversions connection slave; SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_LOSSY'; source extra/rpl_tests/type_conversions.test; # Checking all type conversions connection slave; SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_LOSSY,ALL_NON_LOSSY'; source extra/rpl_tests/type_conversions.test; connection slave; --echo **** Result of conversions **** disable_query_log; SELECT RPAD(Source, 15, ' ') AS Source_Type, RPAD(Target, 15, ' ') AS Target_Type, RPAD(Flags, 25, ' ') AS All_Type_Conversion_Flags, IF(Compare IS NULL AND Error IS NOT NULL, '', IF(Compare, '', CONCAT("'", On_Slave, "' != '", Expected, "'"))) AS Value_On_Slave FROM type_conversions; enable_query_log; DROP TABLE type_conversions; connection master; DROP TABLE t1; sync_slave_with_master; set global slave_type_conversions = @saved_slave_type_conversions; # # BUG#49618: Field length stored incorrectly in binary log for InnoDB # connection slave; SET @saved_slave_type_conversions = @@GLOBAL.SLAVE_TYPE_CONVERSIONS; SET GLOBAL SLAVE_TYPE_CONVERSIONS = ''; connection master; CREATE TABLE t1(b1 BIT(1), b2 BIT(2), b3 BIT(3)) ENGINE=InnoDB; INSERT INTO t1 VALUES (b'0', b'01', b'101'); 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; connection slave; SET GLOBAL SLAVE_TYPE_CONVERSIONS = @saved_slave_type_conversions; --source include/rpl_end.inc