Commit 8978675b authored by Sergey Petrunya's avatar Sergey Petrunya

BUG#1000051: Query with simple join and ORDER BY takes thousands times longer when run with ICP

- Correct testcases.
parent 1d3ba8a7
...@@ -915,15 +915,17 @@ DROP TABLE t1,t2,t3,t4; ...@@ -915,15 +915,17 @@ DROP TABLE t1,t2,t3,t4;
create table t0 (a int); create table t0 (a int);
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
create table t1 (a int, col int, filler char(100), key(a, col)); create table t1 (a int, col int, filler char(100), key(a, col));
insert into t1 select A.a + 10*B.a +100*C.a, 1234, 'filler' from t0 A, t0 B, t0 C; insert into t1 select A.a + 10*B.a, 1234, 'filler' from t0 A, t0 B, t0 C;
set @tmp_10000051= @@optimizer_switch;
set optimizer_switch='mrr=off';
# Must not use ICP: # Must not use ICP:
explain select * from t1 where a between 10 and 20 order by a, col desc; explain select * from t1 where a between 5 and 8 order by a desc, col desc;
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 SIMPLE t1 range a a 5 NULL 11 Using index condition; Rowid-ordered scan; Using filesort 1 SIMPLE t1 range a a 5 NULL 39 Using where
set optimizer_switch= @tmp_10000051;
# Must not use ICP: # Must not use ICP:
explain select * from t0,t1 where t1.a=t0.a and t1.col<123; explain select * from t1 where a=3 and col > 500 order by a desc, col desc;
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 SIMPLE t0 ALL NULL NULL NULL NULL 10 Using where 1 SIMPLE t1 range a a 10 NULL 10 Using where
1 SIMPLE t1 ref a a 5 test.t0.a 1 Using index condition
drop table t0, t1; drop table t0, t1;
set optimizer_switch=@myisam_icp_tmp; set optimizer_switch=@myisam_icp_tmp;
...@@ -269,13 +269,16 @@ create table t0 (a int); ...@@ -269,13 +269,16 @@ create table t0 (a int);
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
create table t1 (a int, col int, filler char(100), key(a, col)); create table t1 (a int, col int, filler char(100), key(a, col));
insert into t1 select A.a + 10*B.a +100*C.a, 1234, 'filler' from t0 A, t0 B, t0 C; insert into t1 select A.a + 10*B.a, 1234, 'filler' from t0 A, t0 B, t0 C;
set @tmp_10000051= @@optimizer_switch;
set optimizer_switch='mrr=off';
--echo # Must not use ICP: --echo # Must not use ICP:
explain select * from t1 where a between 10 and 20 order by a, col desc; explain select * from t1 where a between 5 and 8 order by a desc, col desc;
set optimizer_switch= @tmp_10000051;
--echo # Must not use ICP: --echo # Must not use ICP:
explain select * from t0,t1 where t1.a=t0.a and t1.col<123; explain select * from t1 where a=3 and col > 500 order by a desc, col desc;
drop table t0, t1; drop table t0, t1;
......
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