################################################# # Author: JBM # Date: 2006-01-06 # Purpose: Test test that BLOBs are replicated # correctly. ################################################ # Pre test clean up section connection master; --disable_warnings DROP TABLE IF EXISTS test.t1; DROP TABLE IF EXISTS test.t2; --enable_warnings # Start test section --echo ***** Table Create Section **** --echo --disable_warnings --replace_result $engine_type # eval CREATE TABLE test.t1 (c1 int not null auto_increment, data LONGBLOB, PRIMARY KEY(c1))ENGINE=$engine_type; --enable_warnings --echo --echo **** Data Insert Section test.t1 ***** --echo INSERT INTO test.t1 VALUES (NULL, NULL); INSERT INTO test.t1 VALUES (NULL, repeat('a',1*1024)); INSERT INTO test.t1 VALUES (NULL, repeat('b',16*1024)); --echo --echo **** Data Insert Validation Master Section test.t1 **** --echo SELECT LENGTH(data) FROM test.t1 WHERE c1 = 1; SELECT LENGTH(data) FROM test.t1 WHERE c1 = 2; SELECT LENGTH(data) FROM test.t1 WHERE c1 = 3; --source include/sync_slave_sql_with_master.inc --echo --echo **** Data Insert Validation Slave Section test.t1 **** --echo SELECT LENGTH(data) FROM test.t1 WHERE c1 = 1; SELECT LENGTH(data) FROM test.t1 WHERE c1 = 2; SELECT LENGTH(data) FROM test.t1 WHERE c1 = 3; connection master; --echo --echo **** Data Update Section test.t1 **** --echo UPDATE test.t1 set data=repeat('a',18*1024) where c1 = 1; UPDATE t1 set data=repeat('c',17*1024) where c1 = 2; --echo --echo **** Data Update Validation Master Section test.t1 **** --echo SELECT LENGTH(data) FROM test.t1 WHERE c1 = 1; SELECT LENGTH(data) FROM test.t1 WHERE c1 = 2; --source include/sync_slave_sql_with_master.inc --echo --echo **** Data Update Validation Slave Section test.t1 **** --echo SELECT LENGTH(data) FROM test.t1 WHERE c1 = 1; SELECT LENGTH(data) FROM test.t1 WHERE c1 = 2; connection master; --echo --echo **** End Test Section test.t1 **** --echo --echo **** Create Table test.t2 **** --echo --disable_warnings --replace_result $engine_type # eval CREATE TABLE test.t2 ( c1 INT NOT NULL PRIMARY KEY, c2 TEXT, c3 INT, c4 LONGBLOB, KEY(c3))ENGINE=$engine_type; --enable_warnings --echo --echo *** Setup Values For test.t2 *** # x0 size 256 (current inline size) set @x0 = '01234567012345670123456701234567'; set @x0 = concat(@x0,@x0,@x0,@x0,@x0,@x0,@x0,@x0); # b1 length 2000+256 (blob part aligned) set @b1 = 'b1'; set @b1 = concat(@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1); set @b1 = concat(@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1); set @b1 = concat(@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1); set @b1 = concat(@b1,@x0); # d1 length 3000 set @d1 = 'dd1'; set @d1 = concat(@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1); set @d1 = concat(@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1); set @d1 = concat(@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1); # b2 length 20000 set @b2 = 'b2'; set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2); set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2); set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2); set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2); # d2 length 30000 set @d2 = 'dd2'; set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2); set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2); set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2); set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2); --echo --echo **** Data Insert Section test.t2 ***** --echo INSERT INTO test.t2 VALUES(1,@b1,111,@d1); INSERT INTO test.t2 VALUES(2,@b2,222,@d2); --echo --echo **** Data Insert Validation Master Section test.t2 **** --echo SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) FROM test.t2 WHERE c1=1; SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) FROM test.t2 WHERE c1=2; --source include/sync_slave_sql_with_master.inc --echo --echo **** Data Insert Validation Slave Section test.t2 **** --echo SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) FROM test.t2 WHERE c1=1; SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) FROM test.t2 WHERE c1=2; connection master; --echo --echo **** Data Update Section test.t2 **** --echo UPDATE test.t2 SET c2=@b2, c4=@d2 WHERE c1=1; UPDATE test.t2 SET c2=@b1, c4=@d1 WHERE c1=2; --echo --echo **** Data Update Validation Master Section test.t2 **** --echo SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) FROM test.t2 WHERE c1=1; SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) FROM test.t2 WHERE c1=2; --source include/sync_slave_sql_with_master.inc --echo --echo **** Data Update Validation Slave Section test.t2 **** --echo SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) FROM test.t2 WHERE c1=1; SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) FROM test.t2 WHERE c1=2; connection master; --echo # Post test clean up section --exec $MYSQL_DUMP --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/rpl_row_blob_master.sql --exec $MYSQL_DUMP_SLAVE --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/rpl_row_blob_slave.sql diff_files $MYSQLTEST_VARDIR/tmp/rpl_row_blob_master.sql $MYSQLTEST_VARDIR/tmp/rpl_row_blob_slave.sql; DROP TABLE IF EXISTS test.t1; DROP TABLE IF EXISTS test.t2; # ensure cleanup on slave as well: # ndb blob tables consist of several tables # if cluster is shutdown while not all tables are # properly dropped, the table becomes inconsistent # and wrecks later test cases --source include/sync_slave_sql_with_master.inc