~linuxjedi/drizzle/trunk-bug-667053

« back to all changes in this revision

Viewing changes to mysql-test/suite/rpl/t/rpl_row_basic_11bugs.test

  • Committer: brian
  • Date: 2008-06-25 05:29:13 UTC
  • Revision ID: brian@localhost.localdomain-20080625052913-6upwo0jsrl4lnapl
clean slate

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
--source include/have_binlog_format_row.inc
 
2
 
 
3
let $SERVER_VERSION=`select version()`;
 
4
 
 
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
 
8
 
 
9
--source include/master-slave.inc
 
10
 
 
11
# Bug#15942 (RBR ignores --binlog_ignore_db and tries to map to table
 
12
# on slave for writes)
 
13
 
 
14
CREATE DATABASE test_ignore;      # --binlog_ignore_db=mysqltest_ignore
 
15
 
 
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;
 
34
 
 
35
connection master;
 
36
DROP DATABASE test_ignore;
 
37
sync_slave_with_master;
 
38
 
 
39
# Bug#19995: Extreneous table maps generated for statements that does
 
40
# not generate rows
 
41
--disable_query_log
 
42
--source include/master-slave-reset.inc
 
43
--enable_query_log
 
44
 
 
45
connection master;
 
46
CREATE TABLE t1 (a INT);
 
47
DELETE FROM t1;
 
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: #/
 
53
SHOW BINLOG EVENTS;
 
54
 
 
55
DROP TABLE t1;
 
56
 
 
57
# BUG#17620: Replicate (Row Based) Fails when Query Cache enabled on
 
58
# slave
 
59
--echo ================ Test for BUG#17620 ================
 
60
--disable_query_log
 
61
--source include/master-slave-reset.inc
 
62
--enable_query_log
 
63
 
 
64
--echo **** On Slave **** 
 
65
connection slave;
 
66
SET GLOBAL QUERY_CACHE_SIZE=0;
 
67
 
 
68
--echo **** On Master **** 
 
69
connection master;
 
70
CREATE TABLE t1 (a INT);
 
71
INSERT INTO t1 VALUES (1),(2),(3);
 
72
 
 
73
--echo **** On Slave **** 
 
74
sync_slave_with_master;
 
75
SET GLOBAL QUERY_CACHE_SIZE=16*1024*1024;
 
76
 
 
77
--echo **** On Master **** 
 
78
connection master;
 
79
INSERT INTO t1 VALUES (4),(5),(6);
 
80
 
 
81
--echo **** On Slave **** 
 
82
sync_slave_with_master;
 
83
SELECT * FROM t1;
 
84
 
 
85
--echo **** On Master **** 
 
86
connection master;
 
87
INSERT INTO t1 VALUES (7),(8),(9);
 
88
 
 
89
--echo **** On Slave **** 
 
90
sync_slave_with_master;
 
91
SELECT * FROM t1;
 
92
 
 
93
SET GLOBAL QUERY_CACHE_SIZE=0;
 
94
 
 
95
# Bug#22550: Replication of BIT columns failing
 
96
--echo ================ Test for BUG#22550 ================
 
97
--disable_query_log
 
98
--source include/master-slave-reset.inc
 
99
--enable_query_log
 
100
 
 
101
connection master;
 
102
CREATE TABLE t1 (a BIT(1), b INT) ENGINE=MYISAM;
 
103
sync_slave_with_master;
 
104
 
 
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;
 
110
 
 
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;
 
116
 
 
117
connection master;
 
118
DROP TABLE IF EXISTS t1;
 
119
sync_slave_with_master;
 
120
 
 
121
# BUG#22583: RBR between MyISAM and non-MyISAM tables containing a BIT
 
122
# field does not work
 
123
 
 
124
--echo ================ Test for BUG#22583 ================
 
125
--disable_query_log
 
126
--source include/master-slave-reset.inc
 
127
--enable_query_log
 
128
 
 
129
# disabling warnings temporarily for ENGINE=INNODB to work without InnoDB
 
130
--disable_warnings
 
131
--echo **** On Master **** 
 
132
connection 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;
 
143
--enable_warnings
 
144
 
 
145
--echo **** On Master **** 
 
146
connection 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;
 
165
 
 
166
--echo **** On Master **** 
 
167
connection 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;
 
182
 
 
183
--echo **** On Master **** 
 
184
connection master;
 
185
DROP TABLE IF EXISTS t1_myisam, t1_innodb, t2_myisam, t2_innodb;
 
186
sync_slave_with_master;
 
187
 
 
188
#
 
189
# Bug#27716     multi-update did partially and has not binlogged
 
190
#
 
191
 
 
192
connection master;
 
193
 
 
194
--disable_warnings
 
195
drop table if exists t1, t2;
 
196
--enable_warnings
 
197
CREATE TABLE `t1` (
 
198
  `a` int(11) NOT NULL auto_increment,
 
199
  `b` int(11) default NULL,
 
200
  PRIMARY KEY  (`a`)
 
201
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;
 
202
 
 
203
CREATE TABLE `t2` (
 
204
  `a` int(11) NOT NULL auto_increment,
 
205
  `b` int(11) default NULL,
 
206
  PRIMARY KEY  (`a`)
 
207
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;
 
208
 
 
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);
 
212
 
 
213
connection master;
 
214
error ER_DUP_ENTRY;
 
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;
 
218
 
 
219
connection slave;
 
220
select * from t2 /* must be (3,1), (4,4) */;
 
221
 
 
222
connection master;
 
223
drop table t1,t2;
 
224
 
 
225
sync_slave_with_master;
 
226
 
 
227
#
 
228
# BUG#31702: Missing row on slave causes assertion failure under
 
229
# row-based replication 
 
230
#
 
231
 
 
232
disable_query_log;
 
233
source include/master-slave-reset.inc;
 
234
enable_query_log;
 
235
 
 
236
--echo **** On Master ****
 
237
connection 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
 
247
# temprorarily
 
248
set @@global.slave_exec_mode= 'IDEMPOTENT';
 
249
--echo **** On Master ****
 
250
connection 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);
 
257
disable_query_log;
 
258
eval SELECT "$last_error" AS Last_SQL_Error;
 
259
enable_query_log;
 
260
SELECT * FROM t1 ORDER BY a;
 
261
DROP TABLE t1;
 
262
 
 
263
--echo **** On Master ****
 
264
connection master;
 
265
DROP TABLE t1;