Commit c7e04af8 authored by Monty's avatar Monty

Update main.selectivity test and results

parent 6a031406
...@@ -1824,7 +1824,6 @@ test.t1 analyze status Table is already up to date ...@@ -1824,7 +1824,6 @@ test.t1 analyze status Table is already up to date
test.t2 analyze status Engine-independent statistics collected test.t2 analyze status Engine-independent statistics collected
test.t2 analyze status Table is already up to date test.t2 analyze status Table is already up to date
set optimizer_switch='exists_to_in=off'; set optimizer_switch='exists_to_in=off';
set optimizer_use_condition_selectivity=2;
SELECT * FROM t1 SELECT * FROM t1
WHERE WHERE
EXISTS (SELECT * FROM t1 A INNER JOIN t2 ON t2.a = A.id EXISTS (SELECT * FROM t1 A INNER JOIN t2 ON t2.a = A.id
...@@ -1849,18 +1848,39 @@ id a ...@@ -1849,18 +1848,39 @@ id a
17 17 17 17
18 18 18 18
19 19 19 19
explain SELECT * FROM t1 set statement optimizer_use_condition_selectivity=2 for explain SELECT * FROM t1
WHERE WHERE
EXISTS (SELECT * FROM t1 A INNER JOIN t2 ON t2.a = A.id EXISTS (SELECT * FROM t1 A INNER JOIN t2 ON t2.a = A.id
WHERE A.a=t1.a AND t2.b < 20); WHERE A.a=t1.a AND t2.b < 20);
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 NULL NULL NULL NULL 100 Using where 1 PRIMARY t1 ALL NULL NULL NULL NULL 100 Using where
2 DEPENDENT SUBQUERY A ref PRIMARY,a a 5 test.t1.a 1 3 DEPENDENT SUBQUERY A ref PRIMARY,a a 5 test.t1.a 1
2 DEPENDENT SUBQUERY t2 ref|filter a,b a|b 5|5 test.A.id 1 (10%) Using where; Using rowid filter 3 DEPENDENT SUBQUERY t2 ref|filter a,b a|b 5|5 test.A.id 1 (10%) Using where; Using rowid filter
EXPLAIN SELECT * FROM t1 A, t1 B WHERE A.a = B.a and A.id = 65; set statement optimizer_use_condition_selectivity=4 for explain SELECT * FROM t1
WHERE
EXISTS (SELECT * FROM t1 A INNER JOIN t2 ON t2.a = A.id
WHERE A.a=t1.a AND t2.b < 20);
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 A const PRIMARY,a PRIMARY 4 const 1 1 PRIMARY t1 ALL NULL NULL NULL NULL 100 Using where
1 SIMPLE B ref a a 5 const 1 3 DEPENDENT SUBQUERY A ref PRIMARY,a a 5 test.t1.a 1
3 DEPENDENT SUBQUERY t2 ref|filter a,b a|b 5|5 test.A.id 1 (10%) Using where; Using rowid filter
set @query="EXPLAIN SELECT * FROM t1 A, t1 B WHERE A.a = B.a and A.id = 65";
set statement optimizer_use_condition_selectivity=2 for explain SELECT * FROM t1
WHERE
EXISTS (SELECT * FROM t1 A INNER JOIN t2 ON t2.a = A.id
WHERE A.a=t1.a AND t2.b < 20);
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 ALL NULL NULL NULL NULL 100 Using where
3 DEPENDENT SUBQUERY A ref PRIMARY,a a 5 test.t1.a 1
3 DEPENDENT SUBQUERY t2 ref|filter a,b a|b 5|5 test.A.id 1 (10%) Using where; Using rowid filter
set statement optimizer_use_condition_selectivity=4 for explain SELECT * FROM t1
WHERE
EXISTS (SELECT * FROM t1 A INNER JOIN t2 ON t2.a = A.id
WHERE A.a=t1.a AND t2.b < 20);
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 ALL NULL NULL NULL NULL 100 Using where
3 DEPENDENT SUBQUERY A ref PRIMARY,a a 5 test.t1.a 1
3 DEPENDENT SUBQUERY t2 ref|filter a,b a|b 5|5 test.A.id 1 (10%) Using where; Using rowid filter
explain SELECT * FROM t1 explain SELECT * FROM t1
WHERE WHERE
EXISTS (SELECT * FROM t1 A INNER JOIN t2 ON t2.a = A.id EXISTS (SELECT * FROM t1 A INNER JOIN t2 ON t2.a = A.id
...@@ -1870,7 +1890,6 @@ id select_type table type possible_keys key key_len ref rows Extra ...@@ -1870,7 +1890,6 @@ id select_type table type possible_keys key key_len ref rows Extra
2 DEPENDENT SUBQUERY A ref PRIMARY,a a 5 test.t1.a 1 2 DEPENDENT SUBQUERY A ref PRIMARY,a a 5 test.t1.a 1
2 DEPENDENT SUBQUERY t2 ref|filter a,b a|b 5|5 test.A.id 1 (10%) Using where; Using rowid filter 2 DEPENDENT SUBQUERY t2 ref|filter a,b a|b 5|5 test.A.id 1 (10%) Using where; Using rowid filter
set optimizer_switch= @save_optimizer_switch; set optimizer_switch= @save_optimizer_switch;
set optimizer_use_condition_selectivity= @save_optimizer_use_condition_selectivity;
drop table t1,t2; drop table t1,t2;
# #
# MDEV-21495: Conditional jump or move depends on uninitialised value in sel_arg_range_seq_next # MDEV-21495: Conditional jump or move depends on uninitialised value in sel_arg_range_seq_next
......
...@@ -1236,13 +1236,10 @@ set optimizer_use_condition_selectivity= @@optimizer_use_condition_selectivity; ...@@ -1236,13 +1236,10 @@ set optimizer_use_condition_selectivity= @@optimizer_use_condition_selectivity;
drop table t1,t2,t3; drop table t1,t2,t3;
--echo # --echo #
--echo # MDEV-20519: Query plan regression with optimizer_use_condition_selectivity=4 --echo # MDEV-20519: Query plan regression with optimizer_use_condition_selectivity=4
--echo # --echo #
create table t1 (id int, a int, PRIMARY KEY(id), key(a)); create table t1 (id int, a int, PRIMARY KEY(id), key(a));
insert into t1 select seq,seq from seq_1_to_100; insert into t1 select seq,seq from seq_1_to_100;
...@@ -1252,7 +1249,6 @@ insert into t2 select seq,seq,seq from seq_1_to_100; ...@@ -1252,7 +1249,6 @@ insert into t2 select seq,seq,seq from seq_1_to_100;
analyze table t1,t2 persistent for all; analyze table t1,t2 persistent for all;
set optimizer_switch='exists_to_in=off'; set optimizer_switch='exists_to_in=off';
set optimizer_use_condition_selectivity=2;
let $query= SELECT * FROM t1 let $query= SELECT * FROM t1
WHERE WHERE
...@@ -1260,14 +1256,16 @@ let $query= SELECT * FROM t1 ...@@ -1260,14 +1256,16 @@ let $query= SELECT * FROM t1
WHERE A.a=t1.a AND t2.b < 20); WHERE A.a=t1.a AND t2.b < 20);
eval $query; eval $query;
eval explain $query; eval set statement optimizer_use_condition_selectivity=2 for explain $query;
eval set statement optimizer_use_condition_selectivity=4 for explain $query;
EXPLAIN SELECT * FROM t1 A, t1 B WHERE A.a = B.a and A.id = 65; set @query="EXPLAIN SELECT * FROM t1 A, t1 B WHERE A.a = B.a and A.id = 65";
eval set statement optimizer_use_condition_selectivity=2 for explain $query;
eval set statement optimizer_use_condition_selectivity=4 for explain $query;
eval explain $query; eval explain $query;
set optimizer_switch= @save_optimizer_switch; set optimizer_switch= @save_optimizer_switch;
set optimizer_use_condition_selectivity= @save_optimizer_use_condition_selectivity;
drop table t1,t2; drop table t1,t2;
--echo # --echo #
......
...@@ -1834,7 +1834,6 @@ test.t1 analyze status OK ...@@ -1834,7 +1834,6 @@ test.t1 analyze status OK
test.t2 analyze status Engine-independent statistics collected test.t2 analyze status Engine-independent statistics collected
test.t2 analyze status OK test.t2 analyze status OK
set optimizer_switch='exists_to_in=off'; set optimizer_switch='exists_to_in=off';
set optimizer_use_condition_selectivity=2;
SELECT * FROM t1 SELECT * FROM t1
WHERE WHERE
EXISTS (SELECT * FROM t1 A INNER JOIN t2 ON t2.a = A.id EXISTS (SELECT * FROM t1 A INNER JOIN t2 ON t2.a = A.id
...@@ -1859,18 +1858,39 @@ id a ...@@ -1859,18 +1858,39 @@ id a
17 17 17 17
18 18 18 18
19 19 19 19
explain SELECT * FROM t1 set statement optimizer_use_condition_selectivity=2 for explain SELECT * FROM t1
WHERE WHERE
EXISTS (SELECT * FROM t1 A INNER JOIN t2 ON t2.a = A.id EXISTS (SELECT * FROM t1 A INNER JOIN t2 ON t2.a = A.id
WHERE A.a=t1.a AND t2.b < 20); WHERE A.a=t1.a AND t2.b < 20);
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 index NULL a 5 NULL 100 Using where; Using index 1 PRIMARY t1 index NULL a 5 NULL 100 Using where; Using index
2 DEPENDENT SUBQUERY A ref PRIMARY,a a 5 test.t1.a 1 Using index 3 DEPENDENT SUBQUERY A ref PRIMARY,a a 5 test.t1.a 1 Using index
2 DEPENDENT SUBQUERY t2 ref|filter a,b a|b 5|5 test.A.id 1 (19%) Using where; Using rowid filter 3 DEPENDENT SUBQUERY t2 ref|filter a,b a|b 5|5 test.A.id 1 (19%) Using where; Using rowid filter
EXPLAIN SELECT * FROM t1 A, t1 B WHERE A.a = B.a and A.id = 65; set statement optimizer_use_condition_selectivity=4 for explain SELECT * FROM t1
WHERE
EXISTS (SELECT * FROM t1 A INNER JOIN t2 ON t2.a = A.id
WHERE A.a=t1.a AND t2.b < 20);
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 A const PRIMARY,a PRIMARY 4 const 1 1 PRIMARY t1 index NULL a 5 NULL 100 Using where; Using index
1 SIMPLE B ref a a 5 const 1 Using index 3 DEPENDENT SUBQUERY A ref PRIMARY,a a 5 test.t1.a 1 Using index
3 DEPENDENT SUBQUERY t2 ref|filter a,b a|b 5|5 test.A.id 1 (19%) Using where; Using rowid filter
set @query="EXPLAIN SELECT * FROM t1 A, t1 B WHERE A.a = B.a and A.id = 65";
set statement optimizer_use_condition_selectivity=2 for explain SELECT * FROM t1
WHERE
EXISTS (SELECT * FROM t1 A INNER JOIN t2 ON t2.a = A.id
WHERE A.a=t1.a AND t2.b < 20);
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 index NULL a 5 NULL 100 Using where; Using index
3 DEPENDENT SUBQUERY A ref PRIMARY,a a 5 test.t1.a 1 Using index
3 DEPENDENT SUBQUERY t2 ref|filter a,b a|b 5|5 test.A.id 1 (19%) Using where; Using rowid filter
set statement optimizer_use_condition_selectivity=4 for explain SELECT * FROM t1
WHERE
EXISTS (SELECT * FROM t1 A INNER JOIN t2 ON t2.a = A.id
WHERE A.a=t1.a AND t2.b < 20);
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 index NULL a 5 NULL 100 Using where; Using index
3 DEPENDENT SUBQUERY A ref PRIMARY,a a 5 test.t1.a 1 Using index
3 DEPENDENT SUBQUERY t2 ref|filter a,b a|b 5|5 test.A.id 1 (19%) Using where; Using rowid filter
explain SELECT * FROM t1 explain SELECT * FROM t1
WHERE WHERE
EXISTS (SELECT * FROM t1 A INNER JOIN t2 ON t2.a = A.id EXISTS (SELECT * FROM t1 A INNER JOIN t2 ON t2.a = A.id
...@@ -1880,7 +1900,6 @@ id select_type table type possible_keys key key_len ref rows Extra ...@@ -1880,7 +1900,6 @@ id select_type table type possible_keys key key_len ref rows Extra
2 DEPENDENT SUBQUERY A ref PRIMARY,a a 5 test.t1.a 1 Using index 2 DEPENDENT SUBQUERY A ref PRIMARY,a a 5 test.t1.a 1 Using index
2 DEPENDENT SUBQUERY t2 ref|filter a,b a|b 5|5 test.A.id 1 (19%) Using where; Using rowid filter 2 DEPENDENT SUBQUERY t2 ref|filter a,b a|b 5|5 test.A.id 1 (19%) Using where; Using rowid filter
set optimizer_switch= @save_optimizer_switch; set optimizer_switch= @save_optimizer_switch;
set optimizer_use_condition_selectivity= @save_optimizer_use_condition_selectivity;
drop table t1,t2; drop table t1,t2;
# #
# MDEV-21495: Conditional jump or move depends on uninitialised value in sel_arg_range_seq_next # MDEV-21495: Conditional jump or move depends on uninitialised value in sel_arg_range_seq_next
......
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