~linuxjedi/drizzle/trunk-bug-667053

« back to all changes in this revision

Viewing changes to mysql-test/suite/funcs_1/triggers/triggers_03e_table_level.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 cases for TRIGGER privilege on db, table and column level
 
5
#======================================================================
 
6
 
 
7
--disable_abort_on_error
 
8
 
 
9
###########################################
 
10
################ Section 3.5.3 ############
 
11
# Check for the db level of Triggers      #
 
12
###########################################
 
13
 
 
14
# General setup to be used in all testcases
 
15
let $message= #########      Testcase for table level:   ########;
 
16
--source include/show_msg.inc
 
17
 
 
18
        --disable_warnings
 
19
        drop database if exists priv_db;
 
20
        --enable_warnings
 
21
        create database priv_db;
 
22
        use priv_db;
 
23
        eval create table t1 (f1 char(20)) engine= $engine_type;
 
24
 
 
25
        create User test_yesprivs@localhost;
 
26
        set password for test_yesprivs@localhost = password('PWD');
 
27
        revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
 
28
 
 
29
        create User test_noprivs@localhost;
 
30
        set password for test_noprivs@localhost = password('PWD');
 
31
        revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost;
 
32
 
 
33
 
 
34
        --replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
 
35
        connect (yes_privs,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
 
36
 
 
37
        --replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
 
38
        connect (no_privs,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
 
39
 
 
40
################ Section 3.5.3 ############
 
41
# Check for the table level of Triggers   #
 
42
###########################################
 
43
 
 
44
# user has no trigger privilege->create trigger fail
 
45
 
 
46
let $message= no trigger privilege on table level for create:;
 
47
--source include/show_msg.inc
 
48
        connection default;
 
49
        select current_user;
 
50
        show triggers;
 
51
        grant  select, insert, update on priv_db.t1 to test_yesprivs@localhost;
 
52
        show grants for test_yesprivs@localhost;
 
53
        grant select, update, insert on priv_db.t1 to test_noprivs@localhost;
 
54
        show grants for test_noprivs@localhost;
 
55
 
 
56
        connection yes_privs;
 
57
        select current_user;
 
58
        use priv_db;
 
59
        show tables;
 
60
        --error 1142
 
61
        create trigger trg1_1 before INSERT on t1 for each row
 
62
                set new.f1 = 'trig 1_1-no';
 
63
 
 
64
# no trigger execution, as trigger does'nt exist
 
65
 
 
66
        connection no_privs;
 
67
        select current_user;
 
68
        use priv_db;
 
69
        insert into t1 (f1) values ('insert1-yes');
 
70
        select f1 from t1 order by f1;
 
71
        
 
72
        connection default;
 
73
        select current_user;
 
74
        show triggers;
 
75
        show tables;
 
76
        insert into t1 (f1) values ('insert2-yes');
 
77
        select f1 from t1 order by f1;
 
78
        grant TRIGGER on priv_db.t1 to test_yesprivs@localhost;
 
79
        show grants for test_yesprivs@localhost;
 
80
 
 
81
# user got trigger privilege->create trigger successful
 
82
 
 
83
let $message= trigger privilege on table level for create:;
 
84
--source include/show_msg.inc
 
85
        connection yes_privs;
 
86
        select current_user;
 
87
        show triggers;
 
88
        create trigger trg1_2 before INSERT  on t1 for each row
 
89
                set new.f1 = 'trig 1_2-yes';
 
90
 
 
91
# insert now executes the trigger
 
92
 
 
93
        connection no_privs;
 
94
        select current_user;
 
95
        insert into t1 (f1) values ('insert3-no');
 
96
        select f1 from t1 order by f1;
 
97
 
 
98
        connection default;
 
99
        select current_user;
 
100
        insert into t1 (f1) values ('insert4-no');
 
101
        select f1 from t1 order by f1;
 
102
        revoke TRIGGER on priv_db.t1 from test_yesprivs@localhost;
 
103
        show grants for test_yesprivs@localhost;
 
104
 
 
105
# revoke triggerprivilege->drop trigger fail
 
106
 
 
107
let $message= no trigger privilege on table level for drop:;
 
108
--source include/show_msg.inc
 
109
        connection yes_privs;
 
110
        select current_user;
 
111
 
 
112
        --error 1142 
 
113
        drop trigger trg1_2;
 
114
 
 
115
# no trigger priv at activation time->insert fails
 
116
 
 
117
let $message= no trigger privilege at activation time:;
 
118
--source include/show_msg.inc
 
119
        connection no_privs;
 
120
        select current_user;
 
121
        --error 1142
 
122
        insert into t1 (f1) values ('insert5-no');
 
123
        select f1 from t1 order by f1;
 
124
 
 
125
        connection default;
 
126
        select current_user;
 
127
        grant TRIGGER on priv_db.t1 to test_yesprivs@localhost;
 
128
 
 
129
# trigger privilege at activation time->insert with trigger successful
 
130
 
 
131
let $message= trigger privilege at activation time:;
 
132
--source include/show_msg.inc
 
133
        connection no_privs;
 
134
        select current_user;
 
135
        insert into t1 (f1) values ('insert6-no');
 
136
        select f1 from t1 order by f1;
 
137
 
 
138
# trigger privilege->drop trigger successful
 
139
let $message= trigger privilege on table level for drop:;
 
140
--source include/show_msg.inc
 
141
        connection yes_privs;
 
142
        select current_user;
 
143
        show grants for test_yesprivs@localhost;
 
144
        drop trigger trg1_2;
 
145
 
 
146
# inserts without trigger
 
147
 
 
148
        connection no_privs;
 
149
        select current_user;
 
150
        insert into t1 (f1) values ('insert7-yes');
 
151
        select f1 from t1 order by f1;
 
152
 
 
153
        connection default;
 
154
        select current_user;
 
155
        insert into t1 (f1) values ('insert8-yes');
 
156
        select f1 from t1 order by f1;
 
157
 
 
158
# trigger privilege must be keep when mixinf tables with and without 
 
159
# trigger privilege
 
160
 
 
161
let $message= switch to table without having trigger priv for it:;
 
162
--source include/show_msg.inc
 
163
        eval create table t2 (f1 char(20)) engine= $engine_type;
 
164
# Adding the minimal priv to be able to set to the db
 
165
        grant SELECT, INSERT, UPDATE on priv_db.t2 to test_yesprivs@localhost;
 
166
        show grants for test_yesprivs@localhost;
 
167
 
 
168
        grant SELECT, INSERT, UPDATE on priv_db.t2 to test_noprivs@localhost;
 
169
        show grants for test_noprivs@localhost;
 
170
 
 
171
let $message= use table with trigger privilege and without...:;
 
172
--source include/show_msg.inc
 
173
        connection yes_privs;
 
174
        select current_user;
 
175
        --error 1142
 
176
        create trigger trg2_1 before INSERT  on t2 for each row
 
177
                set new.f1 = 'trig 2_1-no';
 
178
        create trigger trg1_3 before INSERT  on t1 for each row
 
179
                set new.f1 = 'trig 1_3-yes';
 
180
        --error 1142
 
181
        create trigger trg2_2 before UPDATE  on t2 for each row
 
182
                set new.f1 = 'trig 2_2-no';
 
183
        create trigger trg1_4 before UPDATE  on t1 for each row
 
184
                set new.f1 = 'trig 1_4-yes';
 
185
        show triggers;
 
186
        connection no_privs;
 
187
        select current_user;
 
188
        insert into t2 (f1) values ('insert9-yes');
 
189
        select f1 from t2 order by f1;
 
190
        insert into t1 (f1) values ('insert10-no');
 
191
        select f1 from t1 order by f1;
 
192
        disconnect no_privs;
 
193
 
 
194
        connection yes_privs;
 
195
        select current_user;
 
196
        --error 1360
 
197
        drop trigger trg2_1;
 
198
        drop trigger trg1_3;
 
199
        --error 1360
 
200
        drop trigger trg2_2;
 
201
        drop trigger trg1_4;
 
202
 
 
203
 
 
204
# Cleanup table level
 
205
        --disable_warnings
 
206
        disconnect yes_privs;
 
207
 
 
208
        connection default;
 
209
        select current_user;
 
210
        --enable_warnings
 
211
 
 
212
 
 
213
# general Cleanup 
 
214
        --disable_warnings
 
215
        drop database if exists priv_db;
 
216
        drop user test_yesprivs@localhost;
 
217
        drop user test_noprivs@localhost;
 
218
        --enable_warnings
 
219