~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to mysql-test/suite/funcs_1/triggers/triggers_03.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
#
 
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