~ubuntu-branches/ubuntu/precise/mysql-5.1/precise

« back to all changes in this revision

Viewing changes to mysql-test/suite/funcs_1/triggers/triggers_03e_db_table_mix.inc

  • Committer: Bazaar Package Importer
  • Author(s): Norbert Tretkowski
  • Date: 2010-03-17 14:56:02 UTC
  • Revision ID: james.westby@ubuntu.com-20100317145602-x7e30l1b2sb5s6w6
Tags: upstream-5.1.45
ImportĀ upstreamĀ versionĀ 5.1.45

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 mix of db and table level of Triggers       #
 
12
#########################################################
 
13
 
 
14
# General setup to be used in all testcases
 
15
let $message= ####### Testcase for mix of db and table level: #######;
 
16
--source include/show_msg.inc
 
17
 
 
18
        --disable_warnings
 
19
        drop database if exists priv1_db;
 
20
        drop database if exists priv2_db;
 
21
        --enable_warnings
 
22
        create database priv1_db;
 
23
        create database priv2_db;
 
24
        use priv1_db;
 
25
        eval create table t1 (f1 char(20)) engine= $engine_type;
 
26
        eval create table t2 (f1 char(20)) engine= $engine_type;
 
27
        use priv2_db;
 
28
        eval create table t1 (f1 char(20)) engine= $engine_type;
 
29
 
 
30
        create User test_yesprivs@localhost;
 
31
        set password for test_yesprivs@localhost = password('PWD');
 
32
        revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
 
33
        grant ALL  on priv1_db.* to test_yesprivs@localhost;
 
34
        grant SELECT,UPDATE on priv2_db.* to test_yesprivs@localhost;
 
35
        show grants for test_yesprivs@localhost;
 
36
 
 
37
        create User test_noprivs@localhost;
 
38
        set password for test_noprivs@localhost = password('PWD');
 
39
        revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost;
 
40
        grant SELECT,INSERT,UPDATE on priv1_db.* to test_noprivs@localhost;
 
41
        grant SELECT,INSERT on priv2_db.* to test_noprivs@localhost;
 
42
        show grants for test_noprivs@localhost;
 
43
 
 
44
        --replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
 
45
        connect (yes_privs,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
 
46
        use priv1_db;
 
47
        --replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
 
48
        connect (no_privs,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
 
49
        use priv1_db;
 
50
 
 
51
# trigger priv on db level->create trigger for all tables successful
 
52
 
 
53
let $message= trigger privilege on one db1 db level, not on db2;
 
54
--source include/show_msg.inc
 
55
        connection yes_privs;
 
56
        select current_user;
 
57
        use priv1_db;
 
58
        create trigger trg1_1 before INSERT  on t1 for each row
 
59
                set new.f1 = 'trig 1_1-yes';
 
60
        create trigger trg2_1 before INSERT  on t2 for each row
 
61
                set new.f1 = 'trig 2_1-yes';
 
62
        use priv2_db;
 
63
        --error ER_TABLEACCESS_DENIED_ERROR
 
64
        create trigger trg1_1 before INSERT  on t1 for each row
 
65
                set new.f1 = 'trig1_1-yes';
 
66
 
 
67
        connection no_privs;
 
68
        select current_user;
 
69
        insert into t1 (f1) values ('insert1_no');
 
70
        select f1 from t1 order by f1;
 
71
        insert into t2 (f1) values ('insert1_no');
 
72
        select f1 from t2 order by f1;
 
73
        insert into priv2_db.t1 (f1) values ('insert21-yes');
 
74
        select f1 from priv2_db.t1 order by f1;
 
75
 
 
76
        use priv2_db;
 
77
        insert into t1 (f1) values ('insert1_yes');
 
78
        select f1 from t1 order by f1;
 
79
        insert into priv1_db.t1 (f1) values ('insert11-no');
 
80
        select f1 from priv1_db.t1 order by f1;
 
81
        insert into priv1_db.t2 (f1) values ('insert22-no');
 
82
        select f1 from priv1_db.t2 order by f1;
 
83
 
 
84
# revoke trigger priv on table level, that doesn't exists->fail
 
85
 
 
86
let $message= revoke trigger privilege on table level (not existing);
 
87
--source include/show_msg.inc
 
88
        connection default;
 
89
        select current_user;
 
90
        use priv1_db;
 
91
        --error ER_NONEXISTING_TABLE_GRANT
 
92
        revoke TRIGGER on priv1_db.t1 from test_yesprivs@localhost;
 
93
        show grants for test_yesprivs@localhost;
 
94
 
 
95
        connection yes_privs;
 
96
        select current_user;
 
97
        drop trigger trg1_1;
 
98
        drop trigger trg2_1;
 
99
        use priv1_db;
 
100
        drop trigger trg1_1;
 
101
        drop trigger trg2_1;
 
102
 
 
103
# revoke the db level->create/drop/use trigger fail
 
104
 
 
105
        connection default;
 
106
        select current_user;
 
107
        use priv1_db;
 
108
        revoke TRIGGER on priv1_db.* from test_yesprivs@localhost;
 
109
 
 
110
################ Section 3.5.3 ############
 
111
# Check for the table level of Triggers   #
 
112
###########################################
 
113
let $message= no trigger privilege on table level for create:;
 
114
--source include/show_msg.inc
 
115
 
 
116
        connection yes_privs;
 
117
        select current_user;
 
118
        use priv1_db;
 
119
        --error ER_TABLEACCESS_DENIED_ERROR
 
120
        create trigger trg1_1 before INSERT on t1 for each row
 
121
                set new.f1 = 'trig 1_1-no';
 
122
 
 
123
        connection default;
 
124
        select current_user;
 
125
        show triggers;
 
126
        grant TRIGGER on priv1_db.t1 to test_yesprivs@localhost;
 
127
        show grants for test_yesprivs@localhost;
 
128
 
 
129
let $message= trigger privilege on table level for create:;
 
130
--source include/show_msg.inc
 
131
        connection yes_privs;
 
132
        select current_user;
 
133
        show triggers;
 
134
        create trigger trg1_2 before INSERT  on t1 for each row
 
135
                set new.f1 = 'trig 1_2-yes';
 
136
        --error ER_TABLEACCESS_DENIED_ERROR
 
137
        create trigger trg2_1 before INSERT  on t2 for each row
 
138
                set new.f1 = 'trig 2_1-no';
 
139
 
 
140
        connection no_privs;
 
141
        select current_user;
 
142
# need 'use db' to get the newest privileges
 
143
        use priv1_db;
 
144
        insert into t1 (f1) values ('insert2-no');
 
145
        select f1 from t1 order by f1;
 
146
        insert into t2 (f1) values ('insert2-yes');
 
147
        select f1 from t2 order by f1;
 
148
        insert into priv2_db.t1 (f1) values ('insert22-yes');
 
149
        select f1 from priv2_db.t1 order by f1;
 
150
 
 
151
        connection default;
 
152
        select current_user;
 
153
        grant TRIGGER on priv1_db.* to test_yesprivs@localhost;
 
154
        show grants for test_yesprivs@localhost;
 
155
 
 
156
# though granted on db level->create trigger fails (no use db)
 
157
 
 
158
        connection yes_privs;
 
159
        select current_user;
 
160
        --error ER_TABLEACCESS_DENIED_ERROR
 
161
        create trigger trg2_1 before INSERT  on t2 for each row
 
162
                set new.f1 = 'trig 2_1-yes';
 
163
 
 
164
# grant trigger takes effect
 
165
 
 
166
        use priv1_db;
 
167
        create trigger trg2_1 before INSERT  on t2 for each row
 
168
                set new.f1 = 'trig 2_1-yes';
 
169
 
 
170
        connection no_privs;
 
171
        select current_user;
 
172
        use priv1_db;
 
173
        insert into t1 (f1) values ('insert3-no');
 
174
        select f1 from t1 order by f1;
 
175
        insert into t2 (f1) values ('insert3-no');
 
176
        select f1 from t2 order by f1;
 
177
        use priv2_db;
 
178
        insert into priv1_db.t1 (f1) values ('insert12-no');
 
179
        select f1 from priv1_db.t1 order by f1;
 
180
        insert into priv1_db.t2 (f1) values ('insert23-no');
 
181
        select f1 from priv1_db.t2 order by f1;
 
182
 
 
183
        disconnect no_privs;
 
184
 
 
185
        connection yes_privs;
 
186
        select current_user;
 
187
 
 
188
        drop trigger trg1_2;
 
189
        drop trigger trg2_1;
 
190
 
 
191
# Cleanup table level
 
192
        --disable_warnings
 
193
        disconnect yes_privs;
 
194
 
 
195
        connection default;
 
196
        select current_user;
 
197
 
 
198
 
 
199
# general Cleanup
 
200
        drop database if exists priv1_db;
 
201
        drop database if exists priv2_db;
 
202
        drop user test_yesprivs@localhost;
 
203
        drop user test_noprivs@localhost;
 
204
        --enable_warnings
 
205