~linuxjedi/drizzle/trunk-bug-667053

« back to all changes in this revision

Viewing changes to mysql-test/suite/rpl/t/rpl_invoked_features.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
#########################################
 
2
# Author:  Serge Kozlov skozlov@mysql.com
 
3
# Date:    04/25/2007
 
4
# Purpose: Testing Invocation and Invoked
 
5
#          Features for Replication.
 
6
#########################################
 
7
 
 
8
--source include/master-slave.inc
 
9
--source include/have_innodb.inc
 
10
 
 
11
# --disable_warnings/--enable_warnings added before/after query 
 
12
# if one uses UUID() function because we need to avoid warnings
 
13
# for STATEMENT binlog format
 
14
 
 
15
# Non-transactional engine
 
16
--let $engine_type= myisam
 
17
 
 
18
# Transactional engine
 
19
--let $engine_type2= innodb
 
20
 
 
21
 
 
22
#
 
23
# Clean up
 
24
#
 
25
 
 
26
USE test;
 
27
--disable_warnings
 
28
DROP VIEW IF EXISTS v1,v11;
 
29
DROP TABLE IF EXISTS t1,t2,t3,t11,t12,t13;
 
30
DROP PROCEDURE IF EXISTS p1;
 
31
DROP PROCEDURE IF EXISTS p11;
 
32
DROP FUNCTION IF EXISTS f1;
 
33
DROP FUNCTION IF EXISTS f2;
 
34
DROP EVENT IF EXISTS e1;
 
35
DROP EVENT IF EXISTS e11;
 
36
--enable_warnings
 
37
 
 
38
 
 
39
#
 
40
# Prepare objects (tables etc)
 
41
#
 
42
 
 
43
# Create tables
 
44
 
 
45
--echo
 
46
eval CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY, b INT, c VARCHAR(64)) ENGINE=$engine_type;
 
47
INSERT INTO t1 VALUES (1,1,'1');
 
48
--disable_warnings
 
49
INSERT INTO t1 VALUES (2,2,UUID());
 
50
--enable_warnings
 
51
eval CREATE TABLE t2 (a INT UNIQUE, b INT, c VARCHAR(64)) ENGINE=$engine_type;
 
52
INSERT INTO t2 VALUES (1,1,'1');
 
53
--disable_warnings
 
54
INSERT INTO t2 VALUES (2,2,UUID());
 
55
--enable_warnings
 
56
 
 
57
eval CREATE TABLE t11 (a INT NOT NULL PRIMARY KEY, b INT, c VARCHAR(64)) ENGINE=$engine_type2;
 
58
INSERT INTO t11 VALUES (1,1,'1');
 
59
--disable_warnings
 
60
INSERT INTO t11 VALUES (2,2,UUID());
 
61
--enable_warnings
 
62
eval CREATE TABLE t12 (a INT UNIQUE, b INT, c VARCHAR(64)) ENGINE=$engine_type2;
 
63
INSERT INTO t12 VALUES (1,1,'1');
 
64
--disable_warnings
 
65
INSERT INTO t12 VALUES (2,2,UUID());
 
66
--enable_warnings
 
67
 
 
68
# Create invoked features
 
69
--echo
 
70
# Create view for tables t1,t11
 
71
CREATE VIEW v1 AS SELECT * FROM t1;
 
72
CREATE VIEW v11 AS SELECT * FROM t11;
 
73
 
 
74
# Create triggers for t1,t11
 
75
DELIMITER |;
 
76
 
 
77
CREATE TRIGGER t1_tr1 BEFORE INSERT ON t1 FOR EACH ROW 
 
78
BEGIN
 
79
  INSERT INTO t2 VALUES (NEW.a, NEW.b, NEW.c);
 
80
  INSERT INTO t3 VALUES (NEW.a, NEW.b, NEW.c);
 
81
END|
 
82
 
 
83
CREATE TRIGGER t1_tr2 BEFORE UPDATE ON t1 FOR EACH ROW 
 
84
BEGIN
 
85
  UPDATE t2 SET c = '';
 
86
  UPDATE t3 SET c = '';
 
87
END|
 
88
 
 
89
CREATE TRIGGER t11_tr1 BEFORE INSERT ON t11 FOR EACH ROW 
 
90
BEGIN
 
91
  INSERT INTO t12 VALUES (NEW.a, NEW.b, NEW.c);
 
92
  INSERT INTO t13 VALUES (NEW.a, NEW.b, NEW.c);
 
93
END|
 
94
 
 
95
CREATE TRIGGER t11_tr2 BEFORE UPDATE ON t11 FOR EACH ROW 
 
96
BEGIN
 
97
  UPDATE t12 SET c = '';
 
98
  UPDATE t13 SET c = '';
 
99
END|
 
100
 
 
101
# Create events which will run every 1 sec
 
102
CREATE EVENT e1 ON SCHEDULE EVERY 1 SECOND DISABLE DO
 
103
BEGIN
 
104
  ALTER EVENT e1 DISABLE;
 
105
  CALL p1(10, '');  
 
106
END|
 
107
 
 
108
CREATE EVENT e11 ON SCHEDULE EVERY 1 SECOND DISABLE DO
 
109
BEGIN
 
110
  ALTER EVENT e11 DISABLE;
 
111
  CALL p11(10, '');  
 
112
END|
 
113
 
 
114
# Create functions and procedures used for events
 
115
CREATE FUNCTION f1 (x INT) RETURNS VARCHAR(64)
 
116
BEGIN
 
117
  IF x > 5 THEN
 
118
    RETURN UUID();
 
119
  END IF;
 
120
  RETURN '';
 
121
END|
 
122
 
 
123
CREATE FUNCTION f2 (x INT) RETURNS VARCHAR(64)
 
124
BEGIN
 
125
  RETURN f1(x);
 
126
END|
 
127
 
 
128
CREATE PROCEDURE p1 (IN x INT, IN y VARCHAR(64))
 
129
BEGIN
 
130
  INSERT IGNORE INTO t1 VALUES (x,x,y);
 
131
END|
 
132
 
 
133
CREATE PROCEDURE p11 (IN x INT, IN y VARCHAR(64))
 
134
BEGIN
 
135
  INSERT IGNORE INTO t11 VALUES (x,x,y);
 
136
END|
 
137
 
 
138
DELIMITER ;|
 
139
 
 
140
 
 
141
#
 
142
# Start test case
 
143
#
 
144
 
 
145
# Do some actions for non-transactional tables
 
146
--echo
 
147
CREATE TABLE t3 SELECT * FROM v1;
 
148
INSERT INTO t1 VALUES (3,3,'');
 
149
UPDATE t1 SET c='2' WHERE a = 1;
 
150
--disable_warnings
 
151
INSERT INTO t1 VALUES(4,4,f1(4));
 
152
--enable_warnings
 
153
INSERT INTO t1 VALUES (100,100,'');
 
154
--disable_warnings
 
155
CALL p1(5, UUID());
 
156
--enable_warnings
 
157
INSERT INTO t1 VALUES (101,101,'');
 
158
--disable_warnings
 
159
INSERT INTO t1 VALUES(6,6,f1(6));
 
160
--enable_warnings
 
161
INSERT INTO t1 VALUES (102,102,'');
 
162
--disable_warnings
 
163
INSERT INTO t1 VALUES(7,7,f2(7));
 
164
--enable_warnings
 
165
INSERT INTO t1 VALUES (103,103,'');
 
166
 
 
167
# Do some actions for transactional tables
 
168
--echo
 
169
CREATE TABLE t13 SELECT * FROM v11;
 
170
INSERT INTO t11 VALUES (3,3,'');
 
171
UPDATE t11 SET c='2' WHERE a = 1;
 
172
--disable_warnings
 
173
INSERT INTO t11 VALUES(4,4,f1(4));
 
174
--enable_warnings
 
175
INSERT INTO t11 VALUES (100,100,'');
 
176
--disable_warnings
 
177
CALL p11(5, UUID());
 
178
--enable_warnings
 
179
INSERT INTO t11 VALUES (101,101,'');
 
180
--disable_warnings
 
181
INSERT INTO t11 VALUES(6,6,f1(6));
 
182
--enable_warnings
 
183
INSERT INTO t11 VALUES (102,102,'');
 
184
--disable_warnings
 
185
INSERT INTO t11 VALUES(7,7,f2(7));
 
186
--enable_warnings
 
187
INSERT INTO t11 VALUES (103,103,'');
 
188
 
 
189
# Scheduler is on
 
190
--echo
 
191
# Temporally events fire sequentally due Bug#29020.
 
192
SET GLOBAL EVENT_SCHEDULER = on;
 
193
# Wait while events will executed
 
194
ALTER EVENT e1 ENABLE;
 
195
let $wait_condition= SELECT COUNT(*) = 1 FROM t1 WHERE t1.a = 10;
 
196
--source include/wait_condition.inc
 
197
ALTER EVENT e11 ENABLE;
 
198
let $wait_condition= SELECT COUNT(*) = 1 FROM t11 WHERE t11.a = 10;
 
199
--source include/wait_condition.inc
 
200
SET GLOBAL EVENT_SCHEDULER = off;
 
201
 
 
202
# Check original objects
 
203
--echo
 
204
--sorted_result
 
205
SHOW TABLES LIKE 't%';
 
206
--sorted_result
 
207
SELECT table_name FROM information_schema.views WHERE table_schema='test';
 
208
--sorted_result
 
209
SELECT trigger_name, event_manipulation, event_object_table FROM information_schema.triggers WHERE trigger_schema='test';
 
210
--sorted_result
 
211
SELECT routine_type, routine_name FROM information_schema.routines WHERE routine_schema='test';
 
212
--sorted_result
 
213
SELECT event_name, status FROM information_schema.events WHERE event_schema='test';
 
214
 
 
215
# Check original data
 
216
--echo
 
217
SELECT COUNT(*) FROM t1;
 
218
SELECT a,b FROM t1 ORDER BY a;
 
219
SELECT COUNT(*) FROM t2;
 
220
SELECT a,b FROM t2 ORDER BY a;
 
221
SELECT COUNT(*) FROM t3;
 
222
SELECT a,b FROM t3 ORDER BY a;
 
223
SELECT a,b FROM v1 ORDER BY a;
 
224
SELECT COUNT(*) FROM t11;
 
225
SELECT a,b FROM t11 ORDER BY a;
 
226
SELECT COUNT(*) FROM t12;
 
227
SELECT a,b FROM t12 ORDER BY a;
 
228
SELECT COUNT(*) FROM t13;
 
229
SELECT a,b FROM t13 ORDER BY a;
 
230
SELECT a,b FROM v11 ORDER BY a;
 
231
 
 
232
--sync_slave_with_master slave
 
233
 
 
234
# Check replicated objects
 
235
--echo
 
236
--sorted_result
 
237
SHOW TABLES LIKE 't%';
 
238
--sorted_result
 
239
SELECT table_name FROM information_schema.views WHERE table_schema='test';
 
240
--sorted_result
 
241
SELECT trigger_name, event_manipulation, event_object_table FROM information_schema.triggers WHERE trigger_schema='test';
 
242
--sorted_result
 
243
SELECT routine_type, routine_name FROM information_schema.routines WHERE routine_schema='test';
 
244
--sorted_result
 
245
SELECT event_name, status FROM information_schema.events WHERE event_schema='test';
 
246
 
 
247
# Check replicated data
 
248
--echo
 
249
SELECT COUNT(*) FROM t1;
 
250
SELECT a,b FROM t1 ORDER BY a;
 
251
SELECT COUNT(*) FROM t2;
 
252
SELECT a,b FROM t2 ORDER BY a;
 
253
SELECT COUNT(*) FROM t3;
 
254
SELECT a,b FROM t3 ORDER BY a;
 
255
SELECT a,b FROM v1 ORDER BY a;
 
256
SELECT COUNT(*) FROM t11;
 
257
SELECT a,b FROM t11 ORDER BY a;
 
258
SELECT COUNT(*) FROM t12;
 
259
SELECT a,b FROM t12 ORDER BY a;
 
260
SELECT COUNT(*) FROM t13;
 
261
SELECT a,b FROM t13 ORDER BY a;
 
262
SELECT a,b FROM v11 ORDER BY a;
 
263
 
 
264
# Remove UUID() before comparing and sort tables
 
265
 
 
266
--connection master
 
267
--echo
 
268
UPDATE t1 SET c='';
 
269
UPDATE t2 SET c='';
 
270
UPDATE t3 SET c='';
 
271
UPDATE t11 SET c='';
 
272
UPDATE t12 SET c='';
 
273
UPDATE t13 SET c='';
 
274
 
 
275
ALTER TABLE t3 ORDER BY a;
 
276
ALTER TABLE t13 ORDER BY a;
 
277
 
 
278
--sync_slave_with_master slave
 
279
 
 
280
# Compare a data from master and slave
 
281
--echo
 
282
--exec $MYSQL_DUMP --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/rpl_invoked_features_master.sql
 
283
--exec $MYSQL_DUMP_SLAVE --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/rpl_invoked_features_slave.sql
 
284
--diff_files $MYSQLTEST_VARDIR/tmp/rpl_invoked_features_master.sql $MYSQLTEST_VARDIR/tmp/rpl_invoked_features_slave.sql
 
285
 
 
286
 
 
287
#
 
288
# Clean up
 
289
#
 
290
 
 
291
# Remove dumps
 
292
--echo
 
293
--remove_file $MYSQLTEST_VARDIR/tmp/rpl_invoked_features_master.sql
 
294
--remove_file $MYSQLTEST_VARDIR/tmp/rpl_invoked_features_slave.sql
 
295
 
 
296
# Remove tables,views,procedures,functions
 
297
--connection master
 
298
--echo
 
299
DROP VIEW IF EXISTS v1,v11;
 
300
DROP TABLE IF EXISTS t1,t2,t3,t11,t12,t13;
 
301
DROP PROCEDURE IF EXISTS p1;
 
302
DROP PROCEDURE IF EXISTS p11;
 
303
DROP FUNCTION IF EXISTS f1;
 
304
DROP FUNCTION IF EXISTS f2;
 
305
DROP EVENT IF EXISTS e1;
 
306
DROP EVENT IF EXISTS e11;
 
307
 
 
308
--sync_slave_with_master slave
 
309
 
 
310
# End 5.1 test case