Commit d0d626be authored by Sergei Golubchik's avatar Sergei Golubchik

MDEV-13510 main.delete_use_source fails in buildbot and outside with wrong plan

parent 27412877
create table t1(c1 integer not null,c2 integer not null, key (c1)) engine=InnoDb; create table t1(c1 integer not null,c2 integer not null, key (c1)) engine=InnoDb;
create view v1 as select * from t1 where c1 in (0,1); create view v1 as select * from t1 where c1 in (0,1);
insert t1 select 0,seq from seq_1_to_500; insert t1 select 0,seq from seq_1_to_500;
insert t1 select 1,seq from seq_1_to_50; insert t1 select 1,seq from seq_1_to_100;
insert t1 select 2,seq from seq_1_to_20; insert t1 select 2,seq from seq_1_to_50;
insert t1 select 3,seq from seq_1_to_20; insert t1 select 3,seq from seq_1_to_20;
analyze table t1;
Table Op Msg_type Msg_text
test.t1 analyze status OK
# #
# Delete with limit (quick select - range acces) # Delete with limit (quick select - range acces)
# #
...@@ -31,7 +34,7 @@ select count(*) from v1 where c1=2; ...@@ -31,7 +34,7 @@ select count(*) from v1 where c1=2;
count(*) count(*)
0 0
delete from t1 where c1=2 and exists(select 'x' from t1 b where b.c2<10); delete from t1 where c1=2 and exists(select 'x' from t1 b where b.c2<10);
affected rows: 20 affected rows: 50
delete from t1 where c1=2 and exists(select 'x' from t1 b where b.c2<10); delete from t1 where c1=2 and exists(select 'x' from t1 b where b.c2<10);
affected rows: 0 affected rows: 0
select count(*) from v1 where c1=2; select count(*) from v1 where c1=2;
...@@ -39,13 +42,13 @@ count(*) ...@@ -39,13 +42,13 @@ count(*)
0 0
rollback; rollback;
# #
# Delete throw a view with limit (range access) # Delete through a view with limit (range access)
# #
start transaction; start transaction;
explain delete from v1 where (select count(*) from t1 b where b.c1=v1.c1) = 500 limit 1; explain delete from v1 where (select count(*) from t1 b where b.c1=v1.c1) = 500 limit 1;
id select_type table type possible_keys key key_len ref rows Extra id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 range c1 c1 4 NULL 550 Using where 1 PRIMARY t1 ALL c1 NULL NULL NULL 502 Using where
2 DEPENDENT SUBQUERY b ref c1 c1 4 test.t1.c1 82 Using index 2 DEPENDENT SUBQUERY b ref c1 c1 4 test.t1.c1 58 Using index
delete from v1 where (select count(*) from t1 b where b.c1=v1.c1) = 500 limit 1; delete from v1 where (select count(*) from t1 b where b.c1=v1.c1) = 500 limit 1;
affected rows: 1 affected rows: 1
delete from v1 where (select count(*) from t1 b where b.c1=v1.c1) = 500 limit 1; delete from v1 where (select count(*) from t1 b where b.c1=v1.c1) = 500 limit 1;
...@@ -55,13 +58,13 @@ count(*) ...@@ -55,13 +58,13 @@ count(*)
499 499
rollback; rollback;
# #
# Delete throw a view (ALL access) # Delete through a view (ALL access)
# #
start transaction; start transaction;
explain delete from v1 where (select count(*) from t1 b where b.c1=v1.c1) = 500; explain delete from v1 where (select count(*) from t1 b where b.c1=v1.c1) = 500;
id select_type table type possible_keys key key_len ref rows Extra id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 ALL c1 NULL NULL NULL 717 Using where 1 PRIMARY t1 ALL c1 NULL NULL NULL 502 Using where
2 DEPENDENT SUBQUERY b ref c1 c1 4 test.t1.c1 82 Using index 2 DEPENDENT SUBQUERY b ref c1 c1 4 test.t1.c1 58 Using index
delete from v1 where (select count(*) from t1 b where b.c1=v1.c1) = 500 ; delete from v1 where (select count(*) from t1 b where b.c1=v1.c1) = 500 ;
affected rows: 500 affected rows: 500
select count(*) from v1 where c1=0; select count(*) from v1 where c1=0;
...@@ -92,13 +95,13 @@ ERROR 45000: Unhandled user-defined exception condition ...@@ -92,13 +95,13 @@ ERROR 45000: Unhandled user-defined exception condition
select c1,count(*) from t1 group by c1; select c1,count(*) from t1 group by c1;
c1 count(*) c1 count(*)
0 500 0 500
1 50 1 100
2 20 2 50
3 20 3 20
rollback; rollback;
drop trigger trg; drop trigger trg;
# #
# Delete throw a view with returning # Delete through a view with returning
# #
start transaction; start transaction;
delete from t1 where (select count(*) from t1 b where b.c1=t1.c1) = 500 order by c2 asc limit 10 returning c1,c2; delete from t1 where (select count(*) from t1 b where b.c1=t1.c1) = 500 order by c2 asc limit 10 returning c1,c2;
......
...@@ -4,9 +4,10 @@ create table t1(c1 integer not null,c2 integer not null, key (c1)) engine=InnoDb ...@@ -4,9 +4,10 @@ create table t1(c1 integer not null,c2 integer not null, key (c1)) engine=InnoDb
create view v1 as select * from t1 where c1 in (0,1); create view v1 as select * from t1 where c1 in (0,1);
insert t1 select 0,seq from seq_1_to_500; insert t1 select 0,seq from seq_1_to_500;
insert t1 select 1,seq from seq_1_to_50; insert t1 select 1,seq from seq_1_to_100;
insert t1 select 2,seq from seq_1_to_20; insert t1 select 2,seq from seq_1_to_50;
insert t1 select 3,seq from seq_1_to_20; insert t1 select 3,seq from seq_1_to_20;
analyze table t1;
--echo # --echo #
--echo # Delete with limit (quick select - range acces) --echo # Delete with limit (quick select - range acces)
...@@ -43,7 +44,7 @@ select count(*) from v1 where c1=2; ...@@ -43,7 +44,7 @@ select count(*) from v1 where c1=2;
rollback; rollback;
--echo # --echo #
--echo # Delete throw a view with limit (range access) --echo # Delete through a view with limit (range access)
--echo # --echo #
start transaction; start transaction;
...@@ -56,7 +57,7 @@ select count(*) from v1 where c1=0; ...@@ -56,7 +57,7 @@ select count(*) from v1 where c1=0;
rollback; rollback;
--echo # --echo #
--echo # Delete throw a view (ALL access) --echo # Delete through a view (ALL access)
--echo # --echo #
start transaction; start transaction;
...@@ -97,7 +98,7 @@ rollback; ...@@ -97,7 +98,7 @@ rollback;
drop trigger trg; drop trigger trg;
--echo # --echo #
--echo # Delete throw a view with returning --echo # Delete through a view with returning
--echo # --echo #
start transaction; start transaction;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment