mySQL 5.0.11 sources for tomato
[tomato.git] / release / src / router / mysql / mysql-test / suite / rpl / t / rpl_row_basic_11bugs.test
bloba78a6e8b8d1ac4cd3e3499dad06ab2a8f7cf8271
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 ****
17 SHOW DATABASES;
18 USE test;
19 CREATE TABLE t1 (a INT, b INT);
20 SHOW TABLES;
21 INSERT INTO t1 VALUES (1,1), (2,2);
22 USE test_ignore;
23 CREATE TABLE t2 (a INT, b INT);
24 SHOW TABLES;
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 ****
29 SHOW DATABASES;
30 USE test;
31 SHOW TABLES;
32 --error 1049
33 USE test_ignore;
35 connection master;
36 DROP DATABASE test_ignore;
37 USE test;
38 DROP TABLE t1;
39 sync_slave_with_master;
40 USE test;
43 # Bug#19995: Extreneous table maps generated for statements that does
44 # not generate rows
45 --source include/rpl_reset.inc
47 connection master;
48 CREATE TABLE t1 (a INT);
49 DELETE FROM t1;
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;
55 DROP TABLE t1;
57 # BUG#17620: Replicate (Row Based) Fails when Query Cache enabled on
58 # slave
59 --echo ================ Test for BUG#17620 ================
60 --source include/rpl_reset.inc
62 --echo **** On Slave **** 
63 connection 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 **** 
68 connection 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 **** 
77 connection master;
78 INSERT INTO t1 VALUES (4),(5),(6);
80 --echo **** On Slave **** 
81 sync_slave_with_master;
82 SELECT * FROM t1;
84 --echo **** On Master **** 
85 connection master;
86 INSERT INTO t1 VALUES (7),(8),(9);
88 --echo **** On Slave **** 
89 sync_slave_with_master;
90 SELECT * FROM t1;
92 SET GLOBAL QUERY_CACHE_SIZE=0;
93 --connection master
94 DROP TABLE t1;
97 # Bug#22550: Replication of BIT columns failing
98 --echo ================ Test for BUG#22550 ================
99 --source include/rpl_reset.inc
101 connection master;
102 CREATE TABLE t1 (a BIT(1), b INT) ENGINE=MYISAM;
103 sync_slave_with_master;
105 connection 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;
111 connection master;
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;
117 connection master;
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
128 --disable_warnings
129 --echo **** On Master **** 
130 connection 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;
141 --enable_warnings
143 --echo **** On Master **** 
144 connection 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 **** 
165 connection 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 **** 
182 connection 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
190 connection master;
192 --disable_warnings
193 drop table if exists t1, t2;
194 --enable_warnings
195 CREATE TABLE `t1` (
196   `a` int(11) NOT NULL auto_increment,
197   `b` int(11) default NULL,
198   PRIMARY KEY  (`a`)
199 ) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;
201 CREATE TABLE `t2` (
202   `a` int(11) NOT NULL auto_increment,
203   `b` int(11) default NULL,
204   PRIMARY KEY  (`a`)
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);
211 connection master;
212 error ER_DUP_ENTRY;
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;
217 connection slave;
218 select * from t2 /* must be (3,1), (4,4) */;
220 connection master;
221 drop table t1,t2;
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 ****
233 connection 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
242 # temprorarily
243 set @@global.slave_exec_mode= 'IDEMPOTENT';
244 --echo **** On Master ****
245 connection 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);
252 disable_query_log;
253 eval SELECT "$last_error" AS Last_SQL_Error;
254 enable_query_log;
256 SELECT * FROM t1 ORDER BY a;
258 --echo **** On Master ****
259 connection master;
260 DROP TABLE t1;
261 --source include/rpl_end.inc