[ Avaa Bypassed ]




Upload:

Command:

hmhc3928@3.139.236.144: ~ $
set optimizer_switch='batched_key_access=on,block_nested_loop=off,mrr_cost_based=off';
set optimizer_switch='semijoin=on,materialization=on';
set @old_opt_switch=@@optimizer_switch;
set optimizer_switch='subquery_materialization_cost_based=off';
drop table if exists t0, t1, t2, t10, t11, t12;
create table t1 (a int not null, b int, primary key (a));
create table t2 (a int not null, primary key (a));
create table t3 (a int not null, b int, primary key (a));
insert into t1 values (1,10), (2,20), (3,30),  (4,40);
insert into t2 values (2), (3), (4), (5);
insert into t3 values (10,3), (20,4), (30,5);
select * from t2 where t2.a in (select a from t1);
a
2
3
4
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	SIMPLE	t2	index	PRIMARY	PRIMARY	4	NULL	4	100.00	Using index
1	SIMPLE	t1	eq_ref	PRIMARY	PRIMARY	4	test.t2.a	1	100.00	Using index
Warnings:
Note	1003	/* select#1 */ select `test`.`t2`.`a` AS `a` from `test`.`t1` join `test`.`t2` where (`test`.`t1`.`a` = `test`.`t2`.`a`)
select * from t2 where t2.a in (select a from t1 where t1.b <> 30);
a
2
4
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	SIMPLE	t2	index	PRIMARY	PRIMARY	4	NULL	4	100.00	Using index
1	SIMPLE	t1	eq_ref	PRIMARY	PRIMARY	4	test.t2.a	1	100.00	Using where
Warnings:
Note	1003	/* select#1 */ select `test`.`t2`.`a` AS `a` from `test`.`t1` join `test`.`t2` where ((`test`.`t1`.`a` = `test`.`t2`.`a`) and (`test`.`t1`.`b` <> 30))
select * from t2 where t2.a in (select t1.a from t1,t3 where t1.b=t3.a);
a
2
3
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	SIMPLE	t2	index	PRIMARY	PRIMARY	4	NULL	4	100.00	Using index
1	SIMPLE	t1	eq_ref	PRIMARY	PRIMARY	4	test.t2.a	1	100.00	Using where
1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.b	1	100.00	Using index
Warnings:
Note	1003	/* select#1 */ select `test`.`t2`.`a` AS `a` from `test`.`t1` join `test`.`t3` join `test`.`t2` where ((`test`.`t1`.`a` = `test`.`t2`.`a`) and (`test`.`t3`.`a` = `test`.`t1`.`b`))
drop table t1, t2, t3;
create table t1 (a int, b int, index a (a,b));
create table t2 (a int, index a (a));
create table t3 (a int, b int, index a (a));
insert into t1 values (1,10), (2,20), (3,30), (4,40);
create table t0(a int);
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
insert into t1
select rand()*100000+200,rand()*100000 from t0 A, t0 B, t0 C, t0 D;
insert into t2 values (2), (3), (4), (5);
insert into t3 values (10,3), (20,4), (30,5);
select * from t2 where t2.a in (select a from t1);
a
2
3
4
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	SIMPLE	t2	index	a	a	5	NULL	4	100.00	Using where; Using index; Start temporary
1	SIMPLE	t1	ref	a	a	5	test.t2.a	101	100.00	Using index; End temporary
Warnings:
Note	1003	/* select#1 */ select `test`.`t2`.`a` AS `a` from `test`.`t2` semi join (`test`.`t1`) where (`test`.`t1`.`a` = `test`.`t2`.`a`)
select * from t2 where t2.a in (select a from t1 where t1.b <> 30);
a
2
4
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	SIMPLE	t2	index	a	a	5	NULL	4	100.00	Using where; Using index; Start temporary
1	SIMPLE	t1	ref	a	a	5	test.t2.a	101	100.00	Using where; Using index; End temporary
Warnings:
Note	1003	/* select#1 */ select `test`.`t2`.`a` AS `a` from `test`.`t2` semi join (`test`.`t1`) where ((`test`.`t1`.`a` = `test`.`t2`.`a`) and (`test`.`t1`.`b` <> 30))
select * from t2 where t2.a in (select t1.a from t1,t3 where t1.b=t3.a);
a
2
3
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	SIMPLE	t3	index	a	a	5	NULL	3	100.00	Using where; Using index; Start temporary
1	SIMPLE	t2	index	a	a	5	NULL	4	100.00	Using where; Using index
1	SIMPLE	t1	ref	a	a	10	test.t2.a,test.t3.a	116	100.00	Using index; End temporary
Warnings:
Note	1003	/* select#1 */ select `test`.`t2`.`a` AS `a` from `test`.`t2` semi join (`test`.`t1` join `test`.`t3`) where ((`test`.`t1`.`a` = `test`.`t2`.`a`) and (`test`.`t1`.`b` = `test`.`t3`.`a`))
insert into t1 values (3,31);
select * from t2 where t2.a in (select a from t1 where t1.b <> 30);
a
2
3
4
select * from t2 where t2.a in (select a from t1 where t1.b <> 30 and t1.b <> 31);
a
2
4
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	SIMPLE	t2	index	a	a	5	NULL	4	100.00	Using where; Using index; Start temporary
1	SIMPLE	t1	ref	a	a	5	test.t2.a	101	100.00	Using where; Using index; End temporary
Warnings:
Note	1003	/* select#1 */ select `test`.`t2`.`a` AS `a` from `test`.`t2` semi join (`test`.`t1`) where ((`test`.`t1`.`a` = `test`.`t2`.`a`) and (`test`.`t1`.`b` <> 30))
drop table t0, t1, t2, t3;
create table t0 (a int);
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
create table t1(a int, b int);
insert into t1 values (0,0),(1,1),(2,2);
create table t2 as select * from t1;
create table t11(a int, b int);
create table t10 (pk int, a int, primary key(pk));
insert into t10 select a,a from t0;
create table t12 like t10;
insert into t12 select * from t10;
Flattened because of dependency, t10=func(t1)
explain select * from t1 where a in (select pk from t10);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	Using where
1	SIMPLE	t10	eq_ref	PRIMARY	PRIMARY	4	test.t1.a	1	Using index
select * from t1 where a in (select pk from t10);
a	b
0	0
1	1
2	2
A confluent case of dependency
explain select * from t1 where a in (select a from t10 where pk=12);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
select * from t1 where a in (select a from t10 where pk=12);
a	b
explain select * from t1 where a in (select a from t10 where pk=9);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t10	const	PRIMARY	PRIMARY	4	const	1	NULL
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	Using where
select * from t1 where a in (select a from t10 where pk=9);
a	b
An empty table inside
explain select * from t1 where a in (select a from t11);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	NULL
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	Using where
2	MATERIALIZED	t11	ALL	NULL	NULL	NULL	NULL	0	NULL
select * from t1 where a in (select a from t11);
a	b
explain select * from t1 where a in (select pk from t10) and b in (select pk from t10);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	Using where
1	SIMPLE	t10	eq_ref	PRIMARY	PRIMARY	4	test.t1.a	1	Using index
1	SIMPLE	t10	eq_ref	PRIMARY	PRIMARY	4	test.t1.b	1	Using index
select * from t1 where a in (select pk from t10) and b in (select pk from t10);
a	b
0	0
1	1
2	2
flattening a nested subquery
explain select * from t1 where a in (select pk from t10 where t10.a in (select pk from t12));
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	Using where
1	SIMPLE	t10	eq_ref	PRIMARY	PRIMARY	4	test.t1.a	1	Using where
1	SIMPLE	t12	eq_ref	PRIMARY	PRIMARY	4	test.t10.a	1	Using index
select * from t1 where a in (select pk from t10 where t10.a in (select pk from t12));
a	b
0	0
1	1
2	2
flattening subquery w/ several tables
explain extended select * from t1 where a in (select t10.pk from t10, t12 where t12.pk=t10.a);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
1	SIMPLE	t10	eq_ref	PRIMARY	PRIMARY	4	test.t1.a	1	100.00	Using where
1	SIMPLE	t12	eq_ref	PRIMARY	PRIMARY	4	test.t10.a	1	100.00	Using index
Warnings:
Note	1003	/* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t10` join `test`.`t12` join `test`.`t1` where ((`test`.`t10`.`pk` = `test`.`t1`.`a`) and (`test`.`t12`.`pk` = `test`.`t10`.`a`))
subqueries within outer joins go into ON expr.
explAin extended
select * from t1 left join (t2 A, t2 B) on ( A.A= t1.A And B.A in (select pk from t10));
id	select_type	tABle	type	possiBle_keys	key	key_len	ref	rows	filtered	ExtrA
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	100.00	NULL
1	SIMPLE	A	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
1	SIMPLE	B	ALL	NULL	NULL	NULL	NULL	3	100.00	NULL
1	SIMPLE	t10	eq_ref	PRIMARY	PRIMARY	4	test.B.A	1	100.00	Using index
Warnings:
Note	1003	/* select#1 */ 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`.`t10` join `test`.`t2` `A` join `test`.`t2` `B`) on(((`test`.`A`.`A` = `test`.`t1`.`A`) And 1 And (`test`.`B`.`A` = `test`.`t10`.`pk`))) 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	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	100.00	NULL
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
1	SIMPLE	t10	eq_ref	PRIMARY	PRIMARY	4	test.t2.A	1	100.00	Using index
Warnings:
Note	1003	/* select#1 */ 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`.`t10` join `test`.`t2`) on(((`test`.`t2`.`A` = `test`.`t1`.`A`) And 1 And (`test`.`t2`.`A` = `test`.`t10`.`pk`))) 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,
t1 s10, t1 s11,  t1 s12, t1 s13, t1 s14,t1 s15,t1 s16,t1 s17,t1 s18,t1 s19,
t1 s20, t1 s21,  t1 s22, t1 s23, t1 s24,t1 s25,t1 s26,t1 s27,t1 s28,t1 s29,
t1 s30, t1 s31,  t1 s32, t1 s33, t1 s34,t1 s35,t1 s36,t1 s37,t1 s38,t1 s39,
t1 s40, t1 s41,  t1 s42, t1 s43, t1 s44,t1 s45,t1 s46,t1 s47,t1 s48,t1 s49
where
s00.a in (
select m00.a from
t1 m00, t1 m01,  t1 m02, t1 m03, t1 m04,t1 m05,t1 m06,t1 m07,t1 m08,t1 m09,
t1 m10, t1 m11,  t1 m12, t1 m13, t1 m14,t1 m15,t1 m16,t1 m17,t1 m18,t1 m19
);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	PRIMARY	s00	ALL	NULL	NULL	NULL	NULL	3	Using where
1	PRIMARY	s01	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s02	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s03	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s04	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s05	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s06	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s07	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s08	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s09	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s10	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s11	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s12	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s13	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s14	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s15	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s16	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s17	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s18	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s19	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s20	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s21	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s22	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s23	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s24	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s25	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s26	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s27	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s28	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s29	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s30	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s31	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s32	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s33	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s34	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s35	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s36	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s37	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s38	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s39	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s40	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s41	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s42	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s43	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s44	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s45	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s46	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s47	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s48	ALL	NULL	NULL	NULL	NULL	3	NULL
1	PRIMARY	s49	ALL	NULL	NULL	NULL	NULL	3	NULL
2	SUBQUERY	m00	ALL	NULL	NULL	NULL	NULL	3	NULL
2	SUBQUERY	m01	ALL	NULL	NULL	NULL	NULL	3	NULL
2	SUBQUERY	m02	ALL	NULL	NULL	NULL	NULL	3	NULL
2	SUBQUERY	m03	ALL	NULL	NULL	NULL	NULL	3	NULL
2	SUBQUERY	m04	ALL	NULL	NULL	NULL	NULL	3	NULL
2	SUBQUERY	m05	ALL	NULL	NULL	NULL	NULL	3	NULL
2	SUBQUERY	m06	ALL	NULL	NULL	NULL	NULL	3	NULL
2	SUBQUERY	m07	ALL	NULL	NULL	NULL	NULL	3	NULL
2	SUBQUERY	m08	ALL	NULL	NULL	NULL	NULL	3	NULL
2	SUBQUERY	m09	ALL	NULL	NULL	NULL	NULL	3	NULL
2	SUBQUERY	m10	ALL	NULL	NULL	NULL	NULL	3	NULL
2	SUBQUERY	m11	ALL	NULL	NULL	NULL	NULL	3	NULL
2	SUBQUERY	m12	ALL	NULL	NULL	NULL	NULL	3	NULL
2	SUBQUERY	m13	ALL	NULL	NULL	NULL	NULL	3	NULL
2	SUBQUERY	m14	ALL	NULL	NULL	NULL	NULL	3	NULL
2	SUBQUERY	m15	ALL	NULL	NULL	NULL	NULL	3	NULL
2	SUBQUERY	m16	ALL	NULL	NULL	NULL	NULL	3	NULL
2	SUBQUERY	m17	ALL	NULL	NULL	NULL	NULL	3	NULL
2	SUBQUERY	m18	ALL	NULL	NULL	NULL	NULL	3	NULL
2	SUBQUERY	m19	ALL	NULL	NULL	NULL	NULL	3	NULL
select * from
t1 left join t2 on (t2.a= t1.a and t2.a in (select pk from t10)) 
where t1.a < 5;
a	b	a	b
0	0	0	0
1	1	1	1
2	2	2	2
prepare s1 from
' select * from
    t1 left join t2 on (t2.a= t1.a and t2.a in (select pk from t10))
  where t1.a < 5';
execute s1;
a	b	a	b
0	0	0	0
1	1	1	1
2	2	2	2
execute s1;
a	b	a	b
0	0	0	0
1	1	1	1
2	2	2	2
insert into t1 select (A.a + 10 * B.a),1 from t0 A, t0 B;
explain extended select * from t1 where a in (select pk from t10 where pk<3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	SIMPLE	t10	range	PRIMARY	PRIMARY	4	NULL	4	100.00	Using where; Using index
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	103	100.00	Using where
Warnings:
Note	1003	/* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t10` join `test`.`t1` where ((`test`.`t1`.`a` = `test`.`t10`.`pk`) and (`test`.`t10`.`pk` < 3))
drop table t0, t1, t2;
drop table t10, t11, t12;
#
# Check that subqueries with outer joins or straight_join work for 
# different permutations of const and non-const tables.  (Ref. Bug#46692)
#
CREATE TABLE t1 (i INTEGER);
CREATE TABLE t2 (i INTEGER);
CREATE TABLE t3 (i INTEGER);
SELECT (SELECT COUNT(*) from t1) AS c1,
(SELECT COUNT(*) from t2) AS c2,
(SELECT COUNT(*) from t3) AS c3;
c1	c2	c3
0	0	0
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
i
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
EXECUTE stmt;
i
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
EXECUTE stmt;
i
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
INSERT INTO t3 VALUES (2);
SELECT (SELECT COUNT(*) from t1) AS c1,
(SELECT COUNT(*) from t2) AS c2,
(SELECT COUNT(*) from t3) AS c3;
c1	c2	c3
0	0	1
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
i
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
EXECUTE stmt;
i
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
EXECUTE stmt;
i
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
INSERT INTO t3 VALUES (1);
SELECT (SELECT COUNT(*) from t1) AS c1,
(SELECT COUNT(*) from t2) AS c2,
(SELECT COUNT(*) from t3) AS c3;
c1	c2	c3
0	0	2
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
i
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
EXECUTE stmt;
i
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
EXECUTE stmt;
i
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
INSERT INTO t3 VALUES (0);
DELETE FROM t3;
INSERT INTO t2 VALUES (2);
SELECT (SELECT COUNT(*) from t1) AS c1,
(SELECT COUNT(*) from t2) AS c2,
(SELECT COUNT(*) from t3) AS c3;
c1	c2	c3
0	1	0
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
i
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
EXECUTE stmt;
i
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
EXECUTE stmt;
i
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
INSERT INTO t3 VALUES (2);
SELECT (SELECT COUNT(*) from t1) AS c1,
(SELECT COUNT(*) from t2) AS c2,
(SELECT COUNT(*) from t3) AS c3;
c1	c2	c3
0	1	1
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
i
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
EXECUTE stmt;
i
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
EXECUTE stmt;
i
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
INSERT INTO t3 VALUES (1);
SELECT (SELECT COUNT(*) from t1) AS c1,
(SELECT COUNT(*) from t2) AS c2,
(SELECT COUNT(*) from t3) AS c3;
c1	c2	c3
0	1	2
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
i
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
EXECUTE stmt;
i
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
EXECUTE stmt;
i
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
INSERT INTO t3 VALUES (0);
DELETE FROM t3;
INSERT INTO t2 VALUES (1);
SELECT (SELECT COUNT(*) from t1) AS c1,
(SELECT COUNT(*) from t2) AS c2,
(SELECT COUNT(*) from t3) AS c3;
c1	c2	c3
0	2	0
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
i
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
EXECUTE stmt;
i
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
EXECUTE stmt;
i
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
INSERT INTO t3 VALUES (2);
SELECT (SELECT COUNT(*) from t1) AS c1,
(SELECT COUNT(*) from t2) AS c2,
(SELECT COUNT(*) from t3) AS c3;
c1	c2	c3
0	2	1
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
i
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
EXECUTE stmt;
i
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
EXECUTE stmt;
i
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
INSERT INTO t3 VALUES (1);
SELECT (SELECT COUNT(*) from t1) AS c1,
(SELECT COUNT(*) from t2) AS c2,
(SELECT COUNT(*) from t3) AS c3;
c1	c2	c3
0	2	2
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
i
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
EXECUTE stmt;
i
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
EXECUTE stmt;
i
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
INSERT INTO t3 VALUES (0);
DELETE FROM t3;
INSERT INTO t2 VALUES (0);
DELETE FROM t2;
INSERT INTO t1 VALUES (2);
SELECT (SELECT COUNT(*) from t1) AS c1,
(SELECT COUNT(*) from t2) AS c2,
(SELECT COUNT(*) from t3) AS c3;
c1	c2	c3
1	0	0
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	0	Using where
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	0	Using where
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
i
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
EXECUTE stmt;
i
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	0	Using where
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	0	Using where
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
EXECUTE stmt;
i
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	0	Using where
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	0	Using where
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	0	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	0	Using where
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	0	Using where
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	0	Using where
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	0	Using where; Start temporary
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	0	Using where; End temporary
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	0	Using where
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	0	Using where
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	0	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	0	Using where
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
INSERT INTO t3 VALUES (2);
SELECT (SELECT COUNT(*) from t1) AS c1,
(SELECT COUNT(*) from t2) AS c2,
(SELECT COUNT(*) from t3) AS c3;
c1	c2	c3
1	0	1
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	0	Using where
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	1	Using where
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
i
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
EXECUTE stmt;
i
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	0	Using where
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	1	Using where
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
EXECUTE stmt;
i
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	1	Using where
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	0	Using where
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
2
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	0	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	1	Using where
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	0	Using where
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	1	Using where
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	0	Using where; Start temporary
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	1	Using where; End temporary
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	1	Using where
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	0	Using where
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	0	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	1	Using where
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
INSERT INTO t3 VALUES (1);
SELECT (SELECT COUNT(*) from t1) AS c1,
(SELECT COUNT(*) from t2) AS c2,
(SELECT COUNT(*) from t3) AS c3;
c1	c2	c3
1	0	2
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	0	Using where
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	2	Using where
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
i
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
EXECUTE stmt;
i
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	0	Using where
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	2	Using where
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
EXECUTE stmt;
i
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	2	Using where
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	0	Using where
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
2
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	0	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	2	Using where
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	0	Using where
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	2	Using where
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	0	Using where; Start temporary
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	2	Using where
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	0	Using where
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	0	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	2	Using where
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
INSERT INTO t3 VALUES (0);
DELETE FROM t3;
INSERT INTO t2 VALUES (2);
SELECT (SELECT COUNT(*) from t1) AS c1,
(SELECT COUNT(*) from t2) AS c2,
(SELECT COUNT(*) from t3) AS c3;
c1	c2	c3
1	1	0
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	0	Using where
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	1	Using where
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
i
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
EXECUTE stmt;
i
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	0	Using where
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	1	Using where
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
EXECUTE stmt;
i
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	0	Using where
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	1	Using where
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	1	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	0	Using where
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	0	Using where
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	1	Using where
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	0	Using where; Start temporary
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1	Using where; End temporary
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	0	Using where
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	1	Using where
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	1	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	0	Using where
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
INSERT INTO t3 VALUES (2);
SELECT (SELECT COUNT(*) from t1) AS c1,
(SELECT COUNT(*) from t2) AS c2,
(SELECT COUNT(*) from t3) AS c3;
c1	c2	c3
1	1	1
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	1	Using where
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	1	Using where
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
i
2
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
2
EXECUTE stmt;
i
2
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	1	Using where
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	1	Using where
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
2
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
2
EXECUTE stmt;
i
2
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	1	Using where
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	1	Using where
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
2
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	1	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	1	Using where
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
2
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	1	Using where
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	1	Using where
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1	Using where; Start temporary
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	1	Using where; End temporary
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	1	Using where
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	1	Using where
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	1	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	1	Using where
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
INSERT INTO t3 VALUES (1);
SELECT (SELECT COUNT(*) from t1) AS c1,
(SELECT COUNT(*) from t2) AS c2,
(SELECT COUNT(*) from t3) AS c3;
c1	c2	c3
1	1	2
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1	Using where; Start temporary
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
i
2
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
2
EXECUTE stmt;
i
2
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1	Using where; Start temporary
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
2
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
2
EXECUTE stmt;
i
2
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	2	Using where
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	1	Using where
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
2
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1	Start temporary
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
2
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1	Using where; Start temporary
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1	Using where; Start temporary
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	2	Using where
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	1	Using where
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1	Start temporary
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
INSERT INTO t3 VALUES (0);
DELETE FROM t3;
INSERT INTO t2 VALUES (1);
SELECT (SELECT COUNT(*) from t1) AS c1,
(SELECT COUNT(*) from t2) AS c2,
(SELECT COUNT(*) from t3) AS c3;
c1	c2	c3
1	2	0
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	0	Using where
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	2	Using where
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
i
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
EXECUTE stmt;
i
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	0	Using where
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	2	Using where
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
EXECUTE stmt;
i
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	0	Using where
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	2	Using where
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	2	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	0	Using where
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	0	Using where
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	2	Using where
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	0	Using where; Start temporary
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	0	Using where
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	2	Using where
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	2	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	0	Using where
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
INSERT INTO t3 VALUES (2);
SELECT (SELECT COUNT(*) from t1) AS c1,
(SELECT COUNT(*) from t2) AS c2,
(SELECT COUNT(*) from t3) AS c3;
c1	c2	c3
1	2	1
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	1	Using where; Start temporary
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
i
2
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
2
EXECUTE stmt;
i
2
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	1	Using where; Start temporary
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
2
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
2
EXECUTE stmt;
i
2
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	1	Using where; Start temporary
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
2
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	2	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	1	Using where
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
2
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	1	Using where; Start temporary
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	1	Using where; Start temporary
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	1	Using where; Start temporary
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	2	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	1	Using where
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
INSERT INTO t3 VALUES (1);
SELECT (SELECT COUNT(*) from t1) AS c1,
(SELECT COUNT(*) from t2) AS c2,
(SELECT COUNT(*) from t3) AS c3;
c1	c2	c3
1	2	2
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	2	Using where
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	2	Using where
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
i
2
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
2
EXECUTE stmt;
i
2
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	2	Using where
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	2	Using where
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
2
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
2
EXECUTE stmt;
i
2
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	2	Using where
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	2	Using where
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
2
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	2	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	2	Using where
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
2
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	2	Using where
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	2	Using where
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	2	Using where; Start temporary
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	2	Using where
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	2	Using where
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	2	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	2	Using where
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
INSERT INTO t3 VALUES (0);
DELETE FROM t3;
INSERT INTO t2 VALUES (0);
DELETE FROM t2;
INSERT INTO t1 VALUES (1);
SELECT (SELECT COUNT(*) from t1) AS c1,
(SELECT COUNT(*) from t2) AS c2,
(SELECT COUNT(*) from t3) AS c3;
c1	c2	c3
2	0	0
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	NULL
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	0	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	0	Using where
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
i
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
EXECUTE stmt;
i
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	NULL
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	0	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	0	Using where
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
EXECUTE stmt;
i
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	NULL
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	0	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	0	Using where
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	NULL
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	0	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	0	NULL
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	0	Using where; Start temporary
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	NULL
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	0	Using where; End temporary
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	0	Using where; Start temporary
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	0	Using where
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	0	Using where; Start temporary
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	NULL
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	0	Using where; End temporary
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	0	Start temporary
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	NULL
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	0	Using where; End temporary
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
INSERT INTO t3 VALUES (2);
SELECT (SELECT COUNT(*) from t1) AS c1,
(SELECT COUNT(*) from t2) AS c2,
(SELECT COUNT(*) from t3) AS c3;
c1	c2	c3
2	0	1
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	0	Start temporary
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	1	Using where
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
i
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
EXECUTE stmt;
i
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	0	Start temporary
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	1	Using where
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
EXECUTE stmt;
i
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	1	Start temporary
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	0	Using where
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
2
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	0	Start temporary
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	0	Using where; Start temporary
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	NULL
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	1	Using where; End temporary
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	0	Using where; Start temporary
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	1	Using where
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	1	Using where
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	0	Using where
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	0	Start temporary
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	NULL
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	1	Using where; End temporary
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
INSERT INTO t3 VALUES (1);
SELECT (SELECT COUNT(*) from t1) AS c1,
(SELECT COUNT(*) from t2) AS c2,
(SELECT COUNT(*) from t3) AS c3;
c1	c2	c3
2	0	2
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	0	Start temporary
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
i
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
EXECUTE stmt;
i
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	0	Start temporary
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
EXECUTE stmt;
i
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	Start temporary
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	0	Using where
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
2
1
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	0	Start temporary
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	NULL
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	0	Using where; Start temporary
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	NULL
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	0	Using where; Start temporary
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	2	Using where
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	0	Using where
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	0	Start temporary
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	NULL
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
INSERT INTO t3 VALUES (0);
DELETE FROM t3;
INSERT INTO t2 VALUES (2);
SELECT (SELECT COUNT(*) from t1) AS c1,
(SELECT COUNT(*) from t2) AS c2,
(SELECT COUNT(*) from t3) AS c3;
c1	c2	c3
2	1	0
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	NULL
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	0	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	1	Using where
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
i
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
EXECUTE stmt;
i
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	NULL
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	0	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	1	Using where
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
EXECUTE stmt;
i
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	NULL
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	0	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	1	Using where
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	NULL
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	1	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	0	NULL
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	0	Using where; Start temporary
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	NULL
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1	Using where; End temporary
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	0	Using where; Start temporary
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1	Using where
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	0	Using where; Start temporary
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	NULL
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1	Using where; End temporary
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	1	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	0	Using where
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
INSERT INTO t3 VALUES (2);
SELECT (SELECT COUNT(*) from t1) AS c1,
(SELECT COUNT(*) from t2) AS c2,
(SELECT COUNT(*) from t3) AS c3;
c1	c2	c3
2	1	1
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	NULL
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	1	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	1	Using where
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
i
2
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
2
EXECUTE stmt;
i
2
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	NULL
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	1	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	1	Using where
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
2
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
2
EXECUTE stmt;
i
2
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	NULL
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	1	Using where
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
2
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	NULL
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	1	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	1	NULL
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
2
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	1	Using where
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	1	Using where
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1	Using where; Start temporary
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	1	Using where
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	1	Using where
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	1	Using where
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	1	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	1	Using where
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
INSERT INTO t3 VALUES (1);
SELECT (SELECT COUNT(*) from t1) AS c1,
(SELECT COUNT(*) from t2) AS c2,
(SELECT COUNT(*) from t3) AS c3;
c1	c2	c3
2	1	2
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1	Start temporary
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
i
2
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
2
EXECUTE stmt;
i
2
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1	Start temporary
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
2
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
2
EXECUTE stmt;
i
2
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	NULL
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	2	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	1	Using where
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
2
1
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1	Start temporary
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	NULL
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
2
1
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1	Using where; Start temporary
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	NULL
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1	Using where; Start temporary
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	2	Using where
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	1	Using where
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1	Start temporary
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	NULL
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
INSERT INTO t3 VALUES (0);
DELETE FROM t3;
INSERT INTO t2 VALUES (1);
SELECT (SELECT COUNT(*) from t1) AS c1,
(SELECT COUNT(*) from t2) AS c2,
(SELECT COUNT(*) from t3) AS c3;
c1	c2	c3
2	2	0
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	0	Start temporary
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
i
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
EXECUTE stmt;
i
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	0	Start temporary
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
EXECUTE stmt;
i
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	0	Start temporary
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	NULL
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	2	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	0	NULL
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	0	Using where; Start temporary
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	NULL
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	0	Using where; Start temporary
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	0	Using where; Start temporary
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	NULL
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	2	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	0	Using where
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
INSERT INTO t3 VALUES (2);
SELECT (SELECT COUNT(*) from t1) AS c1,
(SELECT COUNT(*) from t2) AS c2,
(SELECT COUNT(*) from t3) AS c3;
c1	c2	c3
2	2	1
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	1	Start temporary
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
i
2
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
2
EXECUTE stmt;
i
2
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	1	Start temporary
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
2
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
2
EXECUTE stmt;
i
2
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	1	Start temporary
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
2
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	NULL
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	2	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	1	NULL
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
2
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	1	Using where; Start temporary
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	NULL
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	1	Using where; Start temporary
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	1	Using where; Start temporary
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	NULL
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	2	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	1	Using where
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
INSERT INTO t3 VALUES (1);
SELECT (SELECT COUNT(*) from t1) AS c1,
(SELECT COUNT(*) from t2) AS c2,
(SELECT COUNT(*) from t3) AS c3;
c1	c2	c3
2	2	2
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	5	test.t1.i	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	2	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	2	Using where
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
i
2
1
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
2
1
EXECUTE stmt;
i
2
1
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	5	test.t1.i	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	2	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	2	Using where
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
2
1
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
EXECUTE stmt;
i
2
1
EXECUTE stmt;
i
2
1
DEALLOCATE PREPARE stmt;
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	5	test.t1.i	1	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	2	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	2	Using where
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
2
1
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	5	test.t1.i	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	2	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	2	NULL
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
2
1
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	2	Using where
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	2	Using where
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	2	Using where; Start temporary
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	2	Using where
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	2	Using where
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
i
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	2	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	2	Using where
SELECT * FROM t1 WHERE (11) IN 
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
i
INSERT INTO t3 VALUES (0);
DELETE FROM t3;
INSERT INTO t2 VALUES (0);
DELETE FROM t2;
INSERT INTO t1 VALUES (0);
DROP TABLE t1, t2, t3;
create table x1(k int primary key, d1 int, d2 int);
create table x2(k int primary key, d1 int, d2 int);
insert into x1 values
(10,   10,   10),
(20,   20,   20),
(21,   20,   null),
(30,   null, 30),
(40,   40,   40);
insert into x2 values
(10,   10,   10),
(20,   20,   20),
(21,   20,   null),
(30,   null, 30);
select *
from x1
where (d1, d2) in (select d1, d2
from x2);
k	d1	d2
10	10	10
20	20	20
select *
from x1
where (d1, d2) in (select d1, d2
from x2) is true;
k	d1	d2
10	10	10
20	20	20
select *
from x1
where (d1, d2) in (select d1, d2
from x2) is false;
k	d1	d2
40	40	40
select *
from x1
where (d1, d2) in (select d1, d2
from x2) is unknown;
k	d1	d2
21	20	NULL
30	NULL	30
select *
from x1
where d1 in (select d1
from x2
where x1.d2=x2.d2);
k	d1	d2
10	10	10
20	20	20
select *
from x1
where d1 in (select d1
from x2
where x1.d2=x2.d2) is true;
k	d1	d2
10	10	10
20	20	20
select *
from x1
where d1 in (select d1
from x2
where x1.d2=x2.d2) is false;
k	d1	d2
21	20	NULL
40	40	40
select *
from x1
where d1 in (select d1
from x2
where x1.d2=x2.d2) is unknown;
k	d1	d2
30	NULL	30
select *
from x1
where 1 in (select 1
from x2
where x1.d1=x2.d1 and x1.d2=x2.d2);
k	d1	d2
10	10	10
20	20	20
select *
from x1
where 1 in (select 1
from x2
where x1.d1=x2.d1 and x1.d2=x2.d2) is true;
k	d1	d2
10	10	10
20	20	20
select *
from x1
where 1 in (select 1
from x2
where x1.d1=x2.d1 and x1.d2=x2.d2) is false;
k	d1	d2
21	20	NULL
30	NULL	30
40	40	40
select *
from x1
where 1 in (select 1
from x2
where x1.d1=x2.d1 and x1.d2=x2.d2) is unknown;
k	d1	d2
select *
from x1
where exists (select *
from x2
where x1.d1=x2.d1 and x1.d2=x2.d2);
k	d1	d2
10	10	10
20	20	20
drop table x1;
drop table x2;
CREATE TABLE t1 (
a int(11) NOT NULL,
b int(11) NOT NULL,
c datetime default NULL,
PRIMARY KEY  (a),
KEY idx_bc (b,c)
);
INSERT INTO t1 VALUES 
(406989,67,'2006-02-23 17:08:46'), (150078,67,'2005-10-26 11:17:45'),
(406993,67,'2006-02-27 11:20:57'), (245655,67,'2005-12-08 15:59:08'),
(406994,67,'2006-02-27 11:26:46'), (256,67,NULL),
(398341,67,'2006-02-20 04:48:44'), (254,67,NULL),(1120,67,NULL),
(406988,67,'2006-02-23 17:07:22'), (255,67,NULL),
(398340,67,'2006-02-20 04:38:53'),(406631,67,'2006-02-23 10:49:42'),
(245653,67,'2005-12-08 15:59:07'),(406992,67,'2006-02-24 16:47:18'),
(245654,67,'2005-12-08 15:59:08'),(406995,67,'2006-02-28 11:55:00'),
(127261,67,'2005-10-13 12:17:58'),(406991,67,'2006-02-24 16:42:32'),
(245652,67,'2005-12-08 15:58:27'),(398545,67,'2006-02-20 04:53:13'),
(154504,67,'2005-10-28 11:53:01'),(9199,67,NULL),(1,67,'2006-02-23 15:01:35'),
(223456,67,NULL),(4101,67,NULL),(1133,67,NULL),
(406990,67,'2006-02-23 18:01:45'),(148815,67,'2005-10-25 15:34:17'),
(148812,67,'2005-10-25 15:30:01'),(245651,67,'2005-12-08 15:58:27'),
(154503,67,'2005-10-28 11:52:38');
create table t11 select * from t1 where b = 67 AND (c IS NULL OR c > NOW()) order by 3 asc;
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;
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;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	Using temporary; Using filesort
1	SIMPLE	t22	ALL	NULL	NULL	NULL	NULL	26	Using where
1	SIMPLE	t21	ALL	NULL	NULL	NULL	NULL	26	Using where
2	MATERIALIZED	t11	ALL	NULL	NULL	NULL	NULL	8	Using where
2	MATERIALIZED	t12	ALL	NULL	NULL	NULL	NULL	8	Using where
explain format=json select * from t1 where a in (select a from t11);
EXPLAIN
{
  "query_block": {
    "select_id": 1,
    "nested_loop": [
      {
        "table": {
          "table_name": "<subquery2>",
          "access_type": "ALL",
          "materialized_from_subquery": {
            "using_temporary_table": true,
            "query_block": {
              "table": {
                "table_name": "t11",
                "access_type": "ALL",
                "rows": 8,
                "filtered": 100
              }
            }
          }
        }
      },
      {
        "table": {
          "table_name": "t1",
          "access_type": "eq_ref",
          "possible_keys": [
            "PRIMARY"
          ],
          "key": "PRIMARY",
          "used_key_parts": [
            "a"
          ],
          "key_length": "4",
          "ref": [
            "<subquery2>.a"
          ],
          "rows": 1,
          "filtered": 100
        }
      }
    ]
  }
}
Warnings:
Note	1003	/* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t1`.`c` AS `c` from `test`.`t1` semi join (`test`.`t11`) where (`test`.`t1`.`a` = `<subquery2>`.`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;
a	b	c
256	67	NULL
drop table t1, t11, t12, t21, t22;
create table t1(a int);
insert into t1 values (0),(1);
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
1	PRIMARY	X	ALL	NULL	NULL	NULL	NULL	2	NULL
2	DEPENDENT SUBQUERY	Y	ALL	NULL	NULL	NULL	NULL	2	Using where
2	DEPENDENT SUBQUERY	<subquery3>	eq_ref	<auto_key>	<auto_key>	5	test.Y.a	1	NULL
3	MATERIALIZED	Z	ALL	NULL	NULL	NULL	NULL	2	NULL
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;
subq
NULL
0
drop table t1;
create table t0 (a int);
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
create table t1 as select * from t0;
insert into t1 select a+10 from t0;
insert into t0 values(2);
explain select * from t1 where 2 in (select a from t0);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	5	const	1	NULL
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	20	NULL
2	MATERIALIZED	t0	ALL	NULL	NULL	NULL	NULL	11	Using where
select * from t1 where 2 in (select a from t0);
a
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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	Using where
1	PRIMARY	<subquery3>	eq_ref	<auto_key>	<auto_key>	5	x.a	1	NULL
3	MATERIALIZED	t1	ALL	NULL	NULL	NULL	NULL	20	NULL
2	DERIVED	t0	ALL	NULL	NULL	NULL	NULL	11	NULL
explain format=json select * from (select a from t0) x where a in (select a from t1);
EXPLAIN
{
  "query_block": {
    "select_id": 3,
    "nested_loop": [
      {
        "table": {
          "table_name": "x",
          "access_type": "ALL",
          "rows": 11,
          "filtered": 100,
          "attached_condition": "(`x`.`a` is not null)",
          "materialized_from_subquery": {
            "using_temporary_table": true,
            "dependent": false,
            "cacheable": true,
            "query_block": {
              "select_id": 2,
              "table": {
                "table_name": "t0",
                "access_type": "ALL",
                "rows": 11,
                "filtered": 100
              }
            }
          }
        }
      },
      {
        "table": {
          "table_name": "<subquery3>",
          "access_type": "eq_ref",
          "key": "<auto_key>",
          "key_length": "5",
          "ref": [
            "x.a"
          ],
          "rows": 1,
          "materialized_from_subquery": {
            "using_temporary_table": true,
            "query_block": {
              "table": {
                "table_name": "t1",
                "access_type": "ALL",
                "rows": 20,
                "filtered": 100
              }
            }
          }
        }
      }
    ]
  }
}
Warnings:
Note	1003	/* select#1 */ select `x`.`a` AS `a` from (/* select#2 */ select `test`.`t0`.`a` AS `a` from `test`.`t0`) `x` semi join (`test`.`t1`) where (`<subquery3>`.`a` = `x`.`a`)
drop table t0, t1;
create table t0 (a int);
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
create table t1 (kp1 int, kp2 int, c int, filler char(100), key(kp1, kp2));
insert into t1 select A.a+10*(B.a+10*C.a), 0, 0, 'filler' from t0 A, t0 B, t0 C;
insert into t1 select * from t1 where kp1 < 20;
create table t3 (a int);
insert into t3 select A.a + 10*B.a from t0 A, t0 B;
explain select * from t3 where a in (select kp1 from t1 where kp1<20);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	100	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	5	test.t3.a	1	NULL
2	MATERIALIZED	t1	range	kp1	kp1	5	NULL	48	Using where; Using index
select * from t3 where a in (select kp1 from t1 where kp1<20);
a
0
10
1
11
2
12
3
13
4
14
5
15
6
16
7
17
8
18
9
19
explain select * from t3 where a in (select kp1 from t1 where kp1<20) and a<20;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	100	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	5	test.t3.a	1	NULL
2	MATERIALIZED	t1	range	kp1	kp1	5	NULL	48	Using where; Using index
select * from t3 where a in (select kp1 from t1 where kp1<20) and a<20;
a
0
10
1
11
2
12
3
13
4
14
5
15
6
16
7
17
8
18
9
19
create table t4 (pk int primary key);
insert into t4 select a from t3;
explain select * from t3 where a in 
(select t1.kp1 from t1,t4 where kp1<20 and t4.pk=t1.c);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	100	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	5	test.t3.a	1	NULL
2	MATERIALIZED	t1	range	kp1	kp1	5	NULL	48	Using where
2	MATERIALIZED	t4	eq_ref	PRIMARY	PRIMARY	4	test.t1.c	1	Using index
select * from t3 where a in 
(select t1.kp1 from t1,t4 where kp1<20 and t4.pk=t1.c);
a
0
10
1
11
2
12
3
13
4
14
5
15
6
16
7
17
8
18
9
19
drop table t1, t3, t4;
create table t1 (a int);
insert into t1 values (0),(0),(0),(1),(1),(1),(2),(2),(2),(3),(3),(3);
set @save_max_heap_table_size=@@max_heap_table_size;
set @@max_heap_table_size= 16384;
# Attempt to make one test that overflows the heap table when a
# non-duplicate row is inserted and one test that overflows the
# heap table when a duplicate record is inserted. Debugging showed
# that these situations occurred with max_heap_table_size=16384
# and optimizer_join_cache_level equals 1 and 0, respectively.
# Finally execute a test that does not overflow the heap table.
explain
select count(*) from t0 A, t0 B, t0 C
where C.a in (select a from t1 D);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	A	ALL	NULL	NULL	NULL	NULL	10	NULL
1	SIMPLE	B	ALL	NULL	NULL	NULL	NULL	10	NULL
1	SIMPLE	C	ALL	NULL	NULL	NULL	NULL	10	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	5	test.C.a	1	NULL
2	MATERIALIZED	D	ALL	NULL	NULL	NULL	NULL	12	NULL
flush status;
select count(*) from t0 A, t0 B, t0 C
where C.a in (select a from t1 D);
count(*)
400
show status like 'Created_tmp_disk_tables';
Variable_name	Value
Created_tmp_disk_tables	0
set @@max_heap_table_size= @save_max_heap_table_size;
flush status;
select count(*) from t0 A, t0 B, t0 C
where C.a in (select a from t1 D);
count(*)
400
show status like 'Created_tmp_disk_tables';
Variable_name	Value
Created_tmp_disk_tables	0
drop table t0, t1;
create table t0 (a int);
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
create table t2(a int);
insert into t2 values (1),(2);
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	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	Using where
1	SIMPLE	t3	ref	a	a	5	<subquery2>.a	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	2	NULL
select * from t3 where a in (select a from t2);
a	filler
1	filler
2	filler
drop table t0, t2, t3;
create table t1 (a date);
insert into t1 values ('2008-01-01'),('2008-01-01'),('2008-02-01'),('2008-02-01');
create table t2 (a int);
insert into t2 values (1),(2);
create table t3 (a char(10));
insert into t3 select * from t1;
insert into t3 values (1),(2);
explain select * from t2 where a in (select a from t1);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	2	NULL
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	4	Using where; Start temporary; End temporary
explain select * from t2 where a in (select a from t2);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	5	test.t2.a	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	2	NULL
explain select * from t2 where a in (select a from t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	2	NULL
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	6	Using where; Start temporary; End temporary
explain select * from t1 where a in (select a from t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	4	NULL
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	6	Using where; Start temporary; End temporary
drop table t1, t2, t3;
create table t1 (a decimal);
insert into t1 values (1),(2);
explain select * from t1 where a in (select a from t1);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	6	test.t1.a	1	NULL
2	MATERIALIZED	t1	ALL	NULL	NULL	NULL	NULL	2	NULL
drop table t1;
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;
create table t3 (a int, b int, filler char(100), key(a));
insert into t3 select A.a + 10*B.a, A.a + 10*B.a, 'filler' from t1 A, t1 B, t1 C;
explain select * from t1, t3 where t3.a in (select a from t2) and (t3.a < 10 or t3.a >30) and t1.a =3;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	10	Using where
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	Using where
1	SIMPLE	t3	ref	a	a	5	<subquery2>.a	10	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	10	NULL
explain format=json select * from t1, t3 where t3.a in (select a from t2) and (t3.a < 10 or t3.a >30) and t1.a =3;
EXPLAIN
{
  "query_block": {
    "select_id": 1,
    "nested_loop": [
      {
        "table": {
          "table_name": "t1",
          "access_type": "ALL",
          "rows": 10,
          "filtered": 100,
          "attached_condition": "(`test`.`t1`.`a` = 3)"
        }
      },
      {
        "table": {
          "table_name": "<subquery2>",
          "access_type": "ALL",
          "attached_condition": "(((`<subquery2>`.`a` < 10) or (`<subquery2>`.`a` > 30)) and (`<subquery2>`.`a` is not null))",
          "materialized_from_subquery": {
            "using_temporary_table": true,
            "query_block": {
              "table": {
                "table_name": "t2",
                "access_type": "ALL",
                "rows": 10,
                "filtered": 100
              }
            }
          }
        }
      },
      {
        "table": {
          "table_name": "t3",
          "access_type": "ref",
          "possible_keys": [
            "a"
          ],
          "key": "a",
          "used_key_parts": [
            "a"
          ],
          "key_length": "5",
          "ref": [
            "<subquery2>.a"
          ],
          "rows": 10,
          "filtered": 100
        }
      }
    ]
  }
}
Warnings:
Note	1003	/* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t3`.`filler` AS `filler` from `test`.`t1` semi join (`test`.`t2`) join `test`.`t3` where ((`test`.`t3`.`a` = `<subquery2>`.`a`) and (`test`.`t1`.`a` = 3) and ((`<subquery2>`.`a` < 10) or (`<subquery2>`.`a` > 30)))
explain select straight_join * from t1 A, t1 B where A.a in (select a from t2);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	PRIMARY	A	ALL	NULL	NULL	NULL	NULL	10	Using where
1	PRIMARY	B	ALL	NULL	NULL	NULL	NULL	10	NULL
2	SUBQUERY	t2	ALL	NULL	NULL	NULL	NULL	10	NULL
explain select * from t2 where a in (select straight_join A.a from t1 A, t1 B);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	10	Using where
2	SUBQUERY	A	ALL	NULL	NULL	NULL	NULL	10	NULL
2	SUBQUERY	B	ALL	NULL	NULL	NULL	NULL	10	NULL
explain select * from t2 where a in (select straight_join A.a from t1 A, t1 B);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	10	Using where
2	SUBQUERY	A	ALL	NULL	NULL	NULL	NULL	10	NULL
2	SUBQUERY	B	ALL	NULL	NULL	NULL	NULL	10	NULL
explain select straight_join * from t2 X, t2 Y 
where X.a in (select straight_join A.a from t1 A, t1 B);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	PRIMARY	X	ALL	NULL	NULL	NULL	NULL	10	Using where
1	PRIMARY	Y	ALL	NULL	NULL	NULL	NULL	10	NULL
2	SUBQUERY	A	ALL	NULL	NULL	NULL	NULL	10	NULL
2	SUBQUERY	B	ALL	NULL	NULL	NULL	NULL	10	NULL
create table t0 (a int, b int);
insert into t0 values(1,1);
explain select * from t0, t3 where t3.a in (select a from t2) and (t3.a < 10 or t3.a >30);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t0	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	Using where
1	SIMPLE	t3	ref	a	a	5	<subquery2>.a	10	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	10	NULL
create table t4 as select a as x, a as y from t1;
explain select * from t0, t3 where (t3.a, t3.b) in (select x,y from t4) and (t3.a < 10 or t3.a >30);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t0	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	Using where
1	SIMPLE	t3	ref	a	a	5	<subquery2>.x	10	Using where
2	MATERIALIZED	t4	ALL	NULL	NULL	NULL	NULL	10	NULL
drop table t0,t1,t2,t3,t4;
create table t0 (a int);
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
create table t1 (a int, b int, filler char(100), key(a,b));
insert into t1 select A.a, B.a, 'filler' from t0 A, t0 B;
create table t2 as select * from t1;
explain select * from t2 where a in (select b from t1 where a=3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	100	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	5	test.t2.a	1	NULL
2	MATERIALIZED	t1	ref	a	a	5	const	8	Using index
explain select * from t2 where (b,a) in (select a,b from t1 where a=3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	100	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	10	test.t2.b,test.t2.a	1	Using where
2	MATERIALIZED	t1	ref	a	a	5	const	8	Using index
drop table t1,t2;
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;
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	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	10	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	10	test.t1.a,test.t1.b	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	100	NULL
drop table t0, t1, t2;
create table t0 (a decimal(4,2));
insert into t0 values (10.24), (22.11);
create table t1 as select * from t0;
insert into t1 select * from t0;
explain select * from t0 where a in (select a from t1);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t0	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	3	test.t0.a	1	NULL
2	MATERIALIZED	t1	ALL	NULL	NULL	NULL	NULL	4	NULL
select * from t0 where a in (select a from t1);
a
10.24
22.11
drop table t0, t1;
create table t0(a date);
insert into t0 values ('2008-01-01'),('2008-02-02');
create table t1 as select * from t0;
insert into t1 select * from t0;
explain select * from t0 where a in (select a from t1);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t0	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	4	test.t0.a	1	NULL
2	MATERIALIZED	t1	ALL	NULL	NULL	NULL	NULL	4	NULL
select * from t0 where a in (select a from t1);
a
2008-01-01
2008-02-02
drop table t0, t1;
create table t0(a int);
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
create table t1 as select a as a, a as b, a as c from t0 where a < 3;
create table t2 as select a as a, a as b from t0 where a < 3;
insert into t2 select * from t2;
explain select * from t1 where (a,b,c) in (select X.a, Y.a, Z.a from t2 X, t2 Y, t2 Z where X.b=33);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	15	test.t1.a,test.t1.b,test.t1.c	1	NULL
2	MATERIALIZED	X	ALL	NULL	NULL	NULL	NULL	6	Using where
2	MATERIALIZED	Y	ALL	NULL	NULL	NULL	NULL	6	NULL
2	MATERIALIZED	Z	ALL	NULL	NULL	NULL	NULL	6	NULL
drop table t0,t1,t2;
set @save_join_buffer_size = @@join_buffer_size;
set join_buffer_size= 8192;
create table t0 (a int);
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
create table t1 (a int, filler1 binary(200), filler2 binary(200));
insert into t1 select a, 'filler123456', 'filler123456' from t0;
insert into t1 select a+10, 'filler123456', 'filler123456' from t0;
create table t2 as select * from t1;
insert into t1 select a+20, 'filler123456', 'filler123456' from t0;
insert into t1 values (2, 'duplicate ok', 'duplicate ok');
insert into t1 values (18, 'duplicate ok', 'duplicate ok');
insert into t2 values (3, 'duplicate ok', 'duplicate ok');
insert into t2 values (19, 'duplicate ok', 'duplicate ok');
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	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	NULL
1	SIMPLE	ot	ALL	NULL	NULL	NULL	NULL	32	Using where
2	MATERIALIZED	it	ALL	NULL	NULL	NULL	NULL	22	NULL
select 
a, mid(filler1, 1,10), length(filler1)=length(filler2) as Z 
from t1 ot where a in (select a from t2 it);
a	mid(filler1, 1,10)	Z
0	filler1234	1
1	filler1234	1
10	filler1234	1
11	filler1234	1
12	filler1234	1
13	filler1234	1
14	filler1234	1
15	filler1234	1
16	filler1234	1
17	filler1234	1
18	duplicate 	1
18	filler1234	1
19	filler1234	1
2	duplicate 	1
2	filler1234	1
3	filler1234	1
4	filler1234	1
5	filler1234	1
6	filler1234	1
7	filler1234	1
8	filler1234	1
9	filler1234	1
explain select 
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	SIMPLE	ot	ALL	NULL	NULL	NULL	NULL	22	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	5	test.ot.a	1	NULL
2	MATERIALIZED	it	ALL	NULL	NULL	NULL	NULL	32	NULL
select 
a, mid(filler1, 1,10), length(filler1)=length(filler2) 
from t2 ot where a in (select a from t1 it);
a	mid(filler1, 1,10)	length(filler1)=length(filler2)
0	filler1234	1
1	filler1234	1
10	filler1234	1
11	filler1234	1
12	filler1234	1
13	filler1234	1
14	filler1234	1
15	filler1234	1
16	filler1234	1
17	filler1234	1
18	filler1234	1
19	duplicate 	1
19	filler1234	1
2	filler1234	1
3	duplicate 	1
3	filler1234	1
4	filler1234	1
5	filler1234	1
6	filler1234	1
7	filler1234	1
8	filler1234	1
9	filler1234	1
insert into t1 select a+20, 'filler123456', 'filler123456' from t0;
insert into t1 select a+20, 'filler123456', 'filler123456' from t0;
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	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	NULL
1	SIMPLE	ot	ALL	NULL	NULL	NULL	NULL	52	Using where
2	MATERIALIZED	it	ALL	NULL	NULL	NULL	NULL	22	NULL
select 
a, mid(filler1, 1,10), length(filler1)=length(filler2) as Z 
from t1 ot where a in (select a from t2 it);
a	mid(filler1, 1,10)	Z
0	filler1234	1
1	filler1234	1
10	filler1234	1
11	filler1234	1
12	filler1234	1
13	filler1234	1
14	filler1234	1
15	filler1234	1
16	filler1234	1
17	filler1234	1
18	duplicate 	1
18	filler1234	1
19	filler1234	1
2	duplicate 	1
2	filler1234	1
3	filler1234	1
4	filler1234	1
5	filler1234	1
6	filler1234	1
7	filler1234	1
8	filler1234	1
9	filler1234	1
explain select 
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	SIMPLE	ot	ALL	NULL	NULL	NULL	NULL	22	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	5	test.ot.a	1	NULL
2	MATERIALIZED	it	ALL	NULL	NULL	NULL	NULL	52	NULL
select 
a, mid(filler1, 1,10), length(filler1)=length(filler2) 
from t2 ot where a in (select a from t1 it);
a	mid(filler1, 1,10)	length(filler1)=length(filler2)
0	filler1234	1
1	filler1234	1
10	filler1234	1
11	filler1234	1
12	filler1234	1
13	filler1234	1
14	filler1234	1
15	filler1234	1
16	filler1234	1
17	filler1234	1
18	filler1234	1
19	duplicate 	1
19	filler1234	1
2	filler1234	1
3	duplicate 	1
3	filler1234	1
4	filler1234	1
5	filler1234	1
6	filler1234	1
7	filler1234	1
8	filler1234	1
9	filler1234	1
set @@join_buffer_size = @save_join_buffer_size;
drop table t1, t2;
create table t1 (a int, b int, key(a));
create table t2 (a int, b int, key(a));
create table t3 (a int, b int, key(a));
insert into t1 select a,a from t0;
insert into t2 select a,a from t0;
insert into t3 select a,a from t0;
t2 and t3 must be use 'ref', not 'ALL':
explain select * 
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	SIMPLE	t0	ALL	NULL	NULL	NULL	NULL	10	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	9	test.t0.a	1	Using where
2	MATERIALIZED	t1	index	a	a	5	NULL	10	Using index
2	MATERIALIZED	t2	ref	a	a	5	test.t1.a	1	Using index
2	MATERIALIZED	t3	ref	a	a	5	test.t1.a	1	Using index
drop table t0, t1,t2,t3;

Test that neither MaterializeLookup strategy for semijoin,
nor subquery materialization is used when BLOBs are involved 
(except when arguments of some functions).

set @prefix_len = 6;
set @blob_len = 16;
set @suffix_len = @blob_len - @prefix_len;
create table t1_16 (a1 blob(16), a2 blob(16));
create table t2_16 (b1 blob(16), b2 blob(16));
create table t3_16 (c1 blob(16), c2 blob(16));
insert into t1_16 values
(concat('1 - 00', repeat('x', @suffix_len)), concat('2 - 00', repeat('x', @suffix_len)));
insert into t1_16 values
(concat('1 - 01', repeat('x', @suffix_len)), concat('2 - 01', repeat('x', @suffix_len)));
insert into t1_16 values
(concat('1 - 02', repeat('x', @suffix_len)), concat('2 - 02', repeat('x', @suffix_len)));
insert into t2_16 values
(concat('1 - 01', repeat('x', @suffix_len)), concat('2 - 01', repeat('x', @suffix_len)));
insert into t2_16 values
(concat('1 - 02', repeat('x', @suffix_len)), concat('2 - 02', repeat('x', @suffix_len)));
insert into t2_16 values
(concat('1 - 03', repeat('x', @suffix_len)), concat('2 - 03', repeat('x', @suffix_len)));
insert into t3_16 values
(concat('1 - 01', repeat('x', @suffix_len)), concat('2 - 01', repeat('x', @suffix_len)));
insert into t3_16 values
(concat('1 - 02', repeat('x', @suffix_len)), concat('2 - 02', repeat('x', @suffix_len)));
insert into t3_16 values
(concat('1 - 03', repeat('x', @suffix_len)), concat('2 - 03', repeat('x', @suffix_len)));
insert into t3_16 values
(concat('1 - 04', repeat('x', @suffix_len)), concat('2 - 04', repeat('x', @suffix_len)));
explain extended select left(a1,7), left(a2,7)
from t1_16
where a1 in (select b1 from t2_16 where b1 > '0');
id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	SIMPLE	t1_16	ALL	NULL	NULL	NULL	NULL	3	100.00	NULL
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	0.00	Using where
2	MATERIALIZED	t2_16	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
Warnings:
Note	1003	/* select#1 */ select left(`test`.`t1_16`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_16`.`a2`,7) AS `left(a2,7)` from `test`.`t1_16` semi join (`test`.`t2_16`) where ((`<subquery2>`.`b1` = `test`.`t1_16`.`a1`) and (`test`.`t2_16`.`b1` > '0'))
select left(a1,7), left(a2,7)
from t1_16
where a1 in (select b1 from t2_16 where b1 > '0');
left(a1,7)	left(a2,7)
1 - 01x	2 - 01x
1 - 02x	2 - 02x
explain extended select left(a1,7), left(a2,7)
from t1_16
where (a1,a2) in (select b1, b2 from t2_16 where b1 > '0');
id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	SIMPLE	t1_16	ALL	NULL	NULL	NULL	NULL	3	100.00	NULL
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	0.00	Using where
2	MATERIALIZED	t2_16	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
Warnings:
Note	1003	/* select#1 */ select left(`test`.`t1_16`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_16`.`a2`,7) AS `left(a2,7)` from `test`.`t1_16` semi join (`test`.`t2_16`) where ((`<subquery2>`.`b2` = `test`.`t1_16`.`a2`) and (`<subquery2>`.`b1` = `test`.`t1_16`.`a1`) and (`test`.`t2_16`.`b1` > '0'))
select left(a1,7), left(a2,7)
from t1_16
where (a1,a2) in (select b1, b2 from t2_16 where b1 > '0');
left(a1,7)	left(a2,7)
1 - 01x	2 - 01x
1 - 02x	2 - 02x
explain extended select left(a1,7), left(a2,7)
from t1_16
where a1 in (select substring(b1,1,16) from t2_16 where b1 > '0');
id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	SIMPLE	t1_16	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	19	test.t1_16.a1	1	100.00	Using where
2	MATERIALIZED	t2_16	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
Warnings:
Note	1003	/* select#1 */ select left(`test`.`t1_16`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_16`.`a2`,7) AS `left(a2,7)` from `test`.`t1_16` semi join (`test`.`t2_16`) where ((`test`.`t2_16`.`b1` > '0') and (`test`.`t1_16`.`a1` = `<subquery2>`.`substring(b1,1,16)`))
select left(a1,7), left(a2,7)
from t1_16
where a1 in (select substring(b1,1,16) from t2_16 where b1 > '0');
left(a1,7)	left(a2,7)
1 - 01x	2 - 01x
1 - 02x	2 - 02x
explain extended select left(a1,7), left(a2,7)
from t1_16
where a1 in (select group_concat(b1) from t2_16 group by b2);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	PRIMARY	t1_16	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
2	DEPENDENT SUBQUERY	t2_16	ALL	NULL	NULL	NULL	NULL	3	100.00	Using filesort
Warnings:
Note	1003	/* select#1 */ select left(`test`.`t1_16`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_16`.`a2`,7) AS `left(a2,7)` from `test`.`t1_16` where <in_optimizer>(`test`.`t1_16`.`a1`,<exists>(/* select#2 */ select 1 from `test`.`t2_16` group by `test`.`t2_16`.`b2` having (<cache>(`test`.`t1_16`.`a1`) = <ref_null_helper>(group_concat(`test`.`t2_16`.`b1` separator ',')))))
select left(a1,7), left(a2,7)
from t1_16
where a1 in (select group_concat(b1) from t2_16 group by b2);
left(a1,7)	left(a2,7)
1 - 01x	2 - 01x
1 - 02x	2 - 02x
set @@group_concat_max_len = 256;
explain extended select left(a1,7), left(a2,7)
from t1_16
where a1 in (select group_concat(b1) from t2_16 group by b2);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	PRIMARY	t1_16	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
2	SUBQUERY	t2_16	ALL	NULL	NULL	NULL	NULL	3	100.00	Using filesort
Warnings:
Note	1003	/* select#1 */ select left(`test`.`t1_16`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_16`.`a2`,7) AS `left(a2,7)` from `test`.`t1_16` where <in_optimizer>(`test`.`t1_16`.`a1`,`test`.`t1_16`.`a1` in ( <materialize> (/* select#2 */ select group_concat(`test`.`t2_16`.`b1` separator ',') from `test`.`t2_16` group by `test`.`t2_16`.`b2` having 1 ), <primary_index_lookup>(`test`.`t1_16`.`a1` in <temporary table> on <auto_key> where ((`test`.`t1_16`.`a1` = `materialized-subquery`.`group_concat(b1)`)))))
select left(a1,7), left(a2,7)
from t1_16
where a1 in (select group_concat(b1) from t2_16 group by b2);
left(a1,7)	left(a2,7)
1 - 01x	2 - 01x
1 - 02x	2 - 02x
create table t1 (a1 char(8), a2 char(8));
create table t2 (b1 char(8), b2 char(8));
create table t3 (c1 char(8), c2 char(8));
insert into t1 values ('1 - 00', '2 - 00');
insert into t1 values ('1 - 01', '2 - 01');
insert into t1 values ('1 - 02', '2 - 02');
insert into t2 values ('1 - 01', '2 - 01');
insert into t2 values ('1 - 01', '2 - 01');
insert into t2 values ('1 - 02', '2 - 02');
insert into t2 values ('1 - 02', '2 - 02');
insert into t2 values ('1 - 03', '2 - 03');
insert into t3 values ('1 - 01', '2 - 01');
insert into t3 values ('1 - 02', '2 - 02');
insert into t3 values ('1 - 03', '2 - 03');
insert into t3 values ('1 - 04', '2 - 04');
explain extended
select * from t1
where concat(a1,'x') IN
(select left(a1,8) from t1_16
where (a1, a2) IN
(select t2_16.b1, t2_16.b2 from t2_16, t2
where t2.b2 = substring(t2_16.b2,1,6) and
t2.b1 IN (select c1 from t3 where c2 > '0')));
id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	100.00	NULL
1	SIMPLE	t1_16	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Start temporary
1	SIMPLE	t2_16	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	4	100.00	Using where
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	5	100.00	Using where; End temporary
Warnings:
Note	1003	/* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2` from `test`.`t1` semi join (`test`.`t3` join `test`.`t2_16` join `test`.`t2` join `test`.`t1_16`) where ((`test`.`t2_16`.`b2` = `test`.`t1_16`.`a2`) and (`test`.`t2_16`.`b1` = `test`.`t1_16`.`a1`) and (`test`.`t2`.`b1` = `test`.`t3`.`c1`) and (`test`.`t2`.`b2` = substr(`test`.`t2_16`.`b2`,1,6)) and (`test`.`t3`.`c2` > '0') and (concat(`test`.`t1`.`a1`,'x') = left(`test`.`t1_16`.`a1`,8)))
drop table t1_16, t2_16, t3_16, t1, t2, t3;
set @blob_len = 512;
set @suffix_len = @blob_len - @prefix_len;
create table t1_512 (a1 blob(512), a2 blob(512));
create table t2_512 (b1 blob(512), b2 blob(512));
create table t3_512 (c1 blob(512), c2 blob(512));
insert into t1_512 values
(concat('1 - 00', repeat('x', @suffix_len)), concat('2 - 00', repeat('x', @suffix_len)));
insert into t1_512 values
(concat('1 - 01', repeat('x', @suffix_len)), concat('2 - 01', repeat('x', @suffix_len)));
insert into t1_512 values
(concat('1 - 02', repeat('x', @suffix_len)), concat('2 - 02', repeat('x', @suffix_len)));
insert into t2_512 values
(concat('1 - 01', repeat('x', @suffix_len)), concat('2 - 01', repeat('x', @suffix_len)));
insert into t2_512 values
(concat('1 - 02', repeat('x', @suffix_len)), concat('2 - 02', repeat('x', @suffix_len)));
insert into t2_512 values
(concat('1 - 03', repeat('x', @suffix_len)), concat('2 - 03', repeat('x', @suffix_len)));
insert into t3_512 values
(concat('1 - 01', repeat('x', @suffix_len)), concat('2 - 01', repeat('x', @suffix_len)));
insert into t3_512 values
(concat('1 - 02', repeat('x', @suffix_len)), concat('2 - 02', repeat('x', @suffix_len)));
insert into t3_512 values
(concat('1 - 03', repeat('x', @suffix_len)), concat('2 - 03', repeat('x', @suffix_len)));
insert into t3_512 values
(concat('1 - 04', repeat('x', @suffix_len)), concat('2 - 04', repeat('x', @suffix_len)));
explain extended select left(a1,7), left(a2,7)
from t1_512
where a1 in (select b1 from t2_512 where b1 > '0');
id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	SIMPLE	t1_512	ALL	NULL	NULL	NULL	NULL	3	100.00	NULL
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	0.00	Using where
2	MATERIALIZED	t2_512	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
Warnings:
Note	1003	/* select#1 */ select left(`test`.`t1_512`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_512`.`a2`,7) AS `left(a2,7)` from `test`.`t1_512` semi join (`test`.`t2_512`) where ((`<subquery2>`.`b1` = `test`.`t1_512`.`a1`) and (`test`.`t2_512`.`b1` > '0'))
select left(a1,7), left(a2,7)
from t1_512
where a1 in (select b1 from t2_512 where b1 > '0');
left(a1,7)	left(a2,7)
1 - 01x	2 - 01x
1 - 02x	2 - 02x
explain extended select left(a1,7), left(a2,7)
from t1_512
where (a1,a2) in (select b1, b2 from t2_512 where b1 > '0');
id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	SIMPLE	t1_512	ALL	NULL	NULL	NULL	NULL	3	100.00	NULL
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	0.00	Using where
2	MATERIALIZED	t2_512	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
Warnings:
Note	1003	/* select#1 */ select left(`test`.`t1_512`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_512`.`a2`,7) AS `left(a2,7)` from `test`.`t1_512` semi join (`test`.`t2_512`) where ((`<subquery2>`.`b2` = `test`.`t1_512`.`a2`) and (`<subquery2>`.`b1` = `test`.`t1_512`.`a1`) and (`test`.`t2_512`.`b1` > '0'))
select left(a1,7), left(a2,7)
from t1_512
where (a1,a2) in (select b1, b2 from t2_512 where b1 > '0');
left(a1,7)	left(a2,7)
1 - 01x	2 - 01x
1 - 02x	2 - 02x
explain extended select left(a1,7), left(a2,7)
from t1_512
where a1 in (select substring(b1,1,512) from t2_512 where b1 > '0');
id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	SIMPLE	t1_512	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	515	test.t1_512.a1	1	100.00	Using where
2	MATERIALIZED	t2_512	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
Warnings:
Note	1003	/* select#1 */ select left(`test`.`t1_512`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_512`.`a2`,7) AS `left(a2,7)` from `test`.`t1_512` semi join (`test`.`t2_512`) where ((`test`.`t2_512`.`b1` > '0') and (`test`.`t1_512`.`a1` = `<subquery2>`.`substring(b1,1,512)`))
select left(a1,7), left(a2,7)
from t1_512
where a1 in (select substring(b1,1,512) from t2_512 where b1 > '0');
left(a1,7)	left(a2,7)
1 - 01x	2 - 01x
1 - 02x	2 - 02x
explain extended select left(a1,7), left(a2,7)
from t1_512
where a1 in (select group_concat(b1) from t2_512 group by b2);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	PRIMARY	t1_512	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
2	SUBQUERY	t2_512	ALL	NULL	NULL	NULL	NULL	3	100.00	Using filesort
Warnings:
Note	1003	/* select#1 */ select left(`test`.`t1_512`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_512`.`a2`,7) AS `left(a2,7)` from `test`.`t1_512` where <in_optimizer>(`test`.`t1_512`.`a1`,`test`.`t1_512`.`a1` in ( <materialize> (/* select#2 */ select group_concat(`test`.`t2_512`.`b1` separator ',') from `test`.`t2_512` group by `test`.`t2_512`.`b2` having 1 ), <primary_index_lookup>(`test`.`t1_512`.`a1` in <temporary table> on <auto_key> where ((`test`.`t1_512`.`a1` = `materialized-subquery`.`group_concat(b1)`)))))
select left(a1,7), left(a2,7)
from t1_512
where a1 in (select group_concat(b1) from t2_512 group by b2);
left(a1,7)	left(a2,7)
Warnings:
Warning	1260	Row 1 was cut by GROUP_CONCAT()
Warning	1260	Row 2 was cut by GROUP_CONCAT()
Warning	1260	Row 3 was cut by GROUP_CONCAT()
set @@group_concat_max_len = 256;
explain extended select left(a1,7), left(a2,7)
from t1_512
where a1 in (select group_concat(b1) from t2_512 group by b2);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	PRIMARY	t1_512	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
2	SUBQUERY	t2_512	ALL	NULL	NULL	NULL	NULL	3	100.00	Using filesort
Warnings:
Note	1003	/* select#1 */ select left(`test`.`t1_512`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_512`.`a2`,7) AS `left(a2,7)` from `test`.`t1_512` where <in_optimizer>(`test`.`t1_512`.`a1`,`test`.`t1_512`.`a1` in ( <materialize> (/* select#2 */ select group_concat(`test`.`t2_512`.`b1` separator ',') from `test`.`t2_512` group by `test`.`t2_512`.`b2` having 1 ), <primary_index_lookup>(`test`.`t1_512`.`a1` in <temporary table> on <auto_key> where ((`test`.`t1_512`.`a1` = `materialized-subquery`.`group_concat(b1)`)))))
select left(a1,7), left(a2,7)
from t1_512
where a1 in (select group_concat(b1) from t2_512 group by b2);
left(a1,7)	left(a2,7)
Warnings:
Warning	1260	Row 1 was cut by GROUP_CONCAT()
Warning	1260	Row 2 was cut by GROUP_CONCAT()
Warning	1260	Row 3 was cut by GROUP_CONCAT()
drop table t1_512, t2_512, t3_512;
set @blob_len = 513;
set @suffix_len = @blob_len - @prefix_len;
create table t1_513 (a1 blob(513), a2 blob(513));
create table t2_513 (b1 blob(513), b2 blob(513));
create table t3_513 (c1 blob(513), c2 blob(513));
insert into t1_513 values
(concat('1 - 00', repeat('x', @suffix_len)), concat('2 - 00', repeat('x', @suffix_len)));
insert into t1_513 values
(concat('1 - 01', repeat('x', @suffix_len)), concat('2 - 01', repeat('x', @suffix_len)));
insert into t1_513 values
(concat('1 - 02', repeat('x', @suffix_len)), concat('2 - 02', repeat('x', @suffix_len)));
insert into t2_513 values
(concat('1 - 01', repeat('x', @suffix_len)), concat('2 - 01', repeat('x', @suffix_len)));
insert into t2_513 values
(concat('1 - 02', repeat('x', @suffix_len)), concat('2 - 02', repeat('x', @suffix_len)));
insert into t2_513 values
(concat('1 - 03', repeat('x', @suffix_len)), concat('2 - 03', repeat('x', @suffix_len)));
insert into t3_513 values
(concat('1 - 01', repeat('x', @suffix_len)), concat('2 - 01', repeat('x', @suffix_len)));
insert into t3_513 values
(concat('1 - 02', repeat('x', @suffix_len)), concat('2 - 02', repeat('x', @suffix_len)));
insert into t3_513 values
(concat('1 - 03', repeat('x', @suffix_len)), concat('2 - 03', repeat('x', @suffix_len)));
insert into t3_513 values
(concat('1 - 04', repeat('x', @suffix_len)), concat('2 - 04', repeat('x', @suffix_len)));
explain extended select left(a1,7), left(a2,7)
from t1_513
where a1 in (select b1 from t2_513 where b1 > '0');
id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	SIMPLE	t1_513	ALL	NULL	NULL	NULL	NULL	3	100.00	NULL
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	0.00	Using where
2	MATERIALIZED	t2_513	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
Warnings:
Note	1003	/* select#1 */ select left(`test`.`t1_513`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_513`.`a2`,7) AS `left(a2,7)` from `test`.`t1_513` semi join (`test`.`t2_513`) where ((`<subquery2>`.`b1` = `test`.`t1_513`.`a1`) and (`test`.`t2_513`.`b1` > '0'))
select left(a1,7), left(a2,7)
from t1_513
where a1 in (select b1 from t2_513 where b1 > '0');
left(a1,7)	left(a2,7)
1 - 01x	2 - 01x
1 - 02x	2 - 02x
explain extended select left(a1,7), left(a2,7)
from t1_513
where (a1,a2) in (select b1, b2 from t2_513 where b1 > '0');
id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	SIMPLE	t1_513	ALL	NULL	NULL	NULL	NULL	3	100.00	NULL
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	0.00	Using where
2	MATERIALIZED	t2_513	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
Warnings:
Note	1003	/* select#1 */ select left(`test`.`t1_513`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_513`.`a2`,7) AS `left(a2,7)` from `test`.`t1_513` semi join (`test`.`t2_513`) where ((`<subquery2>`.`b2` = `test`.`t1_513`.`a2`) and (`<subquery2>`.`b1` = `test`.`t1_513`.`a1`) and (`test`.`t2_513`.`b1` > '0'))
select left(a1,7), left(a2,7)
from t1_513
where (a1,a2) in (select b1, b2 from t2_513 where b1 > '0');
left(a1,7)	left(a2,7)
1 - 01x	2 - 01x
1 - 02x	2 - 02x
explain extended select left(a1,7), left(a2,7)
from t1_513
where a1 in (select substring(b1,1,513) from t2_513 where b1 > '0');
id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	SIMPLE	t1_513	ALL	NULL	NULL	NULL	NULL	3	100.00	NULL
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	0.00	Using where
2	MATERIALIZED	t2_513	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
Warnings:
Note	1003	/* select#1 */ select left(`test`.`t1_513`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_513`.`a2`,7) AS `left(a2,7)` from `test`.`t1_513` semi join (`test`.`t2_513`) where ((`test`.`t2_513`.`b1` > '0') and (`test`.`t1_513`.`a1` = `<subquery2>`.`substring(b1,1,513)`))
select left(a1,7), left(a2,7)
from t1_513
where a1 in (select substring(b1,1,513) from t2_513 where b1 > '0');
left(a1,7)	left(a2,7)
1 - 01x	2 - 01x
1 - 02x	2 - 02x
explain extended select left(a1,7), left(a2,7)
from t1_513
where a1 in (select group_concat(b1) from t2_513 group by b2);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	PRIMARY	t1_513	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
2	SUBQUERY	t2_513	ALL	NULL	NULL	NULL	NULL	3	100.00	Using filesort
Warnings:
Note	1003	/* select#1 */ select left(`test`.`t1_513`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_513`.`a2`,7) AS `left(a2,7)` from `test`.`t1_513` where <in_optimizer>(`test`.`t1_513`.`a1`,`test`.`t1_513`.`a1` in ( <materialize> (/* select#2 */ select group_concat(`test`.`t2_513`.`b1` separator ',') from `test`.`t2_513` group by `test`.`t2_513`.`b2` having 1 ), <primary_index_lookup>(`test`.`t1_513`.`a1` in <temporary table> on <auto_key> where ((`test`.`t1_513`.`a1` = `materialized-subquery`.`group_concat(b1)`)))))
select left(a1,7), left(a2,7)
from t1_513
where a1 in (select group_concat(b1) from t2_513 group by b2);
left(a1,7)	left(a2,7)
Warnings:
Warning	1260	Row 1 was cut by GROUP_CONCAT()
Warning	1260	Row 2 was cut by GROUP_CONCAT()
Warning	1260	Row 3 was cut by GROUP_CONCAT()
drop table t1_513, t2_513, t3_513;
set @blob_len = 1024;
set @suffix_len = @blob_len - @prefix_len;
create table t1_1024 (a1 blob(1024), a2 blob(1024));
create table t2_1024 (b1 blob(1024), b2 blob(1024));
create table t3_1024 (c1 blob(1024), c2 blob(1024));
insert into t1_1024 values
(concat('1 - 00', repeat('x', @suffix_len)), concat('2 - 00', repeat('x', @suffix_len)));
insert into t1_1024 values
(concat('1 - 01', repeat('x', @suffix_len)), concat('2 - 01', repeat('x', @suffix_len)));
insert into t1_1024 values
(concat('1 - 02', repeat('x', @suffix_len)), concat('2 - 02', repeat('x', @suffix_len)));
insert into t2_1024 values
(concat('1 - 01', repeat('x', @suffix_len)), concat('2 - 01', repeat('x', @suffix_len)));
insert into t2_1024 values
(concat('1 - 02', repeat('x', @suffix_len)), concat('2 - 02', repeat('x', @suffix_len)));
insert into t2_1024 values
(concat('1 - 03', repeat('x', @suffix_len)), concat('2 - 03', repeat('x', @suffix_len)));
insert into t3_1024 values
(concat('1 - 01', repeat('x', @suffix_len)), concat('2 - 01', repeat('x', @suffix_len)));
insert into t3_1024 values
(concat('1 - 02', repeat('x', @suffix_len)), concat('2 - 02', repeat('x', @suffix_len)));
insert into t3_1024 values
(concat('1 - 03', repeat('x', @suffix_len)), concat('2 - 03', repeat('x', @suffix_len)));
insert into t3_1024 values
(concat('1 - 04', repeat('x', @suffix_len)), concat('2 - 04', repeat('x', @suffix_len)));
explain extended select left(a1,7), left(a2,7)
from t1_1024
where a1 in (select b1 from t2_1024 where b1 > '0');
id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	SIMPLE	t1_1024	ALL	NULL	NULL	NULL	NULL	3	100.00	NULL
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	0.00	Using where
2	MATERIALIZED	t2_1024	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
Warnings:
Note	1003	/* select#1 */ select left(`test`.`t1_1024`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_1024`.`a2`,7) AS `left(a2,7)` from `test`.`t1_1024` semi join (`test`.`t2_1024`) where ((`<subquery2>`.`b1` = `test`.`t1_1024`.`a1`) and (`test`.`t2_1024`.`b1` > '0'))
select left(a1,7), left(a2,7)
from t1_1024
where a1 in (select b1 from t2_1024 where b1 > '0');
left(a1,7)	left(a2,7)
1 - 01x	2 - 01x
1 - 02x	2 - 02x
explain extended select left(a1,7), left(a2,7)
from t1_1024
where (a1,a2) in (select b1, b2 from t2_1024 where b1 > '0');
id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	SIMPLE	t1_1024	ALL	NULL	NULL	NULL	NULL	3	100.00	NULL
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	0.00	Using where
2	MATERIALIZED	t2_1024	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
Warnings:
Note	1003	/* select#1 */ select left(`test`.`t1_1024`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_1024`.`a2`,7) AS `left(a2,7)` from `test`.`t1_1024` semi join (`test`.`t2_1024`) where ((`<subquery2>`.`b2` = `test`.`t1_1024`.`a2`) and (`<subquery2>`.`b1` = `test`.`t1_1024`.`a1`) and (`test`.`t2_1024`.`b1` > '0'))
select left(a1,7), left(a2,7)
from t1_1024
where (a1,a2) in (select b1, b2 from t2_1024 where b1 > '0');
left(a1,7)	left(a2,7)
1 - 01x	2 - 01x
1 - 02x	2 - 02x
explain extended select left(a1,7), left(a2,7)
from t1_1024
where a1 in (select substring(b1,1,1024) from t2_1024 where b1 > '0');
id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	SIMPLE	t1_1024	ALL	NULL	NULL	NULL	NULL	3	100.00	NULL
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	0.00	Using where
2	MATERIALIZED	t2_1024	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
Warnings:
Note	1003	/* select#1 */ select left(`test`.`t1_1024`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_1024`.`a2`,7) AS `left(a2,7)` from `test`.`t1_1024` semi join (`test`.`t2_1024`) where ((`test`.`t2_1024`.`b1` > '0') and (`test`.`t1_1024`.`a1` = `<subquery2>`.`substring(b1,1,1024)`))
select left(a1,7), left(a2,7)
from t1_1024
where a1 in (select substring(b1,1,1024) from t2_1024 where b1 > '0');
left(a1,7)	left(a2,7)
1 - 01x	2 - 01x
1 - 02x	2 - 02x
explain extended select left(a1,7), left(a2,7)
from t1_1024
where a1 in (select group_concat(b1) from t2_1024 group by b2);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	PRIMARY	t1_1024	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
2	SUBQUERY	t2_1024	ALL	NULL	NULL	NULL	NULL	3	100.00	Using filesort
Warnings:
Note	1003	/* select#1 */ select left(`test`.`t1_1024`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_1024`.`a2`,7) AS `left(a2,7)` from `test`.`t1_1024` where <in_optimizer>(`test`.`t1_1024`.`a1`,`test`.`t1_1024`.`a1` in ( <materialize> (/* select#2 */ select group_concat(`test`.`t2_1024`.`b1` separator ',') from `test`.`t2_1024` group by `test`.`t2_1024`.`b2` having 1 ), <primary_index_lookup>(`test`.`t1_1024`.`a1` in <temporary table> on <auto_key> where ((`test`.`t1_1024`.`a1` = `materialized-subquery`.`group_concat(b1)`)))))
select left(a1,7), left(a2,7)
from t1_1024
where a1 in (select group_concat(b1) from t2_1024 group by b2);
left(a1,7)	left(a2,7)
Warnings:
Warning	1260	Row 1 was cut by GROUP_CONCAT()
Warning	1260	Row 2 was cut by GROUP_CONCAT()
Warning	1260	Row 3 was cut by GROUP_CONCAT()
set @@group_concat_max_len = 256;
explain extended select left(a1,7), left(a2,7)
from t1_1024
where a1 in (select group_concat(b1) from t2_1024 group by b2);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	PRIMARY	t1_1024	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
2	SUBQUERY	t2_1024	ALL	NULL	NULL	NULL	NULL	3	100.00	Using filesort
Warnings:
Note	1003	/* select#1 */ select left(`test`.`t1_1024`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_1024`.`a2`,7) AS `left(a2,7)` from `test`.`t1_1024` where <in_optimizer>(`test`.`t1_1024`.`a1`,`test`.`t1_1024`.`a1` in ( <materialize> (/* select#2 */ select group_concat(`test`.`t2_1024`.`b1` separator ',') from `test`.`t2_1024` group by `test`.`t2_1024`.`b2` having 1 ), <primary_index_lookup>(`test`.`t1_1024`.`a1` in <temporary table> on <auto_key> where ((`test`.`t1_1024`.`a1` = `materialized-subquery`.`group_concat(b1)`)))))
select left(a1,7), left(a2,7)
from t1_1024
where a1 in (select group_concat(b1) from t2_1024 group by b2);
left(a1,7)	left(a2,7)
Warnings:
Warning	1260	Row 1 was cut by GROUP_CONCAT()
Warning	1260	Row 2 was cut by GROUP_CONCAT()
Warning	1260	Row 3 was cut by GROUP_CONCAT()
drop table t1_1024, t2_1024, t3_1024;
set @blob_len = 1025;
set @suffix_len = @blob_len - @prefix_len;
create table t1_1025 (a1 blob(1025), a2 blob(1025));
create table t2_1025 (b1 blob(1025), b2 blob(1025));
create table t3_1025 (c1 blob(1025), c2 blob(1025));
insert into t1_1025 values
(concat('1 - 00', repeat('x', @suffix_len)), concat('2 - 00', repeat('x', @suffix_len)));
insert into t1_1025 values
(concat('1 - 01', repeat('x', @suffix_len)), concat('2 - 01', repeat('x', @suffix_len)));
insert into t1_1025 values
(concat('1 - 02', repeat('x', @suffix_len)), concat('2 - 02', repeat('x', @suffix_len)));
insert into t2_1025 values
(concat('1 - 01', repeat('x', @suffix_len)), concat('2 - 01', repeat('x', @suffix_len)));
insert into t2_1025 values
(concat('1 - 02', repeat('x', @suffix_len)), concat('2 - 02', repeat('x', @suffix_len)));
insert into t2_1025 values
(concat('1 - 03', repeat('x', @suffix_len)), concat('2 - 03', repeat('x', @suffix_len)));
insert into t3_1025 values
(concat('1 - 01', repeat('x', @suffix_len)), concat('2 - 01', repeat('x', @suffix_len)));
insert into t3_1025 values
(concat('1 - 02', repeat('x', @suffix_len)), concat('2 - 02', repeat('x', @suffix_len)));
insert into t3_1025 values
(concat('1 - 03', repeat('x', @suffix_len)), concat('2 - 03', repeat('x', @suffix_len)));
insert into t3_1025 values
(concat('1 - 04', repeat('x', @suffix_len)), concat('2 - 04', repeat('x', @suffix_len)));
explain extended select left(a1,7), left(a2,7)
from t1_1025
where a1 in (select b1 from t2_1025 where b1 > '0');
id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	SIMPLE	t1_1025	ALL	NULL	NULL	NULL	NULL	3	100.00	NULL
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	0.00	Using where
2	MATERIALIZED	t2_1025	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
Warnings:
Note	1003	/* select#1 */ select left(`test`.`t1_1025`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_1025`.`a2`,7) AS `left(a2,7)` from `test`.`t1_1025` semi join (`test`.`t2_1025`) where ((`<subquery2>`.`b1` = `test`.`t1_1025`.`a1`) and (`test`.`t2_1025`.`b1` > '0'))
select left(a1,7), left(a2,7)
from t1_1025
where a1 in (select b1 from t2_1025 where b1 > '0');
left(a1,7)	left(a2,7)
1 - 01x	2 - 01x
1 - 02x	2 - 02x
explain extended select left(a1,7), left(a2,7)
from t1_1025
where (a1,a2) in (select b1, b2 from t2_1025 where b1 > '0');
id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	SIMPLE	t1_1025	ALL	NULL	NULL	NULL	NULL	3	100.00	NULL
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	0.00	Using where
2	MATERIALIZED	t2_1025	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
Warnings:
Note	1003	/* select#1 */ select left(`test`.`t1_1025`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_1025`.`a2`,7) AS `left(a2,7)` from `test`.`t1_1025` semi join (`test`.`t2_1025`) where ((`<subquery2>`.`b2` = `test`.`t1_1025`.`a2`) and (`<subquery2>`.`b1` = `test`.`t1_1025`.`a1`) and (`test`.`t2_1025`.`b1` > '0'))
select left(a1,7), left(a2,7)
from t1_1025
where (a1,a2) in (select b1, b2 from t2_1025 where b1 > '0');
left(a1,7)	left(a2,7)
1 - 01x	2 - 01x
1 - 02x	2 - 02x
explain extended select left(a1,7), left(a2,7)
from t1_1025
where a1 in (select substring(b1,1,1025) from t2_1025 where b1 > '0');
id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	SIMPLE	t1_1025	ALL	NULL	NULL	NULL	NULL	3	100.00	NULL
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	0.00	Using where
2	MATERIALIZED	t2_1025	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
Warnings:
Note	1003	/* select#1 */ select left(`test`.`t1_1025`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_1025`.`a2`,7) AS `left(a2,7)` from `test`.`t1_1025` semi join (`test`.`t2_1025`) where ((`test`.`t2_1025`.`b1` > '0') and (`test`.`t1_1025`.`a1` = `<subquery2>`.`substring(b1,1,1025)`))
select left(a1,7), left(a2,7)
from t1_1025
where a1 in (select substring(b1,1,1025) from t2_1025 where b1 > '0');
left(a1,7)	left(a2,7)
1 - 01x	2 - 01x
1 - 02x	2 - 02x
explain extended select left(a1,7), left(a2,7)
from t1_1025
where a1 in (select group_concat(b1) from t2_1025 group by b2);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	PRIMARY	t1_1025	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
2	SUBQUERY	t2_1025	ALL	NULL	NULL	NULL	NULL	3	100.00	Using filesort
Warnings:
Note	1003	/* select#1 */ select left(`test`.`t1_1025`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_1025`.`a2`,7) AS `left(a2,7)` from `test`.`t1_1025` where <in_optimizer>(`test`.`t1_1025`.`a1`,`test`.`t1_1025`.`a1` in ( <materialize> (/* select#2 */ select group_concat(`test`.`t2_1025`.`b1` separator ',') from `test`.`t2_1025` group by `test`.`t2_1025`.`b2` having 1 ), <primary_index_lookup>(`test`.`t1_1025`.`a1` in <temporary table> on <auto_key> where ((`test`.`t1_1025`.`a1` = `materialized-subquery`.`group_concat(b1)`)))))
select left(a1,7), left(a2,7)
from t1_1025
where a1 in (select group_concat(b1) from t2_1025 group by b2);
left(a1,7)	left(a2,7)
Warnings:
Warning	1260	Row 1 was cut by GROUP_CONCAT()
Warning	1260	Row 2 was cut by GROUP_CONCAT()
Warning	1260	Row 3 was cut by GROUP_CONCAT()
set @@group_concat_max_len = 256;
explain extended select left(a1,7), left(a2,7)
from t1_1025
where a1 in (select group_concat(b1) from t2_1025 group by b2);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	PRIMARY	t1_1025	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
2	SUBQUERY	t2_1025	ALL	NULL	NULL	NULL	NULL	3	100.00	Using filesort
Warnings:
Note	1003	/* select#1 */ select left(`test`.`t1_1025`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_1025`.`a2`,7) AS `left(a2,7)` from `test`.`t1_1025` where <in_optimizer>(`test`.`t1_1025`.`a1`,`test`.`t1_1025`.`a1` in ( <materialize> (/* select#2 */ select group_concat(`test`.`t2_1025`.`b1` separator ',') from `test`.`t2_1025` group by `test`.`t2_1025`.`b2` having 1 ), <primary_index_lookup>(`test`.`t1_1025`.`a1` in <temporary table> on <auto_key> where ((`test`.`t1_1025`.`a1` = `materialized-subquery`.`group_concat(b1)`)))))
select left(a1,7), left(a2,7)
from t1_1025
where a1 in (select group_concat(b1) from t2_1025 group by b2);
left(a1,7)	left(a2,7)
Warnings:
Warning	1260	Row 1 was cut by GROUP_CONCAT()
Warning	1260	Row 2 was cut by GROUP_CONCAT()
Warning	1260	Row 3 was cut by GROUP_CONCAT()
drop table t1_1025, t2_1025, t3_1025;
#
# WL#5561: Enable semi join transformation with outer join.
#
CREATE TABLE ot1(a INT);
CREATE TABLE ot2(a INT);
CREATE TABLE ot3(a INT);
CREATE TABLE it1(a INT);
CREATE TABLE it2(a INT);
CREATE TABLE it3(a INT);
INSERT INTO ot1 VALUES(0),(1),(2),(3),(4),(5),(6),(7);
INSERT INTO ot2 VALUES(0),(2),(4),(6);
INSERT INTO ot3 VALUES(0),(3),(6);
INSERT INTO it1 VALUES(0),(1),(2),(3),(4),(5),(6),(7);
INSERT INTO it2 VALUES(0),(2),(4),(6);
INSERT INTO it3 VALUES(0),(3),(6);
# Test cases, Subquery Pattern 1
# Example SQ1.1:
explain SELECT *
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
WHERE ot1.a IN (SELECT a FROM it3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	NULL
1	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	8	Using where
1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	4	Using where
2	MATERIALIZED	it3	ALL	NULL	NULL	NULL	NULL	3	NULL
SELECT *
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
WHERE ot1.a IN (SELECT a FROM it3);
a	a
0	0
3	NULL
6	6
# Example SQ1.2:
explain SELECT *
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
WHERE COALESCE(ot2.a,0) IN (SELECT a FROM it3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	NULL
1	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	8	NULL
1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	4	Using where
2	MATERIALIZED	it3	ALL	NULL	NULL	NULL	NULL	3	NULL
SELECT *
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
WHERE COALESCE(ot2.a,0) IN (SELECT a FROM it3);
a	a
0	0
1	NULL
3	NULL
5	NULL
6	6
7	NULL
# Example SQ1.3:
explain SELECT *
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
WHERE (ot1.a,ot2.a) IN (SELECT a, a FROM it3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	Using where
1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	4	Using where
1	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	8	Using where
2	MATERIALIZED	it3	ALL	NULL	NULL	NULL	NULL	3	NULL
SELECT *
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
WHERE (ot1.a,ot2.a) IN (SELECT a, a FROM it3);
a	a
0	0
6	6
# More test cases
SELECT *
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a+0
WHERE ot1.a IN (SELECT a FROM it3);
a	a
0	0
3	NULL
6	6
SELECT *
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a+0
WHERE ot1.a IN (SELECT a+0 FROM it3);
a	a
0	0
3	NULL
6	6
SELECT *
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a+0
WHERE COALESCE(ot2.a,0) IN (SELECT a FROM it3);
a	a
0	0
1	NULL
3	NULL
5	NULL
6	6
7	NULL
SELECT *
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
WHERE COALESCE(ot2.a,0) IN (SELECT a+0 FROM it3);
a	a
0	0
1	NULL
3	NULL
5	NULL
6	6
7	NULL
SELECT *
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a+0
WHERE (ot1.a,ot2.a) IN (SELECT a, a FROM it3);
a	a
0	0
6	6
SELECT *
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
LEFT JOIN ot3 ON ot1.a=ot3.a
WHERE ot1.a IN (SELECT a FROM it3);
a	a	a
0	0	0
3	NULL	3
6	6	6
SELECT *
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
LEFT JOIN ot3 ON ot1.a=ot3.a
WHERE COALESCE(ot2.a,0) IN (SELECT a FROM it3);
a	a	a
0	0	0
1	NULL	NULL
3	NULL	3
5	NULL	NULL
6	6	6
7	NULL	NULL
SELECT *
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
LEFT JOIN ot3 ON ot1.a=ot3.a
WHERE COALESCE(ot3.a,0) IN (SELECT a FROM it3);
a	a	a
0	0	0
1	NULL	NULL
2	2	NULL
3	NULL	3
4	4	NULL
5	NULL	NULL
6	6	6
7	NULL	NULL
SELECT *
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
LEFT JOIN ot3 ON ot2.a=ot3.a
WHERE ot1.a IN (SELECT a FROM it3);
a	a	a
0	0	0
3	NULL	NULL
6	6	6
SELECT *
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
LEFT JOIN ot3 ON ot2.a=ot3.a
WHERE COALESCE(ot2.a,0) IN (SELECT a FROM it3);
a	a	a
0	0	0
1	NULL	NULL
3	NULL	NULL
5	NULL	NULL
6	6	6
7	NULL	NULL
SELECT *
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
LEFT JOIN ot3 ON ot2.a=ot3.a
WHERE COALESCE(ot3.a,0) IN (SELECT a FROM it3);
a	a	a
0	0	0
1	NULL	NULL
2	2	NULL
3	NULL	NULL
4	4	NULL
5	NULL	NULL
6	6	6
7	NULL	NULL
# Test cases, Subquery Pattern 2
# Example SQ2.1:
explain SELECT *
FROM ot1 JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	NULL
1	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	8	Using where
1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	4	Using where
2	MATERIALIZED	it3	ALL	NULL	NULL	NULL	NULL	3	NULL
SELECT *
FROM ot1 JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it3);
a	a
0	0
6	6
# Example SQ2.2:
explain SELECT *
FROM ot1 JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it2)
AND ot2.a IN (SELECT a FROM it3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	<subquery3>	ALL	NULL	NULL	NULL	NULL	NULL	NULL
1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	4	Using where
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	Using where
1	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	8	Using where
3	MATERIALIZED	it3	ALL	NULL	NULL	NULL	NULL	3	NULL
2	MATERIALIZED	it2	ALL	NULL	NULL	NULL	NULL	4	NULL
SELECT *
FROM ot1 JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it2)
AND ot2.a IN (SELECT a FROM it3);
a	a
0	0
6	6
# More test cases
SELECT *
FROM ot1 JOIN ot2 ON ot1.a=ot2.a+0 AND ot1.a IN (SELECT a FROM it3);
a	a
0	0
6	6
SELECT *
FROM ot1 JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a+0 FROM it3);
a	a
0	0
6	6
SELECT *
FROM ot1 JOIN ot2 ON ot1.a=ot2.a+0 AND ot2.a IN (SELECT a FROM it3);
a	a
0	0
6	6
SELECT *
FROM ot1 JOIN ot2 ON ot1.a=ot2.a AND ot2.a IN (SELECT a+0 FROM it3);
a	a
0	0
6	6
SELECT *
FROM ot1 JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a+0 FROM it2)
AND ot2.a IN (SELECT a+0 FROM it3);
a	a
0	0
6	6
SELECT *
FROM ot1 JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it3)
JOIN ot3 ON ot2.a=ot3.a AND ot3.a IN (SELECT a FROM it3);
a	a	a
0	0	0
6	6	6
# Test cases, Subquery Pattern 3
# Example SQ3.1:
explain SELECT *
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	8	NULL
1	SIMPLE	it3	ALL	NULL	NULL	NULL	NULL	3	Using where; Start temporary; End temporary
1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	4	Using where
SELECT *
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it3);
a	a
0	0
1	NULL
2	NULL
3	NULL
4	NULL
5	NULL
6	6
7	NULL
# Example SQ3.2:
explain SELECT *
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a AND ot2.a IN (SELECT a FROM it2);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	8	NULL
1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	4	Using where
1	SIMPLE	it2	ALL	NULL	NULL	NULL	NULL	4	Using where; Start temporary; End temporary
SELECT *
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a AND ot2.a IN (SELECT a FROM it2);
a	a
0	0
1	NULL
2	2
3	NULL
4	4
5	NULL
6	6
7	NULL
# Example SQ3.3
explain SELECT *
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1)
AND ot2.a IN (SELECT a FROM it2);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	8	NULL
1	SIMPLE	it1	ALL	NULL	NULL	NULL	NULL	8	Using where; Start temporary
1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	4	Using where
1	SIMPLE	it2	ALL	NULL	NULL	NULL	NULL	4	Using where; End temporary
SELECT *
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1)
AND ot2.a IN (SELECT a FROM it2);
a	a
0	0
1	NULL
2	2
3	NULL
4	4
5	NULL
6	6
7	NULL
# Example SQ3.4
explain SELECT *
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a AND
(ot1.a, ot2.a) IN (SELECT it1.a, it2.a
FROM it1 JOIN it2 ON it1.a=it2.a);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	8	NULL
1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	4	Using where
1	SIMPLE	it2	ALL	NULL	NULL	NULL	NULL	4	Using where; Start temporary
1	SIMPLE	it1	ALL	NULL	NULL	NULL	NULL	8	Using where; End temporary
SELECT *
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a AND
(ot1.a, ot2.a) IN (SELECT it1.a, it2.a
FROM it1 JOIN it2 ON it1.a=it2.a);
a	a
0	0
1	NULL
2	2
3	NULL
4	4
5	NULL
6	6
7	NULL
# More test cases
SELECT *
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a+0 AND ot1.a IN (SELECT a FROM it3);
a	a
0	0
1	NULL
2	NULL
3	NULL
4	NULL
5	NULL
6	6
7	NULL
SELECT *
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a+0 FROM it3);
a	a
0	0
1	NULL
2	NULL
3	NULL
4	NULL
5	NULL
6	6
7	NULL
SELECT *
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a+0 AND ot2.a IN (SELECT a FROM it2);
a	a
0	0
1	NULL
2	2
3	NULL
4	4
5	NULL
6	6
7	NULL
SELECT *
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a AND ot2.a IN (SELECT a+0 FROM it2);
a	a
0	0
1	NULL
2	2
3	NULL
4	4
5	NULL
6	6
7	NULL
SELECT *
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a+0 AND ot1.a IN (SELECT a+0 FROM it1)
AND ot2.a IN (SELECT a+0 FROM it2);
a	a
0	0
1	NULL
2	2
3	NULL
4	4
5	NULL
6	6
7	NULL
SELECT *
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a+0 AND
(ot1.a, ot2.a) IN (SELECT it1.a+0, it2.a+0
FROM it1 JOIN it2 ON it1.a=it2.a);
a	a
0	0
1	NULL
2	2
3	NULL
4	4
5	NULL
6	6
7	NULL
SELECT *
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it3)
LEFT JOIN ot3 ON ot2.a=ot3.a AND ot3.a IN (SELECT a FROM it3);
a	a	a
0	0	0
1	NULL	NULL
2	NULL	NULL
3	NULL	NULL
4	NULL	NULL
5	NULL	NULL
6	6	6
7	NULL	NULL
SELECT *
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a+0 AND ot1.a IN (SELECT a FROM it3)
LEFT JOIN ot3 ON ot2.a=ot3.a+0 AND ot3.a IN (SELECT a FROM it3);
a	a	a
0	0	0
1	NULL	NULL
2	NULL	NULL
3	NULL	NULL
4	NULL	NULL
5	NULL	NULL
6	6	6
7	NULL	NULL
# Test cases, Subquery Pattern 4
# Example SQ4.1:
explain SELECT *
FROM   ot1
LEFT JOIN
(ot2 JOIN ot3 ON ot2.a=ot3.a)
ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	8	NULL
1	SIMPLE	it1	ALL	NULL	NULL	NULL	NULL	8	Using where; Start temporary; End temporary
1	SIMPLE	ot3	ALL	NULL	NULL	NULL	NULL	3	NULL
1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	4	Using where
SELECT *
FROM   ot1
LEFT JOIN
(ot2 JOIN ot3 ON ot2.a=ot3.a)
ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1);
a	a	a
0	0	0
1	NULL	NULL
2	NULL	NULL
3	NULL	NULL
4	NULL	NULL
5	NULL	NULL
6	6	6
7	NULL	NULL
# Example SQ4.2:
explain SELECT *
FROM   ot1
JOIN
(ot2 JOIN ot3 ON ot2.a=ot3.a)
ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	ot3	ALL	NULL	NULL	NULL	NULL	3	Using where
1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	4	Using where
1	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	8	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	5	test.ot3.a	1	NULL
2	MATERIALIZED	it1	ALL	NULL	NULL	NULL	NULL	8	NULL
SELECT *
FROM   ot1
JOIN
(ot2 JOIN ot3 ON ot2.a=ot3.a)
ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1);
a	a	a
0	0	0
6	6	6
# Example SQ4.3:
explain SELECT *
FROM   ot1
JOIN
(ot2 LEFT JOIN ot3 ON ot2.a=ot3.a)
ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	4	Using where
1	SIMPLE	ot3	ALL	NULL	NULL	NULL	NULL	3	Using where
1	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	8	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	5	test.ot2.a	1	NULL
2	MATERIALIZED	it1	ALL	NULL	NULL	NULL	NULL	8	NULL
SELECT *
FROM   ot1
JOIN
(ot2 LEFT JOIN ot3 ON ot2.a=ot3.a)
ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1);
a	a	a
0	0	0
2	2	NULL
4	4	NULL
6	6	6
# Example SQ4.4:
explain SELECT *
FROM   ot1
LEFT JOIN
(ot2 LEFT JOIN ot3 ON ot2.a=ot3.a)
ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	8	NULL
1	SIMPLE	it1	ALL	NULL	NULL	NULL	NULL	8	Using where; Start temporary; End temporary
1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	4	Using where
1	SIMPLE	ot3	ALL	NULL	NULL	NULL	NULL	3	Using where
SELECT *
FROM   ot1
LEFT JOIN
(ot2 LEFT JOIN ot3 ON ot2.a=ot3.a)
ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1);
a	a	a
0	0	0
1	NULL	NULL
2	2	NULL
3	NULL	NULL
4	4	NULL
5	NULL	NULL
6	6	6
7	NULL	NULL
# More test cases
SELECT *
FROM   ot1
LEFT JOIN
(ot2 JOIN ot3 ON ot2.a=ot3.a+0)
ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1);
a	a	a
0	0	0
1	NULL	NULL
2	NULL	NULL
3	NULL	NULL
4	NULL	NULL
5	NULL	NULL
6	6	6
7	NULL	NULL
SELECT *
FROM   ot1
LEFT JOIN
(ot2 JOIN ot3 ON ot2.a=ot3.a)
ON ot1.a=ot2.a+0 AND ot1.a IN (SELECT a FROM it1);
a	a	a
0	0	0
1	NULL	NULL
2	NULL	NULL
3	NULL	NULL
4	NULL	NULL
5	NULL	NULL
6	6	6
7	NULL	NULL
SELECT *
FROM   ot1
LEFT JOIN
(ot2 JOIN ot3 ON ot2.a=ot3.a)
ON ot1.a=ot2.a AND ot1.a IN (SELECT a+0 FROM it1);
a	a	a
0	0	0
1	NULL	NULL
2	NULL	NULL
3	NULL	NULL
4	NULL	NULL
5	NULL	NULL
6	6	6
7	NULL	NULL
SELECT *
FROM   ot1
JOIN
(ot2 JOIN ot3 ON ot2.a=ot3.a+0)
ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1);
a	a	a
0	0	0
6	6	6
SELECT *
FROM   ot1
JOIN
(ot2 JOIN ot3 ON ot2.a=ot3.a)
ON ot1.a=ot2.a+0 AND ot1.a IN (SELECT a FROM it1);
a	a	a
0	0	0
6	6	6
SELECT *
FROM   ot1
JOIN
(ot2 JOIN ot3 ON ot2.a=ot3.a)
ON ot1.a=ot2.a AND ot1.a IN (SELECT a+0 FROM it1);
a	a	a
0	0	0
6	6	6
SELECT *
FROM   ot1
JOIN
(ot2 LEFT JOIN ot3 ON ot2.a=ot3.a+0)
ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1);
a	a	a
0	0	0
2	2	NULL
4	4	NULL
6	6	6
SELECT *
FROM   ot1
JOIN
(ot2 LEFT JOIN ot3 ON ot2.a=ot3.a)
ON ot1.a=ot2.a+0 AND ot1.a IN (SELECT a FROM it1);
a	a	a
0	0	0
2	2	NULL
4	4	NULL
6	6	6
SELECT *
FROM   ot1
JOIN
(ot2 LEFT JOIN ot3 ON ot2.a=ot3.a)
ON ot1.a=ot2.a AND ot1.a IN (SELECT a+0 FROM it1);
a	a	a
0	0	0
2	2	NULL
4	4	NULL
6	6	6
SELECT *
FROM   ot1
LEFT JOIN
(ot2 LEFT JOIN ot3 ON ot2.a=ot3.a+0)
ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1);
a	a	a
0	0	0
1	NULL	NULL
2	2	NULL
3	NULL	NULL
4	4	NULL
5	NULL	NULL
6	6	6
7	NULL	NULL
SELECT *
FROM   ot1
LEFT JOIN
(ot2 LEFT JOIN ot3 ON ot2.a=ot3.a)
ON ot1.a=ot2.a+0 AND ot1.a IN (SELECT a FROM it1);
a	a	a
0	0	0
1	NULL	NULL
2	2	NULL
3	NULL	NULL
4	4	NULL
5	NULL	NULL
6	6	6
7	NULL	NULL
SELECT *
FROM   ot1
LEFT JOIN
(ot2 LEFT JOIN ot3 ON ot2.a=ot3.a)
ON ot1.a=ot2.a AND ot1.a IN (SELECT a+0 FROM it1);
a	a	a
0	0	0
1	NULL	NULL
2	2	NULL
3	NULL	NULL
4	4	NULL
5	NULL	NULL
6	6	6
7	NULL	NULL
SELECT *
FROM   ot1
LEFT JOIN
(ot2 LEFT JOIN ot3 ON ot2.a=ot3.a)
ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1)
LEFT JOIN
ot1 AS ot4
ON ot2.a=ot4.a;
a	a	a	a
0	0	0	0
1	NULL	NULL	NULL
2	2	NULL	2
3	NULL	NULL	NULL
4	4	NULL	4
5	NULL	NULL	NULL
6	6	6	6
7	NULL	NULL	NULL
SELECT *
FROM   ot1
LEFT JOIN
(ot2 LEFT JOIN ot3 ON ot2.a=ot3.a
LEFT JOIN ot1 AS ot4 ON ot3.a=ot4.a)
ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1);
a	a	a	a
0	0	0	0
1	NULL	NULL	NULL
2	2	NULL	NULL
3	NULL	NULL	NULL
4	4	NULL	NULL
5	NULL	NULL	NULL
6	6	6	6
7	NULL	NULL	NULL
DROP TABLE ot1,ot2,ot3,it1,it2,it3;
CREATE TABLE t (
a INTEGER DEFAULT NULL
) ENGINE=InnoDB;
INSERT INTO t VALUES (1);
CREATE TABLE t2 (
a INTEGER DEFAULT NULL
) ENGINE=InnoDB;
INSERT INTO t2 VALUES (1),(1);
CREATE TABLE t4 (
a INTEGER DEFAULT NULL
) ENGINE=InnoDB;
INSERT INTO t4 VALUES (1),(1);
CREATE TABLE v (
a INTEGER DEFAULT NULL
) ENGINE=InnoDB;
INSERT INTO v VALUES (1),(1);
explain SELECT *
FROM t AS t1
LEFT JOIN
(t2
LEFT JOIN t AS t3
ON t3.a IN (SELECT a FROM t AS it)
JOIN t4
ON t4.a=100
)
ON TRUE
WHERE t1.a IN (SELECT * FROM v AS it2);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	it2	ALL	NULL	NULL	NULL	NULL	2	Using where; Start temporary
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	1	Using where
1	SIMPLE	it	ALL	NULL	NULL	NULL	NULL	1	Using where
1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
SELECT *
FROM t AS t1
LEFT JOIN
(t2
LEFT JOIN t AS t3
ON t3.a IN (SELECT a FROM t AS it)
JOIN t4
ON t4.a=100
)
ON TRUE
WHERE t1.a IN (SELECT * FROM v AS it2);
a	a	a	a
1	NULL	NULL	NULL
DROP TABLE t,t2,t4,v;
# End of WL#5561
#
# Bug#48868: Left outer join in subquery causes segmentation fault in
#            make_join_select.
#
CREATE TABLE t1 (i INTEGER);
INSERT INTO t1 VALUES (1);
INSERT INTO t1 VALUES (2);
CREATE TABLE t2 (i INTEGER);
INSERT INTO t2 VALUES(1);
CREATE TABLE t3 (i INTEGER);
INSERT INTO t3 VALUES (1);
INSERT INTO t3 VALUES (2);
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t2.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
i
1
DROP TABLE t1, t2, t3;

Bug#37899: Wrongly checked optimization prerequisite caused failed
assertion.

CREATE TABLE t1 (
`pk` int(11),
`varchar_nokey` varchar(5)
);
INSERT INTO t1 VALUES
(1,'qk'),(2,'j'),(3,'aew');
SELECT *
FROM t1
WHERE varchar_nokey IN (
SELECT
varchar_nokey
FROM
t1
) XOR pk = 30;
pk	varchar_nokey
1	qk
2	j
3	aew
drop table t1;
#
# BUG#41842: Semi-join materialization strategy crashes when the upper query has HAVING
#
CREATE TABLE t1 (
pk int(11) NOT NULL AUTO_INCREMENT,
int_nokey int(11) NOT NULL,
time_key time NOT NULL,
datetime_key datetime NOT NULL,
datetime_nokey datetime NOT NULL,
varchar_key varchar(1) NOT NULL,
varchar_nokey varchar(1) NOT NULL,
PRIMARY KEY (pk),
KEY time_key (time_key),
KEY datetime_key (datetime_key),
KEY varchar_key (varchar_key)
);
INSERT INTO t1 VALUES 
(1,0, '00:16:10','2008-09-03 14:25:40','2008-09-03 14:25:40','h','h'),
(2,7, '00:00:00','2001-01-13 00:00:00','2001-01-13 00:00:00','',''),
(3,0, '00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','x','x'),
(4,2, '16:29:24','2000-10-16 01:39:08','2000-10-16 01:39:08','w','w'),
(5,1, '09:23:32','0000-00-00 00:00:00','0000-00-00 00:00:00','p','p'),
(6,3, '00:00:00','2007-12-02 00:00:00','2007-12-02 00:00:00','o','o'),
(7,3, '00:00:00','2008-09-11 00:00:00','2008-09-11 00:00:00','',''),
(8,0, '13:59:04','0000-00-00 00:00:00','0000-00-00 00:00:00','s','s'),
(9,7, '09:01:06','0000-00-00 00:00:00','0000-00-00 00:00:00','d','d'),
(10,5,'00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','n','n'),
(11,0,'21:06:46','0000-00-00 00:00:00','0000-00-00 00:00:00','o','o'),
(12,2,'00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','',''),
(13,6,'14:45:34','2003-07-28 02:34:08','2003-07-28 02:34:08','w','w'),
(14,1,'15:04:12','0000-00-00 00:00:00','0000-00-00 00:00:00','o','o'),
(15,0,'00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','x','x'),
(16,0,'15:55:23','2004-03-17 00:32:27','2004-03-17 00:32:27','p','p'),
(17,1,'16:30:00','2004-12-27 19:20:00','2004-12-27 19:20:00','d','d'),
(18,0,'00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','h','h'),
(19,0,'14:13:26','2008-11-09 05:53:48','2008-11-09 05:53:48','o','o'),
(20,0,'00:00:00','2009-10-11 06:58:04','2009-10-11 06:58:04','k','k');
CREATE TABLE t2 (
pk int(11) NOT NULL AUTO_INCREMENT,
int_nokey int(11) NOT NULL,
time_key time NOT NULL,
datetime_key datetime NOT NULL,
datetime_nokey datetime NOT NULL,
varchar_key varchar(1) NOT NULL,
varchar_nokey varchar(1) NOT NULL,
PRIMARY KEY (pk),
KEY time_key (time_key),
KEY datetime_key (datetime_key),
KEY varchar_key (varchar_key)
);
INSERT INTO t2 VALUES 
(10,0,'19:39:13','0000-00-00 00:00:00','0000-00-00 00:00:00','g','g'),
(11,8,'03:43:53','0000-00-00 00:00:00','0000-00-00 00:00:00','b','b');
SELECT OUTR.datetime_nokey AS X FROM t1 AS OUTR 
WHERE 
OUTR.varchar_nokey IN (SELECT 
INNR . varchar_nokey AS Y 
FROM t2 AS INNR 
WHERE
INNR . datetime_key >= INNR . time_key OR 
INNR . pk = INNR . int_nokey  
) 
AND OUTR . varchar_nokey <= 'w' 
HAVING X > '2012-12-12';
X
drop table t1, t2;

Bug#46797 "Crash in fix_semijoin_strategies_for_picked_join_order 
with semijoin=on"

CREATE TABLE t1 (
varchar_key varchar(1) DEFAULT NULL,
KEY varchar_key (varchar_key)
);
CREATE TABLE t2 (
varchar_key varchar(1) DEFAULT NULL,
KEY varchar_key (varchar_key)
);
INSERT INTO t2 VALUES
(NULL),(NULL),(NULL),(NULL),('a'),('a'),('a'),('b'),('b'),('b'),('b'),('c'),
('c'),('c'),('c'),('c'),('c'),('c'),('d'),('d'),('d'),('d'),('d'),('d'),('e'),
('e'),('e'),('e'),('e'),('e'),('f'),('f'),('f'),('g'),('g'),('h'),('h'),('h'),
('h'),('i'),('j'),('j'),('j'),('k'),('k'),('l'),('l'),('m'),('m'),('m'),('m'),
('n'),('n'),('n'),('o'),('o'),('o'),('p'),('p'),('p'),('q'),('q'),('q'),('r'),
('r'),('r'),('r'),('s'),('s'),('s'),('s'),('t'),('t'),('t'),('t'),('u'),('u'),
('u'),('u'),('v'),('v'),('v'),('v'),('w'),('w'),('w'),('w'),('w'),('w'),('x'),
('x'),('x'),('y'),('y'),('y'),('y'),('z'),('z'),('z'),('z');
CREATE TABLE t3 (
varchar_key varchar(1) DEFAULT NULL,
KEY varchar_key (varchar_key)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
INSERT INTO t3 VALUES
(NULL),('c'),('d'),('e'),('f'),('h'),('j'),('k'),('k'),('m'),('m'),('m'),
('n'),('o'),('r'),('t'),('t'),('u'),('w'),('y');
SELECT varchar_key FROM t3 
WHERE (SELECT varchar_key FROM t3 
WHERE (varchar_key,varchar_key) 
IN (SELECT t1.varchar_key, t2 .varchar_key 
FROM t1 RIGHT JOIN t2 ON t1.varchar_key  
)  
);
varchar_key
DROP TABLE t1, t2, t3;
#
# Bug#46556 Returning incorrect, empty results for some IN subqueries 
#           w/semijoin=on
#
CREATE TABLE t0 (
pk INTEGER,
vkey VARCHAR(1),
vnokey VARCHAR(1),
PRIMARY KEY (pk),
KEY vkey(vkey)
);
INSERT INTO t0 
VALUES (1,'g','g'), (2,'v','v'), (3,'t','t'), (4,'u','u'), (5,'n','n');
EXPLAIN EXTENDED SELECT vkey FROM t0 WHERE pk IN 
(SELECT t1.pk FROM t0 t1 JOIN t0 t2 ON t2.vkey = t1.vnokey);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	SIMPLE	t0	ALL	PRIMARY	NULL	NULL	NULL	5	100.00	Start temporary
1	SIMPLE	t1	eq_ref	PRIMARY	PRIMARY	4	test.t0.pk	1	100.00	Using where
1	SIMPLE	t2	ref	vkey	vkey	4	test.t1.vnokey	2	100.00	Using index; End temporary
Warnings:
Note	1003	/* select#1 */ select `test`.`t0`.`vkey` AS `vkey` from `test`.`t0` `t1` semi join (`test`.`t0` `t2`) join `test`.`t0` where ((`test`.`t2`.`vkey` = `test`.`t1`.`vnokey`) and (`test`.`t1`.`pk` = `test`.`t0`.`pk`))
SELECT vkey FROM t0 WHERE pk IN 
(SELECT t1.pk FROM t0 t1 JOIN t0 t2 ON t2.vkey = t1.vnokey);
vkey
g
v
t
u
n
DROP TABLE t0;
# End of bug#46556

Bug#48834: Procedure with view + subquery + semijoin=on 
crashes on second call.

CREATE TABLE t1 ( t1field integer, primary key (t1field));
CREATE TABLE t2 ( t2field integer, primary key (t2field));
CREATE VIEW v1 AS 
SELECT t1field as v1field
FROM t1 A 
WHERE A.t1field IN (SELECT t1field FROM t2 );
CREATE VIEW v2 AS 
SELECT t2field as v2field
FROM t2 A 
WHERE A.t2field IN (SELECT t2field FROM t2 );
CREATE PROCEDURE p1 () 
BEGIN 
SELECT v1field
FROM v1 
WHERE v1field IN ( SELECT v2field as vf_inner FROM v2 );
END|
INSERT INTO t1 VALUES (1),(2),(3);
INSERT INTO t2 VALUES (2),(3),(4);
CALL p1;
v1field
2
3
CALL p1;
v1field
2
3
DROP TABLE t1,t2;
DROP VIEW v1,v2;
DROP PROCEDURE p1;
# End of BUG#48834
#
# Bug#46692 "Crash occurring on queries with nested FROM subqueries 
# using materialization."
#
CREATE TABLE t1 (
pk INTEGER PRIMARY KEY,
int_key INTEGER,
KEY int_key(int_key)
);
INSERT INTO t1 VALUES (10,186),(11,NULL),(12,2),(13,3),(14,0),(15,133),(16,1);
CREATE TABLE t2 (
pk INTEGER PRIMARY KEY,
int_key INTEGER,
KEY int_key(int_key)
);
INSERT INTO t2 VALUES (1,7),(2,2);
SELECT * FROM t1 WHERE (140, 4) IN 
(SELECT t2.int_key, t2 .pk FROM t2 STRAIGHT_JOIN t1 ON t2.int_key);
pk	int_key
DROP TABLE t1, t2;
#
# Bug#42353 "SELECT ... WHERE oe IN (SELECT w/ LEFT JOIN) query
# causes crash."
#
CREATE TABLE t1 (
pk INTEGER PRIMARY KEY,
int_nokey INTEGER,
int_key INTEGER,
date_key DATE,
datetime_nokey DATETIME,
varchar_nokey VARCHAR(1)
);
CREATE TABLE t2 (
date_nokey DATE
);
CREATE TABLE t3 (
pk INTEGER PRIMARY KEY,
int_nokey INTEGER,
date_key date,
varchar_key VARCHAR(1),
varchar_nokey VARCHAR(1),
KEY date_key (date_key)
);
SELECT date_key FROM t1
WHERE (int_key, int_nokey)
IN (SELECT  t3.int_nokey, t3.pk
FROM t2 LEFT JOIN t3 ON (t2.date_nokey < t3.date_key) 
WHERE t3.varchar_key <= t3.varchar_nokey OR t3.int_nokey <= t3.pk
)
AND (varchar_nokey <> 'f' OR NOT int_key < 7);
date_key
#
# Bug#45933 "Crash in optimize_semijoin_nests on JOIN in subquery 
# + AND in outer query".
#
INSERT INTO t1 VALUES (10,7,5,'2009-06-16','2002-04-10 14:25:30','w'),
(11,7,0,'0000-00-00','0000-00-00 00:00:00','s'), 
(12,4,0,'2003-07-14','2006-09-14 04:01:02','y'), 
(13,0,4,'2002-07-25','0000-00-00 00:00:00','c'), 
(14,1,8,'2007-07-03','0000-00-00 00:00:00','q'), 
(15,6,5,'2001-11-12','0000-00-00 00:00:00',''), 
(16,2,9,'0000-00-00','0000-00-00 00:00:00','j'), 
(29,9,1,'0000-00-00','2003-08-11 00:00:00','m');
INSERT INTO t3 VALUES (1,9,'0000-00-00','b','b'),
(2,2,'2002-09-17','h','h');
SELECT t1.varchar_nokey FROM t1 JOIN t3 ON t1.datetime_nokey
WHERE t1.varchar_nokey 
IN (SELECT varchar_nokey FROM t1 
WHERE (pk) 
IN (SELECT t3.int_nokey
FROM t3 LEFT JOIN t1 ON t1.varchar_nokey
WHERE t3.date_key BETWEEN '2008-06-07' AND '2006-06-26'
           )  
);
varchar_nokey
DROP TABLE t1, t2, t3;
#
# Bug#45219 "Crash on SELECT DISTINCT query containing a  
# LEFT JOIN in subquery"
#
CREATE TABLE t1 (
pk INTEGER NOT NULL,
int_nokey INTEGER NOT NULL,
datetime_key DATETIME NOT NULL,
varchar_key VARCHAR(1) NOT NULL,
PRIMARY KEY (pk),
KEY datetime_key (datetime_key),
KEY varchar_key (varchar_key)
);
INSERT INTO t1 VALUES
(1,9,'0000-00-00 00:00:00','p'),(2,0,'2002-02-09 07:38:13','v'),
(3,8,'2001-05-03 12:08:14','t'),(4,3,'0000-00-00 00:00:00','u'),
(5,7,'2009-07-28 03:43:30','n'),(6,0,'2009-08-04 00:00:00','l'),
(7,1,'0000-00-00 00:00:00','h'),(8,9,'0000-00-00 00:00:00','u'),
(9,0,'2005-08-02 17:16:54','n'),(10,9,'2002-12-21 00:00:00','j'),
(11,0,'2005-08-15 12:37:35','k'),(12,5,'0000-00-00 00:00:00','e'),
(13,0,'2006-03-10 00:00:00','i'),(14,8,'2005-05-16 11:02:36','u'),
(15,8,'2008-11-02 00:00:00','n'),(16,5,'2006-03-15 00:00:00','b'),
(17,1,'0000-00-00 00:00:00','x'),(18,7,'0000-00-00 00:00:00',''),
(19,0,'2008-12-17 20:15:40','q'),(20,9,'0000-00-00 00:00:00','u');
CREATE TABLE t2 LIKE t1;
INSERT INTO t2 VALUES 
(10,0,'2006-07-07 07:26:28','q'),(11,5,'2002-09-23 00:00:00','m'),
(12,7,'0000-00-00 00:00:00','j'),(13,1,'2006-06-07 00:00:00','z'),
(14,8,'2000-09-16 12:15:34','a'),(15,2,'2007-08-05 15:47:52',''),
(16,1,'0000-00-00 00:00:00','e'),(17,8,'2005-12-02 19:34:26','t'),
(18,5,'0000-00-00 00:00:00','q'),(19,4,'0000-00-00 00:00:00','b'),
(20,5,'2007-12-28 00:00:00','w'),(21,3,'2004-08-02 11:48:43','m'),
(22,0,'0000-00-00 00:00:00','x'),(23,8,'2004-04-19 12:18:43',''),
(24,0,'2009-04-27 00:00:00','w'),(25,4,'2006-10-20 14:52:15','x'),
(26,0,'0000-00-00 00:00:00','e'),(27,0,'2002-03-22 11:48:37','e'),
(28,2,'0000-00-00 00:00:00','p'),(29,0,'2001-01-04 03:55:07','x');
CREATE TABLE t3 LIKE t1;
INSERT INTO t3 VALUES
(10,8,'2007-08-19 08:08:38','i'),(11,0,'2000-05-21 03:51:51','');
SELECT DISTINCT datetime_key FROM t1
WHERE (int_nokey, pk)  
IN (SELECT t3.pk, t3.pk FROM t2 LEFT JOIN t3 ON t3.varchar_key)  
AND pk = 9;
datetime_key
DROP TABLE t1, t2, t3;
#
# Bug#46550 Azalea returning duplicate results for some IN subqueries
# w/ semijoin=on
#
DROP TABLE IF EXISTS t0, t1, t2;
CREATE TABLE t0 (
int_key int(11) DEFAULT NULL,
varchar_key varchar(1) DEFAULT NULL,
varchar_nokey varchar(1) DEFAULT NULL,
KEY int_key (int_key),
KEY varchar_key (varchar_key,int_key)
);
INSERT INTO t0 VALUES
(1,'m','m'),
(40,'h','h'),
(1,'r','r'),
(1,'h','h'),
(9,'x','x'),
(NULL,'q','q'),
(NULL,'k','k'),
(7,'l','l'),
(182,'k','k'),
(202,'a','a'),
(7,'x','x'),
(6,'j','j'),
(119,'z','z'),
(4,'d','d'),
(5,'h','h'),
(1,'u','u'),
(3,'q','q'),
(7,'a','a'),
(3,'e','e'),
(6,'l','l');
CREATE TABLE t1 (
int_key int(11) DEFAULT NULL,
varchar_key varchar(1) DEFAULT NULL,
varchar_nokey varchar(1) DEFAULT NULL,
KEY int_key (int_key),
KEY varchar_key (varchar_key,int_key)
);
INSERT INTO t1 VALUES (7,NULL,NULL),(4,'x','x');
CREATE TABLE t2 (
int_key int(11) DEFAULT NULL,
varchar_key varchar(1) DEFAULT NULL,
varchar_nokey varchar(1) DEFAULT NULL,
KEY int_key (int_key),
KEY varchar_key (varchar_key,int_key)
);
INSERT INTO t2 VALUES (123,NULL,NULL);
SELECT int_key  
FROM t0  
WHERE varchar_nokey  IN (  
SELECT t1 .varchar_key  from t1
);
int_key
9
7
SELECT t0.int_key  
FROM t0
WHERE t0.varchar_nokey  IN (  
SELECT t1_1 .varchar_key  
FROM t1 AS t1_1  JOIN t1 AS t1_2 ON t1_1 .int_key
);
int_key
9
7
EXPLAIN
SELECT t0.int_key  
FROM t0
WHERE t0.varchar_nokey  IN (  
SELECT t1_1 .varchar_key  
FROM t1 AS t1_1  JOIN t1 AS t1_2 ON t1_1 .int_key
);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	NULL
1	SIMPLE	t0	ALL	NULL	NULL	NULL	NULL	20	Using where
2	MATERIALIZED	t1_1	index	varchar_key	varchar_key	9	NULL	2	Using where; Using index
2	MATERIALIZED	t1_2	index	NULL	int_key	5	NULL	2	Using index
SELECT t0.int_key  
FROM t0, t2
WHERE t0.varchar_nokey  IN (  
SELECT t1_1 .varchar_key  
FROM t1 AS t1_1  JOIN t1 AS t1_2 ON t1_1 .int_key  
);
int_key
9
7
EXPLAIN
SELECT t0.int_key  
FROM t0, t2
WHERE t0.varchar_nokey  IN (  
SELECT t1_1 .varchar_key  
FROM t1 AS t1_1  JOIN t1 AS t1_2 ON t1_1 .int_key  
);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t2	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	NULL
1	SIMPLE	t0	ALL	NULL	NULL	NULL	NULL	20	Using where
2	MATERIALIZED	t1_1	index	varchar_key	varchar_key	9	NULL	2	Using where; Using index
2	MATERIALIZED	t1_2	index	NULL	int_key	5	NULL	2	Using index
DROP TABLE t0, t1, t2;
# End of bug#46550

Bug #48073 Subquery on char columns from view crashes Mysql

DROP TABLE IF EXISTS t1, t2;
DROP VIEW IF EXISTS v1;
CREATE TABLE t1 (
city VARCHAR(50) NOT NULL,
country_id SMALLINT UNSIGNED NOT NULL
);
INSERT INTO t1 VALUES 
('Batna',2),
('Bchar',2),
('Skikda',2),
('Tafuna',3),
('Algeria',2) ;
CREATE TABLE t2 (
country_id SMALLINT UNSIGNED NOT NULL,
country VARCHAR(50) NOT NULL
);
INSERT INTO t2 VALUES
(2,'Algeria'),
(3,'American Samoa') ;
CREATE VIEW v1 AS 
SELECT country_id, country 
FROM t2
WHERE LEFT(country,1) = "A" 
;
SELECT city, country_id
FROM t1
WHERE city IN (
SELECT country 
FROM t2
WHERE LEFT(country, 1) = "A" 
);
city	country_id
Algeria	2
SELECT city, country_id
FROM t1
WHERE city IN (
SELECT country 
FROM v1
);
city	country_id
Algeria	2
drop table t1, t2;
drop view v1;
# End of bug#48073

Bug#49097 subquery with view generates wrong result with
non-prepared statement

DROP TABLE IF EXISTS t1, t2;
DROP VIEW IF EXISTS v1;
CREATE TABLE t1 (
city VARCHAR(50) NOT NULL,
country_id SMALLINT UNSIGNED NOT NULL
);
INSERT INTO t1 VALUES 
('Batna',2),
('Bchar',2),
('Skikda',2),
('Tafuna',3),
('Algeria',2) ;
CREATE TABLE t2 (
country_id SMALLINT UNSIGNED NOT NULL,
country VARCHAR(50) NOT NULL
);
INSERT INTO t2 VALUES
(2,'Algeria'),
(3,'XAmerican Samoa') ;
CREATE VIEW v1 AS 
SELECT country_id, country 
FROM t2
WHERE LEFT(country,1) = "A" 
;
SELECT city, country_id
FROM t1
WHERE country_id IN (
SELECT country_id 
FROM t2
WHERE LEFT(country,1) = "A" 
);
city	country_id
Batna	2
Bchar	2
Skikda	2
Algeria	2
SELECT city, country_id
FROM t1
WHERE country_id IN (
SELECT country_id 
FROM v1
);
city	country_id
Batna	2
Bchar	2
Skikda	2
Algeria	2
PREPARE stmt FROM
"
SELECT city, country_id
FROM t1
WHERE country_id IN (
  SELECT country_id 
  FROM v1
);
";
execute stmt;
city	country_id
Batna	2
Bchar	2
Skikda	2
Algeria	2
deallocate prepare stmt;
drop table t1, t2;
drop view v1;
# End of Bug#49097
# 
# Bug#49198 Wrong result for second call of procedure
#           with view in subselect.
# 
CREATE TABLE t1 (t1field integer, primary key (t1field));
CREATE TABLE t2 (t2field integer, primary key (t2field));
CREATE TABLE t3 (t3field integer, primary key (t3field));
CREATE VIEW v2 AS SELECT * FROM t2;
CREATE VIEW v3 AS SELECT * FROM t3;
INSERT INTO t1 VALUES(1),(2);
INSERT INTO t2 VALUES(1),(2);
INSERT INTO t3 VALUES(1),(2);
PREPARE stmt FROM
"
SELECT t1field
FROM t1
WHERE t1field IN (SELECT * FROM v2);
";
EXECUTE stmt;
t1field
1
2
EXECUTE stmt;
t1field
1
2
PREPARE stmt FROM
"
EXPLAIN
SELECT t1field
FROM t1
WHERE t1field IN (SELECT * FROM v2)
  AND t1field IN (SELECT * FROM v3)
";
EXECUTE stmt;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	index	PRIMARY	PRIMARY	4	NULL	2	Using index
1	SIMPLE	t2	eq_ref	PRIMARY	PRIMARY	4	test.t1.t1field	1	Using index
1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.t1field	1	Using index
EXECUTE stmt;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	index	PRIMARY	PRIMARY	4	NULL	2	Using index
1	SIMPLE	t2	eq_ref	PRIMARY	PRIMARY	4	test.t1.t1field	1	Using index
1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.t1field	1	Using index
DROP TABLE t1, t2, t3;
DROP VIEW v2, v3;
# End of Bug#49198
# 
# Bug#48623 Multiple subqueries are optimized incorrectly
# 
CREATE TABLE ot(val VARCHAR(10));
CREATE TABLE it1(val VARCHAR(10));
CREATE TABLE it2(val VARCHAR(10));
INSERT INTO ot  VALUES('aaa'), ('bbb'), ('eee'), ('mmm'), ('ppp');
INSERT INTO it1 VALUES('aaa'), ('aaa'), ('bbb'), ('eee'), ('mmm'), ('ppp');
INSERT INTO it2 VALUES('aaa'), ('bbb'), ('eee'), ('mmm'), ('ppp');
EXPLAIN
SELECT *
FROM ot
WHERE ot.val IN (SELECT it1.val FROM it1
WHERE  it1.val LIKE 'a%' OR it1.val LIKE 'e%')
AND ot.val IN (SELECT it2.val FROM it2
WHERE  it2.val LIKE 'a%' OR it2.val LIKE 'e%');
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	ot	ALL	NULL	NULL	NULL	NULL	5	Using where
1	SIMPLE	<subquery3>	eq_ref	<auto_key>	<auto_key>	13	test.ot.val	1	NULL
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	13	test.ot.val	1	NULL
3	MATERIALIZED	it2	ALL	NULL	NULL	NULL	NULL	5	Using where
2	MATERIALIZED	it1	ALL	NULL	NULL	NULL	NULL	6	Using where
SELECT *
FROM ot
WHERE ot.val IN (SELECT it1.val FROM it1
WHERE  it1.val LIKE 'a%' OR it1.val LIKE 'e%')
AND ot.val IN (SELECT it2.val FROM it2
WHERE  it2.val LIKE 'a%' OR it2.val LIKE 'e%');
val
aaa
eee
DROP TABLE ot;
DROP TABLE it1;
DROP TABLE it2;
# End of Bug#48623
# 
# Bug #51487 Assertion failure when semi-join flattening occurs
#            for a subquery in HAVING 
# 
CREATE TABLE t1 (a INT, b INT);
INSERT INTO t1 VALUES (1,10),(2,11),(1,13);
CREATE TABLE t2 AS SELECT * FROM t1;
CREATE TABLE t3 AS SELECT * FROM t1;
SELECT COUNT(*) FROM t1
GROUP BY t1.a 
HAVING t1.a IN (SELECT t3.a FROM t3
WHERE t3.b IN (SELECT b FROM t2 WHERE t2.a=t1.a));
COUNT(*)
2
1
DROP TABLE t1, t2, t3;
# End of Bug#51487
# 
# BUG#38075: Wrong result: rows matching a subquery with outer join not returned
# 
DROP TABLE IF EXISTS ot1, it1, it2;
CREATE TABLE it2 (
int_key int(11) NOT NULL,
datetime_key datetime NOT NULL,
KEY int_key (int_key),
KEY datetime_key (datetime_key)
);
INSERT INTO it2 VALUES
(5,'2002-04-10 14:25:30'), (0,'0000-00-00 00:00:00'),
(0,'2006-09-14 04:01:02'), (4,'0000-00-00 00:00:00'),
(8,'0000-00-00 00:00:00'), (5,'0000-00-00 00:00:00'),
(9,'0000-00-00 00:00:00'), (8,'2007-04-01 11:04:17'),
(1,'0000-00-00 00:00:00'), (7,'2009-01-12 00:00:00'),
(0,'2009-06-05 00:00:00'), (3,'2006-02-14 18:06:35'),
(5,'2006-02-21 07:08:16'), (0,'0000-00-00 00:00:00'),
(7,'0000-00-00 00:00:00'), (0,'0000-00-00 00:00:00'),
(0,'2007-02-13 00:00:00'), (1,'0000-00-00 00:00:00'),
(0,'0000-00-00 00:00:00'), (1,'2003-08-11 00:00:00');
CREATE TABLE ot1 (
int_nokey int(11) NOT NULL,
int_key int(11) NOT NULL,
KEY int_key (int_key)
);
INSERT INTO ot1 VALUES
(5,0), (3,0), (0,2), (3,0), (1,3), (0,0), (1,7), (7,0), (1,7), (0,7),
(0,9), (8,2), (4,4), (9,3), (0,9), (2,5), (0,5), (8,0), (5,8), (1,5);
CREATE TABLE it1 (
int_nokey int(11) NOT NULL,
int_key int(11) NOT NULL,
KEY int_key (int_key)
);
INSERT INTO it1 VALUES
(9,5), (0,4);
SELECT int_key FROM ot1
WHERE int_nokey IN (SELECT it2.int_key
FROM it1 LEFT JOIN it2 ON it2.datetime_key);
int_key
0
0
0
0
0
0
2
2
3
5
5
7
7
7
8
9
9
EXPLAIN
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	SIMPLE	it1	index	NULL	int_key	4	NULL	2	Using index; Start temporary
1	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	20	NULL
1	SIMPLE	it2	ref	int_key	int_key	4	test.ot1.int_nokey	2	Using where; End temporary
DROP TABLE ot1, it1, it2;
# End of BUG#38075
# 
# BUG#50089: Second call of procedure with view in subselect crashes server
# 
CREATE TABLE t1(t1field INTEGER, PRIMARY KEY(t1field));
CREATE VIEW v1 AS 
SELECT t1field AS v1field
FROM t1 a
WHERE a.t1field IN (SELECT t1field FROM t1);
INSERT INTO t1 VALUES(1),(2);
SELECT t1field
FROM t1
WHERE t1field IN (SELECT v1field FROM v1);
t1field
1
2
EXPLAIN
SELECT t1field
FROM t1
WHERE t1field IN (SELECT v1field FROM v1);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	index	PRIMARY	PRIMARY	4	NULL	2	Using index
1	SIMPLE	a	eq_ref	PRIMARY	PRIMARY	4	test.t1.t1field	1	Using index
1	SIMPLE	t1	eq_ref	PRIMARY	PRIMARY	4	test.t1.t1field	1	Using index
SELECT t1.t1field
FROM t1 LEFT JOIN t1 AS t2 ON t1.t1field IN (SELECT v1field FROM v1);
t1field
1
1
2
2
EXPLAIN
SELECT t1field
FROM t1
WHERE t1field IN (SELECT v1field FROM v1);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	index	PRIMARY	PRIMARY	4	NULL	2	Using index
1	SIMPLE	a	eq_ref	PRIMARY	PRIMARY	4	test.t1.t1field	1	Using index
1	SIMPLE	t1	eq_ref	PRIMARY	PRIMARY	4	test.t1.t1field	1	Using index
CREATE PROCEDURE p1() 
BEGIN 
SELECT t1field
FROM t1
WHERE t1field IN (SELECT v1field FROM v1);
END|
CALL p1;
t1field
1
2
CALL p1;
t1field
1
2
PREPARE stmt FROM
"
SELECT t1field
FROM t1
WHERE t1field IN (SELECT v1field FROM v1);
";
EXECUTE stmt;
t1field
1
2
EXECUTE stmt;
t1field
1
2
DROP PROCEDURE p1;
DROP VIEW v1;
DROP TABLE t1;
# End of BUG#50089
#
# Bug#45191: Incorrectly initialized semi-join led to a wrong result.
#
CREATE TABLE STAFF (EMPNUM   CHAR(3) NOT NULL,
EMPNAME  CHAR(20), GRADE DECIMAL(4), CITY CHAR(15));
CREATE TABLE PROJ (PNUM CHAR(3) NOT NULL,
PNAME    CHAR(20), PTYPE CHAR(6),
BUDGET   DECIMAL(9),
CITY     CHAR(15));
CREATE TABLE WORKS (EMPNUM CHAR(3) NOT NULL,
PNUM CHAR(3) NOT NULL, HOURS DECIMAL(5));
INSERT INTO STAFF VALUES ('E1','Alice',12,'Deale');
INSERT INTO STAFF VALUES ('E2','Betty',10,'Vienna');
INSERT INTO STAFF VALUES ('E3','Carmen',13,'Vienna');
INSERT INTO STAFF VALUES ('E4','Don',12,'Deale');
INSERT INTO STAFF VALUES ('E5','Ed',13,'Akron');
INSERT INTO PROJ VALUES  ('P1','MXSS','Design',10000,'Deale');
INSERT INTO PROJ VALUES  ('P2','CALM','Code',30000,'Vienna');
INSERT INTO PROJ VALUES  ('P3','SDP','Test',30000,'Tampa');
INSERT INTO PROJ VALUES  ('P4','SDP','Design',20000,'Deale');
INSERT INTO PROJ VALUES  ('P5','IRM','Test',10000,'Vienna');
INSERT INTO PROJ VALUES  ('P6','PAYR','Design',50000,'Deale');
INSERT INTO WORKS VALUES  ('E1','P1',40);
INSERT INTO WORKS VALUES  ('E1','P2',20);
INSERT INTO WORKS VALUES  ('E1','P3',80);
INSERT INTO WORKS VALUES  ('E1','P4',20);
INSERT INTO WORKS VALUES  ('E1','P5',12);
INSERT INTO WORKS VALUES  ('E1','P6',12);
INSERT INTO WORKS VALUES  ('E2','P1',40);
INSERT INTO WORKS VALUES  ('E2','P2',80);
INSERT INTO WORKS VALUES  ('E3','P2',20);
INSERT INTO WORKS VALUES  ('E4','P2',20);
INSERT INTO WORKS VALUES  ('E4','P4',40);
INSERT INTO WORKS VALUES  ('E4','P5',80);
explain SELECT EMPNUM, EMPNAME
FROM STAFF
WHERE EMPNUM IN
(SELECT EMPNUM  FROM WORKS
WHERE PNUM IN
(SELECT PNUM  FROM PROJ));
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	STAFF	ALL	NULL	NULL	NULL	NULL	5	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	3	test.STAFF.EMPNUM	1	NULL
2	MATERIALIZED	PROJ	ALL	NULL	NULL	NULL	NULL	6	NULL
2	MATERIALIZED	WORKS	ALL	NULL	NULL	NULL	NULL	12	Using where
SELECT EMPNUM, EMPNAME
FROM STAFF
WHERE EMPNUM IN
(SELECT EMPNUM  FROM WORKS
WHERE PNUM IN
(SELECT PNUM  FROM PROJ));
EMPNUM	EMPNAME
E1	Alice
E2	Betty
E3	Carmen
E4	Don
drop table STAFF,WORKS,PROJ;
# End of bug#45191
#  
# BUG#36896: Server crash on SELECT FROM DUAL
# 
create table t1 (a int);
select 1 as res from dual where (1) in (select * from t1);
res
drop table t1;

BUG#40118 Crash when running Batched Key Access and requiring one match for each key

create table t0(a int);
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
create table t1 (a int, key(a));
insert into t1 select * from t0;
alter table t1 add b int not null, add filler char(200);
insert into t1 select * from t1;
insert into t1 select * from t1;
select * from t0 where t0.a in (select t1.a from t1 where t1.b=0);
a
0
1
2
3
4
5
6
7
8
9
drop table t0, t1;
# 
# BUG#32665 Query with dependent subquery is too slow
#
create table t1 (
idIndividual int primary key
);
insert into t1 values (1),(2);
create table t2 (
idContact int primary key,
contactType int,
idObj int
);
insert into t2 values (1,1,1),(2,2,2),(3,3,3);
create table t3 (
idAddress int primary key,
idContact int,
postalStripped varchar(100)
);
insert into t3 values (1,1, 'foo'), (2,2,'bar');
The following must be converted to a semi-join:
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'
	);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	0.00	Using where
1	SIMPLE	a	eq_ref	PRIMARY	PRIMARY	4	<subquery2>.idObj	1	100.00	Using index
2	MATERIALIZED	cona	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where
2	MATERIALIZED	c	eq_ref	PRIMARY	PRIMARY	4	test.cona.idContact	1	100.00	NULL
Warnings:
Note	1003	/* select#1 */ 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` = `<subquery2>`.`idObj`) and (`test`.`cona`.`postalStripped` = 'T2H3B2'))
drop table t1,t2,t3;
CREATE TABLE t1 (one int, two int, flag char(1));
CREATE TABLE t2 (one int, two int, flag char(1));
INSERT INTO t1 VALUES(1,2,'Y'),(2,3,'Y'),(3,4,'Y'),(5,6,'N'),(7,8,'N');
INSERT INTO t2 VALUES(1,2,'Y'),(2,3,'Y'),(3,4,'Y'),(5,6,'N'),(7,8,'N');
SELECT * FROM t1
WHERE ROW(one,two) IN (SELECT DISTINCT one,two FROM t2 WHERE flag = 'N');
one	two	flag
5	6	N
7	8	N
SELECT * FROM t1
WHERE ROW(one,two) IN (SELECT DISTINCT one,two FROM t1 WHERE flag = 'N');
one	two	flag
5	6	N
7	8	N
insert into t2 values (null,null,'N');
insert into t2 values (null,3,'0');
insert into t2 values (null,5,'0');
insert into t2 values (10,null,'0');
insert into t1 values (10,3,'0');
insert into t1 values (10,5,'0');
insert into t1 values (10,10,'0');
SELECT one,two,ROW(one,two) IN (SELECT one,two FROM t2 WHERE flag = 'N') as 'test' from t1;
one	two	test
1	2	NULL
2	3	NULL
3	4	NULL
5	6	1
7	8	1
10	3	NULL
10	5	NULL
10	10	NULL
SELECT one,two from t1 where ROW(one,two) IN (SELECT one,two FROM t2 WHERE flag = 'N');
one	two
5	6
7	8
SELECT one,two,ROW(one,two) IN (SELECT one,two FROM t2 WHERE flag = 'N' group by one,two) as 'test' from t1;
one	two	test
1	2	NULL
2	3	NULL
3	4	NULL
5	6	1
7	8	1
10	3	NULL
10	5	NULL
10	10	NULL
SELECT one,two,ROW(one,two) IN (SELECT one,two FROM t2 WHERE flag = '0') as 'test' from t1;
one	two	test
1	2	0
2	3	NULL
3	4	0
5	6	0
7	8	0
10	3	NULL
10	5	NULL
10	10	NULL
SELECT one,two,ROW(one,two) IN (SELECT one,two FROM t2 WHERE flag = '0' group by one,two) as 'test' from t1;
one	two	test
1	2	0
2	3	NULL
3	4	0
5	6	0
7	8	0
10	3	NULL
10	5	NULL
10	10	NULL
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	NULL
2	DEPENDENT SUBQUERY	t2	ALL	NULL	NULL	NULL	NULL	9	100.00	Using where
Warnings:
Note	1003	/* select#1 */ select `test`.`t1`.`one` AS `one`,`test`.`t1`.`two` AS `two`,<in_optimizer>((`test`.`t1`.`one`,`test`.`t1`.`two`),<exists>(/* select#2 */ select 1,1 from `test`.`t2` where ((`test`.`t2`.`flag` = '0') and <if>(outer_field_is_not_null, ((<cache>(`test`.`t1`.`one`) = `test`.`t2`.`one`) or isnull(`test`.`t2`.`one`)), true) and <if>(outer_field_is_not_null, ((<cache>(`test`.`t1`.`two`) = `test`.`t2`.`two`) or isnull(`test`.`t2`.`two`)), true)) having (<if>(outer_field_is_not_null, <is_not_null_test>(`test`.`t2`.`one`), true) and <if>(outer_field_is_not_null, <is_not_null_test>(`test`.`t2`.`two`), true)))) 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	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	8	100.00	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	10	test.t1.one,test.t1.two	1	100.00	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	9	100.00	Using where
Warnings:
Note	1003	/* select#1 */ select `test`.`t1`.`one` AS `one`,`test`.`t1`.`two` AS `two` from `test`.`t1` semi join (`test`.`t2`) where ((`<subquery2>`.`two` = `test`.`t1`.`two`) and (`<subquery2>`.`one` = `test`.`t1`.`one`) and (`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	NULL
2	DEPENDENT SUBQUERY	t2	ALL	NULL	NULL	NULL	NULL	9	100.00	Using where
Warnings:
Note	1003	/* select#1 */ select `test`.`t1`.`one` AS `one`,`test`.`t1`.`two` AS `two`,<in_optimizer>((`test`.`t1`.`one`,`test`.`t1`.`two`),<exists>(/* select#2 */ select 1,1 from `test`.`t2` where ((`test`.`t2`.`flag` = '0') and <if>(outer_field_is_not_null, ((<cache>(`test`.`t1`.`one`) = `test`.`t2`.`one`) or isnull(`test`.`t2`.`one`)), true) and <if>(outer_field_is_not_null, ((<cache>(`test`.`t1`.`two`) = `test`.`t2`.`two`) or isnull(`test`.`t2`.`two`)), true)) having (<if>(outer_field_is_not_null, <is_not_null_test>(`test`.`t2`.`one`), true) and <if>(outer_field_is_not_null, <is_not_null_test>(`test`.`t2`.`two`), true)))) AS `test` from `test`.`t1`
DROP TABLE t1,t2;
CREATE TABLE t1 (a char(5), b char(5));
INSERT INTO t1 VALUES (NULL,'aaa'), ('aaa','aaa');
SELECT * FROM t1 WHERE (a,b) IN (('aaa','aaa'), ('aaa','bbb'));
a	b
aaa	aaa
DROP TABLE t1;
CREATE TABLE t1 (a CHAR(1), b VARCHAR(10));
INSERT INTO t1 VALUES ('a', 'aa');
INSERT INTO t1 VALUES ('a', 'aaa');
SELECT a,b FROM t1 WHERE b IN (SELECT a FROM t1);
a	b
CREATE INDEX I1 ON t1 (a);
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	SIMPLE	t1	ALL	I2	NULL	NULL	NULL	2	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	2	test.t1.b	1	Using where
2	MATERIALIZED	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));
INSERT INTO t2 SELECT * FROM t1;
CREATE INDEX I1 ON t2 (a);
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	SIMPLE	t2	ALL	I2	NULL	NULL	NULL	2	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	4	test.t2.b	1	Using where
2	MATERIALIZED	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	SIMPLE	t1	ALL	I2	NULL	NULL	NULL	2	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	2	test.t1.b	1	Using where
2	MATERIALIZED	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;
#
# BUG#45928 "Differing query results depending on MRR and
# engine_condition_pushdown settings"
#
CREATE TABLE `t1` (
`pk` int(11) NOT NULL AUTO_INCREMENT,
`time_nokey` time NOT NULL,
`varchar_key` varchar(1) NOT NULL,
`varchar_nokey` varchar(1) NOT NULL,
PRIMARY KEY (`pk`),
KEY `varchar_key` (`varchar_key`)
) AUTO_INCREMENT=12 DEFAULT CHARSET=latin1;
INSERT INTO `t1` VALUES (10,'00:00:00','i','i'),(11,'00:00:00','','');
SELECT `time_nokey` G1  FROM t1  WHERE ( `varchar_nokey`  , `varchar_key`  )  IN ( 
SELECT `varchar_nokey`  , `varchar_nokey`  )  AND `varchar_key`  >= 'c' HAVING G1  ORDER 
BY `pk`   ;
G1
DROP TABLE t1;
#
# BUG#45863 "Assertion failed: (fixed == 0), function fix_fields(),
#            file item.cc, line 4448"
#
DROP TABLE IF EXISTS C, BB;
CREATE TABLE C (
varchar_nokey varchar(1) NOT NULL
);
INSERT INTO C VALUES
('k'),('a'),(''),('u'),('e'),('v'),('i'),
('t'),('u'),('f'),('u'),('m'),('j'),('f'),
('v'),('j'),('g'),('e'),('h'),('z');
CREATE TABLE BB (
varchar_nokey varchar(1) NOT NULL
);
INSERT INTO BB VALUES ('i'),('t');
SELECT varchar_nokey FROM C
WHERE (varchar_nokey, OUTR) IN (SELECT varchar_nokey
FROM BB);
ERROR 42S22: Unknown column 'OUTR' in 'IN/ALL/ANY subquery'
SELECT varchar_nokey FROM C
WHERE (varchar_nokey, OUTR) IN (SELECT varchar_nokey, varchar_nokey
FROM BB);
ERROR 42S22: Unknown column 'OUTR' in 'IN/ALL/ANY subquery'
DROP TABLE C,BB;
#
# During work with BUG#45863 I had problems with a query that was
# optimized differently in regular and prepared mode.
# Because there was a bug in one of the selected strategies, I became
# aware of the problem. Adding an EXPLAIN query to catch this.
DROP TABLE IF EXISTS t1, t2, t3;
CREATE TABLE t1
(EMPNUM   CHAR(3) NOT NULL,
EMPNAME  CHAR(20),
GRADE    DECIMAL(4),
CITY     CHAR(15));
CREATE TABLE t2
(PNUM     CHAR(3) NOT NULL,
PNAME    CHAR(20),
PTYPE    CHAR(6),
BUDGET   DECIMAL(9),
CITY     CHAR(15));
CREATE TABLE t3
(EMPNUM   CHAR(3) NOT NULL,
PNUM     CHAR(3) NOT NULL,
HOURS    DECIMAL(5));
INSERT INTO t1 VALUES ('E1','Alice',12,'Deale');
INSERT INTO t1 VALUES ('E2','Betty',10,'Vienna');
INSERT INTO t1 VALUES ('E3','Carmen',13,'Vienna');
INSERT INTO t1 VALUES ('E4','Don',12,'Deale');
INSERT INTO t1 VALUES ('E5','Ed',13,'Akron');
INSERT INTO t2 VALUES ('P1','MXSS','Design',10000,'Deale');
INSERT INTO t2 VALUES ('P2','CALM','Code',30000,'Vienna');
INSERT INTO t2 VALUES ('P3','SDP','Test',30000,'Tampa');
INSERT INTO t2 VALUES ('P4','SDP','Design',20000,'Deale');
INSERT INTO t2 VALUES ('P5','IRM','Test',10000,'Vienna');
INSERT INTO t2 VALUES ('P6','PAYR','Design',50000,'Deale');
INSERT INTO t3 VALUES  ('E1','P1',40);
INSERT INTO t3 VALUES  ('E1','P2',20);
INSERT INTO t3 VALUES  ('E1','P3',80);
INSERT INTO t3 VALUES  ('E1','P4',20);
INSERT INTO t3 VALUES  ('E1','P5',12);
INSERT INTO t3 VALUES  ('E1','P6',12);
INSERT INTO t3 VALUES  ('E2','P1',40);
INSERT INTO t3 VALUES  ('E2','P2',80);
INSERT INTO t3 VALUES  ('E3','P2',20);
INSERT INTO t3 VALUES  ('E4','P2',20);
INSERT INTO t3 VALUES  ('E4','P4',40);
INSERT INTO t3 VALUES  ('E4','P5',80);
CREATE UNIQUE INDEX t1_IDX ON t1(EMPNUM);
EXPLAIN SELECT EMPNAME
FROM t1
WHERE EMPNUM IN
(SELECT EMPNUM
FROM t3
WHERE PNUM IN
(SELECT PNUM
FROM t2
WHERE PTYPE = 'Design'));
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	t1_IDX	NULL	NULL	NULL	5	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	3	test.t1.EMPNUM	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	6	Using where
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	12	Using where
PREPARE stmt FROM "EXPLAIN SELECT EMPNAME
FROM t1
WHERE EMPNUM IN
   (SELECT EMPNUM
    FROM t3
    WHERE PNUM IN
       (SELECT PNUM
        FROM t2
        WHERE PTYPE = 'Design'))";
EXECUTE stmt;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	t1_IDX	NULL	NULL	NULL	5	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	3	test.t1.EMPNUM	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	6	Using where
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	12	Using where
EXECUTE stmt;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	t1_IDX	NULL	NULL	NULL	5	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	3	test.t1.EMPNUM	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	6	Using where
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	12	Using where
DEALLOCATE PREPARE stmt;
DROP INDEX t1_IDX ON t1;
CREATE INDEX t1_IDX ON t1(EMPNUM);
EXPLAIN SELECT EMPNAME
FROM t1
WHERE EMPNUM IN
(SELECT EMPNUM
FROM t3
WHERE PNUM IN
(SELECT PNUM
FROM t2
WHERE PTYPE = 'Design'));
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	t1_IDX	NULL	NULL	NULL	5	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	3	test.t1.EMPNUM	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	6	Using where
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	12	Using where
PREPARE stmt FROM "EXPLAIN SELECT EMPNAME
FROM t1
WHERE EMPNUM IN
   (SELECT EMPNUM
    FROM t3
    WHERE PNUM IN
       (SELECT PNUM
        FROM t2
        WHERE PTYPE = 'Design'))";
EXECUTE stmt;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	t1_IDX	NULL	NULL	NULL	5	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	3	test.t1.EMPNUM	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	6	Using where
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	12	Using where
EXECUTE stmt;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	t1_IDX	NULL	NULL	NULL	5	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	3	test.t1.EMPNUM	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	6	Using where
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	12	Using where
DEALLOCATE PREPARE stmt;
DROP INDEX t1_IDX ON t1;
EXPLAIN SELECT EMPNAME
FROM t1
WHERE EMPNUM IN
(SELECT EMPNUM
FROM t3
WHERE PNUM IN
(SELECT PNUM
FROM t2
WHERE PTYPE = 'Design'));
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	5	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	3	test.t1.EMPNUM	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	6	Using where
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	12	Using where
PREPARE stmt FROM "EXPLAIN SELECT EMPNAME
FROM t1
WHERE EMPNUM IN
   (SELECT EMPNUM
    FROM t3
    WHERE PNUM IN
       (SELECT PNUM
        FROM t2
        WHERE PTYPE = 'Design'))";
EXECUTE stmt;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	5	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	3	test.t1.EMPNUM	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	6	Using where
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	12	Using where
EXECUTE stmt;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	5	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	3	test.t1.EMPNUM	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	6	Using where
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	12	Using where
DEALLOCATE PREPARE stmt;
DROP TABLE t1, t2, t3;
#
# BUG#45221 Query SELECT pk FROM C WHERE pk IN (SELECT int_key) failing
#
CREATE TABLE t1 (
i1_key INT,
i2 INT,
i3 INT,
KEY i1_index (i1_key)
);
INSERT INTO t1 VALUES (9,1,2), (9,2,1);
CREATE TABLE t2 (
pk INT NOT NULL,
i1 INT,
PRIMARY KEY (pk)
);
INSERT INTO t2 VALUES (9,1);
SELECT pk
FROM t2
WHERE 
pk IN ( 
SELECT i1_key
FROM t1
WHERE t1.i2 < t1.i3 XOR t2.i1 > 1
ORDER BY t1.i2 desc);
pk
9
DROP TABLE t1,t2;
# BUG#50361 Doublenested noncorrelated subquery with FirstMatch and join cache wrong result
#
CREATE TABLE t1(
id INTEGER
);
INSERT INTO t1 VALUES(10),(20);
create table t2 select * from t1;
create table t3 select * from t1;
SELECT *
FROM t1
WHERE 1 IN(SELECT 1
FROM t2
WHERE 1 IN(SELECT 1
FROM t3));
id
10
20
explain extended SELECT *
FROM t1
WHERE 1 IN(SELECT 1
FROM t2
WHERE 1 IN(SELECT 1
FROM t3));
id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	100.00	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	4	const	1	100.00	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	2	100.00	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	2	100.00	NULL
Warnings:
Note	1003	/* select#1 */ select `test`.`t1`.`id` AS `id` from `test`.`t1` semi join (`test`.`t3` join `test`.`t2`) where 1
delete from t2;
delete from t3;
INSERT INTO t1 VALUES(30),(40),(50),(60),(70),(80),(90);
insert into t2 select * from t1;
insert into t3 select * from t1;
create table t4 select * from t1;
SELECT *
FROM t1
WHERE 1 IN(SELECT 1
FROM t2
WHERE 1 IN(SELECT 1
FROM t3
WHERE 1 IN(SELECT 1
FROM t4)));
id
10
20
30
40
50
60
70
80
90
explain SELECT *
FROM t1
WHERE 1 IN(SELECT 1
FROM t2
WHERE 1 IN(SELECT 1
FROM t3
WHERE 1 IN(SELECT 1
FROM t4)));
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	9	NULL
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	4	const	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	9	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	9	NULL
2	MATERIALIZED	t4	ALL	NULL	NULL	NULL	NULL	9	NULL
SELECT *
FROM t1
WHERE 1 IN(SELECT 1
FROM t1
WHERE 1 IN(SELECT 1
FROM t1
WHERE 1 IN(SELECT 1
FROM t1)));
id
10
20
30
40
50
60
70
80
90
drop table t1,t2,t3,t4;
#
# Bug#53236 Segfault in DTCollation::set(DTCollation&)
#
CREATE TABLE t1 (
pk INTEGER AUTO_INCREMENT,
col_varchar VARCHAR(1),
PRIMARY KEY (pk)
)
;
INSERT INTO t1 (col_varchar) 
VALUES
('w'),
('m')
;
SELECT  table1.pk
FROM ( t1 AS table1 JOIN t1 AS table2 ON (table1.col_varchar =
table2.col_varchar) ) 
WHERE ( 1, 2 ) IN ( SELECT SUBQUERY1_t1.pk AS SUBQUERY1_field1,
SUBQUERY1_t1.pk AS SUBQUERY1_field2
FROM ( t1 AS SUBQUERY1_t1 JOIN t1 AS SUBQUERY1_t2
ON (SUBQUERY1_t2.col_varchar =
SUBQUERY1_t1.col_varchar) ) ) 
;
pk
drop table t1;
#
# BUG#53298 "wrong result with semijoin (no semijoin strategy chosen)"
#
create table t1 (uid int, fid int);
insert into t1 values (1,1), (3,1);
create table t2 (uid int, name varchar(128));
insert into t2 values (1, "A"), (2, "B");
create table t3 (uid int, fid int, index(uid));
insert into t3 values (1,3), (1,3);
create table t4 (uid int);
insert into t4 values (3);
explain select t2.uid from t2, t1 
where t1.uid in (select t4.uid from t4, t3 where t3.uid=1 and t4.uid=t3.fid)
and t2.uid=t1.fid;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	NULL
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	2	NULL
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where
2	MATERIALIZED	t4	ALL	NULL	NULL	NULL	NULL	1	NULL
2	MATERIALIZED	t3	ref	uid	uid	5	const	1	Using where
select t2.uid from t2, t1 
where t1.uid in (select t4.uid from t4, t3 where t3.uid=1 and t4.uid=t3.fid)
and t2.uid=t1.fid;
uid
1
drop table t1,t2,t3,t4;
CREATE TABLE t1 (
pk int,
a varchar(1),
b varchar(4),
c varchar(4),
d varchar(4),
PRIMARY KEY (pk)
);
INSERT INTO t1 VALUES (1,'o','ffff','ffff','ffoo'),(2,'f','ffff','ffff','ffff');
CREATE TABLE t2 LIKE t1;
INSERT INTO t2 VALUES (1,'i','iiii','iiii','iiii'),(2,'f','ffff','ffff','ffff');
EXPLAIN SELECT pk FROM t1 WHERE (a) IN (SELECT a FROM t2 WHERE pk > 0);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	4	test.t1.a	1	NULL
2	MATERIALIZED	t2	range	PRIMARY	PRIMARY	4	NULL	2	Using where
SELECT pk FROM t1 WHERE (a) IN (SELECT a FROM t2 WHERE pk > 0);
pk
2
SELECT pk FROM t1 WHERE (b,c,d) IN (SELECT b,c,d FROM t2 WHERE pk > 0);
pk
2
DROP TABLE t1, t2;
CREATE TABLE t1 (f1 INT, f2 DECIMAL(5,3)) ENGINE=MyISAM;
INSERT INTO t1 (f1, f2) VALUES (1, 1.789);
INSERT INTO t1 (f1, f2) VALUES (13, 1.454);
INSERT INTO t1 (f1, f2) VALUES (10, 1.668);
CREATE TABLE t2 LIKE t1;
INSERT INTO t2 VALUES (1, 1.789);
INSERT INTO t2 VALUES (13, 1.454);
EXPLAIN SELECT COUNT(*) FROM t1 WHERE (f1,f2) IN (SELECT f1,f2 FROM t2);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	NULL
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	Using where
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	2	NULL
SELECT COUNT(*) FROM t1 WHERE (f1,f2) IN (SELECT f1,f2 FROM t2);
COUNT(*)
2
DROP TABLE t1, t2;
CREATE TABLE t1 (
ID int(11) NOT NULL auto_increment,
Name char(35) NOT NULL default '',
Country char(3) NOT NULL default '',
Population int(11) NOT NULL default '0',
PRIMARY KEY  (ID),
INDEX (Population),
INDEX (Country) 
);
CREATE TABLE t2 (
Code char(3) NOT NULL default '',
Name char(52) NOT NULL default '',
SurfaceArea float(10,2) NOT NULL default '0.00',
Population int(11) NOT NULL default '0',
Capital int(11) default NULL,
PRIMARY KEY  (Code),
UNIQUE INDEX (Name),
INDEX (Population)
);
CREATE TABLE t3 (
Country char(3) NOT NULL default '',
Language char(30) NOT NULL default '',
Percentage float(3,1) NOT NULL default '0.0',
PRIMARY KEY  (Country, Language),
INDEX (Percentage)
);
EXPLAIN SELECT Name FROM t2 
WHERE t2.Code IN (SELECT Country FROM t1 WHERE Population > 5000000)
AND
t2.Code IN (SELECT Country FROM t3 
WHERE Language='English' AND Percentage > 10 AND
t2.Population > 100000);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	NULL
1	SIMPLE	t2	eq_ref	PRIMARY,Population	PRIMARY	3	<subquery2>.Country	1	Using where
1	SIMPLE	t3	eq_ref	PRIMARY,Percentage	PRIMARY	33	<subquery2>.Country,const	1	Using where
2	MATERIALIZED	t1	range	Population,Country	Population	4	NULL	1	Using where
EXPLAIN FORMAT=JSON SELECT Name FROM t2 
WHERE t2.Code IN (SELECT Country FROM t1 WHERE Population > 5000000)
AND
t2.Code IN (SELECT Country FROM t3 
WHERE Language='English' AND Percentage > 10 AND
t2.Population > 100000);
EXPLAIN
{
  "query_block": {
    "select_id": 1,
    "nested_loop": [
      {
        "table": {
          "table_name": "<subquery2>",
          "access_type": "ALL",
          "materialized_from_subquery": {
            "using_temporary_table": true,
            "query_block": {
              "table": {
                "table_name": "t1",
                "access_type": "range",
                "possible_keys": [
                  "Population",
                  "Country"
                ],
                "key": "Population",
                "used_key_parts": [
                  "Population"
                ],
                "key_length": "4",
                "rows": 1,
                "filtered": 100,
                "attached_condition": "(`test`.`t1`.`Population` > 5000000)"
              }
            }
          }
        }
      },
      {
        "table": {
          "table_name": "t2",
          "access_type": "eq_ref",
          "possible_keys": [
            "PRIMARY",
            "Population"
          ],
          "key": "PRIMARY",
          "used_key_parts": [
            "Code"
          ],
          "key_length": "3",
          "ref": [
            "<subquery2>.Country"
          ],
          "rows": 1,
          "filtered": 100,
          "attached_condition": "(`test`.`t2`.`Population` > 100000)"
        }
      },
      {
        "table": {
          "table_name": "t3",
          "access_type": "eq_ref",
          "possible_keys": [
            "PRIMARY",
            "Percentage"
          ],
          "key": "PRIMARY",
          "used_key_parts": [
            "Country",
            "Language"
          ],
          "key_length": "33",
          "ref": [
            "<subquery2>.Country",
            "const"
          ],
          "rows": 1,
          "filtered": 100,
          "attached_condition": "((`test`.`t3`.`Language` = 'English') and (`test`.`t3`.`Percentage` > 10))"
        }
      }
    ]
  }
}
Warnings:
Note	1276	Field or reference 'test.t2.Population' of SELECT #3 was resolved in SELECT #1
Note	1003	/* select#1 */ select `test`.`t2`.`Name` AS `Name` from `test`.`t3` semi join (`test`.`t1`) join `test`.`t2` where ((`test`.`t2`.`Code` = `<subquery2>`.`Country`) and (`test`.`t3`.`Country` = `<subquery2>`.`Country`) and (`test`.`t3`.`Language` = 'English') and (`test`.`t3`.`Percentage` > 10) and (`test`.`t2`.`Population` > 100000) and (`test`.`t1`.`Population` > 5000000))
DROP TABLE t1,t2,t3;
CREATE TABLE t1 (
Code char(3) NOT NULL DEFAULT '',
Name char(52) NOT NULL DEFAULT '',
Continent enum('Asia','Europe','North America','Africa','Oceania','Antarctica','South America') NOT NULL DEFAULT 'Asia',
Region char(26) NOT NULL DEFAULT '',
SurfaceArea float(10,2) NOT NULL DEFAULT '0.00',
IndepYear smallint(6) DEFAULT NULL,
Population int(11) NOT NULL DEFAULT '0',
LifeExpectancy float(3,1) DEFAULT NULL,
GNP float(10,2) DEFAULT NULL,
GNPOld float(10,2) DEFAULT NULL,
LocalName char(45) NOT NULL DEFAULT '',
GovernmentForm char(45) NOT NULL DEFAULT '',
HeadOfState char(60) DEFAULT NULL,
Capital int(11) DEFAULT NULL,
Code2 char(2) NOT NULL DEFAULT '',
PRIMARY KEY (Code)
);
CREATE TABLE t2 (
ID int(11) NOT NULL AUTO_INCREMENT,
Name char(35) NOT NULL DEFAULT '',
CountryCode char(3) NOT NULL DEFAULT '',
District char(20) NOT NULL DEFAULT '',
Population int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (ID),
KEY CountryCode (CountryCode)
);
Fill the table with test data
This must not use LooseScan:
EXPLAIN SELECT Name FROM t1 
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	SIMPLE	t1	ALL	PRIMARY	NULL	NULL	NULL	31	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	3	test.t1.Code	1	NULL
2	MATERIALIZED	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);
Name
Austria
Canada
China
Czech Republic
drop table t1, t2;
create table t0 (a int);
insert into t0 values (0),(1),(2),(3),(4);
create table t1 (a int, b int, key(a));
insert into t1 select a,a from t0;
create table t2 (a int, b int, primary key(a));
insert into t2 select * from t1;
Table t2, unlike table t1, should be displayed as pulled out
explain extended select * from t0
where t0.a in ( select t1.a from t1,t2 where t2.a=t0.a and
t1.b=t2.b);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	SIMPLE	t0	ALL	NULL	NULL	NULL	NULL	5	100.00	Using where; Start temporary
1	SIMPLE	t1	ref	a	a	5	test.t0.a	1	100.00	NULL
1	SIMPLE	t2	eq_ref	PRIMARY	PRIMARY	4	test.t0.a	1	100.00	Using where; End temporary
Warnings:
Note	1276	Field or reference 'test.t0.a' of SELECT #2 was resolved in SELECT #1
Note	1003	/* select#1 */ select `test`.`t0`.`a` AS `a` from `test`.`t2` semi join (`test`.`t1`) join `test`.`t0` where ((`test`.`t2`.`b` = `test`.`t1`.`b`) and (`test`.`t1`.`a` = `test`.`t0`.`a`) and (`test`.`t2`.`a` = `test`.`t0`.`a`))
update t1 set a=3, b=11 where a=4;
update t2 set b=11 where a=3;
create temporary table tmp select * from t0 where t0.a in 
(select t1.a from t1, t2 where t2.a=t0.a and t1.b=t2.b);
create temporary table tmp_as_ref (a int);
insert into tmp_as_ref values(0),(1),(2),(3);
select * from tmp;
a
0
1
2
3
drop table t0, t1, t2, tmp, tmp_as_ref;
CREATE TABLE t1 (
id int(11) NOT NULL,
PRIMARY KEY (id));
CREATE TABLE t2 (
id int(11) NOT NULL,
fid int(11) NOT NULL,
PRIMARY KEY (id));
insert into t1 values(1);
insert into t2 values(1,7503),(2,1);
explain select count(*) 
from t1 
where fid IN (select fid from t2 where (id between 7502 and 8420) order by fid );
ERROR 42S22: Unknown column 'fid' in 'IN/ALL/ANY subquery'
drop table t1, t2;
create table t1 (a int, b int, key (a), key (b));
insert into t1 values (2,4),(2,4),(2,4);
select t1.a from t1 
where 
t1.a in (select 1 from t1 where t1.a in (select 1 from t1) group by  t1.a);
a
drop table t1;
create table t1(a int,b int,key(a),key(b));
insert into t1 values (1,1),(2,2),(3,3);
select 1 from t1 
where t1.a not in (select 1 from t1 
where t1.a in (select 1 from t1) 
group by  t1.b);
1
1
1
drop table t1;
CREATE TABLE t1
(EMPNUM   CHAR(3) NOT NULL,
EMPNAME  CHAR(20),
GRADE    DECIMAL(4),
CITY     CHAR(15));
CREATE TABLE t2
(PNUM     CHAR(3) NOT NULL,
PNAME    CHAR(20),
PTYPE    CHAR(6),
BUDGET   DECIMAL(9),
CITY     CHAR(15));
CREATE TABLE t3
(EMPNUM   CHAR(3) NOT NULL,
PNUM     CHAR(3) NOT NULL,
HOURS    DECIMAL(5));
INSERT INTO t1 VALUES ('E1','Alice',12,'Deale');
INSERT INTO t1 VALUES ('E2','Betty',10,'Vienna');
INSERT INTO t1 VALUES ('E3','Carmen',13,'Vienna');
INSERT INTO t1 VALUES ('E4','Don',12,'Deale');
INSERT INTO t1 VALUES ('E5','Ed',13,'Akron');
INSERT INTO t2 VALUES ('P1','MXSS','Design',10000,'Deale');
INSERT INTO t2 VALUES ('P2','CALM','Code',30000,'Vienna');
INSERT INTO t2 VALUES ('P3','SDP','Test',30000,'Tampa');
INSERT INTO t2 VALUES ('P4','SDP','Design',20000,'Deale');
INSERT INTO t2 VALUES ('P5','IRM','Test',10000,'Vienna');
INSERT INTO t2 VALUES ('P6','PAYR','Design',50000,'Deale');
INSERT INTO t3 VALUES  ('E1','P1',40);
INSERT INTO t3 VALUES  ('E1','P2',20);
INSERT INTO t3 VALUES  ('E1','P3',80);
INSERT INTO t3 VALUES  ('E1','P4',20);
INSERT INTO t3 VALUES  ('E1','P5',12);
INSERT INTO t3 VALUES  ('E1','P6',12);
INSERT INTO t3 VALUES  ('E2','P1',40);
INSERT INTO t3 VALUES  ('E2','P2',80);
INSERT INTO t3 VALUES  ('E3','P2',20);
INSERT INTO t3 VALUES  ('E4','P2',20);
INSERT INTO t3 VALUES  ('E4','P4',40);
INSERT INTO t3 VALUES  ('E4','P5',80);
SELECT * FROM t1;
EMPNUM	EMPNAME	GRADE	CITY
E1	Alice	12	Deale
E2	Betty	10	Vienna
E3	Carmen	13	Vienna
E4	Don	12	Deale
E5	Ed	13	Akron
CREATE UNIQUE INDEX t1_IDX ON t1(EMPNUM);
SELECT EMPNAME
FROM t1
WHERE EMPNUM IN
(SELECT EMPNUM
FROM t3
WHERE PNUM IN
(SELECT PNUM
FROM t2
WHERE PTYPE = 'Design'));
EMPNAME
Alice
Betty
Don
DROP INDEX t1_IDX ON t1;
CREATE INDEX t1_IDX ON t1(EMPNUM);
SELECT EMPNAME
FROM t1
WHERE EMPNUM IN
(SELECT EMPNUM
FROM t3
WHERE PNUM IN
(SELECT PNUM
FROM t2
WHERE PTYPE = 'Design'));
EMPNAME
Alice
Betty
Don
DROP INDEX t1_IDX ON t1;
SELECT EMPNAME
FROM t1
WHERE EMPNUM IN
(SELECT EMPNUM
FROM t3
WHERE PNUM IN
(SELECT PNUM
FROM t2
WHERE PTYPE = 'Design'));
EMPNAME
Alice
Betty
Don
DROP TABLE t1, t2, t3;
CREATE TABLE t1 (f1 INT NOT NULL);
CREATE VIEW v1 (a) AS SELECT f1 IN (SELECT f1 FROM t1) FROM t1;
SELECT * FROM v1;
a
drop view v1;
drop table t1;
create table t0 (a int);
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
create table t1(a int, b int);
insert into t1 values (0,0),(1,1),(2,2);
create table t2 as select * from t1;
create table t3 (pk int, a int, primary key(pk));
insert into t3 select a,a from t0;
explain 
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	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	NULL
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	Using where
1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t2.a	1	Using index
drop table t0, t1, t2, t3;
create table t0 (a int);
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
create table t1 (a int) as select A.a + 10 *(B.a + 10*C.a) as a  from t0 A, t0 B, t0 C;
create table t2 (id int, a int, primary key(id), key(a)) as select a as id, a as a  from t1;
show create table t2;
Table	Create Table
t2	CREATE TABLE `t2` (
  `id` int(11) NOT NULL DEFAULT '0',
  `a` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `a` (`a`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
set @a=0;
create table t3 as select * from t2 limit 0;
insert into t3 select @a:=@a+1, t2.a from t2, t0;
insert into t3 select @a:=@a+1, t2.a from t2, t0;
insert into t3 select @a:=@a+1, t2.a from t2, t0;
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	SIMPLE	t2	index	a	a	5	NULL	1000	Using where; Using index
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	5	test.t2.a	1	NULL
2	MATERIALIZED	t3	index	a	a	5	NULL	30000	Using index
select count(a) from t2 where a in ( SELECT  a FROM t3);
count(a)
1000
drop table t0,t1,t2,t3;
#
# Bug#33062: subquery in stored routine cause crash
#
CREATE TABLE t1(a INT);
CREATE TABLE t2(c INT);
CREATE PROCEDURE p1(v1 int)
BEGIN
SELECT 1 FROM t1 WHERE a = v1 AND a IN (SELECT c FROM t2);
END
//
CREATE PROCEDURE p2(v1 int)
BEGIN
SELECT 1 FROM t1 WHERE a IN (SELECT c FROM t2);
END
//
CREATE PROCEDURE p3(v1 int)
BEGIN
SELECT 1 
FROM 
t1 t01,t1 t02,t1 t03,t1 t04,t1 t05,t1 t06,t1 t07,t1 t08,
t1 t09,t1 t10,t1 t11,t1 t12,t1 t13,t1 t14,t1 t15,t1 t16,
t1 t17,t1 t18,t1 t19,t1 t20,t1 t21,t1 t22,t1 t23,t1 t24,
t1 t25,t1 t26,t1 t27,t1 t28,t1 t29,t1 t30,t1 t31,t1 t32,
t1 t33,t1 t34,t1 t35,t1 t36,t1 t37,t1 t38,t1 t39,t1 t40,
t1 t41,t1 t42,t1 t43,t1 t44,t1 t45,t1 t46,t1 t47,t1 t48,
t1 t49,t1 t50,t1 t51,t1 t52,t1 t53,t1 t54,t1 t55,t1 t56,
t1 t57,t1 t58,t1 t59,t1 t60
WHERE t01.a IN (SELECT c FROM t2);
END
//
CREATE PROCEDURE p4(v1 int)
BEGIN
SELECT 1 
FROM 
t1 t01,t1 t02,t1 t03,t1 t04,t1 t05,t1 t06,t1 t07,t1 t08,
t1 t09,t1 t10,t1 t11,t1 t12,t1 t13,t1 t14,t1 t15,t1 t16,
t1 t17,t1 t18,t1 t19,t1 t20,t1 t21,t1 t22,t1 t23,t1 t24,
t1 t25,t1 t26,t1 t27,t1 t28,t1 t29,t1 t30,t1 t31,t1 t32,
t1 t33,t1 t34,t1 t35,t1 t36,t1 t37,t1 t38,t1 t39,t1 t40,
t1 t41,t1 t42,t1 t43,t1 t44,t1 t45,t1 t46,t1 t47,t1 t48,
t1 t49,t1 t50,t1 t51,t1 t52,t1 t53,t1 t54,t1 t55,t1 t56,
t1 t57,t1 t58,t1 t59,t1 t60
WHERE t01.a = v1 AND t01.a IN (SELECT c FROM t2);
END
//
CALL p1(1);
1
CALL p2(1);
1
CALL p3(1);
1
CALL p4(1);
1
DROP TABLE t1, t2;
DROP PROCEDURE p1;
DROP PROCEDURE p2;
DROP PROCEDURE p3;
DROP PROCEDURE p4;
# 
# Bug#48213 Materialized subselect crashes if using GEOMETRY type
# 
CREATE TABLE t1 (
pk int,
a varchar(1),
b varchar(4),
c tinyblob,
d blob,
e mediumblob,
f longblob,
g tinytext,
h text,
i mediumtext,
j longtext,
k geometry,
PRIMARY KEY (pk)
);
INSERT INTO t1 VALUES (1,'o','ffff','ffff','ffoo','ffff','ffff','ffff','ffff','ffff','ffff',GeomFromText('POLYGON((0 0, 0 2, 2 2, 2 0, 0 0))')), (2,'f','ffff','ffff','ffff', 'ffff','ffff','ffff','ffff','ffff','ffff',GeomFromText('POLYGON((0 0, 0 2, 2 2, 2 0, 0 0))'));
CREATE TABLE t2 LIKE t1;
INSERT INTO t2 VALUES (1,'i','iiii','iiii','iiii','iiii','ffff','ffff','ffff','ffff','ffff',GeomFromText('POLYGON((0 0, 0 2, 2 2, 2 0, 0 0))')), (2,'f','ffff','ffff','ffff','ffff','ffff','ffff','ffff','ffff','ffff',GeomFromText('POLYGON((0 0, 0 2, 2 2, 2 0, 0 0))'));
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	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	11	test.t1.a,test.t1.b	1	100.00	NULL
2	MATERIALIZED	t2	range	PRIMARY	PRIMARY	4	NULL	2	100.00	Using where
Warnings:
Note	1003	/* select#1 */ select `test`.`t1`.`pk` AS `pk` from `test`.`t1` semi join (`test`.`t2`) where ((`<subquery2>`.`b` = `test`.`t1`.`b`) and (`<subquery2>`.`a` = `test`.`t1`.`a`) and (`test`.`t2`.`pk` > 0))
SELECT pk FROM t1 WHERE (a, b) IN (SELECT a, b FROM t2 WHERE pk > 0);
pk
2
EXPLAIN EXTENDED SELECT pk FROM t1 WHERE (b, c) IN (SELECT b, c FROM t2 WHERE pk > 0);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	100.00	NULL
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	0.00	Using where
2	MATERIALIZED	t2	range	PRIMARY	PRIMARY	4	NULL	2	100.00	Using where
Warnings:
Note	1003	/* select#1 */ select `test`.`t1`.`pk` AS `pk` from `test`.`t1` semi join (`test`.`t2`) where ((`<subquery2>`.`c` = `test`.`t1`.`c`) and (`<subquery2>`.`b` = `test`.`t1`.`b`) and (`test`.`t2`.`pk` > 0))
SELECT pk FROM t1 WHERE (b, c) IN (SELECT b, c FROM t2 WHERE pk > 0);
pk
1
2
EXPLAIN EXTENDED SELECT pk FROM t1 WHERE (b, d) IN (SELECT b, d FROM t2 WHERE pk > 0);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	100.00	NULL
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	0.00	Using where
2	MATERIALIZED	t2	range	PRIMARY	PRIMARY	4	NULL	2	100.00	Using where
Warnings:
Note	1003	/* select#1 */ select `test`.`t1`.`pk` AS `pk` from `test`.`t1` semi join (`test`.`t2`) where ((`<subquery2>`.`d` = `test`.`t1`.`d`) and (`<subquery2>`.`b` = `test`.`t1`.`b`) and (`test`.`t2`.`pk` > 0))
SELECT pk FROM t1 WHERE (b, d) IN (SELECT b, d FROM t2 WHERE pk > 0);
pk
2
EXPLAIN EXTENDED SELECT pk FROM t1 WHERE (b, e) IN (SELECT b, e FROM t2 WHERE pk > 0);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	100.00	NULL
1	SIMPLE	t2	range	PRIMARY	PRIMARY	4	NULL	2	100.00	Using where; Start temporary; End temporary
Warnings:
Note	1003	/* select#1 */ select `test`.`t1`.`pk` AS `pk` from `test`.`t1` semi join (`test`.`t2`) where ((`test`.`t2`.`e` = `test`.`t1`.`e`) and (`test`.`t2`.`b` = `test`.`t1`.`b`) and (`test`.`t2`.`pk` > 0))
SELECT pk FROM t1 WHERE (b, e) IN (SELECT b, e FROM t2 WHERE pk > 0);
pk
1
2
EXPLAIN EXTENDED SELECT pk FROM t1 WHERE (b, f) IN (SELECT b, f FROM t2 WHERE pk > 0);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	100.00	NULL
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	0.00	Using where
2	MATERIALIZED	t2	range	PRIMARY	PRIMARY	4	NULL	2	100.00	Using where
Warnings:
Note	1003	/* select#1 */ select `test`.`t1`.`pk` AS `pk` from `test`.`t1` semi join (`test`.`t2`) where ((`<subquery2>`.`f` = `test`.`t1`.`f`) and (`<subquery2>`.`b` = `test`.`t1`.`b`) and (`test`.`t2`.`pk` > 0))
SELECT pk FROM t1 WHERE (b, f) IN (SELECT b, f FROM t2 WHERE pk > 0);
pk
1
2
EXPLAIN EXTENDED SELECT pk FROM t1 WHERE (b, g) IN (SELECT b, g FROM t2 WHERE pk > 0);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	100.00	NULL
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	0.00	Using where
2	MATERIALIZED	t2	range	PRIMARY	PRIMARY	4	NULL	2	100.00	Using where
Warnings:
Note	1003	/* select#1 */ select `test`.`t1`.`pk` AS `pk` from `test`.`t1` semi join (`test`.`t2`) where ((`<subquery2>`.`g` = `test`.`t1`.`g`) and (`<subquery2>`.`b` = `test`.`t1`.`b`) and (`test`.`t2`.`pk` > 0))
SELECT pk FROM t1 WHERE (b, g) IN (SELECT b, g FROM t2 WHERE pk > 0);
pk
1
2
EXPLAIN EXTENDED SELECT pk FROM t1 WHERE (b, h) IN (SELECT b, h FROM t2 WHERE pk > 0);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	100.00	NULL
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	0.00	Using where
2	MATERIALIZED	t2	range	PRIMARY	PRIMARY	4	NULL	2	100.00	Using where
Warnings:
Note	1003	/* select#1 */ select `test`.`t1`.`pk` AS `pk` from `test`.`t1` semi join (`test`.`t2`) where ((`<subquery2>`.`h` = `test`.`t1`.`h`) and (`<subquery2>`.`b` = `test`.`t1`.`b`) and (`test`.`t2`.`pk` > 0))
SELECT pk FROM t1 WHERE (b, h) IN (SELECT b, h FROM t2 WHERE pk > 0);
pk
1
2
EXPLAIN EXTENDED SELECT pk FROM t1 WHERE (b, i) IN (SELECT b, i FROM t2 WHERE pk > 0);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	100.00	NULL
1	SIMPLE	t2	range	PRIMARY	PRIMARY	4	NULL	2	100.00	Using where; Start temporary; End temporary
Warnings:
Note	1003	/* select#1 */ select `test`.`t1`.`pk` AS `pk` from `test`.`t1` semi join (`test`.`t2`) where ((`test`.`t2`.`i` = `test`.`t1`.`i`) and (`test`.`t2`.`b` = `test`.`t1`.`b`) and (`test`.`t2`.`pk` > 0))
SELECT pk FROM t1 WHERE (b, i) IN (SELECT b, i FROM t2 WHERE pk > 0);
pk
1
2
EXPLAIN EXTENDED SELECT pk FROM t1 WHERE (b, j) IN (SELECT b, j FROM t2 WHERE pk > 0);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	100.00	NULL
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	0.00	Using where
2	MATERIALIZED	t2	range	PRIMARY	PRIMARY	4	NULL	2	100.00	Using where
Warnings:
Note	1003	/* select#1 */ select `test`.`t1`.`pk` AS `pk` from `test`.`t1` semi join (`test`.`t2`) where ((`<subquery2>`.`j` = `test`.`t1`.`j`) and (`<subquery2>`.`b` = `test`.`t1`.`b`) and (`test`.`t2`.`pk` > 0))
SELECT pk FROM t1 WHERE (b, j) IN (SELECT b, j FROM t2 WHERE pk > 0);
pk
1
2
EXPLAIN EXTENDED SELECT pk FROM t1 WHERE (b, k) IN (SELECT b, k FROM t2 WHERE pk > 0);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	100.00	NULL
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	0.00	Using where
2	MATERIALIZED	t2	range	PRIMARY	PRIMARY	4	NULL	2	100.00	Using where
Warnings:
Note	1003	/* select#1 */ select `test`.`t1`.`pk` AS `pk` from `test`.`t1` semi join (`test`.`t2`) where ((`<subquery2>`.`k` = `test`.`t1`.`k`) and (`<subquery2>`.`b` = `test`.`t1`.`b`) and (`test`.`t2`.`pk` > 0))
SELECT pk FROM t1 WHERE (b, k) IN (SELECT b, k FROM t2 WHERE pk > 0);
pk
1
2
DROP TABLE t1, t2;
# End of Bug#48213
# 
# BUG#53060: LooseScan semijoin strategy does not return all rows
# 
CREATE TABLE t1 (i INTEGER);
INSERT INTO t1 VALUES (1), (2), (3), (4), (5);
CREATE TABLE t2 (i INTEGER, j INTEGER, KEY k(i, j));
INSERT INTO t2 VALUES (1, 0), (1, 1), (2, 0), (2, 1);
EXPLAIN
SELECT * FROM t1 WHERE (i) IN (SELECT i FROM t2 where j > 0);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	5	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	5	test.t1.i	1	NULL
2	MATERIALIZED	t2	index	k	k	10	NULL	4	Using where; Using index
SELECT * FROM t1 WHERE (i) IN (SELECT i FROM t2 where j > 0);
i
1
2
DROP TABLE t1, t2;
# End of BUG#53060
#
# Bug#53305 "Duplicate weedout + join buffer (join cache --level=7,8) loses rows"
#
create table t1 (uid int, fid int, index(uid));
insert into t1 values
(1,1), (1,2), (1,3), (1,4),
(2,5), (2,6), (2,7), (2,8),
(3,1), (3,2), (3,9);
create table t2 (uid int primary key, name varchar(128), index(name));
insert into t2 values 
(1, "A"), (2, "B"), (3, "C"), (4, "D"), (5, "E"),
(6, "F"), (7, "G"), (8, "H"), (9, "I");
create table t3 (uid int, fid int, index(uid));
insert into t3 values
(1,1), (1,2), (1,3),(1,4),
(2,5), (2,6), (2,7), (2,8),
(3,1), (3,2), (3,9);
create table t4 (uid int primary key, name varchar(128), index(name));
insert into t4 values 
(1, "A"), (2, "B"), (3, "C"), (4, "D"), (5, "E"),
(6, "F"), (7, "G"), (8, "H"), (9, "I");
explain select name from t2, t1 
where t1.uid in (select t4.uid from t4, t3 where t3.uid=1 and t4.uid=t3.fid)
and t2.uid=t1.fid;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t3	ref	uid	uid	5	const	4	Using where; Start temporary
1	SIMPLE	t4	eq_ref	PRIMARY	PRIMARY	4	test.t3.fid	1	Using index
1	SIMPLE	t1	ref	uid	uid	5	test.t3.fid	2	Using where
1	SIMPLE	t2	eq_ref	PRIMARY	PRIMARY	4	test.t1.fid	1	End temporary
select name from t2, t1 
where t1.uid in (select t4.uid from t4, t3 where t3.uid=1 and t4.uid=t3.fid)
and t2.uid=t1.fid;
name
A
A
B
B
C
D
E
F
G
H
I
drop table t1,t2,t3,t4;
#
# Bug#43768 Prepared query with nested subqueries core dump on second execution
#
CREATE TABLE t1 (
id INT PRIMARY KEY,
partner_id VARCHAR(35)
);
INSERT INTO t1 VALUES
(1, 'partner1'), (2, 'partner2'),
(3, 'partner3'), (4, 'partner4');
CREATE TABLE t2 (
id INT NOT NULL,
t1_line_id INT,
article_id VARCHAR(20),
PRIMARY KEY(id, t1_line_id)
);
INSERT INTO t2 VALUES
(1, 1, 'sup'), (2, 1, 'sup'),
(2, 2, 'sup'), (2, 3, 'sup'),
(2, 4, 'imp'), (3, 1, 'sup'),
(4, 1, 'sup');
CREATE TABLE t3 (
user_id VARCHAR(50),
article_id VARCHAR(20) NOT NULL,
PRIMARY KEY(user_id)
);
INSERT INTO t3 VALUES('nicke', 'imp');
EXPLAIN
SELECT t1.partner_id
FROM t1
WHERE t1.id IN (
SELECT t2.id
FROM t2
WHERE article_id IN (
SELECT article_id FROM t3
WHERE user_id = 'nicke'
    )
);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t3	system	PRIMARY	NULL	NULL	NULL	1	NULL
1	SIMPLE	t1	ALL	PRIMARY	NULL	NULL	NULL	4	Start temporary
1	SIMPLE	t2	ref	PRIMARY	PRIMARY	4	test.t1.id	1	Using where; End temporary
SELECT t1.partner_id
FROM t1
WHERE t1.id IN (
SELECT t2.id
FROM t2
WHERE article_id IN (
SELECT article_id FROM t3
WHERE user_id = 'nicke'
    )
);
partner_id
partner2
PREPARE stmt FROM
'EXPLAIN SELECT t1.partner_id
FROM t1
WHERE t1.id IN (
    SELECT t2.id
    FROM t2
    WHERE article_id IN (
      SELECT article_id FROM t3
      WHERE user_id = \'nicke\'
    )
  )';
EXECUTE stmt;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t3	system	PRIMARY	NULL	NULL	NULL	1	NULL
1	SIMPLE	t1	ALL	PRIMARY	NULL	NULL	NULL	4	Start temporary
1	SIMPLE	t2	ref	PRIMARY	PRIMARY	4	test.t1.id	1	Using where; End temporary
EXECUTE stmt;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t3	system	PRIMARY	NULL	NULL	NULL	1	NULL
1	SIMPLE	t1	ALL	PRIMARY	NULL	NULL	NULL	4	Start temporary
1	SIMPLE	t2	ref	PRIMARY	PRIMARY	4	test.t1.id	1	Using where; End temporary
PREPARE stmt FROM
'SELECT t1.partner_id
FROM t1
WHERE t1.id IN (
    SELECT t2.id
    FROM t2
    WHERE article_id IN (
      SELECT article_id FROM t3
      WHERE user_id = \'nicke\'
    )
  )';
EXECUTE stmt;
partner_id
partner2
EXECUTE stmt;
partner_id
partner2
DROP TABLE t1,t2,t3;
# End of Bug#43768
#
# Bug#53058 - semijoin execution of subquery with outerjoin yields wrong result
#
CREATE TABLE t1 (i INTEGER);
CREATE TABLE t2 (i INTEGER);
CREATE TABLE t3 (i INTEGER);
INSERT INTO t1 VALUES (1), (2);
INSERT INTO t2 VALUES (6);
INSERT INTO t3 VALUES (1), (2);
explain extended SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t3 LEFT JOIN t2 ON t2.i=t3.i);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	0.00	NULL
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	2	100.00	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	1	100.00	Using where
Warnings:
Note	1003	/* select#1 */ select `test`.`t1`.`i` AS `i` from `test`.`t1` semi join (`test`.`t3` left join `test`.`t2` on((`test`.`t2`.`i` = `test`.`t3`.`i`))) where (`test`.`t1`.`i` = `<subquery2>`.`i`)
SELECT * FROM t1 WHERE (t1.i) IN 
(SELECT t3.i FROM t3 LEFT JOIN t2 ON t2.i=t3.i);
i
1
2
drop table t1,t2,t3;
#
# BUG#49453: re-execution of prepared statement with view 
#            and semijoin crashes
#
CREATE TABLE t1 (city VARCHAR(50), country_id INT);
CREATE TABLE t2 (country_id INT, country VARCHAR(50));
INSERT INTO t1 VALUES 
('Batna',2),('Bchar',2),('Skikda',2),('Tafuna',3),('Algeria',2) ;
INSERT INTO t2 VALUES (2,'Algeria'),(2,'AlgeriaDup'),(3,'XAmerican Samoa');
CREATE VIEW v1 AS 
SELECT country_id as vf_country_id
FROM t2
WHERE LEFT(country,1) = "A";
PREPARE stmt FROM "
SELECT city, country_id
FROM t1
WHERE country_id IN (SELECT vf_country_id FROM v1);
";

EXECUTE stmt;
city	country_id
Batna	2
Bchar	2
Skikda	2
Algeria	2
EXECUTE stmt;
city	country_id
Batna	2
Bchar	2
Skikda	2
Algeria	2
DROP TABLE t1,t2;
DROP VIEW v1;
#
# Bug#54437 Extra rows with LEFT JOIN + semijoin (firstmatch
# and duplicates weedout)
#
create table t1 (a int);
create table t2 (a int);
create table t3 (a int);
insert into t1 values(1),(1);
insert into t2 values(1),(1),(1),(1);
insert into t3 values(2),(2);
explain select * from t1 where t1.a in (select t2.a from t2 left join t3 on t2.a=t3.a);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	5	test.t1.a	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	4	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	2	Using where
select * from t1 where t1.a in (select t2.a from t2 left join t3 on t2.a=t3.a);
a
1
1
drop table t1,t2,t3;
#
# Bug#55955: crash in MEMORY engine with IN(LEFT JOIN (JOIN))
#
CREATE TABLE t1 (a INT);
CREATE TABLE t2 (a INT);
CREATE TABLE t3 (a INT);
INSERT INTO t1 VALUES(1),(1);
INSERT INTO t2 VALUES(1),(1);
INSERT INTO t3 VALUES(2),(2);
explain SELECT * FROM t1
WHERE t1.a IN (SELECT t2.a
FROM t2 LEFT JOIN (t2 AS t2inner, t3) ON t2.a=t3.a);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	5	test.t1.a	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	2	NULL
2	MATERIALIZED	t2inner	ALL	NULL	NULL	NULL	NULL	2	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	2	Using where
SELECT * FROM t1
WHERE t1.a IN (SELECT t2.a
FROM t2 LEFT JOIN (t2 AS t2inner, t3) ON t2.a=t3.a);
a
1
1
DROP TABLE t1,t2,t3;
#
# BUG#52329 - Wrong result: subquery materialization, IN, 
#             non-null field followed by nullable
#
CREATE TABLE t1 (a1 CHAR(8) NOT NULL, a2 char(8) NOT NULL);
CREATE TABLE t2a (b1 char(8), b2 char(8));
CREATE TABLE t2b (b1 CHAR(8), b2 char(8) NOT NULL);
CREATE TABLE t2c (b1 CHAR(8) NOT NULL, b2 char(8));
INSERT INTO t1 VALUES ('1 - 12', '2 - 22');
INSERT INTO t2a VALUES ('1 - 11', '2 - 21'),
('1 - 11', '2 - 21'),
('1 - 12', '2 - 22'),
('1 - 12', '2 - 22'),
('1 - 13', '2 - 23');
INSERT INTO t2b SELECT * FROM t2a;
INSERT INTO t2c SELECT * FROM t2a;
SELECT * FROM t1
WHERE (a1, a2) IN (
SELECT b1, b2 FROM t2c WHERE b1 > '0' GROUP BY b1, b2);
a1	a2
1 - 12	2 - 22
SELECT * FROM t1
WHERE (a1, a2) IN (
SELECT b1, b2 FROM t2a WHERE b1 > '0');
a1	a2
1 - 12	2 - 22
SELECT * FROM t1
WHERE (a1, a2) IN (
SELECT b1, b2 FROM t2b WHERE b1 > '0');
a1	a2
1 - 12	2 - 22
SELECT * FROM t1
WHERE (a1, a2) IN (
SELECT b1, b2 FROM t2c WHERE b1 > '0');
a1	a2
1 - 12	2 - 22
DROP TABLE t1,t2a,t2b,t2c;
# End BUG#52329
#
# Bug#45174: Incorrectly applied equality propagation caused wrong
# result on a query with a materialized semi-join.
#
CREATE TABLE t1 (
varchar_nokey varchar(1) NOT NULL
);
INSERT INTO t1 VALUES
('v'), ('u'), ('n'), ('l'), ('h'), ('u'), ('n'), ('j'), ('k'),
('e'), ('i'), ('u'), ('n'), ('b'), ('x'), (''), ('q'), ('u');
CREATE TABLE t2 (
pk int NOT NULL,
varchar_key varchar(1) NOT NULL,
varchar_nokey varchar(1) NOT NULL,
PRIMARY KEY(pk),
KEY varchar_key(varchar_key)
);
INSERT INTO t2 VALUES
(11,'m','m'), (12,'j','j'), (13,'z','z'), (14,'a','a'), (15,'',''),
(16,'e','e'), (17,'t','t'), (19,'b','b'), (20,'w','w'), (21,'m','m'),
(23,'',''), (24,'w','w'), (26,'e','e'), (27,'e','e'), (28,'p','p');
SELECT varchar_nokey
FROM t1
WHERE (varchar_nokey, varchar_nokey) IN (SELECT varchar_key, varchar_nokey
FROM t2  
WHERE varchar_nokey < 'n' XOR pk);
varchar_nokey
explain SELECT varchar_nokey
FROM t1
WHERE (varchar_nokey, varchar_nokey) IN (SELECT varchar_key, varchar_nokey
FROM t2  
WHERE varchar_nokey < 'n' XOR pk);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	18	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	6	test.t1.varchar_nokey,test.t1.varchar_nokey	1	NULL
2	MATERIALIZED	t2	ALL	varchar_key	NULL	NULL	NULL	15	Using where
DROP TABLE t1, t2;
# End of the test for bug#45174.
#
# Bug#50019: Wrong result for IN-query with materialization
#
CREATE TABLE t1(i INT);
INSERT INTO t1 VALUES (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
CREATE TABLE t2(i INT);
INSERT INTO t2 VALUES (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
CREATE TABLE t3(i INT);
INSERT INTO t3 VALUES (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
SELECT * FROM t1 WHERE t1.i IN (SELECT t2.i
FROM t2 JOIN t3
WHERE t2.i + t3.i = 5);
i
1
2
3
4
explain SELECT * FROM t1 WHERE t1.i IN (SELECT t2.i
FROM t2 JOIN t3
WHERE t2.i + t3.i = 5);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	10	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	5	test.t1.i	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	10	NULL
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	10	Using where
DROP TABLE t1,t2,t3;
# End of the test for bug#50019.
#
# Bug#52068: Optimizer generates invalid semijoin materialization plan
#
CREATE TABLE ot1(a INTEGER);
INSERT INTO ot1 VALUES(5), (8);
CREATE TABLE it2(a INTEGER);
INSERT INTO it2 VALUES(9), (5), (1), (8);
CREATE TABLE it3(a INTEGER);
INSERT INTO it3 VALUES(7), (1), (0), (5), (1), (4);
CREATE TABLE ot4(a INTEGER);
INSERT INTO ot4 VALUES(1), (3), (5), (7), (9), (7), (3), (1);
SELECT * FROM ot1,ot4
WHERE (ot1.a,ot4.a) IN (SELECT it2.a,it3.a
FROM it2,it3);
a	a
5	7
5	7
5	1
5	1
5	5
8	7
8	7
8	1
8	1
8	5
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	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	2	NULL
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	Using where
1	SIMPLE	ot4	ALL	NULL	NULL	NULL	NULL	8	Using where
2	MATERIALIZED	it2	ALL	NULL	NULL	NULL	NULL	4	NULL
2	MATERIALIZED	it3	ALL	NULL	NULL	NULL	NULL	6	NULL
DROP TABLE IF EXISTS ot1, ot4, it2, it3;
# End of the test for bug#52068.
#
# Bug#57623: subquery within before insert trigger causes crash (sj=on)
#
CREATE TABLE ot1(a INT);
CREATE TABLE ot2(a INT);
CREATE TABLE ot3(a INT);
CREATE TABLE it1(a INT);
INSERT INTO ot1 VALUES(0),(1),(2),(3),(4),(5),(6),(7);
INSERT INTO ot2 VALUES(0),(2),(4),(6);
INSERT INTO ot3 VALUES(0),(3),(6);
INSERT INTO it1 VALUES(0),(1),(2),(3),(4),(5),(6),(7);
explain SELECT *
FROM   ot1
LEFT JOIN
(ot2 JOIN ot3 on ot2.a=ot3.a)
ON ot1.a=ot2.a AND ot1.a IN (SELECT a from it1);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	8	NULL
1	SIMPLE	it1	ALL	NULL	NULL	NULL	NULL	8	Using where; Start temporary; End temporary
1	SIMPLE	ot3	ALL	NULL	NULL	NULL	NULL	3	NULL
1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	4	Using where
SELECT *
FROM   ot1
LEFT JOIN
(ot2 JOIN ot3 on ot2.a=ot3.a)
ON ot1.a=ot2.a AND ot1.a IN (SELECT a from it1);
a	a	a
0	0	0
1	NULL	NULL
2	NULL	NULL
3	NULL	NULL
4	NULL	NULL
5	NULL	NULL
6	6	6
7	NULL	NULL
prepare s from 'SELECT *
FROM   ot1
LEFT JOIN
(ot2 JOIN ot3 on ot2.a=ot3.a)
ON ot1.a=ot2.a AND ot1.a IN (SELECT a from it1)';
execute s;
a	a	a
0	0	0
1	NULL	NULL
2	NULL	NULL
3	NULL	NULL
4	NULL	NULL
5	NULL	NULL
6	6	6
7	NULL	NULL
execute s;
a	a	a
0	0	0
1	NULL	NULL
2	NULL	NULL
3	NULL	NULL
4	NULL	NULL
5	NULL	NULL
6	6	6
7	NULL	NULL
deallocate prepare s;
DROP TABLE ot1, ot2, ot3, it1;
# End of the test for bug#57623.
#
# Bug#11766739: Crash in tmp_table_param::init() with semijoin=on
#
CREATE TABLE t1 (f1 INTEGER) ENGINE=MyISAM;
CREATE TABLE t2 (f1 INTEGER, f2 INTEGER) ENGINE=MyISAM;
INSERT INTO t1 VALUES (1);
INSERT INTO t2 VALUES (1,1), (2,1);
EXPLAIN SELECT * FROM t2
WHERE f2 IN (SELECT t1.f1
FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	1	Start temporary
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	b1	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	b2	ALL	NULL	NULL	NULL	NULL	2	End temporary
SELECT * FROM t2
WHERE f2 IN (SELECT t1.f1
FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE);
f1	f2
1	1
2	1
DROP TABLE t1, t2;
# End of the test for bug#11766739.
#
# Bug#11766642: crash in Item_field::register_field_in_read_map with view
#
CREATE TABLE t1(a INT);
CREATE VIEW v1 AS SELECT a FROM t1;
INSERT INTO t1 VALUES (0),(1),(2);
SELECT a FROM t1 WHERE a IN 
(SELECT a XOR a FROM v1)
ORDER BY a;
a
0
DROP TABLE t1;
DROP VIEW v1;
#
# Bug#12546542 MISSING ROW WHEN USING OPTIMIZER_JOIN_CACHE_LEVEL>=3
#
CREATE TABLE t1 (
f2 varchar(1024)
);
INSERT INTO t1 VALUES ('v'),('we');
CREATE TABLE t2 (
col_varchar_1024_utf8 varchar(1024) CHARACTER SET utf8 DEFAULT NULL,
col_int_key int,
col_int int
);
INSERT INTO t2 VALUES ('we',4,NULL),('v',1305673728,6);
CREATE TABLE t3 (
col_int_key int,
col_int int
);
INSERT INTO t3 VALUES (4,4);
SELECT *
FROM t1
WHERE f2 IN (SELECT a1.col_varchar_1024_utf8 AS f2
FROM t2 AS a1 LEFT JOIN t3 AS a2
ON a1.col_int_key = a2.col_int_key
WHERE a1.col_int BETWEEN 1 AND 10 OR a2.col_int IS NOT NULL);
f2
v
we
DROP TABLE t1,t2,t3;
#
# BUG#12616344 - JCL: DIFFERENT RESULT SET AND DIFFERENT AMOUNT
# OF ROWS WHEN JCL>=3
#
CREATE TABLE t1 (col_int_nokey int, col_int_key int, col_varchar_key varchar(1));
INSERT INTO t1 VALUES (0,4,'c'),(1,6,'u');
CREATE TABLE t2 (pk int, col_int_nokey int, col_varchar_nokey varchar(1));
INSERT INTO t2 VALUES (1,4,'b'),(94,6,'u');
CREATE TABLE t3 (pk int, col_int_nokey int, col_varchar_key varchar(1));
INSERT INTO t3 VALUES (1,4,'j'),(2,6,'v');
SELECT table2.col_int_key
from t3 as table1 join t1 as table2 on table2.col_int_nokey 
where table1.col_int_nokey in 
( 
select subquery2_t2.col_int_nokey 
from t3 as subquery2_t1 
right join
t2 as subquery2_t2
join t1 as subquery2_t3
on subquery2_t3.col_int_key = subquery2_t2.col_int_nokey
on subquery2_t3.col_varchar_key = subquery2_t2.col_varchar_nokey 
where subquery2_t1.col_varchar_key != table1.col_varchar_key
or subquery2_t2.pk <= table1.pk
);
col_int_key
6
6
DROP TABLE t1,t2,t3;
#
# Bug#12608157: ASSERT IN FIELD_LONG::VAL_INT WHEN USING MEMORY ENGINE
#
CREATE TABLE t1 (i1 int);
INSERT INTO t1 VALUES (1);
CREATE TABLE t2 (i1 int, i2 int) ENGINE=memory;
INSERT INTO t2 VALUES (1, 2),(7, 3);
SELECT GRANDPARENT1.i1
FROM t2 AS GRANDPARENT1 
WHERE GRANDPARENT1.i2
IN ( SELECT PARENT1.i2
FROM t2 AS PARENT1 JOIN t1 AS PARENT2 ON (PARENT1.i1 = PARENT2.i1)
WHERE 
GRANDPARENT1.i1 IN ( SELECT CHILD1.i1 FROM t2 AS CHILD1 )
ORDER BY PARENT1.i1)
ORDER BY GRANDPARENT1.i2 ;
i1
1
DROP TABLE t1,t2;
#
# Bug#12640083: Same query executed as WHERE subquery gives different
#              results on IN() compare
#
CREATE TABLE t1 (
pk int NOT NULL,
col_varchar_1024_utf8_key varchar(1024) CHARACTER SET utf8 DEFAULT NULL,
col_varchar_10_latin1_key varchar(10) DEFAULT NULL,
PRIMARY KEY (pk),
KEY col_varchar_1024_utf8_key(col_varchar_1024_utf8_key(333)),
KEY col_varchar_10_latin1_key(col_varchar_10_latin1_key)
);
INSERT INTO t1 VALUES
(1, 'a', 'a'),
(2, 'ab', 'ab'),
(3, 'abc', 'abc'),
(4, 'abcd', 'abcd');
CREATE TABLE t2 (
pk int NOT NULL AUTO_INCREMENT,
PRIMARY KEY (pk)
) ENGINE=Innodb;
CREATE TABLE t3
SELECT alias1.col_varchar_10_latin1_key
FROM t1 AS alias1
LEFT JOIN t1 AS alias2
JOIN t2 AS alias3
ON alias2.col_varchar_10_latin1_key
ON alias1.col_varchar_1024_utf8_key
WHERE alias1.pk AND alias1.pk < 3 OR alias1.pk AND alias3.pk;
EXPLAIN SELECT * 
FROM t3 
WHERE col_varchar_10_latin1_key IN (
SELECT alias1.col_varchar_10_latin1_key 
FROM t1 AS alias1
LEFT JOIN t1 AS alias2
JOIN t2 AS alias3
ON alias2.col_varchar_10_latin1_key
ON alias1.col_varchar_1024_utf8_key
WHERE alias1.pk AND alias1.pk < 3 OR alias1.pk AND alias3.pk);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	13	test.t3.col_varchar_10_latin1_key	1	NULL
2	MATERIALIZED	alias1	ALL	NULL	NULL	NULL	NULL	4	Using where
2	MATERIALIZED	alias3	index	NULL	PRIMARY	4	NULL	1	Using where; Using index
2	MATERIALIZED	alias2	index	NULL	col_varchar_10_latin1_key	13	NULL	4	Using where; Using index
SELECT * 
FROM t3 
WHERE col_varchar_10_latin1_key IN (
SELECT alias1.col_varchar_10_latin1_key 
FROM t1 AS alias1
LEFT JOIN t1 AS alias2
JOIN t2 AS alias3
ON alias2.col_varchar_10_latin1_key
ON alias1.col_varchar_1024_utf8_key
WHERE alias1.pk AND alias1.pk < 3 OR alias1.pk AND alias3.pk);
col_varchar_10_latin1_key
a
ab
DROP TABLE t1, t2, t3;
# End of the test for bug#12640083.
#
# Bug#12603200 - Assert in QUICK_INDEX_MERGE_SELECT::need_sorted_output
#
CREATE TABLE t1 (
pk int NOT NULL,
col_int_key int NOT NULL,
col_varchar_nokey varchar(1) NOT NULL,
col_varchar_key varchar(1) NOT NULL,
PRIMARY KEY(pk),
KEY col_int_key(col_int_key),
KEY col_varchar_key(col_varchar_key, col_int_key)
) engine=innodb;
INSERT INTO t1 VALUES
(1,7,'a','a'),
(2,0,'v','v'),
(3,9,'c','c'),
(4,3,'m','m'),
(5,2,'a','a'),
(6,1,'d','d'),
(7,8,'y','y'),
(8,6,'t','t'),
(11,7,'a','x'),
(12,0,'v','v'),
(13,9,'c','c'),
(14,3,'m','m'),
(15,2,'a','x'),
(16,1,'d','d'),
(17,8,'y','y'),
(18,6,'t','u');
CREATE TABLE t2 (
pk int NOT NULL,
col_int_key int NOT NULL,
col_varchar_key varchar(1) NOT NULL,
PRIMARY KEY(pk),
KEY col_varchar_key(col_varchar_key, col_int_key)
) engine=innodb;
INSERT INTO t2(pk,col_int_key,col_varchar_key) VALUES
(8,7,'c'),
(11,4,'l'),
(12,7,'b'),
(13,0,'c'),
(14,2,'i'),
(15,9,'h'),
(16,4,'q'),
(17,1,'m'),
(18,9,'b'),
(19,2,'e'),
(20,1,'c'),
(21,7,'z'),
(22,4,'l'),
(23,7,'z'),
(24,0,'c'),
(25,2,'i'),
(26,9,'h'),
(27,4,'q'),
(28,0,'a'),
(29,1,'d');
EXPLAIN SELECT outr.col_varchar_key AS x, outr.pk AS y
FROM t1 AS outr
WHERE outr.col_varchar_key IN (SELECT innr.col_varchar_key
FROM t2 AS innr
WHERE innr.col_varchar_key = 'a' OR innr.pk = 8)
AND outr.col_varchar_nokey < 't'
ORDER BY outr.col_varchar_key, outr.pk;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	innr	index_merge	PRIMARY,col_varchar_key	col_varchar_key,PRIMARY	3,4	NULL	2	Using sort_union(col_varchar_key,PRIMARY); Using where; Using temporary; Using filesort; Start temporary
1	SIMPLE	outr	ref	col_varchar_key	col_varchar_key	3	test.innr.col_varchar_key	1	Using where; End temporary
SELECT outr.col_varchar_key AS x, outr.pk AS y
FROM t1 AS outr
WHERE outr.col_varchar_key IN (SELECT innr.col_varchar_key
FROM t2 AS innr
WHERE innr.col_varchar_key = 'a' OR innr.pk = 8)
AND outr.col_varchar_nokey < 't'
ORDER BY outr.col_varchar_key, outr.pk;
x	y
a	1
a	5
c	3
c	13
DROP TABLE t1, t2;
# End of bug#12603200
#
# Bug#12603183: Segfault in hp_movelink
#
CREATE TABLE t1 (
col_varchar_key varchar(1) ,
col_varchar_nokey varchar(1) ,
KEY col_varchar_key(col_varchar_key)
);
INSERT INTO t1 VALUES
('i','i'),
('h','h'),
('q','q'),
('a','a'),
('v','v'),
('u','u'),
('s','s'),
('y','y'),
('z','z'),
('h','h'),
('p','p'),
('e','e'),
('i','i'),
('y','y'),
('w','w');
CREATE TABLE t2 (
col_varchar_nokey varchar(1)
);
INSERT INTO t2 VALUES
('b');
EXPLAIN SELECT grandparent1.col_varchar_nokey
FROM t1 AS grandparent1 LEFT JOIN t2 AS grandparent2 USING (col_varchar_nokey)
WHERE (grandparent1.col_varchar_key) IN
(SELECT parent1.col_varchar_nokey
FROM t1 AS parent1
WHERE parent1.col_varchar_key IN
(SELECT child1.col_varchar_nokey AS c1
FROM t1 AS child1 LEFT JOIN t2 AS child2
ON (child1.col_varchar_key > child2.col_varchar_nokey)));
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	Using where
1	SIMPLE	grandparent1	ref	col_varchar_key	col_varchar_key	4	<subquery2>.col_varchar_nokey	2	NULL
1	SIMPLE	grandparent2	ALL	NULL	NULL	NULL	NULL	1	Using where
2	MATERIALIZED	child1	ALL	NULL	NULL	NULL	NULL	15	Using where
2	MATERIALIZED	child2	ALL	NULL	NULL	NULL	NULL	1	Using where
2	MATERIALIZED	parent1	ref	col_varchar_key	col_varchar_key	4	test.child1.col_varchar_nokey	2	NULL
SELECT grandparent1.col_varchar_nokey
FROM t1 AS grandparent1 LEFT JOIN t2 AS grandparent2 USING (col_varchar_nokey)
WHERE (grandparent1.col_varchar_key) IN
(SELECT parent1.col_varchar_nokey
FROM t1 AS parent1
WHERE parent1.col_varchar_key IN
(SELECT child1.col_varchar_nokey AS c1
FROM t1 AS child1 LEFT JOIN t2 AS child2
ON (child1.col_varchar_key > child2.col_varchar_nokey)));
col_varchar_nokey
a
e
h
h
i
i
p
q
s
u
v
w
y
y
z
DROP TABLE t1, t2;
# End of test for bug#12603183.
#
# Bug#12818569: Diff nr of rows returned when using IN/ALL+subquery
#
CREATE TABLE t1 (
col_int_key INT NOT NULL,
col_datetime_key DATETIME NOT NULL,
col_varchar_key VARCHAR(1) NOT NULL,
KEY col_int_key (col_int_key),
KEY col_datetime_key(col_datetime_key),
KEY col_varchar_key (col_varchar_key,col_int_key)
) ENGINE=InnoDB;
INSERT INTO t1 VALUES
(7,'2004-06-06 04:22:12','v'), (0,'2005-11-13 01:12:31','s'),
(9,'2002-05-04 01:50:00','l'), (3,'2004-10-27 10:28:45','y'),
(4,'2006-07-22 05:24:23','c'), (2,'2002-05-16 21:34:03','i'),
(5,'2008-04-17 10:45:30','h'), (3,'2009-04-21 02:58:02','q'),
(1,'2008-01-11 11:01:51','a'), (3,'1900-01-01 00:00:00','v'),
(6,'2007-05-17 18:24:57','u'), (7,'2007-08-07 00:00:00','s'),
(5,'2001-08-28 00:00:00','y'), (1,'2004-04-16 00:27:28','z'),
(204,'2005-05-03 07:06:22','h'), (224,'2009-03-11 17:09:50','p'),
(9,'2007-12-08 01:54:28','e'), (5,'2009-07-28 18:19:54','i'),
(0,'2008-06-08 00:00:00','y'), (3,'2005-02-09 09:20:26','w');
CREATE TABLE t2 (
col_varchar_nokey VARCHAR(1) NOT NULL
) ENGINE=InnoDB;
INSERT INTO t2 VALUES ('v'), ('y'), ('j'), ('c'), ('d'), ('r');
explain SELECT col_varchar_key
FROM t1
WHERE col_varchar_key IN (SELECT col_varchar_nokey
FROM t2)
ORDER BY col_datetime_key LIMIT 4;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	col_varchar_key	NULL	NULL	NULL	20	Using where; Using filesort
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	3	test.t1.col_varchar_key	1	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	6	NULL
SELECT col_varchar_key
FROM t1
WHERE col_varchar_key IN (SELECT col_varchar_nokey
FROM t2)
ORDER BY col_datetime_key LIMIT 4;
col_varchar_key
v
y
v
y
DROP TABLE t1, t2;
# End of test for bug#12818569.
#
# Bug#12803439: Assert in replace_subcondition() on update query
#
CREATE TABLE t1(a INTEGER);
INSERT INTO t1 values(1), (2);
CREATE TABLE t2(a INTEGER);
INSERT INTO t2 VALUES(1), (3);
SELECT *
FROM t1
WHERE a IN (SELECT a
FROM t2
HAVING a IN (SELECT a
FROM t2)
)
HAVING a IN (SELECT a
FROM t2);
a
1
DROP TABLE t1, t2;
# End of test for bug#12803439.
#
# Bug#12797534: Segfault in hp_movelink still exists
#
CREATE TABLE t1 (
g1 VARCHAR(1) NOT NULL
) ENGINE=InnoDB;
INSERT INTO t1 VALUES ('d'), ('s');
CREATE TABLE t2 (
pk INT NOT NULL,
col_int_key INT NOT NULL,
col_varchar_key VARCHAR(1) NOT NULL,
col_varchar_nokey VARCHAR(1) NOT NULL,
PRIMARY KEY (pk),
KEY col_varchar_key(col_varchar_key, col_int_key)
) ENGINE=InnoDB;
INSERT INTO t2 VALUES
(1,4,'j','j'), (2,6,'v','v'), (3,3,'c','c'), (4,5,'m','m'),
(5,3,'d','d'), (6,246,'d','d'), (7,2,'y','y'), (8,9,'t','t'),
(9,3,'d','d'), (10,8,'s','s'), (11,1,'r','r'), (12,8,'m','m'),
(13,8,'b','b'), (14,5,'x','x'), (15,7,'g','g'), (16,5,'p','p'),
(17,1,'q','q'), (18,6,'w','w'), (19,2,'d','d'), (20,9,'e','e');
CREATE TABLE t3 (
pk INTEGER NOT NULL,
PRIMARY KEY (pk)
) ENGINE=InnoDB;
INSERT INTO t3 VALUES (10);
EXPLAIN SELECT *
FROM t1
WHERE g1 NOT IN
(SELECT  grandparent1.col_varchar_nokey AS g1
FROM t2 AS grandparent1
WHERE grandparent1.col_varchar_key IN
(SELECT parent1.col_varchar_nokey AS p1
FROM t2 AS parent1 LEFT JOIN t3 AS parent2 USING (pk)
)
AND grandparent1.col_varchar_key IS NOT NULL
);
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	SUBQUERY	<subquery3>	ALL	NULL	NULL	NULL	NULL	NULL	NULL
2	SUBQUERY	grandparent1	ref	col_varchar_key	col_varchar_key	3	<subquery3>.p1	1	Using where
3	MATERIALIZED	parent1	ALL	NULL	NULL	NULL	NULL	20	NULL
3	MATERIALIZED	parent2	eq_ref	PRIMARY	PRIMARY	4	test.parent1.pk	1	Using index
SELECT *
FROM t1
WHERE g1 NOT IN
(SELECT  grandparent1.col_varchar_nokey AS g1
FROM t2 AS grandparent1
WHERE grandparent1.col_varchar_key IN
(SELECT parent1.col_varchar_nokey AS p1
FROM t2 AS parent1 LEFT JOIN t3 AS parent2 USING (pk)
)
AND grandparent1.col_varchar_key IS NOT NULL
);
g1
DROP TABLE t1, t2, t3;
CREATE TABLE t1 (
pk INTEGER AUTO_INCREMENT,
col_int_key INTEGER ,
col_varchar_key VARCHAR(1) ,
col_varchar_nokey VARCHAR(1) ,
PRIMARY KEY (pk),
KEY (col_varchar_key,col_int_key)
) ENGINE=INNODB;
INSERT INTO t1 (col_int_key,col_varchar_key,col_varchar_nokey) VALUES
(0,'x','x'), (1,'j','j'), (1,'r','r'), (9,'v','v'), (5,'r','r');
CREATE TABLE t2 (
pk INTEGER AUTO_INCREMENT,
col_int_key INTEGER ,
col_varchar_key VARCHAR(1) ,
col_varchar_nokey VARCHAR(1) ,
PRIMARY KEY (pk),
KEY (col_int_key),
KEY (col_varchar_key,col_int_key)
) AUTO_INCREMENT=10 ENGINE=INNODB;
INSERT INTO t2 (col_int_key, col_varchar_key, col_varchar_nokey) VALUES
(NULL,'x','x'), (NULL,'j','j'), (8,'c','c');
CREATE TABLE t3
SELECT outr.col_varchar_nokey AS x
FROM t1 AS outr
WHERE outr.col_varchar_nokey IN
(SELECT innr.col_varchar_nokey AS y
FROM t2 AS innr
WHERE innr.col_int_key IS NULL)
AND outr.col_varchar_nokey IS NOT NULL
AND NOT col_varchar_key IS NULL;
SELECT *
FROM t3
WHERE x NOT IN
(SELECT outr.col_varchar_nokey AS x
FROM t1 AS outr
WHERE outr.col_varchar_nokey IN
(SELECT innr.col_varchar_nokey AS y
FROM t2 AS innr
WHERE innr.col_int_key IS NULL)
AND outr.col_varchar_nokey IS NOT NULL
AND NOT col_varchar_key IS NULL);
x
DROP TABLE t1, t2, t3;
# End of test for bug#12797534.
#
# Bug#12714094: Assert in optimize_semijoin_nests()
#
CREATE TABLE it (
pk int NOT NULL,
col_varchar VARCHAR(10) DEFAULT NULL,
PRIMARY KEY (pk)
) ENGINE=MyISAM;
INSERT INTO it VALUES (1, 'g');
CREATE TABLE ot
SELECT alias1.pk AS field1
FROM it AS alias1
LEFT JOIN it AS alias2
ON alias1.col_varchar = alias2.col_varchar
;
SELECT *
FROM ot
WHERE field1 IN (
SELECT alias1.pk
FROM it AS alias1
LEFT JOIN it AS alias2
ON alias1.col_varchar = alias2.col_varchar
);
field1
1
DROP TABLE it, ot;
# End of test for bug#12714094
#
# Bug#12867557: Valgrind: conditional jump/move at key_cmp
#
CREATE TABLE t1 (
pk INTEGER AUTO_INCREMENT,
col_int_key INTEGER,
PRIMARY KEY (pk),
KEY (col_int_key)
) AUTO_INCREMENT=10;
INSERT INTO t1 (col_int_key) VALUES (8);
CREATE TABLE t2 (
pk INTEGER AUTO_INCREMENT,
col_int_key INTEGER,
col_time_key TIME,
PRIMARY KEY (pk),
KEY (col_int_key),
KEY (col_time_key)
)  AUTO_INCREMENT=10;
INSERT INTO t2 (col_int_key, col_time_key)
VALUES
(8, '22:55:23.019225'), (7, '10:19:31.050677'), (1, '14:40:36.038608'),
(7, '04:37:47.062416'), (9, '19:34:06.054514'), (NULL,'20:35:33.022996'),
(1, NULL), (9, '14:43:37.057393'), (2, '02:23:09.043438'),
(9, '01:22:45.041064'), (2, '00:00:00'), (4, '00:13:25.038482'),
(0, '03:47:16.042671'), (4, '01:41:48.007423'), (8, '00:00:00'),
(NULL, '22:32:04.047407'), (NULL, '16:44:14.028443'), (0, '17:38:37.059754'),
(NULL, '08:46:48.042388'), (8, '14:11:27.044095');
CREATE TABLE t0
SELECT DISTINCT grandparent1.col_time_key AS g1
FROM t2 AS grandparent1
WHERE grandparent1.col_int_key IN
(SELECT parent1.col_int_key AS p1
FROM t1 AS parent1)
AND grandparent1.pk > 9;
UPDATE t0
SET g1 = g1
WHERE g1 IN
(SELECT grandparent1.col_time_key AS g1
FROM t2 AS grandparent1
WHERE grandparent1.col_int_key IN
(SELECT parent1.col_int_key AS p1
FROM t1 AS parent1)
AND grandparent1.pk > 9);
DROP TABLE t0, t1, t2;
# End of test for bug#12867557
#
# Bug#12711441: crash in fix_after_pullout
#
CREATE TABLE t1 (
pk int NOT NULL,
col_int_nokey int DEFAULT NULL,
col_int_key int DEFAULT NULL,
col_time_key time DEFAULT NULL,
col_varchar_key varchar(1) DEFAULT NULL,
PRIMARY KEY (pk)
);
CREATE VIEW v1 AS SELECT * FROM t1;
CREATE TABLE t2 (
col_int_key int DEFAULT NULL,
col_varchar_key varchar(1) DEFAULT NULL,
col_varchar_nokey varchar(1) DEFAULT NULL,
KEY col_varchar_key(col_varchar_key, col_int_key)
);
CREATE TABLE t3 (
pk int NOT NULL,
col_int_key INT DEFAULT NULL,
PRIMARY KEY (pk)
);
CREATE TABLE t4 (
col_int_nokey INT DEFAULT NULL,
col_varchar_key varchar(1) DEFAULT NULL,
col_varchar_nokey varchar(1) DEFAULT NULL,
KEY col_varchar_key(col_varchar_key)
);
CREATE TABLE ts
SELECT alias1.col_time_key AS field1
FROM v1 AS alias1
RIGHT JOIN t3 AS alias2
ON alias2.col_int_key = alias1.col_int_nokey
WHERE alias1.pk >= SOME(
SELECT SQ1_alias1.pk AS SQ1_field1
FROM t3 AS SQ1_alias1
INNER JOIN (t2 AS SQ1_alias2
INNER JOIN t4 AS SQ1_alias3
ON SQ1_alias3.col_varchar_key = SQ1_alias2.col_varchar_nokey)
ON SQ1_alias3.col_int_nokey = SQ1_alias2.col_int_key
WHERE SQ1_alias2.col_varchar_key <= alias1.col_varchar_key
AND SQ1_alias3.col_varchar_nokey <> alias1.col_varchar_key)
;
SELECT * FROM ts WHERE field1 IN (
SELECT alias1.col_time_key AS field1
FROM v1 AS alias1
RIGHT JOIN t3 AS alias2
ON alias2.col_int_key = alias1.col_int_nokey
WHERE alias1.pk >= SOME(
SELECT SQ1_alias1.pk AS SQ1_field1
FROM t3 AS SQ1_alias1
INNER JOIN (t2 AS SQ1_alias2
INNER JOIN t4 AS SQ1_alias3
ON SQ1_alias3.col_varchar_key = SQ1_alias2.col_varchar_nokey)
ON SQ1_alias3.col_int_nokey = SQ1_alias2.col_int_key
WHERE SQ1_alias2.col_varchar_key <= alias1.col_varchar_key
AND SQ1_alias3.col_varchar_nokey <> alias1.col_varchar_key)
);
field1
DROP TABLE t1, t2, t3, t4, ts;
DROP VIEW v1;
# End of test for bug#12711441.
#
# Bug#12664936: Same query executed as where subquery ...
#
CREATE TABLE t1 (
col_varchar_key VARCHAR(1),
KEY col_varchar_key (col_varchar_key)
);
INSERT INTO t1 VALUES
('o'), ('w'), ('m'), ('q'),
('f'), ('p'), ('j'), ('c');
CREATE TABLE t2 (
col_int_nokey INTEGER,
col_int_key INTEGER,
col_varchar_key varchar(1),
KEY col_int_key (col_int_key)
);
INSERT INTO t2 VALUES
(8,5,'u'),(4,5,'p'),(8,1,'o'),(NULL,7,'v'),
(1,2,'g'),(2,1,'q'),(NULL,7,'l'),(3,1,'n');
CREATE TABLE t4
SELECT t2.col_int_nokey, t2.col_varchar_key
FROM t1 JOIN t2 ON t2.col_varchar_key = t1.col_varchar_key
WHERE t2.col_int_key = 1;
EXPLAIN SELECT *
FROM t4
WHERE (col_int_nokey, col_varchar_key) IN
(SELECT t2.col_int_nokey, t2.col_varchar_key
FROM t1 JOIN t2 ON t2.col_varchar_key = t1.col_varchar_key
WHERE t2.col_int_key = 1
);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	9	test.t4.col_int_nokey,test.t4.col_varchar_key	1	NULL
2	MATERIALIZED	t2	ref	col_int_key	col_int_key	5	const	3	Using where
2	MATERIALIZED	t1	ref	col_varchar_key	col_varchar_key	4	test.t2.col_varchar_key	2	Using index
SELECT *
FROM t4
WHERE (col_int_nokey, col_varchar_key) IN
(SELECT t2.col_int_nokey, t2.col_varchar_key
FROM t1 JOIN t2 ON t2.col_varchar_key = t1.col_varchar_key
WHERE t2.col_int_key = 1
);
col_int_nokey	col_varchar_key
8	o
2	q
DROP TABLE t1, t2, t4;
# End of test for bug#12664936.
#
# Bug#13340270: assertion table->sort.record_pointers == __null
#
CREATE TABLE t1 (
pk int NOT NULL,
col_int_key int DEFAULT NULL,
col_varchar_key varchar(1) DEFAULT NULL,
col_varchar_nokey varchar(1) DEFAULT NULL,
PRIMARY KEY (pk),
KEY col_int_key (col_int_key),
KEY col_varchar_key (col_varchar_key, col_int_key)
) ENGINE=InnoDB;
INSERT INTO t1 VALUES
(10,8,'x','x'),
(11,7,'d','d'),
(12,1,'r','r'),
(13,7,'f','f'),
(14,9,'y','y'),
(15,NULL,'u','u'),
(16,1,'m','m'),
(17,9,NULL,NULL),
(18,2,'o','o'),
(19,9,'w','w'),
(20,2,'m','m'),
(21,4,'q','q');
CREATE TABLE t2
SELECT alias1.col_varchar_nokey AS field1
FROM t1 AS alias1 JOIN t1 AS alias2
ON alias2.col_int_key = alias1.pk OR
alias2.col_int_key = alias1.col_int_key
WHERE alias1.pk = 58 OR alias1.col_varchar_key = 'o'

;
EXPLAIN SELECT *
FROM t2
WHERE (field1) IN (SELECT alias1.col_varchar_nokey AS field1
FROM t1 AS alias1 JOIN t1 AS alias2
ON alias2.col_int_key = alias1.pk OR
alias2.col_int_key = alias1.col_int_key
WHERE alias1.pk = 58 OR alias1.col_varchar_key = 'o'
);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	4	test.t2.field1	1	NULL
2	MATERIALIZED	alias1	index_merge	PRIMARY,col_int_key,col_varchar_key	col_varchar_key,PRIMARY	4,4	NULL	2	Using sort_union(col_varchar_key,PRIMARY); Using where
2	MATERIALIZED	alias2	ALL	col_int_key	NULL	NULL	NULL	12	Range checked for each record (index map: 0x2)
SELECT *
FROM t2
WHERE (field1) IN (SELECT alias1.col_varchar_nokey AS field1
FROM t1 AS alias1 JOIN t1 AS alias2
ON alias2.col_int_key = alias1.pk OR
alias2.col_int_key = alias1.col_int_key
WHERE alias1.pk = 58 OR alias1.col_varchar_key = 'o'
);
field1
o
o
DROP TABLE t1, t2;
# End of test for bug#13340270.
#
# Bug#13335319: Seg fault when analyzing FirstMatch semi-join strategy
#
CREATE TABLE ot1(a INTEGER);
INSERT INTO ot1 VALUES(1), (2), (3);
CREATE TABLE ot2(a INTEGER);
INSERT INTO ot2 VALUES(1), (2), (4), (6), (8), (10);
CREATE TABLE it1(a INTEGER);
INSERT INTO it1 VALUES(1), (3), (5), (7);
CREATE TABLE it2(a INTEGER);
INSERT INTO it2 VALUES(1), (3), (5), (7), (9);
explain SELECT ot1.a, ot2.a
FROM ot1, ot2
WHERE ot1.a IN (SELECT a FROM it1) AND
ot2.a IN (SELECT a FROM it2);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	3	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	5	test.ot1.a	1	NULL
1	SIMPLE	<subquery3>	ALL	NULL	NULL	NULL	NULL	NULL	NULL
1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	6	Using where
2	MATERIALIZED	it1	ALL	NULL	NULL	NULL	NULL	4	NULL
3	MATERIALIZED	it2	ALL	NULL	NULL	NULL	NULL	5	NULL
SELECT ot1.a, ot2.a
FROM ot1, ot2
WHERE ot1.a IN (SELECT a FROM it1) AND
ot2.a IN (SELECT a FROM it2);
a	a
1	1
3	1
DROP TABLE ot1, ot2, it1, it2;
# End of test for bug#13335319.
#
# Bug#13334882: Assertion keypart_map failed in MyIsam function
#
CREATE TABLE t1 (
pk int NOT NULL,
col_int_nokey INT NOT NULL,
col_int_key INT NOT NULL,
PRIMARY KEY (pk),
KEY col_int_key (col_int_key)
) ENGINE=MyISAM;
INSERT INTO t1 VALUES
(1,4,0),
(2,6,8),
(3,3,1),
(7,2,6),
(8,9,1),
(9,3,6),
(10,8,2),
(11,1,4),
(12,8,8),
(13,8,4),
(14,5,4);
CREATE TABLE t2 (
pk int NOT NULL,
col_int_nokey int NOT NULL,
col_int_key int NOT NULL,
PRIMARY KEY (pk),
KEY col_int_key (col_int_key)
) ENGINE=MyISAM;
INSERT INTO t2 VALUES
(10,8,7);
CREATE TABLE t3
SELECT grandparent1.col_int_nokey AS g1
FROM t1 AS grandparent1
WHERE (grandparent1.col_int_nokey, grandparent1.col_int_key) IN
(SELECT parent1.col_int_key AS p1,
parent1.col_int_key AS p2
FROM t1 AS parent1
LEFT JOIN t2 AS parent2
ON parent1.col_int_nokey = parent2.col_int_key
)
AND grandparent1.col_int_key <> 3
;
explain SELECT * FROM t3
WHERE g1 NOT IN
(SELECT grandparent1.col_int_nokey AS g1
FROM t1 AS grandparent1
WHERE (grandparent1.col_int_nokey, grandparent1.col_int_key) IN
(SELECT parent1.col_int_key AS p1,
parent1.col_int_key AS p2
FROM t1 AS parent1
LEFT JOIN t2 AS parent2
ON parent1.col_int_nokey = parent2.col_int_key
)
AND grandparent1.col_int_key <> 3
);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	PRIMARY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
2	DEPENDENT SUBQUERY	grandparent1	ref	col_int_key	col_int_key	4	func	2	Using where
2	DEPENDENT SUBQUERY	<subquery3>	eq_ref	<auto_key>	<auto_key>	8	test.grandparent1.col_int_nokey,test.grandparent1.col_int_nokey	1	NULL
3	MATERIALIZED	parent1	ref	col_int_key	col_int_key	4	func	2	NULL
3	MATERIALIZED	parent2	ref	col_int_key	col_int_key	4	test.parent1.col_int_nokey	2	Using index
explain format=json SELECT * FROM t3
WHERE g1 NOT IN
(SELECT grandparent1.col_int_nokey AS g1
FROM t1 AS grandparent1
WHERE (grandparent1.col_int_nokey, grandparent1.col_int_key) IN
(SELECT parent1.col_int_key AS p1,
parent1.col_int_key AS p2
FROM t1 AS parent1
LEFT JOIN t2 AS parent2
ON parent1.col_int_nokey = parent2.col_int_key
)
AND grandparent1.col_int_key <> 3
);
EXPLAIN
{
  "query_block": {
    "select_id": 1,
    "table": {
      "message": "Impossible WHERE noticed after reading const tables",
      "attached_subqueries": [
        {
          "dependent": true,
          "cacheable": false,
          "query_block": {
            "select_id": 3,
            "nested_loop": [
              {
                "table": {
                  "table_name": "grandparent1",
                  "access_type": "ref",
                  "possible_keys": [
                    "col_int_key"
                  ],
                  "key": "col_int_key",
                  "used_key_parts": [
                    "col_int_key"
                  ],
                  "key_length": "4",
                  "ref": [
                    "func"
                  ],
                  "rows": 2,
                  "filtered": 100,
                  "attached_condition": "(((`test`.`grandparent1`.`col_int_key` = `test`.`grandparent1`.`col_int_nokey`) and (`test`.`grandparent1`.`col_int_key` <> 3) and (<cache>('8') = `test`.`grandparent1`.`col_int_nokey`)) and ((`test`.`grandparent1`.`col_int_nokey` is not null) and (`test`.`grandparent1`.`col_int_nokey` is not null)))"
                }
              },
              {
                "table": {
                  "table_name": "<subquery3>",
                  "access_type": "eq_ref",
                  "key": "<auto_key>",
                  "key_length": "8",
                  "ref": [
                    "test.grandparent1.col_int_nokey",
                    "test.grandparent1.col_int_nokey"
                  ],
                  "rows": 1,
                  "materialized_from_subquery": {
                    "using_temporary_table": true,
                    "query_block": {
                      "nested_loop": [
                        {
                          "table": {
                            "table_name": "parent1",
                            "access_type": "ref",
                            "possible_keys": [
                              "col_int_key"
                            ],
                            "key": "col_int_key",
                            "used_key_parts": [
                              "col_int_key"
                            ],
                            "key_length": "4",
                            "ref": [
                              "func"
                            ],
                            "rows": 2,
                            "filtered": 100
                          }
                        },
                        {
                          "table": {
                            "table_name": "parent2",
                            "access_type": "ref",
                            "possible_keys": [
                              "col_int_key"
                            ],
                            "key": "col_int_key",
                            "used_key_parts": [
                              "col_int_key"
                            ],
                            "key_length": "4",
                            "ref": [
                              "test.parent1.col_int_nokey"
                            ],
                            "rows": 2,
                            "filtered": 100,
                            "using_index": true
                          }
                        }
                      ]
                    }
                  }
                }
              }
            ]
          }
        }
      ]
    }
  }
}
Warnings:
Note	1003	/* select#1 */ select '8' AS `g1` from dual where (not(<in_optimizer>('8',<exists>(/* select#2 */ select 1 from `test`.`t1` `grandparent1` semi join (`test`.`t1` `parent1` left join `test`.`t2` `parent2` on((`test`.`parent1`.`col_int_nokey` = `test`.`parent2`.`col_int_key`))) where ((`test`.`grandparent1`.`col_int_key` = `test`.`grandparent1`.`col_int_nokey`) and (`<subquery3>`.`p1` = `test`.`grandparent1`.`col_int_nokey`) and (`<subquery3>`.`p2` = `test`.`grandparent1`.`col_int_nokey`) and (`test`.`grandparent1`.`col_int_key` <> 3) and (<cache>('8') = `test`.`grandparent1`.`col_int_nokey`))))))
SELECT * FROM t3
WHERE g1 NOT IN
(SELECT grandparent1.col_int_nokey AS g1
FROM t1 AS grandparent1
WHERE (grandparent1.col_int_nokey, grandparent1.col_int_key) IN
(SELECT parent1.col_int_key AS p1,
parent1.col_int_key AS p2
FROM t1 AS parent1
LEFT JOIN t2 AS parent2
ON parent1.col_int_nokey = parent2.col_int_key
)
AND grandparent1.col_int_key <> 3
);
g1
DROP TABLE t1, t2, t3;
# End of test for bug#13334882.
#
# Bug#13339643: Assertion on JOIN::flatten_subqueries on second execution
#
CREATE TABLE t1 (
col_int_nokey INT,
col_varchar_nokey VARCHAR(1)
);
INSERT INTO t1 VALUES
(1,'o'),
(2,'t');
CREATE TABLE t2 LIKE t1;
INSERT INTO t2 VALUES
(1,'o'),
(4,'f');
CREATE VIEW v_t2 AS SELECT * FROM t2;
CREATE TABLE t3 LIKE t1;
INSERT INTO t3 VALUES
(1,'o'),
(4,'f');
explain SELECT alias1.col_varchar_nokey
FROM t1 AS alias1
INNER JOIN v_t2 AS alias2
ON alias2.col_int_nokey = alias1.col_int_nokey AND
'o' IN (SELECT col_varchar_nokey
FROM t3);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	<subquery2>	const	<auto_key>	<auto_key>	4	const	1	Using where
1	SIMPLE	alias1	ALL	NULL	NULL	NULL	NULL	2	NULL
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	2	Using where
2	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	2	Using where
SELECT alias1.col_varchar_nokey
FROM t1 AS alias1
INNER JOIN v_t2 AS alias2
ON alias2.col_int_nokey = alias1.col_int_nokey AND
'o' IN (SELECT col_varchar_nokey
FROM t3);
col_varchar_nokey
o
PREPARE stmt FROM "SELECT alias1.col_varchar_nokey
FROM t1 AS alias1
INNER JOIN v_t2 AS alias2
ON alias2.col_int_nokey = alias1.col_int_nokey AND
'o' IN (SELECT col_varchar_nokey
FROM t3)";
EXECUTE stmt;
col_varchar_nokey
o
DROP VIEW v_t2;
DROP TABLE t1, t2, t3;
# End of test for bug#13339643.
#
# Bug#13424134: Wrong result on JOIN + nested WHERE ... IN clauses
#
CREATE TABLE t1 (
pk int NOT NULL,
col_int_nokey int NOT NULL,
col_int_key int NOT NULL,
PRIMARY KEY (pk),
KEY col_int_key (col_int_key)
) ENGINE=MyIsam;
INSERT INTO t1 VALUES
(10,1,7), (13,7,3), (18,0,1), (23,8,1);
CREATE TABLE t2 (
pk int NOT NULL,
col_int_key int NOT NULL,
PRIMARY KEY (pk),
KEY col_int_key (col_int_key)
) ENGINE=MyIsam;
INSERT INTO t2 VALUES (1,7);
EXPLAIN SELECT t1a.*
FROM t1 AS t1a
JOIN t1 AS t1b USING ( col_int_nokey )
WHERE t1a.col_int_key IN (
SELECT pk
FROM t2
WHERE col_int_key IN (
SELECT col_int_nokey
FROM t1
)
);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t2	system	PRIMARY,col_int_key	NULL	NULL	NULL	1	NULL
1	SIMPLE	t1a	ref	col_int_key	col_int_key	4	const	1	NULL
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	4	Using where; Start temporary; End temporary
1	SIMPLE	t1b	ALL	NULL	NULL	NULL	NULL	4	Using where
SELECT t1a.*
FROM t1 AS t1a
JOIN t1 AS t1b USING ( col_int_nokey )
WHERE t1a.col_int_key IN (
SELECT pk
FROM t2
WHERE col_int_key IN (
SELECT col_int_nokey
FROM t1
)
);
pk	col_int_nokey	col_int_key
18	0	1
23	8	1
ALTER TABLE t1 ENGINE=Innodb;
ALTER TABLE t2 ENGINE=Innodb;
SELECT t1a.*
FROM t1 AS t1a
JOIN t1 AS t1b USING ( col_int_nokey )
WHERE t1a.col_int_key IN (
SELECT pk
FROM t2
WHERE col_int_key IN (
SELECT col_int_nokey
FROM t1
)
);
pk	col_int_nokey	col_int_key
18	0	1
23	8	1
DROP TABLE t1, t2;
# End of test for bug#13424134.
#
# Bug#13414014: Extra rows in result on semijoin query with where ...
#
CREATE TABLE t1 (
c INT,
d INT,
a VARCHAR(1),
b VARCHAR(1),
KEY a (a)
);
INSERT INTO t1 VALUES
(NULL,8,'x','x'), (7,4,'q','q'), (6,8,'c','c');
CREATE TABLE t2 (
a VARCHAR(1),
KEY a (a)
);
INSERT INTO t2 VALUES
('c'), (NULL), ('x'), ('q');
explain SELECT *
FROM t2 AS ot
WHERE (a, a) IN
(SELECT a, b
FROM t1 AS it
WHERE it.a = 'x' OR it.c > it.d
)
;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	ot	index	a	a	4	NULL	4	Using where; Using index
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	8	test.ot.a,test.ot.a	1	NULL
2	MATERIALIZED	it	ALL	a	NULL	NULL	NULL	3	Using where
SELECT *
FROM t2 AS ot
WHERE (a, a) IN
(SELECT a, b
FROM t1 AS it
WHERE it.a = 'x' OR it.c > it.d
)
;
a
q
x
DROP TABLE t1, t2;
# End of test for bug#13414014.
#
# Bug#13545215: Missing rows on nested in-subquery with materialization
#
CREATE TABLE t1 (
col_int_key int,
col_varchar_key varchar(1),
col_varchar_nokey varchar(1),
KEY col_int_key (col_int_key),
KEY col_varchar_key (col_varchar_key,col_int_key)
) ;
INSERT INTO t1 VALUES
(8,'x','x'), (0,'p','p'), (8,'c','c');
CREATE TABLE t2 (
pk int NOT NULL,
col_varchar_key varchar(1),
col_varchar_nokey varchar(1),
PRIMARY KEY (pk),
KEY col_varchar_key (col_varchar_key)
);
INSERT INTO t2 VALUES
(1,'v','v'), (2,'v','v'), (3,'c','c'), (4,NULL,NULL),
(5,'x','x'), (6,'i','i'), (7,'e','e'), (8,'p','p');
CREATE TABLE t3 (
col_int_nokey int
);
INSERT INTO t3 VALUES (7);
explain SELECT grandparent1.col_varchar_nokey
FROM t1 AS grandparent1 JOIN t1 AS grandparent2 USING (col_int_key)
WHERE grandparent1.col_varchar_key IN (
SELECT col_varchar_nokey
FROM t2 AS parent1
WHERE col_varchar_key IN (
SELECT child1.col_varchar_nokey
FROM t2 AS child1 LEFT JOIN t3 AS child2
ON child1.pk < child2.col_int_nokey
)
);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	Using where
1	SIMPLE	grandparent1	ref	col_int_key,col_varchar_key	col_varchar_key	4	<subquery2>.col_varchar_nokey	1	Using where
1	SIMPLE	grandparent2	ref	col_int_key	col_int_key	5	test.grandparent1.col_int_key	2	Using index
2	MATERIALIZED	child1	ALL	NULL	NULL	NULL	NULL	8	Using where
2	MATERIALIZED	child2	ALL	NULL	NULL	NULL	NULL	1	Using where
2	MATERIALIZED	parent1	ref	col_varchar_key	col_varchar_key	4	test.child1.col_varchar_nokey	2	NULL
SELECT grandparent1.col_varchar_nokey
FROM t1 AS grandparent1 JOIN t1 AS grandparent2 USING (col_int_key)
WHERE grandparent1.col_varchar_key IN (
SELECT col_varchar_nokey
FROM t2 AS parent1
WHERE col_varchar_key IN (
SELECT child1.col_varchar_nokey
FROM t2 AS child1 LEFT JOIN t3 AS child2
ON child1.pk < child2.col_int_nokey
)
);
col_varchar_nokey
c
c
p
x
x
DROP TABLE t1, t2, t3;
# End of test for bug#13545215.
#
# BUG#13553211 - MISSING ROWS ON SELECT WITH IN-SUBQUERY AND
# MATERIALIZATION + SEMIJOIN ON
#
CREATE TABLE t1 (
col_int_key int(11) DEFAULT NULL,
col_varchar_key varchar(1) DEFAULT NULL,
col_varchar_nokey varchar(1) DEFAULT NULL,
KEY col_int_key (col_int_key),
KEY col_varchar_key (col_varchar_key,col_int_key)
);
INSERT INTO t1 VALUES (4,'v','v');
INSERT INTO t1 VALUES (62,'v','v');
INSERT INTO t1 VALUES (7,'c','c');
INSERT INTO t1 VALUES (1,NULL,NULL);
EXPLAIN SELECT
alias1.col_varchar_nokey AS a1_nokey,
alias1.col_varchar_key AS a1_key,
alias2.col_varchar_nokey AS a2_nokey
FROM
t1 AS alias1, t1 AS alias2
WHERE
(alias1.col_varchar_nokey,alias2.col_varchar_nokey)
IN
(
SELECT
SQ2_alias2.col_varchar_nokey, SQ2_alias1.col_varchar_key
FROM
t1 AS SQ2_alias1, t1 AS SQ2_alias2
)
;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	alias1	ALL	NULL	NULL	NULL	NULL	4	Using where
1	SIMPLE	alias2	ALL	NULL	NULL	NULL	NULL	4	Using where
1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	8	test.alias1.col_varchar_nokey,test.alias2.col_varchar_nokey	1	NULL
2	MATERIALIZED	SQ2_alias1	index	col_varchar_key	col_varchar_key	9	NULL	4	Using index
2	MATERIALIZED	SQ2_alias2	ALL	NULL	NULL	NULL	NULL	4	NULL
SELECT
alias1.col_varchar_nokey AS a1_nokey,
alias1.col_varchar_key AS a1_key,
alias2.col_varchar_nokey AS a2_nokey
FROM
t1 AS alias1, t1 AS alias2
WHERE
(alias1.col_varchar_nokey,alias2.col_varchar_nokey)
IN
(
SELECT
SQ2_alias2.col_varchar_nokey, SQ2_alias1.col_varchar_key
FROM
t1 AS SQ2_alias1, t1 AS SQ2_alias2
)
;
a1_nokey	a1_key	a2_nokey
c	c	c
c	c	v
c	c	v
v	v	c
v	v	c
v	v	v
v	v	v
v	v	v
v	v	v
DROP TABLE t1;
#
# Bug#13541406: Wrong result with loosescan on select .. where .. in
#
CREATE TABLE t1 (
col_int_key INT NOT NULL,
col_varchar_nokey VARCHAR(1) NOT NULL,
KEY col_int_key (col_int_key)
) ENGINE=InnoDB;
INSERT INTO t1 VALUES
(7,'v'), (0,'s'), (9,'l'), (3,'y'), (4,'c'), (2,'i'), (5,'h'), (3,'q'),
(1,'a'), (3,'v'), (6,'u'), (7,'s'), (5,'y'), (1,'z'), (204,'h'), (224,'p'),
(9,'e'), (5,'i'), (0,'y'), (3,'w');
CREATE TABLE t2 (
pk INT NOT NULL,
col_int_key INT NOT NULL,
col_varchar_key VARCHAR(1) NOT NULL,
col_varchar_nokey VARCHAR(1) NOT NULL,
PRIMARY KEY (pk),
KEY col_int_key (col_int_key),
KEY col_varchar_key (col_varchar_key,col_int_key)
) ENGINE=InnoDB;
INSERT INTO t2 VALUES
(1,0,'j','j'), (2,8,'v','v'), (3,1,'c','c'), (4,8,'m','m'),
(5,9,'d','d'), (6,24,'d','d'), (7,6,'y','y'), (8,1,'t','t'),
(9,6,'d','d'), (10,2,'s','s'), (11,4,'r','r'), (12,8,'m','m'),
(13,4,'b','b'), (14,4,'x','x'), (15,7,'g','g'), (16,4,'p','p'),
(17,1,'q','q'), (18,9,'w','w'), (19,4,'d','d'), (20,8,'e','e');
# This query should never use a LooseScan strategy
explain SELECT ot1.col_int_key AS field1
FROM t2 AS ot1, t2 AS ot2
WHERE (ot1.col_varchar_key, ot2.col_varchar_nokey) IN (
SELECT it2.col_varchar_nokey, it1.col_varchar_key
FROM t2 AS it1 JOIN t1 AS it2 ON it2.col_int_key = it1.pk);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	20	Start temporary
1	SIMPLE	it1	ref	PRIMARY,col_varchar_key	col_varchar_key	3	test.ot2.col_varchar_nokey	1	Using index
1	SIMPLE	it2	ref	col_int_key	col_int_key	4	test.it1.pk	1	NULL
1	SIMPLE	ot1	ref	col_varchar_key	col_varchar_key	3	test.it2.col_varchar_nokey	1	Using index; End temporary
SELECT ot1.col_int_key AS field1
FROM t2 AS ot1, t2 AS ot2
WHERE (ot1.col_varchar_key, ot2.col_varchar_nokey) IN (
SELECT it2.col_varchar_nokey, it1.col_varchar_key
FROM t2 AS it1 JOIN t1 AS it2 ON it2.col_int_key = it1.pk);
field1
1
1
1
2
6
6
6
6
6
8
8
8
8
8
8
9
DROP TABLE t1, t2;
# End of test for bug#13541406.
#
# Bug#13576391: Missing rows on select with in-subquery and
# batched-key-access=on and semijoin
#
CREATE TABLE t1 (
col_int_nokey int NOT NULL,
col_varchar_key varchar(1) NOT NULL,
KEY col_varchar_key (col_varchar_key)
) engine=InnoDB;
INSERT INTO t1 VALUES
(1,'v'), (7,'s'), (4,'l'), (7,'y'), (0,'c'), (2,'i'), (9,'h'), (4,'q'),
(0,'a'), (9,'v'), (1,'u'), (3,'s'), (8,'y'), (8,'z'), (18,'h'), (84,'p'),
(6,'e'), (3,'i'), (6,'y'), (6,'w');
CREATE TABLE t2 (
col_int_nokey int NOT NULL,
col_varchar_nokey varchar(1) NOT NULL
) engine=InnoDB;
INSERT INTO t2 VALUES
(4,'j'), (6,'v'), (3,'c'), (5,'m'), (3,'d'), (246,'d'), (2,'y'), (9,'t'),
(3,'d'), (8,'s'), (1,'r'), (8,'m'), (8,'b'), (5,'x'), (7,'g'), (5,'p'),
(1,'q'), (6,'w'), (2,'d'), (9,'e');
explain SELECT col_varchar_nokey
FROM t2 AS ot
WHERE col_varchar_nokey IN (
SELECT col_varchar_key
FROM t1 AS it
WHERE it.col_int_nokey <= it.col_int_nokey
AND NOT ot.col_int_nokey < 2
)
ORDER BY col_varchar_nokey;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	ot	ALL	NULL	NULL	NULL	NULL	20	Using where; Using filesort; Start temporary
1	SIMPLE	it	ref	col_varchar_key	col_varchar_key	3	test.ot.col_varchar_nokey	1	End temporary
SELECT col_varchar_nokey
FROM t2 AS ot
WHERE col_varchar_nokey IN (
SELECT col_varchar_key
FROM t1 AS it
WHERE it.col_int_nokey <= it.col_int_nokey
AND NOT ot.col_int_nokey < 2
)
ORDER BY col_varchar_nokey;
col_varchar_nokey
c
e
p
s
v
w
y
ALTER TABLE t1 ENGINE=MyISAM;
ALTER TABLE t2 ENGINE=MyISAM;
explain SELECT col_varchar_nokey
FROM t2 AS ot
WHERE col_varchar_nokey IN (
SELECT col_varchar_key
FROM t1 AS it
WHERE it.col_int_nokey <= it.col_int_nokey
AND NOT ot.col_int_nokey < 2
)
ORDER BY col_varchar_nokey;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	ot	ALL	NULL	NULL	NULL	NULL	20	Using where; Using filesort; Start temporary
1	SIMPLE	it	ref	col_varchar_key	col_varchar_key	3	test.ot.col_varchar_nokey	2	End temporary
SELECT col_varchar_nokey
FROM t2 AS ot
WHERE col_varchar_nokey IN (
SELECT col_varchar_key
FROM t1 AS it
WHERE it.col_int_nokey <= it.col_int_nokey
AND NOT ot.col_int_nokey < 2
)
ORDER BY col_varchar_nokey;
col_varchar_nokey
c
e
p
s
v
w
y
ALTER TABLE t1 ENGINE=Memory;
ALTER TABLE t2 ENGINE=Memory;
explain SELECT col_varchar_nokey
FROM t2 AS ot
WHERE col_varchar_nokey IN (
SELECT col_varchar_key
FROM t1 AS it
WHERE it.col_int_nokey <= it.col_int_nokey
AND NOT ot.col_int_nokey < 2
)
ORDER BY col_varchar_nokey;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	ot	ALL	NULL	NULL	NULL	NULL	20	Using where; Using filesort; Start temporary
1	SIMPLE	it	ref	col_varchar_key	col_varchar_key	3	test.ot.col_varchar_nokey	2	End temporary
SELECT col_varchar_nokey
FROM t2 AS ot
WHERE col_varchar_nokey IN (
SELECT col_varchar_key
FROM t1 AS it
WHERE it.col_int_nokey <= it.col_int_nokey
AND NOT ot.col_int_nokey < 2
)
ORDER BY col_varchar_nokey;
col_varchar_nokey
c
e
p
s
v
w
y
DROP TABLE t1, t2;
# End of test for bug#13576391.
#
# Bug #13589848 "MISSING ROW ON SELECT WITH NESTED IN CLAUSES WHEN LOOSESCAN=ON"
#
CREATE TABLE t1 (
id INT,
col_varchar_key VARCHAR(1),
col_varchar_nokey VARCHAR(1),
KEY (col_varchar_key)
);
INSERT INTO t1 VALUES (100,'m','m'),
(200,'b','b'), (300,'x','x');
CREATE TABLE t2 (
col_varchar_key VARCHAR(1),
col_varchar_nokey VARCHAR(1),
KEY (col_varchar_key)
);
INSERT INTO t2 VALUES ('b','b');
CREATE TABLE t3 (
col_varchar_key VARCHAR(1),
col_varchar_nokey VARCHAR(1),
KEY (col_varchar_key)
);
INSERT INTO t3 VALUES ('k','k');
EXPLAIN SELECT GP1.id
FROM t1 AS GP1 JOIN t3 AS GP2
ON GP2.col_varchar_key <> GP1.col_varchar_nokey
WHERE (GP1.col_varchar_nokey, GP1.col_varchar_nokey)
IN (
SELECT col_varchar_nokey, col_varchar_nokey
FROM t1
WHERE col_varchar_nokey
IN ( SELECT col_varchar_key
FROM t2 LEFT JOIN t3 USING (col_varchar_key) )
)
;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	GP2	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	Using where
1	SIMPLE	GP1	ALL	NULL	NULL	NULL	NULL	3	Using where
2	MATERIALIZED	t2	index	col_varchar_key	col_varchar_key	4	NULL	1	Using index
2	MATERIALIZED	t3	ref	col_varchar_key	col_varchar_key	4	test.t2.col_varchar_key	2	Using index
2	MATERIALIZED	t1	ALL	NULL	NULL	NULL	NULL	3	Using where
SELECT GP1.id
FROM t1 AS GP1 JOIN t3 AS GP2
ON GP2.col_varchar_key <> GP1.col_varchar_nokey
WHERE (GP1.col_varchar_nokey, GP1.col_varchar_nokey)
IN (
SELECT col_varchar_nokey, col_varchar_nokey
FROM t1
WHERE col_varchar_nokey
IN ( SELECT col_varchar_key
FROM t2 LEFT JOIN t3 USING (col_varchar_key) )
)
;
id
200
DROP TABLE t1,t2,t3;
#
# Bug #13596176: Missing row on select with nested in clause when
#                matr=on and bnl=off + MyISAM
#
CREATE TABLE t1 (
int_key int DEFAULT NULL,
vc_key varchar(1) DEFAULT NULL,
vc_nokey varchar(1) DEFAULT NULL,
KEY int_key (int_key),
KEY vc_key (vc_key, int_key)
) ENGINE=MyISAM;
INSERT INTO t1 VALUES
(8,'x','x'), (7,'d','d'), (1,'r','r'), (7,'f','f'),
(9,'y','y'), (NULL,'u','u'), (1,'m','m'), (9,NULL,NULL),
(2,'o','o'), (9,'w','w'), (2,'m','m'), (4,'q','q'),
(0,NULL,NULL), (4,'d','d'), (8,'g','g'), (NULL,'x','x'),
(NULL,'f','f'), (0,'p','p'), (NULL,'j','j'), (8,'c','c');
CREATE TABLE t2 (
int_key int DEFAULT NULL,
vc_key varchar(1) DEFAULT NULL,
KEY int_key (int_key),
KEY vc_key (vc_key, int_key)
) ENGINE=MyISAM;
INSERT INTO t2 VALUES (8,'g');
explain SELECT vc_key
FROM t1 as outr
WHERE (vc_nokey, vc_key ) IN
(SELECT vc_nokey, vc_nokey
FROM t1 middle
WHERE vc_nokey IN
(SELECT child1.vc_key
FROM t2 AS child1 JOIN t1 AS child2 USING (int_key)
)
);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	Using where
1	SIMPLE	outr	ref	vc_key	vc_key	4	<subquery2>.vc_nokey	3	Using where
2	MATERIALIZED	child1	index	int_key,vc_key	vc_key	9	NULL	1	Using where; Using index
2	MATERIALIZED	child2	ref	int_key	int_key	5	test.child1.int_key	3	Using index
2	MATERIALIZED	middle	ALL	NULL	NULL	NULL	NULL	20	Using where
SELECT vc_key
FROM t1 as outr
WHERE (vc_nokey, vc_key ) IN
(SELECT vc_nokey, vc_nokey
FROM t1 middle
WHERE vc_nokey IN
(SELECT child1.vc_key
FROM t2 AS child1 JOIN t1 AS child2 USING (int_key)
)
);
vc_key
g
DROP TABLE t1, t2;
# End of test for bug#13596176.
#
# BUG#11754478: MAX/MIN + SUBQUERY + AND FAILS TO RETURN ANY ROWS
# BUG#13599013: MAX/MIN + SUBQUERY IN WHERE CLAUSE MATCHING NO 
#               ROWS + INDEX DOES NOT RETURN NULL
#
CREATE TABLE t1 (
pk int(11) PRIMARY KEY,
int_key int(11),
KEY int_key (int_key)
);
INSERT INTO t1 VALUES (1,0),(2,0),(3,2),(4,0),(5,3),(6,0);
SELECT MIN(int_key) FROM t1 WHERE (4, 4) IN (SELECT 1, 2);
MIN(int_key)
NULL
SELECT MIN(int_key) FROM t1 WHERE (4, 4) IN (SELECT 4, 4);
MIN(int_key)
0
SELECT MIN(pk) FROM t1 WHERE pk IN (SELECT int_key FROM t1) AND pk = 6;
MIN(pk)
NULL
DROP TABLE t1;
# BUG#13726217: Crash in Item_ident::fix_after_pullout()
CREATE TABLE t1(a INTEGER) engine=innodb;
INSERT INTO t1 VALUES (0);
SELECT 0
FROM t1
WHERE 0 IN
(SELECT 0
FROM t1
WHERE 0 LIKE
(SELECT elt(a, 0) AS b
FROM t1
GROUP BY a
HAVING b
)
);
0
DROP TABLE t1;
# End of test for bug#13726217.
# BUG#13773979: Missing rows on second execution of prepared statement
CREATE TABLE t1 (
col_int_nokey INT,
col_int_key INT,
col_varchar_key VARCHAR(1)
);
INSERT INTO t1 VALUES
(1,7,'v'), (7,0,'s'), (4,9,'l'), (7,3,'y'),
(2,2,'i'), (9,5,'h'), (0,1,'a'), (9,3,'v');
CREATE VIEW v1 AS SELECT * FROM t1;
SELECT *
FROM t1
WHERE col_int_key IN (
SELECT alias1.col_int_nokey AS field1
FROM v1 AS alias1
WHERE alias1.col_varchar_key < 'v'
);
col_int_nokey	col_int_key	col_varchar_key
1	7	v
7	0	s
4	9	l
2	2	i
prepare stmt FROM "SELECT *
FROM t1
WHERE col_int_key IN (
SELECT alias1.col_int_nokey AS field1
FROM v1 AS alias1
WHERE alias1.col_varchar_key < 'v'
)";
execute stmt;
col_int_nokey	col_int_key	col_varchar_key
1	7	v
7	0	s
4	9	l
2	2	i
execute stmt;
col_int_nokey	col_int_key	col_varchar_key
1	7	v
7	0	s
4	9	l
2	2	i
DEALLOCATE PREPARE stmt;
DROP VIEW v1;
DROP TABLE t1;
# End of test for bug#13773979.
#
# BUG#13685026 ASSERTION CUR_SJ_INNER_TABLES == 0 IN
# --OPTIMIZE_TABLE_ORDER::CHOOSE_TABLE_ORDER
#
CREATE TABLE t1 (
col_int_key INT(11) NOT NULL,
col_datetime_key DATETIME NOT NULL,
col_varchar_key VARCHAR(1) NOT NULL,
col_varchar_nokey VARCHAR(1) NOT NULL,
KEY col_int_key (col_int_key),
KEY col_datetime_key (col_datetime_key),
KEY col_varchar_key (col_varchar_key,col_int_key)
);
INSERT INTO t1 VALUES (0,'2002-02-13 17:30:06','j','j');
INSERT INTO t1 VALUES (8,'2008-09-27 00:34:58','v','v');
CREATE TABLE t2 (
col_int_key INT(11) NOT NULL,
col_datetime_key DATETIME NOT NULL,
col_varchar_key VARCHAR(1) NOT NULL,
col_varchar_nokey VARCHAR(1) NOT NULL,
KEY col_int_key (col_int_key),
KEY col_datetime_key (col_datetime_key),
KEY col_varchar_key (col_varchar_key,col_int_key)
);
INSERT INTO t2 VALUES (7,'2003-08-21 00:00:00','b','b');
SET @old_depth=@@optimizer_search_depth;
SET optimizer_search_depth=4;
EXPLAIN SELECT col_datetime_key
FROM t1 as outr
WHERE col_datetime_key IN (
SELECT alias1.col_datetime_key
FROM t1 AS alias1
LEFT JOIN t1 as alias3
STRAIGHT_JOIN ( t2 AS alias4
JOIN t1 AS alias5
ON alias5.col_varchar_key <= alias4.col_varchar_nokey )
ON alias5.col_int_key < alias4.col_int_key
ON alias5.col_varchar_key = alias4.col_varchar_key
);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	Using where
1	SIMPLE	outr	ref	col_datetime_key	col_datetime_key	5	<subquery2>.col_datetime_key	2	Using index
2	MATERIALIZED	alias1	index	NULL	col_datetime_key	5	NULL	2	Using index
2	MATERIALIZED	alias4	ALL	col_int_key,col_varchar_key	NULL	NULL	NULL	1	NULL
2	MATERIALIZED	alias5	ref	col_int_key,col_varchar_key	col_varchar_key	3	test.alias4.col_varchar_key	1	Using where; Using index
2	MATERIALIZED	alias3	index	NULL	col_int_key	4	NULL	2	Using index
SELECT col_datetime_key
FROM t1 as outr
WHERE col_datetime_key IN (
SELECT alias1.col_datetime_key
FROM t1 AS alias1
LEFT JOIN t1 as alias3
STRAIGHT_JOIN ( t2 AS alias4
JOIN t1 AS alias5
ON alias5.col_varchar_key <= alias4.col_varchar_nokey )
ON alias5.col_int_key < alias4.col_int_key
ON alias5.col_varchar_key = alias4.col_varchar_key
);
col_datetime_key
2002-02-13 17:30:06
2008-09-27 00:34:58
DROP TABLE t1,t2;
SET @@optimizer_search_depth=@old_depth;
#
# BUG#13848789: SEGFAULT IN JOIN_READ_NEXT_SAME AT 
#               SQL/SQL_EXECUTOR.CC ON HAVING...IN...JOIN
#
CREATE TABLE t1 (
col_int_key INT,
col_varchar_key VARCHAR(1),
KEY col_int_key (col_int_key),
KEY col_varchar_key (col_varchar_key)
);
INSERT INTO t1 VALUES (8,'x');
CREATE TABLE t2 (
col_varchar_key VARCHAR(1),
KEY col_varchar_key (col_varchar_key)
);
INSERT INTO t2 VALUES ('x'), ('y');
explain SELECT MIN(col_int_key)
FROM t1 as t1_outer
HAVING (1, 2) IN (
SELECT t1_inner.col_int_key, MAX(t1_inner.col_int_key)
FROM t1 as t1_inner JOIN t2
ON t2.col_varchar_key = t1_inner.col_varchar_key
);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	PRIMARY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Select tables optimized away
2	SUBQUERY	t1_inner	system	col_varchar_key	NULL	NULL	NULL	1	NULL
2	SUBQUERY	t2	ref	col_varchar_key	col_varchar_key	4	const	1	Using index
SELECT MIN(col_int_key)
FROM t1 as t1_outer
HAVING (1, 2) IN (
SELECT t1_inner.col_int_key, MAX(t1_inner.col_int_key)
FROM t1 as t1_inner JOIN t2
ON t2.col_varchar_key = t1_inner.col_varchar_key
);
MIN(col_int_key)
DROP TABLE t1,t2;
# Bug#13838810: Segfault in evaluate_null_complemented_join_record
CREATE TABLE t1 (
pk int NOT NULL,
col_int_nokey int DEFAULT NULL,
col_int_key int DEFAULT NULL,
col_varchar_key varchar(1) DEFAULT NULL,
PRIMARY KEY (pk),
KEY col_int_key (col_int_key),
KEY col_varchar_key (col_varchar_key,col_int_key)
) ENGINE=InnoDB;
INSERT INTO t1 VALUES (10,NULL,8,'x');
CREATE TABLE t2 (
pk int NOT NULL,
col_varchar_nokey varchar(1) DEFAULT NULL,
PRIMARY KEY (pk)
) ENGINE=InnoDB;
INSERT INTO t2 VALUES (1,'x');
CREATE TABLE t3 (
pk int NOT NULL,
col_varchar_key varchar(1) DEFAULT NULL,
col_varchar_nokey varchar(1) DEFAULT NULL,
PRIMARY KEY (pk),
KEY col_varchar_key (col_varchar_key)
) ENGINE=InnoDB;
INSERT INTO t3 VALUES
(1,'v','v'), (2,'v','v'), (3,'c','c'), (4,NULL,NULL);
EXPLAIN SELECT table1.pk,table2.pk, table3.pk
FROM t2 AS table1
LEFT JOIN t1 AS table2
LEFT JOIN t1 AS table3
ON table3.col_int_key = table2.col_int_key
ON table3.pk = table2.col_int_nokey AND
table1.col_varchar_nokey IN (
SELECT subquery3_t1.col_varchar_nokey
FROM t3 AS subquery3_t1
LEFT JOIN t1 AS subquery3_t2
ON subquery3_t2.col_varchar_key = subquery3_t1.col_varchar_key
WHERE subquery3_t2.col_int_nokey <> 9
)
;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	table1	ALL	NULL	NULL	NULL	NULL	1	Start temporary
1	SIMPLE	table2	ALL	col_int_key	NULL	NULL	NULL	1	Using where
1	SIMPLE	table3	eq_ref	PRIMARY,col_int_key	PRIMARY	4	test.table2.col_int_nokey	1	Using where
1	SIMPLE	subquery3_t2	ALL	col_varchar_key	NULL	NULL	NULL	1	Using where
1	SIMPLE	subquery3_t1	ref	col_varchar_key	col_varchar_key	4	test.subquery3_t2.col_varchar_key	1	Using where; End temporary
SELECT table1.pk,table2.pk, table3.pk
FROM t2 AS table1
LEFT JOIN t1 AS table2
LEFT JOIN t1 AS table3
ON table3.col_int_key = table2.col_int_key
ON table3.pk = table2.col_int_nokey AND
table1.col_varchar_nokey IN (
SELECT subquery3_t1.col_varchar_nokey
FROM t3 AS subquery3_t1
LEFT JOIN t1 AS subquery3_t2
ON subquery3_t2.col_varchar_key = subquery3_t1.col_varchar_key
WHERE subquery3_t2.col_int_nokey <> 9
)
;
pk	pk	pk
1	NULL	NULL
DROP TABLE t1, t2, t3;
Extra test case for specific code coverage
CREATE TABLE t1(pk INTEGER);
INSERT INTO t1 VALUES(1), (2);
explain SELECT *
FROM t1 AS ot1 LEFT JOIN t1 AS ot2
ON ot1.pk=ot2.pk AND
ot2.pk IN
(SELECT it1.pk
FROM t1 AS it1 LEFT JOIN t1 AS it2 ON it1.pk=it2.pk);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	2	NULL
1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	it1	ALL	NULL	NULL	NULL	NULL	2	Using where; Start temporary
1	SIMPLE	it2	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary
SELECT *
FROM t1 AS ot1 LEFT JOIN t1 AS ot2
ON ot1.pk=ot2.pk AND
ot2.pk IN
(SELECT it1.pk
FROM t1 AS it1 LEFT JOIN t1 AS it2 ON it1.pk=it2.pk);
pk	pk
1	1
2	2
DROP TABLE t1;
# End of test for bug#13838810.
#
# BUG#13685026 ASSERTION CUR_SJ_INNER_TABLES == 0 IN
# --OPTIMIZE_TABLE_ORDER::CHOOSE_TABLE_ORDER
#
CREATE TABLE t1 (
col_int_key INT(11) NOT NULL,
col_datetime_key DATETIME NOT NULL,
col_varchar_key VARCHAR(1) NOT NULL,
col_varchar_nokey VARCHAR(1) NOT NULL,
KEY col_int_key (col_int_key),
KEY col_datetime_key (col_datetime_key),
KEY col_varchar_key (col_varchar_key,col_int_key)
);
INSERT INTO t1 VALUES (0,'2002-02-13 17:30:06','j','j');
INSERT INTO t1 VALUES (8,'2008-09-27 00:34:58','v','v');
CREATE TABLE t2 (
col_int_key INT(11) NOT NULL,
col_datetime_key DATETIME NOT NULL,
col_varchar_key VARCHAR(1) NOT NULL,
col_varchar_nokey VARCHAR(1) NOT NULL,
KEY col_int_key (col_int_key),
KEY col_datetime_key (col_datetime_key),
KEY col_varchar_key (col_varchar_key,col_int_key)
);
INSERT INTO t2 VALUES (7,'2003-08-21 00:00:00','b','b');
SET @old_depth=@@optimizer_search_depth;
SET optimizer_search_depth=4;
EXPLAIN SELECT col_datetime_key
FROM t1 as outr
WHERE col_datetime_key IN (
SELECT alias1.col_datetime_key
FROM t1 AS alias1
LEFT JOIN t1 as alias3
STRAIGHT_JOIN ( t2 AS alias4
JOIN t1 AS alias5
ON alias5.col_varchar_key <= alias4.col_varchar_nokey )
ON alias5.col_int_key < alias4.col_int_key
ON alias5.col_varchar_key = alias4.col_varchar_key
);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	NULL	Using where
1	SIMPLE	outr	ref	col_datetime_key	col_datetime_key	5	<subquery2>.col_datetime_key	2	Using index
2	MATERIALIZED	alias1	index	NULL	col_datetime_key	5	NULL	2	Using index
2	MATERIALIZED	alias4	ALL	col_int_key,col_varchar_key	NULL	NULL	NULL	1	NULL
2	MATERIALIZED	alias5	ref	col_int_key,col_varchar_key	col_varchar_key	3	test.alias4.col_varchar_key	1	Using where; Using index
2	MATERIALIZED	alias3	index	NULL	col_int_key	4	NULL	2	Using index
SELECT col_datetime_key
FROM t1 as outr
WHERE col_datetime_key IN (
SELECT alias1.col_datetime_key
FROM t1 AS alias1
LEFT JOIN t1 as alias3
STRAIGHT_JOIN ( t2 AS alias4
JOIN t1 AS alias5
ON alias5.col_varchar_key <= alias4.col_varchar_nokey )
ON alias5.col_int_key < alias4.col_int_key
ON alias5.col_varchar_key = alias4.col_varchar_key
);
col_datetime_key
2002-02-13 17:30:06
2008-09-27 00:34:58
DROP TABLE t1,t2;
SET @@optimizer_search_depth=@old_depth;
#
# Bug#13845930: Segfault in st_join_table::and_with_condition
#
CREATE TABLE t1 (
col_int INTEGER
);
CREATE TABLE t2 (
col_varchar_1 VARCHAR(1),
col_varchar_2 VARCHAR(1)
);
INSERT INTO t2 VALUES ('x','x'), ('c','c');
PREPARE stmt FROM '
SELECT alias2.col_varchar_2 AS field1
FROM t2 AS alias1
     JOIN
      (t2 AS alias2
       LEFT JOIN t2 AS alias3
       ON (8, 92) IN
          (SELECT sq1_alias1.col_int,
                  sq1_alias2.col_int
           FROM t1 AS sq1_alias1 JOIN t1 AS sq1_alias2
          )
      )
     ON alias3.col_varchar_1 = alias2.col_varchar_2
';
EXECUTE stmt;
field1
EXECUTE stmt;
field1
DEALLOCATE prepare stmt;
DROP TABLE t1, t2;
# End of test for bug#13845930.
#
# Bug#13855925: Assert 'prebuilt->search_tuple->n_fields > 0'
#               in ha_innobase::index_read
#
CREATE TABLE t1 (
pk INTEGER AUTO_INCREMENT,
col_int_nokey INT,
col_int_key INT,
col_varchar_key VARCHAR(1),
col_varchar_nokey VARCHAR(1),
PRIMARY KEY (pk),
KEY (col_varchar_key)
) ENGINE=INNODB;
INSERT INTO t1 (
col_int_key, col_int_nokey,
col_varchar_key, col_varchar_nokey
) VALUES
(4, 2, 'v','v'), (62, 150, 'v','v'), (7, NULL, 'c','c'), (1, 2, NULL, NULL),
(0, 5, 'x','x'), (7, 3, 'i','i'), (7, 1, 'e','e'), (1, 4, 'p','p'),
(7, NULL, 's','s'), (1, 2, 'j','j'), (5, 6, 'z','z'), (2, 6, 'c','c'),
(0, 8, 'a','a'), (1, 2, 'q','q'), (8, 6, 'y','y'), (1, 8, NULL, NULL),
(1, 3, 'r','r'), (9, 3, 'v','v'), (1, 9, NULL, NULL), (5, 6, 'r','r');
CREATE TABLE t2 (
pk INT AUTO_INCREMENT,
col_int_nokey INT,
col_int_key INT,
PRIMARY KEY (pk),
KEY (col_int_key)
) AUTO_INCREMENT=10 ENGINE=INNODB;
INSERT INTO t2 (col_int_key, col_int_nokey) VALUES
(8, NULL), (7, 8), (1, 1), (7, 9), (9, 4), (NULL, 3), (1, 2), (9, NULL),
(2, 2), (9, NULL), (2, 6), (4, 7), (0, 2), (4, 5), (8, 7), (NULL, 6),
(NULL, 6), (0, 2), (NULL, 9), (8, 6);
CREATE TABLE t3 (
pk INT AUTO_INCREMENT,
col_varchar_key VARCHAR(1),
PRIMARY KEY (pk),
KEY (col_varchar_key)
) ENGINE=INNODB;
INSERT INTO t3 (col_varchar_key) VALUES
('c'), ('c'), ('q'), ('g'), ('e'), ('l'), (NULL), ('c'), ('h'), ('d'),
('c'), ('i'), ('t'), ('g'), ('q'), ('l'), ('n'), ('z'), ('n'), ('r'), ('p');
CREATE VIEW v1 AS
SELECT table2.col_varchar_nokey AS field1
FROM t2 AS table1
INNER JOIN (t1 AS table2
STRAIGHT_JOIN t2 AS table3
ON table3.col_int_key = table2.pk AND
table3.col_int_nokey = ANY
(SELECT subquery1_t2.col_int_nokey AS subquery1_field1
FROM t2 AS subquery1_t1
RIGHT OUTER JOIN t1 AS subquery1_t2
INNER JOIN t1 AS subquery1_t3
ON subquery1_t3.col_int_key = subquery1_t2.pk
ON subquery1_t3.col_varchar_key=subquery1_t2.col_varchar_nokey
WHERE subquery1_t1.pk > 1
)
)
ON table3.col_int_key IN
(SELECT subquery2_t1.col_int_key AS subquery2_field1
FROM t2 AS subquery2_t1
RIGHT OUTER JOIN t3 AS subquery2_t2
LEFT OUTER JOIN t1 AS subquery2_t3
ON subquery2_t3.col_varchar_key = subquery2_t2.col_varchar_key
ON subquery2_t3.pk = subquery2_t2.pk
)
;
explain SELECT * FROM v1;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	table1	index	NULL	col_int_key	5	NULL	20	Using index
1	SIMPLE	<subquery3>	ALL	NULL	NULL	NULL	NULL	NULL	NULL
1	SIMPLE	table2	ALL	PRIMARY	NULL	NULL	NULL	20	Using where
1	SIMPLE	table3	ref	col_int_key	col_int_key	5	test.table2.pk	1	Using where
1	SIMPLE	<subquery4>	eq_ref	<auto_key>	<auto_key>	5	test.table2.pk	1	NULL
3	MATERIALIZED	subquery1_t2	ALL	PRIMARY	NULL	NULL	NULL	20	Using where
3	MATERIALIZED	subquery1_t3	ref	col_varchar_key	col_varchar_key	4	test.subquery1_t2.col_varchar_nokey	1	Using where
3	MATERIALIZED	subquery1_t1	index	PRIMARY	col_int_key	5	NULL	20	Using where; Using index
4	MATERIALIZED	subquery2_t3	index	PRIMARY,col_varchar_key	col_varchar_key	4	NULL	20	Using where; Using index
4	MATERIALIZED	subquery2_t2	eq_ref	PRIMARY,col_varchar_key	PRIMARY	4	test.subquery2_t3.pk	1	Using where
4	MATERIALIZED	subquery2_t1	index	col_int_key	col_int_key	5	NULL	20	Using index
SELECT * FROM v1;
field1
v
v
v
v
v
v
v
v
v
v
v
v
v
v
v
v
v
v
v
v
DROP VIEW v1;
DROP TABLE t1,t2,t3;
# End of test for bug#13855925.
#
# Bug#13897959: Segfault in setup_semijoin_dups_elimination()
#
CREATE TABLE t1 (
col_datetime_key DATETIME DEFAULT NULL,
KEY col_datetime_key (col_datetime_key)
) ENGINE=MyISAM;
INSERT INTO t1 VALUES
('2001-04-18 00:00:00'), ('2008-12-18 19:39:55'),
('2000-08-01 12:19:39'), ('2004-09-25 21:29:06'),
('2009-09-20 09:11:48'), ('2004-03-27 09:32:04');
CREATE TABLE t2 (
col_date_nokey date DEFAULT NULL,
col_time_key time DEFAULT NULL,
col_datetime_key datetime DEFAULT NULL,
col_varchar_key varchar(1) DEFAULT NULL,
col_varchar_nokey varchar(1) DEFAULT NULL,
KEY col_time_key (col_time_key),
KEY col_datetime_key (col_datetime_key),
KEY col_varchar_key(col_varchar_key)
) ENGINE=MyISAM;
INSERT INTO t2 VALUES ('1900-01-01',NULL,'2001-11-04 19:07:55','x','x');
SELECT grandparent1.col_varchar_nokey
FROM t2 AS grandparent1 LEFT JOIN t1 USING (col_datetime_key)
WHERE grandparent1.col_varchar_nokey IN (
SELECT col_varchar_nokey
FROM t2 AS parent1
WHERE parent1.col_time_key > grandparent1.col_date_nokey
);
col_varchar_nokey
DROP TABLE t1, t2;
# End of test for bug#13897959.
#
# Bug#13898625 ASSERT `(REMAINING_TABLES_AFTER != 0) ...' IN
# BEST_EXTENSION_BY_LIMITED_SEARCH
#
CREATE TABLE t1 (
pk int(11) NOT NULL,
col_int_nokey INT,
col_int_key INT,
col_varchar_key VARCHAR(1),
col_varchar_nokey VARCHAR(1),
PRIMARY KEY (pk),
KEY col_int_key (col_int_key),
KEY col_varchar_key (col_varchar_key,col_int_key)
);
INSERT INTO t1 VALUES (26,6,NULL,'f','f');
INSERT INTO t1 VALUES (29,6,8,'c','c');
CREATE TABLE t2 (
pk INT NOT NULL,
col_int_nokey INT,
col_int_key INT,
col_varchar_key VARCHAR(1),
col_varchar_nokey VARCHAR(1),
PRIMARY KEY (pk),
KEY col_int_key (col_int_key),
KEY col_varchar_key (col_varchar_key,col_int_key)
);
INSERT INTO t2 VALUES (1,2,4,'v','v');
INSERT INTO t2 VALUES (2,150,62,'v','v');
INSERT INTO t2 VALUES (5,5,0,'x','x');
INSERT INTO t2 VALUES (6,3,7,'i','i');
INSERT INTO t2 VALUES (7,1,7,'e','e');
CREATE VIEW view_c AS SELECT * FROM t2;
PREPARE prep_stmt_7430 FROM 'SELECT SUM( alias1.col_varchar_key ) AS field1
FROM t1 AS alias1
RIGHT JOIN t2 AS alias2
INNER JOIN t1 AS alias3
ON (alias3.col_varchar_key = alias2.col_varchar_key )
ON ( "v" ) IN (
SELECT sq1_alias1.col_varchar_nokey AS sq1_field1
FROM t1 AS sq1_alias1
)
WHERE alias3.pk IN (
SELECT sq2_alias1.col_int_key AS sq2_field1
FROM ( view_c AS sq2_alias1, t1 AS sq2_alias2 )
)
';
EXECUTE prep_stmt_7430;
field1
NULL
EXECUTE prep_stmt_7430;
field1
NULL
EXPLAIN SELECT SUM( alias1.col_varchar_key ) AS field1
FROM t1 AS alias1
RIGHT JOIN t2 AS alias2
INNER JOIN t1 AS alias3
ON (alias3.col_varchar_key = alias2.col_varchar_key )
ON ( "v" ) IN (
SELECT sq1_alias1.col_varchar_nokey AS sq1_field1
FROM t1 AS sq1_alias1
)
WHERE alias3.pk IN (
SELECT sq2_alias1.col_int_key AS sq2_field1
FROM ( view_c AS sq2_alias1, t1 AS sq2_alias2 )
)
;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	alias3	ALL	PRIMARY,col_varchar_key	NULL	NULL	NULL	2	Using where
1	SIMPLE	alias2	ref	col_varchar_key	col_varchar_key	4	test.alias3.col_varchar_key	1	Using index
1	SIMPLE	sq1_alias1	ALL	NULL	NULL	NULL	NULL	2	Using where; Start temporary; End temporary
1	SIMPLE	alias1	index	NULL	col_varchar_key	9	NULL	2	Using index
1	SIMPLE	<subquery3>	eq_ref	<auto_key>	<auto_key>	5	test.alias3.pk	1	NULL
3	MATERIALIZED	sq2_alias2	index	NULL	PRIMARY	4	NULL	2	Using index
3	MATERIALIZED	t2	index	col_int_key	col_int_key	5	NULL	5	Using index
PREPARE prep_stmt_7430 FROM 'SELECT SUM( alias1.col_varchar_key ) AS field1
FROM t1 AS alias1
RIGHT JOIN t2 AS alias2
INNER JOIN t1 AS alias3
ON (alias3.col_varchar_key = alias2.col_varchar_key )
ON ( "v" ) IN (
SELECT sq1_alias1.col_varchar_nokey AS sq1_field1
FROM t1 AS sq1_alias1
)
WHERE alias3.pk IN (
SELECT sq2_alias1.col_int_key AS sq2_field1
FROM ( view_c AS sq2_alias1 , t1 AS sq2_alias2 )
WHERE sq2_alias1.col_varchar_nokey <> alias2.col_varchar_key
AND sq2_alias1.col_varchar_key < "l"
  )
';
EXECUTE prep_stmt_7430;
field1
NULL
EXECUTE prep_stmt_7430;
field1
NULL
EXPLAIN SELECT SUM( alias1.col_varchar_key ) AS field1
FROM t1 AS alias1
RIGHT JOIN t2 AS alias2
INNER JOIN t1 AS alias3
ON (alias3.col_varchar_key = alias2.col_varchar_key )
ON ( "v" ) IN (
SELECT sq1_alias1.col_varchar_nokey AS sq1_field1
FROM t1 AS sq1_alias1
)
WHERE alias3.pk IN (
SELECT sq2_alias1.col_int_key AS sq2_field1
FROM ( view_c AS sq2_alias1 , t1 AS sq2_alias2 )
WHERE sq2_alias1.col_varchar_nokey <> alias2.col_varchar_key
AND sq2_alias1.col_varchar_key < "l"
  )
;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t2	range	col_int_key,col_varchar_key	col_varchar_key	4	NULL	2	Using where; Start temporary
1	SIMPLE	alias3	eq_ref	PRIMARY,col_varchar_key	PRIMARY	4	test.t2.col_int_key	1	Using where
1	SIMPLE	alias2	ref	col_varchar_key	col_varchar_key	4	test.alias3.col_varchar_key	1	Using index
1	SIMPLE	sq2_alias2	index	NULL	PRIMARY	4	NULL	2	Using index
1	SIMPLE	sq1_alias1	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	alias1	index	NULL	col_varchar_key	9	NULL	2	Using index; End temporary
DROP TABLE t1,t2;
DROP VIEW view_c;
#
# Bug#13902463 SEGFAULT IN BITMAP<64U>::MERGE OR ADD_KEY_FIELD
# ON SECOND EXEC OF PREP STMT
#
CREATE TABLE t1 (
pk INT,
col_int_nokey INT,
col_int_key INT,
col_varchar_key VARCHAR(1),
col_varchar_nokey VARCHAR(1),
KEY col_varchar_key (col_varchar_key)
);
CREATE VIEW view_b AS SELECT * FROM t1;
PREPARE prep_stmt_20421 FROM 'SELECT alias2.col_varchar_nokey AS field1
FROM t1 AS alias1
INNER JOIN t1 AS alias2
ON (alias1.col_varchar_key = alias2.col_varchar_nokey
AND ( alias1.col_int_key ) IN (
SELECT t1.col_int_nokey
FROM t1
)
)
WHERE alias1.col_varchar_key IN (
SELECT sq2_alias2.col_varchar_nokey AS sq2_field1
FROM view_b AS sq2_alias1
INNER JOIN t1 AS sq2_alias2
ON (sq2_alias2.col_varchar_key = sq2_alias1.col_varchar_key )
WHERE sq2_alias1.pk > alias2.pk
)
';
EXECUTE prep_stmt_20421;
field1
EXECUTE prep_stmt_20421;
field1
EXPLAIN SELECT alias2.col_varchar_nokey AS field1
FROM t1 AS alias1
INNER JOIN t1 AS alias2
ON (alias1.col_varchar_key = alias2.col_varchar_nokey
AND ( alias1.col_int_key ) IN (
SELECT t1.col_int_nokey
FROM t1
)
)
WHERE alias1.col_varchar_key IN (
SELECT sq2_alias2.col_varchar_nokey AS sq2_field1
FROM view_b AS sq2_alias1
INNER JOIN t1 AS sq2_alias2
ON (sq2_alias2.col_varchar_key = sq2_alias1.col_varchar_key )
WHERE sq2_alias1.pk > alias2.pk
)
;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
ALTER TABLE t1 DROP INDEX col_varchar_key;
PREPARE prep_stmt_20421 FROM 'SELECT alias2.col_varchar_nokey AS field1
FROM t1 AS alias1
INNER JOIN t1 AS alias2
ON (alias1.col_varchar_key = alias2.col_varchar_nokey
AND ( alias1.col_int_key ) IN (
SELECT t1.col_int_nokey
FROM t1
)
)
WHERE alias1.col_varchar_key IN (
SELECT sq2_alias2.col_varchar_nokey AS sq2_field1
FROM view_b AS sq2_alias1
INNER JOIN t1 AS sq2_alias2
ON (sq2_alias2.col_varchar_key = sq2_alias1.col_varchar_key )
WHERE sq2_alias1.pk > alias2.pk
)
';
EXECUTE prep_stmt_20421;
field1
EXECUTE prep_stmt_20421;
field1
EXPLAIN SELECT alias2.col_varchar_nokey AS field1
FROM t1 AS alias1
INNER JOIN t1 AS alias2
ON (alias1.col_varchar_key = alias2.col_varchar_nokey
AND ( alias1.col_int_key ) IN (
SELECT t1.col_int_nokey
FROM t1
)
)
WHERE alias1.col_varchar_key IN (
SELECT sq2_alias2.col_varchar_nokey AS sq2_field1
FROM view_b AS sq2_alias1
INNER JOIN t1 AS sq2_alias2
ON (sq2_alias2.col_varchar_key = sq2_alias1.col_varchar_key )
WHERE sq2_alias1.pk > alias2.pk
)
;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
DROP TABLE t1;
DROP VIEW view_b;
#
# Bug#13907277: Segfault in evaluate_null_complemented_join_record
#
CREATE TABLE t1 (
pk INTEGER,
col_varchar_nokey VARCHAR(1),
col_varchar_key VARCHAR(1),
PRIMARY KEY (pk)
);
INSERT INTO t1 VALUES (1, 'x', 'x');
CREATE TABLE t2 (
pk INTEGER,
PRIMARY KEY (pk)
);
INSERT INTO t2 VALUES (1);
CREATE TABLE t3 (
pk INTEGER,
col_int_nokey INTEGER,
col_int_key INTEGER,
col_varchar_nokey VARCHAR(1),
PRIMARY KEY (pk)
);
INSERT INTO t3 VALUES (1, 6, 5, 'r');
explain SELECT outer_t1.pk, outer_t2.pk
FROM t3 AS outer_t1
RIGHT JOIN t2 AS outer_t2
ON outer_t1.col_int_nokey IN
(SELECT inner_t1.col_int_nokey
FROM t3 AS inner_t1
LEFT JOIN t1 AS inner_t2
INNER JOIN t1 AS inner_t3
ON inner_t3.pk = inner_t2.pk
ON inner_t3.col_varchar_nokey = inner_t2.col_varchar_key
);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	outer_t2	system	NULL	NULL	NULL	NULL	1	NULL
1	SIMPLE	outer_t1	ALL	NULL	NULL	NULL	NULL	1	Using where; Start temporary
1	SIMPLE	inner_t1	ALL	NULL	NULL	NULL	NULL	1	Using where
1	SIMPLE	inner_t2	ALL	PRIMARY	NULL	NULL	NULL	1	NULL
1	SIMPLE	inner_t3	eq_ref	PRIMARY	PRIMARY	4	test.inner_t2.pk	1	Using where; End temporary
SELECT outer_t1.pk, outer_t2.pk
FROM t3 AS outer_t1
RIGHT JOIN t2 AS outer_t2
ON outer_t1.col_int_nokey IN
(SELECT inner_t1.col_int_nokey
FROM t3 AS inner_t1
LEFT JOIN t1 AS inner_t2
INNER JOIN t1 AS inner_t3
ON inner_t3.pk = inner_t2.pk
ON inner_t3.col_varchar_nokey = inner_t2.col_varchar_key
);
pk	pk
1	1
DROP TABLE t1, t2, t3;
# End of test for bug#13907277.
#
# Bug#13955713: Assert 'JOIN->best_read < ...' on second execution
#
CREATE TABLE t1 (
pk INTEGER,
col_varchar_key VARCHAR(1),
col_varchar_nokey VARCHAR(1)
);
PREPARE stmt FROM "
SELECT MIN(alias2.col_varchar_key) AS field1
FROM t1 AS alias1
     INNER JOIN (t1 AS alias2
       INNER JOIN t1 AS alias3
       ON 8 IN
         (SELECT sq1_alias1.pk AS sq1_field2
          FROM t1 AS sq1_alias1
          WHERE 9 IN
             (SELECT SUM(t1_sq1_alias1.pk) AS t1_sq1_field2
              FROM t1 AS t1_sq1_alias1
             )
         )
     )
     ON alias3.col_varchar_nokey = alias2.col_varchar_key
WHERE EXISTS
   (SELECT sq2_alias1.pk AS sq2_field1
    FROM t1 AS sq2_alias1
    WHERE sq2_alias1.col_varchar_key < alias1.col_varchar_nokey
   )
";
EXECUTE stmt;
field1
NULL
EXECUTE stmt;
field1
NULL
DEALLOCATE PREPARE stmt;
DROP TABLE t1;
# End of test for bug#13955713.
#
# Bug#13956813: Segfault in memcpy from Join_cache::write_record_data()
#
CREATE TABLE t1 (
pk INT,
col_varchar_key VARCHAR(1),
col_varchar_nokey VARCHAR(1)
);
CREATE TABLE t2 (
pk INT,
col_varchar_key VARCHAR(1),
col_varchar_nokey VARCHAR(1)
);
INSERT INTO t2 VALUES
(10,'j','j'), (11,'z','z'), (12,'c','c'), (13,'a','a'),
(14,'q','q'), (15,'y','y'), (16,NULL,NULL), (17,'r','r'),
(18,'v','v'), (19,NULL,NULL), (20,'r','r');
CREATE TABLE t3 (
pk INT,
col_int_key INT,
col_varchar_key VARCHAR(1),
KEY col_int_key (col_int_key)
);
INSERT INTO t3 VALUES
(15,NULL,'u'), (16,1,'m'), (17,9,NULL), (18,2,'o'),
(19,9,'w'), (20,2,'m'), (21,4,'q'), (22,0,NULL),
(23,4,'d'), (24,8,'g'), (25,NULL,'x'), (26,NULL,'f'),
(27,0,'p'), (28,NULL,'j'), (29,8,'c');
CREATE VIEW view_inline_0 AS
SELECT t1.*
FROM t1 INNER JOIN t3
ON t1.pk = t3.pk;
CREATE VIEW view_inline_1 AS
SELECT sq2_alias2.col_varchar_key AS sq2_field1,
sq2_alias1.col_varchar_key AS sq2_field2
FROM t3 AS sq2_alias1 LEFT OUTER JOIN t3 AS sq2_alias2
ON sq2_alias1.pk = sq2_alias2.col_int_key;
CREATE VIEW view_inline_2 AS
SELECT 'p', 'p' UNION SELECT 'k', 's';
explain SELECT SUM(alias1.col_varchar_nokey) AS field2
FROM t2 AS alias2
LEFT JOIN (SELECT * FROM view_inline_0) AS alias1
ON alias2.col_varchar_key = alias1.col_varchar_key AND
(alias2.col_varchar_nokey, alias2.col_varchar_key) IN
(SELECT * FROM view_inline_1
)
WHERE (alias1.col_varchar_key, alias1.col_varchar_nokey) IN
(SELECT * FROM view_inline_2
);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	PRIMARY	alias2	ALL	NULL	NULL	NULL	NULL	11	Using where
1	PRIMARY	<subquery3>	eq_ref	<auto_key>	<auto_key>	8	test.alias2.col_varchar_nokey,test.alias2.col_varchar_key	1	NULL
1	PRIMARY	<subquery4>	ALL	NULL	NULL	NULL	NULL	NULL	Using where
1	PRIMARY	<derived2>	ref	<auto_key0>	<auto_key0>	8	test.alias2.col_varchar_key,<subquery4>.My_exp_p	2	NULL
3	MATERIALIZED	sq2_alias1	ALL	NULL	NULL	NULL	NULL	15	NULL
3	MATERIALIZED	sq2_alias2	ref	col_int_key	col_int_key	5	test.sq2_alias1.pk	2	NULL
4	MATERIALIZED	<derived7>	ALL	NULL	NULL	NULL	NULL	2	NULL
7	DERIVED	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
8	UNION	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used
NULL	UNION RESULT	<union7,8>	ALL	NULL	NULL	NULL	NULL	NULL	Using temporary
2	DERIVED	NULL	NULL	NULL	NULL	NULL	NULL	NULL	no matching row in const table
SELECT SUM(alias1.col_varchar_nokey) AS field2
FROM t2 AS alias2
LEFT JOIN (SELECT * FROM view_inline_0) AS alias1
ON alias2.col_varchar_key = alias1.col_varchar_key AND
(alias2.col_varchar_nokey, alias2.col_varchar_key) IN
(SELECT * FROM view_inline_1
)
WHERE (alias1.col_varchar_key, alias1.col_varchar_nokey) IN
(SELECT * FROM view_inline_2
);
field2
NULL
DROP VIEW view_inline_0, view_inline_1, view_inline_2;
DROP TABLE t1, t2, t3;
# End of test for bug#13956813.
#
# Bug#13974177: Assert !(tab->table->regginfo.not_exists_optimize...
#
CREATE TABLE t1 (
pk INTEGER AUTO_INCREMENT,
col_int_nokey INTEGER,
col_int_key INTEGER,
col_varchar_key VARCHAR(1),
col_varchar_nokey VARCHAR(1),
PRIMARY KEY (pk),
KEY (col_int_key),
KEY (col_varchar_key, col_int_key)
);
INSERT INTO t1(col_int_key, col_int_nokey, col_varchar_key, col_varchar_nokey)
VALUES
(0, 4, 'j', 'j'), (8, 6, 'v', 'v'), (1, 3, 'c', 'c'), (8, 5, 'm', 'm'),
(9, 3, 'd', 'd'), (24, 246, 'd', 'd'), (6, 2, 'y', 'y'), (1, 9, 't', 't'),
(6, 3, 'd', 'd'), (2, 8, 's', 's'), (4, 1, 'r', 'r'), (8, 8, 'm', 'm'),
(4, 8, 'b', 'b'), (4, 5, 'x', 'x'), (7, 7, 'g', 'g'), (4, 5, 'p', 'p'),
(1, 1, 'q', 'q'), (9, 6, 'w', 'w'), (4, 2, 'd', 'd'), (8, 9, 'e', 'e');
CREATE TABLE t2 (
pk INTEGER AUTO_INCREMENT,
col_int_nokey INTEGER NOT NULL,
col_time_key TIME NOT NULL,
col_time_nokey TIME NOT NULL,
PRIMARY KEY (pk),
KEY (col_time_key)
) ENGINE=InnoDB;
INSERT INTO t2 (col_int_nokey, col_time_key, col_time_nokey) VALUES
(7, '00:00:00', '00:00:00'), (0, '00:00:00', '00:00:00'),
(9, '06:35:17', '06:35:17'), (3, '18:07:14', '18:07:14'),
(4, '20:36:52', '20:36:52'), (2, '21:29:07', '21:29:07'),
(5, '23:45:57', '23:45:57'), (3, '22:54:57', '22:54:57'),
(1, '18:45:09', '18:45:09'), (3, '14:30:46', '14:30:46'),
(6, '19:23:43', '19:23:43'), (7, '03:39:30', '03:39:30'),
(5, '23:37:52', '23:37:52'), (1, '16:59:30', '16:59:30'),
(204, '22:21:15', '22:21:15'), (224, '12:24:37', '12:24:37'),
(9, '15:02:08', '15:02:08'), (5, '23:59:59', '23:59:59'),
(0, '08:23:30', '08:23:30'), (3, '08:32:22', '08:32:22');
explain SELECT ot1.col_int_key AS x
FROM t1 AS ot2
LEFT JOIN t1 AS ot1
ON ot2.col_varchar_nokey > ot1.col_varchar_key
WHERE (ot1.col_int_nokey, ot1.pk) IN
(SELECT it1.pk AS x,
it1.col_int_nokey AS y
FROM t2 AS it2
LEFT JOIN t2 AS it1
ON it2.col_time_nokey = it1.col_time_key
) AND ot1.pk IS NULL
;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	ot1	const	PRIMARY,col_varchar_key	PRIMARY	4	const	1	Using where
1	SIMPLE	it1	eq_ref	PRIMARY,col_time_key	PRIMARY	4	test.ot1.col_int_nokey	1	Using where
1	SIMPLE	it2	ALL	NULL	NULL	NULL	NULL	20	Using where; Start temporary; End temporary
1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	20	Using where
SELECT ot1.col_int_key AS x
FROM t1 AS ot2
LEFT JOIN t1 AS ot1
ON ot2.col_varchar_nokey > ot1.col_varchar_key
WHERE (ot1.col_int_nokey, ot1.pk) IN
(SELECT it1.pk AS x,
it1.col_int_nokey AS y
FROM t2 AS it2
LEFT JOIN t2 AS it1
ON it2.col_time_nokey = it1.col_time_key
) AND ot1.pk IS NULL
;
x
DROP TABLE t1, t2;
# End of test for bug#13974177.
#
# Bug#13971022: Assert 'keyparts > 0' failed in create_ref_for_key...
#
CREATE TABLE t1 (
pk INT,
col_int_key INT,
col_varchar_key VARCHAR(1),
PRIMARY KEY (pk),
KEY col_varchar_key (col_varchar_key,col_int_key)
);
CREATE TABLE t2 (
pk INT,
col_int_key INT,
col_varchar_key VARCHAR(1),
col_varchar_nokey VARCHAR(1),
PRIMARY KEY (pk)
) ENGINE=InnoDB;
CREATE TABLE t3 (
i INT
);
explain SELECT table1.pk AS field1
FROM ( SELECT subquery1_t1. *
FROM t2 AS subquery1_t1
JOIN t2 AS subquery1_t2
ON subquery1_t2.pk = subquery1_t1.pk) AS table1
STRAIGHT_JOIN t2 AS table2
ON table1.col_int_key IN (SELECT 7 FROM t3)
WHERE table1.col_varchar_nokey IN
(SELECT subquery3_t1.col_varchar_key AS subquery3_field1
FROM t1 AS subquery3_t1
)
;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	PRIMARY	subquery3_t1	index	col_varchar_key	col_varchar_key	9	NULL	0	Using where; Using index
1	PRIMARY	<subquery3>	ALL	NULL	NULL	NULL	NULL	NULL	NULL
1	PRIMARY	<derived2>	ref	<auto_key0>	<auto_key0>	9	<subquery3>.7,test.subquery3_t1.col_varchar_key	2	Using where
1	PRIMARY	table2	index	NULL	PRIMARY	4	NULL	1	Using index
3	MATERIALIZED	t3	ALL	NULL	NULL	NULL	NULL	0	NULL
2	DERIVED	subquery1_t1	ALL	PRIMARY	NULL	NULL	NULL	1	NULL
2	DERIVED	subquery1_t2	eq_ref	PRIMARY	PRIMARY	4	test.subquery1_t1.pk	1	Using index
SELECT table1.pk AS field1
FROM ( SELECT subquery1_t1. *
FROM t2 AS subquery1_t1
JOIN t2 AS subquery1_t2
ON subquery1_t2.pk = subquery1_t1.pk) AS table1
STRAIGHT_JOIN t2 AS table2
ON table1.col_int_key IN (SELECT 7 FROM t3)
WHERE table1.col_varchar_nokey IN
(SELECT subquery3_t1.col_varchar_key AS subquery3_field1
FROM t1 AS subquery3_t1
)
;
field1
DROP TABLE t1, t2, t3;
# End of test for bug#13971022.
#
# Bug#13623473 "MISSING ROWS ON SELECT AND JOIN WITH
# TIME/DATETIME COMPARE" - Subquery part of test.
#
SET TIMESTAMP=UNIX_TIMESTAMP('2012-01-31 10:14:35');
CREATE TABLE t1 (
pk INT NOT NULL,
col_int_nokey INT,
col_int_key INT NOT NULL,
PRIMARY KEY (pk),
KEY col_int_key (col_int_key)
) ENGINE=InnoDB;
INSERT INTO t1 VALUES (10,1,7), (11,7,0), (12,4,9), (13,7,3),
(14,0,4), (15,2,2), (16,9,5), (17,4,3), (18,0,1), (19,9,3), (20,1,6),
(21,3,7), (22,8,5), (23,8,1), (24,18,204), (25,84,224), (26,6,9),
(27,3,5), (28,6,0), (29,6,3);
CREATE TABLE t2 (
col_int_nokey INT NOT NULL,
col_datetime_key DATETIME NOT NULL,
col_varchar_key VARCHAR(1) NOT NULL,
KEY col_datetime_key (col_datetime_key),
KEY col_varchar_key (col_varchar_key)
) ENGINE=InnoDB;
INSERT INTO t2 VALUES (1,'2001-11-04 19:07:55','k');
CREATE TABLE t3 (
col_time_key TIME,
KEY col_time_key (col_time_key)
) ENGINE=InnoDB;
INSERT INTO t3 VALUES ('21:22:34'), ('10:50:38'), ('00:21:38'),
('04:08:02'), ('16:25:11'), ('10:14:58'), ('19:47:59'), ('11:14:24'),
('00:00:00'), ('00:00:00'), ('15:57:25'), ('07:05:51'), ('19:22:21'),
('03:53:16'), ('09:16:38'), ('15:37:26'), ('00:00:00'), ('05:03:03'),
('02:59:24'), ('00:01:58');
EXPLAIN EXTENDED SELECT outr.col_int_nokey
FROM t2 as outr
STRAIGHT_JOIN t3 AS outr2
ON outr2.col_time_key > outr.col_datetime_key
WHERE outr.col_int_nokey IN (
SELECT col_int_key
FROM t1 AS innr
WHERE innr.pk >= innr.col_int_nokey
) AND (
outr.col_int_nokey <= 6
OR
outr.col_varchar_key IS NULL
);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	SIMPLE	outr	ALL	col_datetime_key	NULL	NULL	NULL	1	100.00	Using where; Start temporary
1	SIMPLE	innr	ref	col_int_key	col_int_key	4	test.outr.col_int_nokey	1	100.00	Using where; End temporary
1	SIMPLE	outr2	ALL	col_time_key	NULL	NULL	NULL	20	100.00	Range checked for each record (index map: 0x1)
Warnings:
Note	1003	/* select#1 */ select `test`.`outr`.`col_int_nokey` AS `col_int_nokey` from `test`.`t2` `outr` semi join (`test`.`t1` `innr`) straight_join `test`.`t3` `outr2` where ((`test`.`innr`.`col_int_key` = `test`.`outr`.`col_int_nokey`) and (`test`.`outr`.`col_int_nokey` <= 6) and (`test`.`innr`.`pk` >= `test`.`innr`.`col_int_nokey`) and (`test`.`outr2`.`col_time_key` > `test`.`outr`.`col_datetime_key`))
SELECT outr.col_int_nokey
FROM t2 as outr
STRAIGHT_JOIN t3 AS outr2
ON outr2.col_time_key > outr.col_datetime_key
WHERE outr.col_int_nokey IN (
SELECT col_int_key
FROM t1 AS innr
WHERE innr.pk >= innr.col_int_nokey
) AND (
outr.col_int_nokey <= 6
OR
outr.col_varchar_key IS NULL
);
col_int_nokey
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
DROP TABLE t1,t2,t3;
SET TIMESTAMP = DEFAULT;
# End of test for bug#13623473.
#
# Bug#13980954: Missing data on left join + null value + where..in
#
CREATE TABLE t1 (
ik INT,
vc varchar(1)
);
INSERT INTO t1 VALUES (8, 'x'), (NULL, 'x');
CREATE TABLE t2 (
ik INT,
vc varchar(1)
);
INSERT INTO t2 VALUES
(0, 'x'), (7, 'i'), (7, 'e'), (1, 'p'), (7, 's'), (1, 'j');
explain format=json SELECT t2.vc, t2.ik AS t2_ik, t1.ik AS t1_ik
FROM t2 LEFT JOIN t1 ON t2.vc=t1.vc
WHERE t2.vc IN (SELECT vc FROM t2 AS t3);
EXPLAIN
{
  "query_block": {
    "select_id": 1,
    "nested_loop": [
      {
        "table": {
          "table_name": "t2",
          "access_type": "ALL",
          "rows": 6,
          "filtered": 100,
          "attached_condition": "(`test`.`t2`.`vc` is not null)"
        }
      },
      {
        "table": {
          "table_name": "<subquery2>",
          "access_type": "eq_ref",
          "key": "<auto_key>",
          "key_length": "4",
          "ref": [
            "test.t2.vc"
          ],
          "rows": 1,
          "materialized_from_subquery": {
            "using_temporary_table": true,
            "query_block": {
              "table": {
                "table_name": "t3",
                "access_type": "ALL",
                "rows": 6,
                "filtered": 100
              }
            }
          }
        }
      },
      {
        "table": {
          "table_name": "t1",
          "access_type": "ALL",
          "rows": 2,
          "filtered": 100,
          "attached_condition": "<if>(is_not_null_compl(t1), (`test`.`t1`.`vc` = `test`.`t2`.`vc`), true)"
        }
      }
    ]
  }
}
Warnings:
Note	1003	/* select#1 */ select `test`.`t2`.`vc` AS `vc`,`test`.`t2`.`ik` AS `t2_ik`,`test`.`t1`.`ik` AS `t1_ik` from `test`.`t2` semi join (`test`.`t2` `t3`) left join `test`.`t1` on((`test`.`t1`.`vc` = `test`.`t2`.`vc`)) where (`<subquery2>`.`vc` = `test`.`t2`.`vc`)
SELECT t2.vc, t2.ik AS t2_ik, t1.ik AS t1_ik
FROM t2 LEFT JOIN t1 ON t2.vc=t1.vc
WHERE t2.vc IN (SELECT vc FROM t2 AS t3);
vc	t2_ik	t1_ik
x	0	8
x	0	NULL
i	7	NULL
e	7	NULL
p	1	NULL
s	7	NULL
j	1	NULL
DROP TABLE t1, t2;
# End of test for bug#13980954.
#
# Bug#14048292: Segfault in Item_field::result_type on 2nd execution
#               of prep stmt with join of view
#
CREATE TABLE t1 (
col_int INT
);
INSERT INTO t1 VALUES (0), (1);
CREATE VIEW view_t1 AS SELECT * FROM t1;
explain SELECT alias1.col_int
FROM t1 AS alias1
LEFT JOIN view_t1 AS alias2
ON alias1.col_int IN
(SELECT sq1_alias1.col_int
FROM t1 AS sq1_alias1
);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	alias1	ALL	NULL	NULL	NULL	NULL	2	NULL
1	SIMPLE	sq1_alias1	ALL	NULL	NULL	NULL	NULL	2	Using where; Start temporary; End temporary
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	NULL
PREPARE stmt FROM "SELECT alias1.col_int
FROM t1 AS alias1
LEFT JOIN view_t1 AS alias2
ON alias1.col_int IN
(SELECT sq1_alias1.col_int
FROM t1 AS sq1_alias1
)";
EXECUTE stmt;
col_int
0
0
1
1
EXECUTE stmt;
col_int
0
0
1
1
DEALLOCATE PREPARE stmt;
DROP VIEW view_t1;
DROP TABLE t1;
# End of test for bug#14048292.
#
# Bug#14064201: Missing data on join of derived table + WHERE .. IN
#               with two operands
#
CREATE TABLE t1 (
col_varchar_nokey VARCHAR(1)
);
INSERT INTO t1 VALUES
('v'), ('s'), ('l'), ('y'), ('c'), ('i'), ('h'), ('q'), ('a'), ('v'),
('u'), ('s'), ('y'), ('z'), ('h'), ('p'), ('e'), ('i'), ('y'), ('w');
CREATE TABLE t2 (
col_varchar_key VARCHAR(1),
col_varchar_nokey VARCHAR(1),
KEY col_varchar_key(col_varchar_key)
);
INSERT INTO t2 VALUES
('j','j'), ('v','v'), ('c','c'), ('m','m'), ('d','d'), ('d','d'), ('y','y');
explain format=json SELECT *
FROM (SELECT * FROM t2) AS derived1
LEFT JOIN t1
USING (col_varchar_nokey)
WHERE (col_varchar_nokey, col_varchar_nokey) IN
(SELECT col_varchar_nokey, col_varchar_key
FROM t2 AS derived2
);
EXPLAIN
{
  "query_block": {
    "select_id": 1,
    "nested_loop": [
      {
        "table": {
          "table_name": "<subquery3>",
          "access_type": "ALL",
          "attached_condition": "((`<subquery3>`.`col_varchar_key` = `<subquery3>`.`col_varchar_nokey`) and (`<subquery3>`.`col_varchar_nokey` is not null))",
          "materialized_from_subquery": {
            "using_temporary_table": true,
            "query_block": {
              "table": {
                "table_name": "derived2",
                "access_type": "ALL",
                "possible_keys": [
                  "col_varchar_key"
                ],
                "rows": 7,
                "filtered": 100,
                "attached_condition": "(`test`.`derived2`.`col_varchar_key` = `test`.`derived2`.`col_varchar_nokey`)"
              }
            }
          }
        }
      },
      {
        "table": {
          "table_name": "derived1",
          "access_type": "ref",
          "possible_keys": [
            "<auto_key0>"
          ],
          "key": "<auto_key0>",
          "used_key_parts": [
            "col_varchar_nokey"
          ],
          "key_length": "4",
          "ref": [
            "<subquery3>.col_varchar_nokey"
          ],
          "rows": 2,
          "filtered": 100,
          "materialized_from_subquery": {
            "using_temporary_table": true,
            "dependent": false,
            "cacheable": true,
            "query_block": {
              "select_id": 2,
              "table": {
                "table_name": "t2",
                "access_type": "ALL",
                "rows": 7,
                "filtered": 100
              }
            }
          }
        }
      },
      {
        "table": {
          "table_name": "t1",
          "access_type": "ALL",
          "rows": 20,
          "filtered": 100,
          "attached_condition": "<if>(is_not_null_compl(t1), (`test`.`t1`.`col_varchar_nokey` = `derived1`.`col_varchar_nokey`), true)"
        }
      }
    ]
  }
}
Warnings:
Note	1003	/* select#1 */ select `derived1`.`col_varchar_nokey` AS `col_varchar_nokey`,`derived1`.`col_varchar_key` AS `col_varchar_key` from (/* select#2 */ select `test`.`t2`.`col_varchar_key` AS `col_varchar_key`,`test`.`t2`.`col_varchar_nokey` AS `col_varchar_nokey` from `test`.`t2`) `derived1` semi join (`test`.`t2` `derived2`) left join `test`.`t1` on(((`test`.`t1`.`col_varchar_nokey` = `derived1`.`col_varchar_nokey`) and (`test`.`derived2`.`col_varchar_nokey` = `test`.`derived2`.`col_varchar_key`))) where ((`<subquery3>`.`col_varchar_key` = `<subquery3>`.`col_varchar_nokey`) and (`derived1`.`col_varchar_nokey` = `<subquery3>`.`col_varchar_nokey`) and (`test`.`derived2`.`col_varchar_key` = `test`.`derived2`.`col_varchar_nokey`))
SELECT *
FROM (SELECT * FROM t2) AS derived1
LEFT JOIN t1
USING (col_varchar_nokey)
WHERE (col_varchar_nokey, col_varchar_nokey) IN
(SELECT col_varchar_nokey, col_varchar_key
FROM t2 AS derived2
);
col_varchar_nokey	col_varchar_key
j	j
v	v
v	v
c	c
m	m
d	d
d	d
y	y
y	y
y	y
DROP TABLE t1, t2;
CREATE TABLE t1 (
col_int_nokey int NOT NULL,
col_int_key int NOT NULL,
KEY col_int_key (col_int_key)
);
INSERT INTO t1 VALUES
(1,7), (7,0), (4,9), (7,3), (0,4), (2,2), (9,5), (4,3), (0,1), (9,3),
(1,6), (3,7), (8,5), (8,1), (18,204), (84,224), (6,9), (3,5), (6,0), (6,3);
CREATE TABLE t2 (
col_int_nokey int NOT NULL,
col_int_key int NOT NULL,
KEY col_int_key (col_int_key)
);
INSERT INTO t2 VALUES
(4,0), (6,8), (3,1), (5,8), (3,9), (246,24), (2,6), (9,1), (3,6), (8,2),
(1,4), (8,8), (8,4), (5,4), (7,7), (5,4), (1,1), (6,9), (2,4), (9,8);
explain format=json SELECT grandparent1.*
FROM t1 AS grandparent1
LEFT JOIN t1 USING (col_int_nokey)
WHERE (col_int_nokey, col_int_nokey) IN
(SELECT col_int_nokey, col_int_key
FROM t2
);
EXPLAIN
{
  "query_block": {
    "select_id": 1,
    "nested_loop": [
      {
        "table": {
          "table_name": "grandparent1",
          "access_type": "ALL",
          "rows": 20,
          "filtered": 100,
          "attached_condition": "((`test`.`grandparent1`.`col_int_nokey` is not null) and (`test`.`grandparent1`.`col_int_nokey` is not null))"
        }
      },
      {
        "table": {
          "table_name": "<subquery2>",
          "access_type": "eq_ref",
          "key": "<auto_key>",
          "key_length": "8",
          "ref": [
            "test.grandparent1.col_int_nokey",
            "test.grandparent1.col_int_nokey"
          ],
          "rows": 1,
          "materialized_from_subquery": {
            "using_temporary_table": true,
            "query_block": {
              "table": {
                "table_name": "t2",
                "access_type": "ALL",
                "possible_keys": [
                  "col_int_key"
                ],
                "rows": 20,
                "filtered": 100,
                "attached_condition": "(`test`.`t2`.`col_int_key` = `test`.`t2`.`col_int_nokey`)"
              }
            }
          }
        }
      },
      {
        "table": {
          "table_name": "t1",
          "access_type": "ALL",
          "rows": 20,
          "filtered": 100,
          "attached_condition": "<if>(is_not_null_compl(t1), (`test`.`t1`.`col_int_nokey` = `test`.`grandparent1`.`col_int_nokey`), true)"
        }
      }
    ]
  }
}
Warnings:
Note	1003	/* select#1 */ select `test`.`grandparent1`.`col_int_nokey` AS `col_int_nokey`,`test`.`grandparent1`.`col_int_key` AS `col_int_key` from `test`.`t1` `grandparent1` semi join (`test`.`t2`) left join `test`.`t1` on(((`test`.`t1`.`col_int_nokey` = `test`.`grandparent1`.`col_int_nokey`) and (`test`.`t2`.`col_int_nokey` = `test`.`t2`.`col_int_key`))) where ((`<subquery2>`.`col_int_nokey` = `test`.`grandparent1`.`col_int_nokey`) and (`<subquery2>`.`col_int_key` = `test`.`grandparent1`.`col_int_nokey`) and (`test`.`t2`.`col_int_key` = `test`.`t2`.`col_int_nokey`))
SELECT grandparent1.*
FROM t1 AS grandparent1
LEFT JOIN t1 USING (col_int_nokey)
WHERE (col_int_nokey, col_int_nokey) IN
(SELECT col_int_nokey, col_int_key
FROM t2
);
col_int_nokey	col_int_key
1	7
1	7
7	0
7	0
7	3
7	3
1	6
1	6
8	5
8	5
8	1
8	1
DROP TABLE t1, t2;
CREATE TABLE t1 (  
pk int,  
col_int_key int,  
col_datetime_key datetime,  
col_varchar_key varchar(1),  
col_varchar_nokey varchar(1),  
PRIMARY KEY (pk),  
KEY col_int_key (col_int_key),  
KEY col_datetime_key (col_datetime_key),  
KEY col_varchar_key (col_varchar_key,col_int_key)
) engine=MyISAM;
INSERT INTO t1 VALUES
(10,7,'2004-06-06 04:22:12','v','v'), (11,0,'2005-11-13 01:12:31','s','s'),
(12,9,'2002-05-04 01:50:00','l','l'), (13,3,'2004-10-27 10:28:45','y','y'),
(14,4,'2006-07-22 05:24:23','c','c'), (15,2,'2002-05-16 21:34:03','i','i'),
(16,5,'2008-04-17 10:45:30','h','h'), (17,3,'2009-04-21 02:58:02','q','q'),
(18,1,'2008-01-11 11:01:51','a','a'), (19,3,'1900-01-01 00:00:00','v','v'),
(20,6,'2007-05-17 18:24:57','u','u'), (21,7,'2007-08-07 00:00:00','s','s'),
(22,5,'2001-08-28 00:00:00','y','y'), (23,1,'2004-04-16 00:27:28','z','z'),
(24,204,'2005-05-03 07:06:22','h','h'), (25,224,'2009-03-11 17:09:50','p','p'),
(26,9,'2007-12-08 01:54:28','e','e'), (27,5,'2009-07-28 18:19:54','i','i'),
(28,0,'2008-06-08 00:00:00','y','y'), (29,3,'2005-02-09 09:20:26','w','w');
CREATE TABLE t2 (
pk int,
col_int_key int,
col_datetime_key datetime,
col_varchar_key varchar(1),
col_varchar_nokey varchar(1),
PRIMARY KEY (pk),
KEY col_int_key (col_int_key),
KEY col_datetime_key (col_datetime_key),
KEY col_varchar_key (col_varchar_key,col_int_key)
) engine=MyISAM;
INSERT INTO t2 VALUES
(1,0,'2002-02-13 17:30:06','j','j'), (2,8,'2008-09-27 00:34:58','v','v'),
(3,1,'2007-05-28 00:00:00','c','c'), (4,8,'2009-07-25 09:21:20','m','m'),
(5,9,'2002-01-16 00:00:00','d','d'), (6,24,'2006-10-12 04:32:53','d','d'),
(7,6,'2001-02-15 03:08:38','y','y'), (8,1,'2004-10-02 20:31:15','t','t'),
(9,6,'2002-08-20 22:48:00','d','d'), (10,2,'1900-01-01 00:00:00','s','s'),
(11,4,'2005-08-15 00:00:00','r','r'), (12,8,'1900-01-01 00:00:00','m','m'),
(13,4,'2008-05-16 08:09:06','b','b'), (14,4,'2001-01-20 12:47:23','x','x'),
(15,7,'2008-07-02 00:00:00','g','g'), (16,4,'1900-01-01 00:00:00','p','p'),
(17,1,'2002-12-08 11:34:58','q','q'), (18,9,'1900-01-01 00:00:00','w','w'),
(19,4,'1900-01-01 00:00:00','d','d'), (20,8,'2002-08-25 20:35:06','e','e');
SELECT alias1.col_datetime_key
FROM t2 AS alias1
RIGHT JOIN t2 AS alias2
JOIN t2 AS alias3
ON alias3.pk = alias2.pk
ON alias3.col_varchar_nokey = alias2.col_varchar_key OR
alias2.col_varchar_nokey
WHERE (alias2.col_varchar_key, alias2.col_varchar_key) IN
(SELECT sq2_alias2.col_varchar_key, sq2_alias1.col_varchar_nokey
FROM t1 AS sq2_alias1, t1 AS sq2_alias2
WHERE sq2_alias2.col_int_key < 2);
col_datetime_key
1900-01-01 00:00:00
1900-01-01 00:00:00
1900-01-01 00:00:00
1900-01-01 00:00:00
1900-01-01 00:00:00
2001-01-20 12:47:23
2001-02-15 03:08:38
2002-01-16 00:00:00
2002-02-13 17:30:06
2002-08-20 22:48:00
2002-08-25 20:35:06
2002-12-08 11:34:58
2004-10-02 20:31:15
2005-08-15 00:00:00
2006-10-12 04:32:53
2007-05-28 00:00:00
2008-05-16 08:09:06
2008-07-02 00:00:00
2008-09-27 00:34:58
2009-07-25 09:21:20
1900-01-01 00:00:00
1900-01-01 00:00:00
1900-01-01 00:00:00
1900-01-01 00:00:00
1900-01-01 00:00:00
2001-01-20 12:47:23
2001-02-15 03:08:38
2002-01-16 00:00:00
2002-02-13 17:30:06
2002-08-20 22:48:00
2002-08-25 20:35:06
2002-12-08 11:34:58
2004-10-02 20:31:15
2005-08-15 00:00:00
2006-10-12 04:32:53
2007-05-28 00:00:00
2008-05-16 08:09:06
2008-07-02 00:00:00
2008-09-27 00:34:58
2009-07-25 09:21:20
ALTER TABLE t1 DISABLE KEYS;
ALTER TABLE t2 DISABLE KEYS;
explain format=json SELECT alias1.col_datetime_key
FROM t2 AS alias1
RIGHT JOIN t2 AS alias2
JOIN t2 AS alias3
ON alias3.pk = alias2.pk
ON alias3.col_varchar_nokey = alias2.col_varchar_key OR
alias2.col_varchar_nokey
WHERE (alias2.col_varchar_key, alias2.col_varchar_key) IN
(SELECT sq2_alias2.col_varchar_key, sq2_alias1.col_varchar_nokey
FROM t1 AS sq2_alias1, t1 AS sq2_alias2
WHERE sq2_alias2.col_int_key < 2);
EXPLAIN
{
  "query_block": {
    "select_id": 1,
    "nested_loop": [
      {
        "table": {
          "table_name": "<subquery2>",
          "access_type": "ALL",
          "attached_condition": "(`<subquery2>`.`col_varchar_nokey` = `<subquery2>`.`col_varchar_key`)",
          "materialized_from_subquery": {
            "using_temporary_table": true,
            "query_block": {
              "nested_loop": [
                {
                  "table": {
                    "table_name": "sq2_alias1",
                    "access_type": "ALL",
                    "rows": 20,
                    "filtered": 100
                  }
                },
                {
                  "table": {
                    "table_name": "sq2_alias2",
                    "access_type": "ALL",
                    "rows": 20,
                    "filtered": 100,
                    "attached_condition": "((`test`.`sq2_alias2`.`col_varchar_key` = `test`.`sq2_alias1`.`col_varchar_nokey`) and (`test`.`sq2_alias2`.`col_int_key` < 2))"
                  }
                }
              ]
            }
          }
        }
      },
      {
        "table": {
          "table_name": "alias2",
          "access_type": "ALL",
          "possible_keys": [
            "PRIMARY"
          ],
          "rows": 20,
          "filtered": 100,
          "attached_condition": "(`test`.`alias2`.`col_varchar_key` = `<subquery2>`.`col_varchar_key`)"
        }
      },
      {
        "table": {
          "table_name": "alias3",
          "access_type": "eq_ref",
          "possible_keys": [
            "PRIMARY"
          ],
          "key": "PRIMARY",
          "used_key_parts": [
            "pk"
          ],
          "key_length": "4",
          "ref": [
            "test.alias2.pk"
          ],
          "rows": 1,
          "filtered": 100
        }
      },
      {
        "table": {
          "table_name": "alias1",
          "access_type": "ALL",
          "rows": 20,
          "filtered": 100,
          "attached_condition": "<if>(is_not_null_compl(alias1), ((`test`.`alias3`.`col_varchar_nokey` = `test`.`alias2`.`col_varchar_key`) or `test`.`alias2`.`col_varchar_nokey`), true)"
        }
      }
    ]
  }
}
Warnings:
Note	1003	/* select#1 */ select `test`.`alias1`.`col_datetime_key` AS `col_datetime_key` from `test`.`t2` `alias2` semi join (`test`.`t1` `sq2_alias1` join `test`.`t1` `sq2_alias2`) join `test`.`t2` `alias3` left join `test`.`t2` `alias1` on((((`test`.`alias3`.`col_varchar_nokey` = `test`.`alias2`.`col_varchar_key`) and (`test`.`sq2_alias2`.`col_varchar_key` = `test`.`sq2_alias1`.`col_varchar_nokey`)) or `test`.`alias2`.`col_varchar_nokey`)) where ((`test`.`alias3`.`pk` = `test`.`alias2`.`pk`) and (`<subquery2>`.`col_varchar_nokey` = `<subquery2>`.`col_varchar_key`) and (`test`.`alias2`.`col_varchar_key` = `<subquery2>`.`col_varchar_key`) and (`test`.`sq2_alias2`.`col_varchar_key` = `test`.`sq2_alias1`.`col_varchar_nokey`) and (`test`.`sq2_alias2`.`col_int_key` < 2))
SELECT alias1.col_datetime_key
FROM t2 AS alias1
RIGHT JOIN t2 AS alias2
JOIN t2 AS alias3
ON alias3.pk = alias2.pk
ON alias3.col_varchar_nokey = alias2.col_varchar_key OR
alias2.col_varchar_nokey
WHERE (alias2.col_varchar_key, alias2.col_varchar_key) IN
(SELECT sq2_alias2.col_varchar_key, sq2_alias1.col_varchar_nokey
FROM t1 AS sq2_alias1, t1 AS sq2_alias2
WHERE sq2_alias2.col_int_key < 2);
col_datetime_key
2002-02-13 17:30:06
2008-09-27 00:34:58
2007-05-28 00:00:00
2009-07-25 09:21:20
2002-01-16 00:00:00
2006-10-12 04:32:53
2001-02-15 03:08:38
2004-10-02 20:31:15
2002-08-20 22:48:00
1900-01-01 00:00:00
2005-08-15 00:00:00
1900-01-01 00:00:00
2008-05-16 08:09:06
2001-01-20 12:47:23
2008-07-02 00:00:00
1900-01-01 00:00:00
2002-12-08 11:34:58
1900-01-01 00:00:00
1900-01-01 00:00:00
2002-08-25 20:35:06
2002-02-13 17:30:06
2008-09-27 00:34:58
2007-05-28 00:00:00
2009-07-25 09:21:20
2002-01-16 00:00:00
2006-10-12 04:32:53
2001-02-15 03:08:38
2004-10-02 20:31:15
2002-08-20 22:48:00
1900-01-01 00:00:00
2005-08-15 00:00:00
1900-01-01 00:00:00
2008-05-16 08:09:06
2001-01-20 12:47:23
2008-07-02 00:00:00
1900-01-01 00:00:00
2002-12-08 11:34:58
1900-01-01 00:00:00
1900-01-01 00:00:00
2002-08-25 20:35:06
DROP TABLE t1, t2;
# End of test for bug#14064201.
#
# Bug#18223655:ASSERTION FAILED: (INT)IDX >= 0
#               && IDX < PARENT_JOIN->TABLES
#
CREATE TABLE b (d INT);
CREATE TABLE c (a INT, b INT,c INT,d BLOB NOT NULL);
SELECT(SELECT  1
FROM b WHERE(SELECT 1 IN (SELECT 1 FROM b WHERE 1 NOT BETWEEN d AND 1)
FROM  b) IN (SELECT d FROM c)) as cc FROM  b;
cc
INSERT INTO b VALUE(1);
INSERT INTO c VALUES(1,2,3,'1'),(2,3,4,'1'),(3,4,5,'C');
SELECT(SELECT d FROM b WHERE(SELECT d IN 
(SELECT d FROM b WHERE 1 NOT BETWEEN d AND 1) FROM b) IN
(SELECT d FROM c)) as cc FROM  c;
cc
1
1
1
DROP TABLE b,c;
#
# Bug#18447874:WRONG RESULT COMING FROM SEMI-JOIN 
#
CREATE TABLE b (
d INT(11)
);
CREATE TABLE c (
d BLOB
) ;
CREATE TABLE d (
b INT(11)
);
INSERT INTO b VALUES(1),(2),(4);
INSERT INTO c VALUES(1),(2),(3);
SELECT  1 FROM b  WHERE (SELECT 1 FROM d ) IN (SELECT d FROM c) ;
1
INSERT INTO d VALUES(2);
SELECT  1 FROM b  WHERE (SELECT 1 FROM d ) IN (SELECT d FROM c) ;
1
1
1
1
DROP TABLE b,c,d;
#
# Bug#17292723:INCORRECT RESULT FOR (SELECT...) IN (SELECT...) STATEMENT
#
CREATE TABLE t1 (
ID int(11) NOT NULL AUTO_INCREMENT,
id2 int(11) DEFAULT NULL,
id3 int(11) DEFAULT NULL,
id4 varchar(150) COLLATE utf8_spanish_ci NOT NULL,
id5 int(11) DEFAULT NULL,
PRIMARY KEY (ID),
KEY id2 (id2),
KEY id3 (id3),
KEY id5 (id5)
) ENGINE=InnoDB;
INSERT INTO t1 VALUES
(123,1,1,'1',NULL),
(124,1,1,'2',NULL),
(125,1,1,'4',NULL),
(126,1,1,'3',NULL),
(127,1,1,'6',NULL),
(128,1,1,'8',NULL);
CREATE TABLE t2 (
id6 int(11) NOT NULL,
id7 int(11) NOT NULL,
PRIMARY KEY (id6,id7),
KEY id7 (id7)
) ENGINE=InnoDB;
INSERT INTO t2 VALUES (126,123),(130,123),(135,123);
SELECT ID
FROM t1 p0
WHERE  p0.id3=1
AND ( (SELECT p1.id FROM t1 p1 WHERE p1.id=123) IN (SELECT p3.id FROM t2
p2, t1 p3 WHERE p0.id=p2.id6 AND p2.id7=p3.id));
ID
126
DROP TABLE t1,t2;
#
# Bug#18194196: OPTIMIZER EXECUTES STATEMENT INPERFORMANT 
#
CREATE TABLE t1 (uid INTEGER, fid INTEGER, INDEX(uid));
INSERT INTO t1 VALUES
(1,1), (1,2), (1,3), (1,4),
(2,5), (2,6), (2,7), (2,8),
(3,1), (3,2), (3,9);
CREATE TABLE t2 (uid INT PRIMARY KEY, name VARCHAR(128), INDEX(name));
INSERT INTO t2 VALUES
(1, "A"), (2, "B"), (3, "C"), (4, "D"), (5, "E"),
(6, "F"), (7, "G"), (8, "H"), (9, "I");
CREATE TABLE t3 (uid INT, fid INT, INDEX(uid));
INSERT INTO t3 VALUES
(1,1), (1,2), (1,3),(1,4),
(2,5), (2,6), (2,7), (2,8),
(3,1), (3,2), (3,9);
CREATE TABLE t4 (uid INT PRIMARY KEY, name VARCHAR(128), INDEX(name));
INSERT INTO t4 VALUES
(1, "A"), (2, "B"), (3, "C"), (4, "D"), (5, "E"),
(6, "F"), (7, "G"), (8, "H"), (9, "I");
ANALYZE TABLE t1,t2,t3,t4;
Table	Op	Msg_type	Msg_text
test.t1	analyze	status	OK
test.t2	analyze	status	OK
test.t3	analyze	status	OK
test.t4	analyze	status	OK
EXPLAIN SELECT name FROM t2, t1
WHERE t1.uid IN (SELECT t4.uid FROM t4, t3 WHERE t3.uid=1 AND t4.uid=t3.fid)
AND t2.uid=t1.fid;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t3	ref	uid	uid	5	const	4	Using where; Start temporary
1	SIMPLE	t4	eq_ref	PRIMARY	PRIMARY	4	test.t3.fid	1	Using index
1	SIMPLE	t1	ref	uid	uid	5	test.t3.fid	4	Using where; End temporary
1	SIMPLE	t2	eq_ref	PRIMARY	PRIMARY	4	test.t1.fid	1	NULL
FLUSH STATUS;
SELECT name FROM t2, t1
WHERE t1.uid IN (SELECT t4.uid FROM t4, t3 WHERE t3.uid=1 AND t4.uid=t3.fid)
AND t2.uid=t1.fid;
name
A
B
C
D
E
F
G
H
A
B
I
SHOW STATUS LIKE '%handler_read%';
Variable_name	Value
Handler_read_first	0
Handler_read_key	20
Handler_read_last	0
Handler_read_next	15
Handler_read_prev	0
Handler_read_rnd	0
Handler_read_rnd_next	0
DROP TABLE t1,t2,t3,t4;
# End of test for Bug#18194196
#
# Bug#21184091 ASSERT `READ_ROWS >= 0.0' AT 
#              COST_MODEL_SERVER::TMPTABLE_READWRITE_COST()
#
CREATE TABLE t1 (
col_int int(11),
pk int(11) NOT NULL,
col_int_key int(11) ,
col_varchar varchar(1),
PRIMARY KEY (pk)
) ENGINE=MyISAM;
CREATE TABLE t2 (
col_int int(11),
col_varchar varchar(1)
) ENGINE=MyISAM;
INSERT INTO t2 VALUES (19,'x');
INSERT INTO t2 VALUES (20,'z');
SELECT table1.col_varchar
FROM (t2 AS table1 RIGHT JOIN
((t2 STRAIGHT_JOIN t1 ON (t1.col_varchar = t2.col_varchar)))
ON (t1.pk = t2.col_int))
WHERE (t1.pk IN (SELECT t1.col_int_key
FROM (t1 INNER JOIN t2 ON (t2.col_int = t1.col_int))))
AND table1.col_varchar != 'q';
col_varchar
DROP TABLE t1,t2;
# End of test for Bug#21184091
set @@optimizer_switch=@old_opt_switch;
# End of 5.6 tests
# Bug#21139722: Assertion failed: !(used_tables() & ((table_map) 1) ...
CREATE TABLE t1(a INTEGER) engine=innodb;
CREATE TABLE t2(b INTEGER) engine=innodb;
explain SELECT 1
FROM (SELECT 1 IN (SELECT 1
FROM t1
WHERE (SELECT 1 FROM t2 HAVING b) NOT IN (SELECT 1 FROM t2)
)
FROM t2
) AS z;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	PRIMARY	<derived2>	ALL	NULL	NULL	NULL	NULL	2	NULL
2	DERIVED	t2	ALL	NULL	NULL	NULL	NULL	1	NULL
3	DEPENDENT SUBQUERY	t1	ALL	NULL	NULL	NULL	NULL	1	Using where
5	DEPENDENT SUBQUERY	t2	ALL	NULL	NULL	NULL	NULL	1	Using where
4	DEPENDENT SUBQUERY	t2	ALL	NULL	NULL	NULL	NULL	1	NULL
SELECT 1
FROM (SELECT 1 IN (SELECT 1
FROM t1
WHERE (SELECT 1 FROM t2 HAVING b) NOT IN (SELECT 1 FROM t2)
)
FROM t2
) AS z;
1
DROP TABLE t1, t2;
CREATE TABLE t1(a INTEGER) engine=innodb;
explain SELECT (SELECT a
FROM t1 AS t2
WHERE a IN (SELECT t1.a+t2.a
FROM t1 AS t3))
FROM t1 AS t1;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	1	NULL
2	DEPENDENT SUBQUERY	t2	ALL	NULL	NULL	NULL	NULL	1	Using where
2	DEPENDENT SUBQUERY	t3	ALL	NULL	NULL	NULL	NULL	1	Start temporary; End temporary
SELECT (SELECT a
FROM t1 AS t2
WHERE a IN (SELECT t1.a+t2.a
FROM t1 AS t3))
FROM t1 AS t1;
(SELECT a
FROM t1 AS t2
WHERE a IN (SELECT t1.a+t2.a
FROM t1 AS t3))
DROP TABLE t1;
# End of test for Bug#21139722
#
# Bug#21139402 ASSERTION FAILED: LENGTH > 0 && KEYPARTS != 0, CRASH IN JOIN::OPTIMIZE_KEYUSE
#
CREATE TABLE t1 (a INT, b INT, PRIMARY KEY(a));
CREATE TABLE t2 (c INT PRIMARY KEY);
EXPLAIN SELECT 1
FROM t1
WHERE 1 IN (SELECT (c IS NULL) IN (SELECT a
FROM t1
WHERE b)
FROM t2);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	PRIMARY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
3	DEPENDENT SUBQUERY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
SELECT 1
FROM t1
WHERE 1 IN (SELECT (c IS NULL) IN (SELECT a
FROM t1
WHERE b)
FROM t2);
1
DROP TABLE t1,t2;
#
# Bug #22305361: QUERY WITH MATERIALIZED TABLE RETURNS INCORRECT
#                RESULTS IN 5.6
#
CREATE TABLE t(a INT,b INT);
INSERT INTO t VALUES (1,0),(1,0),(1,0),(1,0),(1,1);
EXPLAIN extended SELECT *
FROM t AS t1
WHERE t1.a IN (SELECT t2.a
FROM t AS t2
WHERE CONCAT(t2.a,'') NOT IN (SELECT t3.a
FROM t AS t3
WHERE t3.b=1));
id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	5	100.00	Using where
1	PRIMARY	<subquery2>	eq_ref	<auto_key>	<auto_key>	5	test.t1.a	1	100.00	NULL
2	MATERIALIZED	t2	ALL	NULL	NULL	NULL	NULL	5	100.00	Using where
3	DEPENDENT SUBQUERY	t3	ALL	NULL	NULL	NULL	NULL	5	100.00	Using where
Warnings:
Note	1003	/* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t` `t1` semi join (`test`.`t` `t2`) where ((`<subquery2>`.`a` = `test`.`t1`.`a`) and (not(<in_optimizer>(concat(`test`.`t2`.`a`,''),<exists>(/* select#3 */ select 1 from `test`.`t` `t3` where ((`test`.`t3`.`b` = 1) and <if>(outer_field_is_not_null, ((<cache>(concat(`test`.`t2`.`a`,'')) = `test`.`t3`.`a`) or isnull(`test`.`t3`.`a`)), true)) having <if>(outer_field_is_not_null, <is_not_null_test>(`test`.`t3`.`a`), true))))))
SELECT *
FROM t AS t1
WHERE t1.a IN (SELECT t2.a
FROM t AS t2
WHERE CONCAT(t2.a,'') NOT IN (SELECT t3.a
FROM t AS t3
WHERE t3.b=1));
a	b
DROP TABLE t;
set optimizer_switch=default;
set optimizer_switch=default;

Filemanager

Name Type Size Permission Actions
1st.result File 483 B 0644
alias.result File 13.42 KB 0644
almost_full.result File 1.11 KB 0644
alter_table-big.result File 3.12 KB 0644
alter_table.result File 108.41 KB 0644
analyze.result File 2.21 KB 0644
ansi.result File 1.14 KB 0644
archive-big.result File 616 B 0644
archive.result File 525.38 KB 0644
archive_bitfield.result File 4.26 KB 0644
archive_debug.result File 355 B 0644
archive_gis.result File 23.13 KB 0644
archive_no_symlink.result File 882 B 0644
archive_plugin.result File 543 B 0644
archive_symlink.result File 2.07 KB 0644
audit_plugin.result File 744 B 0644
auth_rpl.result File 1.85 KB 0644
auto_increment.result File 11.72 KB 0644
backup.result File 4.29 KB 0644
bench_count_distinct.result File 462 B 0644
big_test.require File 17 B 0644
bigint.result File 20.72 KB 0644
binary.result File 5.67 KB 0644
binary_to_hex.result File 5.87 KB 0644
binlog_tx_isolation.result File 1.71 KB 0644
blackhole.result File 613 B 0644
blackhole_plugin.result File 571 B 0644
bool.result File 2.56 KB 0644
bootstrap.result File 267 B 0644
bug12427262.result File 1.86 KB 0644
bug12969156.result File 952 B 0644
bug17076131.result File 322 B 0644
bug33509.result File 2.31 KB 0644
bug39022.result File 1.2 KB 0644
bug46080.result File 669 B 0644
bug46261.result File 382 B 0644
bug46760.result File 1.26 KB 0644
bug47671.result File 287 B 0644
bug58669.result File 480 B 0644
bulk_replace.result File 281 B 0644
cache_innodb.result File 5.42 KB 0644
case.result File 10.06 KB 0644
case_insensitive_file_system.require File 46 B 0644
case_sensitive_file_system.require File 47 B 0644
cast.result File 15.75 KB 0644
change_user.result File 3.31 KB 0644
check.result File 1.42 KB 0644
check_auto_permission.result File 251 B 0644
check_var_limit.require File 8 B 0644
client_xml.result File 2.38 KB 0644
comment_column.result File 140.57 KB 0644
comment_column2.result File 355.68 KB 0644
comment_index.result File 173.03 KB 0644
comment_table.result File 28.72 KB 0644
comments.result File 2.34 KB 0644
commit.result File 13.32 KB 0644
commit_1innodb.result File 19.19 KB 0644
compare.result File 3.17 KB 0644
compress.result File 56.5 KB 0644
concurrent_innodb_safelog.result File 31.89 KB 0644
concurrent_innodb_unsafelog.result File 31.61 KB 0644
connect.result File 12.75 KB 0644
connect_debug.result File 1.48 KB 0644
consistent_snapshot.result File 1.14 KB 0644
constraints.result File 2.55 KB 0644
count_distinct.result File 7.89 KB 0644
count_distinct2.result File 2.21 KB 0644
count_distinct3.result File 278 B 0644
create-big.result File 7.6 KB 0644
create.result File 147.09 KB 0644
create_not_windows.result File 961 B 0644
create_select_tmp.result File 846 B 0644
csv.result File 58.88 KB 0644
csv_alter_table.result File 1.17 KB 0644
csv_not_null.result File 1.75 KB 0644
ctype_ascii.result File 2.11 KB 0644
ctype_big5.result File 33.85 KB 0644
ctype_binary.result File 82.34 KB 0644
ctype_collate.result File 13.5 KB 0644
ctype_cp1250_ch.result File 21.88 KB 0644
ctype_cp1251.result File 96.09 KB 0644
ctype_cp932.result File 996 B 0644
ctype_cp932_binlog_row.result File 607 B 0644
ctype_cp932_binlog_stm.result File 251.22 KB 0644
ctype_create.result File 3.12 KB 0644
ctype_errors.result File 1.66 KB 0644
ctype_eucjpms.result File 400.21 KB 0644
ctype_euckr.result File 434.59 KB 0644
ctype_filename.result File 324 B 0644
ctype_filesystem.result File 341 B 0644
ctype_gb2312.result File 33.29 KB 0644
ctype_gbk.result File 49.63 KB 0644
ctype_gbk_binlog.result File 647 B 0644
ctype_hebrew.result File 254 B 0644
ctype_latin1.result File 118.67 KB 0644
ctype_latin1_de.result File 15.74 KB 0644
ctype_latin2.result File 13.32 KB 0644
ctype_latin2_ch.result File 25.11 KB 0644
ctype_ldml.result File 28.05 KB 0644
ctype_like_range.result File 80.89 KB 0644
ctype_many.result File 42.67 KB 0644
ctype_mb.result File 2.13 KB 0644
ctype_recoding.result File 9.6 KB 0644
ctype_sjis.result File 195.68 KB 0644
ctype_tis620.result File 100.45 KB 0644
ctype_uca.result File 154.97 KB 0644
ctype_ucs.result File 142.4 KB 0644
ctype_ucs2_def.result File 1.05 KB 0644
ctype_ujis.result File 364.9 KB 0644
ctype_ujis_ucs2.result File 548.59 KB 0644
ctype_utf16.result File 44.96 KB 0644
ctype_utf16_def.result File 273 B 0644
ctype_utf16_uca.result File 72.28 KB 0644
ctype_utf16le.result File 50.54 KB 0644
ctype_utf32.result File 48.05 KB 0644
ctype_utf32_uca.result File 75.11 KB 0644
ctype_utf8.result File 167.06 KB 0644
ctype_utf8mb4.result File 80.38 KB 0644
ctype_utf8mb4_heap.result File 72.21 KB 0644
ctype_utf8mb4_innodb.result File 74.62 KB 0644
ctype_utf8mb4_myisam.result File 74.63 KB 0644
ctype_utf8mb4_uca.result File 38.82 KB 0644
date_formats.result File 24.96 KB 0644
ddl_i18n_koi8r.result File 113.33 KB 0644
ddl_i18n_utf8.result File 116.35 KB 0644
deadlock_innodb.result File 2.35 KB 0644
debug_sync.result File 11.85 KB 0644
debug_sync2.result File 434 B 0644
default.result File 8.02 KB 0644
delayed.result File 17.7 KB 0644
delete.result File 16 KB 0644
deprecated_features.result File 2.03 KB 0644
derived.result File 78.6 KB 0644
dirty_close.result File 345 B 0644
disabled_replication.result File 3.01 KB 0644
disconnect_on_expired_password_default.result File 1.4 KB 0644
disconnect_on_expired_password_off.result File 1.36 KB 0644
distinct.result File 30.85 KB 0644
drop-no_root.result File 454 B 0644
drop.result File 5.73 KB 0644
drop_debug.result File 485 B 0644
ds_mrr-big.result File 2.14 KB 0644
dynamic_tracing.result File 813 B 0644
empty_table.result File 229 B 0644
enable_cleartext_plugin.result File 1.35 KB 0644
endspace.result File 6.61 KB 0644
eq_range_idx_stat.result File 4.02 KB 0644
error_simulation.result File 3.23 KB 0644
errors.result File 5.93 KB 0644
events_1.result File 22.18 KB 0644
events_2.result File 17.23 KB 0644
events_bugs.result File 37.35 KB 0644
events_embedded.result File 86 B 0644
events_grant.result File 10.33 KB 0644
events_logs_tests.result File 2.37 KB 0644
events_microsec.result File 810 B 0644
events_restart.result File 4.15 KB 0644
events_scheduling.result File 3.11 KB 0644
events_stress.result File 2.39 KB 0644
events_time_zone.result File 5.4 KB 0644
events_trans.result File 3.49 KB 0644
events_trans_notembedded.result File 1.37 KB 0644
execution_constants.result File 1.05 KB 0644
explain.result File 28.33 KB 0644
explain_json_all.result File 63.13 KB 0644
explain_json_none.result File 64.7 KB 0644
file_contents.result File 181 B 0644
filesort_debug.result File 2.79 KB 0644
fix_priv_tables.result File 1.3 KB 0644
flush.result File 13.75 KB 0644
flush2.result File 882 B 0644
flush_block_commit.result File 1.47 KB 0644
flush_block_commit_notembedded.result File 770 B 0644
flush_read_lock.result File 72.07 KB 0644
flush_read_lock_kill.result File 1.12 KB 0644
flush_table.result File 11.22 KB 0644
foreign_key.result File 3.33 KB 0644
fulltext.result File 28.72 KB 0644
fulltext2.result File 7.54 KB 0644
fulltext3.result File 540 B 0644
fulltext_cache.result File 2.67 KB 0644
fulltext_distinct.result File 1.25 KB 0644
fulltext_left_join.result File 4 KB 0644
fulltext_multi.result File 766 B 0644
fulltext_order_by.result File 5.83 KB 0644
fulltext_plugin.result File 229 B 0644
fulltext_update.result File 930 B 0644
fulltext_var.result File 1.3 KB 0644
func_aes.result File 12.78 KB 0644
func_aes_cfb1.result File 4.5 KB 0644
func_aes_cfb128.result File 4.57 KB 0644
func_aes_cfb8.result File 4.5 KB 0644
func_aes_misc.result File 8.28 KB 0644
func_aes_ofb.result File 4.47 KB 0644
func_analyse.result File 19.01 KB 0644
func_compress.result File 4.84 KB 0644
func_concat.result File 4.03 KB 0644
func_crypt.result File 4.37 KB 0644
func_date_add.result File 3.62 KB 0644
func_default.result File 1.19 KB 0644
func_des_encrypt.result File 1018 B 0644
func_digest.result File 121.48 KB 0644
func_encrypt.result File 10.33 KB 0644
func_encrypt_nossl.result File 4.21 KB 0644
func_encrypt_ucs2.result File 765 B 0644
func_equal.result File 1.27 KB 0644
func_gconcat.result File 48.53 KB 0644
func_group.result File 54.64 KB 0644
func_group_innodb.result File 5.12 KB 0644
func_group_innodb_16k.result File 544 B 0644
func_if.result File 6.05 KB 0644
func_in_all.result File 27.62 KB 0644
func_in_icp.result File 27.26 KB 0644
func_in_icp_mrr.result File 27.57 KB 0644
func_in_mrr.result File 27.29 KB 0644
func_in_mrr_cost.result File 27.01 KB 0644
func_in_none.result File 26.96 KB 0644
func_isnull.result File 827 B 0644
func_like.result File 4.45 KB 0644
func_math.result File 28.06 KB 0644
func_misc.result File 28.2 KB 0644
func_op.result File 1.93 KB 0644
func_regexp.result File 4.37 KB 0644
func_rollback.result File 12.44 KB 0644
func_sapdb.result File 12.38 KB 0644
func_set.result File 8.51 KB 0644
func_str.result File 157.75 KB 0644
func_str_debug.result File 349 B 0644
func_str_no_ps.result File 1.07 KB 0644
func_system.result File 2.63 KB 0644
func_test.result File 13.44 KB 0644
func_time.result File 67.37 KB 0644
func_timestamp.result File 518 B 0644
func_weight_string.result File 3.44 KB 0644
function_defaults.result File 109.23 KB 0644
function_defaults_notembedded.result File 6.38 KB 0644
gcc296.result File 528 B 0644
get_diagnostics.result File 24.96 KB 0644
gis-debug.result File 16.13 KB 0644
gis-precise.result File 28.34 KB 0644
gis-rt-precise.result File 1.86 KB 0644
gis-rtree.result File 78.36 KB 0644
gis.result File 58.53 KB 0644
grant.result File 95.95 KB 0644
grant2.result File 31.12 KB 0644
grant3.result File 7.15 KB 0644
grant4.result File 8.85 KB 0644
grant_cache.result File 5.62 KB 0644
grant_explain_non_select.result File 9.5 KB 0644
grant_lowercase_fs.result File 557 B 0644
greedy_optimizer.result File 592.8 KB 0644
greedy_search.result File 12.42 KB 0644
group_by.result File 84.6 KB 0644
group_min_max.result File 115.33 KB 0644
group_min_max_innodb.result File 17.52 KB 0644
handler_innodb.result File 40.72 KB 0644
handler_myisam.result File 44.62 KB 0644
handler_read_last.result File 1.15 KB 0644
have_big5.require File 79 B 0644
have_binlog_format_mixed.require File 40 B 0644
have_binlog_format_row.require File 38 B 0644
have_binlog_format_statement.require File 44 B 0644
have_binlog_rows_query.require File 53 B 0644
have_compress.require File 38 B 0644
have_cp1250_ch.require File 79 B 0644
have_cp1251.require File 84 B 0644
have_cp866.require File 82 B 0644
have_cp932.require File 83 B 0644
have_crypt.require File 35 B 0644
have_debug.require File 8 B 0644
have_debug_sync.require File 13 B 0644
have_eucjpms.require File 87 B 0644
have_euckr.require File 81 B 0644
have_gb2312.require File 84 B 0644
have_gbk.require File 78 B 0644
have_geometry.require File 38 B 0644
have_koi8r.require File 81 B 0644
have_latin2_ch.require File 78 B 0644
have_local_infile.require File 36 B 0644
have_log_bin.require File 31 B 0644
have_met_timezone.require File 43 B 0644
have_moscow_leap_timezone.require File 46 B 0644
have_mysql_upgrade.result File 21 B 0644
have_ndb_extra.require File 14 B 0644
have_ndbapi_examples.require File 19 B 0644
have_nodebug.require File 8 B 0644
have_optimizer_switch.require File 19 B 0644
have_outfile.require File 55 B 0644
have_partition.require File 42 B 0644
have_perror.require File 14 B 0644
have_profiling.require File 39 B 0644
have_query_cache.require File 41 B 0644
have_sjis.require File 81 B 0644
have_ssl.require File 33 B 0644
have_ssl_is_yes_or_disabled_only.require File 43 B 0644
have_symlink.require File 37 B 0644
have_tis620.require File 81 B 0644
have_ucs2.require File 80 B 0644
have_ujis.require File 81 B 0644
have_utf16.require File 82 B 0644
have_utf32.require File 82 B 0644
have_utf8.require File 80 B 0644
have_utf8mb4.require File 86 B 0644
having.result File 19.72 KB 0644
heap.result File 20.86 KB 0644
heap_auto_increment.result File 894 B 0644
heap_btree.result File 9.32 KB 0644
heap_hash.result File 14.37 KB 0644
help.result File 6.46 KB 0644
host_cache_size_functionality.result File 3.32 KB 0644
implicit_char_to_num_conversion.result File 6.44 KB 0644
implicit_commit.result File 17.71 KB 0644
import_schema_mismatch.result File 538 B 0644
index_merge_delete.result File 25.88 KB 0644
index_merge_innodb.result File 61.63 KB 0644
index_merge_insert-and-replace.result File 12.55 KB 0644
index_merge_intersect_dml.result File 4.96 KB 0644
index_merge_myisam.result File 73.48 KB 0644
index_merge_update.result File 16.41 KB 0644
information_schema-big.result File 2.81 KB 0644
information_schema.result File 87.98 KB 0644
information_schema_chmod.result File 182 B 0644
information_schema_db.result File 9.29 KB 0644
information_schema_inno.result File 4.33 KB 0644
information_schema_parameters.result File 22.11 KB 0644
information_schema_part.result File 9.71 KB 0644
information_schema_routines.result File 28.64 KB 0644
init_connect.result File 2.53 KB 0644
init_file.result File 323 B 0644
innodb_explain_json_non_select_all.result File 220.92 KB 0644
innodb_explain_json_non_select_none.result File 225.15 KB 0644
innodb_explain_non_select_all.result File 119.15 KB 0644
innodb_explain_non_select_none.result File 119.03 KB 0644
innodb_icp.result File 26.73 KB 0644
innodb_icp_all.result File 26.79 KB 0644
innodb_icp_none.result File 26.63 KB 0644
innodb_ignore_builtin.result File 354 B 0644
innodb_log_file_size_functionality.result File 2.79 KB 0644
innodb_mrr.result File 20.3 KB 0644
innodb_mrr_all.result File 20.47 KB 0644
innodb_mrr_cost.result File 20.27 KB 0644
innodb_mrr_cost_all.result File 20.43 KB 0644
innodb_mrr_cost_icp.result File 20.38 KB 0644
innodb_mrr_icp.result File 20.41 KB 0644
innodb_mrr_none.result File 20.22 KB 0644
innodb_mysql_lock.result File 5.52 KB 0644
innodb_mysql_lock2.result File 21.27 KB 0644
innodb_mysql_sync.result File 17.65 KB 0644
innodb_pk_extension_off.result File 14.06 KB 0644
innodb_pk_extension_on.result File 14.33 KB 0644
innodb_recovery_with_upper_case_names.result File 1.21 KB 0644
insert.result File 26.41 KB 0644
insert_debug.result File 1.29 KB 0644
insert_notembedded.result File 5.72 KB 0644
insert_select.result File 14.04 KB 0644
insert_update.result File 9.64 KB 0644
ipv4_as_ipv6.result File 21.69 KB 0644
ipv6.result File 12.49 KB 0644
is_debug_build.require File 32 B 0644
is_embedded.require File 16 B 0644
isam.result File 15.65 KB 0644
join.result File 46.84 KB 0644
join_cache_bka.result File 88.08 KB 0644
join_cache_bka_nixbnl.result File 87.38 KB 0644
join_cache_bkaunique.result File 88.54 KB 0644
join_cache_bnl.result File 86.26 KB 0644
join_cache_nojb.result File 85.38 KB 0644
join_crash.result File 4.59 KB 0644
join_nested.result File 62.76 KB 0644
join_nested_bka.result File 66.92 KB 0644
join_nested_bka_nixbnl.result File 63.95 KB 0644
join_optimizer.result File 2.54 KB 0644
join_outer.result File 63.99 KB 0644
join_outer_bka.result File 64.28 KB 0644
join_outer_bka_nixbnl.result File 62.57 KB 0644
join_outer_innodb.result File 1.86 KB 0644
key.result File 20.98 KB 0644
key_cache.result File 10.91 KB 0644
key_diff.result File 853 B 0644
key_primary.result File 666 B 0644
keywords.result File 6.63 KB 0644
kill.result File 8.37 KB 0644
kill_debug.result File 1.56 KB 0644
limit.result File 4.12 KB 0644
loaddata.result File 16.91 KB 0644
loaddata_autocom_innodb.result File 637 B 0644
loadxml.result File 2.71 KB 0644
locale.result File 5.59 KB 0644
lock.result File 15.03 KB 0644
lock_multi.result File 11.53 KB 0644
lock_multi_bug38499.result File 691 B 0644
lock_multi_bug38691.result File 539 B 0644
lock_sync.result File 31.17 KB 0644
lock_tables_lost_commit.result File 150 B 0644
log_empty_name.result File 247 B 0644
log_errchk.result File 664 B 0644
log_state.result File 9.66 KB 0644
log_state_bug33693.result File 111 B 0644
log_tables-big.result File 996 B 0644
log_tables.result File 40.97 KB 0644
log_tables_debug.result File 838 B 0644
log_tables_upgrade.result File 2.48 KB 0644
long_tmpdir.result File 99 B 0644
lowercase0.require File 45 B 0644
lowercase1.require File 45 B 0644
lowercase2.require File 45 B 0644
lowercase_fs_off.result File 2.05 KB 0644
lowercase_fs_on.result File 75 B 0644
lowercase_mixed_tmpdir.result File 176 B 0644
lowercase_mixed_tmpdir_innodb.result File 190 B 0644
lowercase_table.result File 2.67 KB 0644
lowercase_table2.result File 8.66 KB 0644
lowercase_table4.result File 3.68 KB 0644
lowercase_table_grant.result File 1.5 KB 0644
lowercase_table_qcache.result File 649 B 0644
lowercase_utf8.result File 173 B 0644
lowercase_view.result File 10.22 KB 0644
mdl_sync.result File 89.85 KB 0644
merge-big.result File 728 B 0644
merge.result File 97.6 KB 0644
merge_innodb.result File 1.31 KB 0644
merge_mmap.result File 3.33 KB 0644
metadata.result File 13.88 KB 0644
mix2_myisam.result File 57.76 KB 0644
mix2_myisam_ucs2.result File 15.31 KB 0644
multi_plugin_load.result File 347 B 0644
multi_plugin_load_add.result File 455 B 0644
multi_plugin_load_add2.result File 455 B 0644
multi_statement.result File 563 B 0644
multi_update.result File 23.21 KB 0644
multi_update2.result File 1016 B 0644
multi_update_innodb.result File 2.56 KB 0644
multi_update_tiny_hash.result File 1.5 KB 0644
myisam-blob.result File 1.25 KB 0644
myisam-system.result File 391 B 0644
myisam.result File 90.78 KB 0644
myisam_crash_before_flush_keys.result File 1.15 KB 0644
myisam_debug.result File 1.21 KB 0644
myisam_explain_json_non_select_all.result File 217.3 KB 0644
myisam_explain_json_non_select_none.result File 221.32 KB 0644
myisam_explain_non_select_all.result File 116.26 KB 0644
myisam_explain_non_select_none.result File 115.98 KB 0644
myisam_icp.result File 26.57 KB 0644
myisam_icp_all.result File 26.63 KB 0644
myisam_icp_none.result File 26.45 KB 0644
myisam_mrr.result File 19.24 KB 0644
myisam_mrr_all.result File 19.44 KB 0644
myisam_mrr_cost.result File 19.19 KB 0644
myisam_mrr_cost_all.result File 19.39 KB 0644
myisam_mrr_cost_icp.result File 19.33 KB 0644
myisam_mrr_icp.result File 19.38 KB 0644
myisam_mrr_none.result File 19.14 KB 0644
myisam_recover.result File 4.57 KB 0644
myisam_row_rpl.result File 2.04 KB 0644
myisampack.result File 7.56 KB 0644
mysql-bug41486.result File 465 B 0644
mysql-bug45236.result File 329 B 0644
mysql.result File 8.67 KB 0644
mysql_binary_mode.result File 1.52 KB 0644
mysql_client_test.result File 8.92 KB 0644
mysql_client_test_embedded.result File 111 B 0644
mysql_client_test_qcache.result File 502 B 0644
mysql_comments.result File 5.02 KB 0644
mysql_config_editor.result File 6.6 KB 0644
mysql_cp932.result File 37 B 0644
mysql_embedded.result File 171 B 0644
mysql_embedded_client_test.result File 153 B 0644
mysql_locale_posix.result File 973 B 0644
mysql_not_windows.result File 80 B 0644
mysql_plugin.result File 3.88 KB 0644
mysql_protocols.result File 208 B 0644
mysql_upgrade.result File 26.82 KB 0644
mysql_upgrade_ssl.result File 1.99 KB 0644
mysqladmin.result File 872 B 0644
mysqladmin_shutdown.result File 157 B 0644
mysqlbinlog.result File 30.17 KB 0644
mysqlbinlog_debug.result File 235 B 0644
mysqlbinlog_mixed_or_statment.result File 855 B 0644
mysqlbinlog_raw_mode.result File 8.32 KB 0644
mysqlbinlog_raw_mode_win.result File 8.08 KB 0644
mysqlbinlog_row_big.result File 2.42 KB 0644
mysqlcheck.result File 15.2 KB 0644
mysqld--defaults-file.result File 710 B 0644
mysqld--help-notwin.result File 53.91 KB 0644
mysqld--help-win.result File 54.47 KB 0644
mysqldump-compat.result File 111 B 0644
mysqldump-max.result File 10.95 KB 0644
mysqldump-no-binlog.result File 50 B 0644
mysqldump.result File 280.61 KB 0644
mysqldump_restore.result File 3.78 KB 0644
mysqlhotcopy_archive.result File 1.8 KB 0644
mysqlhotcopy_myisam.result File 2.28 KB 0644
mysqlimport.result File 490 B 0644
mysqlshow.result File 7.56 KB 0644
mysqlslap.result File 6.88 KB 0644
mysqltest.result File 31.15 KB 0644
named_pipe.result File 56.25 KB 0644
ndb_default_cluster.require File 51 B 0644
negation_elimination.result File 8.72 KB 0644
no-threads.result File 329 B 0644
no_binlog.result File 64 B 0644
not_embedded.require File 16 B 0644
not_embedded_server.result File 5.63 KB 0644
not_ndb.require File 39 B 0644
not_openssl.require File 36 B 0644
not_partition.result File 4.14 KB 0644
not_ssl.require File 32 B 0644
not_true.require File 10 B 0644
not_valgrind.require File 17 B 0644
not_windows.require File 7 B 0644
null.result File 14.48 KB 0644
null_key_all.result File 15.6 KB 0644
null_key_icp.result File 15.53 KB 0644
null_key_none.result File 15.47 KB 0644
odbc.result File 954 B 0644
olap.result File 19.13 KB 0644
one_thread_per_connection.require File 44 B 0644
openssl.require File 37 B 0644
openssl_1.result File 8.04 KB 0644
optimizer_bug12837084.result File 13.97 KB 0644
optimizer_debug_sync.result File 1.32 KB 0644
optimizer_switch.result File 19.94 KB 0644
order_by_all.result File 61.42 KB 0644
order_by_icp_mrr.result File 61.37 KB 0644
order_by_none.result File 61.15 KB 0644
order_by_sortkey.result File 2.91 KB 0644
order_fill_sortbuf.result File 262 B 0644
outfile.result File 2.09 KB 0644
outfile_loaddata.result File 10.12 KB 0644
overflow.result File 235 B 0644
packet.result File 5 KB 0644
parser.result File 38.22 KB 0644
parser_bug21114_innodb.result File 25.39 KB 0644
parser_not_embedded.result File 4.42 KB 0644
parser_precedence.result File 23.96 KB 0644
parser_stack.result File 9.54 KB 0644
partition.result File 76.63 KB 0644
partition_archive.result File 4.51 KB 0644
partition_binlog.result File 2.3 KB 0644
partition_binlog_stmt.result File 442 B 0644
partition_blackhole.result File 174 B 0644
partition_bug18198.result File 8.07 KB 0644
partition_cache.result File 5.16 KB 0644
partition_charset.result File 434 B 0644
partition_column.result File 23.07 KB 0644
partition_column_prune.result File 2.83 KB 0644
partition_csv.result File 1.83 KB 0644
partition_datatype.result File 39.34 KB 0644
partition_debug_sync.result File 3.19 KB 0644
partition_disabled.result File 4.59 KB 0644
partition_error.result File 82.17 KB 0644
partition_exchange.result File 37.6 KB 0644
partition_explicit_prune.result File 55.63 KB 0644
partition_federated.result File 271 B 0644
partition_grant.result File 1.54 KB 0644
partition_hash.result File 7.12 KB 0644
partition_index_innodb.result File 4.04 KB 0644
partition_index_myisam.result File 3.21 KB 0644
partition_innodb.result File 30.66 KB 0644
partition_innodb_plugin.result File 5.26 KB 0644
partition_innodb_semi_consistent.result File 2.92 KB 0644
partition_innodb_stmt.result File 1.12 KB 0644
partition_innodb_tablespace.result File 12.76 KB 0644
partition_key_cache.result File 16.74 KB 0644
partition_list.result File 12.92 KB 0644
partition_locking.result File 238.13 KB 0644
partition_locking_4.result File 1.7 KB 0644
partition_mgm.result File 4.7 KB 0644
partition_mgm_err.result File 7.48 KB 0644
partition_mgm_err2.result File 43 B 0644
partition_myisam.result File 7.67 KB 0644
partition_not_blackhole.result File 456 B 0644
partition_not_windows.result File 3.47 KB 0644
partition_open_files_limit.result File 1.02 KB 0644
partition_order.result File 16.29 KB 0644
partition_pruning.result File 166.97 KB 0644
partition_range.result File 33.91 KB 0644
partition_rename_longfilename.result File 2.89 KB 0644
partition_symlink.result File 4.89 KB 0644
partition_sync.result File 1.34 KB 0644
partition_truncate.result File 751 B 0644
partition_utf8.result File 2 KB 0644
partition_windows.result File 1.18 KB 0644
perror-win.result File 453 B 0644
perror.result File 471 B 0644
plugin.result File 7.73 KB 0644
plugin_auth.result File 23.39 KB 0644
plugin_auth_qa.result File 20.77 KB 0644
plugin_auth_qa_1.result File 13.74 KB 0644
plugin_auth_qa_2.result File 8.87 KB 0644
plugin_auth_qa_3.result File 1.14 KB 0644
plugin_auth_sha256.result File 3.97 KB 0644
plugin_auth_sha256_2.result File 1.49 KB 0644
plugin_auth_sha256_server_default.result File 2.7 KB 0644
plugin_auth_sha256_server_default_tls.result File 2.83 KB 0644
plugin_auth_sha256_tls.result File 1.82 KB 0644
plugin_load.result File 76 B 0644
plugin_load_option.result File 321 B 0644
plugin_not_embedded.result File 474 B 0644
preload.result File 3.84 KB 0644
profiling.result File 16.13 KB 0644
ps.result File 116.73 KB 0644
ps_10nestset.result File 2.08 KB 0644
ps_11bugs.result File 5.92 KB 0644
ps_1general.result File 35.91 KB 0644
ps_2myisam.result File 103.82 KB 0644
ps_3innodb.result File 103.36 KB 0644
ps_4heap.result File 103.28 KB 0644
ps_5merge.result File 202.34 KB 0644
ps_ddl.result File 53.68 KB 0644
ps_ddl1.result File 11.06 KB 0644
ps_grant.result File 3.71 KB 0644
ps_not_windows.result File 516 B 0644
python_with_json.require File 27 B 0644
query_cache.result File 75.57 KB 0644
query_cache_28249.result File 2.29 KB 0644
query_cache_debug.result File 8.63 KB 0644
query_cache_disabled.result File 639 B 0644
query_cache_merge.result File 32.41 KB 0644
query_cache_notembedded.result File 6.61 KB 0644
query_cache_ps_no_prot.result File 11.1 KB 0644
query_cache_ps_ps_prot.result File 11.09 KB 0644
query_cache_size_functionality.result File 6.64 KB 0644
query_cache_type_functionality.result File 6.79 KB 0644
query_cache_with_views.result File 4.96 KB 0644
range_all.result File 81.48 KB 0644
range_icp.result File 81.08 KB 0644
range_icp_mrr.result File 81.42 KB 0644
range_mrr.result File 80.98 KB 0644
range_mrr_cost.result File 80.67 KB 0644
range_none.result File 80.63 KB 0644
read_many_rows_innodb.result File 2.83 KB 0644
read_only.result File 6.3 KB 0644
read_only_innodb.result File 4.76 KB 0644
rename.result File 1.58 KB 0644
renamedb.result File 880 B 0644
repair.result File 7.02 KB 0644
replace.result File 1.09 KB 0644
rewrite_general_log.result File 8.33 KB 0644
rewrite_slow_log.result File 2.92 KB 0644
rollback.result File 582 B 0644
round.result File 6.74 KB 0644
row.result File 15.91 KB 0644
rowid_order_innodb.result File 3.32 KB 0644
rpl_colSize.result File 4.39 KB 0644
rpl_extraColmaster_innodb.result File 23.85 KB 0644
rpl_extraColmaster_myisam.result File 23.85 KB 0644
rpl_mysqldump_slave.result File 867 B 0644
schema.result File 2.37 KB 0644
secure_file_priv_win.result File 1.43 KB 0644
select_all.result File 150.09 KB 0644
select_all_bka.result File 150.86 KB 0644
select_all_bka_nixbnl.result File 150.11 KB 0644
select_found.result File 6.17 KB 0644
select_icp_mrr.result File 150.04 KB 0644
select_icp_mrr_bka.result File 150.8 KB 0644
select_icp_mrr_bka_nixbnl.result File 150.06 KB 0644
select_none.result File 149.37 KB 0644
select_none_bka.result File 149.46 KB 0644
select_none_bka_nixbnl.result File 148.66 KB 0644
select_safe.result File 3.92 KB 0644
server_id.require File 32 B 0644
server_id1.require File 34 B 0644
server_uuid.result File 755 B 0644
server_uuid_embedded.result File 325 B 0644
shm.result File 56.74 KB 0644
show_check.result File 71.33 KB 0644
show_processlist.result File 1.84 KB 0644
show_processlist_state.result File 146 B 0644
show_profile.result File 491 B 0644
signal.result File 63.09 KB 0644
signal_code.result File 1020 B 0644
signal_demo1.result File 6.06 KB 0644
signal_demo2.result File 3.86 KB 0644
signal_demo3.result File 3.33 KB 0644
signal_sqlmode.result File 2.51 KB 0644
single_delete_update.result File 24.41 KB 0644
skip_grants.result File 2.47 KB 0644
skip_log_bin.result File 167 B 0644
skip_name_resolve.result File 1.28 KB 0644
slave-running.result File 71 B 0644
slave-stopped.result File 72 B 0644
sort_buffer_size_functionality.result File 6.48 KB 0644
sp-big.result File 1.47 KB 0644
sp-bugs.result File 7.66 KB 0644
sp-code.result File 28.23 KB 0644
sp-destruct.result File 6.84 KB 0644
sp-dynamic.result File 9.55 KB 0644
sp-error.result File 81.43 KB 0644
sp-fib.result File 656 B 0644
sp-lock.result File 21.45 KB 0644
sp-no-code.result File 307 B 0644
sp-prelocking.result File 7.09 KB 0644
sp-security.result File 23.51 KB 0644
sp-threads.result File 2.01 KB 0644
sp-ucs2.result File 4.78 KB 0644
sp-vars.result File 28.09 KB 0644
sp.result File 183.74 KB 0644
sp_debug.result File 735 B 0644
sp_gis.result File 829 B 0644
sp_notembedded.result File 10 KB 0644
sp_stress_case.result File 2.53 KB 0644
sp_sync.result File 3.17 KB 0644
sp_trans.result File 14.3 KB 0644
sp_trans_log.result File 891 B 0644
sp_validation.result File 34.67 KB 0644
sql_mode.result File 17.53 KB 0644
ssl-big.result File 69 B 0644
ssl-crl-revoked-crl.result File 76 B 0644
ssl-sha512.result File 376 B 0644
ssl.result File 56.89 KB 0644
ssl_8k_key.result File 42 B 0644
ssl_and_innodb.result File 183 B 0644
ssl_ca.result File 857 B 0644
ssl_cipher.result File 254 B 0644
ssl_compress.result File 56.52 KB 0644
ssl_connect.result File 10 B 0644
ssl_crl.result File 1.14 KB 0644
ssl_crl_clients-valid.result File 1.01 KB 0644
ssl_crl_clients.result File 427 B 0644
ssl_crl_clients_valid.result File 620 B 0644
ssl_crl_crlpath.result File 728 B 0644
ssl_mode.result File 1.29 KB 0644
ssl_mode_no_ssl.result File 1.06 KB 0644
ssl_verify_identity.result File 1 KB 0644
status.result File 9.83 KB 0644
status2.result File 1.35 KB 0644
status_bug17954.result File 582 B 0644
status_debug.result File 1.06 KB 0644
strict.result File 64.41 KB 0644
strict_autoinc_1myisam.result File 654 B 0644
strict_autoinc_2innodb.result File 654 B 0644
strict_autoinc_3heap.result File 654 B 0644
subquery_all.result File 258.33 KB 0644
subquery_all_bka.result File 258.65 KB 0644
subquery_all_bka_nixbnl.result File 258.42 KB 0644
subquery_bugs.result File 3.05 KB 0644
subquery_mat.result File 94.96 KB 0644
subquery_mat_all.result File 87.69 KB 0644
subquery_mat_none.result File 89.71 KB 0644
subquery_nomat_nosj.result File 258.39 KB 0644
subquery_nomat_nosj_bka.result File 258.64 KB 0644
subquery_nomat_nosj_bka_nixbnl.result File 258.21 KB 0644
subquery_none.result File 258.29 KB 0644
subquery_none_bka.result File 258.38 KB 0644
subquery_none_bka_nixbnl.result File 257.96 KB 0644
subquery_sj_all.result File 368.6 KB 0644
subquery_sj_all_bka.result File 370.21 KB 0644
subquery_sj_all_bka_nixbnl.result File 359 KB 0644
subquery_sj_all_bkaunique.result File 370.58 KB 0644
subquery_sj_dupsweed.result File 370.17 KB 0644
subquery_sj_dupsweed_bka.result File 370.42 KB 0644
subquery_sj_dupsweed_bka_nixbnl.result File 352.52 KB 0644
subquery_sj_dupsweed_bkaunique.result File 370.45 KB 0644
subquery_sj_firstmatch.result File 363.23 KB 0644
subquery_sj_firstmatch_bka.result File 363.32 KB 0644
subquery_sj_firstmatch_bka_nixbnl.result File 351.28 KB 0644
subquery_sj_firstmatch_bkaunique.result File 363.35 KB 0644
subquery_sj_innodb_all.result File 4.74 KB 0644
subquery_sj_innodb_all_bka.result File 4.93 KB 0644
subquery_sj_innodb_all_bka_nixbnl.result File 4.95 KB 0644
subquery_sj_innodb_all_bkaunique.result File 4.99 KB 0644
subquery_sj_innodb_none.result File 4.62 KB 0644
subquery_sj_innodb_none_bka.result File 4.71 KB 0644
subquery_sj_innodb_none_bka_nixbnl.result File 4.7 KB 0644
subquery_sj_innodb_none_bkaunique.result File 4.75 KB 0644
subquery_sj_loosescan.result File 370.08 KB 0644
subquery_sj_loosescan_bka.result File 370.33 KB 0644
subquery_sj_loosescan_bka_nixbnl.result File 352.5 KB 0644
subquery_sj_loosescan_bkaunique.result File 370.36 KB 0644
subquery_sj_mat.result File 378.77 KB 0644
subquery_sj_mat_bka.result File 378.85 KB 0644
subquery_sj_mat_bka_nixbnl.result File 362.06 KB 0644
subquery_sj_mat_bkaunique.result File 378.88 KB 0644
subquery_sj_mat_nosj.result File 376.23 KB 0644
subquery_sj_none.result File 374.82 KB 0644
subquery_sj_none_bka.result File 374.92 KB 0644
subquery_sj_none_bka_nixbnl.result File 367.91 KB 0644
subquery_sj_none_bkaunique.result File 374.95 KB 0644
subselect_debug.result File 409 B 0644
subselect_gis.result File 305 B 0644
subselect_innodb.result File 28.1 KB 0644
subselect_notembedded.result File 752 B 0644
sum_distinct-big.result File 2 KB 0644
sum_distinct.result File 3.14 KB 0644
symlink.result File 7.75 KB 0644
symlink_windows.result File 321 B 0644
synchronization.result File 4.05 KB 0644
sysdate_is_now.result File 76 B 0644
system_mysql_db.result File 13.5 KB 0644
system_mysql_db_refs.result File 2.96 KB 0644
table_definition_cache_functionality.result File 6.9 KB 0644
table_open_cache_functionality.result File 12.78 KB 0644
tablelock.result File 1.5 KB 0644
tablespace.result File 10.13 KB 0644
temp_pool.result File 538 B 0644
temp_table.result File 7.39 KB 0644
temporal_literal.result File 13.16 KB 0644
testdb_only.require File 45 B 0644
thread_cache_size_functionality.result File 5.26 KB 0644
timezone.result File 1.8 KB 0644
timezone2.result File 11.81 KB 0644
timezone3.result File 2.21 KB 0644
timezone4.result File 148 B 0644
timezone_grant.result File 3.76 KB 0644
trans_read_only.result File 1.03 KB 0644
trigger-compat.result File 7.75 KB 0644
trigger-trans.result File 6.46 KB 0644
trigger.result File 68.46 KB 0644
trigger_notembedded.result File 17.03 KB 0644
true.require File 7 B 0644
truncate.result File 3.58 KB 0644
truncate_coverage.result File 2.4 KB 0644
type_binary.result File 3.62 KB 0644
type_bit.result File 16.92 KB 0644
type_bit_innodb.result File 7.31 KB 0644
type_blob.result File 28.87 KB 0644
type_date.result File 18.46 KB 0644
type_datetime.result File 31.24 KB 0644
type_decimal.result File 36.1 KB 0644
type_enum.result File 101.19 KB 0644
type_float.result File 11.97 KB 0644
type_nchar.result File 1.44 KB 0644
type_newdecimal-big.result File 678 B 0644
type_newdecimal.result File 61.46 KB 0644
type_ranges.result File 17.38 KB 0644
type_set.result File 3.99 KB 0644
type_temporal_fractional.result File 635.43 KB 0644
type_temporal_upgrade.result File 9.9 KB 0644
type_time.result File 109.27 KB 0644
type_timestamp.result File 24.69 KB 0644
type_timestamp_explicit.result File 27.35 KB 0644
type_uint.result File 366 B 0644
type_varchar.result File 16.66 KB 0644
type_year.result File 7.78 KB 0644
udf.result File 16.03 KB 0644
udf_services.result File 499 B 0644
udf_skip_grants.result File 223 B 0644
union.result File 52.6 KB 0644
unsafe_binlog_innodb.result File 4.36 KB 0644
update.result File 16.63 KB 0644
upgrade.result File 4.91 KB 0644
user_limits.result File 3.54 KB 0644
user_var-binlog.result File 2.17 KB 0644
user_var.result File 15.34 KB 0644
validate_password_plugin.result File 12.09 KB 0644
varbinary.result File 3.34 KB 0644
variables-big.result File 972 B 0644
variables-notembedded.result File 5.78 KB 0644
variables-win.result File 347 B 0644
variables.result File 61.67 KB 0644
variables_community.result File 182 B 0644
variables_debug.result File 2.13 KB 0644
view.result File 178.72 KB 0644
view_alias.result File 6.19 KB 0644
view_grant.result File 76.69 KB 0644
wait_timeout.result File 1.07 KB 0644
warnings.result File 11.21 KB 0644
warnings_engine_disabled.result File 475 B 0644
windows.require File 7 B 0644
windows.result File 1.86 KB 0644
wl6219-csv.result File 7.23 KB 0644
wl6219-innodb.result File 7.27 KB 0644
wl6219-memory.result File 7.27 KB 0644
wl6219-merge.result File 5.99 KB 0644
wl6219-myisam.result File 7.27 KB 0644
wl6219-upgrade.result File 7.33 KB 0644
wl6301_1_not_windows.result File 44 B 0644
wl6301_2_not_windows.result File 46 B 0644
wl6301_3.result File 89 B 0644
wl6443_deprecation.result File 10.71 KB 0644
xa.result File 7.13 KB 0644
xml.result File 41.78 KB 0644