1
--source include/have_binlog_format_row.inc
3
let $SERVER_VERSION=`select version()`;
5
#This test case is not written for NDB, the result files
6
#will not match when NDB is the default engine
7
-- source include/not_ndb_default.inc
9
--source include/master-slave.inc
11
# Bug#15942 (RBR ignores --binlog_ignore_db and tries to map to table
12
# on slave for writes)
14
CREATE DATABASE test_ignore; # --binlog_ignore_db=mysqltest_ignore
16
--echo **** On Master ****
19
CREATE TABLE t1 (a INT, b INT);
21
INSERT INTO t1 VALUES (1,1), (2,2);
23
CREATE TABLE t2 (a INT, b INT);
25
INSERT INTO t2 VALUES (3,3), (4,4);
26
source include/show_binlog_events.inc;
27
sync_slave_with_master;
28
--echo **** On Slave ****
36
DROP DATABASE test_ignore;
37
sync_slave_with_master;
39
# Bug#19995: Extreneous table maps generated for statements that does
42
--source include/master-slave-reset.inc
46
CREATE TABLE t1 (a INT);
48
INSERT INTO t1 VALUES (1),(2);
49
DELETE FROM t1 WHERE a = 0;
50
UPDATE t1 SET a=99 WHERE a = 0;
51
--replace_result $SERVER_VERSION SERVER_VERSION
52
--replace_regex /table_id: [0-9]+/table_id: #/
57
# BUG#17620: Replicate (Row Based) Fails when Query Cache enabled on
59
--echo ================ Test for BUG#17620 ================
61
--source include/master-slave-reset.inc
64
--echo **** On Slave ****
66
SET GLOBAL QUERY_CACHE_SIZE=0;
68
--echo **** On Master ****
70
CREATE TABLE t1 (a INT);
71
INSERT INTO t1 VALUES (1),(2),(3);
73
--echo **** On Slave ****
74
sync_slave_with_master;
75
SET GLOBAL QUERY_CACHE_SIZE=16*1024*1024;
77
--echo **** On Master ****
79
INSERT INTO t1 VALUES (4),(5),(6);
81
--echo **** On Slave ****
82
sync_slave_with_master;
85
--echo **** On Master ****
87
INSERT INTO t1 VALUES (7),(8),(9);
89
--echo **** On Slave ****
90
sync_slave_with_master;
93
SET GLOBAL QUERY_CACHE_SIZE=0;
95
# Bug#22550: Replication of BIT columns failing
96
--echo ================ Test for BUG#22550 ================
98
--source include/master-slave-reset.inc
102
CREATE TABLE t1 (a BIT(1), b INT) ENGINE=MYISAM;
103
sync_slave_with_master;
106
INSERT INTO t1 VALUES(1,2);
107
SELECT HEX(a),b FROM t1;
108
sync_slave_with_master;
109
SELECT HEX(a),b FROM t1;
112
UPDATE t1 SET a=0 WHERE b=2;
113
SELECT HEX(a),b FROM t1;
114
sync_slave_with_master;
115
SELECT HEX(a),b FROM t1;
118
DROP TABLE IF EXISTS t1;
119
sync_slave_with_master;
121
# BUG#22583: RBR between MyISAM and non-MyISAM tables containing a BIT
122
# field does not work
124
--echo ================ Test for BUG#22583 ================
126
--source include/master-slave-reset.inc
129
# disabling warnings temporarily for ENGINE=INNODB to work without InnoDB
131
--echo **** On Master ****
133
CREATE TABLE t1_myisam (k INT, a BIT(1), b BIT(9)) ENGINE=MYISAM;
134
CREATE TABLE t1_innodb (k INT, a BIT(1), b BIT(9)) ENGINE=INNODB;
135
CREATE TABLE t2_myisam (k INT, a BIT(1) NOT NULL, b BIT(4) NOT NULL) ENGINE=MYISAM;
136
CREATE TABLE t2_innodb (k INT, a BIT(1) NOT NULL, b BIT(4) NOT NULL) ENGINE=INNODB;
137
--echo **** On Slave ****
138
sync_slave_with_master;
139
ALTER TABLE t1_myisam ENGINE=INNODB;
140
ALTER TABLE t1_innodb ENGINE=MYISAM;
141
ALTER TABLE t2_myisam ENGINE=INNODB;
142
ALTER TABLE t2_innodb ENGINE=MYISAM;
145
--echo **** On Master ****
147
INSERT INTO t1_myisam VALUES(1, b'0', 257);
148
INSERT INTO t1_myisam VALUES(2, b'1', 256);
149
INSERT INTO t1_innodb VALUES(1, b'0', 257);
150
INSERT INTO t1_innodb VALUES(2, b'1', 256);
151
SELECT k, HEX(a),HEX(b) FROM t1_myisam;
152
SELECT k, HEX(a),HEX(b) FROM t1_innodb;
153
INSERT INTO t2_myisam VALUES(1, b'0', 9);
154
INSERT INTO t2_myisam VALUES(2, b'1', 8);
155
INSERT INTO t2_innodb VALUES(1, b'0', 9);
156
INSERT INTO t2_innodb VALUES(2, b'1', 8);
157
SELECT k, HEX(a),HEX(b) FROM t2_myisam;
158
SELECT k, HEX(a),HEX(b) FROM t2_innodb;
159
--echo **** On Slave ****
160
sync_slave_with_master;
161
SELECT k, HEX(a),HEX(b) FROM t1_myisam;
162
SELECT k, HEX(a),HEX(b) FROM t1_innodb;
163
SELECT k, HEX(a),HEX(b) FROM t2_myisam;
164
SELECT k, HEX(a),HEX(b) FROM t2_innodb;
166
--echo **** On Master ****
168
UPDATE t1_myisam SET a=0 WHERE k=2;
169
SELECT k, HEX(a),HEX(b) FROM t1_myisam;
170
UPDATE t1_innodb SET a=0 WHERE k=2;
171
SELECT k, HEX(a),HEX(b) FROM t1_innodb;
172
UPDATE t2_myisam SET a=0 WHERE k=2;
173
SELECT k, HEX(a),HEX(b) FROM t2_myisam;
174
UPDATE t2_innodb SET a=0 WHERE k=2;
175
SELECT k, HEX(a),HEX(b) FROM t2_innodb;
176
--echo **** On Slave ****
177
sync_slave_with_master;
178
SELECT k, HEX(a),HEX(b) FROM t1_myisam;
179
SELECT k, HEX(a),HEX(b) FROM t1_innodb;
180
SELECT k, HEX(a),HEX(b) FROM t2_myisam;
181
SELECT k, HEX(a),HEX(b) FROM t2_innodb;
183
--echo **** On Master ****
185
DROP TABLE IF EXISTS t1_myisam, t1_innodb, t2_myisam, t2_innodb;
186
sync_slave_with_master;
189
# Bug#27716 multi-update did partially and has not binlogged
195
drop table if exists t1, t2;
198
`a` int(11) NOT NULL auto_increment,
199
`b` int(11) default NULL,
201
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;
204
`a` int(11) NOT NULL auto_increment,
205
`b` int(11) default NULL,
207
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;
209
# testing multi_update::send_error() effective update
210
insert into t1 values (1,1),(2,2);
211
insert into t2 values (1,1),(4,4);
215
UPDATE t2,t1 SET t2.a=t1.a+2;
216
select * from t2 /* must be (3,1), (4,4) */;
217
sync_slave_with_master;
220
select * from t2 /* must be (3,1), (4,4) */;
225
sync_slave_with_master;
228
# BUG#31702: Missing row on slave causes assertion failure under
229
# row-based replication
233
source include/master-slave-reset.inc;
236
--echo **** On Master ****
238
SET SESSION BINLOG_FORMAT=ROW;
239
CREATE TABLE t1 (a INT PRIMARY KEY, b SET('master','slave'));
240
INSERT INTO t1 VALUES (1,'master,slave'), (2,'master,slave');
241
--echo **** On Slave ****
242
sync_slave_with_master;
243
UPDATE t1 SET a = 5, b = 'slave' WHERE a = 1;
244
SELECT * FROM t1 ORDER BY a;
245
# since bug#31552/31609 idempotency is not default any longer. In
246
# order the preceeding test UPDATE t1 to pass the mode is switched
248
set @@global.slave_exec_mode= 'IDEMPOTENT';
249
--echo **** On Master ****
251
UPDATE t1 SET a = 5, b = 'master' WHERE a = 1;
252
SELECT * FROM t1 ORDER BY a;
253
--echo **** On Slave ****
254
sync_slave_with_master;
255
set @@global.slave_exec_mode= default;
256
let $last_error = query_get_value("SHOW SLAVE STATUS", Last_SQL_Error, 1);
258
eval SELECT "$last_error" AS Last_SQL_Error;
260
SELECT * FROM t1 ORDER BY a;
263
--echo **** On Master ****