1
#################################################
4
# Purpose: Test test that BLOBs are replicated
6
################################################
9
-- source include/have_binlog_format_row.inc
10
-- source include/master-slave.inc
12
# Pre test clean up section
15
DROP TABLE IF EXISTS test.t1;
16
DROP TABLE IF EXISTS test.t2;
20
--echo ***** Table Create Section ****
23
--replace_result $engine_type #
24
eval CREATE TABLE test.t1 (c1 int not null auto_increment,
25
data LONGBLOB, PRIMARY KEY(c1))ENGINE=$engine_type;
28
--echo **** Data Insert Section test.t1 *****
30
INSERT INTO test.t1 VALUES (NULL, NULL);
31
INSERT INTO test.t1 VALUES (NULL, repeat('a',1*1024));
32
INSERT INTO test.t1 VALUES (NULL, repeat('b',16*1024));
35
--echo **** Data Insert Validation Master Section test.t1 ****
37
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 1;
38
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 2;
39
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 3;
45
--echo **** Data Insert Validation Slave Section test.t1 ****
47
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 1;
48
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 2;
49
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 3;
53
--echo **** Data Update Section test.t1 ****
55
UPDATE test.t1 set data=repeat('a',18*1024) where c1 = 1;
56
UPDATE t1 set data=repeat('c',17*1024) where c1 = 2;
59
--echo **** Data Update Validation Master Section test.t1 ****
61
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 1;
62
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 2;
63
# Sleep is needed for NDB to allow time for
64
# Injector thread to populate the bin log.
70
--echo **** Data Update Validation Slave Section test.t1 ****
72
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 1;
73
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 2;
76
--echo **** End Test Section test.t1 ****
79
--echo **** Create Table test.t2 ****
82
--replace_result $engine_type #
83
eval CREATE TABLE test.t2 (
84
c1 INT NOT NULL PRIMARY KEY,
88
KEY(c3))ENGINE=$engine_type;
92
--echo *** Setup Values For test.t2 ***
93
# x0 size 256 (current inline size)
94
set @x0 = '01234567012345670123456701234567';
95
set @x0 = concat(@x0,@x0,@x0,@x0,@x0,@x0,@x0,@x0);
97
# b1 length 2000+256 (blob part aligned)
99
set @b1 = concat(@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1);
100
set @b1 = concat(@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1);
101
set @b1 = concat(@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1);
102
set @b1 = concat(@b1,@x0);
105
set @d1 = concat(@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1);
106
set @d1 = concat(@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1);
107
set @d1 = concat(@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1);
111
set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2);
112
set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2);
113
set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2);
114
set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2);
118
set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2);
119
set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2);
120
set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2);
121
set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2);
124
--echo **** Data Insert Section test.t2 *****
126
INSERT INTO test.t2 VALUES(1,@b1,111,@d1);
127
INSERT INTO test.t2 VALUES(2,@b2,222,@d2);
130
--echo **** Data Insert Validation Master Section test.t2 ****
132
SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3)
133
FROM test.t2 WHERE c1=1;
134
SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3)
135
FROM test.t2 WHERE c1=2;
141
--echo **** Data Insert Validation Slave Section test.t2 ****
143
SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3)
144
FROM test.t2 WHERE c1=1;
145
SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3)
146
FROM test.t2 WHERE c1=2;
150
--echo **** Data Update Section test.t2 ****
152
UPDATE test.t2 SET c2=@b2, c4=@d2 WHERE c1=1;
153
UPDATE test.t2 SET c2=@b1, c4=@d1 WHERE c1=2;
156
--echo **** Data Update Validation Master Section test.t2 ****
158
SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3)
159
FROM test.t2 WHERE c1=1;
160
SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3)
161
FROM test.t2 WHERE c1=2;
162
# Sleep is needed for NDB to allow time for
163
# Injector thread to populate the bin log.
169
--echo **** Data Update Validation Slave Section test.t2 ****
171
SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3)
172
FROM test.t2 WHERE c1=1;
173
SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3)
174
FROM test.t2 WHERE c1=2;
178
# Post test clean up section
179
--exec $MYSQL_DUMP --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/rpl_row_blob_master.sql
180
--exec $MYSQL_DUMP_SLAVE --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/rpl_row_blob_slave.sql
182
--exec diff $MYSQLTEST_VARDIR/tmp/rpl_row_blob_master.sql $MYSQLTEST_VARDIR/tmp/rpl_row_blob_slave.sql
184
DROP TABLE IF EXISTS test.t1;
185
DROP TABLE IF EXISTS test.t2;
186
# ensure cleanup on slave as well:
187
# ndb blob tables consist of several tables
188
# if cluster is shutdown while not all tables are
189
# properly dropped, the table becomes inconsistent
190
# and wrecks later test cases
191
--sync_slave_with_master