~drizzle-trunk/drizzle/development

1 by brian
clean slate
1
#======================================================================
2
#
3
# Trigger Tests
4
# (test case numbering refer to requirement document TP v1.1)
5
#======================================================================
6
# WL#4084: enable disabled parts. 2007-11-15, hhunger
7
8
--disable_abort_on_error
9
10
###########################################
11
################ Section 3.5.3 ############
12
# Check for the global nature of Triggers #
13
###########################################
14
15
# General setup to be used in all testcases of 3.5.3
16
let $message= Testcase 3.5.3:;
17
--source include/show_msg.inc
18
19
        --disable_warnings
20
	drop database if exists priv_db;
21
	--enable_warnings
22
	create database priv_db;
23
	use priv_db;
24
	eval create table t1 (f1 char(20)) engine= $engine_type;
25
26
	create User test_noprivs@localhost;
27
	set password for test_noprivs@localhost = password('PWD');
28
29
	create User test_yesprivs@localhost;
30
	set password for test_yesprivs@localhost = password('PWD');
31
32
#Section 3.5.3.1 / 3.5.3.2
33
# Test case: Ensure TRIGGER privilege is required to create a trigger
34
#Section 3.5.3.3 / 3.5.3.4
35
# Test case: Ensure that root always has the TRIGGER privilege.
36
# OMR - No need to test this since SUPER priv is an existing one and not related
37
#       or added for triggers (TP 2005-06-06)
38
#Section 3.5.3.5 / 3.5.3.6
39
# Test case: Ensure that the TRIGGER privilege is required to drop a trigger.
40
let $message= Testcase 3.5.3.2/6:;
41
--source include/show_msg.inc
42
43
	revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost;
44
	grant ALL  on *.* to test_noprivs@localhost;
45
	revoke TRIGGER on *.* from test_noprivs@localhost;
46
	show grants for test_noprivs@localhost;
47
48
	revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
49
	grant TRIGGER on *.* to test_yesprivs@localhost;
50
# Adding the minimal priv to be able to set to the db
51
	grant SELECT on priv_db.t1 to test_yesprivs@localhost;
52
	show grants for test_yesprivs@localhost;
53
54
	--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
55
	connect (no_privs,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
56
	--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
57
	connect (yes_privs,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
58
	connection default;
59
60
let $message= Testcase 3.5.3.2:;
61
--source include/show_msg.inc
62
63
	connection no_privs;
64
        select current_user;
65
	use priv_db;
66
67
# error 1227 is better, as it says, that not the privilege
68
	--error 1142,1227
69
	create trigger trg1_1 before INSERT on t1 for each row
70
		set new.f1 = 'trig 3.5.3.2_1-no';
71
72
	connection default;
73
	use priv_db;
74
	insert into t1 (f1) values ('insert 3.5.3.2-no');
75
	select f1 from t1 order by f1;
76
77
	connection yes_privs;
78
        select current_user;
79
	use priv_db;
80
81
	create trigger trg1_2 before INSERT  on t1 for each row
82
		set new.f1 = 'trig 3.5.3.2_2-yes';
83
84
	connection default;
85
        select current_user;
86
	use priv_db;
87
88
        --error 1143
89
	insert into t1 (f1) values ('insert 3.5.3.2-yes');
90
	select f1 from t1 order by f1;
91
92
        grant UPDATE on priv_db.t1 to test_yesprivs@localhost;
93
        insert into t1 (f1) values ('insert 3.5.3.2-yes');
94
        select f1 from t1 order by f1;
95
96
let $message= Testcase 3.5.3.6:;
97
--source include/show_msg.inc
98
99
	connection no_privs;
100
	use priv_db;
101
102
	--error 1142,1227
103
	drop trigger trg1_2;
104
105
	connection default;
106
	use priv_db;
107
	insert into t1 (f1) values ('insert 3.5.3.6-yes');
108
	select f1 from t1 order by f1;
109
110
	connection yes_privs;
111
	use priv_db;
112
113
	drop trigger trg1_2;
114
115
	connection default;
116
	use priv_db;
117
	insert into t1 (f1) values ('insert 3.5.3.6-no');
118
	select f1 from t1 order by f1;
119
120
# Cleanup
121
	--disable_warnings
122
	connection default;
123
	--error 0, 1360
124
	drop trigger trg1_2;
125
	disconnect no_privs;
126
	disconnect yes_privs;
127
	--enable_warnings
128
129
130
#Section 3.5.3.7
131
# Test case: Ensure that use of the construct "SET NEW. <column name> = <value>"
132
#            fails at CREATE TRIGGER time, if the current user does not have the
133
#            UPDATE privilege on the column specified
134
# Note: As a result of bug 8884 the triggers are actually created.
135
#       Disabled because of bug 8884
136
137
# --- 3.5.3.7a - Privs set on a global level
138
let $message=Testcase 3.5.3.7a:;
139
--source include/show_msg.inc
140
141
	revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost;
142
	grant ALL  on *.* to test_noprivs@localhost;
143
	revoke UPDATE  on *.* from test_noprivs@localhost;
144
	show grants for test_noprivs@localhost;
145
146
	revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
147
	grant TRIGGER, UPDATE on *.* to test_yesprivs@localhost;
148
	show grants for test_yesprivs@localhost;
149
150
	--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
151
	connect (no_privs_424a,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
152
	--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
153
	connect (yes_privs_424a,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
154
155
	connection no_privs_424a;
156
	select current_user;
157
	use priv_db;
158
	show grants;
159
	select f1 from t1 order by f1;
160
161
	create trigger trg4a_1 before INSERT on t1 for each row
162
		set new.f1 = 'trig 3.5.3.7-1a';
163
164
	connection default;
165
	--error ER_COLUMNACCESS_DENIED_ERROR
166
	insert into t1 (f1) values ('insert 3.5.3.7-1a');
167
	select f1 from t1 order by f1;
168
	drop trigger trg4a_1;
169
170
	connection yes_privs_424a;
171
	use priv_db;
172
	select current_user;
173
	show grants;
174
	create trigger trg4a_2 before INSERT  on t1 for each row
175
		set new.f1 = 'trig 3.5.3.7-2a';
176
177
	connection default;
178
179
	insert into t1 (f1) values ('insert 3.5.3.7-2b');
180
	select f1 from t1 order by f1;
181
182
# Cleanup
183
	--disable_warnings
184
	drop trigger trg4a_2;
185
	disconnect no_privs_424a;
186
	disconnect yes_privs_424a;
187
	--enable_warnings
188
189
# --- 3.5.3.7b - Privs set on a database level
190
let $message= Testcase 3.5.3.7b:;
191
--source include/show_msg.inc
192
193
	revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost;
194
	grant TRIGGER on *.* to test_noprivs;
195
	grant ALL  on priv_db.* to test_noprivs@localhost;
196
	revoke UPDATE  on priv_db.* from test_noprivs@localhost;
197
	show grants for test_noprivs;
198
199
	revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
200
	grant TRIGGER on *.* to test_yesprivs@localhost;
201
	grant UPDATE on priv_db.* to test_yesprivs@localhost;
202
	show grants for test_yesprivs@localhost;
203
204
	--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
205
	connect (no_privs_424b,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
206
	--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
207
	connect (yes_privs_424b,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
208
	connection default;
209
210
	connection no_privs_424b;
211
	show grants;
212
	use priv_db;
213
214
	create trigger trg4b_1 before UPDATE on t1 for each row
215
		set new.f1 = 'trig 3.5.3.7-1b';
216
217
	connection default;
218
	insert into t1 (f1) values ('insert 3.5.3.7-1b');
219
	select f1 from t1 order by f1;
220
	update t1 set  f1 = 'update 3.5.3.7-1b' where f1 = 'insert 3.5.3.7-1b';
221
	select f1 from t1 order by f1;
222
	drop trigger trg4b_1;
223
224
	connection yes_privs_424b;
225
	show grants;
226
	use priv_db;
227
	create trigger trg4b_2 before UPDATE  on t1 for each row
228
		set new.f1 = 'trig 3.5.3.7-2b';
229
230
	connection default;
231
232
	insert into t1 (f1) values ('insert 3.5.3.7-2b');
233
	select f1 from t1 order by f1;
234
	update t1 set  f1 = 'update 3.5.3.7-2b' where f1 = 'insert 3.5.3.7-2b';
235
	select f1 from t1 order by f1;
236
# Cleanup
237
	--disable_warnings
238
	drop trigger trg4b_2;
239
	disconnect no_privs_424b;
240
	disconnect yes_privs_424b;
241
	--enable_warnings
242
243
# --- 3.5.3.7c - Privs set on a table level
244
let $message= Testcase 3.5.3.7c;
245
--source include/show_msg.inc
246
247
	revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost;
248
	grant TRIGGER on *.* to test_noprivs@localhost;
249
	grant ALL  on priv_db.t1 to test_noprivs@localhost;
250
	revoke UPDATE  on priv_db.t1 from test_noprivs@localhost;
251
	show grants for test_noprivs;
252
253
	revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
254
	grant TRIGGER on *.* to test_yesprivs@localhost;
255
	grant UPDATE on priv_db.t1 to test_yesprivs@localhost;
256
	show grants for test_yesprivs@localhost;
257
258
	--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
259
	connect (no_privs_424c,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
260
	--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
261
	connect (yes_privs_424c,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
262
	connection default;
263
264
	connection no_privs_424c;
265
	show grants;
266
	use priv_db;
267
268
	create trigger trg4c_1 before INSERT on t1 for each row
269
		set new.f1 = 'trig 3.5.3.7-1c';
270
271
	connection default;
272
	insert into t1 (f1) values ('insert 3.5.3.7-1c');
273
	select f1 from t1 order by f1;
274
	drop trigger trg4c_1;
275
276
	connection yes_privs_424c;
277
	show grants;
278
	use priv_db;
279
	create trigger trg4c_2 before INSERT  on t1 for each row
280
		set new.f1 = 'trig 3.5.3.7-2c';
281
282
	connection default;
283
284
	insert into t1 (f1) values ('insert 3.5.3.7-2c');
285
	select f1 from t1 order by f1;
286
287
# Cleanup
288
	--disable_warnings
289
	drop trigger trg4c_2;
290
	disconnect no_privs_424c;
291
	disconnect yes_privs_424c;
292
	--enable_warnings
293
294
# --- 3.5.3.7d - Privs set on a column level
295
--disable_query_log
296
let $message= Testcase 3.5.3.7d:;
297
--enable_query_log
298
--source include/show_msg.inc
299
300
	revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost;
301
	grant TRIGGER on *.* to test_noprivs@localhost;
302
# There is no ALL privs on the column level
303
	grant SELECT (f1), INSERT (f1) on priv_db.t1 to test_noprivs@localhost;
304
	show grants for test_noprivs;
305
306
	revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
307
	grant TRIGGER on *.* to test_yesprivs@localhost;
308
	grant UPDATE (f1) on priv_db.t1 to test_yesprivs@localhost;
309
	show grants for test_noprivs;
310
311
	--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
312
	connect (no_privs_424d,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
313
	--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
314
	connect (yes_privs_424d,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
315
	connection default;
316
317
	connection no_privs_424d;
318
	show grants;
319
	use priv_db;
320
	create trigger trg4d_1 before INSERT on t1 for each row
321
		set new.f1 = 'trig 3.5.3.7-1d';
322
323
	connection default;
324
	insert into t1 (f1) values ('insert 3.5.3.7-1d');
325
	select f1 from t1 order by f1;
326
	drop trigger trg4d_1;
327
328
	connection yes_privs_424d;
329
	show grants;
330
	use priv_db;
331
	create trigger trg4d_2 before INSERT  on t1 for each row
332
		set new.f1 = 'trig 3.5.3.7-2d';
333
334
	connection default;
335
336
	insert into t1 (f1) values ('insert 3.5.3.7-2d');
337
	select f1 from t1 order by f1;
338
339
# Cleanup
340
	--disable_warnings
341
	drop trigger trg4d_2;
342
	disconnect no_privs_424d;
343
	disconnect yes_privs_424d;
344
	--enable_warnings
345
346
#Section 3.5.3.8
347
# Test case: Ensure that use of the construct "SET <target> = NEW. <Column name>" fails
348
#            at CREATE TRIGGER time, if the current user does not have the SELECT privilege
349
#            on the column specified.
350
351
# --- 3.5.3.8a - Privs set on a global level
352
let $message= Testcase 3.5.3.8a:;
353
--source include/show_msg.inc
354
355
	revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost;
356
	grant ALL  on *.* to test_noprivs@localhost;
357
	revoke SELECT  on *.* from test_noprivs@localhost;
358
	show grants for test_noprivs@localhost;
359
360
	revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
361
	grant TRIGGER, SELECT on *.* to test_yesprivs@localhost;
362
	show grants for test_yesprivs@localhost;
363
364
	--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
365
	connect (no_privs_425a,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
366
	--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
367
	connect (yes_privs_425a,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
368
	connection default;
369
370
	connection no_privs_425a;
371
	select current_user;
372
	use priv_db;
373
	show grants;
374
375
	create trigger trg5a_1 before INSERT on t1 for each row
376
		set @test_var = new.f1;
377
378
	connection default;
379
        set @test_var = 'before trig 3.5.3.8-1a';
380
	select @test_var;
381
	insert into t1 (f1) values ('insert 3.5.3.8-1a');
382
	select @test_var;
383
	drop trigger trg5a_1;
384
385
	connection yes_privs_425a;
386
	use priv_db;
387
	select current_user;
388
	show grants;
389
	create trigger trg5a_2 before INSERT  on t1 for each row
390
		set @test_var= new.f1;
391
392
	connection default;
393
        set @test_var= 'before trig 3.5.3.8-2a';
394
	select @test_var;
395
396
	insert into t1 (f1) values ('insert 3.5.3.8-2a');
397
	select @test_var;
398
399
# Cleanup
400
	--disable_warnings
401
	drop trigger trg5a_2;
402
	disconnect no_privs_425a;
403
	disconnect yes_privs_425a;
404
	--enable_warnings
405
406
# --- 3.5.3.8b - Privs set on a database level
407
let $message= Testcase: 3.5.3.8b;
408
--source include/show_msg.inc
409
410
	revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost;
411
	grant TRIGGER on *.* to test_noprivs@localhost;
412
	grant ALL  on priv_db.* to test_noprivs@localhost;
413
	revoke SELECT  on priv_db.* from test_noprivs@localhost;
414
	show grants for test_noprivs@localhost;
415
416
	revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
417
	grant TRIGGER on *.* to test_yesprivs@localhost;
418
	grant SELECT on priv_db.* to test_yesprivs@localhost;
419
	show grants for test_yesprivs@localhost;
420
421
	--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
422
	connect (no_privs_425b,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
423
	--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
424
	connect (yes_privs_425b,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
425
	connection default;
426
427
	connection no_privs_425b;
428
	show grants;
429
	use priv_db;
430
431
	create trigger trg5b_1 before UPDATE on t1 for each row
432
		set @test_var= new.f1;
433
434
	connection default;
435
        set @test_var= 'before trig 3.5.3.8-1b';
436
	insert into t1 (f1) values ('insert 3.5.3.8-1b');
437
	select @test_var;
438
	update t1 set  f1= 'update 3.5.3.8-1b' where f1 = 'insert 3.5.3.8-1b';
439
	select @test_var;
440
	drop trigger trg5b_1;
441
442
	connection yes_privs_425b;
443
	show grants;
444
	use priv_db;
445
	create trigger trg5b_2 before UPDATE  on t1 for each row
446
		set @test_var= new.f1;
447
448
	connection default;
449
        set @test_var= 'before trig 3.5.3.8-2b';
450
	insert into t1 (f1) values ('insert 3.5.3.8-2b');
451
	select @test_var;
452
453
	update t1 set  f1= 'update 3.5.3.8-2b' where f1 = 'insert 3.5.3.8-2b';
454
	select @test_var;
455
# Cleanup
456
	--disable_warnings
457
	drop trigger trg5b_2;
458
	disconnect no_privs_425b;
459
	disconnect yes_privs_425b;
460
	--enable_warnings
461
462
# --- 3.5.3.8c - Privs set on a table level
463
let $message= Testcase 3.5.3.8c:;
464
--source include/show_msg.inc
465
466
	revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost;
467
	grant TRIGGER on *.* to test_noprivs@localhost;
468
	grant ALL  on priv_db.t1 to test_noprivs@localhost;
469
	revoke SELECT  on priv_db.t1 from test_noprivs@localhost;
470
	show grants for test_noprivs@localhost;
471
472
	revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
473
	grant TRIGGER on *.* to test_yesprivs@localhost;
474
	grant SELECT on priv_db.t1 to test_yesprivs@localhost;
475
	show grants for test_yesprivs@localhost;
476
477
	--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
478
	connect (no_privs_425c,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
479
	--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
480
	connect (yes_privs_425c,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
481
	connection default;
482
483
	connection no_privs_425c;
484
	show grants;
485
	use priv_db;
486
487
	create trigger trg5c_1 before INSERT on t1 for each row
488
		set @test_var= new.f1;
489
490
	connection default;
491
        set @test_var= 'before trig 3.5.3.8-1c';
492
	insert into t1 (f1) values ('insert 3.5.3.8-1c');
493
	select @test_var;
494
	drop trigger trg5c_1;
495
496
	connection yes_privs_425c;
497
	show grants;
498
	use priv_db;
499
	create trigger trg5c_2 before INSERT  on t1 for each row
500
		set @test_var= new.f1;
501
502
	connection default;
503
        set @test_var='before trig 3.5.3.8-2c';
504
505
	insert into t1 (f1) values ('insert 3.5.3.8-2c');
506
	select @test_var;
507
# Cleanup
508
	--disable_warnings
509
	drop trigger trg5c_2;
510
	disconnect no_privs_425c;
511
	disconnect yes_privs_425c;
512
	--enable_warnings
513
514
# --- 3.5.3.8d - Privs set on a column level
515
let $message=Testcase: 3.5.3.8d:;
516
--source include/show_msg.inc
517
518
	revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost;
519
	grant TRIGGER on *.* to test_noprivs@localhost;
520
# There is no ALL prov on the column level
521
	grant UPDATE (f1), INSERT (f1) on priv_db.t1 to test_noprivs@localhost;
522
	show grants for test_noprivs@localhost;
523
524
	revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
525
	grant TRIGGER on *.* to test_yesprivs@localhost;
526
	grant SELECT (f1) on priv_db.t1 to test_yesprivs@localhost;
527
	show grants for test_noprivs@localhost;
528
529
	--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
530
	connect (no_privs_425d,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
531
	--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
532
	connect (yes_privs_425d,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
533
	connection default;
534
535
	connection no_privs_425d;
536
	show grants;
537
	use priv_db;
538
	create trigger trg5d_1 before INSERT on t1 for each row
539
		set @test_var= new.f1;
540
541
	connection default;
542
        set @test_var='before trig 3.5.3.8-1d';
543
	insert into t1 (f1) values ('insert 3.5.3.8-1d');
544
	select @test_var;
545
	drop trigger trg5d_1;
546
547
	connection yes_privs_425d;
548
	show grants;
549
	use priv_db;
550
	create trigger trg5d_2 before INSERT  on t1 for each row
551
		set @test_var= new.f1;
552
553
	connection default;
554
        set @test_var='before trig 3.5.3.8-2d';
555
556
	insert into t1 (f1) values ('insert 3.5.3.8-2d');
557
	select @test_var;
558
559
# Cleanup 3.5.3.8
560
	--disable_warnings
561
	drop trigger trg5d_2;
562
	--enable_warnings
563
564
# --- 3.5.3.x   to test for trigger definer privs in the case of trigger
565
#               actions (insert/update/delete/select) performed on other
566
#               tables.
567
let $message=Testcase: 3.5.3.x:;
568
--source include/show_msg.inc
569
570
	use priv_db;
571
        --disable_warnings
572
        drop table if exists t1;
573
        drop table if exists t2;
574
        --enable_warnings
575
576
        eval create table t1 (f1 int) engine= $engine_type;
577
        eval create table t2 (f2 int) engine= $engine_type;
578
579
	revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
580
	grant TRIGGER on *.* to test_yesprivs@localhost;
581
	grant SELECT, UPDATE on priv_db.t1 to test_yesprivs@localhost;
582
	grant SELECT on priv_db.t2 to test_yesprivs@localhost;
583
	show grants for test_yesprivs@localhost;
584
585
       --replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
586
       connect (yes_353x,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
587
588
	connection yes_353x;
589
        select current_user;
590
	use priv_db;
591
592
	create trigger trg1 before insert  on t1 for each row
593
		insert into t2 values (new.f1);
594
595
	connection default;
596
	use priv_db;
597
	insert into t1 (f1) values (4);
598
	revoke SELECT on priv_db.t2 from test_yesprivs@localhost;
599
	grant INSERT on priv_db.t2 to test_yesprivs@localhost;
600
	insert into t1 (f1) values (4);
601
	select f1 from t1 order by f1;
602
	select f2 from t2 order by f2;
603
604
	connection yes_353x;
605
	use priv_db;
606
        drop trigger trg1;
607
608
	create trigger trg2 before insert  on t1 for each row
609
		update t2 set f2=new.f1-1;
610
611
	connection default;
612
	use priv_db;
613
	insert into t1 (f1) values (2);
614
	revoke INSERT on priv_db.t2 from test_yesprivs@localhost;
615
	grant UPDATE on priv_db.t2 to test_yesprivs@localhost;
616
	insert into t1 (f1) values (2);
617
	select f1 from t1 order by f1;
618
	select f2 from t2 order by f2;
619
620
	connection yes_353x;
621
	use priv_db;
622
        drop trigger trg2;
623
624
	create trigger trg3 before insert  on t1 for each row
625
		select f2 into @aaa from t2 where f2=new.f1;
626
627
	connection default;
628
	use priv_db;
629
	insert into t1 (f1) values (1);
630
	revoke UPDATE on priv_db.t2 from test_yesprivs@localhost;
631
	grant SELECT on priv_db.t2 to test_yesprivs@localhost;
632
	insert into t1 (f1) values (1);
633
	select f1 from t1 order by f1;
634
	select f2 from t2 order by f2;
635
        select @aaa;
636
637
	connection yes_353x;
638
	use priv_db;
639
        drop trigger trg3;
640
641
	create trigger trg4 before insert  on t1 for each row
642
		delete from t2;
643
644
	connection default;
645
	use priv_db;
646
	insert into t1 (f1) values (1);
647
	revoke SELECT on priv_db.t2 from test_yesprivs@localhost;
648
	grant DELETE on priv_db.t2 to test_yesprivs@localhost;
649
	insert into t1 (f1) values (1);
650
	select f1 from t1 order by f1;
651
	select f2 from t2 order by f2;
652
653
654
655
# Cleanup 3.5.3
656
	--disable_warnings
657
	drop database if exists priv_db;
658
	drop user test_yesprivs@localhost;
659
	drop user test_noprivs@localhost;
660
	drop user test_noprivs;
661
	--enable_warnings
662