~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to mysql-test/suite/funcs_1/triggers/triggers_09.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
 
 
7
 
 
8
#################################
 
9
####### Section 3.5.9 ###########
 
10
#   Checks on old and new rows  #
 
11
#################################
 
12
 
 
13
#Section 3.5.9.1
 
14
#Test case: Ensure that every trigger executes its triggered action on each row 
 
15
#           that meets the conditions stated in the trigger definition.
 
16
#Section 3.5.9.2
 
17
#Testcase: Ensure that a trigger never executes its triggered action on any row 
 
18
#          that doesn't meet the conditions stated in the trigger definition.
 
19
let $message= Testcase 3.5.9.1/2:;
 
20
--source include/show_msg.inc
 
21
 
 
22
        Create trigger trg1 BEFORE UPDATE on tb3 for each row 
 
23
                set new.f142 = 94087, @counter=@counter+1;
 
24
--disable_query_log
 
25
        select count(*) as TotalRows from tb3;
 
26
        select count(*) as Affected from tb3 where f130<100;
 
27
        select count(*) as NotAffected from tb3 where f130>=100;
 
28
        select count(*) as NewValuew from tb3 where f142=94087;
 
29
--enable_query_log
 
30
        set @counter=0;
 
31
        Update tb3 Set f142='1' where f130<100;
 
32
        select count(*) as ExpectedChanged, @counter as TrigCounter 
 
33
                from tb3 where f142=94087;
 
34
        select count(*) as ExpectedNotChange from tb3 
 
35
                where f130<100 and f142<>94087;
 
36
        select count(*) as NonExpectedChanged from tb3 
 
37
                where f130>=130 and f142=94087;
 
38
 
 
39
#Cleanup
 
40
        --disable_warnings 
 
41
        drop trigger trg1;
 
42
        --enable_warnings
 
43
 
 
44
 
 
45
#Section 3.5.9.3
 
46
#Test case: Ensure that a reference to OLD.<column name> always correctly refers 
 
47
#           to the values of the specified column of the subject table before a 
 
48
#           data row is updated or deleted.
 
49
let $message= Testcase 3.5.9.3:;
 
50
--source include/show_msg.inc
 
51
        
 
52
        Create trigger trg2_a before update on tb3 for each row
 
53
                set @tr_var_b4_118=old.f118, @tr_var_b4_121=old.f121,
 
54
                    @tr_var_b4_122=old.f122, @tr_var_b4_136=old.f136,
 
55
                    @tr_var_b4_163=old.f163;
 
56
 
 
57
        Create trigger trg2_b after update on tb3 for each row
 
58
                set @tr_var_af_118=old.f118, @tr_var_af_121=old.f121,
 
59
                    @tr_var_af_122=old.f122, @tr_var_af_136=old.f136,
 
60
                    @tr_var_af_163=old.f163;
 
61
 
 
62
        Create trigger trg2_c before delete on tb3 for each row
 
63
                set @tr_var_b4_118=old.f118, @tr_var_b4_121=old.f121,
 
64
                    @tr_var_b4_122=old.f122, @tr_var_b4_136=old.f136,
 
65
                    @tr_var_b4_163=old.f163;
 
66
 
 
67
        Create trigger trg2_d after delete on tb3 for each row
 
68
                set @tr_var_af_118=old.f118, @tr_var_af_121=old.f121,
 
69
                    @tr_var_af_122=old.f122, @tr_var_af_136=old.f136,
 
70
                    @tr_var_af_163=old.f163;
 
71
 
 
72
 
 
73
--disable_query_log
 
74
        set @tr_var_b4_118=0, @tr_var_b4_121=0, @tr_var_b4_122=0, 
 
75
                @tr_var_b4_136=0, @tr_var_b4_163=0;
 
76
        set @tr_var_af_118=0, @tr_var_af_121=0, @tr_var_af_122=0, 
 
77
                @tr_var_af_136=0, @tr_var_af_163=0;
 
78
        select  @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, 
 
79
                @tr_var_b4_136, @tr_var_b4_163;
 
80
        select  @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, 
 
81
                @tr_var_af_136, @tr_var_af_163;
 
82
--enable_query_log
 
83
 
 
84
        Insert into tb3 (f122, f136, f163) 
 
85
                values ('Test 3.5.9.3', 7, 123.17);
 
86
        Update tb3 Set f136=8 where f122='Test 3.5.9.3';
 
87
 
 
88
        select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3' order by f136;
 
89
        select  @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, 
 
90
                @tr_var_b4_136, @tr_var_b4_163;
 
91
        select  @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, 
 
92
                @tr_var_af_136, @tr_var_af_163;
 
93
 
 
94
--disable_query_log
 
95
        set @tr_var_b4_118=0, @tr_var_b4_121=0, @tr_var_b4_122=0, 
 
96
                @tr_var_b4_136=0, @tr_var_b4_163=0;
 
97
        set @tr_var_af_118=0, @tr_var_af_121=0, @tr_var_af_122=0, 
 
98
                @tr_var_af_136=0, @tr_var_af_163=0;
 
99
        select  @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, 
 
100
                @tr_var_b4_136, @tr_var_b4_163;
 
101
        select  @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, 
 
102
                @tr_var_af_136, @tr_var_af_163;
 
103
--enable_query_log
 
104
 
 
105
        delete from tb3 where f122='Test 3.5.9.3';
 
106
 
 
107
        select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3' order by f136;
 
108
        select  @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, 
 
109
                @tr_var_b4_136, @tr_var_b4_163;
 
110
#FIXME 31561
 
111
#       select  @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, 
 
112
#               @tr_var_af_136, @tr_var_af_163;
 
113
#Cleanup
 
114
        --disable_warnings 
 
115
        drop trigger trg2_a;
 
116
        drop trigger trg2_b;
 
117
        drop trigger trg2_c;
 
118
        drop trigger trg2_d;
 
119
        --enable_warnings
 
120
 
 
121
#Section 3.5.9.4
 
122
#Test case: Ensure that a reference to NEW.<column name> always correctly refers 
 
123
#           to the values of the specified column of the subject table after an 
 
124
#           existing data row has been updated or a new data row has been inserted.
 
125
let $message= Testcase 3.5.9.4:;
 
126
--source include/show_msg.inc
 
127
        
 
128
        Create trigger trg3_a before insert on tb3 for each row
 
129
                set @tr_var_b4_118=new.f118, @tr_var_b4_121=new.f121,
 
130
                    @tr_var_b4_122=new.f122, @tr_var_b4_136=new.f136,
 
131
                    @tr_var_b4_151=new.f151, @tr_var_b4_163=new.f163;
 
132
 
 
133
        Create trigger trg3_b after insert on tb3 for each row
 
134
                set @tr_var_af_118=new.f118, @tr_var_af_121=new.f121,
 
135
                    @tr_var_af_122=new.f122, @tr_var_af_136=new.f136,
 
136
                    @tr_var_af_151=new.f151, @tr_var_af_163=new.f163;
 
137
 
 
138
        Create trigger trg3_c before update on tb3 for each row
 
139
                set @tr_var_b4_118=new.f118, @tr_var_b4_121=new.f121,
 
140
                    @tr_var_b4_122=new.f122, @tr_var_b4_136=new.f136,
 
141
                    @tr_var_b4_151=new.f151, @tr_var_b4_163=new.f163;
 
142
 
 
143
        Create trigger trg3_d after update on tb3 for each row
 
144
                set @tr_var_af_118=new.f118, @tr_var_af_121=new.f121,
 
145
                    @tr_var_af_122=new.f122, @tr_var_af_136=new.f136,
 
146
                    @tr_var_af_151=new.f151, @tr_var_af_163=new.f163;
 
147
 
 
148
--disable_query_log
 
149
        set @tr_var_b4_118=0, @tr_var_b4_121=0, @tr_var_b4_122=0, 
 
150
                @tr_var_b4_136=0, @tr_var_b4_151=0, @tr_var_b4_163=0;
 
151
        set @tr_var_af_118=0, @tr_var_af_121=0, @tr_var_af_122=0, 
 
152
                @tr_var_af_136=0, @tr_var_af_151=0, @tr_var_af_163=0;
 
153
        select  @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, 
 
154
                @tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163;
 
155
        select  @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, 
 
156
                @tr_var_af_136, @tr_var_af_151, @tr_var_af_163;
 
157
--enable_query_log
 
158
 
 
159
        Insert into tb3 (f122, f136, f151, f163) 
 
160
                values ('Test 3.5.9.4', 7, DEFAULT, 995.24);
 
161
 
 
162
        select f118, f121, f122, f136, f151, f163 from tb3 
 
163
                where f122 like 'Test 3.5.9.4%' order by f163;
 
164
        select  @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, 
 
165
                @tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163;
 
166
        select  @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, 
 
167
                @tr_var_af_136, @tr_var_af_151, @tr_var_af_163;
 
168
 
 
169
--disable_query_log
 
170
        set @tr_var_b4_118=0, @tr_var_b4_121=0, @tr_var_b4_122=0, 
 
171
                @tr_var_b4_136=0, @tr_var_b4_151=0, @tr_var_b4_163=0;
 
172
        set @tr_var_af_118=0, @tr_var_af_121=0, @tr_var_af_122=0, 
 
173
                @tr_var_af_136=0, @tr_var_af_151=0, @tr_var_af_163=0;
 
174
        select  @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, 
 
175
                @tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163;
 
176
        select  @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, 
 
177
                @tr_var_af_136, @tr_var_af_151, @tr_var_af_163;
 
178
--enable_query_log
 
179
 
 
180
--error ER_BAD_NULL_ERROR
 
181
        Update tb3 Set f122='Test 3.5.9.4-trig', f136=NULL, f151=DEFAULT, f163=NULL
 
182
                 where f122='Test 3.5.9.4';
 
183
 
 
184
        Update tb3 Set f122='Test 3.5.9.4-trig', f136=0, f151=DEFAULT, f163=NULL
 
185
                 where f122='Test 3.5.9.4';
 
186
 
 
187
        select f118, f121, f122, f136, f151, f163 from tb3 
 
188
                where f122 like 'Test 3.5.9.4-trig' order by f163;
 
189
        select  @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, 
 
190
                @tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163;
 
191
        select  @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, 
 
192
                @tr_var_af_136, @tr_var_af_151, @tr_var_af_163;
 
193
#Cleanup
 
194
        --disable_warnings 
 
195
        drop trigger trg3_a;
 
196
        drop trigger trg3_b;
 
197
        drop trigger trg3_c;
 
198
        drop trigger trg3_d;
 
199
        delete from tb3 where f122='Test 3.5.9.4-trig';
 
200
        --enable_warnings
 
201
 
 
202
 
 
203
#Section 3.5.9.5
 
204
# Test case: Ensure that the definition of an INSERT trigger can include a 
 
205
#            reference to NEW. <Column name>.
 
206
let $message= Testcase 3.5.9.5: (implied in previous tests);
 
207
--source include/show_msg.inc
 
208
        
 
209
#Section 3.5.9.6
 
210
# Test case: Ensure that the definition of an INSERT trigger cannot include 
 
211
#            a reference to OLD. <Column name>.
 
212
let $message= Testcase 3.5.9.6:;
 
213
--source include/show_msg.inc
 
214
        
 
215
        --error 1363
 
216
        create trigger trg4a before insert on tb3 for each row
 
217
                set @temp1= old.f120;
 
218
        --error 1362
 
219
        create trigger trg4b after insert on tb3 for each row
 
220
                set old.f120= 'test';
 
221
 
 
222
#Cleanup
 
223
        --disable_warnings 
 
224
        --error 0, 1360
 
225
        drop trigger trg4a;
 
226
        --error 0, 1360
 
227
        drop trigger trg4b;
 
228
        --enable_warnings
 
229
 
 
230
 
 
231
#Section 3.5.9.7
 
232
# Test case: Ensure that the definition of an UPDATE trigger can include a 
 
233
#            reference to NEW. <Column name>.
 
234
let $message= Testcase 3.5.9.7: (implied in previous tests);
 
235
--source include/show_msg.inc
 
236
        
 
237
#Section 3.5.9.8
 
238
# Test case: Ensure that the definition of an UPDATE trigger cannot include a 
 
239
#            reference to OLD. <Column name>.
 
240
let $message= Testcase 3.5.9.8: (implied in previous tests);
 
241
--source include/show_msg.inc
 
242
        
 
243
#Section 3.5.9.9
 
244
# Test case: Ensure that the definition of a DELETE trigger cannot include a 
 
245
#            reference to NEW.<column name>.
 
246
let $message= Testcase 3.5.9.9:;
 
247
--source include/show_msg.inc
 
248
        
 
249
        --error 1363
 
250
        create trigger trg5a before DELETE on tb3 for each row
 
251
                set @temp1=new.f122;
 
252
        --error 1363
 
253
        create trigger trg5b after DELETE on tb3 for each row
 
254
                set new.f122='test';
 
255
let $message= The above returns the wrong error, should be error 1362 (Bug 11648)
 
256
--source include/show_msg.inc
 
257
 
 
258
#Cleanup
 
259
        --disable_warnings 
 
260
        --error 0, 1360
 
261
        drop trigger trg5a;
 
262
        --error 0, 1360
 
263
        drop trigger trg5b;
 
264
        --enable_warnings
 
265
 
 
266
 
 
267
#Section 3.5.9.10
 
268
# Test case: Ensure that the definition of a DELETE trigger can include a reference 
 
269
#            to OLD.<column name>.
 
270
let $message= Testcase 3.5.9.10: (implied in previous tests);
 
271
--source include/show_msg.inc
 
272
        
 
273
 
 
274
#Section 3.5.9.11
 
275
# Testcase: Ensure that trigger definition that includes a referance to 
 
276
#           NEW.<colunm name> fails with an appropriate error message, 
 
277
#           at CREATE TRIGGER time, if the trigger event in not INSERT or UPDATE
 
278
let $message= Testcase 3.5.9.11: covered by 3.5.9.9;
 
279
--source include/show_msg.inc
 
280
 
 
281
 
 
282
#Section 3.5.9.12
 
283
# Testcase: Ensure that trigger definition that includes a referance to 
 
284
#           OLD.<column name> fails with an appropriate error message, at 
 
285
#           CREATE TRIGGER time, if the trigger event is not DELETE or UPDATE
 
286
let $message= Testcase 3.5.9.12: covered by 3.5.9.6;
 
287
--source include/show_msg.inc
 
288
 
 
289
 
 
290
#Section 3.5.9.13
 
291
# Test case: Ensure that all references to OLD. <Column name> are read-only, 
 
292
#            that is, that they cannot be used to modify a data row.
 
293
let $message= Testcase 3.5.9.13:;
 
294
--source include/show_msg.inc
 
295
        
 
296
        --error 1362
 
297
        create trigger trg6a before UPDATE on tb3 for each row
 
298
                set old.f118='C', new.f118='U';
 
299
        --error 1362
 
300
        create trigger trg6b after INSERT on tb3 for each row
 
301
                set old.f136=163, new.f118='U';
 
302
        --error 1362
 
303
        create trigger trg6c after UPDATE on tb3 for each row
 
304
                set old.f136=NULL;
 
305
 
 
306
#Cleanup
 
307
        --disable_warnings 
 
308
        --error 0, 1360
 
309
        drop trigger trg6a;
 
310
        --error 0, 1360
 
311
        drop trigger trg6b;
 
312
        --error 0, 1360
 
313
        drop trigger trg6c;
 
314
        --enable_warnings
 
315
 
 
316
 
 
317
#Section 3.5.9.14
 
318
# Test case: Ensure that all references to NEW. <Column name> may be used both to 
 
319
#            read a data row and to modify a data row
 
320
let $message= Testcase 3.5.9.14: (implied in previous tests);
 
321
--source include/show_msg.inc
 
322
 
 
323