mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Merge.
This commit is contained in:
@ -346,8 +346,8 @@ WHERE t4.a >= t3.b
|
||||
AND a = SOME (SELECT b FROM t5));
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t3 ALL NULL NULL NULL NULL 2 Using where
|
||||
2 DEPENDENT SUBQUERY t5 index c c 10 NULL 2 Using where; Using index; LooseScan
|
||||
2 DEPENDENT SUBQUERY t4 eq_ref PRIMARY PRIMARY 4 test.t5.b 1 Using index condition; Using where
|
||||
2 DEPENDENT SUBQUERY t5 index c c 10 NULL 2 Using where; Using index; Start temporary
|
||||
2 DEPENDENT SUBQUERY t4 eq_ref PRIMARY PRIMARY 4 test.t5.b 1 Using index condition; Using where; End temporary
|
||||
SELECT *
|
||||
FROM t3
|
||||
WHERE t3.b > ALL (
|
||||
|
@ -2050,4 +2050,37 @@ a
|
||||
3
|
||||
set optimizer_switch= @tmp_otimizer_switch;
|
||||
drop table t1,t2;
|
||||
#
|
||||
# Bug #887496: semijoin with IN equality for the second part of an index
|
||||
#
|
||||
CREATE TABLE t1 (a int);
|
||||
INSERT INTO t1 VALUES (9), (0), (8), (5);
|
||||
CREATE TABLE t2 (a int, b varchar(1), INDEX idx (b,a));
|
||||
INSERT INTO t2 VALUES (5,'r'), (5,'z');
|
||||
CREATE TABLE t3 (a int, b varchar(1), INDEX idx (b,a));
|
||||
INSERT INTO t3 VALUES (5,'r'), (5,'z');
|
||||
set @tmp_otimizer_switch= @@optimizer_switch;
|
||||
SET SESSION optimizer_switch='semijoin=on,firstmatch=on';
|
||||
SET SESSION optimizer_switch='loosescan=off';
|
||||
EXPLAIN
|
||||
SELECT * FROM t1 WHERE a IN (SELECT t2.a FROM t2,t3 WHERE t2.b = t3.b);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t2 index idx idx 9 NULL 2 Using where; Using index; Start temporary
|
||||
1 PRIMARY t3 ref idx idx 4 test.t2.b 1 Using index
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 4 Using where; End temporary; Using join buffer (flat, BNL join)
|
||||
SELECT * FROM t1 WHERE a IN (SELECT t2.a FROM t2,t3 WHERE t2.b = t3.b);
|
||||
a
|
||||
5
|
||||
SET SESSION optimizer_switch='loosescan=on';
|
||||
EXPLAIN
|
||||
SELECT * FROM t1 WHERE a IN (SELECT t2.a FROM t2,t3 WHERE t2.b = t3.b);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t2 index idx idx 9 NULL 2 Using where; Using index; Start temporary
|
||||
1 PRIMARY t3 ref idx idx 4 test.t2.b 1 Using index
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 4 Using where; End temporary; Using join buffer (flat, BNL join)
|
||||
SELECT * FROM t1 WHERE a IN (SELECT t2.a FROM t2,t3 WHERE t2.b = t3.b);
|
||||
a
|
||||
5
|
||||
set optimizer_switch= @tmp_otimizer_switch;
|
||||
DROP TABLE t1,t2,t3;
|
||||
set optimizer_switch=@subselect_sj_tmp;
|
||||
|
@ -2061,6 +2061,39 @@ a
|
||||
3
|
||||
set optimizer_switch= @tmp_otimizer_switch;
|
||||
drop table t1,t2;
|
||||
#
|
||||
# Bug #887496: semijoin with IN equality for the second part of an index
|
||||
#
|
||||
CREATE TABLE t1 (a int);
|
||||
INSERT INTO t1 VALUES (9), (0), (8), (5);
|
||||
CREATE TABLE t2 (a int, b varchar(1), INDEX idx (b,a));
|
||||
INSERT INTO t2 VALUES (5,'r'), (5,'z');
|
||||
CREATE TABLE t3 (a int, b varchar(1), INDEX idx (b,a));
|
||||
INSERT INTO t3 VALUES (5,'r'), (5,'z');
|
||||
set @tmp_otimizer_switch= @@optimizer_switch;
|
||||
SET SESSION optimizer_switch='semijoin=on,firstmatch=on';
|
||||
SET SESSION optimizer_switch='loosescan=off';
|
||||
EXPLAIN
|
||||
SELECT * FROM t1 WHERE a IN (SELECT t2.a FROM t2,t3 WHERE t2.b = t3.b);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t2 index idx idx 9 NULL 2 Using where; Using index; Start temporary
|
||||
1 PRIMARY t3 ref idx idx 4 test.t2.b 1 Using index
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 4 Using where; End temporary; Using join buffer (flat, BNL join)
|
||||
SELECT * FROM t1 WHERE a IN (SELECT t2.a FROM t2,t3 WHERE t2.b = t3.b);
|
||||
a
|
||||
5
|
||||
SET SESSION optimizer_switch='loosescan=on';
|
||||
EXPLAIN
|
||||
SELECT * FROM t1 WHERE a IN (SELECT t2.a FROM t2,t3 WHERE t2.b = t3.b);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t2 index idx idx 9 NULL 2 Using where; Using index; Start temporary
|
||||
1 PRIMARY t3 ref idx idx 4 test.t2.b 1 Using index
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 4 Using where; End temporary; Using join buffer (flat, BNL join)
|
||||
SELECT * FROM t1 WHERE a IN (SELECT t2.a FROM t2,t3 WHERE t2.b = t3.b);
|
||||
a
|
||||
5
|
||||
set optimizer_switch= @tmp_otimizer_switch;
|
||||
DROP TABLE t1,t2,t3;
|
||||
set optimizer_switch=@subselect_sj_tmp;
|
||||
#
|
||||
# BUG#49129: Wrong result with IN-subquery with join_cache_level=6 and firstmatch=off
|
||||
|
@ -1880,5 +1880,35 @@ set optimizer_switch= @tmp_otimizer_switch;
|
||||
|
||||
drop table t1,t2;
|
||||
|
||||
--echo #
|
||||
--echo # Bug #887496: semijoin with IN equality for the second part of an index
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (a int);
|
||||
INSERT INTO t1 VALUES (9), (0), (8), (5);
|
||||
|
||||
CREATE TABLE t2 (a int, b varchar(1), INDEX idx (b,a));
|
||||
INSERT INTO t2 VALUES (5,'r'), (5,'z');
|
||||
|
||||
CREATE TABLE t3 (a int, b varchar(1), INDEX idx (b,a));
|
||||
INSERT INTO t3 VALUES (5,'r'), (5,'z');
|
||||
|
||||
set @tmp_otimizer_switch= @@optimizer_switch;
|
||||
SET SESSION optimizer_switch='semijoin=on,firstmatch=on';
|
||||
|
||||
SET SESSION optimizer_switch='loosescan=off';
|
||||
EXPLAIN
|
||||
SELECT * FROM t1 WHERE a IN (SELECT t2.a FROM t2,t3 WHERE t2.b = t3.b);
|
||||
SELECT * FROM t1 WHERE a IN (SELECT t2.a FROM t2,t3 WHERE t2.b = t3.b);
|
||||
|
||||
SET SESSION optimizer_switch='loosescan=on';
|
||||
EXPLAIN
|
||||
SELECT * FROM t1 WHERE a IN (SELECT t2.a FROM t2,t3 WHERE t2.b = t3.b);
|
||||
SELECT * FROM t1 WHERE a IN (SELECT t2.a FROM t2,t3 WHERE t2.b = t3.b);
|
||||
|
||||
set optimizer_switch= @tmp_otimizer_switch;
|
||||
|
||||
DROP TABLE t1,t2,t3;
|
||||
|
||||
# The following command must be the last one the file
|
||||
set optimizer_switch=@subselect_sj_tmp;
|
||||
|
Reference in New Issue
Block a user