# Includes -- source include/have_binlog_format_row.inc -- source include/master-slave.inc # Pre test clean up section connection master; --disable_warnings DROP TABLE IF EXISTS test.t1; --enable_warnings # Start test section --echo **** Create Table test.t1 **** --echo --disable_warnings --replace_result $engine_type # eval CREATE TABLE test.t1 ( 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.t1 *** # 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.t1 ***** --echo INSERT INTO test.t1 VALUES(1,@b1,111,@d1); INSERT INTO test.t1 VALUES(2,@b2,222,@d2); --echo --echo **** Data Insert Validation Master Section test.t1 **** --echo SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) FROM test.t1 WHERE c1=1; SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) FROM test.t1 WHERE c1=2; save_master_pos; connection slave; sync_with_master; sleep 5; --echo --echo **** Data Insert Validation Slave Section test.t1 **** --echo SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) FROM test.t1 WHERE c1=1; SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) FROM test.t1 WHERE c1=2; connection master; --echo --echo **** Data Update Section test.t1 **** --echo UPDATE test.t1 SET c2=@b2, c4=@d2 WHERE c1=1; UPDATE test.t1 SET c2=@b1, c4=@d1 WHERE c1=2; --echo --echo **** Data Update Validation Master Section test.t1 **** --echo SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) FROM test.t1 WHERE c1=1; SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) FROM test.t1 WHERE c1=2; # Sleep is needed for NDB to allow time for # Injector thread to populate the bin log. save_master_pos; connection slave; sync_with_master; sleep 5; --echo --echo **** Data Update Validation Slave Section test.t1 **** --echo SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) FROM test.t1 WHERE c1=1; SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3) FROM test.t1 WHERE c1=2; connection master; --echo DROP TABLE IF EXISTS test.t1; # 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 --sync_slave_with_master