194
167
--echo End of 4.1 tests
197
# Test of multi-delete where we are not scanning the first table
200
CREATE TABLE t1 (a int not null,b int not null);
201
CREATE TABLE t2 (a int not null, b int not null, primary key (a,b));
202
CREATE TABLE t3 (a int not null, b int not null, primary key (a,b));
203
insert into t1 values (1,1),(2,1),(1,3);
204
insert into t2 values (1,1),(2,2),(3,3);
205
insert into t3 values (1,1),(2,1),(1,3);
206
select * from t1,t2,t3 where t1.a=t2.a AND t2.b=t3.a and t1.b=t3.b;
207
explain select * from t1,t2,t3 where t1.a=t2.a AND t2.b=t3.a and t1.b=t3.b;
208
delete t2.*,t3.* from t1,t2,t3 where t1.a=t2.a AND t2.b=t3.a and t1.b=t3.b;
209
# This should be empty
214
170
# Bug #26186: delete order by, sometimes accept unknown column
216
172
CREATE TABLE t1 (a INT); INSERT INTO t1 VALUES (1);
252
208
INSERT INTO db2.t1 (a) SELECT * FROM t2;
254
--error ER_PARSE_ERROR
255
DELETE FROM t1 alias USING t1, t2 alias WHERE t1.a = alias.a;
256
DELETE FROM alias USING t1, t2 alias WHERE t1.a = alias.a;
257
DELETE FROM t1, alias USING t1, t2 alias WHERE t1.a = alias.a;
258
--error ER_UNKNOWN_TABLE
259
DELETE FROM t1, t2 USING t1, t2 alias WHERE t1.a = alias.a;
260
--error ER_PARSE_ERROR
261
DELETE FROM db1.t1 alias USING db1.t1, db2.t1 alias WHERE db1.t1.a = alias.a;
262
DELETE FROM alias USING db1.t1, db2.t1 alias WHERE db1.t1.a = alias.a;
263
--error ER_UNKNOWN_TABLE
264
DELETE FROM db2.alias USING db1.t1, db2.t1 alias WHERE db1.t1.a = alias.a;
265
DELETE FROM t1 USING t1 WHERE a = 1;
266
210
SELECT * FROM t1;
267
211
--error ER_PARSE_ERROR
268
212
DELETE FROM t1 alias USING t1 alias WHERE a = 2;
299
243
CREATE TABLE db2.t2 AS SELECT * FROM db2.t1;
300
244
CREATE TABLE t1 AS SELECT * FROM db2.t2;
301
245
CREATE TABLE t2 AS SELECT * FROM t1;
304
# Testing without a selected database
310
--error ER_NO_DB_ERROR
313
# Detect missing table references
315
--error ER_NO_DB_ERROR
316
DELETE a1,a2 FROM db1.t1, db2.t2;
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 AS a1, db2.t2;
321
--error ER_NO_DB_ERROR
322
DELETE a1,a2 FROM db1.t1, db2.t2 AS a2;
323
--error ER_NO_DB_ERROR
324
DELETE a1,a2 FROM db3.t1 AS a1, db4.t2 AS a2;
325
--error ER_NO_DB_ERROR
326
DELETE a1,a2 FROM db3.t1 AS a1, db4.t2 AS a2;
328
--error ER_NO_DB_ERROR
329
DELETE FROM a1,a2 USING db1.t1, db2.t2;
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 AS a1, db2.t2;
334
--error ER_NO_DB_ERROR
335
DELETE FROM a1,a2 USING db1.t1, db2.t2 AS a2;
336
--error ER_NO_DB_ERROR
337
DELETE FROM a1,a2 USING db3.t1 AS a1, db4.t2 AS a2;
338
--error ER_NO_DB_ERROR
339
DELETE FROM a1,a2 USING db3.t1 AS a1, db4.t2 AS a2;
341
# Ambiguous table references
343
--error ER_NO_DB_ERROR
344
DELETE a1 FROM db1.t1 AS a1, db2.t2 AS a1;
345
--error ER_NO_DB_ERROR
346
DELETE a1 FROM db1.a1, db2.t2 AS a1;
347
--error ER_NO_DB_ERROR
348
DELETE a1 FROM a1, db1.t1 AS a1;
349
--error ER_NO_DB_ERROR
350
DELETE t1 FROM db1.t1, db2.t1 AS a1;
351
--error ER_NO_DB_ERROR
352
DELETE t1 FROM db1.t1 AS a1, db2.t1 AS a2;
353
--error ER_NO_DB_ERROR
354
DELETE t1 FROM db1.t1, db2.t1;
356
# Test all again, now with a selected database
360
# Detect missing table references
362
--error ER_UNKNOWN_TABLE
363
DELETE a1,a2 FROM db1.t1, db2.t2;
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 AS a1, db2.t2;
368
--error ER_UNKNOWN_TABLE
369
DELETE a1,a2 FROM db1.t1, db2.t2 AS a2;
370
--error ER_NO_SUCH_TABLE
371
DELETE a1,a2 FROM db3.t1 AS a1, db4.t2 AS a2;
372
--error ER_NO_SUCH_TABLE
373
DELETE a1,a2 FROM db3.t1 AS a1, db4.t2 AS a2;
375
--error ER_UNKNOWN_TABLE
376
DELETE FROM a1,a2 USING db1.t1, db2.t2;
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 AS a1, db2.t2;
381
--error ER_UNKNOWN_TABLE
382
DELETE FROM a1,a2 USING db1.t1, db2.t2 AS a2;
383
--error ER_NO_SUCH_TABLE
384
DELETE FROM a1,a2 USING db3.t1 AS a1, db4.t2 AS a2;
385
--error ER_NO_SUCH_TABLE
386
DELETE FROM a1,a2 USING db3.t1 AS a1, db4.t2 AS a2;
388
# Ambiguous table references
390
--error ER_NONUNIQ_TABLE
391
DELETE a1 FROM db1.t1 AS a1, db2.t2 AS a1;
392
--error ER_NO_SUCH_TABLE
393
DELETE a1 FROM db1.a1, db2.t2 AS a1;
394
--error ER_NONUNIQ_TABLE
395
DELETE a1 FROM a1, db1.t1 AS a1;
396
--error ER_UNKNOWN_TABLE
397
DELETE t1 FROM db1.t1, db2.t1 AS a1;
398
--error ER_UNKNOWN_TABLE
399
DELETE t1 FROM db1.t1 AS a1, db2.t1 AS a2;
400
--error ER_UNKNOWN_TABLE
401
DELETE t1 FROM db1.t1, db2.t1;
403
# Test multiple-table cross database deletes
405
DELETE t1 FROM db1.t2 AS t1, db2.t2 AS t2 WHERE t2.a = 1 AND t1.a = t2.a;
407
DELETE a1, a2 FROM db2.t1 AS a1, t2 AS a2 WHERE a1.a = 2 AND a2.a = 2;