~ubuntu-branches/ubuntu/natty/mysql-5.1/natty-proposed

« back to all changes in this revision

Viewing changes to mysql-test/t/trigger-compat.test

  • Committer: Package Import Robot
  • Author(s): Marc Deslauriers
  • Date: 2012-02-22 08:30:45 UTC
  • mfrom: (1.4.1)
  • Revision ID: package-import@ubuntu.com-20120222083045-2rd53r4bnyx7qus4
Tags: 5.1.61-0ubuntu0.11.04.1
* SECURITY UPDATE: Update to 5.1.61 to fix multiple security issues
  (LP: #937869)
  - http://www.oracle.com/technetwork/topics/security/cpujan2012-366304.html
  - CVE-2011-2262
  - CVE-2012-0075
  - CVE-2012-0112
  - CVE-2012-0113
  - CVE-2012-0114
  - CVE-2012-0115
  - CVE-2012-0116
  - CVE-2012-0117
  - CVE-2012-0118
  - CVE-2012-0119
  - CVE-2012-0120
  - CVE-2012-0484
  - CVE-2012-0485
  - CVE-2012-0486
  - CVE-2012-0487
  - CVE-2012-0488
  - CVE-2012-0489
  - CVE-2012-0490
  - CVE-2012-0491
  - CVE-2012-0492
  - CVE-2012-0493
  - CVE-2012-0494
  - CVE-2012-0495
  - CVE-2012-0496

Show diffs side-by-side

added added

removed removed

Lines of Context:
106
106
DROP USER mysqltest_dfn@localhost;
107
107
DROP USER mysqltest_inv@localhost;
108
108
DROP DATABASE mysqltest_db1;
109
 
 
 
109
USE test;
 
110
 
 
111
 
 
112
--echo #
 
113
--echo # Bug#45235: 5.1 does not support 5.0-only syntax triggers in any way
 
114
--echo #
 
115
let $MYSQLD_DATADIR=`SELECT @@datadir`;
 
116
 
 
117
--disable_warnings
 
118
DROP TABLE IF EXISTS t1, t2, t3;
 
119
--enable_warnings
 
120
 
 
121
CREATE TABLE t1 ( a INT );
 
122
CREATE TABLE t2 ( a INT );
 
123
CREATE TABLE t3 ( a INT );
 
124
INSERT INTO t1 VALUES (1), (2), (3);
 
125
INSERT INTO t2 VALUES (1), (2), (3);
 
126
INSERT INTO t3 VALUES (1), (2), (3);
 
127
 
 
128
--echo # We simulate importing a trigger from 5.0 by writing a .TRN file for
 
129
--echo # each trigger plus a .TRG file the way MySQL 5.0 would have done it, 
 
130
--echo # with syntax allowed in 5.0 only.
 
131
--echo #
 
132
--echo # Note that in 5.0 the following lines are missing from t1.TRG:
 
133
--echo #
 
134
--echo # client_cs_names='latin1'
 
135
--echo # connection_cl_names='latin1_swedish_ci'
 
136
--echo # db_cl_names='latin1_swedish_ci'
 
137
 
 
138
--write_file $MYSQLD_DATADIR/test/tr11.TRN
 
139
TYPE=TRIGGERNAME
 
140
trigger_table=t1
 
141
EOF
 
142
 
 
143
--write_file $MYSQLD_DATADIR/test/tr12.TRN
 
144
TYPE=TRIGGERNAME
 
145
trigger_table=t1
 
146
EOF
 
147
 
 
148
--write_file $MYSQLD_DATADIR/test/tr13.TRN
 
149
TYPE=TRIGGERNAME
 
150
trigger_table=t1
 
151
EOF
 
152
 
 
153
--write_file $MYSQLD_DATADIR/test/tr14.TRN
 
154
TYPE=TRIGGERNAME
 
155
trigger_table=t1
 
156
EOF
 
157
 
 
158
--write_file $MYSQLD_DATADIR/test/tr15.TRN
 
159
TYPE=TRIGGERNAME
 
160
trigger_table=t1
 
161
EOF
 
162
 
 
163
--write_file $MYSQLD_DATADIR/test/t1.TRG
 
164
TYPE=TRIGGERS
 
165
triggers='CREATE DEFINER=`root`@`localhost` TRIGGER tr11 BEFORE INSERT ON t1 FOR EACH ROW DELETE FROM t3' 'CREATE DEFINER=`root`@`localhost` TRIGGER tr12 AFTER INSERT ON t1 FOR EACH ROW DELETE FROM t3' 'CREATE DEFINER=`root`@`localhost` TRIGGER tr13 BEFORE DELETE ON t1 FOR EACH ROW DELETE FROM t1 a USING t1 a' 'CREATE DEFINER=`root`@`localhost` TRIGGER tr14 AFTER DELETE ON t1 FOR EACH ROW DELETE FROM non_existing_table' 'CREATE DEFINER=`root`@`localhost` TRIGGER tr15 BEFORE UPDATE ON t1 FOR EACH ROW DELETE FROM non_existing_table a USING non_existing_table a'
 
166
sql_modes=0 0 0 0 0
 
167
definers='root@localhost' 'root@localhost' 'root@localhost' 'root@localhost' 'root@localhost'
 
168
EOF
 
169
 
 
170
--write_file $MYSQLD_DATADIR/test/t2.TRG
 
171
TYPE=TRIGGERS
 
172
triggers='Not allowed syntax here, and trigger name cant be extracted either.'
 
173
sql_modes=0
 
174
definers='root@localhost'
 
175
EOF
 
176
 
 
177
--echo # We will get parse errors for most DDL and DML statements when the table
 
178
--echo # has broken triggers. The parse error refers to the first broken 
 
179
--echo # trigger.
 
180
--error ER_PARSE_ERROR
 
181
CREATE TRIGGER tr16 AFTER UPDATE ON t1 FOR EACH ROW INSERT INTO t1 VALUES (1);
 
182
--error ER_PARSE_ERROR
 
183
CREATE TRIGGER tr22 BEFORE INSERT ON t2 FOR EACH ROW DELETE FROM non_existing_table;
 
184
SHOW TRIGGERS;
 
185
--error ER_PARSE_ERROR
 
186
INSERT INTO t1 VALUES (1);
 
187
--error ER_PARSE_ERROR
 
188
INSERT INTO t2 VALUES (1);
 
189
--error ER_PARSE_ERROR
 
190
DELETE FROM t1;
 
191
--error ER_PARSE_ERROR
 
192
UPDATE t1 SET a = 1 WHERE a = 1;
 
193
SELECT * FROM t1;
 
194
--error ER_PARSE_ERROR
 
195
RENAME TABLE t1 TO t1_2;
 
196
SHOW TRIGGERS;
 
197
 
 
198
DROP TRIGGER tr11;
 
199
DROP TRIGGER tr12;
 
200
DROP TRIGGER tr13;
 
201
DROP TRIGGER tr14;
 
202
DROP TRIGGER tr15;
 
203
 
 
204
SHOW TRIGGERS;
 
205
 
 
206
--echo # Make sure there is no trigger file left.
 
207
--list_files $MYSQLD_DATADIR/test/ tr*
 
208
 
 
209
--echo # We write the same trigger files one more time to test DROP TABLE.
 
210
--write_file $MYSQLD_DATADIR/test/tr11.TRN
 
211
TYPE=TRIGGERNAME
 
212
trigger_table=t1
 
213
EOF
 
214
 
 
215
--write_file $MYSQLD_DATADIR/test/tr12.TRN
 
216
TYPE=TRIGGERNAME
 
217
trigger_table=t1
 
218
EOF
 
219
 
 
220
--write_file $MYSQLD_DATADIR/test/tr13.TRN
 
221
TYPE=TRIGGERNAME
 
222
trigger_table=t1
 
223
EOF
 
224
 
 
225
--write_file $MYSQLD_DATADIR/test/tr14.TRN
 
226
TYPE=TRIGGERNAME
 
227
trigger_table=t1
 
228
EOF
 
229
 
 
230
--write_file $MYSQLD_DATADIR/test/tr15.TRN
 
231
TYPE=TRIGGERNAME
 
232
trigger_table=t1
 
233
EOF
 
234
 
 
235
--write_file $MYSQLD_DATADIR/test/t1.TRG
 
236
TYPE=TRIGGERS
 
237
triggers='CREATE DEFINER=`root`@`localhost` TRIGGER tr11 BEFORE INSERT ON t1 FOR EACH ROW DELETE FROM t3' 'CREATE DEFINER=`root`@`localhost` TRIGGER tr12 AFTER INSERT ON t1 FOR EACH ROW DELETE FROM t3' 'CREATE DEFINER=`root`@`localhost` TRIGGER tr13 BEFORE DELETE ON t1 FOR EACH ROW DELETE FROM t1 a USING t1 a' 'CREATE DEFINER=`root`@`localhost` TRIGGER tr14 AFTER DELETE ON t1 FOR EACH ROW DELETE FROM non_existing_table' 'CREATE DEFINER=`root`@`localhost` TRIGGER tr15 BEFORE UPDATE ON t1 FOR EACH ROW DELETE FROM non_existing_table a USING non_existing_table a'
 
238
sql_modes=0 0 0 0 0
 
239
definers='root@localhost' 'root@localhost' 'root@localhost' 'root@localhost' 'root@localhost'
 
240
EOF
 
241
 
 
242
DROP TABLE t1;
 
243
DROP TABLE t2;
 
244
DROP TABLE t3;
 
245
 
 
246
--echo # Make sure there is no trigger file left.
 
247
 
 
248
--list_files $MYSQLD_DATADIR/test/ tr*
 
249
 
 
250
CREATE TABLE t1 ( a INT );
 
251
CREATE TABLE t2 ( a INT );
 
252
INSERT INTO t1 VALUES (1), (2), (3);
 
253
INSERT INTO t2 VALUES (1), (2), (3);
 
254
 
 
255
--echo # We write three trigger files. First trigger is syntaxically incorrect, next trigger is correct
 
256
--echo # and last trigger is broken.
 
257
--echo # Next we try to execute SHOW CREATE TRGGIR command for broken trigger and then try to drop one.
 
258
--write_file $MYSQLD_DATADIR/test/tr11.TRN
 
259
TYPE=TRIGGERNAME
 
260
trigger_table=t1
 
261
EOF
 
262
 
 
263
--write_file $MYSQLD_DATADIR/test/tr12.TRN
 
264
TYPE=TRIGGERNAME
 
265
trigger_table=t1
 
266
EOF
 
267
 
 
268
--write_file $MYSQLD_DATADIR/test/t1.TRG
 
269
TYPE=TRIGGERS
 
270
triggers='CREATE the wrongest trigger_in_the_world' 'CREATE DEFINER=`root`@`localhost` TRIGGER tr11 BEFORE DELETE ON t1 FOR EACH ROW DELETE FROM t1 a USING t1 a' 'CREATE DEFINER=`root`@`localhost` TRIGGER tr12 BEFORE INSERT ON t1 FOR EACH ROW DELETE FROM t2'
 
271
sql_modes=0 0 0
 
272
definers='root@localhost' 'root@localhost' 'root@localhost'
 
273
EOF
 
274
 
 
275
FLUSH TABLE t1;
 
276
 
 
277
SHOW CREATE TRIGGER tr12;
 
278
SHOW CREATE TRIGGER tr11;
 
279
DROP TRIGGER tr12;
 
280
DROP TRIGGER tr11;
 
281
 
 
282
DROP TABLE t1;
 
283
DROP TABLE t2;