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;
39 sync_slave_with_master;
43 # Bug#19995: Extreneous table maps generated for statements that does
45 --source include/rpl_reset.inc
48 CREATE TABLE t1 (a INT);
50 INSERT INTO t1 VALUES (1),(2);
51 DELETE FROM t1 WHERE a = 0;
52 UPDATE t1 SET a=99 WHERE a = 0;
53 source include/show_binlog_events.inc;
57 # BUG#17620: Replicate (Row Based) Fails when Query Cache enabled on
59 --echo ================ Test for BUG#17620 ================
60 --source include/rpl_reset.inc
62 --echo **** On Slave ****
64 SET GLOBAL QUERY_CACHE_SIZE=0;
65 call mtr.add_suppression("Slave SQL.*Could not execute Update_rows event on table test.t1.* Error_code: 1032");
67 --echo **** On Master ****
69 CREATE TABLE t1 (a INT);
70 INSERT INTO t1 VALUES (1),(2),(3);
72 --echo **** On Slave ****
73 sync_slave_with_master;
74 SET GLOBAL QUERY_CACHE_SIZE=16*1024*1024;
76 --echo **** On Master ****
78 INSERT INTO t1 VALUES (4),(5),(6);
80 --echo **** On Slave ****
81 sync_slave_with_master;
84 --echo **** On Master ****
86 INSERT INTO t1 VALUES (7),(8),(9);
88 --echo **** On Slave ****
89 sync_slave_with_master;
92 SET GLOBAL QUERY_CACHE_SIZE=0;
97 # Bug#22550: Replication of BIT columns failing
98 --echo ================ Test for BUG#22550 ================
99 --source include/rpl_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 ================
125 --source include/rpl_reset.inc
127 # disabling warnings temporarily for ENGINE=INNODB to work without InnoDB
129 --echo **** On Master ****
131 CREATE TABLE t1_myisam (k INT, a BIT(1), b BIT(9)) ENGINE=MYISAM;
132 CREATE TABLE t1_innodb (k INT, a BIT(1), b BIT(9)) ENGINE=INNODB;
133 CREATE TABLE t2_myisam (k INT, a BIT(1) NOT NULL, b BIT(4) NOT NULL) ENGINE=MYISAM;
134 CREATE TABLE t2_innodb (k INT, a BIT(1) NOT NULL, b BIT(4) NOT NULL) ENGINE=INNODB;
135 --echo **** On Slave ****
136 sync_slave_with_master;
137 ALTER TABLE t1_myisam ENGINE=INNODB;
138 ALTER TABLE t1_innodb ENGINE=MYISAM;
139 ALTER TABLE t2_myisam ENGINE=INNODB;
140 ALTER TABLE t2_innodb ENGINE=MYISAM;
143 --echo **** On Master ****
145 INSERT INTO t1_myisam VALUES(1, b'0', 257);
146 INSERT INTO t1_myisam VALUES(2, b'1', 256);
147 INSERT INTO t1_innodb VALUES(1, b'0', 257);
148 INSERT INTO t1_innodb VALUES(2, b'1', 256);
149 SELECT k, HEX(a),HEX(b) FROM t1_myisam;
150 SELECT k, HEX(a),HEX(b) FROM t1_innodb;
151 INSERT INTO t2_myisam VALUES(1, b'0', 9);
152 INSERT INTO t2_myisam VALUES(2, b'1', 8);
153 INSERT INTO t2_innodb VALUES(1, b'0', 9);
154 INSERT INTO t2_innodb VALUES(2, b'1', 8);
155 SELECT k, HEX(a),HEX(b) FROM t2_myisam;
156 SELECT k, HEX(a),HEX(b) FROM t2_innodb;
157 --echo **** On Slave ****
158 sync_slave_with_master;
159 SELECT k, HEX(a),HEX(b) FROM t1_myisam;
160 SELECT k, HEX(a),HEX(b) FROM t1_innodb;
161 SELECT k, HEX(a),HEX(b) FROM t2_myisam;
162 SELECT k, HEX(a),HEX(b) FROM t2_innodb;
164 --echo **** On Master ****
166 UPDATE t1_myisam SET a=0 WHERE k=2;
167 SELECT k, HEX(a),HEX(b) FROM t1_myisam;
168 UPDATE t1_innodb SET a=0 WHERE k=2;
169 SELECT k, HEX(a),HEX(b) FROM t1_innodb;
170 UPDATE t2_myisam SET a=0 WHERE k=2;
171 SELECT k, HEX(a),HEX(b) FROM t2_myisam;
172 UPDATE t2_innodb SET a=0 WHERE k=2;
173 SELECT k, HEX(a),HEX(b) FROM t2_innodb;
174 --echo **** On Slave ****
175 sync_slave_with_master;
176 SELECT k, HEX(a),HEX(b) FROM t1_myisam;
177 SELECT k, HEX(a),HEX(b) FROM t1_innodb;
178 SELECT k, HEX(a),HEX(b) FROM t2_myisam;
179 SELECT k, HEX(a),HEX(b) FROM t2_innodb;
181 --echo **** On Master ****
183 DROP TABLE IF EXISTS t1_myisam, t1_innodb, t2_myisam, t2_innodb;
184 sync_slave_with_master;
187 # Bug#27716 multi-update did partially and has not binlogged
193 drop table if exists t1, t2;
196 `a` int(11) NOT NULL auto_increment,
197 `b` int(11) default NULL,
199 ) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;
202 `a` int(11) NOT NULL auto_increment,
203 `b` int(11) default NULL,
205 ) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;
207 # testing multi_update::send_error() effective update
208 insert into t1 values (1,1),(2,2);
209 insert into t2 values (1,1),(4,4);
213 UPDATE t2,t1 SET t2.a=t1.a+2;
214 select * from t2 /* must be (3,1), (4,4) */;
215 sync_slave_with_master;
218 select * from t2 /* must be (3,1), (4,4) */;
223 sync_slave_with_master;
226 # BUG#31702: Missing row on slave causes assertion failure under
227 # row-based replication
230 --source include/rpl_reset.inc
232 --echo **** On Master ****
234 CREATE TABLE t1 (a INT PRIMARY KEY, b SET('master','slave'));
235 INSERT INTO t1 VALUES (1,'master,slave'), (2,'master,slave');
236 --echo **** On Slave ****
237 sync_slave_with_master;
238 UPDATE t1 SET a = 5, b = 'slave' WHERE a = 1;
239 SELECT * FROM t1 ORDER BY a;
240 # since bug#31552/31609 idempotency is not default any longer. In
241 # order for the preceeding test UPDATE t1 to pass, the mode is switched
243 set @@global.slave_exec_mode= 'IDEMPOTENT';
244 --echo **** On Master ****
246 UPDATE t1 SET a = 5, b = 'master' WHERE a = 1;
247 SELECT * FROM t1 ORDER BY a;
248 --echo **** On Slave ****
249 sync_slave_with_master;
250 set @@global.slave_exec_mode= default;
251 let $last_error = query_get_value("SHOW SLAVE STATUS", Last_SQL_Error, 1);
253 eval SELECT "$last_error" AS Last_SQL_Error;
256 SELECT * FROM t1 ORDER BY a;
258 --echo **** On Master ****
261 --source include/rpl_end.inc