mariadb/mysql-test/extra/rpl_tests/rpl_row_blob.test

192 lines
5.9 KiB
Text
Raw Normal View History

#################################################
# Author: JBM
# Date: 2006-01-06
# Purpose: Test test that BLOBs are replicated
# correctly.
################################################
# 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;
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;
save_master_pos;
connection slave;
sync_with_master;
sleep 5;
--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;
# 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 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;
save_master_pos;
connection slave;
sync_with_master;
sleep 5;
--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;
# 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.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
Fix test cases to work with non-standard --vardir. Rename mix_innodb_myisam_binlog-master.opt; when the test was moved to separate stm/row test cases, the .opt were not moved along with it, causing a 60-second test duration because of default lock timeout :-( mysql-test/t/binlog_row_mix_innodb_myisam-master.opt: bk cp mysql-test/t/mix_innodb_myisam_binlog-master.opt mysql-test/t/binlog_row_mix_innodb_myisam-master.opt mysql-test/t/binlog_stm_mix_innodb_myisam-master.opt: Rename: mysql-test/t/mix_innodb_myisam_binlog-master.opt -> mysql-test/t/binlog_stm_mix_innodb_myisam-master.opt mysql-test/r/mysqlbinlog_base64.result: Fix test cases to work with non-standard --vardir. mysql-test/r/ndb_load.result: Fix test cases to work with non-standard --vardir. mysql-test/r/rpl_LD_INFILE.result: Fix test cases to work with non-standard --vardir. mysql-test/r/rpl_loaddata2.result: Fix test cases to work with non-standard --vardir. mysql-test/r/rpl_loaddata_m.result: Fix test cases to work with non-standard --vardir. mysql-test/t/loaddata.test: Fix test cases to work with non-standard --vardir. mysql-test/t/mysqlbinlog_base64.test: Fix test cases to work with non-standard --vardir. mysql-test/t/ndb_dd_dump.test: Fix test cases to work with non-standard --vardir. mysql-test/t/ndb_load.test: Fix test cases to work with non-standard --vardir. mysql-test/t/rpl_LD_INFILE.test: Fix test cases to work with non-standard --vardir. mysql-test/t/rpl_loaddata2.test: Fix test cases to work with non-standard --vardir. mysql-test/t/rpl_loaddata_m.test: Fix test cases to work with non-standard --vardir. mysql-test/t/rpl_loadfile.test: Fix test cases to work with non-standard --vardir. mysql-test/extra/rpl_tests/rpl_row_001.test: Fix test cases to work with non-standard --vardir. mysql-test/r/rpl_load_table_from_master.result: Fix test cases to work with non-standard --vardir. mysql-test/r/rpl_loadfile.result: Fix test cases to work with non-standard --vardir. mysql-test/r/rpl_ndb_row_001.result: Fix test cases to work with non-standard --vardir. mysql-test/r/rpl_row_001.result: Fix test cases to work with non-standard --vardir. mysql-test/r/rpl_row_loaddata_m.result: Fix test cases to work with non-standard --vardir. mysql-test/r/rpl_row_stop_middle_update.result: Fix test cases to work with non-standard --vardir. mysql-test/t/rpl_drop_db.test: Fix test cases to work with non-standard --vardir. mysql-test/t/rpl_load_table_from_master.test: Fix test cases to work with non-standard --vardir. mysql-test/t/rpl_row_stop_middle_update.test: Fix test cases to work with non-standard --vardir. mysql-test/extra/rpl_tests/rpl_row_UUID.test: Fix test cases to work with non-standard --vardir. mysql-test/extra/rpl_tests/rpl_row_blob.test: Fix test cases to work with non-standard --vardir. mysql-test/extra/rpl_tests/rpl_row_charset.test: Fix test cases to work with non-standard --vardir. mysql-test/extra/rpl_tests/rpl_row_func003.test: Fix test cases to work with non-standard --vardir. mysql-test/extra/rpl_tests/rpl_row_sp006.test: Fix test cases to work with non-standard --vardir. mysql-test/include/ndb_backup.inc: Fix test cases to work with non-standard --vardir. mysql-test/r/rpl_ndb_bank.result: Fix test cases to work with non-standard --vardir. mysql-test/r/rpl_ndb_sync.result: Fix test cases to work with non-standard --vardir. mysql-test/t/rpl_ndb_bank.test: Fix test cases to work with non-standard --vardir. mysql-test/t/rpl_ndb_sync.test: Fix test cases to work with non-standard --vardir. mysql-test/t/rpl_row_NOW.test: Fix test cases to work with non-standard --vardir. mysql-test/t/rpl_row_func002.test: Fix test cases to work with non-standard --vardir. mysql-test/t/rpl_row_sp001.test: Fix test cases to work with non-standard --vardir. mysql-test/t/rpl_row_sp011.test: Fix test cases to work with non-standard --vardir. mysql-test/t/rpl_row_trig001.test: Fix test cases to work with non-standard --vardir. mysql-test/t/rpl_row_trig003.test: Fix test cases to work with non-standard --vardir. mysql-test/t/rpl_sp004.test: Fix test cases to work with non-standard --vardir. mysql-test/t/show_check.test: Fix test cases to work with non-standard --vardir. mysql-test/include/partition_1.inc: Fix test cases to work with non-standard --vardir. mysql-test/include/partition_layout.inc: Fix test cases to work with non-standard --vardir. mysql-test/r/ndb_dd_backuprestore.result: Fix test cases to work with non-standard --vardir.
2006-02-22 10:07:54 +01:00
--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
Fix test cases to work with non-standard --vardir. Rename mix_innodb_myisam_binlog-master.opt; when the test was moved to separate stm/row test cases, the .opt were not moved along with it, causing a 60-second test duration because of default lock timeout :-( mysql-test/t/binlog_row_mix_innodb_myisam-master.opt: bk cp mysql-test/t/mix_innodb_myisam_binlog-master.opt mysql-test/t/binlog_row_mix_innodb_myisam-master.opt mysql-test/t/binlog_stm_mix_innodb_myisam-master.opt: Rename: mysql-test/t/mix_innodb_myisam_binlog-master.opt -> mysql-test/t/binlog_stm_mix_innodb_myisam-master.opt mysql-test/r/mysqlbinlog_base64.result: Fix test cases to work with non-standard --vardir. mysql-test/r/ndb_load.result: Fix test cases to work with non-standard --vardir. mysql-test/r/rpl_LD_INFILE.result: Fix test cases to work with non-standard --vardir. mysql-test/r/rpl_loaddata2.result: Fix test cases to work with non-standard --vardir. mysql-test/r/rpl_loaddata_m.result: Fix test cases to work with non-standard --vardir. mysql-test/t/loaddata.test: Fix test cases to work with non-standard --vardir. mysql-test/t/mysqlbinlog_base64.test: Fix test cases to work with non-standard --vardir. mysql-test/t/ndb_dd_dump.test: Fix test cases to work with non-standard --vardir. mysql-test/t/ndb_load.test: Fix test cases to work with non-standard --vardir. mysql-test/t/rpl_LD_INFILE.test: Fix test cases to work with non-standard --vardir. mysql-test/t/rpl_loaddata2.test: Fix test cases to work with non-standard --vardir. mysql-test/t/rpl_loaddata_m.test: Fix test cases to work with non-standard --vardir. mysql-test/t/rpl_loadfile.test: Fix test cases to work with non-standard --vardir. mysql-test/extra/rpl_tests/rpl_row_001.test: Fix test cases to work with non-standard --vardir. mysql-test/r/rpl_load_table_from_master.result: Fix test cases to work with non-standard --vardir. mysql-test/r/rpl_loadfile.result: Fix test cases to work with non-standard --vardir. mysql-test/r/rpl_ndb_row_001.result: Fix test cases to work with non-standard --vardir. mysql-test/r/rpl_row_001.result: Fix test cases to work with non-standard --vardir. mysql-test/r/rpl_row_loaddata_m.result: Fix test cases to work with non-standard --vardir. mysql-test/r/rpl_row_stop_middle_update.result: Fix test cases to work with non-standard --vardir. mysql-test/t/rpl_drop_db.test: Fix test cases to work with non-standard --vardir. mysql-test/t/rpl_load_table_from_master.test: Fix test cases to work with non-standard --vardir. mysql-test/t/rpl_row_stop_middle_update.test: Fix test cases to work with non-standard --vardir. mysql-test/extra/rpl_tests/rpl_row_UUID.test: Fix test cases to work with non-standard --vardir. mysql-test/extra/rpl_tests/rpl_row_blob.test: Fix test cases to work with non-standard --vardir. mysql-test/extra/rpl_tests/rpl_row_charset.test: Fix test cases to work with non-standard --vardir. mysql-test/extra/rpl_tests/rpl_row_func003.test: Fix test cases to work with non-standard --vardir. mysql-test/extra/rpl_tests/rpl_row_sp006.test: Fix test cases to work with non-standard --vardir. mysql-test/include/ndb_backup.inc: Fix test cases to work with non-standard --vardir. mysql-test/r/rpl_ndb_bank.result: Fix test cases to work with non-standard --vardir. mysql-test/r/rpl_ndb_sync.result: Fix test cases to work with non-standard --vardir. mysql-test/t/rpl_ndb_bank.test: Fix test cases to work with non-standard --vardir. mysql-test/t/rpl_ndb_sync.test: Fix test cases to work with non-standard --vardir. mysql-test/t/rpl_row_NOW.test: Fix test cases to work with non-standard --vardir. mysql-test/t/rpl_row_func002.test: Fix test cases to work with non-standard --vardir. mysql-test/t/rpl_row_sp001.test: Fix test cases to work with non-standard --vardir. mysql-test/t/rpl_row_sp011.test: Fix test cases to work with non-standard --vardir. mysql-test/t/rpl_row_trig001.test: Fix test cases to work with non-standard --vardir. mysql-test/t/rpl_row_trig003.test: Fix test cases to work with non-standard --vardir. mysql-test/t/rpl_sp004.test: Fix test cases to work with non-standard --vardir. mysql-test/t/show_check.test: Fix test cases to work with non-standard --vardir. mysql-test/include/partition_1.inc: Fix test cases to work with non-standard --vardir. mysql-test/include/partition_layout.inc: Fix test cases to work with non-standard --vardir. mysql-test/r/ndb_dd_backuprestore.result: Fix test cases to work with non-standard --vardir.
2006-02-22 10:07:54 +01:00
--exec diff $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
--sync_slave_with_master