8
8
CREATE TABLE t1 (a int, b int);
9
9
INSERT INTO t1 VALUES (1,1);
10
INSERT INTO t1 VALUES (1,2);
10
INSERT LOW_PRIORITY INTO t1 VALUES (1,2);
11
11
INSERT INTO t1 VALUES (1,3);
12
12
DELETE from t1 where a=1 limit 1;
13
DELETE from t1 where a=1;
13
DELETE LOW_PRIORITY from t1 where a=1;
15
15
INSERT INTO t1 VALUES (1,1);
17
18
INSERT INTO t1 VALUES (1,2);
19
21
INSERT INTO t1 VALUES (1,2);
104
118
select * from t12;
105
119
select * from t2;
121
delete t11.*, t12.* from t11,t12 where t11.a = t12.a and t11.b <> (select b from t2 where t11.a < t2.a);
125
# PBXT: for some reason this returns 2 warnings instead of 1
126
delete ignore t11.*, t12.* from t11,t12 where t11.a = t12.a and t11.b <> (select b from t2 where t11.a < t2.a);
130
insert into t11 values (2, 12);
113
132
delete from t11 where t11.b <> (select b from t2 where t11.a < t2.a);
114
133
select * from t11;
116
# PBXT doesn't currently support DELETE IGNORE and turns it into plain DELETE
117
if (`select if (@@storage_engine = 'PBXT', 0, 1)`) {
118
delete ignore from t11 where t11.b <> (select b from t2 where t11.a < t2.a);
134
delete ignore from t11 where t11.b <> (select b from t2 where t11.a < t2.a);
120
135
select * from t11;
121
136
drop table t11, t12, t2;
171
196
--echo End of 4.1 tests
199
# Test of multi-delete where we are not scanning the first table
202
CREATE TABLE t1 (a int not null,b int not null);
203
CREATE TABLE t2 (a int not null, b int not null, primary key (a,b));
204
CREATE TABLE t3 (a int not null, b int not null, primary key (a,b));
205
insert into t1 values (1,1),(2,1),(1,3);
206
insert into t2 values (1,1),(2,2),(3,3);
207
insert into t3 values (1,1),(2,1),(1,3);
208
select * from t1,t2,t3 where t1.a=t2.a AND t2.b=t3.a and t1.b=t3.b;
209
explain select * from t1,t2,t3 where t1.a=t2.a AND t2.b=t3.a and t1.b=t3.b;
210
delete t2.*,t3.* from t1,t2,t3 where t1.a=t2.a AND t2.b=t3.a and t1.b=t3.b;
211
# This should be empty
174
216
# Bug #26186: delete order by, sometimes accept unknown column
176
218
CREATE TABLE t1 (a INT); INSERT INTO t1 VALUES (1);
212
254
INSERT INTO db2.t1 (a) SELECT * FROM t2;
256
--error ER_PARSE_ERROR
257
DELETE FROM t1 alias USING t1, t2 alias WHERE t1.a = alias.a;
258
DELETE FROM alias USING t1, t2 alias WHERE t1.a = alias.a;
259
DELETE FROM t1, alias USING t1, t2 alias WHERE t1.a = alias.a;
260
--error ER_UNKNOWN_TABLE
261
DELETE FROM t1, t2 USING t1, t2 alias WHERE t1.a = alias.a;
262
--error ER_PARSE_ERROR
263
DELETE FROM db1.t1 alias USING db1.t1, db2.t1 alias WHERE db1.t1.a = alias.a;
264
DELETE FROM alias USING db1.t1, db2.t1 alias WHERE db1.t1.a = alias.a;
265
--error ER_UNKNOWN_TABLE
266
DELETE FROM db2.alias USING db1.t1, db2.t1 alias WHERE db1.t1.a = alias.a;
267
DELETE FROM t1 USING t1 WHERE a = 1;
214
268
SELECT * FROM t1;
215
269
--error ER_PARSE_ERROR
216
270
DELETE FROM t1 alias USING t1 alias WHERE a = 2;
248
302
CREATE TABLE t1 AS SELECT * FROM db2.t2;
249
303
CREATE TABLE t2 AS SELECT * FROM t1;
306
# Testing without a selected database
312
--error ER_NO_DB_ERROR
315
# Detect missing table references
317
--error ER_NO_DB_ERROR
318
DELETE a1,a2 FROM db1.t1, db2.t2;
319
--error ER_NO_DB_ERROR
320
DELETE a1,a2 FROM db1.t1, db2.t2;
321
--error ER_NO_DB_ERROR
322
DELETE a1,a2 FROM db1.t1 AS a1, db2.t2;
323
--error ER_NO_DB_ERROR
324
DELETE a1,a2 FROM db1.t1, db2.t2 AS a2;
325
--error ER_NO_DB_ERROR
326
DELETE a1,a2 FROM db3.t1 AS a1, db4.t2 AS a2;
327
--error ER_NO_DB_ERROR
328
DELETE a1,a2 FROM db3.t1 AS a1, db4.t2 AS a2;
330
--error ER_NO_DB_ERROR
331
DELETE FROM a1,a2 USING db1.t1, db2.t2;
332
--error ER_NO_DB_ERROR
333
DELETE FROM a1,a2 USING db1.t1, db2.t2;
334
--error ER_NO_DB_ERROR
335
DELETE FROM a1,a2 USING db1.t1 AS a1, db2.t2;
336
--error ER_NO_DB_ERROR
337
DELETE FROM a1,a2 USING db1.t1, db2.t2 AS a2;
338
--error ER_NO_DB_ERROR
339
DELETE FROM a1,a2 USING db3.t1 AS a1, db4.t2 AS a2;
340
--error ER_NO_DB_ERROR
341
DELETE FROM a1,a2 USING db3.t1 AS a1, db4.t2 AS a2;
343
# Ambiguous table references
345
--error ER_NO_DB_ERROR
346
DELETE a1 FROM db1.t1 AS a1, db2.t2 AS a1;
347
--error ER_NO_DB_ERROR
348
DELETE a1 FROM db1.a1, db2.t2 AS a1;
349
--error ER_NO_DB_ERROR
350
DELETE a1 FROM a1, db1.t1 AS a1;
351
--error ER_NO_DB_ERROR
352
DELETE t1 FROM db1.t1, db2.t1 AS a1;
353
--error ER_NO_DB_ERROR
354
DELETE t1 FROM db1.t1 AS a1, db2.t1 AS a2;
355
--error ER_NO_DB_ERROR
356
DELETE t1 FROM db1.t1, db2.t1;
358
# Test all again, now with a selected database
362
# Detect missing table references
364
--error ER_UNKNOWN_TABLE
365
DELETE a1,a2 FROM db1.t1, db2.t2;
366
--error ER_UNKNOWN_TABLE
367
DELETE a1,a2 FROM db1.t1, db2.t2;
368
--error ER_UNKNOWN_TABLE
369
DELETE a1,a2 FROM db1.t1 AS a1, db2.t2;
370
--error ER_UNKNOWN_TABLE
371
DELETE a1,a2 FROM db1.t1, db2.t2 AS a2;
372
--error ER_NO_SUCH_TABLE
373
DELETE a1,a2 FROM db3.t1 AS a1, db4.t2 AS a2;
374
--error ER_NO_SUCH_TABLE
375
DELETE a1,a2 FROM db3.t1 AS a1, db4.t2 AS a2;
377
--error ER_UNKNOWN_TABLE
378
DELETE FROM a1,a2 USING db1.t1, db2.t2;
379
--error ER_UNKNOWN_TABLE
380
DELETE FROM a1,a2 USING db1.t1, db2.t2;
381
--error ER_UNKNOWN_TABLE
382
DELETE FROM a1,a2 USING db1.t1 AS a1, db2.t2;
383
--error ER_UNKNOWN_TABLE
384
DELETE FROM a1,a2 USING db1.t1, db2.t2 AS a2;
385
--error ER_NO_SUCH_TABLE
386
DELETE FROM a1,a2 USING db3.t1 AS a1, db4.t2 AS a2;
387
--error ER_NO_SUCH_TABLE
388
DELETE FROM a1,a2 USING db3.t1 AS a1, db4.t2 AS a2;
390
# Ambiguous table references
392
--error ER_NONUNIQ_TABLE
393
DELETE a1 FROM db1.t1 AS a1, db2.t2 AS a1;
394
--error ER_NO_SUCH_TABLE
395
DELETE a1 FROM db1.a1, db2.t2 AS a1;
396
--error ER_NONUNIQ_TABLE
397
DELETE a1 FROM a1, db1.t1 AS a1;
398
--error ER_UNKNOWN_TABLE
399
DELETE t1 FROM db1.t1, db2.t1 AS a1;
400
--error ER_UNKNOWN_TABLE
401
DELETE t1 FROM db1.t1 AS a1, db2.t1 AS a2;
402
--error ER_UNKNOWN_TABLE
403
DELETE t1 FROM db1.t1, db2.t1;
405
# Test multiple-table cross database deletes
407
DELETE t1 FROM db1.t2 AS t1, db2.t2 AS t2 WHERE t2.a = 1 AND t1.a = t2.a;
409
DELETE a1, a2 FROM db2.t1 AS a1, t2 AS a2 WHERE a1.a = 2 AND a2.a = 2;
251
412
DROP DATABASE db1;
252
413
DROP DATABASE db2;
253
414
DROP TABLE t1, t2;