################################################################## # rpl_colSize # # # # This test is designed to test the changes included in WL#3228. # # The changes include the ability to replicate with the master # # having columns that are smaller (shorter) than the slave. # ################################################################## -- source include/master-slave.inc --disable_warnings DROP TABLE IF EXISTS t1; --enable_warnings --echo **** Testing WL#3228 changes. **** --echo *** Create "wider" table on slave *** sync_slave_with_master; STOP SLAVE; --source include/wait_for_slave_to_stop.inc --source include/reset_slave.inc SET @saved_slave_type_conversions = @@slave_type_conversions; SET GLOBAL SLAVE_TYPE_CONVERSIONS = 'ALL_NON_LOSSY'; eval CREATE TABLE t1 ( a float (47), b double (143,9), c decimal (65,30), d numeric (4,0), e bit (32), f char (21), g varchar (1300), h binary (33), j varbinary (200), k enum ('5','6','7', '8','9','0'), l set ('1','2','3','4','5','6','7','8','9','0','11','12','13','14','15','16','17','18','19','21','22','23','24','25','26','27','28','29'), m TINYBLOB, n BLOB, o MEDIUMBLOB, p LONGBLOB, q TINYTEXT, r TEXT, s MEDIUMTEXT, t LONGTEXT ); --echo *** Create same table on master but with narrow columns *** connection master; eval CREATE TABLE t1 ( a float (44), b double (10,3), c decimal (10,2), d numeric (3,0), e bit (16), f char (10), g varchar (100), h binary (20), j varbinary (20), k enum ('5','6','7'), l set ('1','2','3','4','5','6','7','8','9','0'), m TINYBLOB, n BLOB, o MEDIUMBLOB, p LONGBLOB, q TINYTEXT, r TEXT, s MEDIUMTEXT, t LONGTEXT ); RESET MASTER; --echo *** Start replication *** connection slave; START SLAVE; --source include/wait_for_slave_to_start.inc --echo *** Insert data on master and display it. *** connection master; INSERT INTO t1 () VALUES ( 17.567, 2.123, 10.20, 125, hex(64), 'TEST', 'This is a test', 'binary data', 'more binary data', '6', '7', "blob 1", "blob 2", "blob 3", "blob 4", "text 1", "text 2", "text 3", "text 4"); # Replace values in columns that display differently between SBR & RBR --replace_column 5 # 8 # SELECT * FROM t1 ORDER BY a; --echo *** Select data from slave to compare *** sync_slave_with_master; connection slave; # Replace values in columns that display differently between SBR & RBR --replace_column 5 # 8 # SELECT * FROM t1 ORDER BY a; # Test boundary limits of varchar and char fields # Master/Slave # <256/<256 with m < s, m > s, and m == s <-- col a # >255/<256 with m < s, m > s, and m == s <-- error will be caught in BUG#22086 # <256/>255 with m < s, m > s, and m == s <-- col b # >255/>255 with m < s, m > s, and m == s <-- col c # # Test boundary limits of CHAR fields # Master/Slave # <256/<256 with m < s, m > s, and m == s <-- col d # >255/<256 with m < s, m > s, and m == s <-- error char limited to 255 chars # <256/>255 with m < s, m > s, and m == s <-- error char limited to 255 chars # >255/>255 with m < s, m > s, and m == s <-- error char limited to 255 chars connection master; DROP TABLE t1; --echo Create varchar table on master CREATE TABLE t1 ( a VARCHAR(50), b VARCHAR(100), c VARCHAR(300), d CHAR(5) ); sync_slave_with_master slave; --echo Alter varchar table on slave ALTER TABLE t1 CHANGE COLUMN a a VARCHAR(100); ALTER TABLE t1 CHANGE COLUMN b b VARCHAR(400); ALTER TABLE t1 CHANGE COLUMN c c VARCHAR(500); ALTER TABLE t1 CHANGE COLUMN d d CHAR(100); connection master; --echo Insert some values and select them on master INSERT INTO t1 VALUES ("This is a test of col a.", "This is another test of col b.", "This is a test of the large col c.", "Col d"); SELECT * FROM t1; --replace_result default DEFAULT SHOW CREATE TABLE t1; sync_slave_with_master slave; --echo Insert some values and select them on slave SELECT * FROM t1; --replace_result default DEFAULT SHOW CREATE TABLE t1; # Test boundary limits of bit fields # m < s, m % 8 != 0, and s % 8 == 0 col a # m < s, m % 8 == 0, and s % 8 != 0 col b # m < s, m % 8 != 0, and s % 8 != 0 col c # m > s, m % 8 != 0, and s % 8 == 0 <-- error will be caught in BUG#22086 # m > s, m % 8 == 0, and s % 8 != 0 <-- error will be caught in BUG#22086 # m > s, m % 8 != 0, and s % 8 != 0 <-- error will be caught in BUG#22086 connection master; DROP TABLE t1; --echo Create bit table on master CREATE TABLE t1 ( a BIT(7), b BIT(8), c BIT(21), d BIT(11), e BIT(11) ); sync_slave_with_master slave; --echo Create bit table on slave DROP TABLE t1; CREATE TABLE t1 ( a BIT(16), b BIT(22), c BIT(54), d BIT(25), e BIT(13) ); connection master; --echo Insert some values and select them on master INSERT INTO t1 VALUES ( b'1010101', b'10101011', b'101010110101010101111', b'10101010101', b'10101011111' ); SELECT BIN(a), BIN(b), BIN(c), BIN(d), BIN(e) FROM t1; --replace_result default DEFAULT SHOW CREATE TABLE t1; sync_slave_with_master slave; --echo Insert some values and select them on master SELECT BIN(a), BIN(b), BIN(c), BIN(d), BIN(e) FROM t1; --replace_result default DEFAULT SHOW CREATE TABLE t1; --echo *** Cleanup *** connection master; DROP TABLE t1; sync_slave_with_master; SET GLOBAL SLAVE_TYPE_CONVERSIONS = @saved_slave_type_conversions; # END 5.1 Test Case --source include/rpl_end.inc