~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to tests/suite/rpl/t/rpl_invoked_features.test

  • Committer: Monty Taylor
  • Date: 2009-02-21 03:33:30 UTC
  • mfrom: (895 drizzle)
  • mto: (896.2.1 drizzle)
  • mto: This revision was merged to the branch mainline in revision 898.
  • Revision ID: mordred@inaugust.com-20090221033330-v110f94679dej04p
MergedĀ fromĀ trunk.

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 $DRIZZLE_DUMP --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/rpl_invoked_features_master.sql
283
 
--exec $DRIZZLE_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