~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to mysql-test/suite/rpl/include/rpl_mixed_dml.inc

  • 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
#########################################
 
2
# Author: Serge Kozlov skozlov@mysql.com
 
3
# Date: 07/10/2006
 
4
# Purpose: testing the replication in mixed mode
 
5
# Requirements: define binlog format for mysqld as in example below:
 
6
# ./mysql-test-run.pl --mysqld=--binlog-format=mixed
 
7
#########################################
 
8
 
 
9
--source include/master-slave.inc
 
10
 
 
11
# Check MIXED on both master and slave
 
12
connection master;
 
13
--echo ==========MASTER==========
 
14
--source suite/rpl/include/rpl_mixed_show_binlog_format.inc
 
15
connection slave;
 
16
--echo ==========SLAVE===========
 
17
--source suite/rpl/include/rpl_mixed_show_binlog_format.inc
 
18
connection master;
 
19
 
 
20
 
 
21
CREATE DATABASE test_rpl;
 
22
 
 
23
--echo
 
24
--echo ******************** PREPARE TESTING ********************
 
25
USE test_rpl;
 
26
eval CREATE TABLE t1 (a int auto_increment not null, b char(254), PRIMARY KEY(a)) ENGINE=$engine_type;
 
27
eval CREATE TABLE t2 (a int auto_increment not null, b char(254), PRIMARY KEY(a)) ENGINE=$engine_type;
 
28
 
 
29
# DELETE 
 
30
INSERT INTO t1 VALUES(1, 't1, text 1');
 
31
INSERT INTO t1 VALUES(2, 't1, text 2');
 
32
INSERT INTO t2 VALUES(1, 't2, text 1');
 
33
--echo
 
34
--echo ******************** DELETE ********************
 
35
DELETE FROM t1 WHERE a = 1;
 
36
DELETE FROM t2 WHERE b <> UUID();
 
37
--source suite/rpl/include/rpl_mixed_check_select.inc
 
38
--source suite/rpl/include/rpl_mixed_clear_tables.inc
 
39
 
 
40
# INSERT
 
41
--echo
 
42
--echo ******************** INSERT ********************
 
43
INSERT INTO t1 VALUES(1, 't1, text 1');
 
44
INSERT INTO t1 VALUES(2, UUID());
 
45
INSERT INTO t2 SELECT * FROM t1;
 
46
INSERT INTO t2 VALUES (1, 't1, text 1') ON DUPLICATE KEY UPDATE b = 't2, text 1';
 
47
DELETE FROM t1 WHERE a = 2;
 
48
DELETE FROM t2 WHERE a = 2;
 
49
--source suite/rpl/include/rpl_mixed_check_select.inc
 
50
--source suite/rpl/include/rpl_mixed_clear_tables.inc
 
51
 
 
52
--echo
 
53
--echo ******************** LOAD DATA INFILE ********************
 
54
--copy_file ./suite/rpl/data/rpl_mixed.dat $MYSQLTEST_VARDIR/tmp/rpl_mixed.dat
 
55
LOAD DATA INFILE '../tmp/rpl_mixed.dat' INTO TABLE t1 FIELDS TERMINATED BY '|' ;
 
56
--remove_file $MYSQLTEST_VARDIR/tmp/rpl_mixed.dat
 
57
SELECT * FROM t1 ORDER BY a;
 
58
--source suite/rpl/include/rpl_mixed_check_select.inc
 
59
--source suite/rpl/include/rpl_mixed_clear_tables.inc
 
60
 
 
61
# REPLACE
 
62
--echo
 
63
--echo ******************** REPLACE ********************
 
64
INSERT INTO t1 VALUES(1, 't1, text 1');
 
65
INSERT INTO t1 VALUES(2, 't1, text 2');
 
66
INSERT INTO t1 VALUES(3, 't1, text 3');
 
67
REPLACE INTO t1 VALUES(1, 't1, text 11');
 
68
REPLACE INTO t1 VALUES(2, UUID());
 
69
REPLACE INTO t1 SET a=3, b='t1, text 33';
 
70
DELETE FROM t1 WHERE a = 2;
 
71
--source suite/rpl/include/rpl_mixed_check_select.inc
 
72
--source suite/rpl/include/rpl_mixed_clear_tables.inc
 
73
 
 
74
# SELECT
 
75
--echo
 
76
--echo ******************** SELECT ********************
 
77
INSERT INTO t1 VALUES(1, 't1, text 1');
 
78
SELECT * FROM t1 WHERE b <> UUID() ORDER BY a;
 
79
--source suite/rpl/include/rpl_mixed_clear_tables.inc
 
80
 
 
81
# JOIN
 
82
--echo
 
83
--echo ******************** JOIN ********************
 
84
INSERT INTO t1 VALUES(1, 'CCC');
 
85
INSERT INTO t1 VALUES(2, 'DDD');
 
86
INSERT INTO t2 VALUES(1, 'DDD');
 
87
INSERT INTO t2 VALUES(2, 'CCC');
 
88
SELECT * FROM t1 LEFT JOIN  t2 ON t1.a = t2.a ORDER BY t1.a,t2.a;
 
89
SELECT * FROM t1 INNER JOIN  t2 ON t1.b = t2.b ORDER BY t1.a,t2.a;
 
90
--source suite/rpl/include/rpl_mixed_clear_tables.inc
 
91
 
 
92
# UNION
 
93
--echo
 
94
--echo ******************** UNION ********************
 
95
INSERT INTO t1 VALUES(1, 't1, text 1');
 
96
INSERT INTO t2 VALUES(1, 't2, text 1');
 
97
SELECT * FROM t1 UNION SELECT * FROM t2 WHERE t2.b <> UUID();
 
98
--source suite/rpl/include/rpl_mixed_clear_tables.inc
 
99
 
 
100
# TRUNCATE 
 
101
--echo
 
102
--echo ******************** TRUNCATE ********************
 
103
INSERT INTO t1 VALUES(1, 't1, text 1');
 
104
--source suite/rpl/include/rpl_mixed_check_select.inc
 
105
TRUNCATE t1;
 
106
--source suite/rpl/include/rpl_mixed_check_select.inc
 
107
--source suite/rpl/include/rpl_mixed_clear_tables.inc
 
108
 
 
109
# UPDATE 
 
110
--echo
 
111
--echo ******************** UPDATE ********************
 
112
INSERT INTO t1 VALUES(1, 't1, text 1');
 
113
INSERT INTO t2 VALUES(1, 't2, text 1');
 
114
UPDATE t1 SET b = 't1, text 1 updated' WHERE a = 1;
 
115
--source suite/rpl/include/rpl_mixed_check_select.inc
 
116
UPDATE t1, t2 SET t1.b = 'test', t2.b = 'test';
 
117
--source suite/rpl/include/rpl_mixed_check_select.inc
 
118
--source suite/rpl/include/rpl_mixed_clear_tables.inc
 
119
 
 
120
# DESCRIBE
 
121
--echo
 
122
--echo ******************** DESCRIBE ********************
 
123
DESCRIBE t1;
 
124
DESCRIBE t2 b;
 
125
 
 
126
# USE
 
127
--echo
 
128
--echo ******************** USE ********************
 
129
USE test_rpl;
 
130
 
 
131
# TRANSACTION 
 
132
--echo
 
133
--echo ******************** TRANSACTION ********************
 
134
START TRANSACTION;
 
135
INSERT INTO t1 VALUES (1, 'start');
 
136
COMMIT;
 
137
--source suite/rpl/include/rpl_mixed_check_select.inc
 
138
START TRANSACTION;
 
139
INSERT INTO t1 VALUES (2, 'rollback');
 
140
ROLLBACK;
 
141
--source suite/rpl/include/rpl_mixed_check_select.inc
 
142
START TRANSACTION;
 
143
INSERT INTO t1 VALUES (3, 'before savepoint s1');
 
144
SAVEPOINT s1;
 
145
INSERT INTO t1 VALUES (4, 'after savepoint s1');
 
146
ROLLBACK TO SAVEPOINT s1;
 
147
--source suite/rpl/include/rpl_mixed_check_select.inc
 
148
START TRANSACTION;
 
149
INSERT INTO t1 VALUES (5, 'before savepoint s2');
 
150
SAVEPOINT s2;
 
151
INSERT INTO t1 VALUES (6, 'after savepoint s2');
 
152
INSERT INTO t1 VALUES (7, CONCAT('with UUID() ',UUID()));
 
153
RELEASE SAVEPOINT s2;
 
154
COMMIT;
 
155
DELETE FROM t1 WHERE a = 7;
 
156
--source suite/rpl/include/rpl_mixed_check_select.inc
 
157
--source suite/rpl/include/rpl_mixed_clear_tables.inc
 
158
 
 
159
# LOCK TABLES
 
160
--echo
 
161
--echo ******************** LOCK TABLES ********************
 
162
LOCK TABLES t1 READ , t2 READ;
 
163
UNLOCK TABLES;
 
164
 
 
165
# TRANSACTION ISOLATION LEVEL
 
166
--echo
 
167
--echo ******************** TRANSACTION ISOLATION LEVEL ********************
 
168
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
 
169
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
 
170
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; 
 
171
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
 
172
 
 
173
# XA
 
174
# skipped
 
175
 
 
176
# CREATE USER
 
177
--echo
 
178
--echo ******************** CREATE USER ********************
 
179
CREATE USER 'user_test_rpl'@'localhost' IDENTIFIED BY PASSWORD '*1111111111111111111111111111111111111111';
 
180
--source suite/rpl/include/rpl_mixed_check_user.inc
 
181
 
 
182
# GRANT 
 
183
--echo
 
184
--echo ******************** GRANT ********************
 
185
GRANT SELECT ON *.* TO 'user_test_rpl'@'localhost';
 
186
--source suite/rpl/include/rpl_mixed_check_user.inc
 
187
 
 
188
# REVOKE
 
189
--echo
 
190
--echo ******************** REVOKE ********************
 
191
REVOKE SELECT ON *.* FROM 'user_test_rpl'@'localhost';
 
192
--source suite/rpl/include/rpl_mixed_check_user.inc
 
193
 
 
194
# SET PASSWORD
 
195
--echo
 
196
--echo ******************** SET PASSWORD ********************
 
197
SET PASSWORD FOR 'user_test_rpl'@'localhost' = '*0000000000000000000000000000000000000000';
 
198
--source suite/rpl/include/rpl_mixed_check_user.inc
 
199
 
 
200
# RENAME USER
 
201
--echo
 
202
--echo ******************** RENAME USER ********************
 
203
RENAME USER 'user_test_rpl'@'localhost' TO 'user_test_rpl_2'@'localhost';
 
204
--source suite/rpl/include/rpl_mixed_check_user.inc
 
205
 
 
206
# DROP USER
 
207
--echo
 
208
--echo ******************** DROP USER ********************
 
209
DROP USER 'user_test_rpl_2'@'localhost';
 
210
--source suite/rpl/include/rpl_mixed_check_user.inc
 
211
 
 
212
# Prepring for some following operations
 
213
INSERT INTO t1 VALUES(100, 'test');
 
214
 
 
215
# ANALYZE
 
216
--echo
 
217
--echo ******************** ANALYZE ********************
 
218
ANALYZE TABLE t1;
 
219
 
 
220
# BACKUP TABLE
 
221
# skipped because deprecated
 
222
 
 
223
# CHECK TABLE
 
224
--echo
 
225
--echo ******************** CHECK TABLE ********************
 
226
CHECK TABLE t1;
 
227
 
 
228
# CHECKSUM TABLE
 
229
--echo
 
230
--echo ******************** CHECKSUM TABLE ********************
 
231
CHECKSUM TABLE t1;
 
232
 
 
233
# OPTIMIZE TABLE
 
234
--echo
 
235
--echo ******************** OPTIMIZE TABLE ********************
 
236
OPTIMIZE TABLE t1;
 
237
 
 
238
# REPAIR TABLE
 
239
--echo
 
240
--echo ******************** REPAIR TABLE ********************
 
241
REPAIR TABLE t1;
 
242
 
 
243
# SET VARIABLE
 
244
--echo
 
245
--echo ******************** SET VARIABLE ********************
 
246
SET @test_rpl_var = 1;
 
247
SHOW VARIABLES LIKE 'test_rpl_var';
 
248
 
 
249
# SHOW
 
250
--echo
 
251
--echo ******************** SHOW ********************
 
252
--source suite/rpl/include/rpl_mixed_check_db.inc
 
253
 
 
254
 
 
255
# PROCEDURE
 
256
--echo
 
257
--echo ******************** PROCEDURE ********************
 
258
DELIMITER |;
 
259
CREATE PROCEDURE p1 ()
 
260
BEGIN
 
261
  UPDATE t1 SET b = 'test' WHERE a = 201;
 
262
END|
 
263
CREATE PROCEDURE p2 ()
 
264
BEGIN
 
265
  UPDATE t1 SET b = UUID() WHERE a = 202;
 
266
END|
 
267
DELIMITER ;|
 
268
INSERT  INTO t1 VALUES(201, 'test 201');
 
269
CALL p1();
 
270
INSERT  INTO t1 VALUES(202, 'test 202');
 
271
CALL p2();
 
272
DELETE FROM t1 WHERE a = 202;
 
273
--source suite/rpl/include/rpl_mixed_check_select.inc
 
274
ALTER PROCEDURE p1 COMMENT 'p1';
 
275
DROP PROCEDURE p1;
 
276
DROP PROCEDURE p2;
 
277
--source suite/rpl/include/rpl_mixed_clear_tables.inc
 
278
 
 
279
# TRIGGER
 
280
--echo
 
281
--echo ******************** TRIGGER ********************
 
282
DELIMITER |;
 
283
CREATE TRIGGER tr1 BEFORE INSERT ON t1
 
284
FOR EACH ROW BEGIN
 
285
  INSERT INTO t2 SET a = NEW.a, b = NEW.b;
 
286
END|
 
287
DELIMITER ;|
 
288
INSERT INTO t1 VALUES (1, 'test');
 
289
--source suite/rpl/include/rpl_mixed_check_select.inc
 
290
--source suite/rpl/include/rpl_mixed_clear_tables.inc
 
291
DROP TRIGGER tr1;
 
292
 
 
293
# EVENTS
 
294
--echo
 
295
--echo
 
296
--echo ******************** EVENTS ********************
 
297
GRANT EVENT ON *.* TO 'root'@'localhost';
 
298
INSERT INTO t1 VALUES(1, 'test1');
 
299
CREATE EVENT e1 ON SCHEDULE EVERY '1' SECOND COMMENT 'e_second_comment' DO DELETE FROM t1;
 
300
--source suite/rpl/include/rpl_mixed_check_event.inc
 
301
--source suite/rpl/include/rpl_mixed_check_select.inc
 
302
--sleep 2
 
303
--source suite/rpl/include/rpl_mixed_check_select.inc
 
304
ALTER EVENT e1 RENAME TO e2;
 
305
--sleep 2
 
306
--source suite/rpl/include/rpl_mixed_check_event.inc
 
307
--source suite/rpl/include/rpl_mixed_check_select.inc
 
308
DROP EVENT e2;
 
309
--source suite/rpl/include/rpl_mixed_check_event.inc
 
310
--source suite/rpl/include/rpl_mixed_clear_tables.inc
 
311
 
 
312
# VIEWS
 
313
--echo
 
314
--echo ******************** VIEWS ********************
 
315
INSERT INTO t1 VALUES(1, 'test1');
 
316
INSERT INTO t1 VALUES(2, 'test2');
 
317
CREATE VIEW v1 AS SELECT * FROM t1 WHERE a = 1;
 
318
CREATE VIEW v2 AS SELECT * FROM t1 WHERE b <> UUID();
 
319
--source suite/rpl/include/rpl_mixed_check_view.inc
 
320
ALTER VIEW v1 AS SELECT * FROM t1 WHERE a = 2;
 
321
--source suite/rpl/include/rpl_mixed_check_view.inc
 
322
DROP VIEW v1;
 
323
DROP VIEW v2;
 
324
--source suite/rpl/include/rpl_mixed_clear_tables.inc
 
325
 
 
326
# BINLOG EVENTS
 
327
--echo
 
328
--echo
 
329
--echo ******************** SHOW BINLOG EVENTS ********************
 
330
--replace_column 2 # 5 #
 
331
--replace_regex /Server ver: .+/Server ver: #/ /table_id: [0-9]+/table_id: #/ /COMMIT.+xid=[0-9]+.+/#/ /file_id=[0-9]+/file_id=#/ /block_len=[0-9]+/block_len=#/
 
332
show binlog events from 1;
 
333
sync_slave_with_master;
 
334
# as we're using UUID we don't SELECT but use "diff" like in rpl_row_UUID
 
335
--exec $MYSQL_DUMP --compact --order-by-primary --skip-extended-insert --no-create-info test_rpl > $MYSQLTEST_VARDIR/tmp/rpl_switch_stm_row_mixed_master.sql
 
336
--exec $MYSQL_DUMP_SLAVE --compact --order-by-primary --skip-extended-insert --no-create-info test_rpl > $MYSQLTEST_VARDIR/tmp/rpl_switch_stm_row_mixed_slave.sql
 
337
 
 
338
connection master;
 
339
drop database test_rpl;
 
340
sync_slave_with_master;
 
341
 
 
342
# Let's compare. Note: If they match test will pass, if they do not match
 
343
# the test will show that the diff statement failed and not reject file
 
344
# will be created. You will need to go to the mysql-test dir and diff
 
345
# the files your self to see what is not matching
 
346
 
 
347
--exec diff $MYSQLTEST_VARDIR/tmp/rpl_switch_stm_row_mixed_master.sql $MYSQLTEST_VARDIR/tmp/rpl_switch_stm_row_mixed_slave.sql