mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 03:52:35 +01:00
Merge enabling of materialization=on by default with main tree.
This commit is contained in:
commit
f0d9908fc3
31 changed files with 342 additions and 225 deletions
|
@ -768,7 +768,7 @@ DROP TABLE t1;
|
|||
#
|
||||
# LP bug #803851: materialized view + IN->EXISTS
|
||||
#
|
||||
SET SESSION optimizer_switch='semijoin=off,derived_with_keys=on';
|
||||
SET SESSION optimizer_switch='semijoin=off,derived_with_keys=on,materialization=off';
|
||||
CREATE TABLE t1 (a int, b int);
|
||||
INSERT INTO t1 VALUES (2,2), (3,3), (1,1);
|
||||
CREATE TABLE t2 (a int);
|
||||
|
@ -1438,7 +1438,7 @@ KEY (c,a) , PRIMARY KEY (a)
|
|||
INSERT INTO t3 VALUES
|
||||
(14,4,'a'), (15,7,'b'), (16,4,'c'), (17,1,'d'), (18,9,'e'),
|
||||
(19,4,'f'), (20,8,'g');
|
||||
SET SESSION optimizer_switch='derived_merge=on,subquery_cache=off';
|
||||
SET SESSION optimizer_switch='derived_merge=on,subquery_cache=off,materialization=off';
|
||||
# The following two EXPLAINs must return the same execution plan
|
||||
EXPLAIN
|
||||
SELECT * FROM t1 , t2
|
||||
|
|
|
@ -1543,7 +1543,8 @@ EXPLAIN SELECT 1 FROM t1 WHERE a IN
|
|||
(SELECT a FROM t1 USE INDEX (i2) IGNORE INDEX (i2));
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 index PRIMARY,i2 PRIMARY 4 NULL 144 Using index
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 144 Using where; FirstMatch(t1)
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1
|
||||
2 SUBQUERY t1 ALL NULL NULL NULL NULL 144
|
||||
CREATE TABLE t2 (a INT, b INT, KEY(a));
|
||||
INSERT INTO t2 VALUES (1, 1), (2, 2), (3,3), (4,4);
|
||||
EXPLAIN SELECT a, SUM(b) FROM t2 GROUP BY a LIMIT 2;
|
||||
|
|
|
@ -2401,8 +2401,9 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||
EXPLAIN SELECT 1 FROM t1 AS t1_outer WHERE
|
||||
a IN (SELECT max(b) FROM t1 GROUP BY a HAVING a < 2);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1_outer index NULL a 10 NULL 15 Using where; Using index
|
||||
2 DEPENDENT SUBQUERY t1 index NULL a 10 NULL 1 Using index
|
||||
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 8 Using where
|
||||
1 PRIMARY t1_outer ref a a 5 <subquery2>.max(b) 2 Using index
|
||||
2 SUBQUERY t1 range NULL a 5 NULL 8 Using index for group-by
|
||||
EXPLAIN SELECT 1 FROM t1 AS t1_outer GROUP BY a HAVING
|
||||
a > (SELECT max(b) FROM t1 GROUP BY a HAVING a < 2);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
|
|
|
@ -763,8 +763,8 @@ t2.b NOT IN (SELECT t4.b FROM t3 STRAIGHT_JOIN t4 WHERE t4.b <= 2 AND t4.c = t3.
|
|||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 2
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where
|
||||
2 DEPENDENT SUBQUERY t3 ALL NULL NULL NULL NULL 2
|
||||
2 DEPENDENT SUBQUERY t4 ref_or_null b b 5 func 2 Using where; Full scan on NULL key
|
||||
2 SUBQUERY t3 ALL NULL NULL NULL NULL 2
|
||||
2 SUBQUERY t4 range b b 5 NULL 1 Using index condition; Using where; Rowid-ordered scan; Using join buffer (flat, BNL join)
|
||||
SELECT * FROM t1 LEFT JOIN t2 ON t1.c=t2.b
|
||||
WHERE
|
||||
t2.b NOT IN (SELECT t4.b FROM t3 STRAIGHT_JOIN t4 WHERE t4.b <= 2 AND t4.c = t3.c);
|
||||
|
|
|
@ -4,19 +4,19 @@
|
|||
#
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=on,loosescan=on,materialization=off,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off
|
||||
set optimizer_switch='index_merge=off,index_merge_union=off';
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=off,index_merge_union=off,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=on,loosescan=on,materialization=off,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off
|
||||
index_merge=off,index_merge_union=off,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off
|
||||
set optimizer_switch='index_merge_union=on';
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=off,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=on,loosescan=on,materialization=off,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off
|
||||
index_merge=off,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off
|
||||
set optimizer_switch='default,index_merge_sort_union=off';
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=off,index_merge_intersection=on,index_merge_sort_intersection=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=on,loosescan=on,materialization=off,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=off,index_merge_intersection=on,index_merge_sort_intersection=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off
|
||||
set optimizer_switch=4;
|
||||
ERROR 42000: Variable 'optimizer_switch' can't be set to the value of '4'
|
||||
set optimizer_switch=NULL;
|
||||
|
@ -43,27 +43,27 @@ set optimizer_switch=default;
|
|||
set optimizer_switch='index_merge=off,index_merge_union=off,default';
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=off,index_merge_union=off,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=on,loosescan=on,materialization=off,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off
|
||||
index_merge=off,index_merge_union=off,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off
|
||||
set optimizer_switch=default;
|
||||
select @@global.optimizer_switch;
|
||||
@@global.optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=on,loosescan=on,materialization=off,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off
|
||||
set @@global.optimizer_switch=default;
|
||||
select @@global.optimizer_switch;
|
||||
@@global.optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=on,loosescan=on,materialization=off,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off
|
||||
#
|
||||
# Check index_merge's @@optimizer_switch flags
|
||||
#
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=on,loosescan=on,materialization=off,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off
|
||||
|
||||
BUG#37120 optimizer_switch allowable values not according to specification
|
||||
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=on,loosescan=on,materialization=off,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off
|
||||
set optimizer_switch='default,materialization=off';
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
|
@ -71,11 +71,11 @@ index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_inters
|
|||
set optimizer_switch='default,semijoin=off';
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=on,loosescan=on,materialization=off,in_to_exists=on,semijoin=off,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=off,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off
|
||||
set optimizer_switch='default,loosescan=off';
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=on,loosescan=off,materialization=off,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=on,loosescan=off,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off
|
||||
set optimizer_switch='default,semijoin=off,materialization=off';
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
|
@ -91,7 +91,7 @@ index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_inters
|
|||
set optimizer_switch='default,semijoin=off,loosescan=off';
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=on,loosescan=off,materialization=off,in_to_exists=on,semijoin=off,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=on,loosescan=off,materialization=on,in_to_exists=on,semijoin=off,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off
|
||||
set optimizer_switch='default,materialization=off,loosescan=off';
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
|
@ -99,4 +99,4 @@ index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_inters
|
|||
set optimizer_switch=default;
|
||||
select @@optimizer_switch;
|
||||
@@optimizer_switch
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=on,loosescan=on,materialization=off,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off
|
||||
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,index_condition_pushdown=off,derived_merge=off,derived_with_keys=off,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=off,semijoin_with_cache=off,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=off
|
||||
|
|
|
@ -2969,9 +2969,10 @@ Note 1003 select `test`.`t1`.`one` AS `one`,`test`.`t1`.`two` AS `two`,<expr_cac
|
|||
explain extended SELECT one,two from t1 where ROW(one,two) IN (SELECT one,two FROM t2 WHERE flag = 'N');
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 8 100.00
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 9 100.00 Using where; FirstMatch(t1)
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 10 func,func 1 100.00
|
||||
2 SUBQUERY t2 ALL NULL NULL NULL NULL 9 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`one` AS `one`,`test`.`t1`.`two` AS `two` from `test`.`t1` semi join (`test`.`t2`) where ((`test`.`t2`.`two` = `test`.`t1`.`two`) and (`test`.`t2`.`one` = `test`.`t1`.`one`) and (`test`.`t2`.`flag` = 'N'))
|
||||
Note 1003 select `test`.`t1`.`one` AS `one`,`test`.`t1`.`two` AS `two` from `test`.`t1` semi join (`test`.`t2`) where ((`test`.`t2`.`flag` = 'N'))
|
||||
explain extended SELECT one,two,ROW(one,two) IN (SELECT one,two FROM t2 WHERE flag = '0' group by one,two) as 'test' from t1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 8 100.00
|
||||
|
@ -3558,7 +3559,8 @@ EXPLAIN
|
|||
SELECT * FROM t1 WHERE (a,b) = ANY (SELECT a, max(b) FROM t1 GROUP BY a);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 9 Using where
|
||||
2 DEPENDENT SUBQUERY t1 ALL NULL NULL NULL NULL 9 Using temporary
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 23 test.t1.a,test.t1.b 1
|
||||
2 SUBQUERY t1 ALL NULL NULL NULL NULL 9 Using temporary
|
||||
ALTER TABLE t1 ADD INDEX(a);
|
||||
SELECT * FROM t1 WHERE (a,b) = ANY (SELECT a, max(b) FROM t1 GROUP BY a);
|
||||
a b
|
||||
|
@ -3568,8 +3570,9 @@ AAA 8
|
|||
EXPLAIN
|
||||
SELECT * FROM t1 WHERE (a,b) = ANY (SELECT a, max(b) FROM t1 GROUP BY a);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 9 Using where
|
||||
2 DEPENDENT SUBQUERY t1 index NULL a 8 NULL 1
|
||||
1 PRIMARY t1 ALL a NULL NULL NULL 9 Using where
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 23 test.t1.a,test.t1.b 1
|
||||
2 SUBQUERY t1 ALL NULL NULL NULL NULL 9 Using temporary
|
||||
DROP TABLE t1;
|
||||
create table t1( f1 int,f2 int);
|
||||
insert into t1 values (1,1),(2,2);
|
||||
|
@ -4459,15 +4462,17 @@ INSERT INTO t1 VALUES (1),(2);
|
|||
EXPLAIN EXTENDED SELECT 1 FROM t1 WHERE 1 IN (SELECT 1 FROM t1 GROUP BY a);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 100.00
|
||||
2 DEPENDENT SUBQUERY t1 ALL NULL NULL NULL NULL 2 100.00 Using temporary
|
||||
1 PRIMARY <subquery2> const distinct_key distinct_key 4 const 1 100.00
|
||||
2 SUBQUERY t1 ALL NULL NULL NULL NULL 2 100.00 Using temporary
|
||||
Warnings:
|
||||
Note 1003 select 1 AS `1` from `test`.`t1` where <expr_cache><1>(<in_optimizer>(1,<exists>(select 1 from `test`.`t1` group by `test`.`t1`.`a` having (1 = <ref_null_helper>(1)))))
|
||||
Note 1003 select 1 AS `1` from <materialize> (select 1 from `test`.`t1` group by `test`.`t1`.`a`) join `test`.`t1` where (`<subquery2>`.`1` = 1)
|
||||
EXPLAIN EXTENDED SELECT 1 FROM t1 WHERE 1 IN (SELECT 1 FROM t1 WHERE a > 3 GROUP BY a);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 100.00
|
||||
2 DEPENDENT SUBQUERY t1 ALL NULL NULL NULL NULL 2 100.00 Using where; Using temporary
|
||||
1 PRIMARY <subquery2> const distinct_key distinct_key 4 const 1 100.00
|
||||
2 SUBQUERY t1 ALL NULL NULL NULL NULL 2 100.00 Using where; Using temporary
|
||||
Warnings:
|
||||
Note 1003 select 1 AS `1` from `test`.`t1` where <expr_cache><1>(<in_optimizer>(1,<exists>(select 1 from `test`.`t1` where (`test`.`t1`.`a` > 3) group by `test`.`t1`.`a` having (1 = <ref_null_helper>(1)))))
|
||||
Note 1003 select 1 AS `1` from <materialize> (select 1 from `test`.`t1` where (`test`.`t1`.`a` > 3) group by `test`.`t1`.`a`) join `test`.`t1` where (`<subquery2>`.`1` = 1)
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug#45061: Incorrectly market field caused wrong result.
|
||||
|
@ -5149,10 +5154,11 @@ explain SELECT * FROM ot1,ot4
|
|||
WHERE (ot1.a,ot4.a) IN (SELECT it2.a,it3.a
|
||||
FROM it2,it3);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY ot1 ALL NULL NULL NULL NULL 2 Start temporary
|
||||
1 PRIMARY it2 ALL NULL NULL NULL NULL 4 Using where; Using join buffer (flat, BNL join)
|
||||
1 PRIMARY it3 ALL NULL NULL NULL NULL 6 Using join buffer (flat, BNL join)
|
||||
1 PRIMARY ot4 ALL NULL NULL NULL NULL 8 Using where; End temporary; Using join buffer (flat, BNL join)
|
||||
1 PRIMARY ot1 ALL NULL NULL NULL NULL 2
|
||||
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 24 Using where
|
||||
1 PRIMARY ot4 ALL NULL NULL NULL NULL 8 Using where; Using join buffer (flat, BNL join)
|
||||
2 SUBQUERY it2 ALL NULL NULL NULL NULL 4
|
||||
2 SUBQUERY it3 ALL NULL NULL NULL NULL 6 Using join buffer (flat, BNL join)
|
||||
DROP TABLE IF EXISTS ot1, ot4, it2, it3;
|
||||
#
|
||||
# Bug#729039: NULL keys used to evaluate subquery
|
||||
|
|
|
@ -977,7 +977,7 @@ i1 i2
|
|||
# Baseline:
|
||||
SHOW STATUS LIKE '%Handler_read_rnd_next';
|
||||
Variable_name Value
|
||||
Handler_read_rnd_next 17
|
||||
Handler_read_rnd_next 18
|
||||
|
||||
INSERT INTO t1 VALUES (NULL, NULL);
|
||||
FLUSH STATUS;
|
||||
|
@ -994,7 +994,7 @@ i1 i2
|
|||
# (read record from t1, but do not read from t2)
|
||||
SHOW STATUS LIKE '%Handler_read_rnd_next';
|
||||
Variable_name Value
|
||||
Handler_read_rnd_next 18
|
||||
Handler_read_rnd_next 19
|
||||
set @@optimizer_switch=@save_optimizer_switch2;
|
||||
DROP TABLE t1,t2;
|
||||
End of 5.1 tests
|
||||
|
@ -1025,6 +1025,8 @@ create table t11 select * from t1 where b = 67 AND (c IS NULL OR c > NOW()) orde
|
|||
create table t12 select * from t1 where b = 67 AND (c IS NULL OR c > NOW()) order by 3 desc;
|
||||
create table t21 select * from t1 where b = 67 AND (c IS NULL OR c > '2005-12-08') order by 3 asc;
|
||||
create table t22 select * from t1 where b = 67 AND (c IS NULL OR c > '2005-12-08') order by 3 desc;
|
||||
set @@optimizer_switch=@save_optimizer_switch;
|
||||
set @@optimizer_switch='materialization=off';
|
||||
update t22 set c = '2005-12-08 15:58:27' where a = 255;
|
||||
explain select t21.* from t21,t22 where t21.a = t22.a and
|
||||
t22.a in (select t12.a from t11, t12 where t11.a in(255,256) and t11.a = t12.a and t11.c is null) and t22.c is null order by t21.a;
|
||||
|
@ -1037,10 +1039,11 @@ select t21.* from t21,t22 where t21.a = t22.a and
|
|||
t22.a in (select t12.a from t11, t12 where t11.a in(255,256) and t11.a = t12.a and t11.c is null) and t22.c is null order by t21.a;
|
||||
a b c
|
||||
256 67 NULL
|
||||
set @@optimizer_switch=@save_optimizer_switch;
|
||||
drop table t1, t11, t12, t21, t22;
|
||||
create table t1(a int);
|
||||
insert into t1 values (0),(1);
|
||||
set @@optimizer_switch='firstmatch=off';
|
||||
set @@optimizer_switch='firstmatch=off,materialization=off';
|
||||
explain
|
||||
select (select max(Y.a) from t1 Y where a in (select a from t1 Z) and a < X.a) as subq from t1 X;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
|
@ -1114,6 +1117,8 @@ a
|
|||
18
|
||||
19
|
||||
set @@optimizer_switch=@save_optimizer_switch;
|
||||
set @@optimizer_switch=@save_optimizer_switch;
|
||||
set @@optimizer_switch='materialization=off';
|
||||
explain select * from (select a from t0) X where a in (select a from t1);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 11
|
||||
|
@ -1140,6 +1145,7 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||
1 PRIMARY t4 eq_ref PRIMARY PRIMARY 4 test.t1.c 1 Using index; FirstMatch(t1)
|
||||
1 PRIMARY t3 ALL NULL NULL NULL NULL 100 Using where; Using join buffer (flat, BNL join)
|
||||
drop table t1, t3, t4;
|
||||
set @@optimizer_switch=@save_optimizer_switch;
|
||||
create table t1 (a int) as select * from t0 where a < 5;
|
||||
set @save_max_heap_table_size=@@max_heap_table_size;
|
||||
set @@optimizer_switch='firstmatch=off,materialization=off';
|
||||
|
@ -1169,8 +1175,9 @@ create table t3 ( a int , filler char(100), key(a));
|
|||
insert into t3 select A.a + 10*B.a, 'filler' from t0 A, t0 B;
|
||||
explain select * from t3 where a in (select a from t2) and (a > 5 or a < 10);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where; Start temporary
|
||||
1 PRIMARY t3 ref a a 5 test.t2.a 1 End temporary
|
||||
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 2
|
||||
1 PRIMARY t3 ref a a 5 test.t2.a 1
|
||||
2 SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where
|
||||
select * from t3 where a in (select a from t2);
|
||||
a filler
|
||||
1 filler
|
||||
|
@ -1209,6 +1216,8 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 Using where; End temporary; Using join buffer (flat, BNL join)
|
||||
drop table t1;
|
||||
set @@optimizer_switch=@save_optimizer_switch;
|
||||
set @@optimizer_switch=@save_optimizer_switch;
|
||||
set @@optimizer_switch='materialization=off';
|
||||
create table t1 (a int);
|
||||
insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
||||
create table t2 as select * from t1;
|
||||
|
@ -1269,11 +1278,12 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||
1 PRIMARY t1 range a a 5 NULL 8 Using where; Using index; LooseScan
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 100 Using where; Using join buffer (flat, BNL join)
|
||||
drop table t1,t2;
|
||||
set @@optimizer_switch=@save_optimizer_switch;
|
||||
create table t1 (a int, b int);
|
||||
insert into t1 select a,a from t0;
|
||||
create table t2 (a int, b int);
|
||||
insert into t2 select A.a + 10*B.a, A.a + 10*B.a from t0 A, t0 B;
|
||||
set @@optimizer_switch='firstmatch=off';
|
||||
set @@optimizer_switch='firstmatch=off,materialization=off';
|
||||
explain select * from t1 where (a,b) in (select a,b from t2);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 10 Start temporary
|
||||
|
@ -1287,6 +1297,7 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||
set @@optimizer_search_depth=@save_optimizer_search_depth;
|
||||
set @@optimizer_switch=@save_optimizer_switch;
|
||||
drop table t0, t1, t2;
|
||||
set @@optimizer_switch='materialization=off';
|
||||
create table t0 (a decimal(4,2));
|
||||
insert into t0 values (10.24), (22.11);
|
||||
create table t1 as select * from t0;
|
||||
|
@ -1325,6 +1336,7 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||
1 PRIMARY Y ALL NULL NULL NULL NULL 6 Using where; Using join buffer (flat, BNL join)
|
||||
1 PRIMARY Z ALL NULL NULL NULL NULL 6 Using where; End temporary; Using join buffer (flat, BNL join)
|
||||
drop table t0,t1,t2;
|
||||
set @@optimizer_switch=@save_optimizer_switch;
|
||||
|
||||
BUG#37842: Assertion in DsMrr_impl::dsmrr_init, at handler.cc:4307
|
||||
|
||||
|
@ -1386,6 +1398,8 @@ postalStripped varchar(100)
|
|||
);
|
||||
insert into t3 values (1,1, 'foo'), (2,2,'bar');
|
||||
The following must be converted to a semi-join:
|
||||
set @save_optimizer_switch=@@optimizer_switch;
|
||||
set @@optimizer_switch='materialization=off';
|
||||
explain extended SELECT a.idIndividual FROM t1 a
|
||||
WHERE a.idIndividual IN
|
||||
( SELECT c.idObj FROM t3 cona
|
||||
|
@ -1398,6 +1412,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||
1 PRIMARY a eq_ref PRIMARY PRIMARY 4 test.c.idObj 1 100.00 Using index; End temporary
|
||||
Warnings:
|
||||
Note 1003 select `test`.`a`.`idIndividual` AS `idIndividual` from `test`.`t1` `a` semi join (`test`.`t3` `cona` join `test`.`t2` `c`) where ((`test`.`c`.`idContact` = `test`.`cona`.`idContact`) and (`test`.`a`.`idIndividual` = `test`.`c`.`idObj`) and (`test`.`cona`.`postalStripped` = 'T2H3B2'))
|
||||
set @@optimizer_switch=@save_optimizer_switch;
|
||||
drop table t1,t2,t3;
|
||||
#
|
||||
# BUG#47367 Crash in Name_resolution_context::process_error
|
||||
|
|
|
@ -986,7 +986,7 @@ i1 i2
|
|||
# Baseline:
|
||||
SHOW STATUS LIKE '%Handler_read_rnd_next';
|
||||
Variable_name Value
|
||||
Handler_read_rnd_next 17
|
||||
Handler_read_rnd_next 18
|
||||
|
||||
INSERT INTO t1 VALUES (NULL, NULL);
|
||||
FLUSH STATUS;
|
||||
|
@ -1003,7 +1003,7 @@ i1 i2
|
|||
# (read record from t1, but do not read from t2)
|
||||
SHOW STATUS LIKE '%Handler_read_rnd_next';
|
||||
Variable_name Value
|
||||
Handler_read_rnd_next 18
|
||||
Handler_read_rnd_next 19
|
||||
set @@optimizer_switch=@save_optimizer_switch2;
|
||||
DROP TABLE t1,t2;
|
||||
End of 5.1 tests
|
||||
|
@ -1034,6 +1034,8 @@ create table t11 select * from t1 where b = 67 AND (c IS NULL OR c > NOW()) orde
|
|||
create table t12 select * from t1 where b = 67 AND (c IS NULL OR c > NOW()) order by 3 desc;
|
||||
create table t21 select * from t1 where b = 67 AND (c IS NULL OR c > '2005-12-08') order by 3 asc;
|
||||
create table t22 select * from t1 where b = 67 AND (c IS NULL OR c > '2005-12-08') order by 3 desc;
|
||||
set @@optimizer_switch=@save_optimizer_switch;
|
||||
set @@optimizer_switch='materialization=off';
|
||||
update t22 set c = '2005-12-08 15:58:27' where a = 255;
|
||||
explain select t21.* from t21,t22 where t21.a = t22.a and
|
||||
t22.a in (select t12.a from t11, t12 where t11.a in(255,256) and t11.a = t12.a and t11.c is null) and t22.c is null order by t21.a;
|
||||
|
@ -1046,10 +1048,11 @@ select t21.* from t21,t22 where t21.a = t22.a and
|
|||
t22.a in (select t12.a from t11, t12 where t11.a in(255,256) and t11.a = t12.a and t11.c is null) and t22.c is null order by t21.a;
|
||||
a b c
|
||||
256 67 NULL
|
||||
set @@optimizer_switch=@save_optimizer_switch;
|
||||
drop table t1, t11, t12, t21, t22;
|
||||
create table t1(a int);
|
||||
insert into t1 values (0),(1);
|
||||
set @@optimizer_switch='firstmatch=off';
|
||||
set @@optimizer_switch='firstmatch=off,materialization=off';
|
||||
explain
|
||||
select (select max(Y.a) from t1 Y where a in (select a from t1 Z) and a < X.a) as subq from t1 X;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
|
@ -1123,6 +1126,8 @@ a
|
|||
18
|
||||
19
|
||||
set @@optimizer_switch=@save_optimizer_switch;
|
||||
set @@optimizer_switch=@save_optimizer_switch;
|
||||
set @@optimizer_switch='materialization=off';
|
||||
explain select * from (select a from t0) X where a in (select a from t1);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 11
|
||||
|
@ -1149,6 +1154,7 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||
1 PRIMARY t4 eq_ref PRIMARY PRIMARY 4 test.t1.c 1 Using index; FirstMatch(t1)
|
||||
1 PRIMARY t3 ALL NULL NULL NULL NULL 100 Using where; Using join buffer (flat, BNL join)
|
||||
drop table t1, t3, t4;
|
||||
set @@optimizer_switch=@save_optimizer_switch;
|
||||
create table t1 (a int) as select * from t0 where a < 5;
|
||||
set @save_max_heap_table_size=@@max_heap_table_size;
|
||||
set @@optimizer_switch='firstmatch=off,materialization=off';
|
||||
|
@ -1178,8 +1184,9 @@ create table t3 ( a int , filler char(100), key(a));
|
|||
insert into t3 select A.a + 10*B.a, 'filler' from t0 A, t0 B;
|
||||
explain select * from t3 where a in (select a from t2) and (a > 5 or a < 10);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where; Start temporary
|
||||
1 PRIMARY t3 ref a a 5 test.t2.a 1 End temporary; Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan
|
||||
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 2
|
||||
1 PRIMARY t3 ref a a 5 test.t2.a 1 Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan
|
||||
2 SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where
|
||||
select * from t3 where a in (select a from t2);
|
||||
a filler
|
||||
1 filler
|
||||
|
@ -1218,6 +1225,8 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||
1 PRIMARY t1 hash_ALL NULL #hash#$hj 6 test.t1.a 2 Using where; End temporary; Using join buffer (flat, BNLH join)
|
||||
drop table t1;
|
||||
set @@optimizer_switch=@save_optimizer_switch;
|
||||
set @@optimizer_switch=@save_optimizer_switch;
|
||||
set @@optimizer_switch='materialization=off';
|
||||
create table t1 (a int);
|
||||
insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
||||
create table t2 as select * from t1;
|
||||
|
@ -1278,11 +1287,12 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||
1 PRIMARY t1 range a a 5 NULL 8 Using where; Using index; LooseScan
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 100 Using where; Using join buffer (flat, BNL join)
|
||||
drop table t1,t2;
|
||||
set @@optimizer_switch=@save_optimizer_switch;
|
||||
create table t1 (a int, b int);
|
||||
insert into t1 select a,a from t0;
|
||||
create table t2 (a int, b int);
|
||||
insert into t2 select A.a + 10*B.a, A.a + 10*B.a from t0 A, t0 B;
|
||||
set @@optimizer_switch='firstmatch=off';
|
||||
set @@optimizer_switch='firstmatch=off,materialization=off';
|
||||
explain select * from t1 where (a,b) in (select a,b from t2);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 10 Using where; Start temporary
|
||||
|
@ -1296,6 +1306,7 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||
set @@optimizer_search_depth=@save_optimizer_search_depth;
|
||||
set @@optimizer_switch=@save_optimizer_switch;
|
||||
drop table t0, t1, t2;
|
||||
set @@optimizer_switch='materialization=off';
|
||||
create table t0 (a decimal(4,2));
|
||||
insert into t0 values (10.24), (22.11);
|
||||
create table t1 as select * from t0;
|
||||
|
@ -1334,6 +1345,7 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||
1 PRIMARY Y hash_ALL NULL #hash#$hj 5 test.t1.b 6 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 PRIMARY Z hash_ALL NULL #hash#$hj 5 test.t1.c 6 Using where; End temporary; Using join buffer (incremental, BNLH join)
|
||||
drop table t0,t1,t2;
|
||||
set @@optimizer_switch=@save_optimizer_switch;
|
||||
|
||||
BUG#37842: Assertion in DsMrr_impl::dsmrr_init, at handler.cc:4307
|
||||
|
||||
|
@ -1395,6 +1407,8 @@ postalStripped varchar(100)
|
|||
);
|
||||
insert into t3 values (1,1, 'foo'), (2,2,'bar');
|
||||
The following must be converted to a semi-join:
|
||||
set @save_optimizer_switch=@@optimizer_switch;
|
||||
set @@optimizer_switch='materialization=off';
|
||||
explain extended SELECT a.idIndividual FROM t1 a
|
||||
WHERE a.idIndividual IN
|
||||
( SELECT c.idObj FROM t3 cona
|
||||
|
@ -1407,6 +1421,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||
1 PRIMARY a eq_ref PRIMARY PRIMARY 4 test.c.idObj 1 100.00 Using index; End temporary
|
||||
Warnings:
|
||||
Note 1003 select `test`.`a`.`idIndividual` AS `idIndividual` from `test`.`t1` `a` semi join (`test`.`t3` `cona` join `test`.`t2` `c`) where ((`test`.`c`.`idContact` = `test`.`cona`.`idContact`) and (`test`.`a`.`idIndividual` = `test`.`c`.`idObj`) and (`test`.`cona`.`postalStripped` = 'T2H3B2'))
|
||||
set @@optimizer_switch=@save_optimizer_switch;
|
||||
drop table t1,t2,t3;
|
||||
#
|
||||
# BUG#47367 Crash in Name_resolution_context::process_error
|
||||
|
|
|
@ -118,6 +118,8 @@ CREATE TABLE t4 ( a INT );
|
|||
INSERT INTO t4 VALUES (1), (2), (3);
|
||||
CREATE TABLE t5 ( a INT );
|
||||
INSERT INTO t5 VALUES (NULL), (2);
|
||||
SET @old_optimizer_switch = @@session.optimizer_switch;
|
||||
SET SESSION optimizer_switch = 'materialization=off,in_to_exists=on,semijoin=off';
|
||||
EXPLAIN
|
||||
SELECT * FROM t1 WHERE ( a, b ) NOT IN ( SELECT c, d FROM t2 );
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
|
@ -189,6 +191,7 @@ SELECT * FROM t1 WHERE NULL NOT IN ( SELECT c FROM t2 WHERE c = 1 AND c <> 1 );
|
|||
a b
|
||||
1 NULL
|
||||
2 NULL
|
||||
SET SESSION optimizer_switch = @old_optimizer_switch;
|
||||
DROP TABLE t1, t2, t3, t4, t5;
|
||||
#
|
||||
# Bug#58207: invalid memory reads when using default column value and
|
||||
|
@ -1243,17 +1246,19 @@ EXPLAIN
|
|||
SELECT * FROM (t2 LEFT JOIN t1 ON t1.c1) LEFT JOIN t3 on t3.c1 WHERE 's' IN (SELECT c1 FROM t2);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 system NULL NULL NULL NULL 0 const row not found
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where; Start temporary; End temporary
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 5 func 1
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using join buffer (flat, BNL join)
|
||||
1 PRIMARY t3 ALL NULL NULL NULL NULL 3 Using where
|
||||
2 SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where
|
||||
SELECT * FROM (t2 LEFT JOIN t1 ON t1.c1) LEFT JOIN t3 on t3.c1 WHERE 's' IN (SELECT c1 FROM t2);
|
||||
c1 c1 c1
|
||||
EXPLAIN
|
||||
SELECT * FROM t4 LEFT JOIN t2 ON t4.c1 WHERE 's' IN (SELECT c1 FROM t2);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where; Start temporary; End temporary
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 5 func 1
|
||||
1 PRIMARY t4 index NULL PRIMARY 3 NULL 2 Using index; Using join buffer (flat, BNL join)
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where
|
||||
2 SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where
|
||||
SELECT * FROM t4 LEFT JOIN t2 ON t4.c1 WHERE 's' IN (SELECT c1 FROM t2);
|
||||
c1 c1
|
||||
drop table t1, t2, t3, t4;
|
||||
|
|
|
@ -1338,11 +1338,11 @@ Subquery_cache_miss 0
|
|||
show status like '%Handler_read%';
|
||||
Variable_name Value
|
||||
Handler_read_first 0
|
||||
Handler_read_key 0
|
||||
Handler_read_key 11
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_next 188
|
||||
Handler_read_rnd_next 145
|
||||
set optimizer_switch='subquery_cache=on';
|
||||
flush status;
|
||||
select a, b , exists (select * from t2 where b=d) as SUBSE, b in (select d from t2) as SUBSI, (select d from t2 where b=c) SUBSR from t1;
|
||||
|
@ -1366,11 +1366,11 @@ Subquery_cache_miss 18
|
|||
show status like '%Handler_read%';
|
||||
Variable_name Value
|
||||
Handler_read_first 0
|
||||
Handler_read_key 27
|
||||
Handler_read_key 32
|
||||
Handler_read_next 0
|
||||
Handler_read_prev 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_next 102
|
||||
Handler_read_rnd_next 84
|
||||
#several subqueries (several levels)
|
||||
set optimizer_switch='subquery_cache=off';
|
||||
flush status;
|
||||
|
|
|
@ -307,7 +307,8 @@ EXPLAIN SELECT 1 FROM t1 WHERE a IN
|
|||
(SELECT a FROM t1 USE INDEX (i2) IGNORE INDEX (i2));
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 index PRIMARY,i2 PRIMARY 4 NULL 144 Using index
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 144 Using where; FirstMatch(t1); Using join buffer (flat, BNL join)
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1
|
||||
2 SUBQUERY t1 ALL NULL NULL NULL NULL 144
|
||||
CREATE TABLE t2 (a INT, b INT, KEY(a));
|
||||
INSERT INTO t2 VALUES (1, 1), (2, 2), (3,3), (4,4);
|
||||
EXPLAIN SELECT a, SUM(b) FROM t2 GROUP BY a LIMIT 2;
|
||||
|
|
|
@ -311,7 +311,7 @@ EXPLAIN SELECT 1 FROM t1 WHERE a IN
|
|||
(SELECT a FROM t1 USE INDEX (i2) IGNORE INDEX (i2));
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 index NULL PRIMARY 4 NULL 144 Using where; Using index
|
||||
2 DEPENDENT SUBQUERY t1 ALL NULL NULL NULL NULL 144 Using where
|
||||
2 SUBQUERY t1 ALL NULL NULL NULL NULL 144
|
||||
CREATE TABLE t2 (a INT, b INT, KEY(a));
|
||||
INSERT INTO t2 VALUES (1, 1), (2, 2), (3,3), (4,4);
|
||||
EXPLAIN SELECT a, SUM(b) FROM t2 GROUP BY a LIMIT 2;
|
||||
|
@ -324,7 +324,7 @@ EXPLAIN SELECT 1 FROM t2 WHERE a IN
|
|||
(SELECT a FROM t1 USE INDEX (i2) IGNORE INDEX (i2));
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t2 index NULL a 5 NULL 4 Using where; Using index
|
||||
2 DEPENDENT SUBQUERY t1 ALL NULL NULL NULL NULL 144 Using where
|
||||
2 SUBQUERY t1 ALL NULL NULL NULL NULL 144
|
||||
DROP TABLE t1, t2;
|
||||
#
|
||||
# From derived_view.test
|
||||
|
@ -349,9 +349,9 @@ WHERE t.a IN (SELECT b FROM t1);
|
|||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 system NULL NULL NULL NULL 1 100.00
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
3 DEPENDENT SUBQUERY t1 system NULL NULL NULL NULL 1 100.00
|
||||
3 SUBQUERY t1 system NULL NULL NULL NULL 1 100.00
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t2`.`a` AS `a`,0 AS `a`,0 AS `b` from `test`.`t1` left join `test`.`t2` on((0 <> 0)) where <expr_cache><0>(<in_optimizer>(0,<exists>(select 0 from `test`.`t1` where (<cache>(0) = 0))))
|
||||
Note 1003 select `test`.`t2`.`a` AS `a`,0 AS `a`,0 AS `b` from `test`.`t1` left join `test`.`t2` on((0 <> 0)) where <expr_cache><0>(<in_optimizer>(0,0 in ( <materialize> (select 0 from `test`.`t1` ), <primary_index_lookup>(0 in <temporary table> on distinct_key where ((0 = `<subquery3>`.`b`))))))
|
||||
SELECT * FROM t2 RIGHT JOIN v1 AS t ON t.a != 0
|
||||
WHERE t.a IN (SELECT b FROM t1);
|
||||
a a b
|
||||
|
@ -362,9 +362,9 @@ WHERE t.a IN (SELECT b FROM t1);
|
|||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 system NULL NULL NULL NULL 1 100.00
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
2 DEPENDENT SUBQUERY t1 system NULL NULL NULL NULL 1 100.00
|
||||
2 SUBQUERY t1 system NULL NULL NULL NULL 1 100.00
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t2`.`a` AS `a`,0 AS `a`,0 AS `b` from `test`.`t1` left join `test`.`t2` on((0 <> 0)) where <expr_cache><0>(<in_optimizer>(0,<exists>(select 0 from `test`.`t1` where (<cache>(0) = 0))))
|
||||
Note 1003 select `test`.`t2`.`a` AS `a`,0 AS `a`,0 AS `b` from `test`.`t1` left join `test`.`t2` on((0 <> 0)) where <expr_cache><0>(<in_optimizer>(0,0 in ( <materialize> (select 0 from `test`.`t1` ), <primary_index_lookup>(0 in <temporary table> on distinct_key where ((0 = `<subquery2>`.`b`))))))
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
|
|
|
@ -292,7 +292,7 @@ insert into t2 values (0,0,0,'filler'),(0,1,1,'filler'),(0,2,2,'filler'),(0,3,3,
|
|||
create index key1 on t2 (kp1, kp2);
|
||||
create index key2 on t2 (kp1);
|
||||
create index key3 on t2 (kp2);
|
||||
set session optimizer_switch='default';
|
||||
SET @@optimizer_switch='materialization=off,semijoin=off,in_to_exists=on';
|
||||
analyze table t2;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t2 analyze status OK
|
||||
|
@ -303,6 +303,7 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||
2 DEPENDENT SUBQUERY t2 index_subquery key1,key2,key3 key1 10 func,const 1 Using where
|
||||
select c1 from t1 where c1 in (select kp1 from t2 where kp2 = 10 and c2 = 4) or c1 > 7;
|
||||
c1
|
||||
set @@optimizer_switch='default';
|
||||
drop table t1, t2;
|
||||
#
|
||||
# LP BUG#800679: Assertion `outer_join->table_count > 0' failed in
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
select @@optimizer_switch like '%materialization=on%';
|
||||
@@optimizer_switch like '%materialization=on%'
|
||||
0
|
||||
1
|
||||
set optimizer_switch='materialization=off';
|
||||
set optimizer_switch='mrr=on,mrr_sort_keys=on,index_condition_pushdown=on';
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t11,t12;
|
||||
|
@ -5674,4 +5674,4 @@ set optimizer_switch=@subselect_tmp;
|
|||
set optimizer_switch=default;
|
||||
select @@optimizer_switch like '%materialization=on%';
|
||||
@@optimizer_switch like '%materialization=on%'
|
||||
0
|
||||
1
|
||||
|
|
|
@ -2973,9 +2973,10 @@ Note 1003 select `test`.`t1`.`one` AS `one`,`test`.`t1`.`two` AS `two`,<in_optim
|
|||
explain extended SELECT one,two from t1 where ROW(one,two) IN (SELECT one,two FROM t2 WHERE flag = 'N');
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 8 100.00
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 9 100.00 Using where; FirstMatch(t1)
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 10 func,func 1 100.00
|
||||
2 SUBQUERY t2 ALL NULL NULL NULL NULL 9 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`one` AS `one`,`test`.`t1`.`two` AS `two` from `test`.`t1` semi join (`test`.`t2`) where ((`test`.`t2`.`two` = `test`.`t1`.`two`) and (`test`.`t2`.`one` = `test`.`t1`.`one`) and (`test`.`t2`.`flag` = 'N'))
|
||||
Note 1003 select `test`.`t1`.`one` AS `one`,`test`.`t1`.`two` AS `two` from `test`.`t1` semi join (`test`.`t2`) where ((`test`.`t2`.`flag` = 'N'))
|
||||
explain extended SELECT one,two,ROW(one,two) IN (SELECT one,two FROM t2 WHERE flag = '0' group by one,two) as 'test' from t1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 8 100.00
|
||||
|
@ -3562,7 +3563,8 @@ EXPLAIN
|
|||
SELECT * FROM t1 WHERE (a,b) = ANY (SELECT a, max(b) FROM t1 GROUP BY a);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 9 Using where
|
||||
2 DEPENDENT SUBQUERY t1 ALL NULL NULL NULL NULL 9 Using temporary
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 23 test.t1.a,test.t1.b 1
|
||||
2 SUBQUERY t1 ALL NULL NULL NULL NULL 9 Using temporary
|
||||
ALTER TABLE t1 ADD INDEX(a);
|
||||
SELECT * FROM t1 WHERE (a,b) = ANY (SELECT a, max(b) FROM t1 GROUP BY a);
|
||||
a b
|
||||
|
@ -3572,8 +3574,9 @@ AAA 8
|
|||
EXPLAIN
|
||||
SELECT * FROM t1 WHERE (a,b) = ANY (SELECT a, max(b) FROM t1 GROUP BY a);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 9 Using where
|
||||
2 DEPENDENT SUBQUERY t1 index NULL a 8 NULL 1
|
||||
1 PRIMARY t1 ALL a NULL NULL NULL 9 Using where
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 23 test.t1.a,test.t1.b 1
|
||||
2 SUBQUERY t1 ALL NULL NULL NULL NULL 9 Using temporary
|
||||
DROP TABLE t1;
|
||||
create table t1( f1 int,f2 int);
|
||||
insert into t1 values (1,1),(2,2);
|
||||
|
@ -4463,15 +4466,17 @@ INSERT INTO t1 VALUES (1),(2);
|
|||
EXPLAIN EXTENDED SELECT 1 FROM t1 WHERE 1 IN (SELECT 1 FROM t1 GROUP BY a);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 100.00
|
||||
2 DEPENDENT SUBQUERY t1 ALL NULL NULL NULL NULL 2 100.00 Using temporary
|
||||
1 PRIMARY <subquery2> const distinct_key distinct_key 4 const 1 100.00
|
||||
2 SUBQUERY t1 ALL NULL NULL NULL NULL 2 100.00 Using temporary
|
||||
Warnings:
|
||||
Note 1003 select 1 AS `1` from `test`.`t1` where <in_optimizer>(1,<exists>(select 1 from `test`.`t1` group by `test`.`t1`.`a` having (1 = <ref_null_helper>(1))))
|
||||
Note 1003 select 1 AS `1` from <materialize> (select 1 from `test`.`t1` group by `test`.`t1`.`a`) join `test`.`t1` where (`<subquery2>`.`1` = 1)
|
||||
EXPLAIN EXTENDED SELECT 1 FROM t1 WHERE 1 IN (SELECT 1 FROM t1 WHERE a > 3 GROUP BY a);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 100.00
|
||||
2 DEPENDENT SUBQUERY t1 ALL NULL NULL NULL NULL 2 100.00 Using where; Using temporary
|
||||
1 PRIMARY <subquery2> const distinct_key distinct_key 4 const 1 100.00
|
||||
2 SUBQUERY t1 ALL NULL NULL NULL NULL 2 100.00 Using where; Using temporary
|
||||
Warnings:
|
||||
Note 1003 select 1 AS `1` from `test`.`t1` where <in_optimizer>(1,<exists>(select 1 from `test`.`t1` where (`test`.`t1`.`a` > 3) group by `test`.`t1`.`a` having (1 = <ref_null_helper>(1))))
|
||||
Note 1003 select 1 AS `1` from <materialize> (select 1 from `test`.`t1` where (`test`.`t1`.`a` > 3) group by `test`.`t1`.`a`) join `test`.`t1` where (`<subquery2>`.`1` = 1)
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug#45061: Incorrectly market field caused wrong result.
|
||||
|
@ -5153,10 +5158,11 @@ explain SELECT * FROM ot1,ot4
|
|||
WHERE (ot1.a,ot4.a) IN (SELECT it2.a,it3.a
|
||||
FROM it2,it3);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY ot1 ALL NULL NULL NULL NULL 2 Start temporary
|
||||
1 PRIMARY it2 ALL NULL NULL NULL NULL 4 Using where; Using join buffer (flat, BNL join)
|
||||
1 PRIMARY it3 ALL NULL NULL NULL NULL 6 Using join buffer (flat, BNL join)
|
||||
1 PRIMARY ot4 ALL NULL NULL NULL NULL 8 Using where; End temporary; Using join buffer (flat, BNL join)
|
||||
1 PRIMARY ot1 ALL NULL NULL NULL NULL 2
|
||||
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 24 Using where
|
||||
1 PRIMARY ot4 ALL NULL NULL NULL NULL 8 Using where; Using join buffer (flat, BNL join)
|
||||
2 SUBQUERY it2 ALL NULL NULL NULL NULL 4
|
||||
2 SUBQUERY it3 ALL NULL NULL NULL NULL 6 Using join buffer (flat, BNL join)
|
||||
DROP TABLE IF EXISTS ot1, ot4, it2, it3;
|
||||
#
|
||||
# Bug#729039: NULL keys used to evaluate subquery
|
||||
|
|
|
@ -904,9 +904,9 @@ a t1.a in (select t2.a from t2)
|
|||
explain extended SELECT t1.a, t1.a in (select t2.a from t2) FROM t1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 index NULL PRIMARY 4 NULL 4 100.00 Using index
|
||||
2 DEPENDENT SUBQUERY t2 index_subquery a a 5 func 2 100.00 Using index
|
||||
2 SUBQUERY t2 index a a 5 NULL 3 100.00 Using index
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`a` AS `a`,<expr_cache><`test`.`t1`.`a`>(<in_optimizer>(`test`.`t1`.`a`,<exists>(<index_lookup>(<cache>(`test`.`t1`.`a`) in t2 on a checking NULL having <is_not_null_test>(`test`.`t2`.`a`))))) AS `t1.a in (select t2.a from t2)` from `test`.`t1`
|
||||
Note 1003 select `test`.`t1`.`a` AS `a`,<expr_cache><`test`.`t1`.`a`>(<in_optimizer>(`test`.`t1`.`a`,`test`.`t1`.`a` in ( <materialize> (select `test`.`t2`.`a` from `test`.`t2` ), <primary_index_lookup>(`test`.`t1`.`a` in <temporary table> on distinct_key where ((`test`.`t1`.`a` = `<subquery2>`.`a`)))))) AS `t1.a in (select t2.a from t2)` from `test`.`t1`
|
||||
CREATE TABLE t3 (a int(11) default '0');
|
||||
INSERT INTO t3 VALUES (1),(2),(3);
|
||||
SELECT t1.a, t1.a in (select t2.a from t2,t3 where t3.a=t2.a) FROM t1;
|
||||
|
@ -918,10 +918,10 @@ a t1.a in (select t2.a from t2,t3 where t3.a=t2.a)
|
|||
explain extended SELECT t1.a, t1.a in (select t2.a from t2,t3 where t3.a=t2.a) FROM t1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 index NULL PRIMARY 4 NULL 4 100.00 Using index
|
||||
2 DEPENDENT SUBQUERY t2 ref_or_null a a 5 func 2 100.00 Using where; Using index
|
||||
2 DEPENDENT SUBQUERY t3 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (flat, BNL join)
|
||||
2 SUBQUERY t2 index a a 5 NULL 3 100.00 Using index
|
||||
2 SUBQUERY t3 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (flat, BNL join)
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`a` AS `a`,<expr_cache><`test`.`t1`.`a`>(<in_optimizer>(`test`.`t1`.`a`,<exists>(select `test`.`t2`.`a` from `test`.`t2` join `test`.`t3` where ((`test`.`t3`.`a` = `test`.`t2`.`a`) and ((<cache>(`test`.`t1`.`a`) = `test`.`t2`.`a`) or isnull(`test`.`t2`.`a`))) having <is_not_null_test>(`test`.`t2`.`a`)))) AS `t1.a in (select t2.a from t2,t3 where t3.a=t2.a)` from `test`.`t1`
|
||||
Note 1003 select `test`.`t1`.`a` AS `a`,<expr_cache><`test`.`t1`.`a`>(<in_optimizer>(`test`.`t1`.`a`,`test`.`t1`.`a` in ( <materialize> (select `test`.`t2`.`a` from `test`.`t2` join `test`.`t3` where (`test`.`t3`.`a` = `test`.`t2`.`a`) ), <primary_index_lookup>(`test`.`t1`.`a` in <temporary table> on distinct_key where ((`test`.`t1`.`a` = `<subquery2>`.`a`)))))) AS `t1.a in (select t2.a from t2,t3 where t3.a=t2.a)` from `test`.`t1`
|
||||
drop table t1,t2,t3;
|
||||
# check correct NULL Processing for normal IN/ALL/ANY
|
||||
# and 2 ways of max/min optimization
|
||||
|
@ -1434,9 +1434,9 @@ a
|
|||
explain extended select * from t2 where t2.a in (select a from t1);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t2 index NULL PRIMARY 4 NULL 4 100.00 Using where; Using index
|
||||
2 DEPENDENT SUBQUERY t1 unique_subquery PRIMARY PRIMARY 4 func 1 100.00 Using index
|
||||
2 SUBQUERY t1 index PRIMARY PRIMARY 4 NULL 4 100.00 Using index
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t2`.`a` AS `a` from `test`.`t2` where <expr_cache><`test`.`t2`.`a`>(<in_optimizer>(`test`.`t2`.`a`,<exists>(<primary_index_lookup>(<cache>(`test`.`t2`.`a`) in t1 on PRIMARY))))
|
||||
Note 1003 select `test`.`t2`.`a` AS `a` from `test`.`t2` where <expr_cache><`test`.`t2`.`a`>(<in_optimizer>(`test`.`t2`.`a`,`test`.`t2`.`a` in ( <materialize> (select `test`.`t1`.`a` from `test`.`t1` ), <primary_index_lookup>(`test`.`t2`.`a` in <temporary table> on distinct_key where ((`test`.`t2`.`a` = `<subquery2>`.`a`))))))
|
||||
select * from t2 where t2.a in (select a from t1 where t1.b <> 30);
|
||||
a
|
||||
2
|
||||
|
@ -1444,9 +1444,9 @@ a
|
|||
explain extended select * from t2 where t2.a in (select a from t1 where t1.b <> 30);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t2 index NULL PRIMARY 4 NULL 4 100.00 Using where; Using index
|
||||
2 DEPENDENT SUBQUERY t1 unique_subquery PRIMARY PRIMARY 4 func 1 100.00 Using where
|
||||
2 SUBQUERY t1 ALL PRIMARY NULL NULL NULL 4 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t2`.`a` AS `a` from `test`.`t2` where <expr_cache><`test`.`t2`.`a`>(<in_optimizer>(`test`.`t2`.`a`,<exists>(<primary_index_lookup>(<cache>(`test`.`t2`.`a`) in t1 on PRIMARY where ((`test`.`t1`.`b` <> 30) and (<cache>(`test`.`t2`.`a`) = `test`.`t1`.`a`))))))
|
||||
Note 1003 select `test`.`t2`.`a` AS `a` from `test`.`t2` where <expr_cache><`test`.`t2`.`a`>(<in_optimizer>(`test`.`t2`.`a`,`test`.`t2`.`a` in ( <materialize> (select `test`.`t1`.`a` from `test`.`t1` where (`test`.`t1`.`b` <> 30) ), <primary_index_lookup>(`test`.`t2`.`a` in <temporary table> on distinct_key where ((`test`.`t2`.`a` = `<subquery2>`.`a`))))))
|
||||
select * from t2 where t2.a in (select t1.a from t1,t3 where t1.b=t3.a);
|
||||
a
|
||||
2
|
||||
|
@ -1454,10 +1454,10 @@ a
|
|||
explain extended select * from t2 where t2.a in (select t1.a from t1,t3 where t1.b=t3.a);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t2 index NULL PRIMARY 4 NULL 4 100.00 Using where; Using index
|
||||
2 DEPENDENT SUBQUERY t1 eq_ref PRIMARY PRIMARY 4 func 1 100.00 Using where
|
||||
2 DEPENDENT SUBQUERY t3 eq_ref PRIMARY PRIMARY 4 test.t1.b 1 100.00 Using index
|
||||
2 SUBQUERY t3 index PRIMARY PRIMARY 4 NULL 3 100.00 Using index
|
||||
2 SUBQUERY t1 ALL PRIMARY NULL NULL NULL 4 100.00 Using where; Using join buffer (flat, BNL join)
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t2`.`a` AS `a` from `test`.`t2` where <expr_cache><`test`.`t2`.`a`>(<in_optimizer>(`test`.`t2`.`a`,<exists>(select `test`.`t1`.`a` from `test`.`t1` join `test`.`t3` where ((`test`.`t3`.`a` = `test`.`t1`.`b`) and (<cache>(`test`.`t2`.`a`) = `test`.`t1`.`a`)))))
|
||||
Note 1003 select `test`.`t2`.`a` AS `a` from `test`.`t2` where <expr_cache><`test`.`t2`.`a`>(<in_optimizer>(`test`.`t2`.`a`,`test`.`t2`.`a` in ( <materialize> (select `test`.`t1`.`a` from `test`.`t1` join `test`.`t3` where (`test`.`t1`.`b` = `test`.`t3`.`a`) ), <primary_index_lookup>(`test`.`t2`.`a` in <temporary table> on distinct_key where ((`test`.`t2`.`a` = `<subquery2>`.`a`))))))
|
||||
drop table t1, t2, t3;
|
||||
create table t1 (a int, b int, index a (a,b));
|
||||
create table t2 (a int, index a (a));
|
||||
|
@ -1605,27 +1605,27 @@ a3 1
|
|||
explain extended select s1, s1 NOT IN (SELECT s1 FROM t2) from t1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 index NULL s1 6 NULL 3 100.00 Using index
|
||||
2 DEPENDENT SUBQUERY t2 index_subquery s1 s1 6 func 2 100.00 Using index; Full scan on NULL key
|
||||
2 SUBQUERY t2 index s1 s1 6 NULL 2 100.00 Using index
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`s1` AS `s1`,(not(<expr_cache><`test`.`t1`.`s1`>(<in_optimizer>(`test`.`t1`.`s1`,<exists>(<index_lookup>(<cache>(`test`.`t1`.`s1`) in t2 on s1 checking NULL having trigcond(<is_not_null_test>(`test`.`t2`.`s1`)))))))) AS `s1 NOT IN (SELECT s1 FROM t2)` from `test`.`t1`
|
||||
Note 1003 select `test`.`t1`.`s1` AS `s1`,(not(<expr_cache><`test`.`t1`.`s1`>(<in_optimizer>(`test`.`t1`.`s1`,`test`.`t1`.`s1` in ( <materialize> (select `test`.`t2`.`s1` from `test`.`t2` ), <primary_index_lookup>(`test`.`t1`.`s1` in <temporary table> on distinct_key where ((`test`.`t1`.`s1` = `<subquery2>`.`s1`)))))))) AS `s1 NOT IN (SELECT s1 FROM t2)` from `test`.`t1`
|
||||
explain extended select s1, s1 = ANY (SELECT s1 FROM t2) from t1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 index NULL s1 6 NULL 3 100.00 Using index
|
||||
2 DEPENDENT SUBQUERY t2 index_subquery s1 s1 6 func 2 100.00 Using index; Full scan on NULL key
|
||||
2 SUBQUERY t2 index s1 s1 6 NULL 2 100.00 Using index
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`s1` AS `s1`,<expr_cache><`test`.`t1`.`s1`>(<in_optimizer>(`test`.`t1`.`s1`,<exists>(<index_lookup>(<cache>(`test`.`t1`.`s1`) in t2 on s1 checking NULL having trigcond(<is_not_null_test>(`test`.`t2`.`s1`)))))) AS `s1 = ANY (SELECT s1 FROM t2)` from `test`.`t1`
|
||||
Note 1003 select `test`.`t1`.`s1` AS `s1`,<expr_cache><`test`.`t1`.`s1`>(<in_optimizer>(`test`.`t1`.`s1`,`test`.`t1`.`s1` in ( <materialize> (select `test`.`t2`.`s1` from `test`.`t2` ), <primary_index_lookup>(`test`.`t1`.`s1` in <temporary table> on distinct_key where ((`test`.`t1`.`s1` = `<subquery2>`.`s1`)))))) AS `s1 = ANY (SELECT s1 FROM t2)` from `test`.`t1`
|
||||
explain extended select s1, s1 <> ALL (SELECT s1 FROM t2) from t1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 index NULL s1 6 NULL 3 100.00 Using index
|
||||
2 DEPENDENT SUBQUERY t2 index_subquery s1 s1 6 func 2 100.00 Using index; Full scan on NULL key
|
||||
2 SUBQUERY t2 index s1 s1 6 NULL 2 100.00 Using index
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`s1` AS `s1`,(not(<expr_cache><`test`.`t1`.`s1`>(<in_optimizer>(`test`.`t1`.`s1`,<exists>(<index_lookup>(<cache>(`test`.`t1`.`s1`) in t2 on s1 checking NULL having trigcond(<is_not_null_test>(`test`.`t2`.`s1`)))))))) AS `s1 <> ALL (SELECT s1 FROM t2)` from `test`.`t1`
|
||||
Note 1003 select `test`.`t1`.`s1` AS `s1`,(not(<expr_cache><`test`.`t1`.`s1`>(<in_optimizer>(`test`.`t1`.`s1`,`test`.`t1`.`s1` in ( <materialize> (select `test`.`t2`.`s1` from `test`.`t2` ), <primary_index_lookup>(`test`.`t1`.`s1` in <temporary table> on distinct_key where ((`test`.`t1`.`s1` = `<subquery2>`.`s1`)))))))) AS `s1 <> ALL (SELECT s1 FROM t2)` from `test`.`t1`
|
||||
explain extended select s1, s1 NOT IN (SELECT s1 FROM t2 WHERE s1 < 'a2') from t1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 index NULL s1 6 NULL 3 100.00 Using index
|
||||
2 DEPENDENT SUBQUERY t2 index_subquery s1 s1 6 func 2 100.00 Using index; Using where; Full scan on NULL key
|
||||
2 SUBQUERY t2 index s1 s1 6 NULL 2 50.00 Using where; Using index
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`s1` AS `s1`,(not(<expr_cache><`test`.`t1`.`s1`>(<in_optimizer>(`test`.`t1`.`s1`,<exists>(<index_lookup>(<cache>(`test`.`t1`.`s1`) in t2 on s1 checking NULL where (`test`.`t2`.`s1` < 'a2') having trigcond(<is_not_null_test>(`test`.`t2`.`s1`)))))))) AS `s1 NOT IN (SELECT s1 FROM t2 WHERE s1 < 'a2')` from `test`.`t1`
|
||||
Note 1003 select `test`.`t1`.`s1` AS `s1`,(not(<expr_cache><`test`.`t1`.`s1`>(<in_optimizer>(`test`.`t1`.`s1`,`test`.`t1`.`s1` in ( <materialize> (select `test`.`t2`.`s1` from `test`.`t2` where (`test`.`t2`.`s1` < 'a2') ), <primary_index_lookup>(`test`.`t1`.`s1` in <temporary table> on distinct_key where ((`test`.`t1`.`s1` = `<subquery2>`.`s1`)))))))) AS `s1 NOT IN (SELECT s1 FROM t2 WHERE s1 < 'a2')` from `test`.`t1`
|
||||
drop table t1,t2;
|
||||
create table t2 (a int, b int not null);
|
||||
create table t3 (a int);
|
||||
|
@ -1878,9 +1878,9 @@ id text
|
|||
explain extended select * from t1 where id not in (select id from t1 where id < 8);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 12 100.00 Using where
|
||||
2 DEPENDENT SUBQUERY t1 unique_subquery PRIMARY PRIMARY 4 func 1 100.00 Using index; Using where
|
||||
2 SUBQUERY t1 range PRIMARY PRIMARY 4 NULL 7 100.00 Using where; Using index
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`id` AS `id`,`test`.`t1`.`text` AS `text` from `test`.`t1` where (not(<expr_cache><`test`.`t1`.`id`>(<in_optimizer>(`test`.`t1`.`id`,<exists>(<primary_index_lookup>(<cache>(`test`.`t1`.`id`) in t1 on PRIMARY where ((`test`.`t1`.`id` < 8) and (<cache>(`test`.`t1`.`id`) = `test`.`t1`.`id`))))))))
|
||||
Note 1003 select `test`.`t1`.`id` AS `id`,`test`.`t1`.`text` AS `text` from `test`.`t1` where (not(<expr_cache><`test`.`t1`.`id`>(<in_optimizer>(`test`.`t1`.`id`,`test`.`t1`.`id` in ( <materialize> (select `test`.`t1`.`id` from `test`.`t1` where (`test`.`t1`.`id` < 8) ), <primary_index_lookup>(`test`.`t1`.`id` in <temporary table> on distinct_key where ((`test`.`t1`.`id` = `<subquery2>`.`id`))))))))
|
||||
explain extended select * from t1 as tt where not exists (select id from t1 where id < 8 and (id = tt.id or id is null) having id is not null);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY tt ALL NULL NULL NULL NULL 12 100.00 Using where
|
||||
|
@ -2964,21 +2964,21 @@ one two test
|
|||
explain extended SELECT one,two,ROW(one,two) IN (SELECT one,two FROM t2 WHERE flag = '0') as 'test' from t1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 8 100.00
|
||||
2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 9 100.00 Using where
|
||||
2 SUBQUERY t2 ALL NULL NULL NULL NULL 9 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`one` AS `one`,`test`.`t1`.`two` AS `two`,<expr_cache><`test`.`t1`.`one`,`test`.`t1`.`two`>(<in_optimizer>((`test`.`t1`.`one`,`test`.`t1`.`two`),<exists>(select `test`.`t2`.`one`,`test`.`t2`.`two` from `test`.`t2` where ((`test`.`t2`.`flag` = '0') and trigcond(((<cache>(`test`.`t1`.`one`) = `test`.`t2`.`one`) or isnull(`test`.`t2`.`one`))) and trigcond(((<cache>(`test`.`t1`.`two`) = `test`.`t2`.`two`) or isnull(`test`.`t2`.`two`)))) having (trigcond(<is_not_null_test>(`test`.`t2`.`one`)) and trigcond(<is_not_null_test>(`test`.`t2`.`two`)))))) AS `test` from `test`.`t1`
|
||||
Note 1003 select `test`.`t1`.`one` AS `one`,`test`.`t1`.`two` AS `two`,<expr_cache><`test`.`t1`.`one`,`test`.`t1`.`two`>(<in_optimizer>((`test`.`t1`.`one`,`test`.`t1`.`two`),(`test`.`t1`.`one`,`test`.`t1`.`two`) in ( <materialize> (select `test`.`t2`.`one`,`test`.`t2`.`two` from `test`.`t2` where (`test`.`t2`.`flag` = '0') ), <primary_index_lookup>(`test`.`t1`.`one` in <temporary table> on distinct_key where ((`test`.`t1`.`one` = `<subquery2>`.`one`) and (`test`.`t1`.`two` = `<subquery2>`.`two`)))))) AS `test` from `test`.`t1`
|
||||
explain extended SELECT one,two from t1 where ROW(one,two) IN (SELECT one,two FROM t2 WHERE flag = 'N');
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 8 100.00 Using where
|
||||
2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 9 100.00 Using where
|
||||
2 SUBQUERY t2 ALL NULL NULL NULL NULL 9 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`one` AS `one`,`test`.`t1`.`two` AS `two` from `test`.`t1` where <expr_cache><`test`.`t1`.`one`,`test`.`t1`.`two`>(<in_optimizer>((`test`.`t1`.`one`,`test`.`t1`.`two`),<exists>(select `test`.`t2`.`one`,`test`.`t2`.`two` from `test`.`t2` where ((`test`.`t2`.`flag` = 'N') and (<cache>(`test`.`t1`.`one`) = `test`.`t2`.`one`) and (<cache>(`test`.`t1`.`two`) = `test`.`t2`.`two`)))))
|
||||
Note 1003 select `test`.`t1`.`one` AS `one`,`test`.`t1`.`two` AS `two` from `test`.`t1` where <expr_cache><`test`.`t1`.`one`,`test`.`t1`.`two`>(<in_optimizer>((`test`.`t1`.`one`,`test`.`t1`.`two`),(`test`.`t1`.`one`,`test`.`t1`.`two`) in ( <materialize> (select `test`.`t2`.`one`,`test`.`t2`.`two` from `test`.`t2` where (`test`.`t2`.`flag` = 'N') ), <primary_index_lookup>(`test`.`t1`.`one` in <temporary table> on distinct_key where ((`test`.`t1`.`one` = `<subquery2>`.`one`) and (`test`.`t1`.`two` = `<subquery2>`.`two`))))))
|
||||
explain extended SELECT one,two,ROW(one,two) IN (SELECT one,two FROM t2 WHERE flag = '0' group by one,two) as 'test' from t1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 8 100.00
|
||||
2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 9 100.00 Using where; Using temporary
|
||||
2 SUBQUERY t2 ALL NULL NULL NULL NULL 9 100.00 Using where; Using temporary
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`one` AS `one`,`test`.`t1`.`two` AS `two`,<expr_cache><`test`.`t1`.`one`,`test`.`t1`.`two`>(<in_optimizer>((`test`.`t1`.`one`,`test`.`t1`.`two`),<exists>(select `test`.`t2`.`one`,`test`.`t2`.`two` from `test`.`t2` where (`test`.`t2`.`flag` = '0') group by `test`.`t2`.`one`,`test`.`t2`.`two` having (trigcond(((<cache>(`test`.`t1`.`one`) = `test`.`t2`.`one`) or isnull(`test`.`t2`.`one`))) and trigcond(((<cache>(`test`.`t1`.`two`) = `test`.`t2`.`two`) or isnull(`test`.`t2`.`two`))) and trigcond(<is_not_null_test>(`test`.`t2`.`one`)) and trigcond(<is_not_null_test>(`test`.`t2`.`two`)))))) AS `test` from `test`.`t1`
|
||||
Note 1003 select `test`.`t1`.`one` AS `one`,`test`.`t1`.`two` AS `two`,<expr_cache><`test`.`t1`.`one`,`test`.`t1`.`two`>(<in_optimizer>((`test`.`t1`.`one`,`test`.`t1`.`two`),(`test`.`t1`.`one`,`test`.`t1`.`two`) in ( <materialize> (select `test`.`t2`.`one`,`test`.`t2`.`two` from `test`.`t2` where (`test`.`t2`.`flag` = '0') group by `test`.`t2`.`one`,`test`.`t2`.`two` ), <primary_index_lookup>(`test`.`t1`.`one` in <temporary table> on distinct_key where ((`test`.`t1`.`one` = `<subquery2>`.`one`) and (`test`.`t1`.`two` = `<subquery2>`.`two`)))))) AS `test` from `test`.`t1`
|
||||
DROP TABLE t1,t2;
|
||||
set optimizer_switch=@tmp11867_optimizer_switch;
|
||||
CREATE TABLE t1 (a char(5), b char(5));
|
||||
|
@ -3159,7 +3159,7 @@ INSERT INTO t2 VALUES (1),(2),(3);
|
|||
EXPLAIN SELECT a, a IN (SELECT a FROM t1) FROM t2;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 3
|
||||
2 DEPENDENT SUBQUERY t1 index_subquery a a 5 func 2 Using index; Full scan on NULL key
|
||||
2 SUBQUERY t1 index a a 5 NULL 5 Using index
|
||||
SELECT a, a IN (SELECT a FROM t1) FROM t2;
|
||||
a a IN (SELECT a FROM t1)
|
||||
1 1
|
||||
|
@ -3559,7 +3559,7 @@ EXPLAIN
|
|||
SELECT * FROM t1 WHERE (a,b) = ANY (SELECT a, max(b) FROM t1 GROUP BY a);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 9 Using where
|
||||
2 DEPENDENT SUBQUERY t1 ALL NULL NULL NULL NULL 9 Using temporary
|
||||
2 SUBQUERY t1 ALL NULL NULL NULL NULL 9 Using temporary
|
||||
ALTER TABLE t1 ADD INDEX(a);
|
||||
SELECT * FROM t1 WHERE (a,b) = ANY (SELECT a, max(b) FROM t1 GROUP BY a);
|
||||
a b
|
||||
|
@ -3570,7 +3570,7 @@ EXPLAIN
|
|||
SELECT * FROM t1 WHERE (a,b) = ANY (SELECT a, max(b) FROM t1 GROUP BY a);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 9 Using where
|
||||
2 DEPENDENT SUBQUERY t1 index NULL a 8 NULL 1
|
||||
2 SUBQUERY t1 ALL NULL NULL NULL NULL 9 Using temporary
|
||||
DROP TABLE t1;
|
||||
create table t1( f1 int,f2 int);
|
||||
insert into t1 values (1,1),(2,2);
|
||||
|
@ -4340,7 +4340,7 @@ CREATE INDEX I2 ON t1 (b);
|
|||
EXPLAIN SELECT a,b FROM t1 WHERE b IN (SELECT a FROM t1);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 Using where
|
||||
2 DEPENDENT SUBQUERY t1 index_subquery I1 I1 2 func 2 Using index; Using where
|
||||
2 SUBQUERY t1 index I1 I1 2 NULL 2 Using index
|
||||
SELECT a,b FROM t1 WHERE b IN (SELECT a FROM t1);
|
||||
a b
|
||||
CREATE TABLE t2 (a VARCHAR(1), b VARCHAR(10));
|
||||
|
@ -4350,14 +4350,14 @@ CREATE INDEX I2 ON t2 (b);
|
|||
EXPLAIN SELECT a,b FROM t2 WHERE b IN (SELECT a FROM t2);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where
|
||||
2 DEPENDENT SUBQUERY t2 index_subquery I1 I1 4 func 2 Using index; Using where
|
||||
2 SUBQUERY t2 index I1 I1 4 NULL 2 Using index
|
||||
SELECT a,b FROM t2 WHERE b IN (SELECT a FROM t2);
|
||||
a b
|
||||
EXPLAIN
|
||||
SELECT a,b FROM t1 WHERE b IN (SELECT a FROM t1 WHERE LENGTH(a)<500);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 Using where
|
||||
2 DEPENDENT SUBQUERY t1 index_subquery I1 I1 2 func 2 Using index; Using where
|
||||
2 SUBQUERY t1 index I1 I1 2 NULL 2 Using where; Using index
|
||||
SELECT a,b FROM t1 WHERE b IN (SELECT a FROM t1 WHERE LENGTH(a)<500);
|
||||
a b
|
||||
DROP TABLE t1,t2;
|
||||
|
@ -4460,15 +4460,15 @@ INSERT INTO t1 VALUES (1),(2);
|
|||
EXPLAIN EXTENDED SELECT 1 FROM t1 WHERE 1 IN (SELECT 1 FROM t1 GROUP BY a);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 100.00
|
||||
2 DEPENDENT SUBQUERY t1 ALL NULL NULL NULL NULL 2 100.00 Using temporary
|
||||
2 SUBQUERY t1 ALL NULL NULL NULL NULL 2 100.00 Using temporary
|
||||
Warnings:
|
||||
Note 1003 select 1 AS `1` from `test`.`t1` where <expr_cache><1>(<in_optimizer>(1,<exists>(select 1 from `test`.`t1` group by `test`.`t1`.`a` having (1 = <ref_null_helper>(1)))))
|
||||
Note 1003 select 1 AS `1` from `test`.`t1` where <expr_cache><1>(<in_optimizer>(1,1 in ( <materialize> (select 1 from `test`.`t1` group by `test`.`t1`.`a` ), <primary_index_lookup>(1 in <temporary table> on distinct_key where ((1 = `<subquery2>`.`1`))))))
|
||||
EXPLAIN EXTENDED SELECT 1 FROM t1 WHERE 1 IN (SELECT 1 FROM t1 WHERE a > 3 GROUP BY a);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 100.00
|
||||
2 DEPENDENT SUBQUERY t1 ALL NULL NULL NULL NULL 2 100.00 Using where; Using temporary
|
||||
2 SUBQUERY t1 ALL NULL NULL NULL NULL 2 100.00 Using where; Using temporary
|
||||
Warnings:
|
||||
Note 1003 select 1 AS `1` from `test`.`t1` where <expr_cache><1>(<in_optimizer>(1,<exists>(select 1 from `test`.`t1` where (`test`.`t1`.`a` > 3) group by `test`.`t1`.`a` having (1 = <ref_null_helper>(1)))))
|
||||
Note 1003 select 1 AS `1` from `test`.`t1` where <expr_cache><1>(<in_optimizer>(1,1 in ( <materialize> (select 1 from `test`.`t1` where (`test`.`t1`.`a` > 3) group by `test`.`t1`.`a` ), <primary_index_lookup>(1 in <temporary table> on distinct_key where ((1 = `<subquery2>`.`1`))))))
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug#45061: Incorrectly market field caused wrong result.
|
||||
|
@ -4534,7 +4534,7 @@ WHERE outr.int_key NOT IN (SELECT t1.pk FROM t1, t2)
|
|||
ORDER BY outr.pk;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
x x outr ALL x x x x x x
|
||||
x x t1 eq_ref x x x x x x
|
||||
x x t1 index x x x x x x
|
||||
x x t2 index x x x x x x
|
||||
# should not crash on debug binaries
|
||||
SELECT * FROM t2 outr
|
||||
|
@ -5152,8 +5152,8 @@ FROM it2,it3);
|
|||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY ot1 ALL NULL NULL NULL NULL 2
|
||||
1 PRIMARY ot4 ALL NULL NULL NULL NULL 8 Using where; Using join buffer (flat, BNL join)
|
||||
2 DEPENDENT SUBQUERY it2 ALL NULL NULL NULL NULL 4 Using where
|
||||
2 DEPENDENT SUBQUERY it3 ALL NULL NULL NULL NULL 6 Using where; Using join buffer (flat, BNL join)
|
||||
2 SUBQUERY it2 ALL NULL NULL NULL NULL 4
|
||||
2 SUBQUERY it3 ALL NULL NULL NULL NULL 6 Using join buffer (flat, BNL join)
|
||||
DROP TABLE IF EXISTS ot1, ot4, it2, it3;
|
||||
#
|
||||
# Bug#729039: NULL keys used to evaluate subquery
|
||||
|
@ -5197,8 +5197,8 @@ INSERT INTO t2 VALUES (15,4);
|
|||
EXPLAIN SELECT * FROM t1 WHERE pk IN (SELECT it.pk FROM t2 JOIN t2 AS it ON 1);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 Using where
|
||||
2 DEPENDENT SUBQUERY t2 index NULL PRIMARY 4 NULL 3 Using index
|
||||
2 DEPENDENT SUBQUERY it eq_ref PRIMARY PRIMARY 4 func 1 Using index
|
||||
2 SUBQUERY t2 index NULL PRIMARY 4 NULL 3 Using index
|
||||
2 SUBQUERY it index PRIMARY PRIMARY 4 NULL 3 Using index; Using join buffer (flat, BNL join)
|
||||
SELECT * FROM t1 WHERE pk IN (SELECT it.pk FROM t2 JOIN t2 AS it ON 1);
|
||||
pk i
|
||||
11 0
|
||||
|
@ -5441,7 +5441,7 @@ WHERE (t2.b , t1.c) NOT IN (SELECT * from t3);
|
|||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 Using where
|
||||
2 DEPENDENT SUBQUERY t3 ALL NULL NULL NULL NULL 2 Using where
|
||||
2 SUBQUERY t3 ALL NULL NULL NULL NULL 2
|
||||
SELECT t2.b , t1.c
|
||||
FROM t2 LEFT JOIN t1 ON t1.c < 3
|
||||
WHERE (t2.b, t1.c) NOT IN (SELECT * from t3);
|
||||
|
|
|
@ -79,18 +79,18 @@ id select_type tABle type possiBle_keys key key_len ref rows filtered ExtrA
|
|||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00
|
||||
1 PRIMARY A ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||
1 PRIMARY B ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||
2 DEPENDENT SUBQUERY t10 unique_suBquery PRIMARY PRIMARY 4 func 1 100.00 Using index
|
||||
2 SUBQUERY t10 index PRIMARY PRIMARY 4 NULL 10 100.00 Using index
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`A` AS `A`,`test`.`t1`.`B` AS `B`,`test`.`A`.`A` AS `A`,`test`.`A`.`B` AS `B`,`test`.`B`.`A` AS `A`,`test`.`B`.`B` AS `B` from `test`.`t1` left join (`test`.`t2` `A` join `test`.`t2` `B`) on((<in_optimizer>(`test`.`B`.`A`,<exists>(<primAry_index_lookup>(<cAche>(`test`.`B`.`A`) in t10 on PRIMARY))) And (`test`.`A`.`A` = `test`.`t1`.`A`))) where 1
|
||||
Note 1003 select `test`.`t1`.`A` AS `A`,`test`.`t1`.`B` AS `B`,`test`.`A`.`A` AS `A`,`test`.`A`.`B` AS `B`,`test`.`B`.`A` AS `A`,`test`.`B`.`B` AS `B` from `test`.`t1` left join (`test`.`t2` `A` join `test`.`t2` `B`) on((<in_optimizer>(`test`.`B`.`A`,`test`.`B`.`A` in ( <mAteriAlize> (select `test`.`t10`.`pk` from `test`.`t10` ), <primAry_index_lookup>(`test`.`B`.`A` in <temporAry tABle> on distinct_key where ((`test`.`B`.`A` = `<suBquery2>`.`pk`))))) And (`test`.`A`.`A` = `test`.`t1`.`A`))) where 1
|
||||
t2 should be wrapped into OJ-nest, so we have "t1 LJ (t2 J t10)"
|
||||
explAin extended
|
||||
select * from t1 left join t2 on (t2.A= t1.A And t2.A in (select pk from t10));
|
||||
id select_type tABle type possiBle_keys key key_len ref rows filtered ExtrA
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||
2 DEPENDENT SUBQUERY t10 unique_suBquery PRIMARY PRIMARY 4 func 1 100.00 Using index
|
||||
2 SUBQUERY t10 index PRIMARY PRIMARY 4 NULL 10 100.00 Using index
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`A` AS `A`,`test`.`t1`.`B` AS `B`,`test`.`t2`.`A` AS `A`,`test`.`t2`.`B` AS `B` from `test`.`t1` left join `test`.`t2` on((<in_optimizer>(`test`.`t2`.`A`,<exists>(<primAry_index_lookup>(<cAche>(`test`.`t2`.`A`) in t10 on PRIMARY))) And (`test`.`t2`.`A` = `test`.`t1`.`A`))) where 1
|
||||
Note 1003 select `test`.`t1`.`A` AS `A`,`test`.`t1`.`B` AS `B`,`test`.`t2`.`A` AS `A`,`test`.`t2`.`B` AS `B` from `test`.`t1` left join `test`.`t2` on((<in_optimizer>(`test`.`t2`.`A`,`test`.`t2`.`A` in ( <mAteriAlize> (select `test`.`t10`.`pk` from `test`.`t10` ), <primAry_index_lookup>(`test`.`t2`.`A` in <temporAry tABle> on distinct_key where ((`test`.`t2`.`A` = `<suBquery2>`.`pk`))))) And (`test`.`t2`.`A` = `test`.`t1`.`A`))) where 1
|
||||
we shouldn't flatten if we're going to get a join of > MAX_TABLES.
|
||||
explain select * from
|
||||
t1 s00, t1 s01, t1 s02, t1 s03, t1 s04,t1 s05,t1 s06,t1 s07,t1 s08,t1 s09,
|
||||
|
@ -724,9 +724,10 @@ SELECT int_key FROM ot1
|
|||
WHERE int_nokey IN (SELECT it2.int_key
|
||||
FROM it1 LEFT JOIN it2 ON it2.datetime_key);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY it1 index NULL int_key 4 NULL 2 Using index; Start temporary
|
||||
1 PRIMARY ot1 ALL NULL NULL NULL NULL 20 Using join buffer (flat, BNL join)
|
||||
1 PRIMARY it2 ALL int_key,datetime_key NULL NULL NULL 20 Using where; End temporary
|
||||
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 11
|
||||
1 PRIMARY ot1 ALL NULL NULL NULL NULL 20 Using where; Using join buffer (flat, BNL join)
|
||||
2 SUBQUERY it1 index NULL int_key 4 NULL 2 Using index
|
||||
2 SUBQUERY it2 ALL int_key,datetime_key NULL NULL NULL 20 Using where
|
||||
DROP TABLE ot1, it1, it2;
|
||||
# End of BUG#38075
|
||||
#
|
||||
|
@ -798,9 +799,10 @@ INSERT INTO t2 VALUES (1,'i','iiii','iiii','iiii','iiii','ffff','ffff','ffff','f
|
|||
EXPLAIN EXTENDED SELECT pk FROM t1 WHERE (a, b) IN (SELECT a, b FROM t2 WHERE pk > 0);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 100.00
|
||||
1 PRIMARY t2 range PRIMARY PRIMARY 4 NULL 2 100.00 Using index condition; Using where; Rowid-ordered scan; FirstMatch(t1)
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 13 func,func 1 100.00
|
||||
2 SUBQUERY t2 range PRIMARY PRIMARY 4 NULL 2 100.00 Using index condition; Rowid-ordered scan
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`pk` AS `pk` from `test`.`t1` semi join (`test`.`t2`) where ((`test`.`t2`.`b` = `test`.`t1`.`b`) and (`test`.`t2`.`a` = `test`.`t1`.`a`) and (`test`.`t2`.`pk` > 0))
|
||||
Note 1003 select `test`.`t1`.`pk` AS `pk` from `test`.`t1` semi join (`test`.`t2`) where ((`test`.`t2`.`pk` > 0))
|
||||
SELECT pk FROM t1 WHERE (a, b) IN (SELECT a, b FROM t2 WHERE pk > 0);
|
||||
pk
|
||||
2
|
||||
|
@ -966,9 +968,10 @@ FROM t1
|
|||
WHERE `varchar_nokey` < 'n' XOR `pk` ) ;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 18 100.00
|
||||
1 PRIMARY t1 ref varchar_key varchar_key 3 test.t2.varchar_nokey 2 100.00 Using where; FirstMatch(t2)
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 8 func,func 1 100.00
|
||||
2 SUBQUERY t1 ALL varchar_key NULL NULL NULL 15 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t2`.`varchar_nokey` AS `varchar_nokey` from `test`.`t2` semi join (`test`.`t1`) where ((`test`.`t1`.`varchar_key` = `test`.`t2`.`varchar_nokey`) and (`test`.`t1`.`varchar_nokey` = `test`.`t2`.`varchar_nokey`) and ((`test`.`t2`.`varchar_nokey` < 'n') xor `test`.`t1`.`pk`))
|
||||
Note 1003 select `test`.`t2`.`varchar_nokey` AS `varchar_nokey` from `test`.`t2` semi join (`test`.`t1`) where ((`test`.`t1`.`varchar_nokey` = `test`.`t1`.`varchar_key`) and ((`test`.`t1`.`varchar_key` < 'n') xor `test`.`t1`.`pk`))
|
||||
SELECT varchar_nokey
|
||||
FROM t2
|
||||
WHERE ( `varchar_nokey` , `varchar_nokey` ) IN (
|
||||
|
@ -1046,9 +1049,11 @@ WHERE t2.val LIKE 'a%' OR t2.val LIKE 'e%')
|
|||
AND t1.val IN (SELECT t3.val FROM t3
|
||||
WHERE t3.val LIKE 'a%' OR t3.val LIKE 'e%');
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 5 Start temporary
|
||||
1 PRIMARY t3 ALL NULL NULL NULL NULL 5 Using where
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 6 Using where; End temporary
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 5
|
||||
1 PRIMARY <subquery3> eq_ref distinct_key distinct_key 14 func 1
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 14 func 1
|
||||
3 SUBQUERY t3 ALL NULL NULL NULL NULL 5 Using where
|
||||
2 SUBQUERY t2 ALL NULL NULL NULL NULL 6 Using where
|
||||
SELECT *
|
||||
FROM t1
|
||||
WHERE t1.val IN (SELECT t2.val FROM t2
|
||||
|
@ -1266,10 +1271,12 @@ explain
|
|||
select * from t1 A, t1 B
|
||||
where A.a = B.a and A.a in (select a from t2 C) and B.a in (select a from t2 D);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY A ALL NULL NULL NULL NULL 3 Start temporary
|
||||
1 PRIMARY A ALL NULL NULL NULL NULL 3
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 5 func 1
|
||||
1 PRIMARY B ALL NULL NULL NULL NULL 3 Using where; Using join buffer (flat, BNL join)
|
||||
1 PRIMARY C ALL NULL NULL NULL NULL 3 Using where
|
||||
1 PRIMARY D ALL NULL NULL NULL NULL 3 Using where; End temporary
|
||||
1 PRIMARY <subquery3> eq_ref distinct_key distinct_key 5 func 1
|
||||
2 SUBQUERY C ALL NULL NULL NULL NULL 3
|
||||
3 SUBQUERY D ALL NULL NULL NULL NULL 3
|
||||
drop table t1, t2;
|
||||
#
|
||||
# BUG#784441: Abort on semijoin with a view as the inner table
|
||||
|
@ -1284,7 +1291,7 @@ SELECT * FROM t1 INNER JOIN t2 ON t2.a != 0 AND t2.a IN (SELECT * FROM v1);
|
|||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 2
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
||||
2 DEPENDENT SUBQUERY <derived3> system NULL NULL NULL NULL 1
|
||||
2 SUBQUERY <derived3> system NULL NULL NULL NULL 1
|
||||
3 DERIVED NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
SELECT * FROM t1 INNER JOIN t2 ON t2.a != 0 AND t2.a IN (SELECT * FROM v1);
|
||||
a a
|
||||
|
@ -1377,9 +1384,10 @@ insert into t3 values('three'),( 'four');
|
|||
insert into t3 values('three'),( 'four');
|
||||
explain select * from t3 where t3.b in (select t2.b from t1 left join t2 on t1.a=t2.a);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 Start temporary
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where
|
||||
1 PRIMARY t3 ALL NULL NULL NULL NULL 8 Using where; End temporary; Using join buffer (flat, BNL join)
|
||||
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 2
|
||||
1 PRIMARY t3 ALL NULL NULL NULL NULL 8 Using where; Using join buffer (flat, BNL join)
|
||||
2 SUBQUERY t1 ALL NULL NULL NULL NULL 2
|
||||
2 SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where
|
||||
select * from t3 where t3.b in (select t2.b from t1 left join t2 on t1.a=t2.a);
|
||||
b
|
||||
drop table t1, t2, t3;
|
||||
|
|
|
@ -46,8 +46,9 @@ a b
|
|||
19 14
|
||||
explain select * from t2 where b in (select a from t1);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 Using where; Start temporary
|
||||
1 PRIMARY t2 ref b b 5 test.t1.a 2 End temporary
|
||||
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 3
|
||||
1 PRIMARY t2 ref b b 5 test.t1.a 2
|
||||
2 SUBQUERY t1 ALL NULL NULL NULL NULL 3 Using where
|
||||
select * from t2 where b in (select a from t1);
|
||||
a b
|
||||
1 1
|
||||
|
@ -65,8 +66,9 @@ insert into t3 select a,a, a,a,a from t0;
|
|||
insert into t3 select a,a, a+100,a+100,a+100 from t0;
|
||||
explain select * from t3 where b in (select a from t1);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 Using where; Start temporary
|
||||
1 PRIMARY t3 ref b b 5 test.t1.a 1 End temporary
|
||||
1 PRIMARY t3 ALL b NULL NULL NULL 20
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 5 func 1
|
||||
2 SUBQUERY t1 ALL NULL NULL NULL NULL 3
|
||||
select * from t3 where b in (select a from t1);
|
||||
a b pk1 pk2 pk3
|
||||
1 1 1 1 1
|
||||
|
@ -90,8 +92,9 @@ A.a + 10*B.a, A.a + 10*B.a, A.a + 10*B.a, A.a + 10*B.a
|
|||
from t0 A, t0 B where B.a <5;
|
||||
explain select * from t3 where b in (select a from t0);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t0 ALL NULL NULL NULL NULL 10 Using where; Start temporary
|
||||
1 PRIMARY t3 ref b b 5 test.t0.a 1 End temporary
|
||||
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 10
|
||||
1 PRIMARY t3 ref b b 5 test.t0.a 1
|
||||
2 SUBQUERY t0 ALL NULL NULL NULL NULL 10 Using where
|
||||
set @save_ecp= @@engine_condition_pushdown;
|
||||
set engine_condition_pushdown=0;
|
||||
select * from t3 where b in (select A.a+B.a from t0 A, t0 B where B.a<5);
|
||||
|
@ -143,8 +146,9 @@ explain select
|
|||
a, mid(filler1, 1,10), length(filler1)=length(filler2) as Z
|
||||
from t1 ot where a in (select a from t2 it);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY it ALL NULL NULL NULL NULL 22 Start temporary
|
||||
1 PRIMARY ot ALL NULL NULL NULL NULL 32 Using where; End temporary; Using join buffer (flat, BNL join)
|
||||
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 22
|
||||
1 PRIMARY ot ALL NULL NULL NULL NULL 32 Using where; Using join buffer (flat, BNL join)
|
||||
2 SUBQUERY it ALL NULL NULL NULL NULL 22
|
||||
select
|
||||
a, mid(filler1, 1,10), length(filler1)=length(filler2) as Z
|
||||
from t1 ot where a in (select a from t2 it);
|
||||
|
@ -176,7 +180,8 @@ a, mid(filler1, 1,10), length(filler1)=length(filler2)
|
|||
from t2 ot where a in (select a from t1 it);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY ot ALL NULL NULL NULL NULL 22
|
||||
1 PRIMARY it ALL NULL NULL NULL NULL 32 Using where; FirstMatch(ot)
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 5 func 1
|
||||
2 SUBQUERY it ALL NULL NULL NULL NULL 32
|
||||
select
|
||||
a, mid(filler1, 1,10), length(filler1)=length(filler2)
|
||||
from t2 ot where a in (select a from t1 it);
|
||||
|
@ -209,8 +214,9 @@ explain select
|
|||
a, mid(filler1, 1,10), length(filler1)=length(filler2) as Z
|
||||
from t1 ot where a in (select a from t2 it);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY it ALL NULL NULL NULL NULL 22 Start temporary
|
||||
1 PRIMARY ot ALL NULL NULL NULL NULL 52 Using where; End temporary; Using join buffer (flat, BNL join)
|
||||
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 22
|
||||
1 PRIMARY ot ALL NULL NULL NULL NULL 52 Using where; Using join buffer (flat, BNL join)
|
||||
2 SUBQUERY it ALL NULL NULL NULL NULL 22
|
||||
select
|
||||
a, mid(filler1, 1,10), length(filler1)=length(filler2) as Z
|
||||
from t1 ot where a in (select a from t2 it);
|
||||
|
@ -242,7 +248,8 @@ a, mid(filler1, 1,10), length(filler1)=length(filler2)
|
|||
from t2 ot where a in (select a from t1 it);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY ot ALL NULL NULL NULL NULL 22
|
||||
1 PRIMARY it ALL NULL NULL NULL NULL 52 Using where; FirstMatch(ot)
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 5 func 1
|
||||
2 SUBQUERY it ALL NULL NULL NULL NULL 52
|
||||
select
|
||||
a, mid(filler1, 1,10), length(filler1)=length(filler2)
|
||||
from t2 ot where a in (select a from t1 it);
|
||||
|
@ -282,9 +289,10 @@ from t0 where a in
|
|||
(select t2.a+t3.a from t1 left join (t2 join t3) on t2.a=t1.a and t3.a=t1.a);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t0 ALL NULL NULL NULL NULL 10
|
||||
1 PRIMARY t1 index a a 5 NULL 10 Using where; Using index
|
||||
1 PRIMARY t2 ref a a 5 test.t1.a 1 Using index
|
||||
1 PRIMARY t3 ref a a 5 test.t1.a 1 Using index; FirstMatch(t0)
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 9 func 1 Using where
|
||||
2 SUBQUERY t1 index a a 5 NULL 10 Using where; Using index
|
||||
2 SUBQUERY t2 ref a a 5 test.t1.a 1 Using index
|
||||
2 SUBQUERY t3 ref a a 5 test.t1.a 1 Using index
|
||||
drop table t0, t1,t2,t3;
|
||||
CREATE TABLE t1 (
|
||||
ID int(11) NOT NULL auto_increment,
|
||||
|
@ -361,7 +369,8 @@ WHERE t1.Code IN (
|
|||
SELECT t2.CountryCode FROM t2 WHERE Population > 5000000);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL PRIMARY NULL NULL NULL 31
|
||||
1 PRIMARY t2 ref CountryCode CountryCode 3 test.t1.Code 18 Using where; FirstMatch(t1)
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 3 func 1
|
||||
2 SUBQUERY t2 ALL CountryCode NULL NULL NULL 545 Using where
|
||||
SELECT Name FROM t1
|
||||
WHERE t1.Code IN (
|
||||
SELECT t2.CountryCode FROM t2 WHERE Population > 5000000);
|
||||
|
@ -596,7 +605,7 @@ select * from t1 left join t2 on (t2.a= t1.a and t2.a in (select pk from t3));
|
|||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 3 Using where
|
||||
2 DEPENDENT SUBQUERY t3 unique_subquery PRIMARY PRIMARY 4 func 1 Using index
|
||||
2 SUBQUERY t3 index PRIMARY PRIMARY 4 NULL 10 Using index
|
||||
drop table t0, t1, t2, t3;
|
||||
create table t1 (a int);
|
||||
insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
||||
|
@ -708,8 +717,9 @@ alter table t3 add primary key(id), add key(a);
|
|||
The following must use loose index scan over t3, key a:
|
||||
explain select count(a) from t2 where a in ( SELECT a FROM t3);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t2 index a a 5 NULL 1000 Using where; Using index
|
||||
1 PRIMARY t3 ref a a 5 test.t2.a 30 Using index; FirstMatch(t2)
|
||||
1 PRIMARY t2 index a a 5 NULL 1000 Using index
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 5 func 1
|
||||
2 SUBQUERY t3 index a a 5 NULL 30000 Using index
|
||||
select count(a) from t2 where a in ( SELECT a FROM t3);
|
||||
count(a)
|
||||
1000
|
||||
|
@ -864,10 +874,11 @@ EXPLAIN
|
|||
SELECT * FROM t3 LEFT JOIN (v1,t2) ON t3.a = t2.a
|
||||
WHERE t3.b IN (SELECT b FROM t4);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t3 ALL NULL NULL NULL NULL 1 Start temporary
|
||||
1 PRIMARY t3 ALL NULL NULL NULL NULL 1
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 1 Using where
|
||||
1 PRIMARY <derived3> ALL NULL NULL NULL NULL 2
|
||||
1 PRIMARY t4 ALL NULL NULL NULL NULL 2 Using where; End temporary
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 5 func 1
|
||||
2 SUBQUERY t4 ALL NULL NULL NULL NULL 2
|
||||
3 DERIVED t1 ALL NULL NULL NULL NULL 1
|
||||
SELECT * FROM t3 LEFT JOIN (v1,t2) ON t3.a = t2.a
|
||||
WHERE t3.b IN (SELECT b FROM t4);
|
||||
|
|
|
@ -55,8 +55,9 @@ a b
|
|||
19 14
|
||||
explain select * from t2 where b in (select a from t1);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 Using where; Start temporary
|
||||
1 PRIMARY t2 ref b b 5 test.t1.a 2 End temporary; Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan
|
||||
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 3
|
||||
1 PRIMARY t2 ref b b 5 test.t1.a 2 Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan
|
||||
2 SUBQUERY t1 ALL NULL NULL NULL NULL 3 Using where
|
||||
select * from t2 where b in (select a from t1);
|
||||
a b
|
||||
1 1
|
||||
|
@ -74,8 +75,9 @@ insert into t3 select a,a, a,a,a from t0;
|
|||
insert into t3 select a,a, a+100,a+100,a+100 from t0;
|
||||
explain select * from t3 where b in (select a from t1);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 Using where; Start temporary
|
||||
1 PRIMARY t3 ref b b 5 test.t1.a 1 End temporary; Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan
|
||||
1 PRIMARY t3 ALL b NULL NULL NULL 20
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 5 func 1
|
||||
2 SUBQUERY t1 ALL NULL NULL NULL NULL 3
|
||||
select * from t3 where b in (select a from t1);
|
||||
a b pk1 pk2 pk3
|
||||
1 1 1 1 1
|
||||
|
@ -99,8 +101,9 @@ A.a + 10*B.a, A.a + 10*B.a, A.a + 10*B.a, A.a + 10*B.a
|
|||
from t0 A, t0 B where B.a <5;
|
||||
explain select * from t3 where b in (select a from t0);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t0 ALL NULL NULL NULL NULL 10 Using where; Start temporary
|
||||
1 PRIMARY t3 ref b b 5 test.t0.a 1 End temporary; Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan
|
||||
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 10
|
||||
1 PRIMARY t3 ref b b 5 test.t0.a 1 Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan
|
||||
2 SUBQUERY t0 ALL NULL NULL NULL NULL 10 Using where
|
||||
set @save_ecp= @@engine_condition_pushdown;
|
||||
set engine_condition_pushdown=0;
|
||||
select * from t3 where b in (select A.a+B.a from t0 A, t0 B where B.a<5);
|
||||
|
@ -152,8 +155,9 @@ explain select
|
|||
a, mid(filler1, 1,10), length(filler1)=length(filler2) as Z
|
||||
from t1 ot where a in (select a from t2 it);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY it ALL NULL NULL NULL NULL 22 Using where; Start temporary
|
||||
1 PRIMARY ot hash_ALL NULL #hash#$hj 5 test.it.a 32 Using where; End temporary; Using join buffer (flat, BNLH join)
|
||||
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 22
|
||||
1 PRIMARY ot hash_ALL NULL #hash#$hj 5 test.it.a 32 Using where; Using join buffer (flat, BNLH join)
|
||||
2 SUBQUERY it ALL NULL NULL NULL NULL 22 Using where
|
||||
select
|
||||
a, mid(filler1, 1,10), length(filler1)=length(filler2) as Z
|
||||
from t1 ot where a in (select a from t2 it);
|
||||
|
@ -185,7 +189,8 @@ a, mid(filler1, 1,10), length(filler1)=length(filler2)
|
|||
from t2 ot where a in (select a from t1 it);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY ot ALL NULL NULL NULL NULL 22
|
||||
1 PRIMARY it ALL NULL NULL NULL NULL 32 Using where; FirstMatch(ot); Using join buffer (flat, BNL join)
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 5 func 1
|
||||
2 SUBQUERY it ALL NULL NULL NULL NULL 32
|
||||
select
|
||||
a, mid(filler1, 1,10), length(filler1)=length(filler2)
|
||||
from t2 ot where a in (select a from t1 it);
|
||||
|
@ -209,8 +214,8 @@ a mid(filler1, 1,10) length(filler1)=length(filler2)
|
|||
16 filler1234 1
|
||||
17 filler1234 1
|
||||
18 filler1234 1
|
||||
3 duplicate 1
|
||||
19 filler1234 1
|
||||
3 duplicate 1
|
||||
19 duplicate 1
|
||||
insert into t1 select a+20, 'filler123456', 'filler123456' from t0;
|
||||
insert into t1 select a+20, 'filler123456', 'filler123456' from t0;
|
||||
|
@ -218,8 +223,9 @@ explain select
|
|||
a, mid(filler1, 1,10), length(filler1)=length(filler2) as Z
|
||||
from t1 ot where a in (select a from t2 it);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY it ALL NULL NULL NULL NULL 22 Using where; Start temporary
|
||||
1 PRIMARY ot hash_ALL NULL #hash#$hj 5 test.it.a 52 Using where; End temporary; Using join buffer (flat, BNLH join)
|
||||
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 22
|
||||
1 PRIMARY ot hash_ALL NULL #hash#$hj 5 test.it.a 52 Using where; Using join buffer (flat, BNLH join)
|
||||
2 SUBQUERY it ALL NULL NULL NULL NULL 22 Using where
|
||||
select
|
||||
a, mid(filler1, 1,10), length(filler1)=length(filler2) as Z
|
||||
from t1 ot where a in (select a from t2 it);
|
||||
|
@ -251,7 +257,8 @@ a, mid(filler1, 1,10), length(filler1)=length(filler2)
|
|||
from t2 ot where a in (select a from t1 it);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY ot ALL NULL NULL NULL NULL 22
|
||||
1 PRIMARY it ALL NULL NULL NULL NULL 52 Using where; FirstMatch(ot); Using join buffer (flat, BNL join)
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 5 func 1
|
||||
2 SUBQUERY it ALL NULL NULL NULL NULL 52
|
||||
select
|
||||
a, mid(filler1, 1,10), length(filler1)=length(filler2)
|
||||
from t2 ot where a in (select a from t1 it);
|
||||
|
@ -275,8 +282,8 @@ a mid(filler1, 1,10) length(filler1)=length(filler2)
|
|||
16 filler1234 1
|
||||
17 filler1234 1
|
||||
18 filler1234 1
|
||||
3 duplicate 1
|
||||
19 filler1234 1
|
||||
3 duplicate 1
|
||||
19 duplicate 1
|
||||
drop table t1, t2;
|
||||
create table t1 (a int, b int, key(a));
|
||||
|
@ -291,9 +298,10 @@ from t0 where a in
|
|||
(select t2.a+t3.a from t1 left join (t2 join t3) on t2.a=t1.a and t3.a=t1.a);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t0 ALL NULL NULL NULL NULL 10
|
||||
1 PRIMARY t1 index a a 5 NULL 10 Using where; Using index
|
||||
1 PRIMARY t2 ref a a 5 test.t1.a 1 Using index
|
||||
1 PRIMARY t3 ref a a 5 test.t1.a 1 Using index; FirstMatch(t0)
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 9 func 1 Using where
|
||||
2 SUBQUERY t1 index a a 5 NULL 10 Using where; Using index
|
||||
2 SUBQUERY t2 ref a a 5 test.t1.a 1 Using index
|
||||
2 SUBQUERY t3 ref a a 5 test.t1.a 1 Using index
|
||||
drop table t0, t1,t2,t3;
|
||||
CREATE TABLE t1 (
|
||||
ID int(11) NOT NULL auto_increment,
|
||||
|
@ -370,7 +378,8 @@ WHERE t1.Code IN (
|
|||
SELECT t2.CountryCode FROM t2 WHERE Population > 5000000);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL PRIMARY NULL NULL NULL 31
|
||||
1 PRIMARY t2 ref CountryCode CountryCode 3 test.t1.Code 18 Using where; FirstMatch(t1); Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 3 func 1
|
||||
2 SUBQUERY t2 ALL CountryCode NULL NULL NULL 545 Using where
|
||||
SELECT Name FROM t1
|
||||
WHERE t1.Code IN (
|
||||
SELECT t2.CountryCode FROM t2 WHERE Population > 5000000);
|
||||
|
@ -607,7 +616,7 @@ select * from t1 left join t2 on (t2.a= t1.a and t2.a in (select pk from t3));
|
|||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3
|
||||
1 PRIMARY t2 hash_ALL NULL #hash#$hj 5 test.t1.a 3 Using where; Using join buffer (flat, BNLH join)
|
||||
2 DEPENDENT SUBQUERY t3 unique_subquery PRIMARY PRIMARY 4 func 1 Using index
|
||||
2 SUBQUERY t3 index PRIMARY PRIMARY 4 NULL 10 Using index
|
||||
drop table t0, t1, t2, t3;
|
||||
create table t1 (a int);
|
||||
insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
||||
|
@ -719,8 +728,9 @@ alter table t3 add primary key(id), add key(a);
|
|||
The following must use loose index scan over t3, key a:
|
||||
explain select count(a) from t2 where a in ( SELECT a FROM t3);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t2 index a a 5 NULL 1000 Using where; Using index
|
||||
1 PRIMARY t3 ref a a 5 test.t2.a 30 Using index; FirstMatch(t2)
|
||||
1 PRIMARY t2 index a a 5 NULL 1000 Using index
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 5 func 1
|
||||
2 SUBQUERY t3 index a a 5 NULL 30000 Using index
|
||||
select count(a) from t2 where a in ( SELECT a FROM t3);
|
||||
count(a)
|
||||
1000
|
||||
|
@ -875,10 +885,11 @@ EXPLAIN
|
|||
SELECT * FROM t3 LEFT JOIN (v1,t2) ON t3.a = t2.a
|
||||
WHERE t3.b IN (SELECT b FROM t4);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t3 ALL NULL NULL NULL NULL 1 Using where; Start temporary
|
||||
1 PRIMARY t3 ALL NULL NULL NULL NULL 1
|
||||
1 PRIMARY t2 hash_ALL NULL #hash#$hj 5 test.t3.a 1 Using where; Using join buffer (flat, BNLH join)
|
||||
1 PRIMARY <derived3> ALL NULL NULL NULL NULL 2 Using join buffer (incremental, BNL join)
|
||||
1 PRIMARY t4 hash_ALL NULL #hash#$hj 5 test.t3.b 2 Using where; End temporary; Using join buffer (incremental, BNLH join)
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 5 func 1
|
||||
2 SUBQUERY t4 ALL NULL NULL NULL NULL 2
|
||||
3 DERIVED t1 ALL NULL NULL NULL NULL 1
|
||||
SELECT * FROM t3 LEFT JOIN (v1,t2) ON t3.a = t2.a
|
||||
WHERE t3.b IN (SELECT b FROM t4);
|
||||
|
|
|
@ -893,4 +893,4 @@ set optimizer_switch=@subselect_sj2_tmp;
|
|||
set optimizer_switch=default;
|
||||
select @@optimizer_switch like '%materialization=on%';
|
||||
@@optimizer_switch like '%materialization=on%'
|
||||
0
|
||||
1
|
||||
|
|
|
@ -90,18 +90,18 @@ id select_type tABle type possiBle_keys key key_len ref rows filtered ExtrA
|
|||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00
|
||||
1 PRIMARY A ALL NULL NULL NULL NULL 3 100.00 Using where; Using join Buffer (flAt, BNL join)
|
||||
1 PRIMARY B ALL NULL NULL NULL NULL 3 100.00 Using where; Using join Buffer (incrementAl, BNL join)
|
||||
2 DEPENDENT SUBQUERY t10 unique_suBquery PRIMARY PRIMARY 4 func 1 100.00 Using index
|
||||
2 SUBQUERY t10 index PRIMARY PRIMARY 4 NULL 10 100.00 Using index
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`A` AS `A`,`test`.`t1`.`B` AS `B`,`test`.`A`.`A` AS `A`,`test`.`A`.`B` AS `B`,`test`.`B`.`A` AS `A`,`test`.`B`.`B` AS `B` from `test`.`t1` left join (`test`.`t2` `A` join `test`.`t2` `B`) on((<in_optimizer>(`test`.`B`.`A`,<exists>(<primAry_index_lookup>(<cAche>(`test`.`B`.`A`) in t10 on PRIMARY))) And (`test`.`A`.`A` = `test`.`t1`.`A`))) where 1
|
||||
Note 1003 select `test`.`t1`.`A` AS `A`,`test`.`t1`.`B` AS `B`,`test`.`A`.`A` AS `A`,`test`.`A`.`B` AS `B`,`test`.`B`.`A` AS `A`,`test`.`B`.`B` AS `B` from `test`.`t1` left join (`test`.`t2` `A` join `test`.`t2` `B`) on((<in_optimizer>(`test`.`B`.`A`,`test`.`B`.`A` in ( <mAteriAlize> (select `test`.`t10`.`pk` from `test`.`t10` ), <primAry_index_lookup>(`test`.`B`.`A` in <temporAry tABle> on distinct_key where ((`test`.`B`.`A` = `<suBquery2>`.`pk`))))) And (`test`.`A`.`A` = `test`.`t1`.`A`))) where 1
|
||||
t2 should be wrapped into OJ-nest, so we have "t1 LJ (t2 J t10)"
|
||||
explAin extended
|
||||
select * from t1 left join t2 on (t2.A= t1.A And t2.A in (select pk from t10));
|
||||
id select_type tABle type possiBle_keys key key_len ref rows filtered ExtrA
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join Buffer (flAt, BNL join)
|
||||
2 DEPENDENT SUBQUERY t10 unique_suBquery PRIMARY PRIMARY 4 func 1 100.00 Using index
|
||||
2 SUBQUERY t10 index PRIMARY PRIMARY 4 NULL 10 100.00 Using index
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`A` AS `A`,`test`.`t1`.`B` AS `B`,`test`.`t2`.`A` AS `A`,`test`.`t2`.`B` AS `B` from `test`.`t1` left join `test`.`t2` on((<in_optimizer>(`test`.`t2`.`A`,<exists>(<primAry_index_lookup>(<cAche>(`test`.`t2`.`A`) in t10 on PRIMARY))) And (`test`.`t2`.`A` = `test`.`t1`.`A`))) where 1
|
||||
Note 1003 select `test`.`t1`.`A` AS `A`,`test`.`t1`.`B` AS `B`,`test`.`t2`.`A` AS `A`,`test`.`t2`.`B` AS `B` from `test`.`t1` left join `test`.`t2` on((<in_optimizer>(`test`.`t2`.`A`,`test`.`t2`.`A` in ( <mAteriAlize> (select `test`.`t10`.`pk` from `test`.`t10` ), <primAry_index_lookup>(`test`.`t2`.`A` in <temporAry tABle> on distinct_key where ((`test`.`t2`.`A` = `<suBquery2>`.`pk`))))) And (`test`.`t2`.`A` = `test`.`t1`.`A`))) where 1
|
||||
we shouldn't flatten if we're going to get a join of > MAX_TABLES.
|
||||
explain select * from
|
||||
t1 s00, t1 s01, t1 s02, t1 s03, t1 s04,t1 s05,t1 s06,t1 s07,t1 s08,t1 s09,
|
||||
|
@ -735,9 +735,10 @@ SELECT int_key FROM ot1
|
|||
WHERE int_nokey IN (SELECT it2.int_key
|
||||
FROM it1 LEFT JOIN it2 ON it2.datetime_key);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY it1 index NULL int_key 4 NULL 2 Using index; Start temporary
|
||||
1 PRIMARY ot1 ALL NULL NULL NULL NULL 20 Using join buffer (flat, BNL join)
|
||||
1 PRIMARY it2 ALL int_key,datetime_key NULL NULL NULL 20 Using where; End temporary; Using join buffer (incremental, BNL join)
|
||||
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 11
|
||||
1 PRIMARY ot1 ALL NULL NULL NULL NULL 20 Using where; Using join buffer (flat, BNL join)
|
||||
2 SUBQUERY it1 index NULL int_key 4 NULL 2 Using index
|
||||
2 SUBQUERY it2 ALL int_key,datetime_key NULL NULL NULL 20 Using where; Using join buffer (flat, BNL join)
|
||||
DROP TABLE ot1, it1, it2;
|
||||
# End of BUG#38075
|
||||
#
|
||||
|
@ -809,9 +810,10 @@ INSERT INTO t2 VALUES (1,'i','iiii','iiii','iiii','iiii','ffff','ffff','ffff','f
|
|||
EXPLAIN EXTENDED SELECT pk FROM t1 WHERE (a, b) IN (SELECT a, b FROM t2 WHERE pk > 0);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 100.00
|
||||
1 PRIMARY t2 range PRIMARY PRIMARY 4 NULL 2 100.00 Using index condition; Using where; Rowid-ordered scan; FirstMatch(t1); Using join buffer (flat, BNL join)
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 13 func,func 1 100.00
|
||||
2 SUBQUERY t2 range PRIMARY PRIMARY 4 NULL 2 100.00 Using index condition; Rowid-ordered scan
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`pk` AS `pk` from `test`.`t1` semi join (`test`.`t2`) where ((`test`.`t2`.`b` = `test`.`t1`.`b`) and (`test`.`t2`.`a` = `test`.`t1`.`a`) and (`test`.`t2`.`pk` > 0))
|
||||
Note 1003 select `test`.`t1`.`pk` AS `pk` from `test`.`t1` semi join (`test`.`t2`) where ((`test`.`t2`.`pk` > 0))
|
||||
SELECT pk FROM t1 WHERE (a, b) IN (SELECT a, b FROM t2 WHERE pk > 0);
|
||||
pk
|
||||
2
|
||||
|
@ -977,9 +979,10 @@ FROM t1
|
|||
WHERE `varchar_nokey` < 'n' XOR `pk` ) ;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 18 100.00
|
||||
1 PRIMARY t1 ref varchar_key varchar_key 3 test.t2.varchar_nokey 2 100.00 Using where; FirstMatch(t2); Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 8 func,func 1 100.00
|
||||
2 SUBQUERY t1 ALL varchar_key NULL NULL NULL 15 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t2`.`varchar_nokey` AS `varchar_nokey` from `test`.`t2` semi join (`test`.`t1`) where ((`test`.`t1`.`varchar_key` = `test`.`t2`.`varchar_nokey`) and (`test`.`t1`.`varchar_nokey` = `test`.`t2`.`varchar_nokey`) and ((`test`.`t2`.`varchar_nokey` < 'n') xor `test`.`t1`.`pk`))
|
||||
Note 1003 select `test`.`t2`.`varchar_nokey` AS `varchar_nokey` from `test`.`t2` semi join (`test`.`t1`) where ((`test`.`t1`.`varchar_nokey` = `test`.`t1`.`varchar_key`) and ((`test`.`t1`.`varchar_key` < 'n') xor `test`.`t1`.`pk`))
|
||||
SELECT varchar_nokey
|
||||
FROM t2
|
||||
WHERE ( `varchar_nokey` , `varchar_nokey` ) IN (
|
||||
|
@ -1057,9 +1060,11 @@ WHERE t2.val LIKE 'a%' OR t2.val LIKE 'e%')
|
|||
AND t1.val IN (SELECT t3.val FROM t3
|
||||
WHERE t3.val LIKE 'a%' OR t3.val LIKE 'e%');
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 5 Start temporary
|
||||
1 PRIMARY t3 ALL NULL NULL NULL NULL 5 Using where; Using join buffer (flat, BNL join)
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 6 Using where; End temporary; Using join buffer (incremental, BNL join)
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 5
|
||||
1 PRIMARY <subquery3> eq_ref distinct_key distinct_key 14 func 1
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 14 func 1
|
||||
3 SUBQUERY t3 ALL NULL NULL NULL NULL 5 Using where
|
||||
2 SUBQUERY t2 ALL NULL NULL NULL NULL 6 Using where
|
||||
SELECT *
|
||||
FROM t1
|
||||
WHERE t1.val IN (SELECT t2.val FROM t2
|
||||
|
@ -1277,10 +1282,12 @@ explain
|
|||
select * from t1 A, t1 B
|
||||
where A.a = B.a and A.a in (select a from t2 C) and B.a in (select a from t2 D);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY A ALL NULL NULL NULL NULL 3 Start temporary
|
||||
1 PRIMARY A ALL NULL NULL NULL NULL 3
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 5 func 1
|
||||
1 PRIMARY B ALL NULL NULL NULL NULL 3 Using where; Using join buffer (flat, BNL join)
|
||||
1 PRIMARY C ALL NULL NULL NULL NULL 3 Using where; Using join buffer (incremental, BNL join)
|
||||
1 PRIMARY D ALL NULL NULL NULL NULL 3 Using where; End temporary; Using join buffer (incremental, BNL join)
|
||||
1 PRIMARY <subquery3> eq_ref distinct_key distinct_key 5 func 1
|
||||
2 SUBQUERY C ALL NULL NULL NULL NULL 3
|
||||
3 SUBQUERY D ALL NULL NULL NULL NULL 3
|
||||
drop table t1, t2;
|
||||
#
|
||||
# BUG#784441: Abort on semijoin with a view as the inner table
|
||||
|
@ -1295,7 +1302,7 @@ SELECT * FROM t1 INNER JOIN t2 ON t2.a != 0 AND t2.a IN (SELECT * FROM v1);
|
|||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 2
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
||||
2 DEPENDENT SUBQUERY <derived3> system NULL NULL NULL NULL 1
|
||||
2 SUBQUERY <derived3> system NULL NULL NULL NULL 1
|
||||
3 DERIVED NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
SELECT * FROM t1 INNER JOIN t2 ON t2.a != 0 AND t2.a IN (SELECT * FROM v1);
|
||||
a a
|
||||
|
@ -1388,9 +1395,10 @@ insert into t3 values('three'),( 'four');
|
|||
insert into t3 values('three'),( 'four');
|
||||
explain select * from t3 where t3.b in (select t2.b from t1 left join t2 on t1.a=t2.a);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 Start temporary
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
||||
1 PRIMARY t3 ALL NULL NULL NULL NULL 8 Using where; End temporary; Using join buffer (incremental, BNL join)
|
||||
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 2
|
||||
1 PRIMARY t3 ALL NULL NULL NULL NULL 8 Using where; Using join buffer (flat, BNL join)
|
||||
2 SUBQUERY t1 ALL NULL NULL NULL NULL 2
|
||||
2 SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
||||
select * from t3 where t3.b in (select t2.b from t1 left join t2 on t1.a=t2.a);
|
||||
b
|
||||
drop table t1, t2, t3;
|
||||
|
|
|
@ -2256,8 +2256,9 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||
EXPLAIN SELECT 1 FROM t1 AS t1_outer WHERE
|
||||
a IN (SELECT max(b) FROM t1 GROUP BY a HAVING a < 2);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1_outer index NULL a 10 NULL 15 Using where; Using index
|
||||
2 DEPENDENT SUBQUERY t1 index NULL a 10 NULL 1 Using index
|
||||
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 15 Using where
|
||||
1 PRIMARY t1_outer ref a a 5 <subquery2>.max(b) 1 Using index
|
||||
2 SUBQUERY t1 index NULL a 10 NULL 15 Using index
|
||||
EXPLAIN SELECT 1 FROM t1 AS t1_outer GROUP BY a HAVING
|
||||
a > (SELECT max(b) FROM t1 GROUP BY a HAVING a < 2);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
|
|
|
@ -2835,9 +2835,10 @@ Note 1003 select `test`.`t1`.`one` AS `one`,`test`.`t1`.`two` AS `two`,<expr_cac
|
|||
explain extended SELECT one,two from t1 where ROW(one,two) IN (SELECT one,two FROM t2 WHERE flag = 'N');
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 8 100.00
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 9 100.00 Using where; FirstMatch(t1)
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 10 func,func 1 100.00
|
||||
2 SUBQUERY t2 ALL NULL NULL NULL NULL 9 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`one` AS `one`,`test`.`t1`.`two` AS `two` from `test`.`t1` semi join (`test`.`t2`) where ((`test`.`t2`.`two` = `test`.`t1`.`two`) and (`test`.`t2`.`one` = `test`.`t1`.`one`) and (`test`.`t2`.`flag` = 'N'))
|
||||
Note 1003 select `test`.`t1`.`one` AS `one`,`test`.`t1`.`two` AS `two` from `test`.`t1` semi join (`test`.`t2`) where ((`test`.`t2`.`flag` = 'N'))
|
||||
explain extended SELECT one,two,ROW(one,two) IN (SELECT one,two FROM t2 WHERE flag = '0' group by one,two) as 'test' from t1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 8 100.00
|
||||
|
@ -3427,7 +3428,8 @@ EXPLAIN
|
|||
SELECT * FROM t1 WHERE (a,b) = ANY (SELECT a, max(b) FROM t1 GROUP BY a);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 9 Using where
|
||||
2 DEPENDENT SUBQUERY t1 ALL NULL NULL NULL NULL 9 Using temporary
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 23 test.t1.a,test.t1.b 1
|
||||
2 SUBQUERY t1 ALL NULL NULL NULL NULL 9 Using temporary
|
||||
ALTER TABLE t1 ADD INDEX(a);
|
||||
SELECT * FROM t1 WHERE (a,b) = ANY (SELECT a, max(b) FROM t1 GROUP BY a);
|
||||
a b
|
||||
|
@ -3437,8 +3439,9 @@ AAA 8
|
|||
EXPLAIN
|
||||
SELECT * FROM t1 WHERE (a,b) = ANY (SELECT a, max(b) FROM t1 GROUP BY a);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 9 Using where
|
||||
2 DEPENDENT SUBQUERY t1 index NULL a 8 NULL 1
|
||||
1 PRIMARY t1 ALL a NULL NULL NULL 9 Using where
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 23 test.t1.a,test.t1.b 1
|
||||
2 SUBQUERY t1 ALL NULL NULL NULL NULL 9 Using temporary
|
||||
DROP TABLE t1;
|
||||
create table t1( f1 int,f2 int);
|
||||
insert into t1 values (1,1),(2,2);
|
||||
|
|
|
@ -394,7 +394,7 @@ DROP TABLE t1;
|
|||
--echo # LP bug #803851: materialized view + IN->EXISTS
|
||||
--echo #
|
||||
|
||||
SET SESSION optimizer_switch='semijoin=off,derived_with_keys=on';
|
||||
SET SESSION optimizer_switch='semijoin=off,derived_with_keys=on,materialization=off';
|
||||
|
||||
CREATE TABLE t1 (a int, b int);
|
||||
INSERT INTO t1 VALUES (2,2), (3,3), (1,1);
|
||||
|
@ -895,7 +895,7 @@ INSERT INTO t3 VALUES
|
|||
(14,4,'a'), (15,7,'b'), (16,4,'c'), (17,1,'d'), (18,9,'e'),
|
||||
(19,4,'f'), (20,8,'g');
|
||||
|
||||
SET SESSION optimizer_switch='derived_merge=on,subquery_cache=off';
|
||||
SET SESSION optimizer_switch='derived_merge=on,subquery_cache=off,materialization=off';
|
||||
|
||||
--echo # The following two EXPLAINs must return the same execution plan
|
||||
EXPLAIN
|
||||
|
|
|
@ -872,12 +872,17 @@ create table t12 select * from t1 where b = 67 AND (c IS NULL OR c > NOW()) orde
|
|||
create table t21 select * from t1 where b = 67 AND (c IS NULL OR c > '2005-12-08') order by 3 asc;
|
||||
create table t22 select * from t1 where b = 67 AND (c IS NULL OR c > '2005-12-08') order by 3 desc;
|
||||
|
||||
set @@optimizer_switch=@save_optimizer_switch;
|
||||
set @@optimizer_switch='materialization=off';
|
||||
|
||||
update t22 set c = '2005-12-08 15:58:27' where a = 255;
|
||||
explain select t21.* from t21,t22 where t21.a = t22.a and
|
||||
t22.a in (select t12.a from t11, t12 where t11.a in(255,256) and t11.a = t12.a and t11.c is null) and t22.c is null order by t21.a;
|
||||
select t21.* from t21,t22 where t21.a = t22.a and
|
||||
t22.a in (select t12.a from t11, t12 where t11.a in(255,256) and t11.a = t12.a and t11.c is null) and t22.c is null order by t21.a;
|
||||
|
||||
set @@optimizer_switch=@save_optimizer_switch;
|
||||
|
||||
drop table t1, t11, t12, t21, t22;
|
||||
|
||||
#
|
||||
|
@ -888,7 +893,7 @@ drop table t1, t11, t12, t21, t22;
|
|||
create table t1(a int);
|
||||
insert into t1 values (0),(1);
|
||||
|
||||
set @@optimizer_switch='firstmatch=off';
|
||||
set @@optimizer_switch='firstmatch=off,materialization=off';
|
||||
explain
|
||||
select (select max(Y.a) from t1 Y where a in (select a from t1 Z) and a < X.a) as subq from t1 X;
|
||||
select (select max(Y.a) from t1 Y where a in (select a from t1 Z) and a < X.a) as subq from t1 X;
|
||||
|
@ -914,6 +919,9 @@ select * from t1 where 2 in (select a from t0);
|
|||
set @@optimizer_switch=@save_optimizer_switch;
|
||||
|
||||
|
||||
set @@optimizer_switch=@save_optimizer_switch;
|
||||
set @@optimizer_switch='materialization=off';
|
||||
|
||||
#
|
||||
# FirstMatch referring to a derived table
|
||||
#
|
||||
|
@ -943,6 +951,8 @@ and t4.pk=t1.c);
|
|||
|
||||
drop table t1, t3, t4;
|
||||
|
||||
set @@optimizer_switch=@save_optimizer_switch;
|
||||
|
||||
#
|
||||
# Test if we handle duplicate elimination temptable overflowing to disk
|
||||
#
|
||||
|
@ -997,6 +1007,9 @@ explain select * from t1 where a in (select a from t1);
|
|||
drop table t1;
|
||||
set @@optimizer_switch=@save_optimizer_switch;
|
||||
|
||||
set @@optimizer_switch=@save_optimizer_switch;
|
||||
set @@optimizer_switch='materialization=off';
|
||||
|
||||
#
|
||||
# SJ-Materialization-scan for non-first table
|
||||
#
|
||||
|
@ -1040,6 +1053,8 @@ explain select * from t2 where (b,a) in (select a,b from t1 where a=3);
|
|||
|
||||
drop table t1,t2;
|
||||
|
||||
set @@optimizer_switch=@save_optimizer_switch;
|
||||
|
||||
#
|
||||
# Multi-column sj-materialization with lookups
|
||||
#
|
||||
|
@ -1048,7 +1063,7 @@ insert into t1 select a,a from t0;
|
|||
create table t2 (a int, b int);
|
||||
insert into t2 select A.a + 10*B.a, A.a + 10*B.a from t0 A, t0 B;
|
||||
|
||||
set @@optimizer_switch='firstmatch=off';
|
||||
set @@optimizer_switch='firstmatch=off,materialization=off';
|
||||
explain select * from t1 where (a,b) in (select a,b from t2);
|
||||
|
||||
# A smallish test if find_best() still works for semi-join optimization:
|
||||
|
@ -1060,6 +1075,7 @@ set @@optimizer_switch=@save_optimizer_switch;
|
|||
|
||||
drop table t0, t1, t2;
|
||||
|
||||
set @@optimizer_switch='materialization=off';
|
||||
|
||||
#
|
||||
# Primitive SJ-Materialization tests for DECIMAL and DATE
|
||||
|
@ -1094,6 +1110,8 @@ explain select * from t1 where (a,b,c) in (select X.a, Y.a, Z.a from t2 X, t2 Y,
|
|||
|
||||
drop table t0,t1,t2;
|
||||
|
||||
set @@optimizer_switch=@save_optimizer_switch;
|
||||
|
||||
--echo
|
||||
--echo BUG#37842: Assertion in DsMrr_impl::dsmrr_init, at handler.cc:4307
|
||||
--echo
|
||||
|
@ -1150,12 +1168,15 @@ create table t3 (
|
|||
insert into t3 values (1,1, 'foo'), (2,2,'bar');
|
||||
|
||||
--echo The following must be converted to a semi-join:
|
||||
set @save_optimizer_switch=@@optimizer_switch;
|
||||
set @@optimizer_switch='materialization=off';
|
||||
explain extended SELECT a.idIndividual FROM t1 a
|
||||
WHERE a.idIndividual IN
|
||||
( SELECT c.idObj FROM t3 cona
|
||||
INNER JOIN t2 c ON c.idContact=cona.idContact
|
||||
WHERE cona.postalStripped='T2H3B2'
|
||||
);
|
||||
set @@optimizer_switch=@save_optimizer_switch;
|
||||
drop table t1,t2,t3;
|
||||
|
||||
--echo #
|
||||
|
|
|
@ -125,6 +125,9 @@ INSERT INTO t4 VALUES (1), (2), (3);
|
|||
CREATE TABLE t5 ( a INT );
|
||||
INSERT INTO t5 VALUES (NULL), (2);
|
||||
|
||||
SET @old_optimizer_switch = @@session.optimizer_switch;
|
||||
SET SESSION optimizer_switch = 'materialization=off,in_to_exists=on,semijoin=off';
|
||||
|
||||
--replace_column 1 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x 10 x
|
||||
EXPLAIN
|
||||
SELECT * FROM t1 WHERE ( a, b ) NOT IN ( SELECT c, d FROM t2 );
|
||||
|
@ -166,6 +169,8 @@ SELECT * FROM t1 WHERE b NOT IN ( SELECT c FROM t2 WHERE c = 1 );
|
|||
|
||||
SELECT * FROM t1 WHERE NULL NOT IN ( SELECT c FROM t2 WHERE c = 1 AND c <> 1 );
|
||||
|
||||
SET SESSION optimizer_switch = @old_optimizer_switch;
|
||||
|
||||
DROP TABLE t1, t2, t3, t4, t5;
|
||||
|
||||
--echo #
|
||||
|
|
|
@ -323,7 +323,7 @@ create index key1 on t2 (kp1, kp2);
|
|||
create index key2 on t2 (kp1);
|
||||
create index key3 on t2 (kp2);
|
||||
|
||||
set session optimizer_switch='default';
|
||||
SET @@optimizer_switch='materialization=off,semijoin=off,in_to_exists=on';
|
||||
|
||||
analyze table t2;
|
||||
|
||||
|
@ -331,6 +331,8 @@ explain
|
|||
select c1 from t1 where c1 in (select kp1 from t2 where kp2 = 10 and c2 = 4) or c1 > 7;
|
||||
select c1 from t1 where c1 in (select kp1 from t2 where kp2 = 10 and c2 = 4) or c1 > 7;
|
||||
|
||||
set @@optimizer_switch='default';
|
||||
|
||||
drop table t1, t2;
|
||||
|
||||
--echo #
|
||||
|
|
|
@ -593,17 +593,13 @@ protected:
|
|||
#define OPTIMIZER_SWITCH_LAST (1ULL << 26)
|
||||
|
||||
/* The following must be kept in sync with optimizer_switch_str in mysqld.cc */
|
||||
/*
|
||||
TODO: Materialization is off by default to mimic 5.1/5.2 behavior.
|
||||
Once cost based choice between materialization and in-to-exists should be
|
||||
enabled by default, add OPTIMIZER_SWITCH_MATERIALIZATION
|
||||
*/
|
||||
#define OPTIMIZER_SWITCH_DEFAULT (OPTIMIZER_SWITCH_INDEX_MERGE | \
|
||||
OPTIMIZER_SWITCH_INDEX_MERGE_UNION | \
|
||||
OPTIMIZER_SWITCH_INDEX_MERGE_SORT_UNION | \
|
||||
OPTIMIZER_SWITCH_INDEX_MERGE_INTERSECT | \
|
||||
OPTIMIZER_SWITCH_TABLE_ELIMINATION | \
|
||||
OPTIMIZER_SWITCH_IN_TO_EXISTS | \
|
||||
OPTIMIZER_SWITCH_MATERIALIZATION | \
|
||||
OPTIMIZER_SWITCH_PARTIAL_MATCH_ROWID_MERGE|\
|
||||
OPTIMIZER_SWITCH_PARTIAL_MATCH_TABLE_SCAN|\
|
||||
OPTIMIZER_SWITCH_JOIN_CACHE_INCREMENTAL | \
|
||||
|
|
|
@ -486,7 +486,7 @@ static const char *optimizer_switch_str="index_merge=on,index_merge_union=on,"
|
|||
"derived_with_keys=off,"
|
||||
"firstmatch=on,"
|
||||
"loosescan=on,"
|
||||
"materialization=off,"
|
||||
"materialization=on,"
|
||||
"in_to_exists=on,"
|
||||
"semijoin=on,"
|
||||
"partial_match_rowid_merge=on,"
|
||||
|
|
|
@ -447,7 +447,7 @@ int check_and_do_in_subquery_rewrites(JOIN *join)
|
|||
subquery execution strategies based on optimizer switches and syntactic
|
||||
properties.
|
||||
*/
|
||||
if (in_subs)
|
||||
if (in_subs && !in_subs->has_strategy())
|
||||
{
|
||||
if (is_materialization_applicable(thd, in_subs, select_lex))
|
||||
{
|
||||
|
|
|
@ -817,7 +817,7 @@ inject_jtbm_conds(JOIN *join, List<TABLE_LIST> *join_list, Item **join_where)
|
|||
double rows;
|
||||
double read_time;
|
||||
|
||||
DBUG_ASSERT(subq_pred->test_set_strategy(SUBS_MATERIALIZATION));
|
||||
//DBUG_ASSERT(subq_pred->test_set_strategy(SUBS_MATERIALIZATION));
|
||||
subq_pred->optimize(&rows, &read_time);
|
||||
|
||||
subq_pred->jtbm_read_time= read_time;
|
||||
|
|
Loading…
Reference in a new issue