~ubuntu-branches/ubuntu/trusty/mysql-5.6/trusty

« back to all changes in this revision

Viewing changes to mysql-test/r/subquery_sj_mat_bka.result

  • Committer: Package Import Robot
  • Author(s): James Page
  • Date: 2014-02-12 11:54:27 UTC
  • Revision ID: package-import@ubuntu.com-20140212115427-oq6tfsqxl1wuwehi
Tags: upstream-5.6.15
ImportĀ upstreamĀ versionĀ 5.6.15

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
set optimizer_switch='batched_key_access=on,mrr_cost_based=off';
 
2
set optimizer_switch='semijoin=on,materialization=on';
 
3
set @old_opt_switch=@@optimizer_switch;
 
4
set optimizer_switch='subquery_materialization_cost_based=off';
 
5
drop table if exists t0, t1, t2, t10, t11, t12;
 
6
create table t1 (a int not null, b int, primary key (a));
 
7
create table t2 (a int not null, primary key (a));
 
8
create table t3 (a int not null, b int, primary key (a));
 
9
insert into t1 values (1,10), (2,20), (3,30),  (4,40);
 
10
insert into t2 values (2), (3), (4), (5);
 
11
insert into t3 values (10,3), (20,4), (30,5);
 
12
select * from t2 where t2.a in (select a from t1);
 
13
a
 
14
2
 
15
3
 
16
4
 
17
explain extended select * from t2 where t2.a in (select a from t1);
 
18
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
19
1       SIMPLE  t2      index   PRIMARY PRIMARY 4       NULL    4       100.00  Using index
 
20
1       SIMPLE  t1      index   PRIMARY PRIMARY 4       NULL    4       75.00   Using where; Using index; Using join buffer (Block Nested Loop)
 
21
Warnings:
 
22
Note    1003    /* select#1 */ select `test`.`t2`.`a` AS `a` from `test`.`t1` join `test`.`t2` where (`test`.`t1`.`a` = `test`.`t2`.`a`)
 
23
select * from t2 where t2.a in (select a from t1 where t1.b <> 30);
 
24
a
 
25
2
 
26
4
 
27
explain extended select * from t2 where t2.a in (select a from t1 where t1.b <> 30);
 
28
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
29
1       SIMPLE  t2      index   PRIMARY PRIMARY 4       NULL    4       100.00  Using index
 
30
1       SIMPLE  t1      ALL     PRIMARY NULL    NULL    NULL    4       75.00   Using where; Using join buffer (Block Nested Loop)
 
31
Warnings:
 
32
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))
 
33
select * from t2 where t2.a in (select t1.a from t1,t3 where t1.b=t3.a);
 
34
a
 
35
2
 
36
3
 
37
explain extended select * from t2 where t2.a in (select t1.a from t1,t3 where t1.b=t3.a);
 
38
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
39
1       SIMPLE  t2      index   PRIMARY PRIMARY 4       NULL    4       100.00  Using index
 
40
1       SIMPLE  t1      ALL     PRIMARY NULL    NULL    NULL    4       75.00   Using where; Using join buffer (Block Nested Loop)
 
41
1       SIMPLE  t3      eq_ref  PRIMARY PRIMARY 4       test.t1.b       1       100.00  Using index
 
42
Warnings:
 
43
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`))
 
44
drop table t1, t2, t3;
 
45
create table t1 (a int, b int, index a (a,b));
 
46
create table t2 (a int, index a (a));
 
47
create table t3 (a int, b int, index a (a));
 
48
insert into t1 values (1,10), (2,20), (3,30), (4,40);
 
49
create table t0(a int);
 
50
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
 
51
insert into t1
 
52
select rand()*100000+200,rand()*100000 from t0 A, t0 B, t0 C, t0 D;
 
53
insert into t2 values (2), (3), (4), (5);
 
54
insert into t3 values (10,3), (20,4), (30,5);
 
55
select * from t2 where t2.a in (select a from t1);
 
56
a
 
57
2
 
58
3
 
59
4
 
60
explain extended select * from t2 where t2.a in (select a from t1);
 
61
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
62
1       SIMPLE  t2      index   a       a       5       NULL    4       100.00  Using where; Using index; Start temporary
 
63
1       SIMPLE  t1      ref     a       a       5       test.t2.a       101     100.00  Using index; End temporary
 
64
Warnings:
 
65
Note    1003    /* select#1 */ select `test`.`t2`.`a` AS `a` from `test`.`t2` semi join (`test`.`t1`) where (`test`.`t1`.`a` = `test`.`t2`.`a`)
 
66
select * from t2 where t2.a in (select a from t1 where t1.b <> 30);
 
67
a
 
68
2
 
69
4
 
70
explain extended select * from t2 where t2.a in (select a from t1 where t1.b <> 30);
 
71
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
72
1       SIMPLE  t2      index   a       a       5       NULL    4       100.00  Using where; Using index; Start temporary
 
73
1       SIMPLE  t1      ref     a       a       5       test.t2.a       101     100.00  Using where; Using index; End temporary
 
74
Warnings:
 
75
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))
 
76
select * from t2 where t2.a in (select t1.a from t1,t3 where t1.b=t3.a);
 
77
a
 
78
2
 
79
3
 
80
explain extended select * from t2 where t2.a in (select t1.a from t1,t3 where t1.b=t3.a);
 
81
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
82
1       SIMPLE  t2      index   a       a       5       NULL    4       100.00  Using where; Using index; Start temporary
 
83
1       SIMPLE  t1      ref     a       a       5       test.t2.a       101     100.00  Using index
 
84
1       SIMPLE  t3      index   a       a       5       NULL    3       100.00  Using where; Using index; End temporary; Using join buffer (Block Nested Loop)
 
85
Warnings:
 
86
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`.`t3`.`a` = `test`.`t1`.`b`))
 
87
insert into t1 values (3,31);
 
88
select * from t2 where t2.a in (select a from t1 where t1.b <> 30);
 
89
a
 
90
2
 
91
3
 
92
4
 
93
select * from t2 where t2.a in (select a from t1 where t1.b <> 30 and t1.b <> 31);
 
94
a
 
95
2
 
96
4
 
97
explain extended select * from t2 where t2.a in (select a from t1 where t1.b <> 30);
 
98
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
99
1       SIMPLE  t2      index   a       a       5       NULL    4       100.00  Using where; Using index; Start temporary
 
100
1       SIMPLE  t1      ref     a       a       5       test.t2.a       101     100.00  Using where; Using index; End temporary
 
101
Warnings:
 
102
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))
 
103
drop table t0, t1, t2, t3;
 
104
create table t0 (a int);
 
105
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
 
106
create table t1(a int, b int);
 
107
insert into t1 values (0,0),(1,1),(2,2);
 
108
create table t2 as select * from t1;
 
109
create table t11(a int, b int);
 
110
create table t10 (pk int, a int, primary key(pk));
 
111
insert into t10 select a,a from t0;
 
112
create table t12 like t10;
 
113
insert into t12 select * from t10;
 
114
Flattened because of dependency, t10=func(t1)
 
115
explain select * from t1 where a in (select pk from t10);
 
116
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
117
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    3       Using where
 
118
1       SIMPLE  t10     eq_ref  PRIMARY PRIMARY 4       test.t1.a       1       Using index
 
119
select * from t1 where a in (select pk from t10);
 
120
a       b
 
121
0       0
 
122
1       1
 
123
2       2
 
124
A confluent case of dependency
 
125
explain select * from t1 where a in (select a from t10 where pk=12);
 
126
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
127
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
128
select * from t1 where a in (select a from t10 where pk=12);
 
129
a       b
 
130
explain select * from t1 where a in (select a from t10 where pk=9);
 
131
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
132
1       SIMPLE  t10     const   PRIMARY PRIMARY 4       const   1       NULL
 
133
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    3       Using where
 
134
select * from t1 where a in (select a from t10 where pk=9);
 
135
a       b
 
136
An empty table inside
 
137
explain select * from t1 where a in (select a from t11);
 
138
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
139
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    NULL
 
140
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    3       Using where; Using join buffer (Block Nested Loop)
 
141
2       MATERIALIZED    t11     ALL     NULL    NULL    NULL    NULL    0       NULL
 
142
select * from t1 where a in (select a from t11);
 
143
a       b
 
144
explain select * from t1 where a in (select pk from t10) and b in (select pk from t10);
 
145
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
146
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    3       Using where
 
147
1       SIMPLE  t10     eq_ref  PRIMARY PRIMARY 4       test.t1.a       1       Using index
 
148
1       SIMPLE  t10     eq_ref  PRIMARY PRIMARY 4       test.t1.b       1       Using index
 
149
select * from t1 where a in (select pk from t10) and b in (select pk from t10);
 
150
a       b
 
151
0       0
 
152
1       1
 
153
2       2
 
154
flattening a nested subquery
 
155
explain select * from t1 where a in (select pk from t10 where t10.a in (select pk from t12));
 
156
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
157
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    3       Using where
 
158
1       SIMPLE  t10     eq_ref  PRIMARY PRIMARY 4       test.t1.a       1       Using where
 
159
1       SIMPLE  t12     eq_ref  PRIMARY PRIMARY 4       test.t10.a      1       Using index
 
160
select * from t1 where a in (select pk from t10 where t10.a in (select pk from t12));
 
161
a       b
 
162
0       0
 
163
1       1
 
164
2       2
 
165
flattening subquery w/ several tables
 
166
explain extended select * from t1 where a in (select t10.pk from t10, t12 where t12.pk=t10.a);
 
167
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
168
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
 
169
1       SIMPLE  t10     eq_ref  PRIMARY PRIMARY 4       test.t1.a       1       100.00  Using where
 
170
1       SIMPLE  t12     eq_ref  PRIMARY PRIMARY 4       test.t10.a      1       100.00  Using index
 
171
Warnings:
 
172
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`))
 
173
subqueries within outer joins go into ON expr.
 
174
explAin extended
 
175
select * from t1 left join (t2 A, t2 B) on ( A.A= t1.A And B.A in (select pk from t10));
 
176
id      select_type     tABle   type    possiBle_keys   key     key_len ref     rows    filtered        ExtrA
 
177
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    3       100.00  NULL
 
178
1       SIMPLE  A       ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
 
179
1       SIMPLE  B       ALL     NULL    NULL    NULL    NULL    3       100.00  NULL
 
180
1       SIMPLE  t10     eq_ref  PRIMARY PRIMARY 4       test.B.A        1       100.00  Using index
 
181
Warnings:
 
182
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
 
183
t2 should be wrapped into OJ-nest, so we have "t1 LJ (t2 J t10)"
 
184
explAin extended
 
185
select * from t1 left join t2 on (t2.A= t1.A And t2.A in (select pk from t10));
 
186
id      select_type     tABle   type    possiBle_keys   key     key_len ref     rows    filtered        ExtrA
 
187
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    3       100.00  NULL
 
188
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
 
189
1       SIMPLE  t10     eq_ref  PRIMARY PRIMARY 4       test.t2.A       1       100.00  Using index
 
190
Warnings:
 
191
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
 
192
we shouldn't flatten if we're going to get a join of > MAX_TABLES.
 
193
explain select * from 
 
194
t1 s00, t1 s01,  t1 s02, t1 s03, t1 s04,t1 s05,t1 s06,t1 s07,t1 s08,t1 s09,
 
195
t1 s10, t1 s11,  t1 s12, t1 s13, t1 s14,t1 s15,t1 s16,t1 s17,t1 s18,t1 s19,
 
196
t1 s20, t1 s21,  t1 s22, t1 s23, t1 s24,t1 s25,t1 s26,t1 s27,t1 s28,t1 s29,
 
197
t1 s30, t1 s31,  t1 s32, t1 s33, t1 s34,t1 s35,t1 s36,t1 s37,t1 s38,t1 s39,
 
198
t1 s40, t1 s41,  t1 s42, t1 s43, t1 s44,t1 s45,t1 s46,t1 s47,t1 s48,t1 s49
 
199
where
 
200
s00.a in (
 
201
select m00.a from
 
202
t1 m00, t1 m01,  t1 m02, t1 m03, t1 m04,t1 m05,t1 m06,t1 m07,t1 m08,t1 m09,
 
203
t1 m10, t1 m11,  t1 m12, t1 m13, t1 m14,t1 m15,t1 m16,t1 m17,t1 m18,t1 m19
 
204
);
 
205
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
206
1       PRIMARY s00     ALL     NULL    NULL    NULL    NULL    3       Using where
 
207
1       PRIMARY s01     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
208
1       PRIMARY s02     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
209
1       PRIMARY s03     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
210
1       PRIMARY s04     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
211
1       PRIMARY s05     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
212
1       PRIMARY s06     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
213
1       PRIMARY s07     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
214
1       PRIMARY s08     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
215
1       PRIMARY s09     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
216
1       PRIMARY s10     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
217
1       PRIMARY s11     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
218
1       PRIMARY s12     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
219
1       PRIMARY s13     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
220
1       PRIMARY s14     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
221
1       PRIMARY s15     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
222
1       PRIMARY s16     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
223
1       PRIMARY s17     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
224
1       PRIMARY s18     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
225
1       PRIMARY s19     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
226
1       PRIMARY s20     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
227
1       PRIMARY s21     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
228
1       PRIMARY s22     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
229
1       PRIMARY s23     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
230
1       PRIMARY s24     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
231
1       PRIMARY s25     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
232
1       PRIMARY s26     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
233
1       PRIMARY s27     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
234
1       PRIMARY s28     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
235
1       PRIMARY s29     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
236
1       PRIMARY s30     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
237
1       PRIMARY s31     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
238
1       PRIMARY s32     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
239
1       PRIMARY s33     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
240
1       PRIMARY s34     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
241
1       PRIMARY s35     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
242
1       PRIMARY s36     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
243
1       PRIMARY s37     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
244
1       PRIMARY s38     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
245
1       PRIMARY s39     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
246
1       PRIMARY s40     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
247
1       PRIMARY s41     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
248
1       PRIMARY s42     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
249
1       PRIMARY s43     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
250
1       PRIMARY s44     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
251
1       PRIMARY s45     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
252
1       PRIMARY s46     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
253
1       PRIMARY s47     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
254
1       PRIMARY s48     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
255
1       PRIMARY s49     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
256
2       SUBQUERY        m00     ALL     NULL    NULL    NULL    NULL    3       NULL
 
257
2       SUBQUERY        m01     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
258
2       SUBQUERY        m02     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
259
2       SUBQUERY        m03     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
260
2       SUBQUERY        m04     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
261
2       SUBQUERY        m05     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
262
2       SUBQUERY        m06     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
263
2       SUBQUERY        m07     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
264
2       SUBQUERY        m08     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
265
2       SUBQUERY        m09     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
266
2       SUBQUERY        m10     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
267
2       SUBQUERY        m11     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
268
2       SUBQUERY        m12     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
269
2       SUBQUERY        m13     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
270
2       SUBQUERY        m14     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
271
2       SUBQUERY        m15     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
272
2       SUBQUERY        m16     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
273
2       SUBQUERY        m17     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
274
2       SUBQUERY        m18     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
275
2       SUBQUERY        m19     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
276
select * from
 
277
t1 left join t2 on (t2.a= t1.a and t2.a in (select pk from t10)) 
 
278
where t1.a < 5;
 
279
a       b       a       b
 
280
0       0       0       0
 
281
1       1       1       1
 
282
2       2       2       2
 
283
prepare s1 from
 
284
' select * from
 
285
    t1 left join t2 on (t2.a= t1.a and t2.a in (select pk from t10))
 
286
  where t1.a < 5';
 
287
execute s1;
 
288
a       b       a       b
 
289
0       0       0       0
 
290
1       1       1       1
 
291
2       2       2       2
 
292
execute s1;
 
293
a       b       a       b
 
294
0       0       0       0
 
295
1       1       1       1
 
296
2       2       2       2
 
297
insert into t1 select (A.a + 10 * B.a),1 from t0 A, t0 B;
 
298
explain extended select * from t1 where a in (select pk from t10 where pk<3);
 
299
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
300
1       SIMPLE  t10     range   PRIMARY PRIMARY 4       NULL    4       100.00  Using where; Using index
 
301
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    103     100.00  Using where; Using join buffer (Block Nested Loop)
 
302
Warnings:
 
303
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))
 
304
drop table t0, t1, t2;
 
305
drop table t10, t11, t12;
 
306
#
 
307
# Check that subqueries with outer joins or straight_join work for 
 
308
# different permutations of const and non-const tables.  (Ref. Bug#46692)
 
309
#
 
310
CREATE TABLE t1 (i INTEGER);
 
311
CREATE TABLE t2 (i INTEGER);
 
312
CREATE TABLE t3 (i INTEGER);
 
313
SELECT (SELECT COUNT(*) from t1) AS c1,
 
314
(SELECT COUNT(*) from t2) AS c2,
 
315
(SELECT COUNT(*) from t3) AS c3;
 
316
c1      c2      c3
 
317
0       0       0
 
318
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
319
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
320
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
321
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
322
SELECT * FROM t1 WHERE (t1.i) IN 
 
323
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
324
i
 
325
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
326
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
 
327
EXECUTE stmt;
 
328
i
 
329
EXECUTE stmt;
 
330
i
 
331
DEALLOCATE PREPARE stmt;
 
332
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
333
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
334
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
335
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
336
SELECT * FROM t1 WHERE (t1.i) IN 
 
337
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
338
i
 
339
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
340
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
 
341
EXECUTE stmt;
 
342
i
 
343
EXECUTE stmt;
 
344
i
 
345
DEALLOCATE PREPARE stmt;
 
346
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
347
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
348
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
349
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
350
SELECT * FROM t1 WHERE (t1.i) IN 
 
351
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
352
i
 
353
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
354
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
355
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
356
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
357
SELECT * FROM t1 WHERE (t1.i) IN 
 
358
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
359
i
 
360
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
361
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
362
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
363
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
364
SELECT * FROM t1 WHERE (11) IN 
 
365
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
366
i
 
367
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
368
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
369
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
370
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
371
SELECT * FROM t1 WHERE (11) IN 
 
372
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
373
i
 
374
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
375
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
376
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
377
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
378
SELECT * FROM t1 WHERE (11) IN 
 
379
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
380
i
 
381
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
382
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
383
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
384
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
385
SELECT * FROM t1 WHERE (11) IN 
 
386
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
387
i
 
388
INSERT INTO t3 VALUES (2);
 
389
SELECT (SELECT COUNT(*) from t1) AS c1,
 
390
(SELECT COUNT(*) from t2) AS c2,
 
391
(SELECT COUNT(*) from t3) AS c3;
 
392
c1      c2      c3
 
393
0       0       1
 
394
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
395
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
396
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
397
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
398
SELECT * FROM t1 WHERE (t1.i) IN 
 
399
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
400
i
 
401
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
402
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
 
403
EXECUTE stmt;
 
404
i
 
405
EXECUTE stmt;
 
406
i
 
407
DEALLOCATE PREPARE stmt;
 
408
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
409
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
410
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
411
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
412
SELECT * FROM t1 WHERE (t1.i) IN 
 
413
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
414
i
 
415
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
416
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
 
417
EXECUTE stmt;
 
418
i
 
419
EXECUTE stmt;
 
420
i
 
421
DEALLOCATE PREPARE stmt;
 
422
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
423
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
424
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
425
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
426
SELECT * FROM t1 WHERE (t1.i) IN 
 
427
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
428
i
 
429
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
430
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
431
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
432
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
433
SELECT * FROM t1 WHERE (t1.i) IN 
 
434
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
435
i
 
436
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
437
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
438
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
439
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
440
SELECT * FROM t1 WHERE (11) IN 
 
441
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
442
i
 
443
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
444
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
445
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
446
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
447
SELECT * FROM t1 WHERE (11) IN 
 
448
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
449
i
 
450
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
451
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
452
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
453
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
454
SELECT * FROM t1 WHERE (11) IN 
 
455
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
456
i
 
457
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
458
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
459
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
460
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
461
SELECT * FROM t1 WHERE (11) IN 
 
462
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
463
i
 
464
INSERT INTO t3 VALUES (1);
 
465
SELECT (SELECT COUNT(*) from t1) AS c1,
 
466
(SELECT COUNT(*) from t2) AS c2,
 
467
(SELECT COUNT(*) from t3) AS c3;
 
468
c1      c2      c3
 
469
0       0       2
 
470
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
471
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
472
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
473
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
474
SELECT * FROM t1 WHERE (t1.i) IN 
 
475
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
476
i
 
477
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
478
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
 
479
EXECUTE stmt;
 
480
i
 
481
EXECUTE stmt;
 
482
i
 
483
DEALLOCATE PREPARE stmt;
 
484
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
485
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
486
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
487
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
488
SELECT * FROM t1 WHERE (t1.i) IN 
 
489
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
490
i
 
491
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
492
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
 
493
EXECUTE stmt;
 
494
i
 
495
EXECUTE stmt;
 
496
i
 
497
DEALLOCATE PREPARE stmt;
 
498
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
499
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
500
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
501
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
502
SELECT * FROM t1 WHERE (t1.i) IN 
 
503
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
504
i
 
505
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
506
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
507
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
508
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
509
SELECT * FROM t1 WHERE (t1.i) IN 
 
510
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
511
i
 
512
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
513
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
514
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
515
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
516
SELECT * FROM t1 WHERE (11) IN 
 
517
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
518
i
 
519
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
520
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
521
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
522
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
523
SELECT * FROM t1 WHERE (11) IN 
 
524
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
525
i
 
526
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
527
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
528
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
529
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
530
SELECT * FROM t1 WHERE (11) IN 
 
531
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
532
i
 
533
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
534
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
535
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
536
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
537
SELECT * FROM t1 WHERE (11) IN 
 
538
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
539
i
 
540
INSERT INTO t3 VALUES (0);
 
541
DELETE FROM t3;
 
542
INSERT INTO t2 VALUES (2);
 
543
SELECT (SELECT COUNT(*) from t1) AS c1,
 
544
(SELECT COUNT(*) from t2) AS c2,
 
545
(SELECT COUNT(*) from t3) AS c3;
 
546
c1      c2      c3
 
547
0       1       0
 
548
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
549
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
550
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
551
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
552
SELECT * FROM t1 WHERE (t1.i) IN 
 
553
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
554
i
 
555
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
556
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
 
557
EXECUTE stmt;
 
558
i
 
559
EXECUTE stmt;
 
560
i
 
561
DEALLOCATE PREPARE stmt;
 
562
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
563
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
564
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
565
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
566
SELECT * FROM t1 WHERE (t1.i) IN 
 
567
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
568
i
 
569
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
570
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
 
571
EXECUTE stmt;
 
572
i
 
573
EXECUTE stmt;
 
574
i
 
575
DEALLOCATE PREPARE stmt;
 
576
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
577
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
578
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
579
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
580
SELECT * FROM t1 WHERE (t1.i) IN 
 
581
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
582
i
 
583
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
584
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
585
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
586
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
587
SELECT * FROM t1 WHERE (t1.i) IN 
 
588
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
589
i
 
590
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
591
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
592
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
593
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
594
SELECT * FROM t1 WHERE (11) IN 
 
595
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
596
i
 
597
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
598
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
599
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
600
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
601
SELECT * FROM t1 WHERE (11) IN 
 
602
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
603
i
 
604
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
605
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
606
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
607
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
608
SELECT * FROM t1 WHERE (11) IN 
 
609
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
610
i
 
611
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
612
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
613
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
614
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
615
SELECT * FROM t1 WHERE (11) IN 
 
616
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
617
i
 
618
INSERT INTO t3 VALUES (2);
 
619
SELECT (SELECT COUNT(*) from t1) AS c1,
 
620
(SELECT COUNT(*) from t2) AS c2,
 
621
(SELECT COUNT(*) from t3) AS c3;
 
622
c1      c2      c3
 
623
0       1       1
 
624
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
625
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
626
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
627
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
628
SELECT * FROM t1 WHERE (t1.i) IN 
 
629
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
630
i
 
631
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
632
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
 
633
EXECUTE stmt;
 
634
i
 
635
EXECUTE stmt;
 
636
i
 
637
DEALLOCATE PREPARE stmt;
 
638
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
639
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
640
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
641
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
642
SELECT * FROM t1 WHERE (t1.i) IN 
 
643
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
644
i
 
645
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
646
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
 
647
EXECUTE stmt;
 
648
i
 
649
EXECUTE stmt;
 
650
i
 
651
DEALLOCATE PREPARE stmt;
 
652
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
653
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
654
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
655
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
656
SELECT * FROM t1 WHERE (t1.i) IN 
 
657
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
658
i
 
659
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
660
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
661
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
662
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
663
SELECT * FROM t1 WHERE (t1.i) IN 
 
664
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
665
i
 
666
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
667
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
668
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
669
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
670
SELECT * FROM t1 WHERE (11) IN 
 
671
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
672
i
 
673
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
674
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
675
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
676
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
677
SELECT * FROM t1 WHERE (11) IN 
 
678
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
679
i
 
680
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
681
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
682
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
683
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
684
SELECT * FROM t1 WHERE (11) IN 
 
685
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
686
i
 
687
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
688
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
689
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
690
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
691
SELECT * FROM t1 WHERE (11) IN 
 
692
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
693
i
 
694
INSERT INTO t3 VALUES (1);
 
695
SELECT (SELECT COUNT(*) from t1) AS c1,
 
696
(SELECT COUNT(*) from t2) AS c2,
 
697
(SELECT COUNT(*) from t3) AS c3;
 
698
c1      c2      c3
 
699
0       1       2
 
700
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
701
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
702
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
703
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
704
SELECT * FROM t1 WHERE (t1.i) IN 
 
705
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
706
i
 
707
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
708
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
 
709
EXECUTE stmt;
 
710
i
 
711
EXECUTE stmt;
 
712
i
 
713
DEALLOCATE PREPARE stmt;
 
714
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
715
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
716
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
717
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
718
SELECT * FROM t1 WHERE (t1.i) IN 
 
719
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
720
i
 
721
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
722
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
 
723
EXECUTE stmt;
 
724
i
 
725
EXECUTE stmt;
 
726
i
 
727
DEALLOCATE PREPARE stmt;
 
728
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
729
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
730
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
731
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
732
SELECT * FROM t1 WHERE (t1.i) IN 
 
733
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
734
i
 
735
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
736
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
737
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
738
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
739
SELECT * FROM t1 WHERE (t1.i) IN 
 
740
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
741
i
 
742
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
743
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
744
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
745
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
746
SELECT * FROM t1 WHERE (11) IN 
 
747
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
748
i
 
749
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
750
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
751
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
752
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
753
SELECT * FROM t1 WHERE (11) IN 
 
754
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
755
i
 
756
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
757
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
758
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
759
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
760
SELECT * FROM t1 WHERE (11) IN 
 
761
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
762
i
 
763
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
764
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
765
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
766
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
767
SELECT * FROM t1 WHERE (11) IN 
 
768
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
769
i
 
770
INSERT INTO t3 VALUES (0);
 
771
DELETE FROM t3;
 
772
INSERT INTO t2 VALUES (1);
 
773
SELECT (SELECT COUNT(*) from t1) AS c1,
 
774
(SELECT COUNT(*) from t2) AS c2,
 
775
(SELECT COUNT(*) from t3) AS c3;
 
776
c1      c2      c3
 
777
0       2       0
 
778
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
779
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
780
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
781
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
782
SELECT * FROM t1 WHERE (t1.i) IN 
 
783
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
784
i
 
785
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
786
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
 
787
EXECUTE stmt;
 
788
i
 
789
EXECUTE stmt;
 
790
i
 
791
DEALLOCATE PREPARE stmt;
 
792
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
793
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
794
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
795
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
796
SELECT * FROM t1 WHERE (t1.i) IN 
 
797
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
798
i
 
799
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
800
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
 
801
EXECUTE stmt;
 
802
i
 
803
EXECUTE stmt;
 
804
i
 
805
DEALLOCATE PREPARE stmt;
 
806
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
807
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
808
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
809
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
810
SELECT * FROM t1 WHERE (t1.i) IN 
 
811
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
812
i
 
813
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
814
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
815
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
816
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
817
SELECT * FROM t1 WHERE (t1.i) IN 
 
818
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
819
i
 
820
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
821
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
822
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
823
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
824
SELECT * FROM t1 WHERE (11) IN 
 
825
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
826
i
 
827
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
828
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
829
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
830
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
831
SELECT * FROM t1 WHERE (11) IN 
 
832
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
833
i
 
834
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
835
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
836
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
837
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
838
SELECT * FROM t1 WHERE (11) IN 
 
839
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
840
i
 
841
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
842
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
843
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
844
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
845
SELECT * FROM t1 WHERE (11) IN 
 
846
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
847
i
 
848
INSERT INTO t3 VALUES (2);
 
849
SELECT (SELECT COUNT(*) from t1) AS c1,
 
850
(SELECT COUNT(*) from t2) AS c2,
 
851
(SELECT COUNT(*) from t3) AS c3;
 
852
c1      c2      c3
 
853
0       2       1
 
854
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
855
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
856
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
857
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
858
SELECT * FROM t1 WHERE (t1.i) IN 
 
859
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
860
i
 
861
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
862
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
 
863
EXECUTE stmt;
 
864
i
 
865
EXECUTE stmt;
 
866
i
 
867
DEALLOCATE PREPARE stmt;
 
868
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
869
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
870
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
871
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
872
SELECT * FROM t1 WHERE (t1.i) IN 
 
873
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
874
i
 
875
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
876
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
 
877
EXECUTE stmt;
 
878
i
 
879
EXECUTE stmt;
 
880
i
 
881
DEALLOCATE PREPARE stmt;
 
882
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
883
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
884
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
885
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
886
SELECT * FROM t1 WHERE (t1.i) IN 
 
887
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
888
i
 
889
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
890
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
891
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
892
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
893
SELECT * FROM t1 WHERE (t1.i) IN 
 
894
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
895
i
 
896
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
897
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
898
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
899
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
900
SELECT * FROM t1 WHERE (11) IN 
 
901
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
902
i
 
903
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
904
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
905
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
906
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
907
SELECT * FROM t1 WHERE (11) IN 
 
908
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
909
i
 
910
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
911
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
912
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
913
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
914
SELECT * FROM t1 WHERE (11) IN 
 
915
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
916
i
 
917
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
918
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
919
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
920
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
921
SELECT * FROM t1 WHERE (11) IN 
 
922
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
923
i
 
924
INSERT INTO t3 VALUES (1);
 
925
SELECT (SELECT COUNT(*) from t1) AS c1,
 
926
(SELECT COUNT(*) from t2) AS c2,
 
927
(SELECT COUNT(*) from t3) AS c3;
 
928
c1      c2      c3
 
929
0       2       2
 
930
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
931
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
932
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
933
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
934
SELECT * FROM t1 WHERE (t1.i) IN 
 
935
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
936
i
 
937
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
938
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
 
939
EXECUTE stmt;
 
940
i
 
941
EXECUTE stmt;
 
942
i
 
943
DEALLOCATE PREPARE stmt;
 
944
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
945
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
946
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
947
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
948
SELECT * FROM t1 WHERE (t1.i) IN 
 
949
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
950
i
 
951
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
952
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
 
953
EXECUTE stmt;
 
954
i
 
955
EXECUTE stmt;
 
956
i
 
957
DEALLOCATE PREPARE stmt;
 
958
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
959
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
960
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
961
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
962
SELECT * FROM t1 WHERE (t1.i) IN 
 
963
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
964
i
 
965
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
966
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
967
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
968
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
969
SELECT * FROM t1 WHERE (t1.i) IN 
 
970
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
971
i
 
972
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
973
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
974
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
975
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
976
SELECT * FROM t1 WHERE (11) IN 
 
977
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
978
i
 
979
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
980
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
981
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
982
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
983
SELECT * FROM t1 WHERE (11) IN 
 
984
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
985
i
 
986
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
987
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
988
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
989
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
990
SELECT * FROM t1 WHERE (11) IN 
 
991
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
992
i
 
993
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
994
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
995
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
996
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
997
SELECT * FROM t1 WHERE (11) IN 
 
998
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
999
i
 
1000
INSERT INTO t3 VALUES (0);
 
1001
DELETE FROM t3;
 
1002
INSERT INTO t2 VALUES (0);
 
1003
DELETE FROM t2;
 
1004
INSERT INTO t1 VALUES (2);
 
1005
SELECT (SELECT COUNT(*) from t1) AS c1,
 
1006
(SELECT COUNT(*) from t2) AS c2,
 
1007
(SELECT COUNT(*) from t3) AS c3;
 
1008
c1      c2      c3
 
1009
1       0       0
 
1010
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
1011
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
1012
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1013
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1014
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1015
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    0       Using where
 
1016
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    0       Using where; Using join buffer (Block Nested Loop)
 
1017
SELECT * FROM t1 WHERE (t1.i) IN 
 
1018
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
1019
i
 
1020
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
1021
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
 
1022
EXECUTE stmt;
 
1023
i
 
1024
EXECUTE stmt;
 
1025
i
 
1026
DEALLOCATE PREPARE stmt;
 
1027
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
1028
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
1029
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1030
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1031
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1032
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    0       Using where
 
1033
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    0       Using where; Using join buffer (Block Nested Loop)
 
1034
SELECT * FROM t1 WHERE (t1.i) IN 
 
1035
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
1036
i
 
1037
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
1038
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
 
1039
EXECUTE stmt;
 
1040
i
 
1041
EXECUTE stmt;
 
1042
i
 
1043
DEALLOCATE PREPARE stmt;
 
1044
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
1045
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
1046
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1047
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1048
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1049
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    0       Using where
 
1050
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    0       Using where; Using join buffer (Block Nested Loop)
 
1051
SELECT * FROM t1 WHERE (t1.i) IN 
 
1052
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
1053
i
 
1054
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
1055
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
1056
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1057
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1058
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1059
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    0       NULL
 
1060
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    0       Using where; Using join buffer (Block Nested Loop)
 
1061
SELECT * FROM t1 WHERE (t1.i) IN 
 
1062
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
1063
i
 
1064
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
1065
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
1066
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1067
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1068
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1069
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    0       Using where
 
1070
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    0       Using where; Using join buffer (Block Nested Loop)
 
1071
SELECT * FROM t1 WHERE (11) IN 
 
1072
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
1073
i
 
1074
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
1075
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
1076
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1077
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1078
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    0       Using where; Start temporary
 
1079
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    0       Using where; End temporary; Using join buffer (Block Nested Loop)
 
1080
SELECT * FROM t1 WHERE (11) IN 
 
1081
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
1082
i
 
1083
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
1084
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
1085
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1086
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1087
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1088
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    0       Using where
 
1089
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    0       Using where; Using join buffer (Block Nested Loop)
 
1090
SELECT * FROM t1 WHERE (11) IN 
 
1091
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
1092
i
 
1093
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
1094
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
1095
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1096
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1097
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1098
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    0       NULL
 
1099
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    0       Using where; Using join buffer (Block Nested Loop)
 
1100
SELECT * FROM t1 WHERE (11) IN 
 
1101
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
1102
i
 
1103
INSERT INTO t3 VALUES (2);
 
1104
SELECT (SELECT COUNT(*) from t1) AS c1,
 
1105
(SELECT COUNT(*) from t2) AS c2,
 
1106
(SELECT COUNT(*) from t3) AS c3;
 
1107
c1      c2      c3
 
1108
1       0       1
 
1109
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
1110
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
1111
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1112
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1113
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1114
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    0       Using where
 
1115
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    1       Using where; Using join buffer (Block Nested Loop)
 
1116
SELECT * FROM t1 WHERE (t1.i) IN 
 
1117
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
1118
i
 
1119
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
1120
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
 
1121
EXECUTE stmt;
 
1122
i
 
1123
EXECUTE stmt;
 
1124
i
 
1125
DEALLOCATE PREPARE stmt;
 
1126
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
1127
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
1128
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1129
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1130
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1131
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    0       Using where
 
1132
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    1       Using where; Using join buffer (Block Nested Loop)
 
1133
SELECT * FROM t1 WHERE (t1.i) IN 
 
1134
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
1135
i
 
1136
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
1137
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
 
1138
EXECUTE stmt;
 
1139
i
 
1140
EXECUTE stmt;
 
1141
i
 
1142
DEALLOCATE PREPARE stmt;
 
1143
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
1144
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
1145
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1146
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1147
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1148
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    1       Using where
 
1149
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    0       Using where; Using join buffer (Block Nested Loop)
 
1150
SELECT * FROM t1 WHERE (t1.i) IN 
 
1151
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
1152
i
 
1153
2
 
1154
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
1155
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
1156
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1157
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1158
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1159
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    0       NULL
 
1160
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    1       Using where; Using join buffer (Block Nested Loop)
 
1161
SELECT * FROM t1 WHERE (t1.i) IN 
 
1162
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
1163
i
 
1164
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
1165
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
1166
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1167
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1168
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1169
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    0       Using where
 
1170
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    1       Using where; Using join buffer (Block Nested Loop)
 
1171
SELECT * FROM t1 WHERE (11) IN 
 
1172
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
1173
i
 
1174
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
1175
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
1176
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1177
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1178
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    0       Using where; Start temporary
 
1179
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    1       Using where; End temporary; Using join buffer (Block Nested Loop)
 
1180
SELECT * FROM t1 WHERE (11) IN 
 
1181
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
1182
i
 
1183
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
1184
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
1185
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1186
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1187
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1188
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    1       Using where
 
1189
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    0       Using where; Using join buffer (Block Nested Loop)
 
1190
SELECT * FROM t1 WHERE (11) IN 
 
1191
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
1192
i
 
1193
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
1194
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
1195
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1196
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1197
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1198
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    0       NULL
 
1199
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    1       Using where; Using join buffer (Block Nested Loop)
 
1200
SELECT * FROM t1 WHERE (11) IN 
 
1201
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
1202
i
 
1203
INSERT INTO t3 VALUES (1);
 
1204
SELECT (SELECT COUNT(*) from t1) AS c1,
 
1205
(SELECT COUNT(*) from t2) AS c2,
 
1206
(SELECT COUNT(*) from t3) AS c3;
 
1207
c1      c2      c3
 
1208
1       0       2
 
1209
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
1210
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
1211
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1212
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1213
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1214
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    0       Using where
 
1215
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
1216
SELECT * FROM t1 WHERE (t1.i) IN 
 
1217
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
1218
i
 
1219
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
1220
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
 
1221
EXECUTE stmt;
 
1222
i
 
1223
EXECUTE stmt;
 
1224
i
 
1225
DEALLOCATE PREPARE stmt;
 
1226
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
1227
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
1228
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1229
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1230
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1231
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    0       Using where
 
1232
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
1233
SELECT * FROM t1 WHERE (t1.i) IN 
 
1234
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
1235
i
 
1236
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
1237
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
 
1238
EXECUTE stmt;
 
1239
i
 
1240
EXECUTE stmt;
 
1241
i
 
1242
DEALLOCATE PREPARE stmt;
 
1243
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
1244
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
1245
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1246
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1247
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1248
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    2       Using where
 
1249
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    0       Using where; Using join buffer (Block Nested Loop)
 
1250
SELECT * FROM t1 WHERE (t1.i) IN 
 
1251
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
1252
i
 
1253
2
 
1254
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
1255
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
1256
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1257
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1258
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1259
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    0       NULL
 
1260
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
1261
SELECT * FROM t1 WHERE (t1.i) IN 
 
1262
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
1263
i
 
1264
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
1265
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
1266
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1267
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1268
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1269
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    0       Using where
 
1270
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
1271
SELECT * FROM t1 WHERE (11) IN 
 
1272
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
1273
i
 
1274
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
1275
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
1276
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1277
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1278
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    0       Using where; Start temporary
 
1279
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    2       Using where; End temporary; Using join buffer (Block Nested Loop)
 
1280
SELECT * FROM t1 WHERE (11) IN 
 
1281
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
1282
i
 
1283
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
1284
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
1285
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1286
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1287
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1288
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    2       Using where
 
1289
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    0       Using where; Using join buffer (Block Nested Loop)
 
1290
SELECT * FROM t1 WHERE (11) IN 
 
1291
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
1292
i
 
1293
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
1294
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
1295
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1296
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1297
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1298
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    0       NULL
 
1299
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
1300
SELECT * FROM t1 WHERE (11) IN 
 
1301
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
1302
i
 
1303
INSERT INTO t3 VALUES (0);
 
1304
DELETE FROM t3;
 
1305
INSERT INTO t2 VALUES (2);
 
1306
SELECT (SELECT COUNT(*) from t1) AS c1,
 
1307
(SELECT COUNT(*) from t2) AS c2,
 
1308
(SELECT COUNT(*) from t3) AS c3;
 
1309
c1      c2      c3
 
1310
1       1       0
 
1311
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
1312
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
1313
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1314
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1315
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1316
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    0       Using where
 
1317
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    1       Using where; Using join buffer (Block Nested Loop)
 
1318
SELECT * FROM t1 WHERE (t1.i) IN 
 
1319
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
1320
i
 
1321
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
1322
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
 
1323
EXECUTE stmt;
 
1324
i
 
1325
EXECUTE stmt;
 
1326
i
 
1327
DEALLOCATE PREPARE stmt;
 
1328
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
1329
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
1330
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1331
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1332
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1333
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    0       Using where
 
1334
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    1       Using where; Using join buffer (Block Nested Loop)
 
1335
SELECT * FROM t1 WHERE (t1.i) IN 
 
1336
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
1337
i
 
1338
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
1339
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
 
1340
EXECUTE stmt;
 
1341
i
 
1342
EXECUTE stmt;
 
1343
i
 
1344
DEALLOCATE PREPARE stmt;
 
1345
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
1346
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
1347
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1348
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1349
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1350
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    0       Using where
 
1351
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    1       Using where; Using join buffer (Block Nested Loop)
 
1352
SELECT * FROM t1 WHERE (t1.i) IN 
 
1353
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
1354
i
 
1355
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
1356
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
1357
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1358
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1359
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1360
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    1       NULL
 
1361
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    0       Using where; Using join buffer (Block Nested Loop)
 
1362
SELECT * FROM t1 WHERE (t1.i) IN 
 
1363
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
1364
i
 
1365
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
1366
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
1367
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1368
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1369
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1370
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    0       Using where
 
1371
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    1       Using where; Using join buffer (Block Nested Loop)
 
1372
SELECT * FROM t1 WHERE (11) IN 
 
1373
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
1374
i
 
1375
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
1376
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
1377
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1378
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1379
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    0       Using where; Start temporary
 
1380
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    1       Using where; End temporary; Using join buffer (Block Nested Loop)
 
1381
SELECT * FROM t1 WHERE (11) IN 
 
1382
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
1383
i
 
1384
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
1385
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
1386
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1387
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1388
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1389
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    0       Using where
 
1390
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    1       Using where; Using join buffer (Block Nested Loop)
 
1391
SELECT * FROM t1 WHERE (11) IN 
 
1392
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
1393
i
 
1394
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
1395
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
1396
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1397
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1398
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1399
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    1       NULL
 
1400
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    0       Using where; Using join buffer (Block Nested Loop)
 
1401
SELECT * FROM t1 WHERE (11) IN 
 
1402
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
1403
i
 
1404
INSERT INTO t3 VALUES (2);
 
1405
SELECT (SELECT COUNT(*) from t1) AS c1,
 
1406
(SELECT COUNT(*) from t2) AS c2,
 
1407
(SELECT COUNT(*) from t3) AS c3;
 
1408
c1      c2      c3
 
1409
1       1       1
 
1410
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
1411
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
1412
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1413
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1414
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1415
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    1       Using where
 
1416
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    1       Using where; Using join buffer (Block Nested Loop)
 
1417
SELECT * FROM t1 WHERE (t1.i) IN 
 
1418
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
1419
i
 
1420
2
 
1421
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
1422
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
 
1423
EXECUTE stmt;
 
1424
i
 
1425
2
 
1426
EXECUTE stmt;
 
1427
i
 
1428
2
 
1429
DEALLOCATE PREPARE stmt;
 
1430
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
1431
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
1432
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1433
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1434
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1435
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    1       Using where
 
1436
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    1       Using where; Using join buffer (Block Nested Loop)
 
1437
SELECT * FROM t1 WHERE (t1.i) IN 
 
1438
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
1439
i
 
1440
2
 
1441
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
1442
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
 
1443
EXECUTE stmt;
 
1444
i
 
1445
2
 
1446
EXECUTE stmt;
 
1447
i
 
1448
2
 
1449
DEALLOCATE PREPARE stmt;
 
1450
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
1451
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
1452
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1453
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1454
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1455
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    1       Using where
 
1456
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    1       Using where; Using join buffer (Block Nested Loop)
 
1457
SELECT * FROM t1 WHERE (t1.i) IN 
 
1458
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
1459
i
 
1460
2
 
1461
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
1462
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
1463
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1464
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1465
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1466
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    1       NULL
 
1467
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    1       Using where; Using join buffer (Block Nested Loop)
 
1468
SELECT * FROM t1 WHERE (t1.i) IN 
 
1469
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
1470
i
 
1471
2
 
1472
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
1473
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
1474
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1475
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1476
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1477
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    1       Using where
 
1478
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    1       Using where; Using join buffer (Block Nested Loop)
 
1479
SELECT * FROM t1 WHERE (11) IN 
 
1480
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
1481
i
 
1482
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
1483
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
1484
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1485
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1486
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    1       Using where; Start temporary
 
1487
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    1       Using where; End temporary; Using join buffer (Block Nested Loop)
 
1488
SELECT * FROM t1 WHERE (11) IN 
 
1489
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
1490
i
 
1491
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
1492
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
1493
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1494
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1495
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1496
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    1       Using where
 
1497
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    1       Using where; Using join buffer (Block Nested Loop)
 
1498
SELECT * FROM t1 WHERE (11) IN 
 
1499
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
1500
i
 
1501
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
1502
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
1503
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1504
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1505
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1506
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    1       NULL
 
1507
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    1       Using where; Using join buffer (Block Nested Loop)
 
1508
SELECT * FROM t1 WHERE (11) IN 
 
1509
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
1510
i
 
1511
INSERT INTO t3 VALUES (1);
 
1512
SELECT (SELECT COUNT(*) from t1) AS c1,
 
1513
(SELECT COUNT(*) from t2) AS c2,
 
1514
(SELECT COUNT(*) from t3) AS c3;
 
1515
c1      c2      c3
 
1516
1       1       2
 
1517
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
1518
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
1519
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1520
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1521
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    1       Using where; Start temporary
 
1522
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    2       Using where; End temporary; Using join buffer (Block Nested Loop)
 
1523
SELECT * FROM t1 WHERE (t1.i) IN 
 
1524
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
1525
i
 
1526
2
 
1527
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
1528
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
 
1529
EXECUTE stmt;
 
1530
i
 
1531
2
 
1532
EXECUTE stmt;
 
1533
i
 
1534
2
 
1535
DEALLOCATE PREPARE stmt;
 
1536
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
1537
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
1538
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1539
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1540
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    1       Using where; Start temporary
 
1541
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    2       Using where; End temporary; Using join buffer (Block Nested Loop)
 
1542
SELECT * FROM t1 WHERE (t1.i) IN 
 
1543
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
1544
i
 
1545
2
 
1546
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
1547
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
 
1548
EXECUTE stmt;
 
1549
i
 
1550
2
 
1551
EXECUTE stmt;
 
1552
i
 
1553
2
 
1554
DEALLOCATE PREPARE stmt;
 
1555
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
1556
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
1557
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1558
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1559
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1560
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    2       Using where
 
1561
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    1       Using where; Using join buffer (Block Nested Loop)
 
1562
SELECT * FROM t1 WHERE (t1.i) IN 
 
1563
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
1564
i
 
1565
2
 
1566
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
1567
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
1568
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1569
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1570
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    1       Start temporary
 
1571
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    2       Using where; End temporary; Using join buffer (Block Nested Loop)
 
1572
SELECT * FROM t1 WHERE (t1.i) IN 
 
1573
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
1574
i
 
1575
2
 
1576
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
1577
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
1578
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1579
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1580
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    1       Using where; Start temporary
 
1581
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    2       Using where; End temporary; Using join buffer (Block Nested Loop)
 
1582
SELECT * FROM t1 WHERE (11) IN 
 
1583
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
1584
i
 
1585
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
1586
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
1587
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1588
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1589
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    1       Using where; Start temporary
 
1590
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    2       Using where; End temporary; Using join buffer (Block Nested Loop)
 
1591
SELECT * FROM t1 WHERE (11) IN 
 
1592
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
1593
i
 
1594
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
1595
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
1596
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1597
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1598
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1599
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    2       Using where
 
1600
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    1       Using where; Using join buffer (Block Nested Loop)
 
1601
SELECT * FROM t1 WHERE (11) IN 
 
1602
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
1603
i
 
1604
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
1605
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
1606
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1607
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1608
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    1       Start temporary
 
1609
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    2       Using where; End temporary; Using join buffer (Block Nested Loop)
 
1610
SELECT * FROM t1 WHERE (11) IN 
 
1611
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
1612
i
 
1613
INSERT INTO t3 VALUES (0);
 
1614
DELETE FROM t3;
 
1615
INSERT INTO t2 VALUES (1);
 
1616
SELECT (SELECT COUNT(*) from t1) AS c1,
 
1617
(SELECT COUNT(*) from t2) AS c2,
 
1618
(SELECT COUNT(*) from t3) AS c3;
 
1619
c1      c2      c3
 
1620
1       2       0
 
1621
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
1622
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
1623
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1624
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1625
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1626
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    0       Using where
 
1627
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
1628
SELECT * FROM t1 WHERE (t1.i) IN 
 
1629
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
1630
i
 
1631
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
1632
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
 
1633
EXECUTE stmt;
 
1634
i
 
1635
EXECUTE stmt;
 
1636
i
 
1637
DEALLOCATE PREPARE stmt;
 
1638
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
1639
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
1640
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1641
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1642
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1643
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    0       Using where
 
1644
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
1645
SELECT * FROM t1 WHERE (t1.i) IN 
 
1646
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
1647
i
 
1648
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
1649
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
 
1650
EXECUTE stmt;
 
1651
i
 
1652
EXECUTE stmt;
 
1653
i
 
1654
DEALLOCATE PREPARE stmt;
 
1655
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
1656
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
1657
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1658
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1659
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1660
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    0       Using where
 
1661
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
1662
SELECT * FROM t1 WHERE (t1.i) IN 
 
1663
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
1664
i
 
1665
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
1666
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
1667
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1668
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1669
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1670
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    2       NULL
 
1671
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    0       Using where; Using join buffer (Block Nested Loop)
 
1672
SELECT * FROM t1 WHERE (t1.i) IN 
 
1673
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
1674
i
 
1675
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
1676
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
1677
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1678
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1679
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1680
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    0       Using where
 
1681
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
1682
SELECT * FROM t1 WHERE (11) IN 
 
1683
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
1684
i
 
1685
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
1686
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
1687
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1688
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1689
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    0       Using where; Start temporary
 
1690
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    2       Using where; End temporary; Using join buffer (Block Nested Loop)
 
1691
SELECT * FROM t1 WHERE (11) IN 
 
1692
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
1693
i
 
1694
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
1695
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
1696
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1697
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1698
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1699
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    0       Using where
 
1700
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
1701
SELECT * FROM t1 WHERE (11) IN 
 
1702
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
1703
i
 
1704
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
1705
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
1706
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1707
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1708
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1709
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    2       NULL
 
1710
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    0       Using where; Using join buffer (Block Nested Loop)
 
1711
SELECT * FROM t1 WHERE (11) IN 
 
1712
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
1713
i
 
1714
INSERT INTO t3 VALUES (2);
 
1715
SELECT (SELECT COUNT(*) from t1) AS c1,
 
1716
(SELECT COUNT(*) from t2) AS c2,
 
1717
(SELECT COUNT(*) from t3) AS c3;
 
1718
c1      c2      c3
 
1719
1       2       1
 
1720
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
1721
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
1722
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1723
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1724
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    1       Using where; Start temporary
 
1725
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    2       Using where; End temporary; Using join buffer (Block Nested Loop)
 
1726
SELECT * FROM t1 WHERE (t1.i) IN 
 
1727
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
1728
i
 
1729
2
 
1730
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
1731
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
 
1732
EXECUTE stmt;
 
1733
i
 
1734
2
 
1735
EXECUTE stmt;
 
1736
i
 
1737
2
 
1738
DEALLOCATE PREPARE stmt;
 
1739
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
1740
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
1741
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1742
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1743
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    1       Using where; Start temporary
 
1744
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    2       Using where; End temporary; Using join buffer (Block Nested Loop)
 
1745
SELECT * FROM t1 WHERE (t1.i) IN 
 
1746
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
1747
i
 
1748
2
 
1749
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
1750
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
 
1751
EXECUTE stmt;
 
1752
i
 
1753
2
 
1754
EXECUTE stmt;
 
1755
i
 
1756
2
 
1757
DEALLOCATE PREPARE stmt;
 
1758
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
1759
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
1760
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1761
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1762
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    1       Using where; Start temporary
 
1763
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    2       Using where; End temporary; Using join buffer (Block Nested Loop)
 
1764
SELECT * FROM t1 WHERE (t1.i) IN 
 
1765
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
1766
i
 
1767
2
 
1768
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
1769
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
1770
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1771
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1772
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1773
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    2       NULL
 
1774
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    1       Using where; Using join buffer (Block Nested Loop)
 
1775
SELECT * FROM t1 WHERE (t1.i) IN 
 
1776
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
1777
i
 
1778
2
 
1779
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
1780
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
1781
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1782
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1783
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    1       Using where; Start temporary
 
1784
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    2       Using where; End temporary; Using join buffer (Block Nested Loop)
 
1785
SELECT * FROM t1 WHERE (11) IN 
 
1786
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
1787
i
 
1788
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
1789
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
1790
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1791
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1792
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    1       Using where; Start temporary
 
1793
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    2       Using where; End temporary; Using join buffer (Block Nested Loop)
 
1794
SELECT * FROM t1 WHERE (11) IN 
 
1795
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
1796
i
 
1797
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
1798
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
1799
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1800
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1801
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    1       Using where; Start temporary
 
1802
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    2       Using where; End temporary; Using join buffer (Block Nested Loop)
 
1803
SELECT * FROM t1 WHERE (11) IN 
 
1804
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
1805
i
 
1806
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
1807
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
1808
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1809
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1810
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1811
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    2       NULL
 
1812
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    1       Using where; Using join buffer (Block Nested Loop)
 
1813
SELECT * FROM t1 WHERE (11) IN 
 
1814
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
1815
i
 
1816
INSERT INTO t3 VALUES (1);
 
1817
SELECT (SELECT COUNT(*) from t1) AS c1,
 
1818
(SELECT COUNT(*) from t2) AS c2,
 
1819
(SELECT COUNT(*) from t3) AS c3;
 
1820
c1      c2      c3
 
1821
1       2       2
 
1822
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
1823
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
1824
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1825
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1826
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1827
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    2       Using where
 
1828
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
1829
SELECT * FROM t1 WHERE (t1.i) IN 
 
1830
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
1831
i
 
1832
2
 
1833
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
1834
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
 
1835
EXECUTE stmt;
 
1836
i
 
1837
2
 
1838
EXECUTE stmt;
 
1839
i
 
1840
2
 
1841
DEALLOCATE PREPARE stmt;
 
1842
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
1843
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
1844
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1845
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1846
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1847
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    2       Using where
 
1848
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
1849
SELECT * FROM t1 WHERE (t1.i) IN 
 
1850
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
1851
i
 
1852
2
 
1853
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
1854
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
 
1855
EXECUTE stmt;
 
1856
i
 
1857
2
 
1858
EXECUTE stmt;
 
1859
i
 
1860
2
 
1861
DEALLOCATE PREPARE stmt;
 
1862
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
1863
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
1864
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1865
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1866
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1867
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    2       Using where
 
1868
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
1869
SELECT * FROM t1 WHERE (t1.i) IN 
 
1870
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
1871
i
 
1872
2
 
1873
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
1874
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
1875
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1876
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1877
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1878
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    2       NULL
 
1879
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
1880
SELECT * FROM t1 WHERE (t1.i) IN 
 
1881
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
1882
i
 
1883
2
 
1884
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
1885
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
1886
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1887
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1888
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1889
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    2       Using where
 
1890
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
1891
SELECT * FROM t1 WHERE (11) IN 
 
1892
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
1893
i
 
1894
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
1895
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
1896
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1897
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1898
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    2       Using where; Start temporary
 
1899
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    2       Using where; End temporary; Using join buffer (Block Nested Loop)
 
1900
SELECT * FROM t1 WHERE (11) IN 
 
1901
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
1902
i
 
1903
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
1904
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
1905
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1906
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1907
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1908
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    2       Using where
 
1909
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
1910
SELECT * FROM t1 WHERE (11) IN 
 
1911
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
1912
i
 
1913
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
1914
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
1915
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1916
1       SIMPLE  t1      system  NULL    NULL    NULL    NULL    1       NULL
 
1917
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1918
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    2       NULL
 
1919
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
1920
SELECT * FROM t1 WHERE (11) IN 
 
1921
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
1922
i
 
1923
INSERT INTO t3 VALUES (0);
 
1924
DELETE FROM t3;
 
1925
INSERT INTO t2 VALUES (0);
 
1926
DELETE FROM t2;
 
1927
INSERT INTO t1 VALUES (1);
 
1928
SELECT (SELECT COUNT(*) from t1) AS c1,
 
1929
(SELECT COUNT(*) from t2) AS c2,
 
1930
(SELECT COUNT(*) from t3) AS c3;
 
1931
c1      c2      c3
 
1932
2       0       0
 
1933
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
1934
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
1935
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1936
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    NULL
 
1937
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
1938
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    0       NULL
 
1939
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    0       Using where; Using join buffer (Block Nested Loop)
 
1940
SELECT * FROM t1 WHERE (t1.i) IN 
 
1941
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
1942
i
 
1943
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
1944
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
 
1945
EXECUTE stmt;
 
1946
i
 
1947
EXECUTE stmt;
 
1948
i
 
1949
DEALLOCATE PREPARE stmt;
 
1950
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
1951
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
1952
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1953
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    NULL
 
1954
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
1955
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    0       NULL
 
1956
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    0       Using where; Using join buffer (Block Nested Loop)
 
1957
SELECT * FROM t1 WHERE (t1.i) IN 
 
1958
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
1959
i
 
1960
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
1961
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
 
1962
EXECUTE stmt;
 
1963
i
 
1964
EXECUTE stmt;
 
1965
i
 
1966
DEALLOCATE PREPARE stmt;
 
1967
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
1968
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
1969
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1970
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    NULL
 
1971
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
1972
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    0       NULL
 
1973
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    0       Using where; Using join buffer (Block Nested Loop)
 
1974
SELECT * FROM t1 WHERE (t1.i) IN 
 
1975
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
1976
i
 
1977
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
1978
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
1979
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1980
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    NULL
 
1981
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
1982
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    0       NULL
 
1983
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    0       Using join buffer (Block Nested Loop)
 
1984
SELECT * FROM t1 WHERE (t1.i) IN 
 
1985
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
1986
i
 
1987
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
1988
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
1989
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1990
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
1991
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using join buffer (Block Nested Loop)
 
1992
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    0       Using where
 
1993
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    0       Using where; Using join buffer (Block Nested Loop)
 
1994
SELECT * FROM t1 WHERE (11) IN 
 
1995
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
1996
i
 
1997
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
1998
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
1999
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2000
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    0       Using where; Start temporary
 
2001
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    0       Using where; Using join buffer (Block Nested Loop)
 
2002
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where; End temporary; Using join buffer (Block Nested Loop)
 
2003
SELECT * FROM t1 WHERE (11) IN 
 
2004
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
2005
i
 
2006
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
2007
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
2008
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2009
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
2010
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using join buffer (Block Nested Loop)
 
2011
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    0       Using where
 
2012
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    0       Using where; Using join buffer (Block Nested Loop)
 
2013
SELECT * FROM t1 WHERE (11) IN 
 
2014
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
2015
i
 
2016
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
2017
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
2018
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2019
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
2020
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using join buffer (Block Nested Loop)
 
2021
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    0       NULL
 
2022
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    0       Using where; Using join buffer (Block Nested Loop)
 
2023
SELECT * FROM t1 WHERE (11) IN 
 
2024
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
2025
i
 
2026
INSERT INTO t3 VALUES (2);
 
2027
SELECT (SELECT COUNT(*) from t1) AS c1,
 
2028
(SELECT COUNT(*) from t2) AS c2,
 
2029
(SELECT COUNT(*) from t3) AS c3;
 
2030
c1      c2      c3
 
2031
2       0       1
 
2032
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
2033
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
2034
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2035
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    NULL
 
2036
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
2037
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    0       NULL
 
2038
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    1       Using where; Using join buffer (Block Nested Loop)
 
2039
SELECT * FROM t1 WHERE (t1.i) IN 
 
2040
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
2041
i
 
2042
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
2043
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
 
2044
EXECUTE stmt;
 
2045
i
 
2046
EXECUTE stmt;
 
2047
i
 
2048
DEALLOCATE PREPARE stmt;
 
2049
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
2050
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
2051
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2052
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    NULL
 
2053
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
2054
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    0       NULL
 
2055
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    1       Using where; Using join buffer (Block Nested Loop)
 
2056
SELECT * FROM t1 WHERE (t1.i) IN 
 
2057
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
2058
i
 
2059
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
2060
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
 
2061
EXECUTE stmt;
 
2062
i
 
2063
EXECUTE stmt;
 
2064
i
 
2065
DEALLOCATE PREPARE stmt;
 
2066
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
2067
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
2068
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2069
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    NULL
 
2070
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
2071
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    1       NULL
 
2072
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    0       Using where; Using join buffer (Block Nested Loop)
 
2073
SELECT * FROM t1 WHERE (t1.i) IN 
 
2074
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
2075
i
 
2076
2
 
2077
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
2078
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
2079
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2080
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    NULL
 
2081
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
2082
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    0       NULL
 
2083
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    1       Using join buffer (Block Nested Loop)
 
2084
SELECT * FROM t1 WHERE (t1.i) IN 
 
2085
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
2086
i
 
2087
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
2088
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
2089
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2090
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
2091
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using join buffer (Block Nested Loop)
 
2092
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    0       Using where
 
2093
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    1       Using where; Using join buffer (Block Nested Loop)
 
2094
SELECT * FROM t1 WHERE (11) IN 
 
2095
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
2096
i
 
2097
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
2098
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
2099
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2100
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    0       Using where; Start temporary
 
2101
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    1       Using where; Using join buffer (Block Nested Loop)
 
2102
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where; End temporary; Using join buffer (Block Nested Loop)
 
2103
SELECT * FROM t1 WHERE (11) IN 
 
2104
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
2105
i
 
2106
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
2107
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
2108
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2109
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
2110
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using join buffer (Block Nested Loop)
 
2111
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    1       Using where
 
2112
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    0       Using where; Using join buffer (Block Nested Loop)
 
2113
SELECT * FROM t1 WHERE (11) IN 
 
2114
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
2115
i
 
2116
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
2117
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
2118
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2119
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
2120
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using join buffer (Block Nested Loop)
 
2121
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    0       NULL
 
2122
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    1       Using where; Using join buffer (Block Nested Loop)
 
2123
SELECT * FROM t1 WHERE (11) IN 
 
2124
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
2125
i
 
2126
INSERT INTO t3 VALUES (1);
 
2127
SELECT (SELECT COUNT(*) from t1) AS c1,
 
2128
(SELECT COUNT(*) from t2) AS c2,
 
2129
(SELECT COUNT(*) from t3) AS c3;
 
2130
c1      c2      c3
 
2131
2       0       2
 
2132
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
2133
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
2134
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2135
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    0       Start temporary
 
2136
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
2137
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    2       Using where; End temporary; Using join buffer (Block Nested Loop)
 
2138
SELECT * FROM t1 WHERE (t1.i) IN 
 
2139
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
2140
i
 
2141
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
2142
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
 
2143
EXECUTE stmt;
 
2144
i
 
2145
EXECUTE stmt;
 
2146
i
 
2147
DEALLOCATE PREPARE stmt;
 
2148
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
2149
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
2150
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2151
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    0       Start temporary
 
2152
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
2153
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    2       Using where; End temporary; Using join buffer (Block Nested Loop)
 
2154
SELECT * FROM t1 WHERE (t1.i) IN 
 
2155
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
2156
i
 
2157
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
2158
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
 
2159
EXECUTE stmt;
 
2160
i
 
2161
EXECUTE stmt;
 
2162
i
 
2163
DEALLOCATE PREPARE stmt;
 
2164
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
2165
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
2166
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2167
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    NULL
 
2168
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
2169
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    2       NULL
 
2170
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    0       Using where; Using join buffer (Block Nested Loop)
 
2171
SELECT * FROM t1 WHERE (t1.i) IN 
 
2172
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
2173
i
 
2174
2
 
2175
1
 
2176
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
2177
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
2178
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2179
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    0       Start temporary
 
2180
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using join buffer (Block Nested Loop)
 
2181
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    2       Using where; End temporary; Using join buffer (Block Nested Loop)
 
2182
SELECT * FROM t1 WHERE (t1.i) IN 
 
2183
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
2184
i
 
2185
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
2186
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
2187
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2188
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    0       Using where; Start temporary
 
2189
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using join buffer (Block Nested Loop)
 
2190
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    2       Using where; End temporary; Using join buffer (Block Nested Loop)
 
2191
SELECT * FROM t1 WHERE (11) IN 
 
2192
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
2193
i
 
2194
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
2195
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
2196
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2197
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    0       Using where; Start temporary
 
2198
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
2199
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    2       Using where; End temporary; Using join buffer (Block Nested Loop)
 
2200
SELECT * FROM t1 WHERE (11) IN 
 
2201
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
2202
i
 
2203
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
2204
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
2205
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2206
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
2207
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using join buffer (Block Nested Loop)
 
2208
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    2       Using where
 
2209
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    0       Using where; Using join buffer (Block Nested Loop)
 
2210
SELECT * FROM t1 WHERE (11) IN 
 
2211
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
2212
i
 
2213
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
2214
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
2215
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2216
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    0       Start temporary
 
2217
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using join buffer (Block Nested Loop)
 
2218
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    2       Using where; End temporary; Using join buffer (Block Nested Loop)
 
2219
SELECT * FROM t1 WHERE (11) IN 
 
2220
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
2221
i
 
2222
INSERT INTO t3 VALUES (0);
 
2223
DELETE FROM t3;
 
2224
INSERT INTO t2 VALUES (2);
 
2225
SELECT (SELECT COUNT(*) from t1) AS c1,
 
2226
(SELECT COUNT(*) from t2) AS c2,
 
2227
(SELECT COUNT(*) from t3) AS c3;
 
2228
c1      c2      c3
 
2229
2       1       0
 
2230
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
2231
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
2232
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2233
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    NULL
 
2234
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
2235
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    0       NULL
 
2236
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    1       Using where; Using join buffer (Block Nested Loop)
 
2237
SELECT * FROM t1 WHERE (t1.i) IN 
 
2238
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
2239
i
 
2240
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
2241
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
 
2242
EXECUTE stmt;
 
2243
i
 
2244
EXECUTE stmt;
 
2245
i
 
2246
DEALLOCATE PREPARE stmt;
 
2247
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
2248
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
2249
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2250
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    NULL
 
2251
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
2252
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    0       NULL
 
2253
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    1       Using where; Using join buffer (Block Nested Loop)
 
2254
SELECT * FROM t1 WHERE (t1.i) IN 
 
2255
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
2256
i
 
2257
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
2258
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
 
2259
EXECUTE stmt;
 
2260
i
 
2261
EXECUTE stmt;
 
2262
i
 
2263
DEALLOCATE PREPARE stmt;
 
2264
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
2265
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
2266
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2267
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    NULL
 
2268
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
2269
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    0       NULL
 
2270
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    1       Using where; Using join buffer (Block Nested Loop)
 
2271
SELECT * FROM t1 WHERE (t1.i) IN 
 
2272
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
2273
i
 
2274
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
2275
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
2276
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2277
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    NULL
 
2278
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
2279
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    1       NULL
 
2280
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    0       Using join buffer (Block Nested Loop)
 
2281
SELECT * FROM t1 WHERE (t1.i) IN 
 
2282
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
2283
i
 
2284
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
2285
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
2286
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2287
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
2288
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using join buffer (Block Nested Loop)
 
2289
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    0       Using where
 
2290
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    1       Using where; Using join buffer (Block Nested Loop)
 
2291
SELECT * FROM t1 WHERE (11) IN 
 
2292
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
2293
i
 
2294
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
2295
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
2296
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2297
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    0       Using where; Start temporary
 
2298
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    1       Using where; Using join buffer (Block Nested Loop)
 
2299
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where; End temporary; Using join buffer (Block Nested Loop)
 
2300
SELECT * FROM t1 WHERE (11) IN 
 
2301
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
2302
i
 
2303
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
2304
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
2305
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2306
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
2307
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using join buffer (Block Nested Loop)
 
2308
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    0       Using where
 
2309
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    1       Using where; Using join buffer (Block Nested Loop)
 
2310
SELECT * FROM t1 WHERE (11) IN 
 
2311
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
2312
i
 
2313
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
2314
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
2315
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2316
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
2317
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using join buffer (Block Nested Loop)
 
2318
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    1       NULL
 
2319
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    0       Using where; Using join buffer (Block Nested Loop)
 
2320
SELECT * FROM t1 WHERE (11) IN 
 
2321
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
2322
i
 
2323
INSERT INTO t3 VALUES (2);
 
2324
SELECT (SELECT COUNT(*) from t1) AS c1,
 
2325
(SELECT COUNT(*) from t2) AS c2,
 
2326
(SELECT COUNT(*) from t3) AS c3;
 
2327
c1      c2      c3
 
2328
2       1       1
 
2329
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
2330
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
2331
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2332
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    NULL
 
2333
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
2334
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    1       NULL
 
2335
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    1       Using where; Using join buffer (Block Nested Loop)
 
2336
SELECT * FROM t1 WHERE (t1.i) IN 
 
2337
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
2338
i
 
2339
2
 
2340
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
2341
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
 
2342
EXECUTE stmt;
 
2343
i
 
2344
2
 
2345
EXECUTE stmt;
 
2346
i
 
2347
2
 
2348
DEALLOCATE PREPARE stmt;
 
2349
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
2350
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
2351
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2352
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    NULL
 
2353
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
2354
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    1       NULL
 
2355
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    1       Using where; Using join buffer (Block Nested Loop)
 
2356
SELECT * FROM t1 WHERE (t1.i) IN 
 
2357
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
2358
i
 
2359
2
 
2360
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
2361
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
 
2362
EXECUTE stmt;
 
2363
i
 
2364
2
 
2365
EXECUTE stmt;
 
2366
i
 
2367
2
 
2368
DEALLOCATE PREPARE stmt;
 
2369
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
2370
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
2371
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2372
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    NULL
 
2373
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
2374
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    1       NULL
 
2375
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    1       Using where; Using join buffer (Block Nested Loop)
 
2376
SELECT * FROM t1 WHERE (t1.i) IN 
 
2377
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
2378
i
 
2379
2
 
2380
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
2381
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
2382
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2383
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    NULL
 
2384
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
2385
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    1       NULL
 
2386
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    1       Using join buffer (Block Nested Loop)
 
2387
SELECT * FROM t1 WHERE (t1.i) IN 
 
2388
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
2389
i
 
2390
2
 
2391
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
2392
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
2393
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2394
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
2395
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using join buffer (Block Nested Loop)
 
2396
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    1       Using where
 
2397
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    1       Using where; Using join buffer (Block Nested Loop)
 
2398
SELECT * FROM t1 WHERE (11) IN 
 
2399
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
2400
i
 
2401
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
2402
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
2403
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2404
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    1       Using where; Start temporary
 
2405
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    1       Using where; Using join buffer (Block Nested Loop)
 
2406
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where; End temporary; Using join buffer (Block Nested Loop)
 
2407
SELECT * FROM t1 WHERE (11) IN 
 
2408
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
2409
i
 
2410
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
2411
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
2412
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2413
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
2414
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using join buffer (Block Nested Loop)
 
2415
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    1       Using where
 
2416
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    1       Using where; Using join buffer (Block Nested Loop)
 
2417
SELECT * FROM t1 WHERE (11) IN 
 
2418
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
2419
i
 
2420
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
2421
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
2422
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2423
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
2424
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using join buffer (Block Nested Loop)
 
2425
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    1       NULL
 
2426
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    1       Using where; Using join buffer (Block Nested Loop)
 
2427
SELECT * FROM t1 WHERE (11) IN 
 
2428
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
2429
i
 
2430
INSERT INTO t3 VALUES (1);
 
2431
SELECT (SELECT COUNT(*) from t1) AS c1,
 
2432
(SELECT COUNT(*) from t2) AS c2,
 
2433
(SELECT COUNT(*) from t3) AS c3;
 
2434
c1      c2      c3
 
2435
2       1       2
 
2436
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
2437
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
2438
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2439
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    1       Start temporary
 
2440
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
2441
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    2       Using where; End temporary; Using join buffer (Block Nested Loop)
 
2442
SELECT * FROM t1 WHERE (t1.i) IN 
 
2443
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
2444
i
 
2445
2
 
2446
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
2447
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
 
2448
EXECUTE stmt;
 
2449
i
 
2450
2
 
2451
EXECUTE stmt;
 
2452
i
 
2453
2
 
2454
DEALLOCATE PREPARE stmt;
 
2455
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
2456
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
2457
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2458
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    1       Start temporary
 
2459
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
2460
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    2       Using where; End temporary; Using join buffer (Block Nested Loop)
 
2461
SELECT * FROM t1 WHERE (t1.i) IN 
 
2462
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
2463
i
 
2464
2
 
2465
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
2466
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
 
2467
EXECUTE stmt;
 
2468
i
 
2469
2
 
2470
EXECUTE stmt;
 
2471
i
 
2472
2
 
2473
DEALLOCATE PREPARE stmt;
 
2474
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
2475
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
2476
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2477
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    NULL
 
2478
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
2479
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    2       NULL
 
2480
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    1       Using where; Using join buffer (Block Nested Loop)
 
2481
SELECT * FROM t1 WHERE (t1.i) IN 
 
2482
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
2483
i
 
2484
2
 
2485
1
 
2486
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
2487
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
2488
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2489
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    1       Start temporary
 
2490
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using join buffer (Block Nested Loop)
 
2491
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    2       Using where; End temporary; Using join buffer (Block Nested Loop)
 
2492
SELECT * FROM t1 WHERE (t1.i) IN 
 
2493
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
2494
i
 
2495
2
 
2496
1
 
2497
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
2498
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
2499
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2500
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    1       Using where; Start temporary
 
2501
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    2       Using where; End temporary; Using join buffer (Block Nested Loop)
 
2502
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using join buffer (Block Nested Loop)
 
2503
SELECT * FROM t1 WHERE (11) IN 
 
2504
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
2505
i
 
2506
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
2507
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
2508
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2509
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    1       Using where; Start temporary
 
2510
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
2511
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    2       Using where; End temporary; Using join buffer (Block Nested Loop)
 
2512
SELECT * FROM t1 WHERE (11) IN 
 
2513
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
2514
i
 
2515
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
2516
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
2517
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2518
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
2519
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using join buffer (Block Nested Loop)
 
2520
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    2       Using where
 
2521
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    1       Using where; Using join buffer (Block Nested Loop)
 
2522
SELECT * FROM t1 WHERE (11) IN 
 
2523
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
2524
i
 
2525
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
2526
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
2527
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2528
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    1       Start temporary
 
2529
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    2       Using where; End temporary; Using join buffer (Block Nested Loop)
 
2530
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using join buffer (Block Nested Loop)
 
2531
SELECT * FROM t1 WHERE (11) IN 
 
2532
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
2533
i
 
2534
INSERT INTO t3 VALUES (0);
 
2535
DELETE FROM t3;
 
2536
INSERT INTO t2 VALUES (1);
 
2537
SELECT (SELECT COUNT(*) from t1) AS c1,
 
2538
(SELECT COUNT(*) from t2) AS c2,
 
2539
(SELECT COUNT(*) from t3) AS c3;
 
2540
c1      c2      c3
 
2541
2       2       0
 
2542
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
2543
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
2544
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2545
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    0       Start temporary
 
2546
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
2547
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    2       Using where; End temporary; Using join buffer (Block Nested Loop)
 
2548
SELECT * FROM t1 WHERE (t1.i) IN 
 
2549
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
2550
i
 
2551
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
2552
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
 
2553
EXECUTE stmt;
 
2554
i
 
2555
EXECUTE stmt;
 
2556
i
 
2557
DEALLOCATE PREPARE stmt;
 
2558
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
2559
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
2560
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2561
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    0       Start temporary
 
2562
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
2563
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    2       Using where; End temporary; Using join buffer (Block Nested Loop)
 
2564
SELECT * FROM t1 WHERE (t1.i) IN 
 
2565
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
2566
i
 
2567
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
2568
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
 
2569
EXECUTE stmt;
 
2570
i
 
2571
EXECUTE stmt;
 
2572
i
 
2573
DEALLOCATE PREPARE stmt;
 
2574
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
2575
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
2576
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2577
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    0       Start temporary
 
2578
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
2579
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    2       Using where; End temporary; Using join buffer (Block Nested Loop)
 
2580
SELECT * FROM t1 WHERE (t1.i) IN 
 
2581
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
2582
i
 
2583
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
2584
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
2585
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2586
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    NULL
 
2587
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
2588
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    2       NULL
 
2589
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    0       Using join buffer (Block Nested Loop)
 
2590
SELECT * FROM t1 WHERE (t1.i) IN 
 
2591
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
2592
i
 
2593
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
2594
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
2595
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2596
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    0       Using where; Start temporary
 
2597
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using join buffer (Block Nested Loop)
 
2598
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    2       Using where; End temporary; Using join buffer (Block Nested Loop)
 
2599
SELECT * FROM t1 WHERE (11) IN 
 
2600
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
2601
i
 
2602
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
2603
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
2604
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2605
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    0       Using where; Start temporary
 
2606
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
2607
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    2       Using where; End temporary; Using join buffer (Block Nested Loop)
 
2608
SELECT * FROM t1 WHERE (11) IN 
 
2609
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
2610
i
 
2611
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
2612
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
2613
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2614
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    0       Using where; Start temporary
 
2615
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using join buffer (Block Nested Loop)
 
2616
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    2       Using where; End temporary; Using join buffer (Block Nested Loop)
 
2617
SELECT * FROM t1 WHERE (11) IN 
 
2618
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
2619
i
 
2620
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
2621
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
2622
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2623
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
2624
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using join buffer (Block Nested Loop)
 
2625
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    2       NULL
 
2626
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    0       Using where; Using join buffer (Block Nested Loop)
 
2627
SELECT * FROM t1 WHERE (11) IN 
 
2628
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
2629
i
 
2630
INSERT INTO t3 VALUES (2);
 
2631
SELECT (SELECT COUNT(*) from t1) AS c1,
 
2632
(SELECT COUNT(*) from t2) AS c2,
 
2633
(SELECT COUNT(*) from t3) AS c3;
 
2634
c1      c2      c3
 
2635
2       2       1
 
2636
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
2637
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
2638
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2639
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    1       Start temporary
 
2640
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
2641
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    2       Using where; End temporary; Using join buffer (Block Nested Loop)
 
2642
SELECT * FROM t1 WHERE (t1.i) IN 
 
2643
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
2644
i
 
2645
2
 
2646
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
2647
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
 
2648
EXECUTE stmt;
 
2649
i
 
2650
2
 
2651
EXECUTE stmt;
 
2652
i
 
2653
2
 
2654
DEALLOCATE PREPARE stmt;
 
2655
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
2656
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
2657
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2658
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    1       Start temporary
 
2659
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
2660
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    2       Using where; End temporary; Using join buffer (Block Nested Loop)
 
2661
SELECT * FROM t1 WHERE (t1.i) IN 
 
2662
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
2663
i
 
2664
2
 
2665
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
2666
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
 
2667
EXECUTE stmt;
 
2668
i
 
2669
2
 
2670
EXECUTE stmt;
 
2671
i
 
2672
2
 
2673
DEALLOCATE PREPARE stmt;
 
2674
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
2675
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
2676
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2677
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    1       Start temporary
 
2678
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
2679
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    2       Using where; End temporary; Using join buffer (Block Nested Loop)
 
2680
SELECT * FROM t1 WHERE (t1.i) IN 
 
2681
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
2682
i
 
2683
2
 
2684
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
2685
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
2686
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2687
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    NULL
 
2688
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
2689
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    2       NULL
 
2690
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    1       Using join buffer (Block Nested Loop)
 
2691
SELECT * FROM t1 WHERE (t1.i) IN 
 
2692
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
2693
i
 
2694
2
 
2695
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
2696
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
2697
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2698
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    1       Using where; Start temporary
 
2699
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    2       Using where; End temporary; Using join buffer (Block Nested Loop)
 
2700
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using join buffer (Block Nested Loop)
 
2701
SELECT * FROM t1 WHERE (11) IN 
 
2702
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
2703
i
 
2704
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
2705
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
2706
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2707
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    1       Using where; Start temporary
 
2708
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
2709
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    2       Using where; End temporary; Using join buffer (Block Nested Loop)
 
2710
SELECT * FROM t1 WHERE (11) IN 
 
2711
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
2712
i
 
2713
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
2714
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
2715
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2716
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    1       Using where; Start temporary
 
2717
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    2       Using where; End temporary; Using join buffer (Block Nested Loop)
 
2718
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using join buffer (Block Nested Loop)
 
2719
SELECT * FROM t1 WHERE (11) IN 
 
2720
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
2721
i
 
2722
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
2723
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
2724
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2725
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
2726
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using join buffer (Block Nested Loop)
 
2727
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    2       NULL
 
2728
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    1       Using where; Using join buffer (Block Nested Loop)
 
2729
SELECT * FROM t1 WHERE (11) IN 
 
2730
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
2731
i
 
2732
INSERT INTO t3 VALUES (1);
 
2733
SELECT (SELECT COUNT(*) from t1) AS c1,
 
2734
(SELECT COUNT(*) from t2) AS c2,
 
2735
(SELECT COUNT(*) from t3) AS c3;
 
2736
c1      c2      c3
 
2737
2       2       2
 
2738
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
2739
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
2740
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2741
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where
 
2742
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      5       test.t1.i       1       NULL
 
2743
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    2       NULL
 
2744
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
2745
SELECT * FROM t1 WHERE (t1.i) IN 
 
2746
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i);
 
2747
i
 
2748
2
 
2749
1
 
2750
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
2751
(SELECT t3.i FROM t2 INNER JOIN t3 ON t2.i=t3.i)";
 
2752
EXECUTE stmt;
 
2753
i
 
2754
2
 
2755
1
 
2756
EXECUTE stmt;
 
2757
i
 
2758
2
 
2759
1
 
2760
DEALLOCATE PREPARE stmt;
 
2761
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
2762
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
2763
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2764
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where
 
2765
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      5       test.t1.i       1       NULL
 
2766
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    2       NULL
 
2767
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
2768
SELECT * FROM t1 WHERE (t1.i) IN 
 
2769
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
2770
i
 
2771
2
 
2772
1
 
2773
PREPARE stmt FROM "SELECT * FROM t1 WHERE (t1.i) IN 
 
2774
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i)";
 
2775
EXECUTE stmt;
 
2776
i
 
2777
2
 
2778
1
 
2779
EXECUTE stmt;
 
2780
i
 
2781
2
 
2782
1
 
2783
DEALLOCATE PREPARE stmt;
 
2784
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
2785
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
2786
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2787
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where
 
2788
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      5       test.t1.i       1       NULL
 
2789
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    2       NULL
 
2790
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
2791
SELECT * FROM t1 WHERE (t1.i) IN 
 
2792
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
2793
i
 
2794
2
 
2795
1
 
2796
EXPLAIN SELECT * FROM t1 WHERE (t1.i) IN 
 
2797
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
2798
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2799
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where
 
2800
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      5       test.t1.i       1       NULL
 
2801
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    2       NULL
 
2802
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    2       Using join buffer (Block Nested Loop)
 
2803
SELECT * FROM t1 WHERE (t1.i) IN 
 
2804
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
2805
i
 
2806
2
 
2807
1
 
2808
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
2809
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
2810
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2811
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       NULL
 
2812
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
2813
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    2       Using where
 
2814
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
2815
SELECT * FROM t1 WHERE (11) IN 
 
2816
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
2817
i
 
2818
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
2819
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
2820
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2821
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where; Start temporary
 
2822
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
2823
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    2       Using where; End temporary; Using join buffer (Block Nested Loop)
 
2824
SELECT * FROM t1 WHERE (11) IN 
 
2825
(SELECT t3.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i WHERE t1.i);
 
2826
i
 
2827
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
2828
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
2829
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2830
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       NULL
 
2831
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
2832
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    2       Using where
 
2833
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
2834
SELECT * FROM t1 WHERE (11) IN 
 
2835
(SELECT t3.i FROM t2 RIGHT JOIN t3 ON t2.i=t3.i);
 
2836
i
 
2837
EXPLAIN SELECT * FROM t1 WHERE (11) IN 
 
2838
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
2839
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2840
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       NULL
 
2841
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
2842
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    2       NULL
 
2843
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
2844
SELECT * FROM t1 WHERE (11) IN 
 
2845
(SELECT t3.i FROM t2 STRAIGHT_JOIN t3);
 
2846
i
 
2847
INSERT INTO t3 VALUES (0);
 
2848
DELETE FROM t3;
 
2849
INSERT INTO t2 VALUES (0);
 
2850
DELETE FROM t2;
 
2851
INSERT INTO t1 VALUES (0);
 
2852
DROP TABLE t1, t2, t3;
 
2853
create table x1(k int primary key, d1 int, d2 int);
 
2854
create table x2(k int primary key, d1 int, d2 int);
 
2855
insert into x1 values
 
2856
(10,   10,   10),
 
2857
(20,   20,   20),
 
2858
(21,   20,   null),
 
2859
(30,   null, 30),
 
2860
(40,   40,   40);
 
2861
insert into x2 values
 
2862
(10,   10,   10),
 
2863
(20,   20,   20),
 
2864
(21,   20,   null),
 
2865
(30,   null, 30);
 
2866
select *
 
2867
from x1
 
2868
where (d1, d2) in (select d1, d2
 
2869
from x2);
 
2870
k       d1      d2
 
2871
10      10      10
 
2872
20      20      20
 
2873
select *
 
2874
from x1
 
2875
where (d1, d2) in (select d1, d2
 
2876
from x2) is true;
 
2877
k       d1      d2
 
2878
10      10      10
 
2879
20      20      20
 
2880
select *
 
2881
from x1
 
2882
where (d1, d2) in (select d1, d2
 
2883
from x2) is false;
 
2884
k       d1      d2
 
2885
40      40      40
 
2886
select *
 
2887
from x1
 
2888
where (d1, d2) in (select d1, d2
 
2889
from x2) is unknown;
 
2890
k       d1      d2
 
2891
21      20      NULL
 
2892
30      NULL    30
 
2893
select *
 
2894
from x1
 
2895
where d1 in (select d1
 
2896
from x2
 
2897
where x1.d2=x2.d2);
 
2898
k       d1      d2
 
2899
10      10      10
 
2900
20      20      20
 
2901
select *
 
2902
from x1
 
2903
where d1 in (select d1
 
2904
from x2
 
2905
where x1.d2=x2.d2) is true;
 
2906
k       d1      d2
 
2907
10      10      10
 
2908
20      20      20
 
2909
select *
 
2910
from x1
 
2911
where d1 in (select d1
 
2912
from x2
 
2913
where x1.d2=x2.d2) is false;
 
2914
k       d1      d2
 
2915
21      20      NULL
 
2916
40      40      40
 
2917
select *
 
2918
from x1
 
2919
where d1 in (select d1
 
2920
from x2
 
2921
where x1.d2=x2.d2) is unknown;
 
2922
k       d1      d2
 
2923
30      NULL    30
 
2924
select *
 
2925
from x1
 
2926
where 1 in (select 1
 
2927
from x2
 
2928
where x1.d1=x2.d1 and x1.d2=x2.d2);
 
2929
k       d1      d2
 
2930
10      10      10
 
2931
20      20      20
 
2932
select *
 
2933
from x1
 
2934
where 1 in (select 1
 
2935
from x2
 
2936
where x1.d1=x2.d1 and x1.d2=x2.d2) is true;
 
2937
k       d1      d2
 
2938
10      10      10
 
2939
20      20      20
 
2940
select *
 
2941
from x1
 
2942
where 1 in (select 1
 
2943
from x2
 
2944
where x1.d1=x2.d1 and x1.d2=x2.d2) is false;
 
2945
k       d1      d2
 
2946
21      20      NULL
 
2947
30      NULL    30
 
2948
40      40      40
 
2949
select *
 
2950
from x1
 
2951
where 1 in (select 1
 
2952
from x2
 
2953
where x1.d1=x2.d1 and x1.d2=x2.d2) is unknown;
 
2954
k       d1      d2
 
2955
select *
 
2956
from x1
 
2957
where exists (select *
 
2958
from x2
 
2959
where x1.d1=x2.d1 and x1.d2=x2.d2);
 
2960
k       d1      d2
 
2961
10      10      10
 
2962
20      20      20
 
2963
drop table x1;
 
2964
drop table x2;
 
2965
CREATE TABLE t1 (
 
2966
a int(11) NOT NULL,
 
2967
b int(11) NOT NULL,
 
2968
c datetime default NULL,
 
2969
PRIMARY KEY  (a),
 
2970
KEY idx_bc (b,c)
 
2971
);
 
2972
INSERT INTO t1 VALUES 
 
2973
(406989,67,'2006-02-23 17:08:46'), (150078,67,'2005-10-26 11:17:45'),
 
2974
(406993,67,'2006-02-27 11:20:57'), (245655,67,'2005-12-08 15:59:08'),
 
2975
(406994,67,'2006-02-27 11:26:46'), (256,67,NULL),
 
2976
(398341,67,'2006-02-20 04:48:44'), (254,67,NULL),(1120,67,NULL),
 
2977
(406988,67,'2006-02-23 17:07:22'), (255,67,NULL),
 
2978
(398340,67,'2006-02-20 04:38:53'),(406631,67,'2006-02-23 10:49:42'),
 
2979
(245653,67,'2005-12-08 15:59:07'),(406992,67,'2006-02-24 16:47:18'),
 
2980
(245654,67,'2005-12-08 15:59:08'),(406995,67,'2006-02-28 11:55:00'),
 
2981
(127261,67,'2005-10-13 12:17:58'),(406991,67,'2006-02-24 16:42:32'),
 
2982
(245652,67,'2005-12-08 15:58:27'),(398545,67,'2006-02-20 04:53:13'),
 
2983
(154504,67,'2005-10-28 11:53:01'),(9199,67,NULL),(1,67,'2006-02-23 15:01:35'),
 
2984
(223456,67,NULL),(4101,67,NULL),(1133,67,NULL),
 
2985
(406990,67,'2006-02-23 18:01:45'),(148815,67,'2005-10-25 15:34:17'),
 
2986
(148812,67,'2005-10-25 15:30:01'),(245651,67,'2005-12-08 15:58:27'),
 
2987
(154503,67,'2005-10-28 11:52:38');
 
2988
create table t11 select * from t1 where b = 67 AND (c IS NULL OR c > NOW()) order by 3 asc;
 
2989
create table t12 select * from t1 where b = 67 AND (c IS NULL OR c > NOW()) order by 3 desc;
 
2990
create table t21 select * from t1 where b = 67 AND (c IS NULL OR c > '2005-12-08') order by 3 asc;
 
2991
create table t22 select * from t1 where b = 67 AND (c IS NULL OR c > '2005-12-08') order by 3 desc;
 
2992
update t22 set c = '2005-12-08 15:58:27' where a = 255;
 
2993
explain select t21.* from t21,t22 where t21.a = t22.a and 
 
2994
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;
 
2995
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
2996
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    Using temporary; Using filesort
 
2997
1       SIMPLE  t22     ALL     NULL    NULL    NULL    NULL    26      Using where; Using join buffer (Block Nested Loop)
 
2998
1       SIMPLE  t21     ALL     NULL    NULL    NULL    NULL    26      Using where; Using join buffer (Block Nested Loop)
 
2999
2       MATERIALIZED    t11     ALL     NULL    NULL    NULL    NULL    8       Using where
 
3000
2       MATERIALIZED    t12     ALL     NULL    NULL    NULL    NULL    8       Using where; Using join buffer (Block Nested Loop)
 
3001
explain format=json select * from t1 where a in (select a from t11);
 
3002
EXPLAIN
 
3003
{
 
3004
  "query_block": {
 
3005
    "select_id": 1,
 
3006
    "duplicates_removal": {
 
3007
      "using_temporary_table": true,
 
3008
      "nested_loop": [
 
3009
        {
 
3010
          "table": {
 
3011
            "table_name": "t11",
 
3012
            "access_type": "ALL",
 
3013
            "rows": 8,
 
3014
            "filtered": 100
 
3015
          }
 
3016
        },
 
3017
        {
 
3018
          "table": {
 
3019
            "table_name": "t1",
 
3020
            "access_type": "eq_ref",
 
3021
            "possible_keys": [
 
3022
              "PRIMARY"
 
3023
            ],
 
3024
            "key": "PRIMARY",
 
3025
            "used_key_parts": [
 
3026
              "a"
 
3027
            ],
 
3028
            "key_length": "4",
 
3029
            "ref": [
 
3030
              "test.t11.a"
 
3031
            ],
 
3032
            "rows": 1,
 
3033
            "filtered": 100
 
3034
          }
 
3035
        }
 
3036
      ]
 
3037
    }
 
3038
  }
 
3039
}
 
3040
Warnings:
 
3041
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` = `test`.`t11`.`a`)
 
3042
select t21.* from t21,t22 where t21.a = t22.a and 
 
3043
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;
 
3044
a       b       c
 
3045
256     67      NULL
 
3046
drop table t1, t11, t12, t21, t22;
 
3047
create table t1(a int);
 
3048
insert into t1 values (0),(1);
 
3049
explain 
 
3050
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;
 
3051
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
3052
1       PRIMARY X       ALL     NULL    NULL    NULL    NULL    2       NULL
 
3053
2       DEPENDENT SUBQUERY      Y       ALL     NULL    NULL    NULL    NULL    2       Using where
 
3054
2       DEPENDENT SUBQUERY      <subquery3>     eq_ref  <auto_key>      <auto_key>      5       test.Y.a        1       NULL
 
3055
3       MATERIALIZED    Z       ALL     NULL    NULL    NULL    NULL    2       NULL
 
3056
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;
 
3057
subq
 
3058
NULL
 
3059
0
 
3060
drop table t1;
 
3061
create table t0 (a int);
 
3062
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
 
3063
create table t1 as select * from t0;
 
3064
insert into t1 select a+10 from t0;
 
3065
insert into t0 values(2);
 
3066
explain select * from t1 where 2 in (select a from t0);
 
3067
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
3068
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      5       const   1       NULL
 
3069
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    20      Using join buffer (Block Nested Loop)
 
3070
2       MATERIALIZED    t0      ALL     NULL    NULL    NULL    NULL    11      Using where
 
3071
select * from t1 where 2 in (select a from t0);
 
3072
a
 
3073
0
 
3074
1
 
3075
2
 
3076
3
 
3077
4
 
3078
5
 
3079
6
 
3080
7
 
3081
8
 
3082
9
 
3083
10
 
3084
11
 
3085
12
 
3086
13
 
3087
14
 
3088
15
 
3089
16
 
3090
17
 
3091
18
 
3092
19
 
3093
explain select * from (select a from t0) x where a in (select a from t1);
 
3094
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
3095
1       PRIMARY <derived2>      ALL     NULL    NULL    NULL    NULL    11      Using where
 
3096
1       PRIMARY <subquery3>     eq_ref  <auto_key>      <auto_key>      5       x.a     1       NULL
 
3097
3       MATERIALIZED    t1      ALL     NULL    NULL    NULL    NULL    20      NULL
 
3098
2       DERIVED t0      ALL     NULL    NULL    NULL    NULL    11      NULL
 
3099
explain format=json select * from (select a from t0) x where a in (select a from t1);
 
3100
EXPLAIN
 
3101
{
 
3102
  "query_block": {
 
3103
    "select_id": 3,
 
3104
    "nested_loop": [
 
3105
      {
 
3106
        "table": {
 
3107
          "table_name": "x",
 
3108
          "access_type": "ALL",
 
3109
          "rows": 11,
 
3110
          "filtered": 100,
 
3111
          "attached_condition": "(`x`.`a` is not null)",
 
3112
          "materialized_from_subquery": {
 
3113
            "using_temporary_table": true,
 
3114
            "dependent": false,
 
3115
            "cacheable": true,
 
3116
            "query_block": {
 
3117
              "select_id": 2,
 
3118
              "table": {
 
3119
                "table_name": "t0",
 
3120
                "access_type": "ALL",
 
3121
                "rows": 11,
 
3122
                "filtered": 100
 
3123
              }
 
3124
            }
 
3125
          }
 
3126
        }
 
3127
      },
 
3128
      {
 
3129
        "table": {
 
3130
          "table_name": "<subquery3>",
 
3131
          "access_type": "eq_ref",
 
3132
          "key": "<auto_key>",
 
3133
          "key_length": "5",
 
3134
          "ref": [
 
3135
            "x.a"
 
3136
          ],
 
3137
          "rows": 1,
 
3138
          "materialized_from_subquery": {
 
3139
            "using_temporary_table": true,
 
3140
            "query_block": {
 
3141
              "table": {
 
3142
                "table_name": "t1",
 
3143
                "access_type": "ALL",
 
3144
                "rows": 20,
 
3145
                "filtered": 100
 
3146
              }
 
3147
            }
 
3148
          }
 
3149
        }
 
3150
      }
 
3151
    ]
 
3152
  }
 
3153
}
 
3154
Warnings:
 
3155
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`)
 
3156
drop table t0, t1;
 
3157
create table t0 (a int);
 
3158
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
 
3159
create table t1 (kp1 int, kp2 int, c int, filler char(100), key(kp1, kp2));
 
3160
insert into t1 select A.a+10*(B.a+10*C.a), 0, 0, 'filler' from t0 A, t0 B, t0 C;
 
3161
insert into t1 select * from t1 where kp1 < 20;
 
3162
create table t3 (a int);
 
3163
insert into t3 select A.a + 10*B.a from t0 A, t0 B;
 
3164
explain select * from t3 where a in (select kp1 from t1 where kp1<20);
 
3165
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
3166
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    100     Using where
 
3167
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      5       test.t3.a       1       NULL
 
3168
2       MATERIALIZED    t1      range   kp1     kp1     5       NULL    48      Using where; Using index
 
3169
select * from t3 where a in (select kp1 from t1 where kp1<20);
 
3170
a
 
3171
0
 
3172
1
 
3173
2
 
3174
3
 
3175
4
 
3176
5
 
3177
6
 
3178
7
 
3179
8
 
3180
9
 
3181
10
 
3182
11
 
3183
12
 
3184
13
 
3185
14
 
3186
15
 
3187
16
 
3188
17
 
3189
18
 
3190
19
 
3191
explain select * from t3 where a in (select kp1 from t1 where kp1<20) and a<20;
 
3192
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
3193
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    100     Using where
 
3194
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      5       test.t3.a       1       NULL
 
3195
2       MATERIALIZED    t1      range   kp1     kp1     5       NULL    48      Using where; Using index
 
3196
select * from t3 where a in (select kp1 from t1 where kp1<20) and a<20;
 
3197
a
 
3198
0
 
3199
1
 
3200
2
 
3201
3
 
3202
4
 
3203
5
 
3204
6
 
3205
7
 
3206
8
 
3207
9
 
3208
10
 
3209
11
 
3210
12
 
3211
13
 
3212
14
 
3213
15
 
3214
16
 
3215
17
 
3216
18
 
3217
19
 
3218
create table t4 (pk int primary key);
 
3219
insert into t4 select a from t3;
 
3220
explain select * from t3 where a in 
 
3221
(select t1.kp1 from t1,t4 where kp1<20 and t4.pk=t1.c);
 
3222
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
3223
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    100     Using where
 
3224
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      5       test.t3.a       1       NULL
 
3225
2       MATERIALIZED    t1      range   kp1     kp1     5       NULL    48      Using where
 
3226
2       MATERIALIZED    t4      eq_ref  PRIMARY PRIMARY 4       test.t1.c       1       Using index
 
3227
select * from t3 where a in 
 
3228
(select t1.kp1 from t1,t4 where kp1<20 and t4.pk=t1.c);
 
3229
a
 
3230
0
 
3231
1
 
3232
2
 
3233
3
 
3234
4
 
3235
5
 
3236
6
 
3237
7
 
3238
8
 
3239
9
 
3240
10
 
3241
11
 
3242
12
 
3243
13
 
3244
14
 
3245
15
 
3246
16
 
3247
17
 
3248
18
 
3249
19
 
3250
drop table t1, t3, t4;
 
3251
create table t1 (a int);
 
3252
insert into t1 values (0),(0),(0),(1),(1),(1),(2),(2),(2),(3),(3),(3);
 
3253
set @save_max_heap_table_size=@@max_heap_table_size;
 
3254
set @@max_heap_table_size= 16384;
 
3255
# Attempt to make one test that overflows the heap table when a
 
3256
# non-duplicate row is inserted and one test that overflows the
 
3257
# heap table when a duplicate record is inserted. Debugging showed
 
3258
# that these situations occurred with max_heap_table_size=16384
 
3259
# and optimizer_join_cache_level equals 1 and 0, respectively.
 
3260
# Finally execute a test that does not overflow the heap table.
 
3261
explain
 
3262
select count(*) from t0 A, t0 B, t0 C
 
3263
where C.a in (select a from t1 D);
 
3264
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
3265
1       SIMPLE  A       ALL     NULL    NULL    NULL    NULL    10      NULL
 
3266
1       SIMPLE  B       ALL     NULL    NULL    NULL    NULL    10      Using join buffer (Block Nested Loop)
 
3267
1       SIMPLE  C       ALL     NULL    NULL    NULL    NULL    10      Using where; Using join buffer (Block Nested Loop)
 
3268
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      5       test.C.a        1       NULL
 
3269
2       MATERIALIZED    D       ALL     NULL    NULL    NULL    NULL    12      NULL
 
3270
flush status;
 
3271
select count(*) from t0 A, t0 B, t0 C
 
3272
where C.a in (select a from t1 D);
 
3273
count(*)
 
3274
400
 
3275
show status like 'Created_tmp_disk_tables';
 
3276
Variable_name   Value
 
3277
Created_tmp_disk_tables 0
 
3278
set @@max_heap_table_size= @save_max_heap_table_size;
 
3279
flush status;
 
3280
select count(*) from t0 A, t0 B, t0 C
 
3281
where C.a in (select a from t1 D);
 
3282
count(*)
 
3283
400
 
3284
show status like 'Created_tmp_disk_tables';
 
3285
Variable_name   Value
 
3286
Created_tmp_disk_tables 0
 
3287
drop table t0, t1;
 
3288
create table t0 (a int);
 
3289
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
 
3290
create table t2(a int);
 
3291
insert into t2 values (1),(2);
 
3292
create table t3 ( a int , filler char(100), key(a));
 
3293
insert into t3 select A.a + 10*B.a, 'filler' from t0 A, t0 B;
 
3294
explain select * from t3 where a in (select a from t2) and (a > 5 or a < 10);
 
3295
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
3296
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    2       Using where; Start temporary
 
3297
1       SIMPLE  t3      ref     a       a       5       test.t2.a       1       End temporary
 
3298
select * from t3 where a in (select a from t2);
 
3299
a       filler
 
3300
1       filler
 
3301
2       filler
 
3302
drop table t0, t2, t3;
 
3303
create table t1 (a date);
 
3304
insert into t1 values ('2008-01-01'),('2008-01-01'),('2008-02-01'),('2008-02-01');
 
3305
create table t2 (a int);
 
3306
insert into t2 values (1),(2);
 
3307
create table t3 (a char(10));
 
3308
insert into t3 select * from t1;
 
3309
insert into t3 values (1),(2);
 
3310
explain select * from t2 where a in (select a from t1);
 
3311
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
3312
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    2       Start temporary
 
3313
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    4       Using where; End temporary; Using join buffer (Block Nested Loop)
 
3314
explain select * from t2 where a in (select a from t2);
 
3315
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
3316
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    2       Using where
 
3317
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      5       test.t2.a       1       NULL
 
3318
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    2       NULL
 
3319
explain select * from t2 where a in (select a from t3);
 
3320
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
3321
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    2       Start temporary
 
3322
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    6       Using where; End temporary; Using join buffer (Block Nested Loop)
 
3323
explain select * from t1 where a in (select a from t3);
 
3324
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
3325
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    4       Start temporary
 
3326
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    6       Using where; End temporary; Using join buffer (Block Nested Loop)
 
3327
drop table t1, t2, t3;
 
3328
create table t1 (a decimal);
 
3329
insert into t1 values (1),(2);
 
3330
explain select * from t1 where a in (select a from t1);
 
3331
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
3332
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where
 
3333
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      6       test.t1.a       1       NULL
 
3334
2       MATERIALIZED    t1      ALL     NULL    NULL    NULL    NULL    2       NULL
 
3335
drop table t1;
 
3336
create table t1 (a int);
 
3337
insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
 
3338
create table t2 as select * from t1;
 
3339
create table t3 (a int, b int, filler char(100), key(a));
 
3340
insert into t3 select A.a + 10*B.a, A.a + 10*B.a, 'filler' from t1 A, t1 B, t1 C;
 
3341
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;
 
3342
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
3343
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    10      Using where
 
3344
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    Using where; Using join buffer (Block Nested Loop)
 
3345
1       SIMPLE  t3      ref     a       a       5       <subquery2>.a   10      NULL
 
3346
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    10      NULL
 
3347
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;
 
3348
EXPLAIN
 
3349
{
 
3350
  "query_block": {
 
3351
    "select_id": 1,
 
3352
    "nested_loop": [
 
3353
      {
 
3354
        "table": {
 
3355
          "table_name": "t1",
 
3356
          "access_type": "ALL",
 
3357
          "rows": 10,
 
3358
          "filtered": 100,
 
3359
          "attached_condition": "(`test`.`t1`.`a` = 3)"
 
3360
        }
 
3361
      },
 
3362
      {
 
3363
        "table": {
 
3364
          "table_name": "<subquery2>",
 
3365
          "access_type": "ALL",
 
3366
          "attached_condition": "(((`<subquery2>`.`a` < 10) or (`<subquery2>`.`a` > 30)) and (`<subquery2>`.`a` is not null))",
 
3367
          "materialized_from_subquery": {
 
3368
            "using_temporary_table": true,
 
3369
            "query_block": {
 
3370
              "table": {
 
3371
                "table_name": "t2",
 
3372
                "access_type": "ALL",
 
3373
                "rows": 10,
 
3374
                "filtered": 100
 
3375
              }
 
3376
            }
 
3377
          }
 
3378
        }
 
3379
      },
 
3380
      {
 
3381
        "table": {
 
3382
          "table_name": "t3",
 
3383
          "access_type": "ref",
 
3384
          "possible_keys": [
 
3385
            "a"
 
3386
          ],
 
3387
          "key": "a",
 
3388
          "used_key_parts": [
 
3389
            "a"
 
3390
          ],
 
3391
          "key_length": "5",
 
3392
          "ref": [
 
3393
            "<subquery2>.a"
 
3394
          ],
 
3395
          "rows": 10,
 
3396
          "filtered": 100
 
3397
        }
 
3398
      }
 
3399
    ]
 
3400
  }
 
3401
}
 
3402
Warnings:
 
3403
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)))
 
3404
explain select straight_join * from t1 A, t1 B where A.a in (select a from t2);
 
3405
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
3406
1       PRIMARY A       ALL     NULL    NULL    NULL    NULL    10      Using where
 
3407
1       PRIMARY B       ALL     NULL    NULL    NULL    NULL    10      Using join buffer (Block Nested Loop)
 
3408
2       SUBQUERY        t2      ALL     NULL    NULL    NULL    NULL    10      NULL
 
3409
explain select * from t2 where a in (select straight_join A.a from t1 A, t1 B);
 
3410
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
3411
1       PRIMARY t2      ALL     NULL    NULL    NULL    NULL    10      Using where
 
3412
2       SUBQUERY        A       ALL     NULL    NULL    NULL    NULL    10      NULL
 
3413
2       SUBQUERY        B       ALL     NULL    NULL    NULL    NULL    10      Using join buffer (Block Nested Loop)
 
3414
explain select * from t2 where a in (select straight_join A.a from t1 A, t1 B);
 
3415
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
3416
1       PRIMARY t2      ALL     NULL    NULL    NULL    NULL    10      Using where
 
3417
2       SUBQUERY        A       ALL     NULL    NULL    NULL    NULL    10      NULL
 
3418
2       SUBQUERY        B       ALL     NULL    NULL    NULL    NULL    10      Using join buffer (Block Nested Loop)
 
3419
explain select straight_join * from t2 X, t2 Y 
 
3420
where X.a in (select straight_join A.a from t1 A, t1 B);
 
3421
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
3422
1       PRIMARY X       ALL     NULL    NULL    NULL    NULL    10      Using where
 
3423
1       PRIMARY Y       ALL     NULL    NULL    NULL    NULL    10      Using join buffer (Block Nested Loop)
 
3424
2       SUBQUERY        A       ALL     NULL    NULL    NULL    NULL    10      NULL
 
3425
2       SUBQUERY        B       ALL     NULL    NULL    NULL    NULL    10      Using join buffer (Block Nested Loop)
 
3426
create table t0 (a int, b int);
 
3427
insert into t0 values(1,1);
 
3428
explain select * from t0, t3 where t3.a in (select a from t2) and (t3.a < 10 or t3.a >30);
 
3429
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
3430
1       SIMPLE  t0      system  NULL    NULL    NULL    NULL    1       NULL
 
3431
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    Using where
 
3432
1       SIMPLE  t3      ref     a       a       5       <subquery2>.a   10      NULL
 
3433
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    10      NULL
 
3434
create table t4 as select a as x, a as y from t1;
 
3435
explain select * from t0, t3 where (t3.a, t3.b) in (select x,y from t4) and (t3.a < 10 or t3.a >30);
 
3436
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
3437
1       SIMPLE  t0      system  NULL    NULL    NULL    NULL    1       NULL
 
3438
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    Using where
 
3439
1       SIMPLE  t3      ref     a       a       5       <subquery2>.x   10      Using where
 
3440
2       MATERIALIZED    t4      ALL     NULL    NULL    NULL    NULL    10      NULL
 
3441
drop table t0,t1,t2,t3,t4;
 
3442
create table t0 (a int);
 
3443
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
 
3444
create table t1 (a int, b int, filler char(100), key(a,b));
 
3445
insert into t1 select A.a, B.a, 'filler' from t0 A, t0 B;
 
3446
create table t2 as select * from t1;
 
3447
explain select * from t2 where a in (select b from t1 where a=3);
 
3448
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
3449
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    100     Using where
 
3450
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      5       test.t2.a       1       NULL
 
3451
2       MATERIALIZED    t1      ref     a       a       5       const   8       Using index
 
3452
explain select * from t2 where (b,a) in (select a,b from t1 where a=3);
 
3453
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
3454
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    100     Using where
 
3455
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      10      test.t2.b,test.t2.a     1       Using where
 
3456
2       MATERIALIZED    t1      ref     a       a       5       const   8       Using index
 
3457
drop table t1,t2;
 
3458
create table t1 (a int, b int);
 
3459
insert into t1 select a,a from t0;
 
3460
create table t2 (a int, b int);
 
3461
insert into t2 select A.a + 10*B.a, A.a + 10*B.a from t0 A, t0 B;
 
3462
explain select * from t1 where (a,b) in (select a,b from t2);
 
3463
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
3464
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    10      Using where
 
3465
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      10      test.t1.a,test.t1.b     1       NULL
 
3466
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    100     NULL
 
3467
drop table t0, t1, t2;
 
3468
create table t0 (a decimal(4,2));
 
3469
insert into t0 values (10.24), (22.11);
 
3470
create table t1 as select * from t0;
 
3471
insert into t1 select * from t0;
 
3472
explain select * from t0 where a in (select a from t1);
 
3473
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
3474
1       SIMPLE  t0      ALL     NULL    NULL    NULL    NULL    2       Using where
 
3475
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      3       test.t0.a       1       NULL
 
3476
2       MATERIALIZED    t1      ALL     NULL    NULL    NULL    NULL    4       NULL
 
3477
select * from t0 where a in (select a from t1);
 
3478
a
 
3479
10.24
 
3480
22.11
 
3481
drop table t0, t1;
 
3482
create table t0(a date);
 
3483
insert into t0 values ('2008-01-01'),('2008-02-02');
 
3484
create table t1 as select * from t0;
 
3485
insert into t1 select * from t0;
 
3486
explain select * from t0 where a in (select a from t1);
 
3487
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
3488
1       SIMPLE  t0      ALL     NULL    NULL    NULL    NULL    2       Using where
 
3489
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      4       test.t0.a       1       NULL
 
3490
2       MATERIALIZED    t1      ALL     NULL    NULL    NULL    NULL    4       NULL
 
3491
select * from t0 where a in (select a from t1);
 
3492
a
 
3493
2008-01-01
 
3494
2008-02-02
 
3495
drop table t0, t1;
 
3496
create table t0(a int);
 
3497
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
 
3498
create table t1 as select a as a, a as b, a as c from t0 where a < 3;
 
3499
create table t2 as select a as a, a as b from t0 where a < 3;
 
3500
insert into t2 select * from t2;
 
3501
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);
 
3502
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
3503
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    3       Using where
 
3504
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      15      test.t1.a,test.t1.b,test.t1.c   1       NULL
 
3505
2       MATERIALIZED    X       ALL     NULL    NULL    NULL    NULL    6       Using where
 
3506
2       MATERIALIZED    Y       ALL     NULL    NULL    NULL    NULL    6       Using join buffer (Block Nested Loop)
 
3507
2       MATERIALIZED    Z       ALL     NULL    NULL    NULL    NULL    6       Using join buffer (Block Nested Loop)
 
3508
drop table t0,t1,t2;
 
3509
set @save_join_buffer_size = @@join_buffer_size;
 
3510
set join_buffer_size= 8192;
 
3511
create table t0 (a int);
 
3512
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
 
3513
create table t1 (a int, filler1 binary(200), filler2 binary(200));
 
3514
insert into t1 select a, 'filler123456', 'filler123456' from t0;
 
3515
insert into t1 select a+10, 'filler123456', 'filler123456' from t0;
 
3516
create table t2 as select * from t1;
 
3517
insert into t1 select a+20, 'filler123456', 'filler123456' from t0;
 
3518
insert into t1 values (2, 'duplicate ok', 'duplicate ok');
 
3519
insert into t1 values (18, 'duplicate ok', 'duplicate ok');
 
3520
insert into t2 values (3, 'duplicate ok', 'duplicate ok');
 
3521
insert into t2 values (19, 'duplicate ok', 'duplicate ok');
 
3522
explain select 
 
3523
a, mid(filler1, 1,10), length(filler1)=length(filler2) as Z 
 
3524
from t1 ot where a in (select a from t2 it);
 
3525
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
3526
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    NULL
 
3527
1       SIMPLE  ot      ALL     NULL    NULL    NULL    NULL    32      Using where; Using join buffer (Block Nested Loop)
 
3528
2       MATERIALIZED    it      ALL     NULL    NULL    NULL    NULL    22      NULL
 
3529
select 
 
3530
a, mid(filler1, 1,10), length(filler1)=length(filler2) as Z 
 
3531
from t1 ot where a in (select a from t2 it);
 
3532
a       mid(filler1, 1,10)      Z
 
3533
0       filler1234      1
 
3534
1       filler1234      1
 
3535
10      filler1234      1
 
3536
11      filler1234      1
 
3537
12      filler1234      1
 
3538
13      filler1234      1
 
3539
14      filler1234      1
 
3540
15      filler1234      1
 
3541
16      filler1234      1
 
3542
17      filler1234      1
 
3543
18      duplicate       1
 
3544
18      filler1234      1
 
3545
19      filler1234      1
 
3546
2       duplicate       1
 
3547
2       filler1234      1
 
3548
3       filler1234      1
 
3549
4       filler1234      1
 
3550
5       filler1234      1
 
3551
6       filler1234      1
 
3552
7       filler1234      1
 
3553
8       filler1234      1
 
3554
9       filler1234      1
 
3555
explain select 
 
3556
a, mid(filler1, 1,10), length(filler1)=length(filler2) 
 
3557
from t2 ot where a in (select a from t1 it);
 
3558
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
3559
1       SIMPLE  ot      ALL     NULL    NULL    NULL    NULL    22      Using where
 
3560
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      5       test.ot.a       1       NULL
 
3561
2       MATERIALIZED    it      ALL     NULL    NULL    NULL    NULL    32      NULL
 
3562
select 
 
3563
a, mid(filler1, 1,10), length(filler1)=length(filler2) 
 
3564
from t2 ot where a in (select a from t1 it);
 
3565
a       mid(filler1, 1,10)      length(filler1)=length(filler2)
 
3566
0       filler1234      1
 
3567
1       filler1234      1
 
3568
10      filler1234      1
 
3569
11      filler1234      1
 
3570
12      filler1234      1
 
3571
13      filler1234      1
 
3572
14      filler1234      1
 
3573
15      filler1234      1
 
3574
16      filler1234      1
 
3575
17      filler1234      1
 
3576
18      filler1234      1
 
3577
19      duplicate       1
 
3578
19      filler1234      1
 
3579
2       filler1234      1
 
3580
3       duplicate       1
 
3581
3       filler1234      1
 
3582
4       filler1234      1
 
3583
5       filler1234      1
 
3584
6       filler1234      1
 
3585
7       filler1234      1
 
3586
8       filler1234      1
 
3587
9       filler1234      1
 
3588
insert into t1 select a+20, 'filler123456', 'filler123456' from t0;
 
3589
insert into t1 select a+20, 'filler123456', 'filler123456' from t0;
 
3590
explain select 
 
3591
a, mid(filler1, 1,10), length(filler1)=length(filler2) as Z 
 
3592
from t1 ot where a in (select a from t2 it);
 
3593
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
3594
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    NULL
 
3595
1       SIMPLE  ot      ALL     NULL    NULL    NULL    NULL    52      Using where; Using join buffer (Block Nested Loop)
 
3596
2       MATERIALIZED    it      ALL     NULL    NULL    NULL    NULL    22      NULL
 
3597
select 
 
3598
a, mid(filler1, 1,10), length(filler1)=length(filler2) as Z 
 
3599
from t1 ot where a in (select a from t2 it);
 
3600
a       mid(filler1, 1,10)      Z
 
3601
0       filler1234      1
 
3602
1       filler1234      1
 
3603
10      filler1234      1
 
3604
11      filler1234      1
 
3605
12      filler1234      1
 
3606
13      filler1234      1
 
3607
14      filler1234      1
 
3608
15      filler1234      1
 
3609
16      filler1234      1
 
3610
17      filler1234      1
 
3611
18      duplicate       1
 
3612
18      filler1234      1
 
3613
19      filler1234      1
 
3614
2       duplicate       1
 
3615
2       filler1234      1
 
3616
3       filler1234      1
 
3617
4       filler1234      1
 
3618
5       filler1234      1
 
3619
6       filler1234      1
 
3620
7       filler1234      1
 
3621
8       filler1234      1
 
3622
9       filler1234      1
 
3623
explain select 
 
3624
a, mid(filler1, 1,10), length(filler1)=length(filler2) 
 
3625
from t2 ot where a in (select a from t1 it);
 
3626
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
3627
1       SIMPLE  ot      ALL     NULL    NULL    NULL    NULL    22      Using where
 
3628
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      5       test.ot.a       1       NULL
 
3629
2       MATERIALIZED    it      ALL     NULL    NULL    NULL    NULL    52      NULL
 
3630
select 
 
3631
a, mid(filler1, 1,10), length(filler1)=length(filler2) 
 
3632
from t2 ot where a in (select a from t1 it);
 
3633
a       mid(filler1, 1,10)      length(filler1)=length(filler2)
 
3634
0       filler1234      1
 
3635
1       filler1234      1
 
3636
10      filler1234      1
 
3637
11      filler1234      1
 
3638
12      filler1234      1
 
3639
13      filler1234      1
 
3640
14      filler1234      1
 
3641
15      filler1234      1
 
3642
16      filler1234      1
 
3643
17      filler1234      1
 
3644
18      filler1234      1
 
3645
19      duplicate       1
 
3646
19      filler1234      1
 
3647
2       filler1234      1
 
3648
3       duplicate       1
 
3649
3       filler1234      1
 
3650
4       filler1234      1
 
3651
5       filler1234      1
 
3652
6       filler1234      1
 
3653
7       filler1234      1
 
3654
8       filler1234      1
 
3655
9       filler1234      1
 
3656
set @@join_buffer_size = @save_join_buffer_size;
 
3657
drop table t1, t2;
 
3658
create table t1 (a int, b int, key(a));
 
3659
create table t2 (a int, b int, key(a));
 
3660
create table t3 (a int, b int, key(a));
 
3661
insert into t1 select a,a from t0;
 
3662
insert into t2 select a,a from t0;
 
3663
insert into t3 select a,a from t0;
 
3664
t2 and t3 must be use 'ref', not 'ALL':
 
3665
explain select * 
 
3666
from t0 where a in
 
3667
(select t2.a+t3.a from t1 left join (t2 join t3) on t2.a=t1.a and t3.a=t1.a);
 
3668
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
3669
1       SIMPLE  t0      ALL     NULL    NULL    NULL    NULL    10      Using where
 
3670
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      9       test.t0.a       1       Using where
 
3671
2       MATERIALIZED    t1      index   a       a       5       NULL    10      Using index
 
3672
2       MATERIALIZED    t2      ref     a       a       5       test.t1.a       1       Using index
 
3673
2       MATERIALIZED    t3      ref     a       a       5       test.t1.a       1       Using index
 
3674
drop table t0, t1,t2,t3;
 
3675
 
 
3676
Test that neither MaterializeLookup strategy for semijoin,
 
3677
nor subquery materialization is used when BLOBs are involved 
 
3678
(except when arguments of some functions).
 
3679
 
 
3680
set @prefix_len = 6;
 
3681
set @blob_len = 16;
 
3682
set @suffix_len = @blob_len - @prefix_len;
 
3683
create table t1_16 (a1 blob(16), a2 blob(16));
 
3684
create table t2_16 (b1 blob(16), b2 blob(16));
 
3685
create table t3_16 (c1 blob(16), c2 blob(16));
 
3686
insert into t1_16 values
 
3687
(concat('1 - 00', repeat('x', @suffix_len)), concat('2 - 00', repeat('x', @suffix_len)));
 
3688
insert into t1_16 values
 
3689
(concat('1 - 01', repeat('x', @suffix_len)), concat('2 - 01', repeat('x', @suffix_len)));
 
3690
insert into t1_16 values
 
3691
(concat('1 - 02', repeat('x', @suffix_len)), concat('2 - 02', repeat('x', @suffix_len)));
 
3692
insert into t2_16 values
 
3693
(concat('1 - 01', repeat('x', @suffix_len)), concat('2 - 01', repeat('x', @suffix_len)));
 
3694
insert into t2_16 values
 
3695
(concat('1 - 02', repeat('x', @suffix_len)), concat('2 - 02', repeat('x', @suffix_len)));
 
3696
insert into t2_16 values
 
3697
(concat('1 - 03', repeat('x', @suffix_len)), concat('2 - 03', repeat('x', @suffix_len)));
 
3698
insert into t3_16 values
 
3699
(concat('1 - 01', repeat('x', @suffix_len)), concat('2 - 01', repeat('x', @suffix_len)));
 
3700
insert into t3_16 values
 
3701
(concat('1 - 02', repeat('x', @suffix_len)), concat('2 - 02', repeat('x', @suffix_len)));
 
3702
insert into t3_16 values
 
3703
(concat('1 - 03', repeat('x', @suffix_len)), concat('2 - 03', repeat('x', @suffix_len)));
 
3704
insert into t3_16 values
 
3705
(concat('1 - 04', repeat('x', @suffix_len)), concat('2 - 04', repeat('x', @suffix_len)));
 
3706
explain extended select left(a1,7), left(a2,7)
 
3707
from t1_16
 
3708
where a1 in (select b1 from t2_16 where b1 > '0');
 
3709
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
3710
1       SIMPLE  t1_16   ALL     NULL    NULL    NULL    NULL    3       100.00  NULL
 
3711
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    0.00    Using where; Using join buffer (Block Nested Loop)
 
3712
2       MATERIALIZED    t2_16   ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
 
3713
Warnings:
 
3714
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'))
 
3715
select left(a1,7), left(a2,7)
 
3716
from t1_16
 
3717
where a1 in (select b1 from t2_16 where b1 > '0');
 
3718
left(a1,7)      left(a2,7)
 
3719
1 - 01x 2 - 01x
 
3720
1 - 02x 2 - 02x
 
3721
explain extended select left(a1,7), left(a2,7)
 
3722
from t1_16
 
3723
where (a1,a2) in (select b1, b2 from t2_16 where b1 > '0');
 
3724
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
3725
1       SIMPLE  t1_16   ALL     NULL    NULL    NULL    NULL    3       100.00  NULL
 
3726
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    0.00    Using where; Using join buffer (Block Nested Loop)
 
3727
2       MATERIALIZED    t2_16   ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
 
3728
Warnings:
 
3729
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'))
 
3730
select left(a1,7), left(a2,7)
 
3731
from t1_16
 
3732
where (a1,a2) in (select b1, b2 from t2_16 where b1 > '0');
 
3733
left(a1,7)      left(a2,7)
 
3734
1 - 01x 2 - 01x
 
3735
1 - 02x 2 - 02x
 
3736
explain extended select left(a1,7), left(a2,7)
 
3737
from t1_16
 
3738
where a1 in (select substring(b1,1,16) from t2_16 where b1 > '0');
 
3739
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
3740
1       SIMPLE  t1_16   ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
 
3741
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      19      test.t1_16.a1   1       100.00  Using where
 
3742
2       MATERIALIZED    t2_16   ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
 
3743
Warnings:
 
3744
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)`))
 
3745
select left(a1,7), left(a2,7)
 
3746
from t1_16
 
3747
where a1 in (select substring(b1,1,16) from t2_16 where b1 > '0');
 
3748
left(a1,7)      left(a2,7)
 
3749
1 - 01x 2 - 01x
 
3750
1 - 02x 2 - 02x
 
3751
explain extended select left(a1,7), left(a2,7)
 
3752
from t1_16
 
3753
where a1 in (select group_concat(b1) from t2_16 group by b2);
 
3754
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
3755
1       PRIMARY t1_16   ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
 
3756
2       DEPENDENT SUBQUERY      t2_16   ALL     NULL    NULL    NULL    NULL    3       100.00  Using filesort
 
3757
Warnings:
 
3758
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 ',')))))
 
3759
select left(a1,7), left(a2,7)
 
3760
from t1_16
 
3761
where a1 in (select group_concat(b1) from t2_16 group by b2);
 
3762
left(a1,7)      left(a2,7)
 
3763
1 - 01x 2 - 01x
 
3764
1 - 02x 2 - 02x
 
3765
set @@group_concat_max_len = 256;
 
3766
explain extended select left(a1,7), left(a2,7)
 
3767
from t1_16
 
3768
where a1 in (select group_concat(b1) from t2_16 group by b2);
 
3769
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
3770
1       PRIMARY t1_16   ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
 
3771
2       SUBQUERY        t2_16   ALL     NULL    NULL    NULL    NULL    3       100.00  Using filesort
 
3772
Warnings:
 
3773
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)`)))))
 
3774
select left(a1,7), left(a2,7)
 
3775
from t1_16
 
3776
where a1 in (select group_concat(b1) from t2_16 group by b2);
 
3777
left(a1,7)      left(a2,7)
 
3778
1 - 01x 2 - 01x
 
3779
1 - 02x 2 - 02x
 
3780
create table t1 (a1 char(8), a2 char(8));
 
3781
create table t2 (b1 char(8), b2 char(8));
 
3782
create table t3 (c1 char(8), c2 char(8));
 
3783
insert into t1 values ('1 - 00', '2 - 00');
 
3784
insert into t1 values ('1 - 01', '2 - 01');
 
3785
insert into t1 values ('1 - 02', '2 - 02');
 
3786
insert into t2 values ('1 - 01', '2 - 01');
 
3787
insert into t2 values ('1 - 01', '2 - 01');
 
3788
insert into t2 values ('1 - 02', '2 - 02');
 
3789
insert into t2 values ('1 - 02', '2 - 02');
 
3790
insert into t2 values ('1 - 03', '2 - 03');
 
3791
insert into t3 values ('1 - 01', '2 - 01');
 
3792
insert into t3 values ('1 - 02', '2 - 02');
 
3793
insert into t3 values ('1 - 03', '2 - 03');
 
3794
insert into t3 values ('1 - 04', '2 - 04');
 
3795
explain extended
 
3796
select * from t1
 
3797
where concat(a1,'x') IN
 
3798
(select left(a1,8) from t1_16
 
3799
where (a1, a2) IN
 
3800
(select t2_16.b1, t2_16.b2 from t2_16, t2
 
3801
where t2.b2 = substring(t2_16.b2,1,6) and
 
3802
t2.b1 IN (select c1 from t3 where c2 > '0')));
 
3803
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
3804
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    3       100.00  Start temporary
 
3805
1       SIMPLE  t1_16   ALL     NULL    NULL    NULL    NULL    3       100.00  Using where; Using join buffer (Block Nested Loop)
 
3806
1       SIMPLE  t2_16   ALL     NULL    NULL    NULL    NULL    3       100.00  Using where; Using join buffer (Block Nested Loop)
 
3807
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    4       100.00  Using where; Using join buffer (Block Nested Loop)
 
3808
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    5       100.00  Using where; End temporary; Using join buffer (Block Nested Loop)
 
3809
Warnings:
 
3810
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)))
 
3811
drop table t1_16, t2_16, t3_16, t1, t2, t3;
 
3812
set @blob_len = 512;
 
3813
set @suffix_len = @blob_len - @prefix_len;
 
3814
create table t1_512 (a1 blob(512), a2 blob(512));
 
3815
create table t2_512 (b1 blob(512), b2 blob(512));
 
3816
create table t3_512 (c1 blob(512), c2 blob(512));
 
3817
insert into t1_512 values
 
3818
(concat('1 - 00', repeat('x', @suffix_len)), concat('2 - 00', repeat('x', @suffix_len)));
 
3819
insert into t1_512 values
 
3820
(concat('1 - 01', repeat('x', @suffix_len)), concat('2 - 01', repeat('x', @suffix_len)));
 
3821
insert into t1_512 values
 
3822
(concat('1 - 02', repeat('x', @suffix_len)), concat('2 - 02', repeat('x', @suffix_len)));
 
3823
insert into t2_512 values
 
3824
(concat('1 - 01', repeat('x', @suffix_len)), concat('2 - 01', repeat('x', @suffix_len)));
 
3825
insert into t2_512 values
 
3826
(concat('1 - 02', repeat('x', @suffix_len)), concat('2 - 02', repeat('x', @suffix_len)));
 
3827
insert into t2_512 values
 
3828
(concat('1 - 03', repeat('x', @suffix_len)), concat('2 - 03', repeat('x', @suffix_len)));
 
3829
insert into t3_512 values
 
3830
(concat('1 - 01', repeat('x', @suffix_len)), concat('2 - 01', repeat('x', @suffix_len)));
 
3831
insert into t3_512 values
 
3832
(concat('1 - 02', repeat('x', @suffix_len)), concat('2 - 02', repeat('x', @suffix_len)));
 
3833
insert into t3_512 values
 
3834
(concat('1 - 03', repeat('x', @suffix_len)), concat('2 - 03', repeat('x', @suffix_len)));
 
3835
insert into t3_512 values
 
3836
(concat('1 - 04', repeat('x', @suffix_len)), concat('2 - 04', repeat('x', @suffix_len)));
 
3837
explain extended select left(a1,7), left(a2,7)
 
3838
from t1_512
 
3839
where a1 in (select b1 from t2_512 where b1 > '0');
 
3840
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
3841
1       SIMPLE  t1_512  ALL     NULL    NULL    NULL    NULL    3       100.00  NULL
 
3842
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    0.00    Using where; Using join buffer (Block Nested Loop)
 
3843
2       MATERIALIZED    t2_512  ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
 
3844
Warnings:
 
3845
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'))
 
3846
select left(a1,7), left(a2,7)
 
3847
from t1_512
 
3848
where a1 in (select b1 from t2_512 where b1 > '0');
 
3849
left(a1,7)      left(a2,7)
 
3850
1 - 01x 2 - 01x
 
3851
1 - 02x 2 - 02x
 
3852
explain extended select left(a1,7), left(a2,7)
 
3853
from t1_512
 
3854
where (a1,a2) in (select b1, b2 from t2_512 where b1 > '0');
 
3855
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
3856
1       SIMPLE  t1_512  ALL     NULL    NULL    NULL    NULL    3       100.00  NULL
 
3857
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    0.00    Using where; Using join buffer (Block Nested Loop)
 
3858
2       MATERIALIZED    t2_512  ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
 
3859
Warnings:
 
3860
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'))
 
3861
select left(a1,7), left(a2,7)
 
3862
from t1_512
 
3863
where (a1,a2) in (select b1, b2 from t2_512 where b1 > '0');
 
3864
left(a1,7)      left(a2,7)
 
3865
1 - 01x 2 - 01x
 
3866
1 - 02x 2 - 02x
 
3867
explain extended select left(a1,7), left(a2,7)
 
3868
from t1_512
 
3869
where a1 in (select substring(b1,1,512) from t2_512 where b1 > '0');
 
3870
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
3871
1       SIMPLE  t1_512  ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
 
3872
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      515     test.t1_512.a1  1       100.00  Using where
 
3873
2       MATERIALIZED    t2_512  ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
 
3874
Warnings:
 
3875
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)`))
 
3876
select left(a1,7), left(a2,7)
 
3877
from t1_512
 
3878
where a1 in (select substring(b1,1,512) from t2_512 where b1 > '0');
 
3879
left(a1,7)      left(a2,7)
 
3880
1 - 01x 2 - 01x
 
3881
1 - 02x 2 - 02x
 
3882
explain extended select left(a1,7), left(a2,7)
 
3883
from t1_512
 
3884
where a1 in (select group_concat(b1) from t2_512 group by b2);
 
3885
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
3886
1       PRIMARY t1_512  ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
 
3887
2       SUBQUERY        t2_512  ALL     NULL    NULL    NULL    NULL    3       100.00  Using filesort
 
3888
Warnings:
 
3889
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)`)))))
 
3890
select left(a1,7), left(a2,7)
 
3891
from t1_512
 
3892
where a1 in (select group_concat(b1) from t2_512 group by b2);
 
3893
left(a1,7)      left(a2,7)
 
3894
Warnings:
 
3895
Warning 1260    Row 1 was cut by GROUP_CONCAT()
 
3896
Warning 1260    Row 2 was cut by GROUP_CONCAT()
 
3897
Warning 1260    Row 3 was cut by GROUP_CONCAT()
 
3898
set @@group_concat_max_len = 256;
 
3899
explain extended select left(a1,7), left(a2,7)
 
3900
from t1_512
 
3901
where a1 in (select group_concat(b1) from t2_512 group by b2);
 
3902
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
3903
1       PRIMARY t1_512  ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
 
3904
2       SUBQUERY        t2_512  ALL     NULL    NULL    NULL    NULL    3       100.00  Using filesort
 
3905
Warnings:
 
3906
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)`)))))
 
3907
select left(a1,7), left(a2,7)
 
3908
from t1_512
 
3909
where a1 in (select group_concat(b1) from t2_512 group by b2);
 
3910
left(a1,7)      left(a2,7)
 
3911
Warnings:
 
3912
Warning 1260    Row 1 was cut by GROUP_CONCAT()
 
3913
Warning 1260    Row 2 was cut by GROUP_CONCAT()
 
3914
Warning 1260    Row 3 was cut by GROUP_CONCAT()
 
3915
drop table t1_512, t2_512, t3_512;
 
3916
set @blob_len = 513;
 
3917
set @suffix_len = @blob_len - @prefix_len;
 
3918
create table t1_513 (a1 blob(513), a2 blob(513));
 
3919
create table t2_513 (b1 blob(513), b2 blob(513));
 
3920
create table t3_513 (c1 blob(513), c2 blob(513));
 
3921
insert into t1_513 values
 
3922
(concat('1 - 00', repeat('x', @suffix_len)), concat('2 - 00', repeat('x', @suffix_len)));
 
3923
insert into t1_513 values
 
3924
(concat('1 - 01', repeat('x', @suffix_len)), concat('2 - 01', repeat('x', @suffix_len)));
 
3925
insert into t1_513 values
 
3926
(concat('1 - 02', repeat('x', @suffix_len)), concat('2 - 02', repeat('x', @suffix_len)));
 
3927
insert into t2_513 values
 
3928
(concat('1 - 01', repeat('x', @suffix_len)), concat('2 - 01', repeat('x', @suffix_len)));
 
3929
insert into t2_513 values
 
3930
(concat('1 - 02', repeat('x', @suffix_len)), concat('2 - 02', repeat('x', @suffix_len)));
 
3931
insert into t2_513 values
 
3932
(concat('1 - 03', repeat('x', @suffix_len)), concat('2 - 03', repeat('x', @suffix_len)));
 
3933
insert into t3_513 values
 
3934
(concat('1 - 01', repeat('x', @suffix_len)), concat('2 - 01', repeat('x', @suffix_len)));
 
3935
insert into t3_513 values
 
3936
(concat('1 - 02', repeat('x', @suffix_len)), concat('2 - 02', repeat('x', @suffix_len)));
 
3937
insert into t3_513 values
 
3938
(concat('1 - 03', repeat('x', @suffix_len)), concat('2 - 03', repeat('x', @suffix_len)));
 
3939
insert into t3_513 values
 
3940
(concat('1 - 04', repeat('x', @suffix_len)), concat('2 - 04', repeat('x', @suffix_len)));
 
3941
explain extended select left(a1,7), left(a2,7)
 
3942
from t1_513
 
3943
where a1 in (select b1 from t2_513 where b1 > '0');
 
3944
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
3945
1       SIMPLE  t1_513  ALL     NULL    NULL    NULL    NULL    3       100.00  NULL
 
3946
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    0.00    Using where; Using join buffer (Block Nested Loop)
 
3947
2       MATERIALIZED    t2_513  ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
 
3948
Warnings:
 
3949
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'))
 
3950
select left(a1,7), left(a2,7)
 
3951
from t1_513
 
3952
where a1 in (select b1 from t2_513 where b1 > '0');
 
3953
left(a1,7)      left(a2,7)
 
3954
1 - 01x 2 - 01x
 
3955
1 - 02x 2 - 02x
 
3956
explain extended select left(a1,7), left(a2,7)
 
3957
from t1_513
 
3958
where (a1,a2) in (select b1, b2 from t2_513 where b1 > '0');
 
3959
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
3960
1       SIMPLE  t1_513  ALL     NULL    NULL    NULL    NULL    3       100.00  NULL
 
3961
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    0.00    Using where; Using join buffer (Block Nested Loop)
 
3962
2       MATERIALIZED    t2_513  ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
 
3963
Warnings:
 
3964
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'))
 
3965
select left(a1,7), left(a2,7)
 
3966
from t1_513
 
3967
where (a1,a2) in (select b1, b2 from t2_513 where b1 > '0');
 
3968
left(a1,7)      left(a2,7)
 
3969
1 - 01x 2 - 01x
 
3970
1 - 02x 2 - 02x
 
3971
explain extended select left(a1,7), left(a2,7)
 
3972
from t1_513
 
3973
where a1 in (select substring(b1,1,513) from t2_513 where b1 > '0');
 
3974
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
3975
1       SIMPLE  t1_513  ALL     NULL    NULL    NULL    NULL    3       100.00  NULL
 
3976
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    0.00    Using where; Using join buffer (Block Nested Loop)
 
3977
2       MATERIALIZED    t2_513  ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
 
3978
Warnings:
 
3979
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)`))
 
3980
select left(a1,7), left(a2,7)
 
3981
from t1_513
 
3982
where a1 in (select substring(b1,1,513) from t2_513 where b1 > '0');
 
3983
left(a1,7)      left(a2,7)
 
3984
1 - 01x 2 - 01x
 
3985
1 - 02x 2 - 02x
 
3986
explain extended select left(a1,7), left(a2,7)
 
3987
from t1_513
 
3988
where a1 in (select group_concat(b1) from t2_513 group by b2);
 
3989
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
3990
1       PRIMARY t1_513  ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
 
3991
2       SUBQUERY        t2_513  ALL     NULL    NULL    NULL    NULL    3       100.00  Using filesort
 
3992
Warnings:
 
3993
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)`)))))
 
3994
select left(a1,7), left(a2,7)
 
3995
from t1_513
 
3996
where a1 in (select group_concat(b1) from t2_513 group by b2);
 
3997
left(a1,7)      left(a2,7)
 
3998
Warnings:
 
3999
Warning 1260    Row 1 was cut by GROUP_CONCAT()
 
4000
Warning 1260    Row 2 was cut by GROUP_CONCAT()
 
4001
Warning 1260    Row 3 was cut by GROUP_CONCAT()
 
4002
drop table t1_513, t2_513, t3_513;
 
4003
set @blob_len = 1024;
 
4004
set @suffix_len = @blob_len - @prefix_len;
 
4005
create table t1_1024 (a1 blob(1024), a2 blob(1024));
 
4006
create table t2_1024 (b1 blob(1024), b2 blob(1024));
 
4007
create table t3_1024 (c1 blob(1024), c2 blob(1024));
 
4008
insert into t1_1024 values
 
4009
(concat('1 - 00', repeat('x', @suffix_len)), concat('2 - 00', repeat('x', @suffix_len)));
 
4010
insert into t1_1024 values
 
4011
(concat('1 - 01', repeat('x', @suffix_len)), concat('2 - 01', repeat('x', @suffix_len)));
 
4012
insert into t1_1024 values
 
4013
(concat('1 - 02', repeat('x', @suffix_len)), concat('2 - 02', repeat('x', @suffix_len)));
 
4014
insert into t2_1024 values
 
4015
(concat('1 - 01', repeat('x', @suffix_len)), concat('2 - 01', repeat('x', @suffix_len)));
 
4016
insert into t2_1024 values
 
4017
(concat('1 - 02', repeat('x', @suffix_len)), concat('2 - 02', repeat('x', @suffix_len)));
 
4018
insert into t2_1024 values
 
4019
(concat('1 - 03', repeat('x', @suffix_len)), concat('2 - 03', repeat('x', @suffix_len)));
 
4020
insert into t3_1024 values
 
4021
(concat('1 - 01', repeat('x', @suffix_len)), concat('2 - 01', repeat('x', @suffix_len)));
 
4022
insert into t3_1024 values
 
4023
(concat('1 - 02', repeat('x', @suffix_len)), concat('2 - 02', repeat('x', @suffix_len)));
 
4024
insert into t3_1024 values
 
4025
(concat('1 - 03', repeat('x', @suffix_len)), concat('2 - 03', repeat('x', @suffix_len)));
 
4026
insert into t3_1024 values
 
4027
(concat('1 - 04', repeat('x', @suffix_len)), concat('2 - 04', repeat('x', @suffix_len)));
 
4028
explain extended select left(a1,7), left(a2,7)
 
4029
from t1_1024
 
4030
where a1 in (select b1 from t2_1024 where b1 > '0');
 
4031
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
4032
1       SIMPLE  t1_1024 ALL     NULL    NULL    NULL    NULL    3       100.00  NULL
 
4033
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    0.00    Using where; Using join buffer (Block Nested Loop)
 
4034
2       MATERIALIZED    t2_1024 ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
 
4035
Warnings:
 
4036
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'))
 
4037
select left(a1,7), left(a2,7)
 
4038
from t1_1024
 
4039
where a1 in (select b1 from t2_1024 where b1 > '0');
 
4040
left(a1,7)      left(a2,7)
 
4041
1 - 01x 2 - 01x
 
4042
1 - 02x 2 - 02x
 
4043
explain extended select left(a1,7), left(a2,7)
 
4044
from t1_1024
 
4045
where (a1,a2) in (select b1, b2 from t2_1024 where b1 > '0');
 
4046
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
4047
1       SIMPLE  t1_1024 ALL     NULL    NULL    NULL    NULL    3       100.00  NULL
 
4048
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    0.00    Using where; Using join buffer (Block Nested Loop)
 
4049
2       MATERIALIZED    t2_1024 ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
 
4050
Warnings:
 
4051
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'))
 
4052
select left(a1,7), left(a2,7)
 
4053
from t1_1024
 
4054
where (a1,a2) in (select b1, b2 from t2_1024 where b1 > '0');
 
4055
left(a1,7)      left(a2,7)
 
4056
1 - 01x 2 - 01x
 
4057
1 - 02x 2 - 02x
 
4058
explain extended select left(a1,7), left(a2,7)
 
4059
from t1_1024
 
4060
where a1 in (select substring(b1,1,1024) from t2_1024 where b1 > '0');
 
4061
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
4062
1       SIMPLE  t1_1024 ALL     NULL    NULL    NULL    NULL    3       100.00  NULL
 
4063
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    0.00    Using where; Using join buffer (Block Nested Loop)
 
4064
2       MATERIALIZED    t2_1024 ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
 
4065
Warnings:
 
4066
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)`))
 
4067
select left(a1,7), left(a2,7)
 
4068
from t1_1024
 
4069
where a1 in (select substring(b1,1,1024) from t2_1024 where b1 > '0');
 
4070
left(a1,7)      left(a2,7)
 
4071
1 - 01x 2 - 01x
 
4072
1 - 02x 2 - 02x
 
4073
explain extended select left(a1,7), left(a2,7)
 
4074
from t1_1024
 
4075
where a1 in (select group_concat(b1) from t2_1024 group by b2);
 
4076
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
4077
1       PRIMARY t1_1024 ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
 
4078
2       SUBQUERY        t2_1024 ALL     NULL    NULL    NULL    NULL    3       100.00  Using filesort
 
4079
Warnings:
 
4080
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)`)))))
 
4081
select left(a1,7), left(a2,7)
 
4082
from t1_1024
 
4083
where a1 in (select group_concat(b1) from t2_1024 group by b2);
 
4084
left(a1,7)      left(a2,7)
 
4085
Warnings:
 
4086
Warning 1260    Row 1 was cut by GROUP_CONCAT()
 
4087
Warning 1260    Row 2 was cut by GROUP_CONCAT()
 
4088
Warning 1260    Row 3 was cut by GROUP_CONCAT()
 
4089
set @@group_concat_max_len = 256;
 
4090
explain extended select left(a1,7), left(a2,7)
 
4091
from t1_1024
 
4092
where a1 in (select group_concat(b1) from t2_1024 group by b2);
 
4093
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
4094
1       PRIMARY t1_1024 ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
 
4095
2       SUBQUERY        t2_1024 ALL     NULL    NULL    NULL    NULL    3       100.00  Using filesort
 
4096
Warnings:
 
4097
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)`)))))
 
4098
select left(a1,7), left(a2,7)
 
4099
from t1_1024
 
4100
where a1 in (select group_concat(b1) from t2_1024 group by b2);
 
4101
left(a1,7)      left(a2,7)
 
4102
Warnings:
 
4103
Warning 1260    Row 1 was cut by GROUP_CONCAT()
 
4104
Warning 1260    Row 2 was cut by GROUP_CONCAT()
 
4105
Warning 1260    Row 3 was cut by GROUP_CONCAT()
 
4106
drop table t1_1024, t2_1024, t3_1024;
 
4107
set @blob_len = 1025;
 
4108
set @suffix_len = @blob_len - @prefix_len;
 
4109
create table t1_1025 (a1 blob(1025), a2 blob(1025));
 
4110
create table t2_1025 (b1 blob(1025), b2 blob(1025));
 
4111
create table t3_1025 (c1 blob(1025), c2 blob(1025));
 
4112
insert into t1_1025 values
 
4113
(concat('1 - 00', repeat('x', @suffix_len)), concat('2 - 00', repeat('x', @suffix_len)));
 
4114
insert into t1_1025 values
 
4115
(concat('1 - 01', repeat('x', @suffix_len)), concat('2 - 01', repeat('x', @suffix_len)));
 
4116
insert into t1_1025 values
 
4117
(concat('1 - 02', repeat('x', @suffix_len)), concat('2 - 02', repeat('x', @suffix_len)));
 
4118
insert into t2_1025 values
 
4119
(concat('1 - 01', repeat('x', @suffix_len)), concat('2 - 01', repeat('x', @suffix_len)));
 
4120
insert into t2_1025 values
 
4121
(concat('1 - 02', repeat('x', @suffix_len)), concat('2 - 02', repeat('x', @suffix_len)));
 
4122
insert into t2_1025 values
 
4123
(concat('1 - 03', repeat('x', @suffix_len)), concat('2 - 03', repeat('x', @suffix_len)));
 
4124
insert into t3_1025 values
 
4125
(concat('1 - 01', repeat('x', @suffix_len)), concat('2 - 01', repeat('x', @suffix_len)));
 
4126
insert into t3_1025 values
 
4127
(concat('1 - 02', repeat('x', @suffix_len)), concat('2 - 02', repeat('x', @suffix_len)));
 
4128
insert into t3_1025 values
 
4129
(concat('1 - 03', repeat('x', @suffix_len)), concat('2 - 03', repeat('x', @suffix_len)));
 
4130
insert into t3_1025 values
 
4131
(concat('1 - 04', repeat('x', @suffix_len)), concat('2 - 04', repeat('x', @suffix_len)));
 
4132
explain extended select left(a1,7), left(a2,7)
 
4133
from t1_1025
 
4134
where a1 in (select b1 from t2_1025 where b1 > '0');
 
4135
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
4136
1       SIMPLE  t1_1025 ALL     NULL    NULL    NULL    NULL    3       100.00  NULL
 
4137
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    0.00    Using where; Using join buffer (Block Nested Loop)
 
4138
2       MATERIALIZED    t2_1025 ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
 
4139
Warnings:
 
4140
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'))
 
4141
select left(a1,7), left(a2,7)
 
4142
from t1_1025
 
4143
where a1 in (select b1 from t2_1025 where b1 > '0');
 
4144
left(a1,7)      left(a2,7)
 
4145
1 - 01x 2 - 01x
 
4146
1 - 02x 2 - 02x
 
4147
explain extended select left(a1,7), left(a2,7)
 
4148
from t1_1025
 
4149
where (a1,a2) in (select b1, b2 from t2_1025 where b1 > '0');
 
4150
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
4151
1       SIMPLE  t1_1025 ALL     NULL    NULL    NULL    NULL    3       100.00  NULL
 
4152
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    0.00    Using where; Using join buffer (Block Nested Loop)
 
4153
2       MATERIALIZED    t2_1025 ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
 
4154
Warnings:
 
4155
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'))
 
4156
select left(a1,7), left(a2,7)
 
4157
from t1_1025
 
4158
where (a1,a2) in (select b1, b2 from t2_1025 where b1 > '0');
 
4159
left(a1,7)      left(a2,7)
 
4160
1 - 01x 2 - 01x
 
4161
1 - 02x 2 - 02x
 
4162
explain extended select left(a1,7), left(a2,7)
 
4163
from t1_1025
 
4164
where a1 in (select substring(b1,1,1025) from t2_1025 where b1 > '0');
 
4165
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
4166
1       SIMPLE  t1_1025 ALL     NULL    NULL    NULL    NULL    3       100.00  NULL
 
4167
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    0.00    Using where; Using join buffer (Block Nested Loop)
 
4168
2       MATERIALIZED    t2_1025 ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
 
4169
Warnings:
 
4170
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)`))
 
4171
select left(a1,7), left(a2,7)
 
4172
from t1_1025
 
4173
where a1 in (select substring(b1,1,1025) from t2_1025 where b1 > '0');
 
4174
left(a1,7)      left(a2,7)
 
4175
1 - 01x 2 - 01x
 
4176
1 - 02x 2 - 02x
 
4177
explain extended select left(a1,7), left(a2,7)
 
4178
from t1_1025
 
4179
where a1 in (select group_concat(b1) from t2_1025 group by b2);
 
4180
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
4181
1       PRIMARY t1_1025 ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
 
4182
2       SUBQUERY        t2_1025 ALL     NULL    NULL    NULL    NULL    3       100.00  Using filesort
 
4183
Warnings:
 
4184
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)`)))))
 
4185
select left(a1,7), left(a2,7)
 
4186
from t1_1025
 
4187
where a1 in (select group_concat(b1) from t2_1025 group by b2);
 
4188
left(a1,7)      left(a2,7)
 
4189
Warnings:
 
4190
Warning 1260    Row 1 was cut by GROUP_CONCAT()
 
4191
Warning 1260    Row 2 was cut by GROUP_CONCAT()
 
4192
Warning 1260    Row 3 was cut by GROUP_CONCAT()
 
4193
set @@group_concat_max_len = 256;
 
4194
explain extended select left(a1,7), left(a2,7)
 
4195
from t1_1025
 
4196
where a1 in (select group_concat(b1) from t2_1025 group by b2);
 
4197
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
4198
1       PRIMARY t1_1025 ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
 
4199
2       SUBQUERY        t2_1025 ALL     NULL    NULL    NULL    NULL    3       100.00  Using filesort
 
4200
Warnings:
 
4201
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)`)))))
 
4202
select left(a1,7), left(a2,7)
 
4203
from t1_1025
 
4204
where a1 in (select group_concat(b1) from t2_1025 group by b2);
 
4205
left(a1,7)      left(a2,7)
 
4206
Warnings:
 
4207
Warning 1260    Row 1 was cut by GROUP_CONCAT()
 
4208
Warning 1260    Row 2 was cut by GROUP_CONCAT()
 
4209
Warning 1260    Row 3 was cut by GROUP_CONCAT()
 
4210
drop table t1_1025, t2_1025, t3_1025;
 
4211
#
 
4212
# WL#5561: Enable semi join transformation with outer join.
 
4213
#
 
4214
CREATE TABLE ot1(a INT);
 
4215
CREATE TABLE ot2(a INT);
 
4216
CREATE TABLE ot3(a INT);
 
4217
CREATE TABLE it1(a INT);
 
4218
CREATE TABLE it2(a INT);
 
4219
CREATE TABLE it3(a INT);
 
4220
INSERT INTO ot1 VALUES(0),(1),(2),(3),(4),(5),(6),(7);
 
4221
INSERT INTO ot2 VALUES(0),(2),(4),(6);
 
4222
INSERT INTO ot3 VALUES(0),(3),(6);
 
4223
INSERT INTO it1 VALUES(0),(1),(2),(3),(4),(5),(6),(7);
 
4224
INSERT INTO it2 VALUES(0),(2),(4),(6);
 
4225
INSERT INTO it3 VALUES(0),(3),(6);
 
4226
# Test cases, Subquery Pattern 1
 
4227
# Example SQ1.1:
 
4228
explain SELECT *
 
4229
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
 
4230
WHERE ot1.a IN (SELECT a FROM it3);
 
4231
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
4232
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    NULL
 
4233
1       SIMPLE  ot1     ALL     NULL    NULL    NULL    NULL    8       Using where; Using join buffer (Block Nested Loop)
 
4234
1       SIMPLE  ot2     ALL     NULL    NULL    NULL    NULL    4       Using where; Using join buffer (Block Nested Loop)
 
4235
2       MATERIALIZED    it3     ALL     NULL    NULL    NULL    NULL    3       NULL
 
4236
SELECT *
 
4237
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
 
4238
WHERE ot1.a IN (SELECT a FROM it3);
 
4239
a       a
 
4240
0       0
 
4241
3       NULL
 
4242
6       6
 
4243
# Example SQ1.2:
 
4244
explain SELECT *
 
4245
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
 
4246
WHERE COALESCE(ot2.a,0) IN (SELECT a FROM it3);
 
4247
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
4248
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    NULL
 
4249
1       SIMPLE  ot1     ALL     NULL    NULL    NULL    NULL    8       Using join buffer (Block Nested Loop)
 
4250
1       SIMPLE  ot2     ALL     NULL    NULL    NULL    NULL    4       Using where; Using join buffer (Block Nested Loop)
 
4251
2       MATERIALIZED    it3     ALL     NULL    NULL    NULL    NULL    3       NULL
 
4252
SELECT *
 
4253
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
 
4254
WHERE COALESCE(ot2.a,0) IN (SELECT a FROM it3);
 
4255
a       a
 
4256
0       0
 
4257
1       NULL
 
4258
3       NULL
 
4259
5       NULL
 
4260
6       6
 
4261
7       NULL
 
4262
# Example SQ1.3:
 
4263
explain SELECT *
 
4264
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
 
4265
WHERE (ot1.a,ot2.a) IN (SELECT a, a FROM it3);
 
4266
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
4267
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    Using where
 
4268
1       SIMPLE  ot2     ALL     NULL    NULL    NULL    NULL    4       Using where; Using join buffer (Block Nested Loop)
 
4269
1       SIMPLE  ot1     ALL     NULL    NULL    NULL    NULL    8       Using where; Using join buffer (Block Nested Loop)
 
4270
2       MATERIALIZED    it3     ALL     NULL    NULL    NULL    NULL    3       NULL
 
4271
SELECT *
 
4272
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
 
4273
WHERE (ot1.a,ot2.a) IN (SELECT a, a FROM it3);
 
4274
a       a
 
4275
0       0
 
4276
6       6
 
4277
# More test cases
 
4278
SELECT *
 
4279
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a+0
 
4280
WHERE ot1.a IN (SELECT a FROM it3);
 
4281
a       a
 
4282
0       0
 
4283
3       NULL
 
4284
6       6
 
4285
SELECT *
 
4286
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a+0
 
4287
WHERE ot1.a IN (SELECT a+0 FROM it3);
 
4288
a       a
 
4289
0       0
 
4290
3       NULL
 
4291
6       6
 
4292
SELECT *
 
4293
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a+0
 
4294
WHERE COALESCE(ot2.a,0) IN (SELECT a FROM it3);
 
4295
a       a
 
4296
0       0
 
4297
1       NULL
 
4298
3       NULL
 
4299
5       NULL
 
4300
6       6
 
4301
7       NULL
 
4302
SELECT *
 
4303
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
 
4304
WHERE COALESCE(ot2.a,0) IN (SELECT a+0 FROM it3);
 
4305
a       a
 
4306
0       0
 
4307
1       NULL
 
4308
3       NULL
 
4309
5       NULL
 
4310
6       6
 
4311
7       NULL
 
4312
SELECT *
 
4313
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a+0
 
4314
WHERE (ot1.a,ot2.a) IN (SELECT a, a FROM it3);
 
4315
a       a
 
4316
0       0
 
4317
6       6
 
4318
SELECT *
 
4319
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
 
4320
LEFT JOIN ot3 ON ot1.a=ot3.a
 
4321
WHERE ot1.a IN (SELECT a FROM it3);
 
4322
a       a       a
 
4323
0       0       0
 
4324
3       NULL    3
 
4325
6       6       6
 
4326
SELECT *
 
4327
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
 
4328
LEFT JOIN ot3 ON ot1.a=ot3.a
 
4329
WHERE COALESCE(ot2.a,0) IN (SELECT a FROM it3);
 
4330
a       a       a
 
4331
0       0       0
 
4332
1       NULL    NULL
 
4333
3       NULL    3
 
4334
5       NULL    NULL
 
4335
6       6       6
 
4336
7       NULL    NULL
 
4337
SELECT *
 
4338
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
 
4339
LEFT JOIN ot3 ON ot1.a=ot3.a
 
4340
WHERE COALESCE(ot3.a,0) IN (SELECT a FROM it3);
 
4341
a       a       a
 
4342
0       0       0
 
4343
1       NULL    NULL
 
4344
2       2       NULL
 
4345
3       NULL    3
 
4346
4       4       NULL
 
4347
5       NULL    NULL
 
4348
6       6       6
 
4349
7       NULL    NULL
 
4350
SELECT *
 
4351
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
 
4352
LEFT JOIN ot3 ON ot2.a=ot3.a
 
4353
WHERE ot1.a IN (SELECT a FROM it3);
 
4354
a       a       a
 
4355
0       0       0
 
4356
3       NULL    NULL
 
4357
6       6       6
 
4358
SELECT *
 
4359
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
 
4360
LEFT JOIN ot3 ON ot2.a=ot3.a
 
4361
WHERE COALESCE(ot2.a,0) IN (SELECT a FROM it3);
 
4362
a       a       a
 
4363
0       0       0
 
4364
1       NULL    NULL
 
4365
3       NULL    NULL
 
4366
5       NULL    NULL
 
4367
6       6       6
 
4368
7       NULL    NULL
 
4369
SELECT *
 
4370
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
 
4371
LEFT JOIN ot3 ON ot2.a=ot3.a
 
4372
WHERE COALESCE(ot3.a,0) IN (SELECT a FROM it3);
 
4373
a       a       a
 
4374
0       0       0
 
4375
1       NULL    NULL
 
4376
2       2       NULL
 
4377
3       NULL    NULL
 
4378
4       4       NULL
 
4379
5       NULL    NULL
 
4380
6       6       6
 
4381
7       NULL    NULL
 
4382
# Test cases, Subquery Pattern 2
 
4383
# Example SQ2.1:
 
4384
explain SELECT *
 
4385
FROM ot1 JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it3);
 
4386
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
4387
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    NULL
 
4388
1       SIMPLE  ot1     ALL     NULL    NULL    NULL    NULL    8       Using where; Using join buffer (Block Nested Loop)
 
4389
1       SIMPLE  ot2     ALL     NULL    NULL    NULL    NULL    4       Using where; Using join buffer (Block Nested Loop)
 
4390
2       MATERIALIZED    it3     ALL     NULL    NULL    NULL    NULL    3       NULL
 
4391
SELECT *
 
4392
FROM ot1 JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it3);
 
4393
a       a
 
4394
0       0
 
4395
6       6
 
4396
# Example SQ2.2:
 
4397
explain SELECT *
 
4398
FROM ot1 JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it2)
 
4399
AND ot2.a IN (SELECT a FROM it3);
 
4400
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
4401
1       SIMPLE  <subquery3>     ALL     NULL    NULL    NULL    NULL    NULL    Using where
 
4402
1       SIMPLE  ot1     ALL     NULL    NULL    NULL    NULL    8       Using where; Using join buffer (Block Nested Loop)
 
4403
1       SIMPLE  ot2     ALL     NULL    NULL    NULL    NULL    4       Using where; Using join buffer (Block Nested Loop)
 
4404
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      5       <subquery3>.a   1       NULL
 
4405
3       MATERIALIZED    it3     ALL     NULL    NULL    NULL    NULL    3       NULL
 
4406
2       MATERIALIZED    it2     ALL     NULL    NULL    NULL    NULL    4       NULL
 
4407
SELECT *
 
4408
FROM ot1 JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it2)
 
4409
AND ot2.a IN (SELECT a FROM it3);
 
4410
a       a
 
4411
0       0
 
4412
6       6
 
4413
# More test cases
 
4414
SELECT *
 
4415
FROM ot1 JOIN ot2 ON ot1.a=ot2.a+0 AND ot1.a IN (SELECT a FROM it3);
 
4416
a       a
 
4417
0       0
 
4418
6       6
 
4419
SELECT *
 
4420
FROM ot1 JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a+0 FROM it3);
 
4421
a       a
 
4422
0       0
 
4423
6       6
 
4424
SELECT *
 
4425
FROM ot1 JOIN ot2 ON ot1.a=ot2.a+0 AND ot2.a IN (SELECT a FROM it3);
 
4426
a       a
 
4427
0       0
 
4428
6       6
 
4429
SELECT *
 
4430
FROM ot1 JOIN ot2 ON ot1.a=ot2.a AND ot2.a IN (SELECT a+0 FROM it3);
 
4431
a       a
 
4432
0       0
 
4433
6       6
 
4434
SELECT *
 
4435
FROM ot1 JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a+0 FROM it2)
 
4436
AND ot2.a IN (SELECT a+0 FROM it3);
 
4437
a       a
 
4438
0       0
 
4439
6       6
 
4440
SELECT *
 
4441
FROM ot1 JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it3)
 
4442
JOIN ot3 ON ot2.a=ot3.a AND ot3.a IN (SELECT a FROM it3);
 
4443
a       a       a
 
4444
0       0       0
 
4445
6       6       6
 
4446
# Test cases, Subquery Pattern 3
 
4447
# Example SQ3.1:
 
4448
explain SELECT *
 
4449
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it3);
 
4450
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
4451
1       SIMPLE  ot1     ALL     NULL    NULL    NULL    NULL    8       Start temporary
 
4452
1       SIMPLE  it3     ALL     NULL    NULL    NULL    NULL    3       Using where; Using join buffer (Block Nested Loop)
 
4453
1       SIMPLE  ot2     ALL     NULL    NULL    NULL    NULL    4       Using where; End temporary; Using join buffer (Block Nested Loop)
 
4454
SELECT *
 
4455
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it3);
 
4456
a       a
 
4457
0       0
 
4458
1       NULL
 
4459
2       NULL
 
4460
3       NULL
 
4461
4       NULL
 
4462
5       NULL
 
4463
6       6
 
4464
7       NULL
 
4465
# Example SQ3.2:
 
4466
explain SELECT *
 
4467
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a AND ot2.a IN (SELECT a FROM it2);
 
4468
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
4469
1       SIMPLE  ot1     ALL     NULL    NULL    NULL    NULL    8       Start temporary
 
4470
1       SIMPLE  ot2     ALL     NULL    NULL    NULL    NULL    4       Using where; Using join buffer (Block Nested Loop)
 
4471
1       SIMPLE  it2     ALL     NULL    NULL    NULL    NULL    4       Using where; End temporary; Using join buffer (Block Nested Loop)
 
4472
SELECT *
 
4473
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a AND ot2.a IN (SELECT a FROM it2);
 
4474
a       a
 
4475
0       0
 
4476
1       NULL
 
4477
2       2
 
4478
3       NULL
 
4479
4       4
 
4480
5       NULL
 
4481
6       6
 
4482
7       NULL
 
4483
# Example SQ3.3
 
4484
explain SELECT *
 
4485
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1)
 
4486
AND ot2.a IN (SELECT a FROM it2);
 
4487
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
4488
1       SIMPLE  ot1     ALL     NULL    NULL    NULL    NULL    8       Start temporary
 
4489
1       SIMPLE  ot2     ALL     NULL    NULL    NULL    NULL    4       Using where; Using join buffer (Block Nested Loop)
 
4490
1       SIMPLE  it2     ALL     NULL    NULL    NULL    NULL    4       Using where; Using join buffer (Block Nested Loop)
 
4491
1       SIMPLE  it1     ALL     NULL    NULL    NULL    NULL    8       Using where; End temporary; Using join buffer (Block Nested Loop)
 
4492
SELECT *
 
4493
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1)
 
4494
AND ot2.a IN (SELECT a FROM it2);
 
4495
a       a
 
4496
0       0
 
4497
1       NULL
 
4498
2       2
 
4499
3       NULL
 
4500
4       4
 
4501
5       NULL
 
4502
6       6
 
4503
7       NULL
 
4504
# Example SQ3.4
 
4505
explain SELECT *
 
4506
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a AND
 
4507
(ot1.a, ot2.a) IN (SELECT it1.a, it2.a
 
4508
FROM it1 JOIN it2 ON it1.a=it2.a);
 
4509
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
4510
1       SIMPLE  ot1     ALL     NULL    NULL    NULL    NULL    8       Start temporary
 
4511
1       SIMPLE  ot2     ALL     NULL    NULL    NULL    NULL    4       Using where; Using join buffer (Block Nested Loop)
 
4512
1       SIMPLE  it2     ALL     NULL    NULL    NULL    NULL    4       Using where; Using join buffer (Block Nested Loop)
 
4513
1       SIMPLE  it1     ALL     NULL    NULL    NULL    NULL    8       Using where; End temporary; Using join buffer (Block Nested Loop)
 
4514
SELECT *
 
4515
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a AND
 
4516
(ot1.a, ot2.a) IN (SELECT it1.a, it2.a
 
4517
FROM it1 JOIN it2 ON it1.a=it2.a);
 
4518
a       a
 
4519
0       0
 
4520
1       NULL
 
4521
2       2
 
4522
3       NULL
 
4523
4       4
 
4524
5       NULL
 
4525
6       6
 
4526
7       NULL
 
4527
# More test cases
 
4528
SELECT *
 
4529
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a+0 AND ot1.a IN (SELECT a FROM it3);
 
4530
a       a
 
4531
0       0
 
4532
1       NULL
 
4533
2       NULL
 
4534
3       NULL
 
4535
4       NULL
 
4536
5       NULL
 
4537
6       6
 
4538
7       NULL
 
4539
SELECT *
 
4540
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a+0 FROM it3);
 
4541
a       a
 
4542
0       0
 
4543
1       NULL
 
4544
2       NULL
 
4545
3       NULL
 
4546
4       NULL
 
4547
5       NULL
 
4548
6       6
 
4549
7       NULL
 
4550
SELECT *
 
4551
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a+0 AND ot2.a IN (SELECT a FROM it2);
 
4552
a       a
 
4553
0       0
 
4554
1       NULL
 
4555
2       2
 
4556
3       NULL
 
4557
4       4
 
4558
5       NULL
 
4559
6       6
 
4560
7       NULL
 
4561
SELECT *
 
4562
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a AND ot2.a IN (SELECT a+0 FROM it2);
 
4563
a       a
 
4564
0       0
 
4565
1       NULL
 
4566
2       2
 
4567
3       NULL
 
4568
4       4
 
4569
5       NULL
 
4570
6       6
 
4571
7       NULL
 
4572
SELECT *
 
4573
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a+0 AND ot1.a IN (SELECT a+0 FROM it1)
 
4574
AND ot2.a IN (SELECT a+0 FROM it2);
 
4575
a       a
 
4576
0       0
 
4577
1       NULL
 
4578
2       2
 
4579
3       NULL
 
4580
4       4
 
4581
5       NULL
 
4582
6       6
 
4583
7       NULL
 
4584
SELECT *
 
4585
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a+0 AND
 
4586
(ot1.a, ot2.a) IN (SELECT it1.a+0, it2.a+0
 
4587
FROM it1 JOIN it2 ON it1.a=it2.a);
 
4588
a       a
 
4589
0       0
 
4590
1       NULL
 
4591
2       2
 
4592
3       NULL
 
4593
4       4
 
4594
5       NULL
 
4595
6       6
 
4596
7       NULL
 
4597
SELECT *
 
4598
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it3)
 
4599
LEFT JOIN ot3 ON ot2.a=ot3.a AND ot3.a IN (SELECT a FROM it3);
 
4600
a       a       a
 
4601
0       0       0
 
4602
1       NULL    NULL
 
4603
2       NULL    NULL
 
4604
3       NULL    NULL
 
4605
4       NULL    NULL
 
4606
5       NULL    NULL
 
4607
6       6       6
 
4608
7       NULL    NULL
 
4609
SELECT *
 
4610
FROM ot1 LEFT JOIN ot2 ON ot1.a=ot2.a+0 AND ot1.a IN (SELECT a FROM it3)
 
4611
LEFT JOIN ot3 ON ot2.a=ot3.a+0 AND ot3.a IN (SELECT a FROM it3);
 
4612
a       a       a
 
4613
0       0       0
 
4614
1       NULL    NULL
 
4615
2       NULL    NULL
 
4616
3       NULL    NULL
 
4617
4       NULL    NULL
 
4618
5       NULL    NULL
 
4619
6       6       6
 
4620
7       NULL    NULL
 
4621
# Test cases, Subquery Pattern 4
 
4622
# Example SQ4.1:
 
4623
explain SELECT *
 
4624
FROM   ot1
 
4625
LEFT JOIN
 
4626
(ot2 JOIN ot3 ON ot2.a=ot3.a)
 
4627
ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1);
 
4628
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
4629
1       SIMPLE  ot1     ALL     NULL    NULL    NULL    NULL    8       Start temporary
 
4630
1       SIMPLE  it1     ALL     NULL    NULL    NULL    NULL    8       Using where; Using join buffer (Block Nested Loop)
 
4631
1       SIMPLE  ot3     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
4632
1       SIMPLE  ot2     ALL     NULL    NULL    NULL    NULL    4       Using where; End temporary; Using join buffer (Block Nested Loop)
 
4633
SELECT *
 
4634
FROM   ot1
 
4635
LEFT JOIN
 
4636
(ot2 JOIN ot3 ON ot2.a=ot3.a)
 
4637
ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1);
 
4638
a       a       a
 
4639
0       0       0
 
4640
1       NULL    NULL
 
4641
2       NULL    NULL
 
4642
3       NULL    NULL
 
4643
4       NULL    NULL
 
4644
5       NULL    NULL
 
4645
6       6       6
 
4646
7       NULL    NULL
 
4647
# Example SQ4.2:
 
4648
explain SELECT *
 
4649
FROM   ot1
 
4650
JOIN
 
4651
(ot2 JOIN ot3 ON ot2.a=ot3.a)
 
4652
ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1);
 
4653
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
4654
1       SIMPLE  ot3     ALL     NULL    NULL    NULL    NULL    3       Using where
 
4655
1       SIMPLE  ot2     ALL     NULL    NULL    NULL    NULL    4       Using where; Using join buffer (Block Nested Loop)
 
4656
1       SIMPLE  ot1     ALL     NULL    NULL    NULL    NULL    8       Using where; Using join buffer (Block Nested Loop)
 
4657
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      5       test.ot3.a      1       NULL
 
4658
2       MATERIALIZED    it1     ALL     NULL    NULL    NULL    NULL    8       NULL
 
4659
SELECT *
 
4660
FROM   ot1
 
4661
JOIN
 
4662
(ot2 JOIN ot3 ON ot2.a=ot3.a)
 
4663
ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1);
 
4664
a       a       a
 
4665
0       0       0
 
4666
6       6       6
 
4667
# Example SQ4.3:
 
4668
explain SELECT *
 
4669
FROM   ot1
 
4670
JOIN
 
4671
(ot2 LEFT JOIN ot3 ON ot2.a=ot3.a)
 
4672
ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1);
 
4673
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
4674
1       SIMPLE  ot2     ALL     NULL    NULL    NULL    NULL    4       Using where
 
4675
1       SIMPLE  ot3     ALL     NULL    NULL    NULL    NULL    3       Using where; Using join buffer (Block Nested Loop)
 
4676
1       SIMPLE  ot1     ALL     NULL    NULL    NULL    NULL    8       Using where; Using join buffer (Block Nested Loop)
 
4677
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      5       test.ot2.a      1       NULL
 
4678
2       MATERIALIZED    it1     ALL     NULL    NULL    NULL    NULL    8       NULL
 
4679
SELECT *
 
4680
FROM   ot1
 
4681
JOIN
 
4682
(ot2 LEFT JOIN ot3 ON ot2.a=ot3.a)
 
4683
ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1);
 
4684
a       a       a
 
4685
0       0       0
 
4686
2       2       NULL
 
4687
4       4       NULL
 
4688
6       6       6
 
4689
# Example SQ4.4:
 
4690
explain SELECT *
 
4691
FROM   ot1
 
4692
LEFT JOIN
 
4693
(ot2 LEFT JOIN ot3 ON ot2.a=ot3.a)
 
4694
ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1);
 
4695
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
4696
1       SIMPLE  ot1     ALL     NULL    NULL    NULL    NULL    8       Start temporary
 
4697
1       SIMPLE  it1     ALL     NULL    NULL    NULL    NULL    8       Using where; Using join buffer (Block Nested Loop)
 
4698
1       SIMPLE  ot2     ALL     NULL    NULL    NULL    NULL    4       Using where; Using join buffer (Block Nested Loop)
 
4699
1       SIMPLE  ot3     ALL     NULL    NULL    NULL    NULL    3       Using where; End temporary; Using join buffer (Block Nested Loop)
 
4700
SELECT *
 
4701
FROM   ot1
 
4702
LEFT JOIN
 
4703
(ot2 LEFT JOIN ot3 ON ot2.a=ot3.a)
 
4704
ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1);
 
4705
a       a       a
 
4706
0       0       0
 
4707
1       NULL    NULL
 
4708
2       2       NULL
 
4709
3       NULL    NULL
 
4710
4       4       NULL
 
4711
5       NULL    NULL
 
4712
6       6       6
 
4713
7       NULL    NULL
 
4714
# More test cases
 
4715
SELECT *
 
4716
FROM   ot1
 
4717
LEFT JOIN
 
4718
(ot2 JOIN ot3 ON ot2.a=ot3.a+0)
 
4719
ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1);
 
4720
a       a       a
 
4721
0       0       0
 
4722
1       NULL    NULL
 
4723
2       NULL    NULL
 
4724
3       NULL    NULL
 
4725
4       NULL    NULL
 
4726
5       NULL    NULL
 
4727
6       6       6
 
4728
7       NULL    NULL
 
4729
SELECT *
 
4730
FROM   ot1
 
4731
LEFT JOIN
 
4732
(ot2 JOIN ot3 ON ot2.a=ot3.a)
 
4733
ON ot1.a=ot2.a+0 AND ot1.a IN (SELECT a FROM it1);
 
4734
a       a       a
 
4735
0       0       0
 
4736
1       NULL    NULL
 
4737
2       NULL    NULL
 
4738
3       NULL    NULL
 
4739
4       NULL    NULL
 
4740
5       NULL    NULL
 
4741
6       6       6
 
4742
7       NULL    NULL
 
4743
SELECT *
 
4744
FROM   ot1
 
4745
LEFT JOIN
 
4746
(ot2 JOIN ot3 ON ot2.a=ot3.a)
 
4747
ON ot1.a=ot2.a AND ot1.a IN (SELECT a+0 FROM it1);
 
4748
a       a       a
 
4749
0       0       0
 
4750
1       NULL    NULL
 
4751
2       NULL    NULL
 
4752
3       NULL    NULL
 
4753
4       NULL    NULL
 
4754
5       NULL    NULL
 
4755
6       6       6
 
4756
7       NULL    NULL
 
4757
SELECT *
 
4758
FROM   ot1
 
4759
JOIN
 
4760
(ot2 JOIN ot3 ON ot2.a=ot3.a+0)
 
4761
ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1);
 
4762
a       a       a
 
4763
0       0       0
 
4764
6       6       6
 
4765
SELECT *
 
4766
FROM   ot1
 
4767
JOIN
 
4768
(ot2 JOIN ot3 ON ot2.a=ot3.a)
 
4769
ON ot1.a=ot2.a+0 AND ot1.a IN (SELECT a FROM it1);
 
4770
a       a       a
 
4771
0       0       0
 
4772
6       6       6
 
4773
SELECT *
 
4774
FROM   ot1
 
4775
JOIN
 
4776
(ot2 JOIN ot3 ON ot2.a=ot3.a)
 
4777
ON ot1.a=ot2.a AND ot1.a IN (SELECT a+0 FROM it1);
 
4778
a       a       a
 
4779
0       0       0
 
4780
6       6       6
 
4781
SELECT *
 
4782
FROM   ot1
 
4783
JOIN
 
4784
(ot2 LEFT JOIN ot3 ON ot2.a=ot3.a+0)
 
4785
ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1);
 
4786
a       a       a
 
4787
0       0       0
 
4788
2       2       NULL
 
4789
4       4       NULL
 
4790
6       6       6
 
4791
SELECT *
 
4792
FROM   ot1
 
4793
JOIN
 
4794
(ot2 LEFT JOIN ot3 ON ot2.a=ot3.a)
 
4795
ON ot1.a=ot2.a+0 AND ot1.a IN (SELECT a FROM it1);
 
4796
a       a       a
 
4797
0       0       0
 
4798
2       2       NULL
 
4799
4       4       NULL
 
4800
6       6       6
 
4801
SELECT *
 
4802
FROM   ot1
 
4803
JOIN
 
4804
(ot2 LEFT JOIN ot3 ON ot2.a=ot3.a)
 
4805
ON ot1.a=ot2.a AND ot1.a IN (SELECT a+0 FROM it1);
 
4806
a       a       a
 
4807
0       0       0
 
4808
2       2       NULL
 
4809
4       4       NULL
 
4810
6       6       6
 
4811
SELECT *
 
4812
FROM   ot1
 
4813
LEFT JOIN
 
4814
(ot2 LEFT JOIN ot3 ON ot2.a=ot3.a+0)
 
4815
ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1);
 
4816
a       a       a
 
4817
0       0       0
 
4818
1       NULL    NULL
 
4819
2       2       NULL
 
4820
3       NULL    NULL
 
4821
4       4       NULL
 
4822
5       NULL    NULL
 
4823
6       6       6
 
4824
7       NULL    NULL
 
4825
SELECT *
 
4826
FROM   ot1
 
4827
LEFT JOIN
 
4828
(ot2 LEFT JOIN ot3 ON ot2.a=ot3.a)
 
4829
ON ot1.a=ot2.a+0 AND ot1.a IN (SELECT a FROM it1);
 
4830
a       a       a
 
4831
0       0       0
 
4832
1       NULL    NULL
 
4833
2       2       NULL
 
4834
3       NULL    NULL
 
4835
4       4       NULL
 
4836
5       NULL    NULL
 
4837
6       6       6
 
4838
7       NULL    NULL
 
4839
SELECT *
 
4840
FROM   ot1
 
4841
LEFT JOIN
 
4842
(ot2 LEFT JOIN ot3 ON ot2.a=ot3.a)
 
4843
ON ot1.a=ot2.a AND ot1.a IN (SELECT a+0 FROM it1);
 
4844
a       a       a
 
4845
0       0       0
 
4846
1       NULL    NULL
 
4847
2       2       NULL
 
4848
3       NULL    NULL
 
4849
4       4       NULL
 
4850
5       NULL    NULL
 
4851
6       6       6
 
4852
7       NULL    NULL
 
4853
SELECT *
 
4854
FROM   ot1
 
4855
LEFT JOIN
 
4856
(ot2 LEFT JOIN ot3 ON ot2.a=ot3.a)
 
4857
ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1)
 
4858
LEFT JOIN
 
4859
ot1 AS ot4
 
4860
ON ot2.a=ot4.a;
 
4861
a       a       a       a
 
4862
0       0       0       0
 
4863
1       NULL    NULL    NULL
 
4864
2       2       NULL    2
 
4865
3       NULL    NULL    NULL
 
4866
4       4       NULL    4
 
4867
5       NULL    NULL    NULL
 
4868
6       6       6       6
 
4869
7       NULL    NULL    NULL
 
4870
SELECT *
 
4871
FROM   ot1
 
4872
LEFT JOIN
 
4873
(ot2 LEFT JOIN ot3 ON ot2.a=ot3.a
 
4874
LEFT JOIN ot1 AS ot4 ON ot3.a=ot4.a)
 
4875
ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1);
 
4876
a       a       a       a
 
4877
0       0       0       0
 
4878
1       NULL    NULL    NULL
 
4879
2       2       NULL    NULL
 
4880
3       NULL    NULL    NULL
 
4881
4       4       NULL    NULL
 
4882
5       NULL    NULL    NULL
 
4883
6       6       6       6
 
4884
7       NULL    NULL    NULL
 
4885
DROP TABLE ot1,ot2,ot3,it1,it2,it3;
 
4886
CREATE TABLE t (
 
4887
a INTEGER DEFAULT NULL
 
4888
) ENGINE=InnoDB;
 
4889
INSERT INTO t VALUES (1);
 
4890
CREATE TABLE t2 (
 
4891
a INTEGER DEFAULT NULL
 
4892
) ENGINE=InnoDB;
 
4893
INSERT INTO t2 VALUES (1),(1);
 
4894
CREATE TABLE t4 (
 
4895
a INTEGER DEFAULT NULL
 
4896
) ENGINE=InnoDB;
 
4897
INSERT INTO t4 VALUES (1),(1);
 
4898
CREATE TABLE v (
 
4899
a INTEGER DEFAULT NULL
 
4900
) ENGINE=InnoDB;
 
4901
INSERT INTO v VALUES (1),(1);
 
4902
explain SELECT *
 
4903
FROM t AS t1
 
4904
LEFT JOIN
 
4905
(t2
 
4906
LEFT JOIN t AS t3
 
4907
ON t3.a IN (SELECT a FROM t AS it)
 
4908
JOIN t4
 
4909
ON t4.a=100
 
4910
)
 
4911
ON TRUE
 
4912
WHERE t1.a IN (SELECT * FROM v AS it2);
 
4913
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
4914
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    1       Start temporary
 
4915
1       SIMPLE  it2     ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
4916
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
4917
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    1       Using where; Using join buffer (Block Nested Loop)
 
4918
1       SIMPLE  it      ALL     NULL    NULL    NULL    NULL    1       Using where; Using join buffer (Block Nested Loop)
 
4919
1       SIMPLE  t4      ALL     NULL    NULL    NULL    NULL    2       Using where; End temporary; Using join buffer (Block Nested Loop)
 
4920
SELECT *
 
4921
FROM t AS t1
 
4922
LEFT JOIN
 
4923
(t2
 
4924
LEFT JOIN t AS t3
 
4925
ON t3.a IN (SELECT a FROM t AS it)
 
4926
JOIN t4
 
4927
ON t4.a=100
 
4928
)
 
4929
ON TRUE
 
4930
WHERE t1.a IN (SELECT * FROM v AS it2);
 
4931
a       a       a       a
 
4932
1       NULL    NULL    NULL
 
4933
DROP TABLE t,t2,t4,v;
 
4934
# End of WL#5561
 
4935
#
 
4936
# Bug#48868: Left outer join in subquery causes segmentation fault in
 
4937
#            make_join_select.
 
4938
#
 
4939
CREATE TABLE t1 (i INTEGER);
 
4940
INSERT INTO t1 VALUES (1);
 
4941
INSERT INTO t1 VALUES (2);
 
4942
CREATE TABLE t2 (i INTEGER);
 
4943
INSERT INTO t2 VALUES(1);
 
4944
CREATE TABLE t3 (i INTEGER);
 
4945
INSERT INTO t3 VALUES (1);
 
4946
INSERT INTO t3 VALUES (2);
 
4947
SELECT * FROM t1 WHERE (t1.i) IN 
 
4948
(SELECT t2.i FROM t2 LEFT JOIN t3 ON t2.i=t3.i);
 
4949
i
 
4950
1
 
4951
DROP TABLE t1, t2, t3;
 
4952
 
 
4953
Bug#37899: Wrongly checked optimization prerequisite caused failed
 
4954
assertion.
 
4955
 
 
4956
CREATE TABLE t1 (
 
4957
`pk` int(11),
 
4958
`varchar_nokey` varchar(5)
 
4959
);
 
4960
INSERT INTO t1 VALUES
 
4961
(1,'qk'),(2,'j'),(3,'aew');
 
4962
SELECT *
 
4963
FROM t1
 
4964
WHERE varchar_nokey IN (
 
4965
SELECT
 
4966
varchar_nokey
 
4967
FROM
 
4968
t1
 
4969
) XOR pk = 30;
 
4970
pk      varchar_nokey
 
4971
1       qk
 
4972
2       j
 
4973
3       aew
 
4974
drop table t1;
 
4975
#
 
4976
# BUG#41842: Semi-join materialization strategy crashes when the upper query has HAVING
 
4977
#
 
4978
CREATE TABLE t1 (
 
4979
pk int(11) NOT NULL AUTO_INCREMENT,
 
4980
int_nokey int(11) NOT NULL,
 
4981
time_key time NOT NULL,
 
4982
datetime_key datetime NOT NULL,
 
4983
datetime_nokey datetime NOT NULL,
 
4984
varchar_key varchar(1) NOT NULL,
 
4985
varchar_nokey varchar(1) NOT NULL,
 
4986
PRIMARY KEY (pk),
 
4987
KEY time_key (time_key),
 
4988
KEY datetime_key (datetime_key),
 
4989
KEY varchar_key (varchar_key)
 
4990
);
 
4991
INSERT INTO t1 VALUES 
 
4992
(1,0, '00:16:10','2008-09-03 14:25:40','2008-09-03 14:25:40','h','h'),
 
4993
(2,7, '00:00:00','2001-01-13 00:00:00','2001-01-13 00:00:00','',''),
 
4994
(3,0, '00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','x','x'),
 
4995
(4,2, '16:29:24','2000-10-16 01:39:08','2000-10-16 01:39:08','w','w'),
 
4996
(5,1, '09:23:32','0000-00-00 00:00:00','0000-00-00 00:00:00','p','p'),
 
4997
(6,3, '00:00:00','2007-12-02 00:00:00','2007-12-02 00:00:00','o','o'),
 
4998
(7,3, '00:00:00','2008-09-11 00:00:00','2008-09-11 00:00:00','',''),
 
4999
(8,0, '13:59:04','0000-00-00 00:00:00','0000-00-00 00:00:00','s','s'),
 
5000
(9,7, '09:01:06','0000-00-00 00:00:00','0000-00-00 00:00:00','d','d'),
 
5001
(10,5,'00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','n','n'),
 
5002
(11,0,'21:06:46','0000-00-00 00:00:00','0000-00-00 00:00:00','o','o'),
 
5003
(12,2,'00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','',''),
 
5004
(13,6,'14:45:34','2003-07-28 02:34:08','2003-07-28 02:34:08','w','w'),
 
5005
(14,1,'15:04:12','0000-00-00 00:00:00','0000-00-00 00:00:00','o','o'),
 
5006
(15,0,'00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','x','x'),
 
5007
(16,0,'15:55:23','2004-03-17 00:32:27','2004-03-17 00:32:27','p','p'),
 
5008
(17,1,'16:30:00','2004-12-27 19:20:00','2004-12-27 19:20:00','d','d'),
 
5009
(18,0,'00:00:00','0000-00-00 00:00:00','0000-00-00 00:00:00','h','h'),
 
5010
(19,0,'14:13:26','2008-11-09 05:53:48','2008-11-09 05:53:48','o','o'),
 
5011
(20,0,'00:00:00','2009-10-11 06:58:04','2009-10-11 06:58:04','k','k');
 
5012
CREATE TABLE t2 (
 
5013
pk int(11) NOT NULL AUTO_INCREMENT,
 
5014
int_nokey int(11) NOT NULL,
 
5015
time_key time NOT NULL,
 
5016
datetime_key datetime NOT NULL,
 
5017
datetime_nokey datetime NOT NULL,
 
5018
varchar_key varchar(1) NOT NULL,
 
5019
varchar_nokey varchar(1) NOT NULL,
 
5020
PRIMARY KEY (pk),
 
5021
KEY time_key (time_key),
 
5022
KEY datetime_key (datetime_key),
 
5023
KEY varchar_key (varchar_key)
 
5024
);
 
5025
INSERT INTO t2 VALUES 
 
5026
(10,0,'19:39:13','0000-00-00 00:00:00','0000-00-00 00:00:00','g','g'),
 
5027
(11,8,'03:43:53','0000-00-00 00:00:00','0000-00-00 00:00:00','b','b');
 
5028
SELECT OUTR.datetime_nokey AS X FROM t1 AS OUTR 
 
5029
WHERE 
 
5030
OUTR.varchar_nokey IN (SELECT 
 
5031
INNR . varchar_nokey AS Y 
 
5032
FROM t2 AS INNR 
 
5033
WHERE
 
5034
INNR . datetime_key >= INNR . time_key OR 
 
5035
INNR . pk = INNR . int_nokey  
 
5036
 
5037
AND OUTR . varchar_nokey <= 'w' 
 
5038
HAVING X > '2012-12-12';
 
5039
X
 
5040
drop table t1, t2;
 
5041
 
 
5042
Bug#46797 "Crash in fix_semijoin_strategies_for_picked_join_order 
 
5043
with semijoin=on"
 
5044
 
 
5045
CREATE TABLE t1 (
 
5046
varchar_key varchar(1) DEFAULT NULL,
 
5047
KEY varchar_key (varchar_key)
 
5048
);
 
5049
CREATE TABLE t2 (
 
5050
varchar_key varchar(1) DEFAULT NULL,
 
5051
KEY varchar_key (varchar_key)
 
5052
);
 
5053
INSERT INTO t2 VALUES
 
5054
(NULL),(NULL),(NULL),(NULL),('a'),('a'),('a'),('b'),('b'),('b'),('b'),('c'),
 
5055
('c'),('c'),('c'),('c'),('c'),('c'),('d'),('d'),('d'),('d'),('d'),('d'),('e'),
 
5056
('e'),('e'),('e'),('e'),('e'),('f'),('f'),('f'),('g'),('g'),('h'),('h'),('h'),
 
5057
('h'),('i'),('j'),('j'),('j'),('k'),('k'),('l'),('l'),('m'),('m'),('m'),('m'),
 
5058
('n'),('n'),('n'),('o'),('o'),('o'),('p'),('p'),('p'),('q'),('q'),('q'),('r'),
 
5059
('r'),('r'),('r'),('s'),('s'),('s'),('s'),('t'),('t'),('t'),('t'),('u'),('u'),
 
5060
('u'),('u'),('v'),('v'),('v'),('v'),('w'),('w'),('w'),('w'),('w'),('w'),('x'),
 
5061
('x'),('x'),('y'),('y'),('y'),('y'),('z'),('z'),('z'),('z');
 
5062
CREATE TABLE t3 (
 
5063
varchar_key varchar(1) DEFAULT NULL,
 
5064
KEY varchar_key (varchar_key)
 
5065
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
 
5066
INSERT INTO t3 VALUES
 
5067
(NULL),('c'),('d'),('e'),('f'),('h'),('j'),('k'),('k'),('m'),('m'),('m'),
 
5068
('n'),('o'),('r'),('t'),('t'),('u'),('w'),('y');
 
5069
SELECT varchar_key FROM t3 
 
5070
WHERE (SELECT varchar_key FROM t3 
 
5071
WHERE (varchar_key,varchar_key) 
 
5072
IN (SELECT t1.varchar_key, t2 .varchar_key 
 
5073
FROM t1 RIGHT JOIN t2 ON t1.varchar_key  
 
5074
)  
 
5075
);
 
5076
varchar_key
 
5077
DROP TABLE t1, t2, t3;
 
5078
#
 
5079
# Bug#46556 Returning incorrect, empty results for some IN subqueries 
 
5080
#           w/semijoin=on
 
5081
#
 
5082
CREATE TABLE t0 (
 
5083
pk INTEGER,
 
5084
vkey VARCHAR(1),
 
5085
vnokey VARCHAR(1),
 
5086
PRIMARY KEY (pk),
 
5087
KEY vkey(vkey)
 
5088
);
 
5089
INSERT INTO t0 
 
5090
VALUES (1,'g','g'), (2,'v','v'), (3,'t','t'), (4,'u','u'), (5,'n','n');
 
5091
EXPLAIN EXTENDED SELECT vkey FROM t0 WHERE pk IN 
 
5092
(SELECT t1.pk FROM t0 t1 JOIN t0 t2 ON t2.vkey = t1.vnokey);
 
5093
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
5094
1       SIMPLE  t0      ALL     PRIMARY NULL    NULL    NULL    5       100.00  Start temporary
 
5095
1       SIMPLE  t1      eq_ref  PRIMARY PRIMARY 4       test.t0.pk      1       100.00  NULL
 
5096
1       SIMPLE  t2      index   vkey    vkey    4       NULL    5       80.00   Using where; Using index; End temporary; Using join buffer (Block Nested Loop)
 
5097
Warnings:
 
5098
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`))
 
5099
SELECT vkey FROM t0 WHERE pk IN 
 
5100
(SELECT t1.pk FROM t0 t1 JOIN t0 t2 ON t2.vkey = t1.vnokey);
 
5101
vkey
 
5102
g
 
5103
n
 
5104
t
 
5105
u
 
5106
v
 
5107
DROP TABLE t0;
 
5108
# End of bug#46556
 
5109
 
 
5110
Bug#48834: Procedure with view + subquery + semijoin=on 
 
5111
crashes on second call.
 
5112
 
 
5113
CREATE TABLE t1 ( t1field integer, primary key (t1field));
 
5114
CREATE TABLE t2 ( t2field integer, primary key (t2field));
 
5115
CREATE VIEW v1 AS 
 
5116
SELECT t1field as v1field
 
5117
FROM t1 A 
 
5118
WHERE A.t1field IN (SELECT t1field FROM t2 );
 
5119
CREATE VIEW v2 AS 
 
5120
SELECT t2field as v2field
 
5121
FROM t2 A 
 
5122
WHERE A.t2field IN (SELECT t2field FROM t2 );
 
5123
CREATE PROCEDURE p1 () 
 
5124
BEGIN 
 
5125
SELECT v1field
 
5126
FROM v1 
 
5127
WHERE v1field IN ( SELECT v2field as vf_inner FROM v2 );
 
5128
END|
 
5129
INSERT INTO t1 VALUES (1),(2),(3);
 
5130
INSERT INTO t2 VALUES (2),(3),(4);
 
5131
CALL p1;
 
5132
v1field
 
5133
2
 
5134
3
 
5135
CALL p1;
 
5136
v1field
 
5137
2
 
5138
3
 
5139
DROP TABLE t1,t2;
 
5140
DROP VIEW v1,v2;
 
5141
DROP PROCEDURE p1;
 
5142
# End of BUG#48834
 
5143
#
 
5144
# Bug#46692 "Crash occurring on queries with nested FROM subqueries 
 
5145
# using materialization."
 
5146
#
 
5147
CREATE TABLE t1 (
 
5148
pk INTEGER PRIMARY KEY,
 
5149
int_key INTEGER,
 
5150
KEY int_key(int_key)
 
5151
);
 
5152
INSERT INTO t1 VALUES (10,186),(11,NULL),(12,2),(13,3),(14,0),(15,133),(16,1);
 
5153
CREATE TABLE t2 (
 
5154
pk INTEGER PRIMARY KEY,
 
5155
int_key INTEGER,
 
5156
KEY int_key(int_key)
 
5157
);
 
5158
INSERT INTO t2 VALUES (1,7),(2,2);
 
5159
SELECT * FROM t1 WHERE (140, 4) IN 
 
5160
(SELECT t2.int_key, t2 .pk FROM t2 STRAIGHT_JOIN t1 ON t2.int_key);
 
5161
pk      int_key
 
5162
DROP TABLE t1, t2;
 
5163
#
 
5164
# Bug#42353 "SELECT ... WHERE oe IN (SELECT w/ LEFT JOIN) query
 
5165
# causes crash."
 
5166
#
 
5167
CREATE TABLE t1 (
 
5168
pk INTEGER PRIMARY KEY,
 
5169
int_nokey INTEGER,
 
5170
int_key INTEGER,
 
5171
date_key DATE,
 
5172
datetime_nokey DATETIME,
 
5173
varchar_nokey VARCHAR(1)
 
5174
);
 
5175
CREATE TABLE t2 (
 
5176
date_nokey DATE
 
5177
);
 
5178
CREATE TABLE t3 (
 
5179
pk INTEGER PRIMARY KEY,
 
5180
int_nokey INTEGER,
 
5181
date_key date,
 
5182
varchar_key VARCHAR(1),
 
5183
varchar_nokey VARCHAR(1),
 
5184
KEY date_key (date_key)
 
5185
);
 
5186
SELECT date_key FROM t1
 
5187
WHERE (int_key, int_nokey)
 
5188
IN (SELECT  t3.int_nokey, t3.pk
 
5189
FROM t2 LEFT JOIN t3 ON (t2.date_nokey < t3.date_key) 
 
5190
WHERE t3.varchar_key <= t3.varchar_nokey OR t3.int_nokey <= t3.pk
 
5191
)
 
5192
AND (varchar_nokey <> 'f' OR NOT int_key < 7);
 
5193
date_key
 
5194
#
 
5195
# Bug#45933 "Crash in optimize_semijoin_nests on JOIN in subquery 
 
5196
# + AND in outer query".
 
5197
#
 
5198
INSERT INTO t1 VALUES (10,7,5,'2009-06-16','2002-04-10 14:25:30','w'),
 
5199
(11,7,0,'0000-00-00','0000-00-00 00:00:00','s'), 
 
5200
(12,4,0,'2003-07-14','2006-09-14 04:01:02','y'), 
 
5201
(13,0,4,'2002-07-25','0000-00-00 00:00:00','c'), 
 
5202
(14,1,8,'2007-07-03','0000-00-00 00:00:00','q'), 
 
5203
(15,6,5,'2001-11-12','0000-00-00 00:00:00',''), 
 
5204
(16,2,9,'0000-00-00','0000-00-00 00:00:00','j'), 
 
5205
(29,9,1,'0000-00-00','2003-08-11 00:00:00','m');
 
5206
INSERT INTO t3 VALUES (1,9,'0000-00-00','b','b'),
 
5207
(2,2,'2002-09-17','h','h');
 
5208
SELECT t1.varchar_nokey FROM t1 JOIN t3 ON t1.datetime_nokey
 
5209
WHERE t1.varchar_nokey 
 
5210
IN (SELECT varchar_nokey FROM t1 
 
5211
WHERE (pk) 
 
5212
IN (SELECT t3.int_nokey
 
5213
FROM t3 LEFT JOIN t1 ON t1.varchar_nokey
 
5214
WHERE t3.date_key BETWEEN '2008-06-07' AND '2006-06-26'
 
5215
           )  
 
5216
);
 
5217
varchar_nokey
 
5218
DROP TABLE t1, t2, t3;
 
5219
#
 
5220
# Bug#45219 "Crash on SELECT DISTINCT query containing a  
 
5221
# LEFT JOIN in subquery"
 
5222
#
 
5223
CREATE TABLE t1 (
 
5224
pk INTEGER NOT NULL,
 
5225
int_nokey INTEGER NOT NULL,
 
5226
datetime_key DATETIME NOT NULL,
 
5227
varchar_key VARCHAR(1) NOT NULL,
 
5228
PRIMARY KEY (pk),
 
5229
KEY datetime_key (datetime_key),
 
5230
KEY varchar_key (varchar_key)
 
5231
);
 
5232
INSERT INTO t1 VALUES
 
5233
(1,9,'0000-00-00 00:00:00','p'),(2,0,'2002-02-09 07:38:13','v'),
 
5234
(3,8,'2001-05-03 12:08:14','t'),(4,3,'0000-00-00 00:00:00','u'),
 
5235
(5,7,'2009-07-28 03:43:30','n'),(6,0,'2009-08-04 00:00:00','l'),
 
5236
(7,1,'0000-00-00 00:00:00','h'),(8,9,'0000-00-00 00:00:00','u'),
 
5237
(9,0,'2005-08-02 17:16:54','n'),(10,9,'2002-12-21 00:00:00','j'),
 
5238
(11,0,'2005-08-15 12:37:35','k'),(12,5,'0000-00-00 00:00:00','e'),
 
5239
(13,0,'2006-03-10 00:00:00','i'),(14,8,'2005-05-16 11:02:36','u'),
 
5240
(15,8,'2008-11-02 00:00:00','n'),(16,5,'2006-03-15 00:00:00','b'),
 
5241
(17,1,'0000-00-00 00:00:00','x'),(18,7,'0000-00-00 00:00:00',''),
 
5242
(19,0,'2008-12-17 20:15:40','q'),(20,9,'0000-00-00 00:00:00','u');
 
5243
CREATE TABLE t2 LIKE t1;
 
5244
INSERT INTO t2 VALUES 
 
5245
(10,0,'2006-07-07 07:26:28','q'),(11,5,'2002-09-23 00:00:00','m'),
 
5246
(12,7,'0000-00-00 00:00:00','j'),(13,1,'2006-06-07 00:00:00','z'),
 
5247
(14,8,'2000-09-16 12:15:34','a'),(15,2,'2007-08-05 15:47:52',''),
 
5248
(16,1,'0000-00-00 00:00:00','e'),(17,8,'2005-12-02 19:34:26','t'),
 
5249
(18,5,'0000-00-00 00:00:00','q'),(19,4,'0000-00-00 00:00:00','b'),
 
5250
(20,5,'2007-12-28 00:00:00','w'),(21,3,'2004-08-02 11:48:43','m'),
 
5251
(22,0,'0000-00-00 00:00:00','x'),(23,8,'2004-04-19 12:18:43',''),
 
5252
(24,0,'2009-04-27 00:00:00','w'),(25,4,'2006-10-20 14:52:15','x'),
 
5253
(26,0,'0000-00-00 00:00:00','e'),(27,0,'2002-03-22 11:48:37','e'),
 
5254
(28,2,'0000-00-00 00:00:00','p'),(29,0,'2001-01-04 03:55:07','x');
 
5255
CREATE TABLE t3 LIKE t1;
 
5256
INSERT INTO t3 VALUES
 
5257
(10,8,'2007-08-19 08:08:38','i'),(11,0,'2000-05-21 03:51:51','');
 
5258
SELECT DISTINCT datetime_key FROM t1
 
5259
WHERE (int_nokey, pk)  
 
5260
IN (SELECT t3.pk, t3.pk FROM t2 LEFT JOIN t3 ON t3.varchar_key)  
 
5261
AND pk = 9;
 
5262
datetime_key
 
5263
DROP TABLE t1, t2, t3;
 
5264
#
 
5265
# Bug#46550 Azalea returning duplicate results for some IN subqueries
 
5266
# w/ semijoin=on
 
5267
#
 
5268
DROP TABLE IF EXISTS t0, t1, t2;
 
5269
CREATE TABLE t0 (
 
5270
int_key int(11) DEFAULT NULL,
 
5271
varchar_key varchar(1) DEFAULT NULL,
 
5272
varchar_nokey varchar(1) DEFAULT NULL,
 
5273
KEY int_key (int_key),
 
5274
KEY varchar_key (varchar_key,int_key)
 
5275
);
 
5276
INSERT INTO t0 VALUES
 
5277
(1,'m','m'),
 
5278
(40,'h','h'),
 
5279
(1,'r','r'),
 
5280
(1,'h','h'),
 
5281
(9,'x','x'),
 
5282
(NULL,'q','q'),
 
5283
(NULL,'k','k'),
 
5284
(7,'l','l'),
 
5285
(182,'k','k'),
 
5286
(202,'a','a'),
 
5287
(7,'x','x'),
 
5288
(6,'j','j'),
 
5289
(119,'z','z'),
 
5290
(4,'d','d'),
 
5291
(5,'h','h'),
 
5292
(1,'u','u'),
 
5293
(3,'q','q'),
 
5294
(7,'a','a'),
 
5295
(3,'e','e'),
 
5296
(6,'l','l');
 
5297
CREATE TABLE t1 (
 
5298
int_key int(11) DEFAULT NULL,
 
5299
varchar_key varchar(1) DEFAULT NULL,
 
5300
varchar_nokey varchar(1) DEFAULT NULL,
 
5301
KEY int_key (int_key),
 
5302
KEY varchar_key (varchar_key,int_key)
 
5303
);
 
5304
INSERT INTO t1 VALUES (7,NULL,NULL),(4,'x','x');
 
5305
CREATE TABLE t2 (
 
5306
int_key int(11) DEFAULT NULL,
 
5307
varchar_key varchar(1) DEFAULT NULL,
 
5308
varchar_nokey varchar(1) DEFAULT NULL,
 
5309
KEY int_key (int_key),
 
5310
KEY varchar_key (varchar_key,int_key)
 
5311
);
 
5312
INSERT INTO t2 VALUES (123,NULL,NULL);
 
5313
SELECT int_key  
 
5314
FROM t0  
 
5315
WHERE varchar_nokey  IN (  
 
5316
SELECT t1 .varchar_key  from t1
 
5317
);
 
5318
int_key
 
5319
9
 
5320
7
 
5321
SELECT t0.int_key  
 
5322
FROM t0
 
5323
WHERE t0.varchar_nokey  IN (  
 
5324
SELECT t1_1 .varchar_key  
 
5325
FROM t1 AS t1_1  JOIN t1 AS t1_2 ON t1_1 .int_key
 
5326
);
 
5327
int_key
 
5328
9
 
5329
7
 
5330
EXPLAIN
 
5331
SELECT t0.int_key  
 
5332
FROM t0
 
5333
WHERE t0.varchar_nokey  IN (  
 
5334
SELECT t1_1 .varchar_key  
 
5335
FROM t1 AS t1_1  JOIN t1 AS t1_2 ON t1_1 .int_key
 
5336
);
 
5337
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
5338
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    NULL
 
5339
1       SIMPLE  t0      ALL     NULL    NULL    NULL    NULL    20      Using where; Using join buffer (Block Nested Loop)
 
5340
2       MATERIALIZED    t1_1    index   varchar_key     varchar_key     9       NULL    2       Using where; Using index
 
5341
2       MATERIALIZED    t1_2    index   NULL    int_key 5       NULL    2       Using index; Using join buffer (Block Nested Loop)
 
5342
SELECT t0.int_key  
 
5343
FROM t0, t2
 
5344
WHERE t0.varchar_nokey  IN (  
 
5345
SELECT t1_1 .varchar_key  
 
5346
FROM t1 AS t1_1  JOIN t1 AS t1_2 ON t1_1 .int_key  
 
5347
);
 
5348
int_key
 
5349
9
 
5350
7
 
5351
EXPLAIN
 
5352
SELECT t0.int_key  
 
5353
FROM t0, t2
 
5354
WHERE t0.varchar_nokey  IN (  
 
5355
SELECT t1_1 .varchar_key  
 
5356
FROM t1 AS t1_1  JOIN t1 AS t1_2 ON t1_1 .int_key  
 
5357
);
 
5358
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
5359
1       SIMPLE  t2      system  NULL    NULL    NULL    NULL    1       NULL
 
5360
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    NULL
 
5361
1       SIMPLE  t0      ALL     NULL    NULL    NULL    NULL    20      Using where; Using join buffer (Block Nested Loop)
 
5362
2       MATERIALIZED    t1_1    index   varchar_key     varchar_key     9       NULL    2       Using where; Using index
 
5363
2       MATERIALIZED    t1_2    index   NULL    int_key 5       NULL    2       Using index; Using join buffer (Block Nested Loop)
 
5364
DROP TABLE t0, t1, t2;
 
5365
# End of bug#46550
 
5366
 
 
5367
Bug #48073 Subquery on char columns from view crashes Mysql
 
5368
 
 
5369
DROP TABLE IF EXISTS t1, t2;
 
5370
DROP VIEW IF EXISTS v1;
 
5371
CREATE TABLE t1 (
 
5372
city VARCHAR(50) NOT NULL,
 
5373
country_id SMALLINT UNSIGNED NOT NULL
 
5374
);
 
5375
INSERT INTO t1 VALUES 
 
5376
('Batna',2),
 
5377
('Bchar',2),
 
5378
('Skikda',2),
 
5379
('Tafuna',3),
 
5380
('Algeria',2) ;
 
5381
CREATE TABLE t2 (
 
5382
country_id SMALLINT UNSIGNED NOT NULL,
 
5383
country VARCHAR(50) NOT NULL
 
5384
);
 
5385
INSERT INTO t2 VALUES
 
5386
(2,'Algeria'),
 
5387
(3,'American Samoa') ;
 
5388
CREATE VIEW v1 AS 
 
5389
SELECT country_id, country 
 
5390
FROM t2
 
5391
WHERE LEFT(country,1) = "A" 
 
5392
;
 
5393
SELECT city, country_id
 
5394
FROM t1
 
5395
WHERE city IN (
 
5396
SELECT country 
 
5397
FROM t2
 
5398
WHERE LEFT(country, 1) = "A" 
 
5399
);
 
5400
city    country_id
 
5401
Algeria 2
 
5402
SELECT city, country_id
 
5403
FROM t1
 
5404
WHERE city IN (
 
5405
SELECT country 
 
5406
FROM v1
 
5407
);
 
5408
city    country_id
 
5409
Algeria 2
 
5410
drop table t1, t2;
 
5411
drop view v1;
 
5412
# End of bug#48073
 
5413
 
 
5414
Bug#49097 subquery with view generates wrong result with
 
5415
non-prepared statement
 
5416
 
 
5417
DROP TABLE IF EXISTS t1, t2;
 
5418
DROP VIEW IF EXISTS v1;
 
5419
CREATE TABLE t1 (
 
5420
city VARCHAR(50) NOT NULL,
 
5421
country_id SMALLINT UNSIGNED NOT NULL
 
5422
);
 
5423
INSERT INTO t1 VALUES 
 
5424
('Batna',2),
 
5425
('Bchar',2),
 
5426
('Skikda',2),
 
5427
('Tafuna',3),
 
5428
('Algeria',2) ;
 
5429
CREATE TABLE t2 (
 
5430
country_id SMALLINT UNSIGNED NOT NULL,
 
5431
country VARCHAR(50) NOT NULL
 
5432
);
 
5433
INSERT INTO t2 VALUES
 
5434
(2,'Algeria'),
 
5435
(3,'XAmerican Samoa') ;
 
5436
CREATE VIEW v1 AS 
 
5437
SELECT country_id, country 
 
5438
FROM t2
 
5439
WHERE LEFT(country,1) = "A" 
 
5440
;
 
5441
SELECT city, country_id
 
5442
FROM t1
 
5443
WHERE country_id IN (
 
5444
SELECT country_id 
 
5445
FROM t2
 
5446
WHERE LEFT(country,1) = "A" 
 
5447
);
 
5448
city    country_id
 
5449
Batna   2
 
5450
Bchar   2
 
5451
Skikda  2
 
5452
Algeria 2
 
5453
SELECT city, country_id
 
5454
FROM t1
 
5455
WHERE country_id IN (
 
5456
SELECT country_id 
 
5457
FROM v1
 
5458
);
 
5459
city    country_id
 
5460
Batna   2
 
5461
Bchar   2
 
5462
Skikda  2
 
5463
Algeria 2
 
5464
PREPARE stmt FROM
 
5465
"
 
5466
SELECT city, country_id
 
5467
FROM t1
 
5468
WHERE country_id IN (
 
5469
  SELECT country_id 
 
5470
  FROM v1
 
5471
);
 
5472
";
 
5473
execute stmt;
 
5474
city    country_id
 
5475
Batna   2
 
5476
Bchar   2
 
5477
Skikda  2
 
5478
Algeria 2
 
5479
deallocate prepare stmt;
 
5480
drop table t1, t2;
 
5481
drop view v1;
 
5482
# End of Bug#49097
 
5483
 
5484
# Bug#49198 Wrong result for second call of procedure
 
5485
#           with view in subselect.
 
5486
 
5487
CREATE TABLE t1 (t1field integer, primary key (t1field));
 
5488
CREATE TABLE t2 (t2field integer, primary key (t2field));
 
5489
CREATE TABLE t3 (t3field integer, primary key (t3field));
 
5490
CREATE VIEW v2 AS SELECT * FROM t2;
 
5491
CREATE VIEW v3 AS SELECT * FROM t3;
 
5492
INSERT INTO t1 VALUES(1),(2);
 
5493
INSERT INTO t2 VALUES(1),(2);
 
5494
INSERT INTO t3 VALUES(1),(2);
 
5495
PREPARE stmt FROM
 
5496
"
 
5497
SELECT t1field
 
5498
FROM t1
 
5499
WHERE t1field IN (SELECT * FROM v2);
 
5500
";
 
5501
EXECUTE stmt;
 
5502
t1field
 
5503
1
 
5504
2
 
5505
EXECUTE stmt;
 
5506
t1field
 
5507
1
 
5508
2
 
5509
PREPARE stmt FROM
 
5510
"
 
5511
EXPLAIN
 
5512
SELECT t1field
 
5513
FROM t1
 
5514
WHERE t1field IN (SELECT * FROM v2)
 
5515
  AND t1field IN (SELECT * FROM v3)
 
5516
";
 
5517
EXECUTE stmt;
 
5518
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
5519
1       SIMPLE  t1      index   PRIMARY PRIMARY 4       NULL    2       Using index
 
5520
1       SIMPLE  t2      eq_ref  PRIMARY PRIMARY 4       test.t1.t1field 1       Using index
 
5521
1       SIMPLE  t3      eq_ref  PRIMARY PRIMARY 4       test.t1.t1field 1       Using index
 
5522
EXECUTE stmt;
 
5523
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
5524
1       SIMPLE  t1      index   PRIMARY PRIMARY 4       NULL    2       Using index
 
5525
1       SIMPLE  t2      eq_ref  PRIMARY PRIMARY 4       test.t1.t1field 1       Using index
 
5526
1       SIMPLE  t3      eq_ref  PRIMARY PRIMARY 4       test.t1.t1field 1       Using index
 
5527
DROP TABLE t1, t2, t3;
 
5528
DROP VIEW v2, v3;
 
5529
# End of Bug#49198
 
5530
 
5531
# Bug#48623 Multiple subqueries are optimized incorrectly
 
5532
 
5533
CREATE TABLE ot(val VARCHAR(10));
 
5534
CREATE TABLE it1(val VARCHAR(10));
 
5535
CREATE TABLE it2(val VARCHAR(10));
 
5536
INSERT INTO ot  VALUES('aaa'), ('bbb'), ('eee'), ('mmm'), ('ppp');
 
5537
INSERT INTO it1 VALUES('aaa'), ('aaa'), ('bbb'), ('eee'), ('mmm'), ('ppp');
 
5538
INSERT INTO it2 VALUES('aaa'), ('bbb'), ('eee'), ('mmm'), ('ppp');
 
5539
EXPLAIN
 
5540
SELECT *
 
5541
FROM ot
 
5542
WHERE ot.val IN (SELECT it1.val FROM it1
 
5543
WHERE  it1.val LIKE 'a%' OR it1.val LIKE 'e%')
 
5544
AND ot.val IN (SELECT it2.val FROM it2
 
5545
WHERE  it2.val LIKE 'a%' OR it2.val LIKE 'e%');
 
5546
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
5547
1       SIMPLE  ot      ALL     NULL    NULL    NULL    NULL    5       Using where
 
5548
1       SIMPLE  <subquery3>     eq_ref  <auto_key>      <auto_key>      13      test.ot.val     1       NULL
 
5549
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      13      test.ot.val     1       NULL
 
5550
3       MATERIALIZED    it2     ALL     NULL    NULL    NULL    NULL    5       Using where
 
5551
2       MATERIALIZED    it1     ALL     NULL    NULL    NULL    NULL    6       Using where
 
5552
SELECT *
 
5553
FROM ot
 
5554
WHERE ot.val IN (SELECT it1.val FROM it1
 
5555
WHERE  it1.val LIKE 'a%' OR it1.val LIKE 'e%')
 
5556
AND ot.val IN (SELECT it2.val FROM it2
 
5557
WHERE  it2.val LIKE 'a%' OR it2.val LIKE 'e%');
 
5558
val
 
5559
aaa
 
5560
eee
 
5561
DROP TABLE ot;
 
5562
DROP TABLE it1;
 
5563
DROP TABLE it2;
 
5564
# End of Bug#48623
 
5565
 
5566
# Bug #51487 Assertion failure when semi-join flattening occurs
 
5567
#            for a subquery in HAVING 
 
5568
 
5569
CREATE TABLE t1 (a INT, b INT);
 
5570
INSERT INTO t1 VALUES (1,10),(2,11),(1,13);
 
5571
CREATE TABLE t2 AS SELECT * FROM t1;
 
5572
CREATE TABLE t3 AS SELECT * FROM t1;
 
5573
SELECT COUNT(*) FROM t1
 
5574
GROUP BY t1.a 
 
5575
HAVING t1.a IN (SELECT t3.a FROM t3
 
5576
WHERE t3.b IN (SELECT b FROM t2 WHERE t2.a=t1.a));
 
5577
COUNT(*)
 
5578
2
 
5579
1
 
5580
DROP TABLE t1, t2, t3;
 
5581
# End of Bug#51487
 
5582
 
5583
# BUG#38075: Wrong result: rows matching a subquery with outer join not returned
 
5584
 
5585
DROP TABLE IF EXISTS ot1, it1, it2;
 
5586
CREATE TABLE it2 (
 
5587
int_key int(11) NOT NULL,
 
5588
datetime_key datetime NOT NULL,
 
5589
KEY int_key (int_key),
 
5590
KEY datetime_key (datetime_key)
 
5591
);
 
5592
INSERT INTO it2 VALUES
 
5593
(5,'2002-04-10 14:25:30'), (0,'0000-00-00 00:00:00'),
 
5594
(0,'2006-09-14 04:01:02'), (4,'0000-00-00 00:00:00'),
 
5595
(8,'0000-00-00 00:00:00'), (5,'0000-00-00 00:00:00'),
 
5596
(9,'0000-00-00 00:00:00'), (8,'2007-04-01 11:04:17'),
 
5597
(1,'0000-00-00 00:00:00'), (7,'2009-01-12 00:00:00'),
 
5598
(0,'2009-06-05 00:00:00'), (3,'2006-02-14 18:06:35'),
 
5599
(5,'2006-02-21 07:08:16'), (0,'0000-00-00 00:00:00'),
 
5600
(7,'0000-00-00 00:00:00'), (0,'0000-00-00 00:00:00'),
 
5601
(0,'2007-02-13 00:00:00'), (1,'0000-00-00 00:00:00'),
 
5602
(0,'0000-00-00 00:00:00'), (1,'2003-08-11 00:00:00');
 
5603
CREATE TABLE ot1 (
 
5604
int_nokey int(11) NOT NULL,
 
5605
int_key int(11) NOT NULL,
 
5606
KEY int_key (int_key)
 
5607
);
 
5608
INSERT INTO ot1 VALUES
 
5609
(5,0), (3,0), (0,2), (3,0), (1,3), (0,0), (1,7), (7,0), (1,7), (0,7),
 
5610
(0,9), (8,2), (4,4), (9,3), (0,9), (2,5), (0,5), (8,0), (5,8), (1,5);
 
5611
CREATE TABLE it1 (
 
5612
int_nokey int(11) NOT NULL,
 
5613
int_key int(11) NOT NULL,
 
5614
KEY int_key (int_key)
 
5615
);
 
5616
INSERT INTO it1 VALUES
 
5617
(9,5), (0,4);
 
5618
SELECT int_key FROM ot1
 
5619
WHERE int_nokey IN (SELECT it2.int_key
 
5620
FROM it1 LEFT JOIN it2 ON it2.datetime_key);
 
5621
int_key
 
5622
0
 
5623
0
 
5624
0
 
5625
0
 
5626
0
 
5627
0
 
5628
2
 
5629
2
 
5630
3
 
5631
5
 
5632
5
 
5633
7
 
5634
7
 
5635
7
 
5636
8
 
5637
9
 
5638
9
 
5639
EXPLAIN
 
5640
SELECT int_key FROM ot1
 
5641
WHERE int_nokey IN (SELECT it2.int_key
 
5642
FROM it1 LEFT JOIN it2 ON it2.datetime_key);
 
5643
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
5644
1       SIMPLE  it1     index   NULL    int_key 4       NULL    2       Using index; Start temporary
 
5645
1       SIMPLE  ot1     ALL     NULL    NULL    NULL    NULL    20      Using join buffer (Block Nested Loop)
 
5646
1       SIMPLE  it2     ref     int_key int_key 4       test.ot1.int_nokey      2       Using where; End temporary
 
5647
DROP TABLE ot1, it1, it2;
 
5648
# End of BUG#38075
 
5649
 
5650
# BUG#50089: Second call of procedure with view in subselect crashes server
 
5651
 
5652
CREATE TABLE t1(t1field INTEGER, PRIMARY KEY(t1field));
 
5653
CREATE VIEW v1 AS 
 
5654
SELECT t1field AS v1field
 
5655
FROM t1 a
 
5656
WHERE a.t1field IN (SELECT t1field FROM t1);
 
5657
INSERT INTO t1 VALUES(1),(2);
 
5658
SELECT t1field
 
5659
FROM t1
 
5660
WHERE t1field IN (SELECT v1field FROM v1);
 
5661
t1field
 
5662
1
 
5663
2
 
5664
EXPLAIN
 
5665
SELECT t1field
 
5666
FROM t1
 
5667
WHERE t1field IN (SELECT v1field FROM v1);
 
5668
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
5669
1       SIMPLE  t1      index   PRIMARY PRIMARY 4       NULL    2       Using index
 
5670
1       SIMPLE  a       eq_ref  PRIMARY PRIMARY 4       test.t1.t1field 1       Using index
 
5671
1       SIMPLE  t1      eq_ref  PRIMARY PRIMARY 4       test.t1.t1field 1       Using index
 
5672
SELECT t1.t1field
 
5673
FROM t1 LEFT JOIN t1 AS t2 ON t1.t1field IN (SELECT v1field FROM v1);
 
5674
t1field
 
5675
1
 
5676
1
 
5677
2
 
5678
2
 
5679
EXPLAIN
 
5680
SELECT t1field
 
5681
FROM t1
 
5682
WHERE t1field IN (SELECT v1field FROM v1);
 
5683
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
5684
1       SIMPLE  t1      index   PRIMARY PRIMARY 4       NULL    2       Using index
 
5685
1       SIMPLE  a       eq_ref  PRIMARY PRIMARY 4       test.t1.t1field 1       Using index
 
5686
1       SIMPLE  t1      eq_ref  PRIMARY PRIMARY 4       test.t1.t1field 1       Using index
 
5687
CREATE PROCEDURE p1() 
 
5688
BEGIN 
 
5689
SELECT t1field
 
5690
FROM t1
 
5691
WHERE t1field IN (SELECT v1field FROM v1);
 
5692
END|
 
5693
CALL p1;
 
5694
t1field
 
5695
1
 
5696
2
 
5697
CALL p1;
 
5698
t1field
 
5699
1
 
5700
2
 
5701
PREPARE stmt FROM
 
5702
"
 
5703
SELECT t1field
 
5704
FROM t1
 
5705
WHERE t1field IN (SELECT v1field FROM v1);
 
5706
";
 
5707
EXECUTE stmt;
 
5708
t1field
 
5709
1
 
5710
2
 
5711
EXECUTE stmt;
 
5712
t1field
 
5713
1
 
5714
2
 
5715
DROP PROCEDURE p1;
 
5716
DROP VIEW v1;
 
5717
DROP TABLE t1;
 
5718
# End of BUG#50089
 
5719
#
 
5720
# Bug#45191: Incorrectly initialized semi-join led to a wrong result.
 
5721
#
 
5722
CREATE TABLE STAFF (EMPNUM   CHAR(3) NOT NULL,
 
5723
EMPNAME  CHAR(20), GRADE DECIMAL(4), CITY CHAR(15));
 
5724
CREATE TABLE PROJ (PNUM CHAR(3) NOT NULL,
 
5725
PNAME    CHAR(20), PTYPE CHAR(6),
 
5726
BUDGET   DECIMAL(9),
 
5727
CITY     CHAR(15));
 
5728
CREATE TABLE WORKS (EMPNUM CHAR(3) NOT NULL,
 
5729
PNUM CHAR(3) NOT NULL, HOURS DECIMAL(5));
 
5730
INSERT INTO STAFF VALUES ('E1','Alice',12,'Deale');
 
5731
INSERT INTO STAFF VALUES ('E2','Betty',10,'Vienna');
 
5732
INSERT INTO STAFF VALUES ('E3','Carmen',13,'Vienna');
 
5733
INSERT INTO STAFF VALUES ('E4','Don',12,'Deale');
 
5734
INSERT INTO STAFF VALUES ('E5','Ed',13,'Akron');
 
5735
INSERT INTO PROJ VALUES  ('P1','MXSS','Design',10000,'Deale');
 
5736
INSERT INTO PROJ VALUES  ('P2','CALM','Code',30000,'Vienna');
 
5737
INSERT INTO PROJ VALUES  ('P3','SDP','Test',30000,'Tampa');
 
5738
INSERT INTO PROJ VALUES  ('P4','SDP','Design',20000,'Deale');
 
5739
INSERT INTO PROJ VALUES  ('P5','IRM','Test',10000,'Vienna');
 
5740
INSERT INTO PROJ VALUES  ('P6','PAYR','Design',50000,'Deale');
 
5741
INSERT INTO WORKS VALUES  ('E1','P1',40);
 
5742
INSERT INTO WORKS VALUES  ('E1','P2',20);
 
5743
INSERT INTO WORKS VALUES  ('E1','P3',80);
 
5744
INSERT INTO WORKS VALUES  ('E1','P4',20);
 
5745
INSERT INTO WORKS VALUES  ('E1','P5',12);
 
5746
INSERT INTO WORKS VALUES  ('E1','P6',12);
 
5747
INSERT INTO WORKS VALUES  ('E2','P1',40);
 
5748
INSERT INTO WORKS VALUES  ('E2','P2',80);
 
5749
INSERT INTO WORKS VALUES  ('E3','P2',20);
 
5750
INSERT INTO WORKS VALUES  ('E4','P2',20);
 
5751
INSERT INTO WORKS VALUES  ('E4','P4',40);
 
5752
INSERT INTO WORKS VALUES  ('E4','P5',80);
 
5753
explain SELECT EMPNUM, EMPNAME
 
5754
FROM STAFF
 
5755
WHERE EMPNUM IN
 
5756
(SELECT EMPNUM  FROM WORKS
 
5757
WHERE PNUM IN
 
5758
(SELECT PNUM  FROM PROJ));
 
5759
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
5760
1       SIMPLE  STAFF   ALL     NULL    NULL    NULL    NULL    5       Using where
 
5761
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      3       test.STAFF.EMPNUM       1       NULL
 
5762
2       MATERIALIZED    PROJ    ALL     NULL    NULL    NULL    NULL    6       NULL
 
5763
2       MATERIALIZED    WORKS   ALL     NULL    NULL    NULL    NULL    12      Using where; Using join buffer (Block Nested Loop)
 
5764
SELECT EMPNUM, EMPNAME
 
5765
FROM STAFF
 
5766
WHERE EMPNUM IN
 
5767
(SELECT EMPNUM  FROM WORKS
 
5768
WHERE PNUM IN
 
5769
(SELECT PNUM  FROM PROJ));
 
5770
EMPNUM  EMPNAME
 
5771
E1      Alice
 
5772
E2      Betty
 
5773
E3      Carmen
 
5774
E4      Don
 
5775
drop table STAFF,WORKS,PROJ;
 
5776
# End of bug#45191
 
5777
#  
 
5778
# BUG#36896: Server crash on SELECT FROM DUAL
 
5779
 
5780
create table t1 (a int);
 
5781
select 1 as res from dual where (1) in (select * from t1);
 
5782
res
 
5783
drop table t1;
 
5784
 
 
5785
BUG#40118 Crash when running Batched Key Access and requiring one match for each key
 
5786
 
 
5787
create table t0(a int);
 
5788
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
 
5789
create table t1 (a int, key(a));
 
5790
insert into t1 select * from t0;
 
5791
alter table t1 add b int not null, add filler char(200);
 
5792
insert into t1 select * from t1;
 
5793
insert into t1 select * from t1;
 
5794
select * from t0 where t0.a in (select t1.a from t1 where t1.b=0);
 
5795
a
 
5796
0
 
5797
1
 
5798
2
 
5799
3
 
5800
4
 
5801
5
 
5802
6
 
5803
7
 
5804
8
 
5805
9
 
5806
drop table t0, t1;
 
5807
 
5808
# BUG#32665 Query with dependent subquery is too slow
 
5809
#
 
5810
create table t1 (
 
5811
idIndividual int primary key
 
5812
);
 
5813
insert into t1 values (1),(2);
 
5814
create table t2 (
 
5815
idContact int primary key,
 
5816
contactType int,
 
5817
idObj int
 
5818
);
 
5819
insert into t2 values (1,1,1),(2,2,2),(3,3,3);
 
5820
create table t3 (
 
5821
idAddress int primary key,
 
5822
idContact int,
 
5823
postalStripped varchar(100)
 
5824
);
 
5825
insert into t3 values (1,1, 'foo'), (2,2,'bar');
 
5826
The following must be converted to a semi-join:
 
5827
explain extended SELECT a.idIndividual FROM t1 a 
 
5828
WHERE a.idIndividual IN 
 
5829
(       SELECT c.idObj FROM t3 cona 
 
5830
INNER JOIN t2 c ON c.idContact=cona.idContact 
 
5831
WHERE cona.postalStripped='T2H3B2'
 
5832
        );
 
5833
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
5834
1       SIMPLE  cona    ALL     NULL    NULL    NULL    NULL    2       100.00  Using where; Start temporary
 
5835
1       SIMPLE  c       eq_ref  PRIMARY PRIMARY 4       test.cona.idContact     1       100.00  Using where
 
5836
1       SIMPLE  a       eq_ref  PRIMARY PRIMARY 4       test.c.idObj    1       100.00  Using index; End temporary
 
5837
Warnings:
 
5838
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` = `test`.`c`.`idObj`) and (`test`.`cona`.`postalStripped` = 'T2H3B2'))
 
5839
drop table t1,t2,t3;
 
5840
CREATE TABLE t1 (one int, two int, flag char(1));
 
5841
CREATE TABLE t2 (one int, two int, flag char(1));
 
5842
INSERT INTO t1 VALUES(1,2,'Y'),(2,3,'Y'),(3,4,'Y'),(5,6,'N'),(7,8,'N');
 
5843
INSERT INTO t2 VALUES(1,2,'Y'),(2,3,'Y'),(3,4,'Y'),(5,6,'N'),(7,8,'N');
 
5844
SELECT * FROM t1
 
5845
WHERE ROW(one,two) IN (SELECT DISTINCT one,two FROM t2 WHERE flag = 'N');
 
5846
one     two     flag
 
5847
5       6       N
 
5848
7       8       N
 
5849
SELECT * FROM t1
 
5850
WHERE ROW(one,two) IN (SELECT DISTINCT one,two FROM t1 WHERE flag = 'N');
 
5851
one     two     flag
 
5852
5       6       N
 
5853
7       8       N
 
5854
insert into t2 values (null,null,'N');
 
5855
insert into t2 values (null,3,'0');
 
5856
insert into t2 values (null,5,'0');
 
5857
insert into t2 values (10,null,'0');
 
5858
insert into t1 values (10,3,'0');
 
5859
insert into t1 values (10,5,'0');
 
5860
insert into t1 values (10,10,'0');
 
5861
SELECT one,two,ROW(one,two) IN (SELECT one,two FROM t2 WHERE flag = 'N') as 'test' from t1;
 
5862
one     two     test
 
5863
1       2       NULL
 
5864
2       3       NULL
 
5865
3       4       NULL
 
5866
5       6       1
 
5867
7       8       1
 
5868
10      3       NULL
 
5869
10      5       NULL
 
5870
10      10      NULL
 
5871
SELECT one,two from t1 where ROW(one,two) IN (SELECT one,two FROM t2 WHERE flag = 'N');
 
5872
one     two
 
5873
5       6
 
5874
7       8
 
5875
SELECT one,two,ROW(one,two) IN (SELECT one,two FROM t2 WHERE flag = 'N' group by one,two) as 'test' from t1;
 
5876
one     two     test
 
5877
1       2       NULL
 
5878
2       3       NULL
 
5879
3       4       NULL
 
5880
5       6       1
 
5881
7       8       1
 
5882
10      3       NULL
 
5883
10      5       NULL
 
5884
10      10      NULL
 
5885
SELECT one,two,ROW(one,two) IN (SELECT one,two FROM t2 WHERE flag = '0') as 'test' from t1;
 
5886
one     two     test
 
5887
1       2       0
 
5888
2       3       NULL
 
5889
3       4       0
 
5890
5       6       0
 
5891
7       8       0
 
5892
10      3       NULL
 
5893
10      5       NULL
 
5894
10      10      NULL
 
5895
SELECT one,two,ROW(one,two) IN (SELECT one,two FROM t2 WHERE flag = '0' group by one,two) as 'test' from t1;
 
5896
one     two     test
 
5897
1       2       0
 
5898
2       3       NULL
 
5899
3       4       0
 
5900
5       6       0
 
5901
7       8       0
 
5902
10      3       NULL
 
5903
10      5       NULL
 
5904
10      10      NULL
 
5905
explain extended SELECT one,two,ROW(one,two) IN (SELECT one,two FROM t2 WHERE flag = '0') as 'test' from t1;
 
5906
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
5907
1       PRIMARY t1      ALL     NULL    NULL    NULL    NULL    8       100.00  NULL
 
5908
2       DEPENDENT SUBQUERY      t2      ALL     NULL    NULL    NULL    NULL    9       100.00  Using where
 
5909
Warnings:
 
5910
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`
 
5911
explain extended SELECT one,two from t1 where ROW(one,two) IN (SELECT one,two FROM t2 WHERE flag = 'N');
 
5912
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
5913
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    8       100.00  Using where
 
5914
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      10      test.t1.one,test.t1.two 1       100.00  NULL
 
5915
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    9       100.00  Using where
 
5916
Warnings:
 
5917
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'))
 
5918
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;
 
5919
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
5920
1       PRIMARY t1      ALL     NULL    NULL    NULL    NULL    8       100.00  NULL
 
5921
2       DEPENDENT SUBQUERY      t2      ALL     NULL    NULL    NULL    NULL    9       100.00  Using where
 
5922
Warnings:
 
5923
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`
 
5924
DROP TABLE t1,t2;
 
5925
CREATE TABLE t1 (a char(5), b char(5));
 
5926
INSERT INTO t1 VALUES (NULL,'aaa'), ('aaa','aaa');
 
5927
SELECT * FROM t1 WHERE (a,b) IN (('aaa','aaa'), ('aaa','bbb'));
 
5928
a       b
 
5929
aaa     aaa
 
5930
DROP TABLE t1;
 
5931
CREATE TABLE t1 (a CHAR(1), b VARCHAR(10));
 
5932
INSERT INTO t1 VALUES ('a', 'aa');
 
5933
INSERT INTO t1 VALUES ('a', 'aaa');
 
5934
SELECT a,b FROM t1 WHERE b IN (SELECT a FROM t1);
 
5935
a       b
 
5936
CREATE INDEX I1 ON t1 (a);
 
5937
CREATE INDEX I2 ON t1 (b);
 
5938
EXPLAIN SELECT a,b FROM t1 WHERE b IN (SELECT a FROM t1);
 
5939
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
5940
1       SIMPLE  t1      ALL     I2      NULL    NULL    NULL    2       Using where
 
5941
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      2       test.t1.b       1       Using where
 
5942
2       MATERIALIZED    t1      index   I1      I1      2       NULL    2       Using index
 
5943
SELECT a,b FROM t1 WHERE b IN (SELECT a FROM t1);
 
5944
a       b
 
5945
CREATE TABLE t2 (a VARCHAR(1), b VARCHAR(10));
 
5946
INSERT INTO t2 SELECT * FROM t1;
 
5947
CREATE INDEX I1 ON t2 (a);
 
5948
CREATE INDEX I2 ON t2 (b);
 
5949
EXPLAIN SELECT a,b FROM t2 WHERE b IN (SELECT a FROM t2);
 
5950
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
5951
1       SIMPLE  t2      ALL     I2      NULL    NULL    NULL    2       Using where
 
5952
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      4       test.t2.b       1       Using where
 
5953
2       MATERIALIZED    t2      index   I1      I1      4       NULL    2       Using index
 
5954
SELECT a,b FROM t2 WHERE b IN (SELECT a FROM t2);
 
5955
a       b
 
5956
EXPLAIN
 
5957
SELECT a,b FROM t1 WHERE b IN (SELECT a FROM t1 WHERE LENGTH(a)<500);
 
5958
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
5959
1       SIMPLE  t1      ALL     I2      NULL    NULL    NULL    2       Using where
 
5960
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      2       test.t1.b       1       Using where
 
5961
2       MATERIALIZED    t1      index   I1      I1      2       NULL    2       Using where; Using index
 
5962
SELECT a,b FROM t1 WHERE b IN (SELECT a FROM t1 WHERE LENGTH(a)<500);
 
5963
a       b
 
5964
DROP TABLE t1,t2;
 
5965
#
 
5966
# BUG#45928 "Differing query results depending on MRR and
 
5967
# engine_condition_pushdown settings"
 
5968
#
 
5969
CREATE TABLE `t1` (
 
5970
`pk` int(11) NOT NULL AUTO_INCREMENT,
 
5971
`time_nokey` time NOT NULL,
 
5972
`varchar_key` varchar(1) NOT NULL,
 
5973
`varchar_nokey` varchar(1) NOT NULL,
 
5974
PRIMARY KEY (`pk`),
 
5975
KEY `varchar_key` (`varchar_key`)
 
5976
) AUTO_INCREMENT=12 DEFAULT CHARSET=latin1;
 
5977
INSERT INTO `t1` VALUES (10,'00:00:00','i','i'),(11,'00:00:00','','');
 
5978
SELECT `time_nokey` G1  FROM t1  WHERE ( `varchar_nokey`  , `varchar_key`  )  IN ( 
 
5979
SELECT `varchar_nokey`  , `varchar_nokey`  )  AND `varchar_key`  >= 'c' HAVING G1  ORDER 
 
5980
BY `pk`   ;
 
5981
G1
 
5982
DROP TABLE t1;
 
5983
#
 
5984
# BUG#45863 "Assertion failed: (fixed == 0), function fix_fields(),
 
5985
#            file item.cc, line 4448"
 
5986
#
 
5987
DROP TABLE IF EXISTS C, BB;
 
5988
CREATE TABLE C (
 
5989
varchar_nokey varchar(1) NOT NULL
 
5990
);
 
5991
INSERT INTO C VALUES
 
5992
('k'),('a'),(''),('u'),('e'),('v'),('i'),
 
5993
('t'),('u'),('f'),('u'),('m'),('j'),('f'),
 
5994
('v'),('j'),('g'),('e'),('h'),('z');
 
5995
CREATE TABLE BB (
 
5996
varchar_nokey varchar(1) NOT NULL
 
5997
);
 
5998
INSERT INTO BB VALUES ('i'),('t');
 
5999
SELECT varchar_nokey FROM C
 
6000
WHERE (varchar_nokey, OUTR) IN (SELECT varchar_nokey
 
6001
FROM BB);
 
6002
ERROR 42S22: Unknown column 'OUTR' in 'IN/ALL/ANY subquery'
 
6003
SELECT varchar_nokey FROM C
 
6004
WHERE (varchar_nokey, OUTR) IN (SELECT varchar_nokey, varchar_nokey
 
6005
FROM BB);
 
6006
ERROR 42S22: Unknown column 'OUTR' in 'IN/ALL/ANY subquery'
 
6007
DROP TABLE C,BB;
 
6008
#
 
6009
# During work with BUG#45863 I had problems with a query that was
 
6010
# optimized differently in regular and prepared mode.
 
6011
# Because there was a bug in one of the selected strategies, I became
 
6012
# aware of the problem. Adding an EXPLAIN query to catch this.
 
6013
DROP TABLE IF EXISTS t1, t2, t3;
 
6014
CREATE TABLE t1
 
6015
(EMPNUM   CHAR(3) NOT NULL,
 
6016
EMPNAME  CHAR(20),
 
6017
GRADE    DECIMAL(4),
 
6018
CITY     CHAR(15));
 
6019
CREATE TABLE t2
 
6020
(PNUM     CHAR(3) NOT NULL,
 
6021
PNAME    CHAR(20),
 
6022
PTYPE    CHAR(6),
 
6023
BUDGET   DECIMAL(9),
 
6024
CITY     CHAR(15));
 
6025
CREATE TABLE t3
 
6026
(EMPNUM   CHAR(3) NOT NULL,
 
6027
PNUM     CHAR(3) NOT NULL,
 
6028
HOURS    DECIMAL(5));
 
6029
INSERT INTO t1 VALUES ('E1','Alice',12,'Deale');
 
6030
INSERT INTO t1 VALUES ('E2','Betty',10,'Vienna');
 
6031
INSERT INTO t1 VALUES ('E3','Carmen',13,'Vienna');
 
6032
INSERT INTO t1 VALUES ('E4','Don',12,'Deale');
 
6033
INSERT INTO t1 VALUES ('E5','Ed',13,'Akron');
 
6034
INSERT INTO t2 VALUES ('P1','MXSS','Design',10000,'Deale');
 
6035
INSERT INTO t2 VALUES ('P2','CALM','Code',30000,'Vienna');
 
6036
INSERT INTO t2 VALUES ('P3','SDP','Test',30000,'Tampa');
 
6037
INSERT INTO t2 VALUES ('P4','SDP','Design',20000,'Deale');
 
6038
INSERT INTO t2 VALUES ('P5','IRM','Test',10000,'Vienna');
 
6039
INSERT INTO t2 VALUES ('P6','PAYR','Design',50000,'Deale');
 
6040
INSERT INTO t3 VALUES  ('E1','P1',40);
 
6041
INSERT INTO t3 VALUES  ('E1','P2',20);
 
6042
INSERT INTO t3 VALUES  ('E1','P3',80);
 
6043
INSERT INTO t3 VALUES  ('E1','P4',20);
 
6044
INSERT INTO t3 VALUES  ('E1','P5',12);
 
6045
INSERT INTO t3 VALUES  ('E1','P6',12);
 
6046
INSERT INTO t3 VALUES  ('E2','P1',40);
 
6047
INSERT INTO t3 VALUES  ('E2','P2',80);
 
6048
INSERT INTO t3 VALUES  ('E3','P2',20);
 
6049
INSERT INTO t3 VALUES  ('E4','P2',20);
 
6050
INSERT INTO t3 VALUES  ('E4','P4',40);
 
6051
INSERT INTO t3 VALUES  ('E4','P5',80);
 
6052
CREATE UNIQUE INDEX t1_IDX ON t1(EMPNUM);
 
6053
EXPLAIN SELECT EMPNAME
 
6054
FROM t1
 
6055
WHERE EMPNUM IN
 
6056
(SELECT EMPNUM
 
6057
FROM t3
 
6058
WHERE PNUM IN
 
6059
(SELECT PNUM
 
6060
FROM t2
 
6061
WHERE PTYPE = 'Design'));
 
6062
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
6063
1       SIMPLE  t1      ALL     t1_IDX  NULL    NULL    NULL    5       Using where
 
6064
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      3       test.t1.EMPNUM  1       NULL
 
6065
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    6       Using where
 
6066
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    12      Using where; Using join buffer (Block Nested Loop)
 
6067
PREPARE stmt FROM "EXPLAIN SELECT EMPNAME
 
6068
FROM t1
 
6069
WHERE EMPNUM IN
 
6070
   (SELECT EMPNUM
 
6071
    FROM t3
 
6072
    WHERE PNUM IN
 
6073
       (SELECT PNUM
 
6074
        FROM t2
 
6075
        WHERE PTYPE = 'Design'))";
 
6076
EXECUTE stmt;
 
6077
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
6078
1       SIMPLE  t1      ALL     t1_IDX  NULL    NULL    NULL    5       Using where
 
6079
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      3       test.t1.EMPNUM  1       NULL
 
6080
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    6       Using where
 
6081
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    12      Using where; Using join buffer (Block Nested Loop)
 
6082
EXECUTE stmt;
 
6083
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
6084
1       SIMPLE  t1      ALL     t1_IDX  NULL    NULL    NULL    5       Using where
 
6085
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      3       test.t1.EMPNUM  1       NULL
 
6086
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    6       Using where
 
6087
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    12      Using where; Using join buffer (Block Nested Loop)
 
6088
DEALLOCATE PREPARE stmt;
 
6089
DROP INDEX t1_IDX ON t1;
 
6090
CREATE INDEX t1_IDX ON t1(EMPNUM);
 
6091
EXPLAIN SELECT EMPNAME
 
6092
FROM t1
 
6093
WHERE EMPNUM IN
 
6094
(SELECT EMPNUM
 
6095
FROM t3
 
6096
WHERE PNUM IN
 
6097
(SELECT PNUM
 
6098
FROM t2
 
6099
WHERE PTYPE = 'Design'));
 
6100
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
6101
1       SIMPLE  t1      ALL     t1_IDX  NULL    NULL    NULL    5       Using where
 
6102
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      3       test.t1.EMPNUM  1       NULL
 
6103
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    6       Using where
 
6104
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    12      Using where; Using join buffer (Block Nested Loop)
 
6105
PREPARE stmt FROM "EXPLAIN SELECT EMPNAME
 
6106
FROM t1
 
6107
WHERE EMPNUM IN
 
6108
   (SELECT EMPNUM
 
6109
    FROM t3
 
6110
    WHERE PNUM IN
 
6111
       (SELECT PNUM
 
6112
        FROM t2
 
6113
        WHERE PTYPE = 'Design'))";
 
6114
EXECUTE stmt;
 
6115
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
6116
1       SIMPLE  t1      ALL     t1_IDX  NULL    NULL    NULL    5       Using where
 
6117
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      3       test.t1.EMPNUM  1       NULL
 
6118
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    6       Using where
 
6119
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    12      Using where; Using join buffer (Block Nested Loop)
 
6120
EXECUTE stmt;
 
6121
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
6122
1       SIMPLE  t1      ALL     t1_IDX  NULL    NULL    NULL    5       Using where
 
6123
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      3       test.t1.EMPNUM  1       NULL
 
6124
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    6       Using where
 
6125
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    12      Using where; Using join buffer (Block Nested Loop)
 
6126
DEALLOCATE PREPARE stmt;
 
6127
DROP INDEX t1_IDX ON t1;
 
6128
EXPLAIN SELECT EMPNAME
 
6129
FROM t1
 
6130
WHERE EMPNUM IN
 
6131
(SELECT EMPNUM
 
6132
FROM t3
 
6133
WHERE PNUM IN
 
6134
(SELECT PNUM
 
6135
FROM t2
 
6136
WHERE PTYPE = 'Design'));
 
6137
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
6138
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    5       Using where
 
6139
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      3       test.t1.EMPNUM  1       NULL
 
6140
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    6       Using where
 
6141
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    12      Using where; Using join buffer (Block Nested Loop)
 
6142
PREPARE stmt FROM "EXPLAIN SELECT EMPNAME
 
6143
FROM t1
 
6144
WHERE EMPNUM IN
 
6145
   (SELECT EMPNUM
 
6146
    FROM t3
 
6147
    WHERE PNUM IN
 
6148
       (SELECT PNUM
 
6149
        FROM t2
 
6150
        WHERE PTYPE = 'Design'))";
 
6151
EXECUTE stmt;
 
6152
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
6153
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    5       Using where
 
6154
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      3       test.t1.EMPNUM  1       NULL
 
6155
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    6       Using where
 
6156
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    12      Using where; Using join buffer (Block Nested Loop)
 
6157
EXECUTE stmt;
 
6158
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
6159
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    5       Using where
 
6160
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      3       test.t1.EMPNUM  1       NULL
 
6161
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    6       Using where
 
6162
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    12      Using where; Using join buffer (Block Nested Loop)
 
6163
DEALLOCATE PREPARE stmt;
 
6164
DROP TABLE t1, t2, t3;
 
6165
#
 
6166
# BUG#45221 Query SELECT pk FROM C WHERE pk IN (SELECT int_key) failing
 
6167
#
 
6168
CREATE TABLE t1 (
 
6169
i1_key INT,
 
6170
i2 INT,
 
6171
i3 INT,
 
6172
KEY i1_index (i1_key)
 
6173
);
 
6174
INSERT INTO t1 VALUES (9,1,2), (9,2,1);
 
6175
CREATE TABLE t2 (
 
6176
pk INT NOT NULL,
 
6177
i1 INT,
 
6178
PRIMARY KEY (pk)
 
6179
);
 
6180
INSERT INTO t2 VALUES (9,1);
 
6181
SELECT pk
 
6182
FROM t2
 
6183
WHERE 
 
6184
pk IN ( 
 
6185
SELECT i1_key
 
6186
FROM t1
 
6187
WHERE t1.i2 < t1.i3 XOR t2.i1 > 1
 
6188
ORDER BY t1.i2 desc);
 
6189
pk
 
6190
9
 
6191
DROP TABLE t1,t2;
 
6192
# BUG#50361 Doublenested noncorrelated subquery with FirstMatch and join cache wrong result
 
6193
#
 
6194
CREATE TABLE t1(
 
6195
id INTEGER
 
6196
);
 
6197
INSERT INTO t1 VALUES(10),(20);
 
6198
create table t2 select * from t1;
 
6199
create table t3 select * from t1;
 
6200
SELECT *
 
6201
FROM t1
 
6202
WHERE 1 IN(SELECT 1
 
6203
FROM t2
 
6204
WHERE 1 IN(SELECT 1
 
6205
FROM t3));
 
6206
id
 
6207
10
 
6208
20
 
6209
explain extended SELECT *
 
6210
FROM t1
 
6211
WHERE 1 IN(SELECT 1
 
6212
FROM t2
 
6213
WHERE 1 IN(SELECT 1
 
6214
FROM t3));
 
6215
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
6216
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       100.00  NULL
 
6217
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      4       const   1       100.00  NULL
 
6218
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    2       100.00  NULL
 
6219
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    2       100.00  Using join buffer (Block Nested Loop)
 
6220
Warnings:
 
6221
Note    1003    /* select#1 */ select `test`.`t1`.`id` AS `id` from `test`.`t1` semi join (`test`.`t3` join `test`.`t2`) where 1
 
6222
delete from t2;
 
6223
delete from t3;
 
6224
INSERT INTO t1 VALUES(30),(40),(50),(60),(70),(80),(90);
 
6225
insert into t2 select * from t1;
 
6226
insert into t3 select * from t1;
 
6227
create table t4 select * from t1;
 
6228
SELECT *
 
6229
FROM t1
 
6230
WHERE 1 IN(SELECT 1
 
6231
FROM t2
 
6232
WHERE 1 IN(SELECT 1
 
6233
FROM t3
 
6234
WHERE 1 IN(SELECT 1
 
6235
FROM t4)));
 
6236
id
 
6237
10
 
6238
20
 
6239
30
 
6240
40
 
6241
50
 
6242
60
 
6243
70
 
6244
80
 
6245
90
 
6246
explain SELECT *
 
6247
FROM t1
 
6248
WHERE 1 IN(SELECT 1
 
6249
FROM t2
 
6250
WHERE 1 IN(SELECT 1
 
6251
FROM t3
 
6252
WHERE 1 IN(SELECT 1
 
6253
FROM t4)));
 
6254
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
6255
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    9       NULL
 
6256
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      4       const   1       NULL
 
6257
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    9       NULL
 
6258
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    9       Using join buffer (Block Nested Loop)
 
6259
2       MATERIALIZED    t4      ALL     NULL    NULL    NULL    NULL    9       Using join buffer (Block Nested Loop)
 
6260
SELECT *
 
6261
FROM t1
 
6262
WHERE 1 IN(SELECT 1
 
6263
FROM t1
 
6264
WHERE 1 IN(SELECT 1
 
6265
FROM t1
 
6266
WHERE 1 IN(SELECT 1
 
6267
FROM t1)));
 
6268
id
 
6269
10
 
6270
20
 
6271
30
 
6272
40
 
6273
50
 
6274
60
 
6275
70
 
6276
80
 
6277
90
 
6278
drop table t1,t2,t3,t4;
 
6279
#
 
6280
# Bug#53236 Segfault in DTCollation::set(DTCollation&)
 
6281
#
 
6282
CREATE TABLE t1 (
 
6283
pk INTEGER AUTO_INCREMENT,
 
6284
col_varchar VARCHAR(1),
 
6285
PRIMARY KEY (pk)
 
6286
)
 
6287
;
 
6288
INSERT INTO t1 (col_varchar) 
 
6289
VALUES
 
6290
('w'),
 
6291
('m')
 
6292
;
 
6293
SELECT  table1.pk
 
6294
FROM ( t1 AS table1 JOIN t1 AS table2 ON (table1.col_varchar =
 
6295
table2.col_varchar) ) 
 
6296
WHERE ( 1, 2 ) IN ( SELECT SUBQUERY1_t1.pk AS SUBQUERY1_field1,
 
6297
SUBQUERY1_t1.pk AS SUBQUERY1_field2
 
6298
FROM ( t1 AS SUBQUERY1_t1 JOIN t1 AS SUBQUERY1_t2
 
6299
ON (SUBQUERY1_t2.col_varchar =
 
6300
SUBQUERY1_t1.col_varchar) ) ) 
 
6301
;
 
6302
pk
 
6303
drop table t1;
 
6304
#
 
6305
# BUG#53298 "wrong result with semijoin (no semijoin strategy chosen)"
 
6306
#
 
6307
create table t1 (uid int, fid int);
 
6308
insert into t1 values (1,1), (3,1);
 
6309
create table t2 (uid int, name varchar(128));
 
6310
insert into t2 values (1, "A"), (2, "B");
 
6311
create table t3 (uid int, fid int, index(uid));
 
6312
insert into t3 values (1,3), (1,3);
 
6313
create table t4 (uid int);
 
6314
insert into t4 values (3);
 
6315
explain select t2.uid from t2, t1 
 
6316
where t1.uid in (select t4.uid from t4, t3 where t3.uid=1 and t4.uid=t3.fid)
 
6317
and t2.uid=t1.fid;
 
6318
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
6319
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    NULL
 
6320
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    2       Using join buffer (Block Nested Loop)
 
6321
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
6322
2       MATERIALIZED    t4      ALL     NULL    NULL    NULL    NULL    1       NULL
 
6323
2       MATERIALIZED    t3      ref     uid     uid     5       const   1       Using where
 
6324
select t2.uid from t2, t1 
 
6325
where t1.uid in (select t4.uid from t4, t3 where t3.uid=1 and t4.uid=t3.fid)
 
6326
and t2.uid=t1.fid;
 
6327
uid
 
6328
1
 
6329
drop table t1,t2,t3,t4;
 
6330
CREATE TABLE t1 (
 
6331
pk int,
 
6332
a varchar(1),
 
6333
b varchar(4),
 
6334
c varchar(4),
 
6335
d varchar(4),
 
6336
PRIMARY KEY (pk)
 
6337
);
 
6338
INSERT INTO t1 VALUES (1,'o','ffff','ffff','ffoo'),(2,'f','ffff','ffff','ffff');
 
6339
CREATE TABLE t2 LIKE t1;
 
6340
INSERT INTO t2 VALUES (1,'i','iiii','iiii','iiii'),(2,'f','ffff','ffff','ffff');
 
6341
EXPLAIN SELECT pk FROM t1 WHERE (a) IN (SELECT a FROM t2 WHERE pk > 0);
 
6342
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
6343
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where
 
6344
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      4       test.t1.a       1       NULL
 
6345
2       MATERIALIZED    t2      range   PRIMARY PRIMARY 4       NULL    2       Using where
 
6346
SELECT pk FROM t1 WHERE (a) IN (SELECT a FROM t2 WHERE pk > 0);
 
6347
pk
 
6348
2
 
6349
SELECT pk FROM t1 WHERE (b,c,d) IN (SELECT b,c,d FROM t2 WHERE pk > 0);
 
6350
pk
 
6351
2
 
6352
DROP TABLE t1, t2;
 
6353
CREATE TABLE t1 (f1 INT, f2 DECIMAL(5,3)) ENGINE=MyISAM;
 
6354
INSERT INTO t1 (f1, f2) VALUES (1, 1.789);
 
6355
INSERT INTO t1 (f1, f2) VALUES (13, 1.454);
 
6356
INSERT INTO t1 (f1, f2) VALUES (10, 1.668);
 
6357
CREATE TABLE t2 LIKE t1;
 
6358
INSERT INTO t2 VALUES (1, 1.789);
 
6359
INSERT INTO t2 VALUES (13, 1.454);
 
6360
EXPLAIN SELECT COUNT(*) FROM t1 WHERE (f1,f2) IN (SELECT f1,f2 FROM t2);
 
6361
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
6362
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    NULL
 
6363
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    3       Using where; Using join buffer (Block Nested Loop)
 
6364
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    2       NULL
 
6365
SELECT COUNT(*) FROM t1 WHERE (f1,f2) IN (SELECT f1,f2 FROM t2);
 
6366
COUNT(*)
 
6367
2
 
6368
DROP TABLE t1, t2;
 
6369
CREATE TABLE t1 (
 
6370
ID int(11) NOT NULL auto_increment,
 
6371
Name char(35) NOT NULL default '',
 
6372
Country char(3) NOT NULL default '',
 
6373
Population int(11) NOT NULL default '0',
 
6374
PRIMARY KEY  (ID),
 
6375
INDEX (Population),
 
6376
INDEX (Country) 
 
6377
);
 
6378
CREATE TABLE t2 (
 
6379
Code char(3) NOT NULL default '',
 
6380
Name char(52) NOT NULL default '',
 
6381
SurfaceArea float(10,2) NOT NULL default '0.00',
 
6382
Population int(11) NOT NULL default '0',
 
6383
Capital int(11) default NULL,
 
6384
PRIMARY KEY  (Code),
 
6385
UNIQUE INDEX (Name),
 
6386
INDEX (Population)
 
6387
);
 
6388
CREATE TABLE t3 (
 
6389
Country char(3) NOT NULL default '',
 
6390
Language char(30) NOT NULL default '',
 
6391
Percentage float(3,1) NOT NULL default '0.0',
 
6392
PRIMARY KEY  (Country, Language),
 
6393
INDEX (Percentage)
 
6394
);
 
6395
EXPLAIN SELECT Name FROM t2 
 
6396
WHERE t2.Code IN (SELECT Country FROM t1 WHERE Population > 5000000)
 
6397
AND
 
6398
t2.Code IN (SELECT Country FROM t3 
 
6399
WHERE Language='English' AND Percentage > 10 AND
 
6400
t2.Population > 100000);
 
6401
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
6402
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    NULL
 
6403
1       SIMPLE  t2      eq_ref  PRIMARY,Population      PRIMARY 3       <subquery2>.Country     1       Using where
 
6404
1       SIMPLE  t3      eq_ref  PRIMARY,Percentage      PRIMARY 33      <subquery2>.Country,const       1       Using where
 
6405
2       MATERIALIZED    t1      range   Population,Country      Population      4       NULL    1       Using where
 
6406
EXPLAIN FORMAT=JSON SELECT Name FROM t2 
 
6407
WHERE t2.Code IN (SELECT Country FROM t1 WHERE Population > 5000000)
 
6408
AND
 
6409
t2.Code IN (SELECT Country FROM t3 
 
6410
WHERE Language='English' AND Percentage > 10 AND
 
6411
t2.Population > 100000);
 
6412
EXPLAIN
 
6413
{
 
6414
  "query_block": {
 
6415
    "select_id": 1,
 
6416
    "nested_loop": [
 
6417
      {
 
6418
        "table": {
 
6419
          "table_name": "<subquery2>",
 
6420
          "access_type": "ALL",
 
6421
          "materialized_from_subquery": {
 
6422
            "using_temporary_table": true,
 
6423
            "query_block": {
 
6424
              "table": {
 
6425
                "table_name": "t1",
 
6426
                "access_type": "range",
 
6427
                "possible_keys": [
 
6428
                  "Population",
 
6429
                  "Country"
 
6430
                ],
 
6431
                "key": "Population",
 
6432
                "used_key_parts": [
 
6433
                  "Population"
 
6434
                ],
 
6435
                "key_length": "4",
 
6436
                "rows": 1,
 
6437
                "filtered": 100,
 
6438
                "attached_condition": "(`test`.`t1`.`Population` > 5000000)"
 
6439
              }
 
6440
            }
 
6441
          }
 
6442
        }
 
6443
      },
 
6444
      {
 
6445
        "table": {
 
6446
          "table_name": "t2",
 
6447
          "access_type": "eq_ref",
 
6448
          "possible_keys": [
 
6449
            "PRIMARY",
 
6450
            "Population"
 
6451
          ],
 
6452
          "key": "PRIMARY",
 
6453
          "used_key_parts": [
 
6454
            "Code"
 
6455
          ],
 
6456
          "key_length": "3",
 
6457
          "ref": [
 
6458
            "<subquery2>.Country"
 
6459
          ],
 
6460
          "rows": 1,
 
6461
          "filtered": 100,
 
6462
          "attached_condition": "(`test`.`t2`.`Population` > 100000)"
 
6463
        }
 
6464
      },
 
6465
      {
 
6466
        "table": {
 
6467
          "table_name": "t3",
 
6468
          "access_type": "eq_ref",
 
6469
          "possible_keys": [
 
6470
            "PRIMARY",
 
6471
            "Percentage"
 
6472
          ],
 
6473
          "key": "PRIMARY",
 
6474
          "used_key_parts": [
 
6475
            "Country",
 
6476
            "Language"
 
6477
          ],
 
6478
          "key_length": "33",
 
6479
          "ref": [
 
6480
            "<subquery2>.Country",
 
6481
            "const"
 
6482
          ],
 
6483
          "rows": 1,
 
6484
          "filtered": 100,
 
6485
          "attached_condition": "((`test`.`t3`.`Language` = 'English') and (`test`.`t3`.`Percentage` > 10))"
 
6486
        }
 
6487
      }
 
6488
    ]
 
6489
  }
 
6490
}
 
6491
Warnings:
 
6492
Note    1276    Field or reference 'test.t2.Population' of SELECT #3 was resolved in SELECT #1
 
6493
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))
 
6494
DROP TABLE t1,t2,t3;
 
6495
CREATE TABLE t1 (
 
6496
Code char(3) NOT NULL DEFAULT '',
 
6497
Name char(52) NOT NULL DEFAULT '',
 
6498
Continent enum('Asia','Europe','North America','Africa','Oceania','Antarctica','South America') NOT NULL DEFAULT 'Asia',
 
6499
Region char(26) NOT NULL DEFAULT '',
 
6500
SurfaceArea float(10,2) NOT NULL DEFAULT '0.00',
 
6501
IndepYear smallint(6) DEFAULT NULL,
 
6502
Population int(11) NOT NULL DEFAULT '0',
 
6503
LifeExpectancy float(3,1) DEFAULT NULL,
 
6504
GNP float(10,2) DEFAULT NULL,
 
6505
GNPOld float(10,2) DEFAULT NULL,
 
6506
LocalName char(45) NOT NULL DEFAULT '',
 
6507
GovernmentForm char(45) NOT NULL DEFAULT '',
 
6508
HeadOfState char(60) DEFAULT NULL,
 
6509
Capital int(11) DEFAULT NULL,
 
6510
Code2 char(2) NOT NULL DEFAULT '',
 
6511
PRIMARY KEY (Code)
 
6512
);
 
6513
CREATE TABLE t2 (
 
6514
ID int(11) NOT NULL AUTO_INCREMENT,
 
6515
Name char(35) NOT NULL DEFAULT '',
 
6516
CountryCode char(3) NOT NULL DEFAULT '',
 
6517
District char(20) NOT NULL DEFAULT '',
 
6518
Population int(11) NOT NULL DEFAULT '0',
 
6519
PRIMARY KEY (ID),
 
6520
KEY CountryCode (CountryCode)
 
6521
);
 
6522
Fill the table with test data
 
6523
This must not use LooseScan:
 
6524
EXPLAIN SELECT Name FROM t1 
 
6525
WHERE t1.Code IN (
 
6526
SELECT t2.CountryCode FROM t2 WHERE Population > 5000000);
 
6527
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
6528
1       SIMPLE  t1      ALL     PRIMARY NULL    NULL    NULL    31      Using where
 
6529
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      3       test.t1.Code    1       NULL
 
6530
2       MATERIALIZED    t2      ALL     CountryCode     NULL    NULL    NULL    545     Using where
 
6531
SELECT Name FROM t1 
 
6532
WHERE t1.Code IN (
 
6533
SELECT t2.CountryCode FROM t2 WHERE Population > 5000000);
 
6534
Name
 
6535
Austria
 
6536
Canada
 
6537
China
 
6538
Czech Republic
 
6539
drop table t1, t2;
 
6540
create table t0 (a int);
 
6541
insert into t0 values (0),(1),(2),(3),(4);
 
6542
create table t1 (a int, b int, key(a));
 
6543
insert into t1 select a,a from t0;
 
6544
create table t2 (a int, b int, primary key(a));
 
6545
insert into t2 select * from t1;
 
6546
Table t2, unlike table t1, should be displayed as pulled out
 
6547
explain extended select * from t0
 
6548
where t0.a in ( select t1.a from t1,t2 where t2.a=t0.a and
 
6549
t1.b=t2.b);
 
6550
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
6551
1       SIMPLE  t0      ALL     NULL    NULL    NULL    NULL    5       100.00  Using where; Start temporary
 
6552
1       SIMPLE  t1      ref     a       a       5       test.t0.a       1       100.00  NULL
 
6553
1       SIMPLE  t2      eq_ref  PRIMARY PRIMARY 4       test.t0.a       1       100.00  Using where; End temporary
 
6554
Warnings:
 
6555
Note    1276    Field or reference 'test.t0.a' of SELECT #2 was resolved in SELECT #1
 
6556
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`))
 
6557
update t1 set a=3, b=11 where a=4;
 
6558
update t2 set b=11 where a=3;
 
6559
create temporary table tmp select * from t0 where t0.a in 
 
6560
(select t1.a from t1, t2 where t2.a=t0.a and t1.b=t2.b);
 
6561
create temporary table tmp_as_ref (a int);
 
6562
insert into tmp_as_ref values(0),(1),(2),(3);
 
6563
select * from tmp;
 
6564
a
 
6565
0
 
6566
1
 
6567
2
 
6568
3
 
6569
drop table t0, t1, t2, tmp, tmp_as_ref;
 
6570
CREATE TABLE t1 (
 
6571
id int(11) NOT NULL,
 
6572
PRIMARY KEY (id));
 
6573
CREATE TABLE t2 (
 
6574
id int(11) NOT NULL,
 
6575
fid int(11) NOT NULL,
 
6576
PRIMARY KEY (id));
 
6577
insert into t1 values(1);
 
6578
insert into t2 values(1,7503),(2,1);
 
6579
explain select count(*) 
 
6580
from t1 
 
6581
where fid IN (select fid from t2 where (id between 7502 and 8420) order by fid );
 
6582
ERROR 42S22: Unknown column 'fid' in 'IN/ALL/ANY subquery'
 
6583
drop table t1, t2;
 
6584
create table t1 (a int, b int, key (a), key (b));
 
6585
insert into t1 values (2,4),(2,4),(2,4);
 
6586
select t1.a from t1 
 
6587
where 
 
6588
t1.a in (select 1 from t1 where t1.a in (select 1 from t1) group by  t1.a);
 
6589
a
 
6590
drop table t1;
 
6591
create table t1(a int,b int,key(a),key(b));
 
6592
insert into t1 values (1,1),(2,2),(3,3);
 
6593
select 1 from t1 
 
6594
where t1.a not in (select 1 from t1 
 
6595
where t1.a in (select 1 from t1) 
 
6596
group by  t1.b);
 
6597
1
 
6598
1
 
6599
1
 
6600
drop table t1;
 
6601
CREATE TABLE t1
 
6602
(EMPNUM   CHAR(3) NOT NULL,
 
6603
EMPNAME  CHAR(20),
 
6604
GRADE    DECIMAL(4),
 
6605
CITY     CHAR(15));
 
6606
CREATE TABLE t2
 
6607
(PNUM     CHAR(3) NOT NULL,
 
6608
PNAME    CHAR(20),
 
6609
PTYPE    CHAR(6),
 
6610
BUDGET   DECIMAL(9),
 
6611
CITY     CHAR(15));
 
6612
CREATE TABLE t3
 
6613
(EMPNUM   CHAR(3) NOT NULL,
 
6614
PNUM     CHAR(3) NOT NULL,
 
6615
HOURS    DECIMAL(5));
 
6616
INSERT INTO t1 VALUES ('E1','Alice',12,'Deale');
 
6617
INSERT INTO t1 VALUES ('E2','Betty',10,'Vienna');
 
6618
INSERT INTO t1 VALUES ('E3','Carmen',13,'Vienna');
 
6619
INSERT INTO t1 VALUES ('E4','Don',12,'Deale');
 
6620
INSERT INTO t1 VALUES ('E5','Ed',13,'Akron');
 
6621
INSERT INTO t2 VALUES ('P1','MXSS','Design',10000,'Deale');
 
6622
INSERT INTO t2 VALUES ('P2','CALM','Code',30000,'Vienna');
 
6623
INSERT INTO t2 VALUES ('P3','SDP','Test',30000,'Tampa');
 
6624
INSERT INTO t2 VALUES ('P4','SDP','Design',20000,'Deale');
 
6625
INSERT INTO t2 VALUES ('P5','IRM','Test',10000,'Vienna');
 
6626
INSERT INTO t2 VALUES ('P6','PAYR','Design',50000,'Deale');
 
6627
INSERT INTO t3 VALUES  ('E1','P1',40);
 
6628
INSERT INTO t3 VALUES  ('E1','P2',20);
 
6629
INSERT INTO t3 VALUES  ('E1','P3',80);
 
6630
INSERT INTO t3 VALUES  ('E1','P4',20);
 
6631
INSERT INTO t3 VALUES  ('E1','P5',12);
 
6632
INSERT INTO t3 VALUES  ('E1','P6',12);
 
6633
INSERT INTO t3 VALUES  ('E2','P1',40);
 
6634
INSERT INTO t3 VALUES  ('E2','P2',80);
 
6635
INSERT INTO t3 VALUES  ('E3','P2',20);
 
6636
INSERT INTO t3 VALUES  ('E4','P2',20);
 
6637
INSERT INTO t3 VALUES  ('E4','P4',40);
 
6638
INSERT INTO t3 VALUES  ('E4','P5',80);
 
6639
SELECT * FROM t1;
 
6640
EMPNUM  EMPNAME GRADE   CITY
 
6641
E1      Alice   12      Deale
 
6642
E2      Betty   10      Vienna
 
6643
E3      Carmen  13      Vienna
 
6644
E4      Don     12      Deale
 
6645
E5      Ed      13      Akron
 
6646
CREATE UNIQUE INDEX t1_IDX ON t1(EMPNUM);
 
6647
SELECT EMPNAME
 
6648
FROM t1
 
6649
WHERE EMPNUM IN
 
6650
(SELECT EMPNUM
 
6651
FROM t3
 
6652
WHERE PNUM IN
 
6653
(SELECT PNUM
 
6654
FROM t2
 
6655
WHERE PTYPE = 'Design'));
 
6656
EMPNAME
 
6657
Alice
 
6658
Betty
 
6659
Don
 
6660
DROP INDEX t1_IDX ON t1;
 
6661
CREATE INDEX t1_IDX ON t1(EMPNUM);
 
6662
SELECT EMPNAME
 
6663
FROM t1
 
6664
WHERE EMPNUM IN
 
6665
(SELECT EMPNUM
 
6666
FROM t3
 
6667
WHERE PNUM IN
 
6668
(SELECT PNUM
 
6669
FROM t2
 
6670
WHERE PTYPE = 'Design'));
 
6671
EMPNAME
 
6672
Alice
 
6673
Betty
 
6674
Don
 
6675
DROP INDEX t1_IDX ON t1;
 
6676
SELECT EMPNAME
 
6677
FROM t1
 
6678
WHERE EMPNUM IN
 
6679
(SELECT EMPNUM
 
6680
FROM t3
 
6681
WHERE PNUM IN
 
6682
(SELECT PNUM
 
6683
FROM t2
 
6684
WHERE PTYPE = 'Design'));
 
6685
EMPNAME
 
6686
Alice
 
6687
Betty
 
6688
Don
 
6689
DROP TABLE t1, t2, t3;
 
6690
CREATE TABLE t1 (f1 INT NOT NULL);
 
6691
CREATE VIEW v1 (a) AS SELECT f1 IN (SELECT f1 FROM t1) FROM t1;
 
6692
SELECT * FROM v1;
 
6693
a
 
6694
drop view v1;
 
6695
drop table t1;
 
6696
create table t0 (a int);
 
6697
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
 
6698
create table t1(a int, b int);
 
6699
insert into t1 values (0,0),(1,1),(2,2);
 
6700
create table t2 as select * from t1;
 
6701
create table t3 (pk int, a int, primary key(pk));
 
6702
insert into t3 select a,a from t0;
 
6703
explain 
 
6704
select * from t1 left join t2 on (t2.a= t1.a and t2.a in (select pk from t3));
 
6705
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
6706
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    3       NULL
 
6707
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    3       Using where
 
6708
1       SIMPLE  t3      eq_ref  PRIMARY PRIMARY 4       test.t2.a       1       Using index
 
6709
drop table t0, t1, t2, t3;
 
6710
create table t0 (a int);
 
6711
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
 
6712
create table t1 (a int) as select A.a + 10 *(B.a + 10*C.a) as a  from t0 A, t0 B, t0 C;
 
6713
create table t2 (id int, a int, primary key(id), key(a)) as select a as id, a as a  from t1;
 
6714
show create table t2;
 
6715
Table   Create Table
 
6716
t2      CREATE TABLE `t2` (
 
6717
  `id` int(11) NOT NULL DEFAULT '0',
 
6718
  `a` int(11) DEFAULT NULL,
 
6719
  PRIMARY KEY (`id`),
 
6720
  KEY `a` (`a`)
 
6721
) ENGINE=MyISAM DEFAULT CHARSET=latin1
 
6722
set @a=0;
 
6723
create table t3 as select * from t2 limit 0;
 
6724
insert into t3 select @a:=@a+1, t2.a from t2, t0;
 
6725
insert into t3 select @a:=@a+1, t2.a from t2, t0;
 
6726
insert into t3 select @a:=@a+1, t2.a from t2, t0;
 
6727
alter table t3 add primary key(id), add key(a);
 
6728
The following must use loose index scan over t3, key a:
 
6729
explain select count(a) from t2 where a in ( SELECT  a FROM t3);
 
6730
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
6731
1       SIMPLE  t2      index   a       a       5       NULL    1000    Using where; Using index
 
6732
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      5       test.t2.a       1       NULL
 
6733
2       MATERIALIZED    t3      index   a       a       5       NULL    30000   Using index
 
6734
select count(a) from t2 where a in ( SELECT  a FROM t3);
 
6735
count(a)
 
6736
1000
 
6737
drop table t0,t1,t2,t3;
 
6738
#
 
6739
# Bug#33062: subquery in stored routine cause crash
 
6740
#
 
6741
CREATE TABLE t1(a INT);
 
6742
CREATE TABLE t2(c INT);
 
6743
CREATE PROCEDURE p1(v1 int)
 
6744
BEGIN
 
6745
SELECT 1 FROM t1 WHERE a = v1 AND a IN (SELECT c FROM t2);
 
6746
END
 
6747
//
 
6748
CREATE PROCEDURE p2(v1 int)
 
6749
BEGIN
 
6750
SELECT 1 FROM t1 WHERE a IN (SELECT c FROM t2);
 
6751
END
 
6752
//
 
6753
CREATE PROCEDURE p3(v1 int)
 
6754
BEGIN
 
6755
SELECT 1 
 
6756
FROM 
 
6757
t1 t01,t1 t02,t1 t03,t1 t04,t1 t05,t1 t06,t1 t07,t1 t08,
 
6758
t1 t09,t1 t10,t1 t11,t1 t12,t1 t13,t1 t14,t1 t15,t1 t16,
 
6759
t1 t17,t1 t18,t1 t19,t1 t20,t1 t21,t1 t22,t1 t23,t1 t24,
 
6760
t1 t25,t1 t26,t1 t27,t1 t28,t1 t29,t1 t30,t1 t31,t1 t32,
 
6761
t1 t33,t1 t34,t1 t35,t1 t36,t1 t37,t1 t38,t1 t39,t1 t40,
 
6762
t1 t41,t1 t42,t1 t43,t1 t44,t1 t45,t1 t46,t1 t47,t1 t48,
 
6763
t1 t49,t1 t50,t1 t51,t1 t52,t1 t53,t1 t54,t1 t55,t1 t56,
 
6764
t1 t57,t1 t58,t1 t59,t1 t60
 
6765
WHERE t01.a IN (SELECT c FROM t2);
 
6766
END
 
6767
//
 
6768
CREATE PROCEDURE p4(v1 int)
 
6769
BEGIN
 
6770
SELECT 1 
 
6771
FROM 
 
6772
t1 t01,t1 t02,t1 t03,t1 t04,t1 t05,t1 t06,t1 t07,t1 t08,
 
6773
t1 t09,t1 t10,t1 t11,t1 t12,t1 t13,t1 t14,t1 t15,t1 t16,
 
6774
t1 t17,t1 t18,t1 t19,t1 t20,t1 t21,t1 t22,t1 t23,t1 t24,
 
6775
t1 t25,t1 t26,t1 t27,t1 t28,t1 t29,t1 t30,t1 t31,t1 t32,
 
6776
t1 t33,t1 t34,t1 t35,t1 t36,t1 t37,t1 t38,t1 t39,t1 t40,
 
6777
t1 t41,t1 t42,t1 t43,t1 t44,t1 t45,t1 t46,t1 t47,t1 t48,
 
6778
t1 t49,t1 t50,t1 t51,t1 t52,t1 t53,t1 t54,t1 t55,t1 t56,
 
6779
t1 t57,t1 t58,t1 t59,t1 t60
 
6780
WHERE t01.a = v1 AND t01.a IN (SELECT c FROM t2);
 
6781
END
 
6782
//
 
6783
CALL p1(1);
 
6784
1
 
6785
CALL p2(1);
 
6786
1
 
6787
CALL p3(1);
 
6788
1
 
6789
CALL p4(1);
 
6790
1
 
6791
DROP TABLE t1, t2;
 
6792
DROP PROCEDURE p1;
 
6793
DROP PROCEDURE p2;
 
6794
DROP PROCEDURE p3;
 
6795
DROP PROCEDURE p4;
 
6796
 
6797
# Bug#48213 Materialized subselect crashes if using GEOMETRY type
 
6798
 
6799
CREATE TABLE t1 (
 
6800
pk int,
 
6801
a varchar(1),
 
6802
b varchar(4),
 
6803
c tinyblob,
 
6804
d blob,
 
6805
e mediumblob,
 
6806
f longblob,
 
6807
g tinytext,
 
6808
h text,
 
6809
i mediumtext,
 
6810
j longtext,
 
6811
k geometry,
 
6812
PRIMARY KEY (pk)
 
6813
);
 
6814
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))'));
 
6815
CREATE TABLE t2 LIKE t1;
 
6816
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))'));
 
6817
EXPLAIN EXTENDED SELECT pk FROM t1 WHERE (a, b) IN (SELECT a, b FROM t2 WHERE pk > 0);
 
6818
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
6819
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       100.00  Using where
 
6820
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      11      test.t1.a,test.t1.b     1       100.00  NULL
 
6821
2       MATERIALIZED    t2      range   PRIMARY PRIMARY 4       NULL    2       100.00  Using where
 
6822
Warnings:
 
6823
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))
 
6824
SELECT pk FROM t1 WHERE (a, b) IN (SELECT a, b FROM t2 WHERE pk > 0);
 
6825
pk
 
6826
2
 
6827
EXPLAIN EXTENDED SELECT pk FROM t1 WHERE (b, c) IN (SELECT b, c FROM t2 WHERE pk > 0);
 
6828
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
6829
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       100.00  NULL
 
6830
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    0.00    Using where; Using join buffer (Block Nested Loop)
 
6831
2       MATERIALIZED    t2      range   PRIMARY PRIMARY 4       NULL    2       100.00  Using where
 
6832
Warnings:
 
6833
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))
 
6834
SELECT pk FROM t1 WHERE (b, c) IN (SELECT b, c FROM t2 WHERE pk > 0);
 
6835
pk
 
6836
1
 
6837
2
 
6838
EXPLAIN EXTENDED SELECT pk FROM t1 WHERE (b, d) IN (SELECT b, d FROM t2 WHERE pk > 0);
 
6839
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
6840
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       100.00  NULL
 
6841
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    0.00    Using where; Using join buffer (Block Nested Loop)
 
6842
2       MATERIALIZED    t2      range   PRIMARY PRIMARY 4       NULL    2       100.00  Using where
 
6843
Warnings:
 
6844
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))
 
6845
SELECT pk FROM t1 WHERE (b, d) IN (SELECT b, d FROM t2 WHERE pk > 0);
 
6846
pk
 
6847
2
 
6848
EXPLAIN EXTENDED SELECT pk FROM t1 WHERE (b, e) IN (SELECT b, e FROM t2 WHERE pk > 0);
 
6849
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
6850
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       100.00  Start temporary
 
6851
1       SIMPLE  t2      range   PRIMARY PRIMARY 4       NULL    2       100.00  Using where; End temporary; Using join buffer (Block Nested Loop)
 
6852
Warnings:
 
6853
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))
 
6854
SELECT pk FROM t1 WHERE (b, e) IN (SELECT b, e FROM t2 WHERE pk > 0);
 
6855
pk
 
6856
1
 
6857
2
 
6858
EXPLAIN EXTENDED SELECT pk FROM t1 WHERE (b, f) IN (SELECT b, f FROM t2 WHERE pk > 0);
 
6859
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
6860
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       100.00  NULL
 
6861
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    0.00    Using where; Using join buffer (Block Nested Loop)
 
6862
2       MATERIALIZED    t2      range   PRIMARY PRIMARY 4       NULL    2       100.00  Using where
 
6863
Warnings:
 
6864
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))
 
6865
SELECT pk FROM t1 WHERE (b, f) IN (SELECT b, f FROM t2 WHERE pk > 0);
 
6866
pk
 
6867
1
 
6868
2
 
6869
EXPLAIN EXTENDED SELECT pk FROM t1 WHERE (b, g) IN (SELECT b, g FROM t2 WHERE pk > 0);
 
6870
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
6871
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       100.00  NULL
 
6872
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    0.00    Using where; Using join buffer (Block Nested Loop)
 
6873
2       MATERIALIZED    t2      range   PRIMARY PRIMARY 4       NULL    2       100.00  Using where
 
6874
Warnings:
 
6875
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))
 
6876
SELECT pk FROM t1 WHERE (b, g) IN (SELECT b, g FROM t2 WHERE pk > 0);
 
6877
pk
 
6878
1
 
6879
2
 
6880
EXPLAIN EXTENDED SELECT pk FROM t1 WHERE (b, h) IN (SELECT b, h FROM t2 WHERE pk > 0);
 
6881
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
6882
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       100.00  NULL
 
6883
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    0.00    Using where; Using join buffer (Block Nested Loop)
 
6884
2       MATERIALIZED    t2      range   PRIMARY PRIMARY 4       NULL    2       100.00  Using where
 
6885
Warnings:
 
6886
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))
 
6887
SELECT pk FROM t1 WHERE (b, h) IN (SELECT b, h FROM t2 WHERE pk > 0);
 
6888
pk
 
6889
1
 
6890
2
 
6891
EXPLAIN EXTENDED SELECT pk FROM t1 WHERE (b, i) IN (SELECT b, i FROM t2 WHERE pk > 0);
 
6892
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
6893
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       100.00  Start temporary
 
6894
1       SIMPLE  t2      range   PRIMARY PRIMARY 4       NULL    2       100.00  Using where; End temporary; Using join buffer (Block Nested Loop)
 
6895
Warnings:
 
6896
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))
 
6897
SELECT pk FROM t1 WHERE (b, i) IN (SELECT b, i FROM t2 WHERE pk > 0);
 
6898
pk
 
6899
1
 
6900
2
 
6901
EXPLAIN EXTENDED SELECT pk FROM t1 WHERE (b, j) IN (SELECT b, j FROM t2 WHERE pk > 0);
 
6902
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
6903
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       100.00  NULL
 
6904
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    0.00    Using where; Using join buffer (Block Nested Loop)
 
6905
2       MATERIALIZED    t2      range   PRIMARY PRIMARY 4       NULL    2       100.00  Using where
 
6906
Warnings:
 
6907
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))
 
6908
SELECT pk FROM t1 WHERE (b, j) IN (SELECT b, j FROM t2 WHERE pk > 0);
 
6909
pk
 
6910
1
 
6911
2
 
6912
EXPLAIN EXTENDED SELECT pk FROM t1 WHERE (b, k) IN (SELECT b, k FROM t2 WHERE pk > 0);
 
6913
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
6914
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       100.00  NULL
 
6915
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    0.00    Using where; Using join buffer (Block Nested Loop)
 
6916
2       MATERIALIZED    t2      range   PRIMARY PRIMARY 4       NULL    2       100.00  Using where
 
6917
Warnings:
 
6918
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))
 
6919
SELECT pk FROM t1 WHERE (b, k) IN (SELECT b, k FROM t2 WHERE pk > 0);
 
6920
pk
 
6921
1
 
6922
2
 
6923
DROP TABLE t1, t2;
 
6924
# End of Bug#48213
 
6925
 
6926
# BUG#53060: LooseScan semijoin strategy does not return all rows
 
6927
 
6928
CREATE TABLE t1 (i INTEGER);
 
6929
INSERT INTO t1 VALUES (1), (2), (3), (4), (5);
 
6930
CREATE TABLE t2 (i INTEGER, j INTEGER, KEY k(i, j));
 
6931
INSERT INTO t2 VALUES (1, 0), (1, 1), (2, 0), (2, 1);
 
6932
EXPLAIN
 
6933
SELECT * FROM t1 WHERE (i) IN (SELECT i FROM t2 where j > 0);
 
6934
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
6935
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    5       Using where
 
6936
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      5       test.t1.i       1       NULL
 
6937
2       MATERIALIZED    t2      index   k       k       10      NULL    4       Using where; Using index
 
6938
SELECT * FROM t1 WHERE (i) IN (SELECT i FROM t2 where j > 0);
 
6939
i
 
6940
1
 
6941
2
 
6942
DROP TABLE t1, t2;
 
6943
# End of BUG#53060
 
6944
#
 
6945
# Bug#53305 "Duplicate weedout + join buffer (join cache --level=7,8) loses rows"
 
6946
#
 
6947
create table t1 (uid int, fid int, index(uid));
 
6948
insert into t1 values
 
6949
(1,1), (1,2), (1,3), (1,4),
 
6950
(2,5), (2,6), (2,7), (2,8),
 
6951
(3,1), (3,2), (3,9);
 
6952
create table t2 (uid int primary key, name varchar(128), index(name));
 
6953
insert into t2 values 
 
6954
(1, "A"), (2, "B"), (3, "C"), (4, "D"), (5, "E"),
 
6955
(6, "F"), (7, "G"), (8, "H"), (9, "I");
 
6956
create table t3 (uid int, fid int, index(uid));
 
6957
insert into t3 values
 
6958
(1,1), (1,2), (1,3),(1,4),
 
6959
(2,5), (2,6), (2,7), (2,8),
 
6960
(3,1), (3,2), (3,9);
 
6961
create table t4 (uid int primary key, name varchar(128), index(name));
 
6962
insert into t4 values 
 
6963
(1, "A"), (2, "B"), (3, "C"), (4, "D"), (5, "E"),
 
6964
(6, "F"), (7, "G"), (8, "H"), (9, "I");
 
6965
explain select name from t2, t1 
 
6966
where t1.uid in (select t4.uid from t4, t3 where t3.uid=1 and t4.uid=t3.fid)
 
6967
and t2.uid=t1.fid;
 
6968
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
6969
1       SIMPLE  t3      ref     uid     uid     5       const   4       Using where; Start temporary
 
6970
1       SIMPLE  t4      eq_ref  PRIMARY PRIMARY 4       test.t3.fid     1       Using index
 
6971
1       SIMPLE  t1      ref     uid     uid     5       test.t3.fid     2       End temporary
 
6972
1       SIMPLE  t2      ALL     PRIMARY NULL    NULL    NULL    9       Using where; Using join buffer (Block Nested Loop)
 
6973
select name from t2, t1 
 
6974
where t1.uid in (select t4.uid from t4, t3 where t3.uid=1 and t4.uid=t3.fid)
 
6975
and t2.uid=t1.fid;
 
6976
name
 
6977
A
 
6978
A
 
6979
B
 
6980
B
 
6981
C
 
6982
D
 
6983
E
 
6984
F
 
6985
G
 
6986
H
 
6987
I
 
6988
drop table t1,t2,t3,t4;
 
6989
#
 
6990
# Bug#43768 Prepared query with nested subqueries core dump on second execution
 
6991
#
 
6992
CREATE TABLE t1 (
 
6993
id INT PRIMARY KEY,
 
6994
partner_id VARCHAR(35)
 
6995
);
 
6996
INSERT INTO t1 VALUES
 
6997
(1, 'partner1'), (2, 'partner2'),
 
6998
(3, 'partner3'), (4, 'partner4');
 
6999
CREATE TABLE t2 (
 
7000
id INT NOT NULL,
 
7001
t1_line_id INT,
 
7002
article_id VARCHAR(20),
 
7003
PRIMARY KEY(id, t1_line_id)
 
7004
);
 
7005
INSERT INTO t2 VALUES
 
7006
(1, 1, 'sup'), (2, 1, 'sup'),
 
7007
(2, 2, 'sup'), (2, 3, 'sup'),
 
7008
(2, 4, 'imp'), (3, 1, 'sup'),
 
7009
(4, 1, 'sup');
 
7010
CREATE TABLE t3 (
 
7011
user_id VARCHAR(50),
 
7012
article_id VARCHAR(20) NOT NULL,
 
7013
PRIMARY KEY(user_id)
 
7014
);
 
7015
INSERT INTO t3 VALUES('nicke', 'imp');
 
7016
EXPLAIN
 
7017
SELECT t1.partner_id
 
7018
FROM t1
 
7019
WHERE t1.id IN (
 
7020
SELECT t2.id
 
7021
FROM t2
 
7022
WHERE article_id IN (
 
7023
SELECT article_id FROM t3
 
7024
WHERE user_id = 'nicke'
 
7025
    )
 
7026
);
 
7027
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
7028
1       SIMPLE  t3      system  PRIMARY NULL    NULL    NULL    1       NULL
 
7029
1       SIMPLE  t1      ALL     PRIMARY NULL    NULL    NULL    4       Start temporary
 
7030
1       SIMPLE  t2      ref     PRIMARY PRIMARY 4       test.t1.id      1       Using where; End temporary
 
7031
SELECT t1.partner_id
 
7032
FROM t1
 
7033
WHERE t1.id IN (
 
7034
SELECT t2.id
 
7035
FROM t2
 
7036
WHERE article_id IN (
 
7037
SELECT article_id FROM t3
 
7038
WHERE user_id = 'nicke'
 
7039
    )
 
7040
);
 
7041
partner_id
 
7042
partner2
 
7043
PREPARE stmt FROM
 
7044
'EXPLAIN SELECT t1.partner_id
 
7045
FROM t1
 
7046
WHERE t1.id IN (
 
7047
    SELECT t2.id
 
7048
    FROM t2
 
7049
    WHERE article_id IN (
 
7050
      SELECT article_id FROM t3
 
7051
      WHERE user_id = \'nicke\'
 
7052
    )
 
7053
  )';
 
7054
EXECUTE stmt;
 
7055
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
7056
1       SIMPLE  t3      system  PRIMARY NULL    NULL    NULL    1       NULL
 
7057
1       SIMPLE  t1      ALL     PRIMARY NULL    NULL    NULL    4       Start temporary
 
7058
1       SIMPLE  t2      ref     PRIMARY PRIMARY 4       test.t1.id      1       Using where; End temporary
 
7059
EXECUTE stmt;
 
7060
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
7061
1       SIMPLE  t3      system  PRIMARY NULL    NULL    NULL    1       NULL
 
7062
1       SIMPLE  t1      ALL     PRIMARY NULL    NULL    NULL    4       Start temporary
 
7063
1       SIMPLE  t2      ref     PRIMARY PRIMARY 4       test.t1.id      1       Using where; End temporary
 
7064
PREPARE stmt FROM
 
7065
'SELECT t1.partner_id
 
7066
FROM t1
 
7067
WHERE t1.id IN (
 
7068
    SELECT t2.id
 
7069
    FROM t2
 
7070
    WHERE article_id IN (
 
7071
      SELECT article_id FROM t3
 
7072
      WHERE user_id = \'nicke\'
 
7073
    )
 
7074
  )';
 
7075
EXECUTE stmt;
 
7076
partner_id
 
7077
partner2
 
7078
EXECUTE stmt;
 
7079
partner_id
 
7080
partner2
 
7081
DROP TABLE t1,t2,t3;
 
7082
# End of Bug#43768
 
7083
#
 
7084
# Bug#53058 - semijoin execution of subquery with outerjoin yields wrong result
 
7085
#
 
7086
CREATE TABLE t1 (i INTEGER);
 
7087
CREATE TABLE t2 (i INTEGER);
 
7088
CREATE TABLE t3 (i INTEGER);
 
7089
INSERT INTO t1 VALUES (1), (2);
 
7090
INSERT INTO t2 VALUES (6);
 
7091
INSERT INTO t3 VALUES (1), (2);
 
7092
explain extended SELECT * FROM t1 WHERE (t1.i) IN 
 
7093
(SELECT t3.i FROM t3 LEFT JOIN t2 ON t2.i=t3.i);
 
7094
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
7095
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    0.00    NULL
 
7096
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       100.00  Using where; Using join buffer (Block Nested Loop)
 
7097
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    2       100.00  NULL
 
7098
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    1       100.00  Using where; Using join buffer (Block Nested Loop)
 
7099
Warnings:
 
7100
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`)
 
7101
SELECT * FROM t1 WHERE (t1.i) IN 
 
7102
(SELECT t3.i FROM t3 LEFT JOIN t2 ON t2.i=t3.i);
 
7103
i
 
7104
1
 
7105
2
 
7106
drop table t1,t2,t3;
 
7107
#
 
7108
# BUG#49453: re-execution of prepared statement with view 
 
7109
#            and semijoin crashes
 
7110
#
 
7111
CREATE TABLE t1 (city VARCHAR(50), country_id INT);
 
7112
CREATE TABLE t2 (country_id INT, country VARCHAR(50));
 
7113
INSERT INTO t1 VALUES 
 
7114
('Batna',2),('Bchar',2),('Skikda',2),('Tafuna',3),('Algeria',2) ;
 
7115
INSERT INTO t2 VALUES (2,'Algeria'),(2,'AlgeriaDup'),(3,'XAmerican Samoa');
 
7116
CREATE VIEW v1 AS 
 
7117
SELECT country_id as vf_country_id
 
7118
FROM t2
 
7119
WHERE LEFT(country,1) = "A";
 
7120
PREPARE stmt FROM "
 
7121
SELECT city, country_id
 
7122
FROM t1
 
7123
WHERE country_id IN (SELECT vf_country_id FROM v1);
 
7124
";
 
7125
 
 
7126
EXECUTE stmt;
 
7127
city    country_id
 
7128
Batna   2
 
7129
Bchar   2
 
7130
Skikda  2
 
7131
Algeria 2
 
7132
EXECUTE stmt;
 
7133
city    country_id
 
7134
Batna   2
 
7135
Bchar   2
 
7136
Skikda  2
 
7137
Algeria 2
 
7138
DROP TABLE t1,t2;
 
7139
DROP VIEW v1;
 
7140
#
 
7141
# Bug#54437 Extra rows with LEFT JOIN + semijoin (firstmatch
 
7142
# and duplicates weedout)
 
7143
#
 
7144
create table t1 (a int);
 
7145
create table t2 (a int);
 
7146
create table t3 (a int);
 
7147
insert into t1 values(1),(1);
 
7148
insert into t2 values(1),(1),(1),(1);
 
7149
insert into t3 values(2),(2);
 
7150
explain select * from t1 where t1.a in (select t2.a from t2 left join t3 on t2.a=t3.a);
 
7151
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
7152
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where
 
7153
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      5       test.t1.a       1       NULL
 
7154
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    4       NULL
 
7155
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
7156
select * from t1 where t1.a in (select t2.a from t2 left join t3 on t2.a=t3.a);
 
7157
a
 
7158
1
 
7159
1
 
7160
drop table t1,t2,t3;
 
7161
#
 
7162
# Bug#55955: crash in MEMORY engine with IN(LEFT JOIN (JOIN))
 
7163
#
 
7164
CREATE TABLE t1 (a INT);
 
7165
CREATE TABLE t2 (a INT);
 
7166
CREATE TABLE t3 (a INT);
 
7167
INSERT INTO t1 VALUES(1),(1);
 
7168
INSERT INTO t2 VALUES(1),(1);
 
7169
INSERT INTO t3 VALUES(2),(2);
 
7170
explain SELECT * FROM t1
 
7171
WHERE t1.a IN (SELECT t2.a
 
7172
FROM t2 LEFT JOIN (t2 AS t2inner, t3) ON t2.a=t3.a);
 
7173
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
7174
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where
 
7175
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      5       test.t1.a       1       NULL
 
7176
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    2       NULL
 
7177
2       MATERIALIZED    t2inner ALL     NULL    NULL    NULL    NULL    2       Using join buffer (Block Nested Loop)
 
7178
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
7179
SELECT * FROM t1
 
7180
WHERE t1.a IN (SELECT t2.a
 
7181
FROM t2 LEFT JOIN (t2 AS t2inner, t3) ON t2.a=t3.a);
 
7182
a
 
7183
1
 
7184
1
 
7185
DROP TABLE t1,t2,t3;
 
7186
#
 
7187
# BUG#52329 - Wrong result: subquery materialization, IN, 
 
7188
#             non-null field followed by nullable
 
7189
#
 
7190
CREATE TABLE t1 (a1 CHAR(8) NOT NULL, a2 char(8) NOT NULL);
 
7191
CREATE TABLE t2a (b1 char(8), b2 char(8));
 
7192
CREATE TABLE t2b (b1 CHAR(8), b2 char(8) NOT NULL);
 
7193
CREATE TABLE t2c (b1 CHAR(8) NOT NULL, b2 char(8));
 
7194
INSERT INTO t1 VALUES ('1 - 12', '2 - 22');
 
7195
INSERT INTO t2a VALUES ('1 - 11', '2 - 21'),
 
7196
('1 - 11', '2 - 21'),
 
7197
('1 - 12', '2 - 22'),
 
7198
('1 - 12', '2 - 22'),
 
7199
('1 - 13', '2 - 23');
 
7200
INSERT INTO t2b SELECT * FROM t2a;
 
7201
INSERT INTO t2c SELECT * FROM t2a;
 
7202
SELECT * FROM t1
 
7203
WHERE (a1, a2) IN (
 
7204
SELECT b1, b2 FROM t2c WHERE b1 > '0' GROUP BY b1, b2);
 
7205
a1      a2
 
7206
1 - 12  2 - 22
 
7207
SELECT * FROM t1
 
7208
WHERE (a1, a2) IN (
 
7209
SELECT b1, b2 FROM t2a WHERE b1 > '0');
 
7210
a1      a2
 
7211
1 - 12  2 - 22
 
7212
SELECT * FROM t1
 
7213
WHERE (a1, a2) IN (
 
7214
SELECT b1, b2 FROM t2b WHERE b1 > '0');
 
7215
a1      a2
 
7216
1 - 12  2 - 22
 
7217
SELECT * FROM t1
 
7218
WHERE (a1, a2) IN (
 
7219
SELECT b1, b2 FROM t2c WHERE b1 > '0');
 
7220
a1      a2
 
7221
1 - 12  2 - 22
 
7222
DROP TABLE t1,t2a,t2b,t2c;
 
7223
# End BUG#52329
 
7224
#
 
7225
# Bug#45174: Incorrectly applied equality propagation caused wrong
 
7226
# result on a query with a materialized semi-join.
 
7227
#
 
7228
CREATE TABLE t1 (
 
7229
varchar_nokey varchar(1) NOT NULL
 
7230
);
 
7231
INSERT INTO t1 VALUES
 
7232
('v'), ('u'), ('n'), ('l'), ('h'), ('u'), ('n'), ('j'), ('k'),
 
7233
('e'), ('i'), ('u'), ('n'), ('b'), ('x'), (''), ('q'), ('u');
 
7234
CREATE TABLE t2 (
 
7235
pk int NOT NULL,
 
7236
varchar_key varchar(1) NOT NULL,
 
7237
varchar_nokey varchar(1) NOT NULL,
 
7238
PRIMARY KEY(pk),
 
7239
KEY varchar_key(varchar_key)
 
7240
);
 
7241
INSERT INTO t2 VALUES
 
7242
(11,'m','m'), (12,'j','j'), (13,'z','z'), (14,'a','a'), (15,'',''),
 
7243
(16,'e','e'), (17,'t','t'), (19,'b','b'), (20,'w','w'), (21,'m','m'),
 
7244
(23,'',''), (24,'w','w'), (26,'e','e'), (27,'e','e'), (28,'p','p');
 
7245
SELECT varchar_nokey
 
7246
FROM t1
 
7247
WHERE (varchar_nokey, varchar_nokey) IN (SELECT varchar_key, varchar_nokey
 
7248
FROM t2  
 
7249
WHERE varchar_nokey < 'n' XOR pk);
 
7250
varchar_nokey
 
7251
explain SELECT varchar_nokey
 
7252
FROM t1
 
7253
WHERE (varchar_nokey, varchar_nokey) IN (SELECT varchar_key, varchar_nokey
 
7254
FROM t2  
 
7255
WHERE varchar_nokey < 'n' XOR pk);
 
7256
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
7257
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    18      Using where
 
7258
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      6       test.t1.varchar_nokey,test.t1.varchar_nokey     1       NULL
 
7259
2       MATERIALIZED    t2      ALL     varchar_key     NULL    NULL    NULL    15      Using where
 
7260
DROP TABLE t1, t2;
 
7261
# End of the test for bug#45174.
 
7262
#
 
7263
# Bug#50019: Wrong result for IN-query with materialization
 
7264
#
 
7265
CREATE TABLE t1(i INT);
 
7266
INSERT INTO t1 VALUES (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
 
7267
CREATE TABLE t2(i INT);
 
7268
INSERT INTO t2 VALUES (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
 
7269
CREATE TABLE t3(i INT);
 
7270
INSERT INTO t3 VALUES (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
 
7271
SELECT * FROM t1 WHERE t1.i IN (SELECT t2.i
 
7272
FROM t2 JOIN t3
 
7273
WHERE t2.i + t3.i = 5);
 
7274
i
 
7275
1
 
7276
2
 
7277
3
 
7278
4
 
7279
explain SELECT * FROM t1 WHERE t1.i IN (SELECT t2.i
 
7280
FROM t2 JOIN t3
 
7281
WHERE t2.i + t3.i = 5);
 
7282
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
7283
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    10      Using where
 
7284
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      5       test.t1.i       1       NULL
 
7285
2       MATERIALIZED    t2      ALL     NULL    NULL    NULL    NULL    10      NULL
 
7286
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    10      Using where; Using join buffer (Block Nested Loop)
 
7287
DROP TABLE t1,t2,t3;
 
7288
# End of the test for bug#50019.
 
7289
#
 
7290
# Bug#52068: Optimizer generates invalid semijoin materialization plan
 
7291
#
 
7292
CREATE TABLE ot1(a INTEGER);
 
7293
INSERT INTO ot1 VALUES(5), (8);
 
7294
CREATE TABLE it2(a INTEGER);
 
7295
INSERT INTO it2 VALUES(9), (5), (1), (8);
 
7296
CREATE TABLE it3(a INTEGER);
 
7297
INSERT INTO it3 VALUES(7), (1), (0), (5), (1), (4);
 
7298
CREATE TABLE ot4(a INTEGER);
 
7299
INSERT INTO ot4 VALUES(1), (3), (5), (7), (9), (7), (3), (1);
 
7300
SELECT * FROM ot1,ot4
 
7301
WHERE (ot1.a,ot4.a) IN (SELECT it2.a,it3.a
 
7302
FROM it2,it3);
 
7303
a       a
 
7304
5       1
 
7305
8       1
 
7306
5       5
 
7307
8       5
 
7308
5       7
 
7309
8       7
 
7310
5       7
 
7311
8       7
 
7312
5       1
 
7313
8       1
 
7314
explain SELECT * FROM ot1,ot4
 
7315
WHERE (ot1.a,ot4.a) IN (SELECT it2.a,it3.a
 
7316
FROM it2,it3);
 
7317
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
7318
1       SIMPLE  ot1     ALL     NULL    NULL    NULL    NULL    2       NULL
 
7319
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    Using where; Using join buffer (Block Nested Loop)
 
7320
1       SIMPLE  ot4     ALL     NULL    NULL    NULL    NULL    8       Using where; Using join buffer (Block Nested Loop)
 
7321
2       MATERIALIZED    it2     ALL     NULL    NULL    NULL    NULL    4       NULL
 
7322
2       MATERIALIZED    it3     ALL     NULL    NULL    NULL    NULL    6       Using join buffer (Block Nested Loop)
 
7323
DROP TABLE IF EXISTS ot1, ot4, it2, it3;
 
7324
# End of the test for bug#52068.
 
7325
#
 
7326
# Bug#57623: subquery within before insert trigger causes crash (sj=on)
 
7327
#
 
7328
CREATE TABLE ot1(a INT);
 
7329
CREATE TABLE ot2(a INT);
 
7330
CREATE TABLE ot3(a INT);
 
7331
CREATE TABLE it1(a INT);
 
7332
INSERT INTO ot1 VALUES(0),(1),(2),(3),(4),(5),(6),(7);
 
7333
INSERT INTO ot2 VALUES(0),(2),(4),(6);
 
7334
INSERT INTO ot3 VALUES(0),(3),(6);
 
7335
INSERT INTO it1 VALUES(0),(1),(2),(3),(4),(5),(6),(7);
 
7336
explain SELECT *
 
7337
FROM   ot1
 
7338
LEFT JOIN
 
7339
(ot2 JOIN ot3 on ot2.a=ot3.a)
 
7340
ON ot1.a=ot2.a AND ot1.a IN (SELECT a from it1);
 
7341
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
7342
1       SIMPLE  ot1     ALL     NULL    NULL    NULL    NULL    8       Start temporary
 
7343
1       SIMPLE  it1     ALL     NULL    NULL    NULL    NULL    8       Using where; Using join buffer (Block Nested Loop)
 
7344
1       SIMPLE  ot3     ALL     NULL    NULL    NULL    NULL    3       Using join buffer (Block Nested Loop)
 
7345
1       SIMPLE  ot2     ALL     NULL    NULL    NULL    NULL    4       Using where; End temporary; Using join buffer (Block Nested Loop)
 
7346
SELECT *
 
7347
FROM   ot1
 
7348
LEFT JOIN
 
7349
(ot2 JOIN ot3 on ot2.a=ot3.a)
 
7350
ON ot1.a=ot2.a AND ot1.a IN (SELECT a from it1);
 
7351
a       a       a
 
7352
0       0       0
 
7353
1       NULL    NULL
 
7354
2       NULL    NULL
 
7355
3       NULL    NULL
 
7356
4       NULL    NULL
 
7357
5       NULL    NULL
 
7358
6       6       6
 
7359
7       NULL    NULL
 
7360
prepare s from 'SELECT *
 
7361
FROM   ot1
 
7362
LEFT JOIN
 
7363
(ot2 JOIN ot3 on ot2.a=ot3.a)
 
7364
ON ot1.a=ot2.a AND ot1.a IN (SELECT a from it1)';
 
7365
execute s;
 
7366
a       a       a
 
7367
0       0       0
 
7368
1       NULL    NULL
 
7369
2       NULL    NULL
 
7370
3       NULL    NULL
 
7371
4       NULL    NULL
 
7372
5       NULL    NULL
 
7373
6       6       6
 
7374
7       NULL    NULL
 
7375
execute s;
 
7376
a       a       a
 
7377
0       0       0
 
7378
1       NULL    NULL
 
7379
2       NULL    NULL
 
7380
3       NULL    NULL
 
7381
4       NULL    NULL
 
7382
5       NULL    NULL
 
7383
6       6       6
 
7384
7       NULL    NULL
 
7385
deallocate prepare s;
 
7386
DROP TABLE ot1, ot2, ot3, it1;
 
7387
# End of the test for bug#57623.
 
7388
#
 
7389
# Bug#11766739: Crash in tmp_table_param::init() with semijoin=on
 
7390
#
 
7391
CREATE TABLE t1 (f1 INTEGER) ENGINE=MyISAM;
 
7392
CREATE TABLE t2 (f1 INTEGER, f2 INTEGER) ENGINE=MyISAM;
 
7393
INSERT INTO t1 VALUES (1);
 
7394
INSERT INTO t2 VALUES (1,1), (2,1);
 
7395
EXPLAIN SELECT * FROM t2
 
7396
WHERE f2 IN (SELECT t1.f1
 
7397
FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE);
 
7398
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
7399
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    1       Start temporary
 
7400
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
7401
1       SIMPLE  b1      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
7402
1       SIMPLE  b2      ALL     NULL    NULL    NULL    NULL    2       End temporary; Using join buffer (Block Nested Loop)
 
7403
SELECT * FROM t2
 
7404
WHERE f2 IN (SELECT t1.f1
 
7405
FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE);
 
7406
f1      f2
 
7407
1       1
 
7408
2       1
 
7409
DROP TABLE t1, t2;
 
7410
# End of the test for bug#11766739.
 
7411
#
 
7412
# Bug#11766642: crash in Item_field::register_field_in_read_map with view
 
7413
#
 
7414
CREATE TABLE t1(a INT);
 
7415
CREATE VIEW v1 AS SELECT a FROM t1;
 
7416
INSERT INTO t1 VALUES (0),(1),(2);
 
7417
SELECT a FROM t1 WHERE a IN 
 
7418
(SELECT a XOR a FROM v1)
 
7419
ORDER BY a;
 
7420
a
 
7421
0
 
7422
DROP TABLE t1;
 
7423
DROP VIEW v1;
 
7424
#
 
7425
# Bug#12546542 MISSING ROW WHEN USING OPTIMIZER_JOIN_CACHE_LEVEL>=3
 
7426
#
 
7427
CREATE TABLE t1 (
 
7428
f2 varchar(1024)
 
7429
);
 
7430
INSERT INTO t1 VALUES ('v'),('we');
 
7431
CREATE TABLE t2 (
 
7432
col_varchar_1024_utf8 varchar(1024) CHARACTER SET utf8 DEFAULT NULL,
 
7433
col_int_key int,
 
7434
col_int int
 
7435
);
 
7436
INSERT INTO t2 VALUES ('we',4,NULL),('v',1305673728,6);
 
7437
CREATE TABLE t3 (
 
7438
col_int_key int,
 
7439
col_int int
 
7440
);
 
7441
INSERT INTO t3 VALUES (4,4);
 
7442
SELECT *
 
7443
FROM t1
 
7444
WHERE f2 IN (SELECT a1.col_varchar_1024_utf8 AS f2
 
7445
FROM t2 AS a1 LEFT JOIN t3 AS a2
 
7446
ON a1.col_int_key = a2.col_int_key
 
7447
WHERE a1.col_int BETWEEN 1 AND 10 OR a2.col_int IS NOT NULL);
 
7448
f2
 
7449
we
 
7450
v
 
7451
DROP TABLE t1,t2,t3;
 
7452
#
 
7453
# BUG#12616344 - JCL: DIFFERENT RESULT SET AND DIFFERENT AMOUNT
 
7454
# OF ROWS WHEN JCL>=3
 
7455
#
 
7456
CREATE TABLE t1 (col_int_nokey int, col_int_key int, col_varchar_key varchar(1));
 
7457
INSERT INTO t1 VALUES (0,4,'c'),(1,6,'u');
 
7458
CREATE TABLE t2 (pk int, col_int_nokey int, col_varchar_nokey varchar(1));
 
7459
INSERT INTO t2 VALUES (1,4,'b'),(94,6,'u');
 
7460
CREATE TABLE t3 (pk int, col_int_nokey int, col_varchar_key varchar(1));
 
7461
INSERT INTO t3 VALUES (1,4,'j'),(2,6,'v');
 
7462
SELECT table2.col_int_key
 
7463
from t3 as table1 join t1 as table2 on table2.col_int_nokey 
 
7464
where table1.col_int_nokey in 
 
7465
 
7466
select subquery2_t2.col_int_nokey 
 
7467
from t3 as subquery2_t1 
 
7468
right join
 
7469
t2 as subquery2_t2
 
7470
join t1 as subquery2_t3
 
7471
on subquery2_t3.col_int_key = subquery2_t2.col_int_nokey
 
7472
on subquery2_t3.col_varchar_key = subquery2_t2.col_varchar_nokey 
 
7473
where subquery2_t1.col_varchar_key != table1.col_varchar_key
 
7474
or subquery2_t2.pk <= table1.pk
 
7475
);
 
7476
col_int_key
 
7477
6
 
7478
6
 
7479
DROP TABLE t1,t2,t3;
 
7480
#
 
7481
# Bug#12608157: ASSERT IN FIELD_LONG::VAL_INT WHEN USING MEMORY ENGINE
 
7482
#
 
7483
CREATE TABLE t1 (i1 int);
 
7484
INSERT INTO t1 VALUES (1);
 
7485
CREATE TABLE t2 (i1 int, i2 int) ENGINE=memory;
 
7486
INSERT INTO t2 VALUES (1, 2),(7, 3);
 
7487
SELECT GRANDPARENT1.i1
 
7488
FROM t2 AS GRANDPARENT1 
 
7489
WHERE GRANDPARENT1.i2
 
7490
IN ( SELECT PARENT1.i2
 
7491
FROM t2 AS PARENT1 JOIN t1 AS PARENT2 ON (PARENT1.i1 = PARENT2.i1)
 
7492
WHERE 
 
7493
GRANDPARENT1.i1 IN ( SELECT CHILD1.i1 FROM t2 AS CHILD1 )
 
7494
ORDER BY PARENT1.i1)
 
7495
ORDER BY GRANDPARENT1.i2 ;
 
7496
i1
 
7497
1
 
7498
DROP TABLE t1,t2;
 
7499
#
 
7500
# Bug#12640083: Same query executed as WHERE subquery gives different
 
7501
#              results on IN() compare
 
7502
#
 
7503
CREATE TABLE t1 (
 
7504
pk int NOT NULL,
 
7505
col_varchar_1024_utf8_key varchar(1024) CHARACTER SET utf8 DEFAULT NULL,
 
7506
col_varchar_10_latin1_key varchar(10) DEFAULT NULL,
 
7507
PRIMARY KEY (pk),
 
7508
KEY col_varchar_1024_utf8_key(col_varchar_1024_utf8_key(333)),
 
7509
KEY col_varchar_10_latin1_key(col_varchar_10_latin1_key)
 
7510
);
 
7511
INSERT INTO t1 VALUES
 
7512
(1, 'a', 'a'),
 
7513
(2, 'ab', 'ab'),
 
7514
(3, 'abc', 'abc'),
 
7515
(4, 'abcd', 'abcd');
 
7516
CREATE TABLE t2 (
 
7517
pk int NOT NULL AUTO_INCREMENT,
 
7518
PRIMARY KEY (pk)
 
7519
) ENGINE=Innodb;
 
7520
CREATE TABLE t3
 
7521
SELECT alias1.col_varchar_10_latin1_key
 
7522
FROM t1 AS alias1
 
7523
LEFT JOIN t1 AS alias2
 
7524
JOIN t2 AS alias3
 
7525
ON alias2.col_varchar_10_latin1_key
 
7526
ON alias1.col_varchar_1024_utf8_key
 
7527
WHERE alias1.pk AND alias1.pk < 3 OR alias1.pk AND alias3.pk;
 
7528
EXPLAIN SELECT * 
 
7529
FROM t3 
 
7530
WHERE col_varchar_10_latin1_key IN (
 
7531
SELECT alias1.col_varchar_10_latin1_key 
 
7532
FROM t1 AS alias1
 
7533
LEFT JOIN t1 AS alias2
 
7534
JOIN t2 AS alias3
 
7535
ON alias2.col_varchar_10_latin1_key
 
7536
ON alias1.col_varchar_1024_utf8_key
 
7537
WHERE alias1.pk AND alias1.pk < 3 OR alias1.pk AND alias3.pk);
 
7538
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
7539
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    2       Using where
 
7540
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      13      test.t3.col_varchar_10_latin1_key       1       NULL
 
7541
2       MATERIALIZED    alias1  ALL     NULL    NULL    NULL    NULL    4       Using where
 
7542
2       MATERIALIZED    alias3  index   NULL    PRIMARY 4       NULL    1       Using where; Using index; Using join buffer (Block Nested Loop)
 
7543
2       MATERIALIZED    alias2  index   NULL    col_varchar_10_latin1_key       13      NULL    4       Using where; Using index; Using join buffer (Block Nested Loop)
 
7544
SELECT * 
 
7545
FROM t3 
 
7546
WHERE col_varchar_10_latin1_key IN (
 
7547
SELECT alias1.col_varchar_10_latin1_key 
 
7548
FROM t1 AS alias1
 
7549
LEFT JOIN t1 AS alias2
 
7550
JOIN t2 AS alias3
 
7551
ON alias2.col_varchar_10_latin1_key
 
7552
ON alias1.col_varchar_1024_utf8_key
 
7553
WHERE alias1.pk AND alias1.pk < 3 OR alias1.pk AND alias3.pk);
 
7554
col_varchar_10_latin1_key
 
7555
a
 
7556
ab
 
7557
DROP TABLE t1, t2, t3;
 
7558
# End of the test for bug#12640083.
 
7559
#
 
7560
# Bug#12603200 - Assert in QUICK_INDEX_MERGE_SELECT::need_sorted_output
 
7561
#
 
7562
CREATE TABLE t1 (
 
7563
pk int NOT NULL,
 
7564
col_int_key int NOT NULL,
 
7565
col_varchar_nokey varchar(1) NOT NULL,
 
7566
col_varchar_key varchar(1) NOT NULL,
 
7567
PRIMARY KEY(pk),
 
7568
KEY col_int_key(col_int_key),
 
7569
KEY col_varchar_key(col_varchar_key, col_int_key)
 
7570
) engine=innodb;
 
7571
INSERT INTO t1 VALUES
 
7572
(1,7,'a','a'),
 
7573
(2,0,'v','v'),
 
7574
(3,9,'c','c'),
 
7575
(4,3,'m','m'),
 
7576
(5,2,'a','a'),
 
7577
(6,1,'d','d'),
 
7578
(7,8,'y','y'),
 
7579
(8,6,'t','t'),
 
7580
(11,7,'a','x'),
 
7581
(12,0,'v','v'),
 
7582
(13,9,'c','c'),
 
7583
(14,3,'m','m'),
 
7584
(15,2,'a','x'),
 
7585
(16,1,'d','d'),
 
7586
(17,8,'y','y'),
 
7587
(18,6,'t','u');
 
7588
CREATE TABLE t2 (
 
7589
pk int NOT NULL,
 
7590
col_int_key int NOT NULL,
 
7591
col_varchar_key varchar(1) NOT NULL,
 
7592
PRIMARY KEY(pk),
 
7593
KEY col_varchar_key(col_varchar_key, col_int_key)
 
7594
) engine=innodb;
 
7595
INSERT INTO t2(pk,col_int_key,col_varchar_key) VALUES
 
7596
(8,7,'c'),
 
7597
(11,4,'l'),
 
7598
(12,7,'b'),
 
7599
(13,0,'c'),
 
7600
(14,2,'i'),
 
7601
(15,9,'h'),
 
7602
(16,4,'q'),
 
7603
(17,1,'m'),
 
7604
(18,9,'b'),
 
7605
(19,2,'e'),
 
7606
(20,1,'c'),
 
7607
(21,7,'z'),
 
7608
(22,4,'l'),
 
7609
(23,7,'z'),
 
7610
(24,0,'c'),
 
7611
(25,2,'i'),
 
7612
(26,9,'h'),
 
7613
(27,4,'q'),
 
7614
(28,0,'a'),
 
7615
(29,1,'d');
 
7616
EXPLAIN SELECT outr.col_varchar_key AS x, outr.pk AS y
 
7617
FROM t1 AS outr
 
7618
WHERE outr.col_varchar_key IN (SELECT innr.col_varchar_key
 
7619
FROM t2 AS innr
 
7620
WHERE innr.col_varchar_key = 'a' OR innr.pk = 8)
 
7621
AND outr.col_varchar_nokey < 't'
 
7622
ORDER BY outr.col_varchar_key, outr.pk;
 
7623
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
7624
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
 
7625
1       SIMPLE  outr    ref     col_varchar_key col_varchar_key 3       test.innr.col_varchar_key       1       Using where; End temporary
 
7626
SELECT outr.col_varchar_key AS x, outr.pk AS y
 
7627
FROM t1 AS outr
 
7628
WHERE outr.col_varchar_key IN (SELECT innr.col_varchar_key
 
7629
FROM t2 AS innr
 
7630
WHERE innr.col_varchar_key = 'a' OR innr.pk = 8)
 
7631
AND outr.col_varchar_nokey < 't'
 
7632
ORDER BY outr.col_varchar_key, outr.pk;
 
7633
x       y
 
7634
a       1
 
7635
a       5
 
7636
c       3
 
7637
c       13
 
7638
DROP TABLE t1, t2;
 
7639
# End of bug#12603200
 
7640
#
 
7641
# Bug#12603183: Segfault in hp_movelink
 
7642
#
 
7643
CREATE TABLE t1 (
 
7644
col_varchar_key varchar(1) ,
 
7645
col_varchar_nokey varchar(1) ,
 
7646
KEY col_varchar_key(col_varchar_key)
 
7647
);
 
7648
INSERT INTO t1 VALUES
 
7649
('i','i'),
 
7650
('h','h'),
 
7651
('q','q'),
 
7652
('a','a'),
 
7653
('v','v'),
 
7654
('u','u'),
 
7655
('s','s'),
 
7656
('y','y'),
 
7657
('z','z'),
 
7658
('h','h'),
 
7659
('p','p'),
 
7660
('e','e'),
 
7661
('i','i'),
 
7662
('y','y'),
 
7663
('w','w');
 
7664
CREATE TABLE t2 (
 
7665
col_varchar_nokey varchar(1)
 
7666
);
 
7667
INSERT INTO t2 VALUES
 
7668
('b');
 
7669
EXPLAIN SELECT grandparent1.col_varchar_nokey
 
7670
FROM t1 AS grandparent1 LEFT JOIN t2 AS grandparent2 USING (col_varchar_nokey)
 
7671
WHERE (grandparent1.col_varchar_key) IN
 
7672
(SELECT parent1.col_varchar_nokey
 
7673
FROM t1 AS parent1
 
7674
WHERE parent1.col_varchar_key IN
 
7675
(SELECT child1.col_varchar_nokey AS c1
 
7676
FROM t1 AS child1 LEFT JOIN t2 AS child2
 
7677
ON (child1.col_varchar_key > child2.col_varchar_nokey)));
 
7678
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
7679
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    Using where
 
7680
1       SIMPLE  grandparent1    ref     col_varchar_key col_varchar_key 4       <subquery2>.col_varchar_nokey   2       NULL
 
7681
1       SIMPLE  grandparent2    ALL     NULL    NULL    NULL    NULL    1       Using where; Using join buffer (Block Nested Loop)
 
7682
2       MATERIALIZED    child1  ALL     NULL    NULL    NULL    NULL    15      Using where
 
7683
2       MATERIALIZED    child2  ALL     NULL    NULL    NULL    NULL    1       Using where; Using join buffer (Block Nested Loop)
 
7684
2       MATERIALIZED    parent1 ref     col_varchar_key col_varchar_key 4       test.child1.col_varchar_nokey   2       NULL
 
7685
SELECT grandparent1.col_varchar_nokey
 
7686
FROM t1 AS grandparent1 LEFT JOIN t2 AS grandparent2 USING (col_varchar_nokey)
 
7687
WHERE (grandparent1.col_varchar_key) IN
 
7688
(SELECT parent1.col_varchar_nokey
 
7689
FROM t1 AS parent1
 
7690
WHERE parent1.col_varchar_key IN
 
7691
(SELECT child1.col_varchar_nokey AS c1
 
7692
FROM t1 AS child1 LEFT JOIN t2 AS child2
 
7693
ON (child1.col_varchar_key > child2.col_varchar_nokey)));
 
7694
col_varchar_nokey
 
7695
a
 
7696
e
 
7697
h
 
7698
h
 
7699
i
 
7700
i
 
7701
p
 
7702
q
 
7703
s
 
7704
u
 
7705
v
 
7706
w
 
7707
y
 
7708
y
 
7709
z
 
7710
DROP TABLE t1, t2;
 
7711
# End of test for bug#12603183.
 
7712
#
 
7713
# Bug#12818569: Diff nr of rows returned when using IN/ALL+subquery
 
7714
#
 
7715
CREATE TABLE t1 (
 
7716
col_int_key INT NOT NULL,
 
7717
col_datetime_key DATETIME NOT NULL,
 
7718
col_varchar_key VARCHAR(1) NOT NULL,
 
7719
KEY col_int_key (col_int_key),
 
7720
KEY col_datetime_key(col_datetime_key),
 
7721
KEY col_varchar_key (col_varchar_key,col_int_key)
 
7722
) ENGINE=InnoDB;
 
7723
INSERT INTO t1 VALUES
 
7724
(7,'2004-06-06 04:22:12','v'), (0,'2005-11-13 01:12:31','s'),
 
7725
(9,'2002-05-04 01:50:00','l'), (3,'2004-10-27 10:28:45','y'),
 
7726
(4,'2006-07-22 05:24:23','c'), (2,'2002-05-16 21:34:03','i'),
 
7727
(5,'2008-04-17 10:45:30','h'), (3,'2009-04-21 02:58:02','q'),
 
7728
(1,'2008-01-11 11:01:51','a'), (3,'1900-01-01 00:00:00','v'),
 
7729
(6,'2007-05-17 18:24:57','u'), (7,'2007-08-07 00:00:00','s'),
 
7730
(5,'2001-08-28 00:00:00','y'), (1,'2004-04-16 00:27:28','z'),
 
7731
(204,'2005-05-03 07:06:22','h'), (224,'2009-03-11 17:09:50','p'),
 
7732
(9,'2007-12-08 01:54:28','e'), (5,'2009-07-28 18:19:54','i'),
 
7733
(0,'2008-06-08 00:00:00','y'), (3,'2005-02-09 09:20:26','w');
 
7734
CREATE TABLE t2 (
 
7735
col_varchar_nokey VARCHAR(1) NOT NULL
 
7736
) ENGINE=InnoDB;
 
7737
INSERT INTO t2 VALUES ('v'), ('y'), ('j'), ('c'), ('d'), ('r');
 
7738
explain SELECT col_varchar_key
 
7739
FROM t1
 
7740
WHERE col_varchar_key IN (SELECT col_varchar_nokey
 
7741
FROM t2)
 
7742
ORDER BY col_datetime_key LIMIT 4;
 
7743
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
7744
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    6       Using temporary; Using filesort; Start temporary
 
7745
1       SIMPLE  t1      ref     col_varchar_key col_varchar_key 3       test.t2.col_varchar_nokey       1       End temporary
 
7746
SELECT col_varchar_key
 
7747
FROM t1
 
7748
WHERE col_varchar_key IN (SELECT col_varchar_nokey
 
7749
FROM t2)
 
7750
ORDER BY col_datetime_key LIMIT 4;
 
7751
col_varchar_key
 
7752
v
 
7753
y
 
7754
v
 
7755
y
 
7756
DROP TABLE t1, t2;
 
7757
# End of test for bug#12818569.
 
7758
#
 
7759
# Bug#12803439: Assert in replace_subcondition() on update query
 
7760
#
 
7761
CREATE TABLE t1(a INTEGER);
 
7762
INSERT INTO t1 values(1), (2);
 
7763
CREATE TABLE t2(a INTEGER);
 
7764
INSERT INTO t2 VALUES(1), (3);
 
7765
SELECT *
 
7766
FROM t1
 
7767
WHERE a IN (SELECT a
 
7768
FROM t2
 
7769
HAVING a IN (SELECT a
 
7770
FROM t2)
 
7771
)
 
7772
HAVING a IN (SELECT a
 
7773
FROM t2);
 
7774
a
 
7775
1
 
7776
DROP TABLE t1, t2;
 
7777
# End of test for bug#12803439.
 
7778
#
 
7779
# Bug#12797534: Segfault in hp_movelink still exists
 
7780
#
 
7781
CREATE TABLE t1 (
 
7782
g1 VARCHAR(1) NOT NULL
 
7783
) ENGINE=InnoDB;
 
7784
INSERT INTO t1 VALUES ('d'), ('s');
 
7785
CREATE TABLE t2 (
 
7786
pk INT NOT NULL,
 
7787
col_int_key INT NOT NULL,
 
7788
col_varchar_key VARCHAR(1) NOT NULL,
 
7789
col_varchar_nokey VARCHAR(1) NOT NULL,
 
7790
PRIMARY KEY (pk),
 
7791
KEY col_varchar_key(col_varchar_key, col_int_key)
 
7792
) ENGINE=InnoDB;
 
7793
INSERT INTO t2 VALUES
 
7794
(1,4,'j','j'), (2,6,'v','v'), (3,3,'c','c'), (4,5,'m','m'),
 
7795
(5,3,'d','d'), (6,246,'d','d'), (7,2,'y','y'), (8,9,'t','t'),
 
7796
(9,3,'d','d'), (10,8,'s','s'), (11,1,'r','r'), (12,8,'m','m'),
 
7797
(13,8,'b','b'), (14,5,'x','x'), (15,7,'g','g'), (16,5,'p','p'),
 
7798
(17,1,'q','q'), (18,6,'w','w'), (19,2,'d','d'), (20,9,'e','e');
 
7799
CREATE TABLE t3 (
 
7800
pk INTEGER NOT NULL,
 
7801
PRIMARY KEY (pk)
 
7802
) ENGINE=InnoDB;
 
7803
INSERT INTO t3 VALUES (10);
 
7804
EXPLAIN SELECT *
 
7805
FROM t1
 
7806
WHERE g1 NOT IN
 
7807
(SELECT  grandparent1.col_varchar_nokey AS g1
 
7808
FROM t2 AS grandparent1
 
7809
WHERE grandparent1.col_varchar_key IN
 
7810
(SELECT parent1.col_varchar_nokey AS p1
 
7811
FROM t2 AS parent1 LEFT JOIN t3 AS parent2 USING (pk)
 
7812
)
 
7813
AND grandparent1.col_varchar_key IS NOT NULL
 
7814
);
 
7815
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
7816
1       PRIMARY t1      ALL     NULL    NULL    NULL    NULL    2       Using where
 
7817
2       SUBQUERY        parent1 ALL     NULL    NULL    NULL    NULL    20      Start temporary
 
7818
2       SUBQUERY        parent2 eq_ref  PRIMARY PRIMARY 4       test.parent1.pk 1       Using index
 
7819
2       SUBQUERY        grandparent1    ref     col_varchar_key col_varchar_key 3       test.parent1.col_varchar_nokey  1       Using where; End temporary
 
7820
SELECT *
 
7821
FROM t1
 
7822
WHERE g1 NOT IN
 
7823
(SELECT  grandparent1.col_varchar_nokey AS g1
 
7824
FROM t2 AS grandparent1
 
7825
WHERE grandparent1.col_varchar_key IN
 
7826
(SELECT parent1.col_varchar_nokey AS p1
 
7827
FROM t2 AS parent1 LEFT JOIN t3 AS parent2 USING (pk)
 
7828
)
 
7829
AND grandparent1.col_varchar_key IS NOT NULL
 
7830
);
 
7831
g1
 
7832
DROP TABLE t1, t2, t3;
 
7833
CREATE TABLE t1 (
 
7834
pk INTEGER AUTO_INCREMENT,
 
7835
col_int_key INTEGER ,
 
7836
col_varchar_key VARCHAR(1) ,
 
7837
col_varchar_nokey VARCHAR(1) ,
 
7838
PRIMARY KEY (pk),
 
7839
KEY (col_varchar_key,col_int_key)
 
7840
) ENGINE=INNODB;
 
7841
INSERT INTO t1 (col_int_key,col_varchar_key,col_varchar_nokey) VALUES
 
7842
(0,'x','x'), (1,'j','j'), (1,'r','r'), (9,'v','v'), (5,'r','r');
 
7843
CREATE TABLE t2 (
 
7844
pk INTEGER AUTO_INCREMENT,
 
7845
col_int_key INTEGER ,
 
7846
col_varchar_key VARCHAR(1) ,
 
7847
col_varchar_nokey VARCHAR(1) ,
 
7848
PRIMARY KEY (pk),
 
7849
KEY (col_int_key),
 
7850
KEY (col_varchar_key,col_int_key)
 
7851
) AUTO_INCREMENT=10 ENGINE=INNODB;
 
7852
INSERT INTO t2 (col_int_key, col_varchar_key, col_varchar_nokey) VALUES
 
7853
(NULL,'x','x'), (NULL,'j','j'), (8,'c','c');
 
7854
CREATE TABLE t3
 
7855
SELECT outr.col_varchar_nokey AS x
 
7856
FROM t1 AS outr
 
7857
WHERE outr.col_varchar_nokey IN
 
7858
(SELECT innr.col_varchar_nokey AS y
 
7859
FROM t2 AS innr
 
7860
WHERE innr.col_int_key IS NULL)
 
7861
AND outr.col_varchar_nokey IS NOT NULL
 
7862
AND NOT col_varchar_key IS NULL;
 
7863
SELECT *
 
7864
FROM t3
 
7865
WHERE x NOT IN
 
7866
(SELECT outr.col_varchar_nokey AS x
 
7867
FROM t1 AS outr
 
7868
WHERE outr.col_varchar_nokey IN
 
7869
(SELECT innr.col_varchar_nokey AS y
 
7870
FROM t2 AS innr
 
7871
WHERE innr.col_int_key IS NULL)
 
7872
AND outr.col_varchar_nokey IS NOT NULL
 
7873
AND NOT col_varchar_key IS NULL);
 
7874
x
 
7875
DROP TABLE t1, t2, t3;
 
7876
# End of test for bug#12797534.
 
7877
#
 
7878
# Bug#12714094: Assert in optimize_semijoin_nests()
 
7879
#
 
7880
CREATE TABLE it (
 
7881
pk int NOT NULL,
 
7882
col_varchar VARCHAR(10) DEFAULT NULL,
 
7883
PRIMARY KEY (pk)
 
7884
) ENGINE=MyISAM;
 
7885
INSERT INTO it VALUES (1, 'g');
 
7886
CREATE TABLE ot
 
7887
SELECT alias1.pk AS field1
 
7888
FROM it AS alias1
 
7889
LEFT JOIN it AS alias2
 
7890
ON alias1.col_varchar = alias2.col_varchar
 
7891
;
 
7892
SELECT *
 
7893
FROM ot
 
7894
WHERE field1 IN (
 
7895
SELECT alias1.pk
 
7896
FROM it AS alias1
 
7897
LEFT JOIN it AS alias2
 
7898
ON alias1.col_varchar = alias2.col_varchar
 
7899
);
 
7900
field1
 
7901
1
 
7902
DROP TABLE it, ot;
 
7903
# End of test for bug#12714094
 
7904
#
 
7905
# Bug#12867557: Valgrind: conditional jump/move at key_cmp
 
7906
#
 
7907
CREATE TABLE t1 (
 
7908
pk INTEGER AUTO_INCREMENT,
 
7909
col_int_key INTEGER,
 
7910
PRIMARY KEY (pk),
 
7911
KEY (col_int_key)
 
7912
) AUTO_INCREMENT=10;
 
7913
INSERT INTO t1 (col_int_key) VALUES (8);
 
7914
CREATE TABLE t2 (
 
7915
pk INTEGER AUTO_INCREMENT,
 
7916
col_int_key INTEGER,
 
7917
col_time_key TIME,
 
7918
PRIMARY KEY (pk),
 
7919
KEY (col_int_key),
 
7920
KEY (col_time_key)
 
7921
)  AUTO_INCREMENT=10;
 
7922
INSERT INTO t2 (col_int_key, col_time_key)
 
7923
VALUES
 
7924
(8, '22:55:23.019225'), (7, '10:19:31.050677'), (1, '14:40:36.038608'),
 
7925
(7, '04:37:47.062416'), (9, '19:34:06.054514'), (NULL,'20:35:33.022996'),
 
7926
(1, NULL), (9, '14:43:37.057393'), (2, '02:23:09.043438'),
 
7927
(9, '01:22:45.041064'), (2, '00:00:00'), (4, '00:13:25.038482'),
 
7928
(0, '03:47:16.042671'), (4, '01:41:48.007423'), (8, '00:00:00'),
 
7929
(NULL, '22:32:04.047407'), (NULL, '16:44:14.028443'), (0, '17:38:37.059754'),
 
7930
(NULL, '08:46:48.042388'), (8, '14:11:27.044095');
 
7931
CREATE TABLE t0
 
7932
SELECT DISTINCT grandparent1.col_time_key AS g1
 
7933
FROM t2 AS grandparent1
 
7934
WHERE grandparent1.col_int_key IN
 
7935
(SELECT parent1.col_int_key AS p1
 
7936
FROM t1 AS parent1)
 
7937
AND grandparent1.pk > 9;
 
7938
UPDATE t0
 
7939
SET g1 = g1
 
7940
WHERE g1 IN
 
7941
(SELECT grandparent1.col_time_key AS g1
 
7942
FROM t2 AS grandparent1
 
7943
WHERE grandparent1.col_int_key IN
 
7944
(SELECT parent1.col_int_key AS p1
 
7945
FROM t1 AS parent1)
 
7946
AND grandparent1.pk > 9);
 
7947
DROP TABLE t0, t1, t2;
 
7948
# End of test for bug#12867557
 
7949
#
 
7950
# Bug#12711441: crash in fix_after_pullout
 
7951
#
 
7952
CREATE TABLE t1 (
 
7953
pk int NOT NULL,
 
7954
col_int_nokey int DEFAULT NULL,
 
7955
col_int_key int DEFAULT NULL,
 
7956
col_time_key time DEFAULT NULL,
 
7957
col_varchar_key varchar(1) DEFAULT NULL,
 
7958
PRIMARY KEY (pk)
 
7959
);
 
7960
CREATE VIEW v1 AS SELECT * FROM t1;
 
7961
CREATE TABLE t2 (
 
7962
col_int_key int DEFAULT NULL,
 
7963
col_varchar_key varchar(1) DEFAULT NULL,
 
7964
col_varchar_nokey varchar(1) DEFAULT NULL,
 
7965
KEY col_varchar_key(col_varchar_key, col_int_key)
 
7966
);
 
7967
CREATE TABLE t3 (
 
7968
pk int NOT NULL,
 
7969
col_int_key INT DEFAULT NULL,
 
7970
PRIMARY KEY (pk)
 
7971
);
 
7972
CREATE TABLE t4 (
 
7973
col_int_nokey INT DEFAULT NULL,
 
7974
col_varchar_key varchar(1) DEFAULT NULL,
 
7975
col_varchar_nokey varchar(1) DEFAULT NULL,
 
7976
KEY col_varchar_key(col_varchar_key)
 
7977
);
 
7978
CREATE TABLE ts
 
7979
SELECT alias1.col_time_key AS field1
 
7980
FROM v1 AS alias1
 
7981
RIGHT JOIN t3 AS alias2
 
7982
ON alias2.col_int_key = alias1.col_int_nokey
 
7983
WHERE alias1.pk >= SOME(
 
7984
SELECT SQ1_alias1.pk AS SQ1_field1
 
7985
FROM t3 AS SQ1_alias1
 
7986
INNER JOIN (t2 AS SQ1_alias2
 
7987
INNER JOIN t4 AS SQ1_alias3
 
7988
ON SQ1_alias3.col_varchar_key = SQ1_alias2.col_varchar_nokey)
 
7989
ON SQ1_alias3.col_int_nokey = SQ1_alias2.col_int_key
 
7990
WHERE SQ1_alias2.col_varchar_key <= alias1.col_varchar_key
 
7991
AND SQ1_alias3.col_varchar_nokey <> alias1.col_varchar_key)
 
7992
;
 
7993
SELECT * FROM ts WHERE field1 IN (
 
7994
SELECT alias1.col_time_key AS field1
 
7995
FROM v1 AS alias1
 
7996
RIGHT JOIN t3 AS alias2
 
7997
ON alias2.col_int_key = alias1.col_int_nokey
 
7998
WHERE alias1.pk >= SOME(
 
7999
SELECT SQ1_alias1.pk AS SQ1_field1
 
8000
FROM t3 AS SQ1_alias1
 
8001
INNER JOIN (t2 AS SQ1_alias2
 
8002
INNER JOIN t4 AS SQ1_alias3
 
8003
ON SQ1_alias3.col_varchar_key = SQ1_alias2.col_varchar_nokey)
 
8004
ON SQ1_alias3.col_int_nokey = SQ1_alias2.col_int_key
 
8005
WHERE SQ1_alias2.col_varchar_key <= alias1.col_varchar_key
 
8006
AND SQ1_alias3.col_varchar_nokey <> alias1.col_varchar_key)
 
8007
);
 
8008
field1
 
8009
DROP TABLE t1, t2, t3, t4, ts;
 
8010
DROP VIEW v1;
 
8011
# End of test for bug#12711441.
 
8012
#
 
8013
# Bug#12664936: Same query executed as where subquery ...
 
8014
#
 
8015
CREATE TABLE t1 (
 
8016
col_varchar_key VARCHAR(1),
 
8017
KEY col_varchar_key (col_varchar_key)
 
8018
);
 
8019
INSERT INTO t1 VALUES
 
8020
('o'), ('w'), ('m'), ('q'),
 
8021
('f'), ('p'), ('j'), ('c');
 
8022
CREATE TABLE t2 (
 
8023
col_int_nokey INTEGER,
 
8024
col_int_key INTEGER,
 
8025
col_varchar_key varchar(1),
 
8026
KEY col_int_key (col_int_key)
 
8027
);
 
8028
INSERT INTO t2 VALUES
 
8029
(8,5,'u'),(4,5,'p'),(8,1,'o'),(NULL,7,'v'),
 
8030
(1,2,'g'),(2,1,'q'),(NULL,7,'l'),(3,1,'n');
 
8031
CREATE TABLE t4
 
8032
SELECT t2.col_int_nokey, t2.col_varchar_key
 
8033
FROM t1 JOIN t2 ON t2.col_varchar_key = t1.col_varchar_key
 
8034
WHERE t2.col_int_key = 1;
 
8035
EXPLAIN SELECT *
 
8036
FROM t4
 
8037
WHERE (col_int_nokey, col_varchar_key) IN
 
8038
(SELECT t2.col_int_nokey, t2.col_varchar_key
 
8039
FROM t1 JOIN t2 ON t2.col_varchar_key = t1.col_varchar_key
 
8040
WHERE t2.col_int_key = 1
 
8041
);
 
8042
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
8043
1       SIMPLE  t4      ALL     NULL    NULL    NULL    NULL    2       Using where
 
8044
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      9       test.t4.col_int_nokey,test.t4.col_varchar_key   1       NULL
 
8045
2       MATERIALIZED    t2      ref     col_int_key     col_int_key     5       const   3       Using where
 
8046
2       MATERIALIZED    t1      ref     col_varchar_key col_varchar_key 4       test.t2.col_varchar_key 2       Using index
 
8047
SELECT *
 
8048
FROM t4
 
8049
WHERE (col_int_nokey, col_varchar_key) IN
 
8050
(SELECT t2.col_int_nokey, t2.col_varchar_key
 
8051
FROM t1 JOIN t2 ON t2.col_varchar_key = t1.col_varchar_key
 
8052
WHERE t2.col_int_key = 1
 
8053
);
 
8054
col_int_nokey   col_varchar_key
 
8055
8       o
 
8056
2       q
 
8057
DROP TABLE t1, t2, t4;
 
8058
# End of test for bug#12664936.
 
8059
#
 
8060
# Bug#13340270: assertion table->sort.record_pointers == __null
 
8061
#
 
8062
CREATE TABLE t1 (
 
8063
pk int NOT NULL,
 
8064
col_int_key int DEFAULT NULL,
 
8065
col_varchar_key varchar(1) DEFAULT NULL,
 
8066
col_varchar_nokey varchar(1) DEFAULT NULL,
 
8067
PRIMARY KEY (pk),
 
8068
KEY col_int_key (col_int_key),
 
8069
KEY col_varchar_key (col_varchar_key, col_int_key)
 
8070
) ENGINE=InnoDB;
 
8071
INSERT INTO t1 VALUES
 
8072
(10,8,'x','x'),
 
8073
(11,7,'d','d'),
 
8074
(12,1,'r','r'),
 
8075
(13,7,'f','f'),
 
8076
(14,9,'y','y'),
 
8077
(15,NULL,'u','u'),
 
8078
(16,1,'m','m'),
 
8079
(17,9,NULL,NULL),
 
8080
(18,2,'o','o'),
 
8081
(19,9,'w','w'),
 
8082
(20,2,'m','m'),
 
8083
(21,4,'q','q');
 
8084
CREATE TABLE t2
 
8085
SELECT alias1.col_varchar_nokey AS field1
 
8086
FROM t1 AS alias1 JOIN t1 AS alias2
 
8087
ON alias2.col_int_key = alias1.pk OR
 
8088
alias2.col_int_key = alias1.col_int_key
 
8089
WHERE alias1.pk = 58 OR alias1.col_varchar_key = 'o'
 
8090
 
 
8091
;
 
8092
EXPLAIN SELECT *
 
8093
FROM t2
 
8094
WHERE (field1) IN (SELECT alias1.col_varchar_nokey AS field1
 
8095
FROM t1 AS alias1 JOIN t1 AS alias2
 
8096
ON alias2.col_int_key = alias1.pk OR
 
8097
alias2.col_int_key = alias1.col_int_key
 
8098
WHERE alias1.pk = 58 OR alias1.col_varchar_key = 'o'
 
8099
);
 
8100
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
8101
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    2       Using where
 
8102
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      4       test.t2.field1  1       NULL
 
8103
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
 
8104
2       MATERIALIZED    alias2  ALL     col_int_key     NULL    NULL    NULL    12      Range checked for each record (index map: 0x2)
 
8105
SELECT *
 
8106
FROM t2
 
8107
WHERE (field1) IN (SELECT alias1.col_varchar_nokey AS field1
 
8108
FROM t1 AS alias1 JOIN t1 AS alias2
 
8109
ON alias2.col_int_key = alias1.pk OR
 
8110
alias2.col_int_key = alias1.col_int_key
 
8111
WHERE alias1.pk = 58 OR alias1.col_varchar_key = 'o'
 
8112
);
 
8113
field1
 
8114
o
 
8115
o
 
8116
DROP TABLE t1, t2;
 
8117
# End of test for bug#13340270.
 
8118
#
 
8119
# Bug#13335319: Seg fault when analyzing FirstMatch semi-join strategy
 
8120
#
 
8121
CREATE TABLE ot1(a INTEGER);
 
8122
INSERT INTO ot1 VALUES(1), (2), (3);
 
8123
CREATE TABLE ot2(a INTEGER);
 
8124
INSERT INTO ot2 VALUES(1), (2), (4), (6), (8), (10);
 
8125
CREATE TABLE it1(a INTEGER);
 
8126
INSERT INTO it1 VALUES(1), (3), (5), (7);
 
8127
CREATE TABLE it2(a INTEGER);
 
8128
INSERT INTO it2 VALUES(1), (3), (5), (7), (9);
 
8129
explain SELECT ot1.a, ot2.a
 
8130
FROM ot1, ot2
 
8131
WHERE ot1.a IN (SELECT a FROM it1) AND
 
8132
ot2.a IN (SELECT a FROM it2);
 
8133
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
8134
1       SIMPLE  ot1     ALL     NULL    NULL    NULL    NULL    3       Using where
 
8135
1       SIMPLE  ot2     ALL     NULL    NULL    NULL    NULL    6       Using where; Using join buffer (Block Nested Loop)
 
8136
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      5       test.ot1.a      1       NULL
 
8137
1       SIMPLE  <subquery3>     eq_ref  <auto_key>      <auto_key>      5       test.ot2.a      1       NULL
 
8138
2       MATERIALIZED    it1     ALL     NULL    NULL    NULL    NULL    4       NULL
 
8139
3       MATERIALIZED    it2     ALL     NULL    NULL    NULL    NULL    5       NULL
 
8140
SELECT ot1.a, ot2.a
 
8141
FROM ot1, ot2
 
8142
WHERE ot1.a IN (SELECT a FROM it1) AND
 
8143
ot2.a IN (SELECT a FROM it2);
 
8144
a       a
 
8145
1       1
 
8146
3       1
 
8147
DROP TABLE ot1, ot2, it1, it2;
 
8148
# End of test for bug#13335319.
 
8149
#
 
8150
# Bug#13334882: Assertion keypart_map failed in MyIsam function
 
8151
#
 
8152
CREATE TABLE t1 (
 
8153
pk int NOT NULL,
 
8154
col_int_nokey INT NOT NULL,
 
8155
col_int_key INT NOT NULL,
 
8156
PRIMARY KEY (pk),
 
8157
KEY col_int_key (col_int_key)
 
8158
) ENGINE=MyISAM;
 
8159
INSERT INTO t1 VALUES
 
8160
(1,4,0),
 
8161
(2,6,8),
 
8162
(3,3,1),
 
8163
(7,2,6),
 
8164
(8,9,1),
 
8165
(9,3,6),
 
8166
(10,8,2),
 
8167
(11,1,4),
 
8168
(12,8,8),
 
8169
(13,8,4),
 
8170
(14,5,4);
 
8171
CREATE TABLE t2 (
 
8172
pk int NOT NULL,
 
8173
col_int_nokey int NOT NULL,
 
8174
col_int_key int NOT NULL,
 
8175
PRIMARY KEY (pk),
 
8176
KEY col_int_key (col_int_key)
 
8177
) ENGINE=MyISAM;
 
8178
INSERT INTO t2 VALUES
 
8179
(10,8,7);
 
8180
CREATE TABLE t3
 
8181
SELECT grandparent1.col_int_nokey AS g1
 
8182
FROM t1 AS grandparent1
 
8183
WHERE (grandparent1.col_int_nokey, grandparent1.col_int_key) IN
 
8184
(SELECT parent1.col_int_key AS p1,
 
8185
parent1.col_int_key AS p2
 
8186
FROM t1 AS parent1
 
8187
LEFT JOIN t2 AS parent2
 
8188
ON parent1.col_int_nokey = parent2.col_int_key
 
8189
)
 
8190
AND grandparent1.col_int_key <> 3
 
8191
;
 
8192
explain SELECT * FROM t3
 
8193
WHERE g1 NOT IN
 
8194
(SELECT grandparent1.col_int_nokey AS g1
 
8195
FROM t1 AS grandparent1
 
8196
WHERE (grandparent1.col_int_nokey, grandparent1.col_int_key) IN
 
8197
(SELECT parent1.col_int_key AS p1,
 
8198
parent1.col_int_key AS p2
 
8199
FROM t1 AS parent1
 
8200
LEFT JOIN t2 AS parent2
 
8201
ON parent1.col_int_nokey = parent2.col_int_key
 
8202
)
 
8203
AND grandparent1.col_int_key <> 3
 
8204
);
 
8205
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
8206
1       PRIMARY NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
8207
2       DEPENDENT SUBQUERY      grandparent1    ref     col_int_key     col_int_key     4       func    2       Using where
 
8208
2       DEPENDENT SUBQUERY      <subquery3>     eq_ref  <auto_key>      <auto_key>      8       test.grandparent1.col_int_nokey,test.grandparent1.col_int_nokey 1       NULL
 
8209
3       MATERIALIZED    parent1 ref     col_int_key     col_int_key     4       func    2       NULL
 
8210
3       MATERIALIZED    parent2 index   col_int_key     col_int_key     4       NULL    1       Using where; Using index; Using join buffer (Block Nested Loop)
 
8211
explain format=json SELECT * FROM t3
 
8212
WHERE g1 NOT IN
 
8213
(SELECT grandparent1.col_int_nokey AS g1
 
8214
FROM t1 AS grandparent1
 
8215
WHERE (grandparent1.col_int_nokey, grandparent1.col_int_key) IN
 
8216
(SELECT parent1.col_int_key AS p1,
 
8217
parent1.col_int_key AS p2
 
8218
FROM t1 AS parent1
 
8219
LEFT JOIN t2 AS parent2
 
8220
ON parent1.col_int_nokey = parent2.col_int_key
 
8221
)
 
8222
AND grandparent1.col_int_key <> 3
 
8223
);
 
8224
EXPLAIN
 
8225
{
 
8226
  "query_block": {
 
8227
    "select_id": 1,
 
8228
    "table": {
 
8229
      "message": "Impossible WHERE noticed after reading const tables",
 
8230
      "attached_subqueries": [
 
8231
        {
 
8232
          "dependent": true,
 
8233
          "cacheable": false,
 
8234
          "query_block": {
 
8235
            "select_id": 3,
 
8236
            "nested_loop": [
 
8237
              {
 
8238
                "table": {
 
8239
                  "table_name": "grandparent1",
 
8240
                  "access_type": "ref",
 
8241
                  "possible_keys": [
 
8242
                    "col_int_key"
 
8243
                  ],
 
8244
                  "key": "col_int_key",
 
8245
                  "used_key_parts": [
 
8246
                    "col_int_key"
 
8247
                  ],
 
8248
                  "key_length": "4",
 
8249
                  "ref": [
 
8250
                    "func"
 
8251
                  ],
 
8252
                  "rows": 2,
 
8253
                  "filtered": 100,
 
8254
                  "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)))"
 
8255
                }
 
8256
              },
 
8257
              {
 
8258
                "table": {
 
8259
                  "table_name": "<subquery3>",
 
8260
                  "access_type": "eq_ref",
 
8261
                  "key": "<auto_key>",
 
8262
                  "key_length": "8",
 
8263
                  "ref": [
 
8264
                    "test.grandparent1.col_int_nokey",
 
8265
                    "test.grandparent1.col_int_nokey"
 
8266
                  ],
 
8267
                  "rows": 1,
 
8268
                  "materialized_from_subquery": {
 
8269
                    "using_temporary_table": true,
 
8270
                    "query_block": {
 
8271
                      "nested_loop": [
 
8272
                        {
 
8273
                          "table": {
 
8274
                            "table_name": "parent1",
 
8275
                            "access_type": "ref",
 
8276
                            "possible_keys": [
 
8277
                              "col_int_key"
 
8278
                            ],
 
8279
                            "key": "col_int_key",
 
8280
                            "used_key_parts": [
 
8281
                              "col_int_key"
 
8282
                            ],
 
8283
                            "key_length": "4",
 
8284
                            "ref": [
 
8285
                              "func"
 
8286
                            ],
 
8287
                            "rows": 2,
 
8288
                            "filtered": 100
 
8289
                          }
 
8290
                        },
 
8291
                        {
 
8292
                          "table": {
 
8293
                            "table_name": "parent2",
 
8294
                            "access_type": "index",
 
8295
                            "possible_keys": [
 
8296
                              "col_int_key"
 
8297
                            ],
 
8298
                            "key": "col_int_key",
 
8299
                            "used_key_parts": [
 
8300
                              "col_int_key"
 
8301
                            ],
 
8302
                            "key_length": "4",
 
8303
                            "rows": 1,
 
8304
                            "filtered": 100,
 
8305
                            "using_index": true,
 
8306
                            "using_join_buffer": "Block Nested Loop",
 
8307
                            "attached_condition": "<if>(is_not_null_compl(parent2), (`test`.`parent1`.`col_int_nokey` = `test`.`parent2`.`col_int_key`), true)"
 
8308
                          }
 
8309
                        }
 
8310
                      ]
 
8311
                    }
 
8312
                  }
 
8313
                }
 
8314
              }
 
8315
            ]
 
8316
          }
 
8317
        }
 
8318
      ]
 
8319
    }
 
8320
  }
 
8321
}
 
8322
Warnings:
 
8323
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`))))))
 
8324
SELECT * FROM t3
 
8325
WHERE g1 NOT IN
 
8326
(SELECT grandparent1.col_int_nokey AS g1
 
8327
FROM t1 AS grandparent1
 
8328
WHERE (grandparent1.col_int_nokey, grandparent1.col_int_key) IN
 
8329
(SELECT parent1.col_int_key AS p1,
 
8330
parent1.col_int_key AS p2
 
8331
FROM t1 AS parent1
 
8332
LEFT JOIN t2 AS parent2
 
8333
ON parent1.col_int_nokey = parent2.col_int_key
 
8334
)
 
8335
AND grandparent1.col_int_key <> 3
 
8336
);
 
8337
g1
 
8338
DROP TABLE t1, t2, t3;
 
8339
# End of test for bug#13334882.
 
8340
#
 
8341
# Bug#13339643: Assertion on JOIN::flatten_subqueries on second execution
 
8342
#
 
8343
CREATE TABLE t1 (
 
8344
col_int_nokey INT,
 
8345
col_varchar_nokey VARCHAR(1)
 
8346
);
 
8347
INSERT INTO t1 VALUES
 
8348
(1,'o'),
 
8349
(2,'t');
 
8350
CREATE TABLE t2 LIKE t1;
 
8351
INSERT INTO t2 VALUES
 
8352
(1,'o'),
 
8353
(4,'f');
 
8354
CREATE VIEW v_t2 AS SELECT * FROM t2;
 
8355
CREATE TABLE t3 LIKE t1;
 
8356
INSERT INTO t3 VALUES
 
8357
(1,'o'),
 
8358
(4,'f');
 
8359
explain SELECT alias1.col_varchar_nokey
 
8360
FROM t1 AS alias1
 
8361
INNER JOIN v_t2 AS alias2
 
8362
ON alias2.col_int_nokey = alias1.col_int_nokey AND
 
8363
'o' IN (SELECT col_varchar_nokey
 
8364
FROM t3);
 
8365
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
8366
1       SIMPLE  <subquery2>     const   <auto_key>      <auto_key>      4       const   1       Using where
 
8367
1       SIMPLE  alias1  ALL     NULL    NULL    NULL    NULL    2       Using join buffer (Block Nested Loop)
 
8368
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
8369
2       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    2       Using where
 
8370
SELECT alias1.col_varchar_nokey
 
8371
FROM t1 AS alias1
 
8372
INNER JOIN v_t2 AS alias2
 
8373
ON alias2.col_int_nokey = alias1.col_int_nokey AND
 
8374
'o' IN (SELECT col_varchar_nokey
 
8375
FROM t3);
 
8376
col_varchar_nokey
 
8377
o
 
8378
PREPARE stmt FROM "SELECT alias1.col_varchar_nokey
 
8379
FROM t1 AS alias1
 
8380
INNER JOIN v_t2 AS alias2
 
8381
ON alias2.col_int_nokey = alias1.col_int_nokey AND
 
8382
'o' IN (SELECT col_varchar_nokey
 
8383
FROM t3)";
 
8384
EXECUTE stmt;
 
8385
col_varchar_nokey
 
8386
o
 
8387
DROP VIEW v_t2;
 
8388
DROP TABLE t1, t2, t3;
 
8389
# End of test for bug#13339643.
 
8390
#
 
8391
# Bug#13424134: Wrong result on JOIN + nested WHERE ... IN clauses
 
8392
#
 
8393
CREATE TABLE t1 (
 
8394
pk int NOT NULL,
 
8395
col_int_nokey int NOT NULL,
 
8396
col_int_key int NOT NULL,
 
8397
PRIMARY KEY (pk),
 
8398
KEY col_int_key (col_int_key)
 
8399
) ENGINE=MyIsam;
 
8400
INSERT INTO t1 VALUES
 
8401
(10,1,7), (13,7,3), (18,0,1), (23,8,1);
 
8402
CREATE TABLE t2 (
 
8403
pk int NOT NULL,
 
8404
col_int_key int NOT NULL,
 
8405
PRIMARY KEY (pk),
 
8406
KEY col_int_key (col_int_key)
 
8407
) ENGINE=MyIsam;
 
8408
INSERT INTO t2 VALUES (1,7);
 
8409
EXPLAIN SELECT t1a.*
 
8410
FROM t1 AS t1a
 
8411
JOIN t1 AS t1b USING ( col_int_nokey )
 
8412
WHERE t1a.col_int_key IN (
 
8413
SELECT pk
 
8414
FROM t2
 
8415
WHERE col_int_key IN (
 
8416
SELECT col_int_nokey
 
8417
FROM t1
 
8418
)
 
8419
);
 
8420
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
8421
1       SIMPLE  t2      system  PRIMARY,col_int_key     NULL    NULL    NULL    1       NULL
 
8422
1       SIMPLE  t1a     ref     col_int_key     col_int_key     4       const   1       Start temporary
 
8423
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    4       Using where; End temporary; Using join buffer (Block Nested Loop)
 
8424
1       SIMPLE  t1b     ALL     NULL    NULL    NULL    NULL    4       Using where; Using join buffer (Block Nested Loop)
 
8425
SELECT t1a.*
 
8426
FROM t1 AS t1a
 
8427
JOIN t1 AS t1b USING ( col_int_nokey )
 
8428
WHERE t1a.col_int_key IN (
 
8429
SELECT pk
 
8430
FROM t2
 
8431
WHERE col_int_key IN (
 
8432
SELECT col_int_nokey
 
8433
FROM t1
 
8434
)
 
8435
);
 
8436
pk      col_int_nokey   col_int_key
 
8437
18      0       1
 
8438
23      8       1
 
8439
ALTER TABLE t1 ENGINE=Innodb;
 
8440
ALTER TABLE t2 ENGINE=Innodb;
 
8441
SELECT t1a.*
 
8442
FROM t1 AS t1a
 
8443
JOIN t1 AS t1b USING ( col_int_nokey )
 
8444
WHERE t1a.col_int_key IN (
 
8445
SELECT pk
 
8446
FROM t2
 
8447
WHERE col_int_key IN (
 
8448
SELECT col_int_nokey
 
8449
FROM t1
 
8450
)
 
8451
);
 
8452
pk      col_int_nokey   col_int_key
 
8453
18      0       1
 
8454
23      8       1
 
8455
DROP TABLE t1, t2;
 
8456
# End of test for bug#13424134.
 
8457
#
 
8458
# Bug#13414014: Extra rows in result on semijoin query with where ...
 
8459
#
 
8460
CREATE TABLE t1 (
 
8461
c INT,
 
8462
d INT,
 
8463
a VARCHAR(1),
 
8464
b VARCHAR(1),
 
8465
KEY a (a)
 
8466
);
 
8467
INSERT INTO t1 VALUES
 
8468
(NULL,8,'x','x'), (7,4,'q','q'), (6,8,'c','c');
 
8469
CREATE TABLE t2 (
 
8470
a VARCHAR(1),
 
8471
KEY a (a)
 
8472
);
 
8473
INSERT INTO t2 VALUES
 
8474
('c'), (NULL), ('x'), ('q');
 
8475
explain SELECT *
 
8476
FROM t2 AS ot
 
8477
WHERE (a, a) IN
 
8478
(SELECT a, b
 
8479
FROM t1 AS it
 
8480
WHERE it.a = 'x' OR it.c > it.d
 
8481
)
 
8482
;
 
8483
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
8484
1       SIMPLE  ot      index   a       a       4       NULL    4       Using where; Using index
 
8485
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      8       test.ot.a,test.ot.a     1       NULL
 
8486
2       MATERIALIZED    it      ALL     a       NULL    NULL    NULL    3       Using where
 
8487
SELECT *
 
8488
FROM t2 AS ot
 
8489
WHERE (a, a) IN
 
8490
(SELECT a, b
 
8491
FROM t1 AS it
 
8492
WHERE it.a = 'x' OR it.c > it.d
 
8493
)
 
8494
;
 
8495
a
 
8496
q
 
8497
x
 
8498
DROP TABLE t1, t2;
 
8499
# End of test for bug#13414014.
 
8500
#
 
8501
# Bug#13545215: Missing rows on nested in-subquery with materialization
 
8502
#
 
8503
CREATE TABLE t1 (
 
8504
col_int_key int,
 
8505
col_varchar_key varchar(1),
 
8506
col_varchar_nokey varchar(1),
 
8507
KEY col_int_key (col_int_key),
 
8508
KEY col_varchar_key (col_varchar_key,col_int_key)
 
8509
) ;
 
8510
INSERT INTO t1 VALUES
 
8511
(8,'x','x'), (0,'p','p'), (8,'c','c');
 
8512
CREATE TABLE t2 (
 
8513
pk int NOT NULL,
 
8514
col_varchar_key varchar(1),
 
8515
col_varchar_nokey varchar(1),
 
8516
PRIMARY KEY (pk),
 
8517
KEY col_varchar_key (col_varchar_key)
 
8518
);
 
8519
INSERT INTO t2 VALUES
 
8520
(1,'v','v'), (2,'v','v'), (3,'c','c'), (4,NULL,NULL),
 
8521
(5,'x','x'), (6,'i','i'), (7,'e','e'), (8,'p','p');
 
8522
CREATE TABLE t3 (
 
8523
col_int_nokey int
 
8524
);
 
8525
INSERT INTO t3 VALUES (7);
 
8526
explain SELECT grandparent1.col_varchar_nokey
 
8527
FROM t1 AS grandparent1 JOIN t1 AS grandparent2 USING (col_int_key)
 
8528
WHERE grandparent1.col_varchar_key IN (
 
8529
SELECT col_varchar_nokey
 
8530
FROM t2 AS parent1
 
8531
WHERE col_varchar_key IN (
 
8532
SELECT child1.col_varchar_nokey
 
8533
FROM t2 AS child1 LEFT JOIN t3 AS child2
 
8534
ON child1.pk < child2.col_int_nokey
 
8535
)
 
8536
);
 
8537
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
8538
1       SIMPLE  grandparent1    ALL     col_int_key,col_varchar_key     NULL    NULL    NULL    3       Using where
 
8539
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      4       test.grandparent1.col_varchar_key       1       NULL
 
8540
1       SIMPLE  grandparent2    index   col_int_key     col_int_key     5       NULL    3       Using where; Using index; Using join buffer (Block Nested Loop)
 
8541
2       MATERIALIZED    child1  ALL     NULL    NULL    NULL    NULL    8       NULL
 
8542
2       MATERIALIZED    child2  ALL     NULL    NULL    NULL    NULL    1       Using where; Using join buffer (Block Nested Loop)
 
8543
2       MATERIALIZED    parent1 ALL     col_varchar_key NULL    NULL    NULL    8       Using where; Using join buffer (Block Nested Loop)
 
8544
SELECT grandparent1.col_varchar_nokey
 
8545
FROM t1 AS grandparent1 JOIN t1 AS grandparent2 USING (col_int_key)
 
8546
WHERE grandparent1.col_varchar_key IN (
 
8547
SELECT col_varchar_nokey
 
8548
FROM t2 AS parent1
 
8549
WHERE col_varchar_key IN (
 
8550
SELECT child1.col_varchar_nokey
 
8551
FROM t2 AS child1 LEFT JOIN t3 AS child2
 
8552
ON child1.pk < child2.col_int_nokey
 
8553
)
 
8554
);
 
8555
col_varchar_nokey
 
8556
c
 
8557
c
 
8558
p
 
8559
x
 
8560
x
 
8561
DROP TABLE t1, t2, t3;
 
8562
# End of test for bug#13545215.
 
8563
#
 
8564
# BUG#13553211 - MISSING ROWS ON SELECT WITH IN-SUBQUERY AND
 
8565
# MATERIALIZATION + SEMIJOIN ON
 
8566
#
 
8567
CREATE TABLE t1 (
 
8568
col_int_key int(11) DEFAULT NULL,
 
8569
col_varchar_key varchar(1) DEFAULT NULL,
 
8570
col_varchar_nokey varchar(1) DEFAULT NULL,
 
8571
KEY col_int_key (col_int_key),
 
8572
KEY col_varchar_key (col_varchar_key,col_int_key)
 
8573
);
 
8574
INSERT INTO t1 VALUES (4,'v','v');
 
8575
INSERT INTO t1 VALUES (62,'v','v');
 
8576
INSERT INTO t1 VALUES (7,'c','c');
 
8577
INSERT INTO t1 VALUES (1,NULL,NULL);
 
8578
EXPLAIN SELECT
 
8579
alias1.col_varchar_nokey AS a1_nokey,
 
8580
alias1.col_varchar_key AS a1_key,
 
8581
alias2.col_varchar_nokey AS a2_nokey
 
8582
FROM
 
8583
t1 AS alias1, t1 AS alias2
 
8584
WHERE
 
8585
(alias1.col_varchar_nokey,alias2.col_varchar_nokey)
 
8586
IN
 
8587
(
 
8588
SELECT
 
8589
SQ2_alias2.col_varchar_nokey, SQ2_alias1.col_varchar_key
 
8590
FROM
 
8591
t1 AS SQ2_alias1, t1 AS SQ2_alias2
 
8592
)
 
8593
;
 
8594
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
8595
1       SIMPLE  alias1  ALL     NULL    NULL    NULL    NULL    4       Using where
 
8596
1       SIMPLE  alias2  ALL     NULL    NULL    NULL    NULL    4       Using where; Using join buffer (Block Nested Loop)
 
8597
1       SIMPLE  <subquery2>     eq_ref  <auto_key>      <auto_key>      8       test.alias1.col_varchar_nokey,test.alias2.col_varchar_nokey     1       NULL
 
8598
2       MATERIALIZED    SQ2_alias1      index   col_varchar_key col_varchar_key 9       NULL    4       Using index
 
8599
2       MATERIALIZED    SQ2_alias2      ALL     NULL    NULL    NULL    NULL    4       Using join buffer (Block Nested Loop)
 
8600
SELECT
 
8601
alias1.col_varchar_nokey AS a1_nokey,
 
8602
alias1.col_varchar_key AS a1_key,
 
8603
alias2.col_varchar_nokey AS a2_nokey
 
8604
FROM
 
8605
t1 AS alias1, t1 AS alias2
 
8606
WHERE
 
8607
(alias1.col_varchar_nokey,alias2.col_varchar_nokey)
 
8608
IN
 
8609
(
 
8610
SELECT
 
8611
SQ2_alias2.col_varchar_nokey, SQ2_alias1.col_varchar_key
 
8612
FROM
 
8613
t1 AS SQ2_alias1, t1 AS SQ2_alias2
 
8614
)
 
8615
;
 
8616
a1_nokey        a1_key  a2_nokey
 
8617
c       c       c
 
8618
c       c       v
 
8619
c       c       v
 
8620
v       v       c
 
8621
v       v       c
 
8622
v       v       v
 
8623
v       v       v
 
8624
v       v       v
 
8625
v       v       v
 
8626
DROP TABLE t1;
 
8627
#
 
8628
# Bug#13541406: Wrong result with loosescan on select .. where .. in
 
8629
#
 
8630
CREATE TABLE t1 (
 
8631
col_int_key INT NOT NULL,
 
8632
col_varchar_nokey VARCHAR(1) NOT NULL,
 
8633
KEY col_int_key (col_int_key)
 
8634
) ENGINE=InnoDB;
 
8635
INSERT INTO t1 VALUES
 
8636
(7,'v'), (0,'s'), (9,'l'), (3,'y'), (4,'c'), (2,'i'), (5,'h'), (3,'q'),
 
8637
(1,'a'), (3,'v'), (6,'u'), (7,'s'), (5,'y'), (1,'z'), (204,'h'), (224,'p'),
 
8638
(9,'e'), (5,'i'), (0,'y'), (3,'w');
 
8639
CREATE TABLE t2 (
 
8640
pk INT NOT NULL,
 
8641
col_int_key INT NOT NULL,
 
8642
col_varchar_key VARCHAR(1) NOT NULL,
 
8643
col_varchar_nokey VARCHAR(1) NOT NULL,
 
8644
PRIMARY KEY (pk),
 
8645
KEY col_int_key (col_int_key),
 
8646
KEY col_varchar_key (col_varchar_key,col_int_key)
 
8647
) ENGINE=InnoDB;
 
8648
INSERT INTO t2 VALUES
 
8649
(1,0,'j','j'), (2,8,'v','v'), (3,1,'c','c'), (4,8,'m','m'),
 
8650
(5,9,'d','d'), (6,24,'d','d'), (7,6,'y','y'), (8,1,'t','t'),
 
8651
(9,6,'d','d'), (10,2,'s','s'), (11,4,'r','r'), (12,8,'m','m'),
 
8652
(13,4,'b','b'), (14,4,'x','x'), (15,7,'g','g'), (16,4,'p','p'),
 
8653
(17,1,'q','q'), (18,9,'w','w'), (19,4,'d','d'), (20,8,'e','e');
 
8654
# This query should never use a LooseScan strategy
 
8655
explain SELECT ot1.col_int_key AS field1
 
8656
FROM t2 AS ot1, t2 AS ot2
 
8657
WHERE (ot1.col_varchar_key, ot2.col_varchar_nokey) IN (
 
8658
SELECT it2.col_varchar_nokey, it1.col_varchar_key
 
8659
FROM t2 AS it1 JOIN t1 AS it2 ON it2.col_int_key = it1.pk);
 
8660
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
8661
1       SIMPLE  ot2     ALL     NULL    NULL    NULL    NULL    20      Start temporary
 
8662
1       SIMPLE  it1     ref     PRIMARY,col_varchar_key col_varchar_key 3       test.ot2.col_varchar_nokey      1       Using index
 
8663
1       SIMPLE  it2     ref     col_int_key     col_int_key     4       test.it1.pk     1       NULL
 
8664
1       SIMPLE  ot1     ref     col_varchar_key col_varchar_key 3       test.it2.col_varchar_nokey      1       Using index; End temporary
 
8665
SELECT ot1.col_int_key AS field1
 
8666
FROM t2 AS ot1, t2 AS ot2
 
8667
WHERE (ot1.col_varchar_key, ot2.col_varchar_nokey) IN (
 
8668
SELECT it2.col_varchar_nokey, it1.col_varchar_key
 
8669
FROM t2 AS it1 JOIN t1 AS it2 ON it2.col_int_key = it1.pk);
 
8670
field1
 
8671
1
 
8672
1
 
8673
1
 
8674
2
 
8675
6
 
8676
6
 
8677
6
 
8678
6
 
8679
6
 
8680
8
 
8681
8
 
8682
8
 
8683
8
 
8684
8
 
8685
8
 
8686
9
 
8687
DROP TABLE t1, t2;
 
8688
# End of test for bug#13541406.
 
8689
#
 
8690
# Bug#13576391: Missing rows on select with in-subquery and
 
8691
# batched-key-access=on and semijoin
 
8692
#
 
8693
CREATE TABLE t1 (
 
8694
col_int_nokey int NOT NULL,
 
8695
col_varchar_key varchar(1) NOT NULL,
 
8696
KEY col_varchar_key (col_varchar_key)
 
8697
) engine=InnoDB;
 
8698
INSERT INTO t1 VALUES
 
8699
(1,'v'), (7,'s'), (4,'l'), (7,'y'), (0,'c'), (2,'i'), (9,'h'), (4,'q'),
 
8700
(0,'a'), (9,'v'), (1,'u'), (3,'s'), (8,'y'), (8,'z'), (18,'h'), (84,'p'),
 
8701
(6,'e'), (3,'i'), (6,'y'), (6,'w');
 
8702
CREATE TABLE t2 (
 
8703
col_int_nokey int NOT NULL,
 
8704
col_varchar_nokey varchar(1) NOT NULL
 
8705
) engine=InnoDB;
 
8706
INSERT INTO t2 VALUES
 
8707
(4,'j'), (6,'v'), (3,'c'), (5,'m'), (3,'d'), (246,'d'), (2,'y'), (9,'t'),
 
8708
(3,'d'), (8,'s'), (1,'r'), (8,'m'), (8,'b'), (5,'x'), (7,'g'), (5,'p'),
 
8709
(1,'q'), (6,'w'), (2,'d'), (9,'e');
 
8710
explain SELECT col_varchar_nokey
 
8711
FROM t2 AS ot
 
8712
WHERE col_varchar_nokey IN (
 
8713
SELECT col_varchar_key
 
8714
FROM t1 AS it
 
8715
WHERE it.col_int_nokey <= it.col_int_nokey
 
8716
AND NOT ot.col_int_nokey < 2
 
8717
)
 
8718
ORDER BY col_varchar_nokey;
 
8719
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
8720
1       SIMPLE  ot      ALL     NULL    NULL    NULL    NULL    20      Using where; Using filesort; Start temporary
 
8721
1       SIMPLE  it      ref     col_varchar_key col_varchar_key 3       test.ot.col_varchar_nokey       1       End temporary
 
8722
SELECT col_varchar_nokey
 
8723
FROM t2 AS ot
 
8724
WHERE col_varchar_nokey IN (
 
8725
SELECT col_varchar_key
 
8726
FROM t1 AS it
 
8727
WHERE it.col_int_nokey <= it.col_int_nokey
 
8728
AND NOT ot.col_int_nokey < 2
 
8729
)
 
8730
ORDER BY col_varchar_nokey;
 
8731
col_varchar_nokey
 
8732
c
 
8733
e
 
8734
p
 
8735
s
 
8736
v
 
8737
w
 
8738
y
 
8739
ALTER TABLE t1 ENGINE=MyISAM;
 
8740
ALTER TABLE t2 ENGINE=MyISAM;
 
8741
explain SELECT col_varchar_nokey
 
8742
FROM t2 AS ot
 
8743
WHERE col_varchar_nokey IN (
 
8744
SELECT col_varchar_key
 
8745
FROM t1 AS it
 
8746
WHERE it.col_int_nokey <= it.col_int_nokey
 
8747
AND NOT ot.col_int_nokey < 2
 
8748
)
 
8749
ORDER BY col_varchar_nokey;
 
8750
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
8751
1       SIMPLE  ot      ALL     NULL    NULL    NULL    NULL    20      Using where; Using filesort; Start temporary
 
8752
1       SIMPLE  it      ref     col_varchar_key col_varchar_key 3       test.ot.col_varchar_nokey       2       End temporary
 
8753
SELECT col_varchar_nokey
 
8754
FROM t2 AS ot
 
8755
WHERE col_varchar_nokey IN (
 
8756
SELECT col_varchar_key
 
8757
FROM t1 AS it
 
8758
WHERE it.col_int_nokey <= it.col_int_nokey
 
8759
AND NOT ot.col_int_nokey < 2
 
8760
)
 
8761
ORDER BY col_varchar_nokey;
 
8762
col_varchar_nokey
 
8763
c
 
8764
e
 
8765
p
 
8766
s
 
8767
v
 
8768
w
 
8769
y
 
8770
ALTER TABLE t1 ENGINE=Memory;
 
8771
ALTER TABLE t2 ENGINE=Memory;
 
8772
explain SELECT col_varchar_nokey
 
8773
FROM t2 AS ot
 
8774
WHERE col_varchar_nokey IN (
 
8775
SELECT col_varchar_key
 
8776
FROM t1 AS it
 
8777
WHERE it.col_int_nokey <= it.col_int_nokey
 
8778
AND NOT ot.col_int_nokey < 2
 
8779
)
 
8780
ORDER BY col_varchar_nokey;
 
8781
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
8782
1       SIMPLE  ot      ALL     NULL    NULL    NULL    NULL    20      Using where; Using filesort; Start temporary
 
8783
1       SIMPLE  it      ref     col_varchar_key col_varchar_key 3       test.ot.col_varchar_nokey       2       End temporary
 
8784
SELECT col_varchar_nokey
 
8785
FROM t2 AS ot
 
8786
WHERE col_varchar_nokey IN (
 
8787
SELECT col_varchar_key
 
8788
FROM t1 AS it
 
8789
WHERE it.col_int_nokey <= it.col_int_nokey
 
8790
AND NOT ot.col_int_nokey < 2
 
8791
)
 
8792
ORDER BY col_varchar_nokey;
 
8793
col_varchar_nokey
 
8794
c
 
8795
e
 
8796
p
 
8797
s
 
8798
v
 
8799
w
 
8800
y
 
8801
DROP TABLE t1, t2;
 
8802
# End of test for bug#13576391.
 
8803
#
 
8804
# Bug #13589848 "MISSING ROW ON SELECT WITH NESTED IN CLAUSES WHEN LOOSESCAN=ON"
 
8805
#
 
8806
CREATE TABLE t1 (
 
8807
id INT,
 
8808
col_varchar_key VARCHAR(1),
 
8809
col_varchar_nokey VARCHAR(1),
 
8810
KEY (col_varchar_key)
 
8811
);
 
8812
INSERT INTO t1 VALUES (100,'m','m'),
 
8813
(200,'b','b'), (300,'x','x');
 
8814
CREATE TABLE t2 (
 
8815
col_varchar_key VARCHAR(1),
 
8816
col_varchar_nokey VARCHAR(1),
 
8817
KEY (col_varchar_key)
 
8818
);
 
8819
INSERT INTO t2 VALUES ('b','b');
 
8820
CREATE TABLE t3 (
 
8821
col_varchar_key VARCHAR(1),
 
8822
col_varchar_nokey VARCHAR(1),
 
8823
KEY (col_varchar_key)
 
8824
);
 
8825
INSERT INTO t3 VALUES ('k','k');
 
8826
EXPLAIN SELECT GP1.id
 
8827
FROM t1 AS GP1 JOIN t3 AS GP2
 
8828
ON GP2.col_varchar_key <> GP1.col_varchar_nokey
 
8829
WHERE (GP1.col_varchar_nokey, GP1.col_varchar_nokey)
 
8830
IN (
 
8831
SELECT col_varchar_nokey, col_varchar_nokey
 
8832
FROM t1
 
8833
WHERE col_varchar_nokey
 
8834
IN ( SELECT col_varchar_key
 
8835
FROM t2 LEFT JOIN t3 USING (col_varchar_key) )
 
8836
)
 
8837
;
 
8838
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
8839
1       SIMPLE  GP2     system  NULL    NULL    NULL    NULL    1       NULL
 
8840
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    Using where
 
8841
1       SIMPLE  GP1     ALL     NULL    NULL    NULL    NULL    3       Using where; Using join buffer (Block Nested Loop)
 
8842
2       MATERIALIZED    t2      index   col_varchar_key col_varchar_key 4       NULL    1       Using index
 
8843
2       MATERIALIZED    t3      ref     col_varchar_key col_varchar_key 4       test.t2.col_varchar_key 2       Using index
 
8844
2       MATERIALIZED    t1      ALL     NULL    NULL    NULL    NULL    3       Using where; Using join buffer (Block Nested Loop)
 
8845
SELECT GP1.id
 
8846
FROM t1 AS GP1 JOIN t3 AS GP2
 
8847
ON GP2.col_varchar_key <> GP1.col_varchar_nokey
 
8848
WHERE (GP1.col_varchar_nokey, GP1.col_varchar_nokey)
 
8849
IN (
 
8850
SELECT col_varchar_nokey, col_varchar_nokey
 
8851
FROM t1
 
8852
WHERE col_varchar_nokey
 
8853
IN ( SELECT col_varchar_key
 
8854
FROM t2 LEFT JOIN t3 USING (col_varchar_key) )
 
8855
)
 
8856
;
 
8857
id
 
8858
200
 
8859
DROP TABLE t1,t2,t3;
 
8860
#
 
8861
# Bug #13596176: Missing row on select with nested in clause when
 
8862
#                matr=on and bnl=off + MyISAM
 
8863
#
 
8864
CREATE TABLE t1 (
 
8865
int_key int DEFAULT NULL,
 
8866
vc_key varchar(1) DEFAULT NULL,
 
8867
vc_nokey varchar(1) DEFAULT NULL,
 
8868
KEY int_key (int_key),
 
8869
KEY vc_key (vc_key, int_key)
 
8870
) ENGINE=MyISAM;
 
8871
INSERT INTO t1 VALUES
 
8872
(8,'x','x'), (7,'d','d'), (1,'r','r'), (7,'f','f'),
 
8873
(9,'y','y'), (NULL,'u','u'), (1,'m','m'), (9,NULL,NULL),
 
8874
(2,'o','o'), (9,'w','w'), (2,'m','m'), (4,'q','q'),
 
8875
(0,NULL,NULL), (4,'d','d'), (8,'g','g'), (NULL,'x','x'),
 
8876
(NULL,'f','f'), (0,'p','p'), (NULL,'j','j'), (8,'c','c');
 
8877
CREATE TABLE t2 (
 
8878
int_key int DEFAULT NULL,
 
8879
vc_key varchar(1) DEFAULT NULL,
 
8880
KEY int_key (int_key),
 
8881
KEY vc_key (vc_key, int_key)
 
8882
) ENGINE=MyISAM;
 
8883
INSERT INTO t2 VALUES (8,'g');
 
8884
explain SELECT vc_key
 
8885
FROM t1 as outr
 
8886
WHERE (vc_nokey, vc_key ) IN
 
8887
(SELECT vc_nokey, vc_nokey
 
8888
FROM t1 middle
 
8889
WHERE vc_nokey IN
 
8890
(SELECT child1.vc_key
 
8891
FROM t2 AS child1 JOIN t1 AS child2 USING (int_key)
 
8892
)
 
8893
);
 
8894
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
8895
1       SIMPLE  child1  index   int_key,vc_key  vc_key  9       NULL    1       Using where; Using index; Start temporary
 
8896
1       SIMPLE  outr    ref     vc_key  vc_key  4       test.child1.vc_key      3       Using where
 
8897
1       SIMPLE  child2  ref     int_key int_key 5       test.child1.int_key     3       Using index
 
8898
1       SIMPLE  middle  ALL     NULL    NULL    NULL    NULL    20      Using where; End temporary; Using join buffer (Block Nested Loop)
 
8899
SELECT vc_key
 
8900
FROM t1 as outr
 
8901
WHERE (vc_nokey, vc_key ) IN
 
8902
(SELECT vc_nokey, vc_nokey
 
8903
FROM t1 middle
 
8904
WHERE vc_nokey IN
 
8905
(SELECT child1.vc_key
 
8906
FROM t2 AS child1 JOIN t1 AS child2 USING (int_key)
 
8907
)
 
8908
);
 
8909
vc_key
 
8910
g
 
8911
DROP TABLE t1, t2;
 
8912
# End of test for bug#13596176.
 
8913
#
 
8914
# BUG#11754478: MAX/MIN + SUBQUERY + AND FAILS TO RETURN ANY ROWS
 
8915
# BUG#13599013: MAX/MIN + SUBQUERY IN WHERE CLAUSE MATCHING NO 
 
8916
#               ROWS + INDEX DOES NOT RETURN NULL
 
8917
#
 
8918
CREATE TABLE t1 (
 
8919
pk int(11) PRIMARY KEY,
 
8920
int_key int(11),
 
8921
KEY int_key (int_key)
 
8922
);
 
8923
INSERT INTO t1 VALUES (1,0),(2,0),(3,2),(4,0),(5,3),(6,0);
 
8924
SELECT MIN(int_key) FROM t1 WHERE (4, 4) IN (SELECT 1, 2);
 
8925
MIN(int_key)
 
8926
NULL
 
8927
SELECT MIN(int_key) FROM t1 WHERE (4, 4) IN (SELECT 4, 4);
 
8928
MIN(int_key)
 
8929
0
 
8930
SELECT MIN(pk) FROM t1 WHERE pk IN (SELECT int_key FROM t1) AND pk = 6;
 
8931
MIN(pk)
 
8932
NULL
 
8933
DROP TABLE t1;
 
8934
# BUG#13726217: Crash in Item_ident::fix_after_pullout()
 
8935
CREATE TABLE t1(a INTEGER) engine=innodb;
 
8936
INSERT INTO t1 VALUES (0);
 
8937
SELECT 0
 
8938
FROM t1
 
8939
WHERE 0 IN
 
8940
(SELECT 0
 
8941
FROM t1
 
8942
WHERE 0 LIKE
 
8943
(SELECT elt(a, 0) AS b
 
8944
FROM t1
 
8945
GROUP BY a
 
8946
HAVING b
 
8947
)
 
8948
);
 
8949
0
 
8950
DROP TABLE t1;
 
8951
# End of test for bug#13726217.
 
8952
# BUG#13773979: Missing rows on second execution of prepared statement
 
8953
CREATE TABLE t1 (
 
8954
col_int_nokey INT,
 
8955
col_int_key INT,
 
8956
col_varchar_key VARCHAR(1)
 
8957
);
 
8958
INSERT INTO t1 VALUES
 
8959
(1,7,'v'), (7,0,'s'), (4,9,'l'), (7,3,'y'),
 
8960
(2,2,'i'), (9,5,'h'), (0,1,'a'), (9,3,'v');
 
8961
CREATE VIEW v1 AS SELECT * FROM t1;
 
8962
SELECT *
 
8963
FROM t1
 
8964
WHERE col_int_key IN (
 
8965
SELECT alias1.col_int_nokey AS field1
 
8966
FROM v1 AS alias1
 
8967
WHERE alias1.col_varchar_key < 'v'
 
8968
);
 
8969
col_int_nokey   col_int_key     col_varchar_key
 
8970
1       7       v
 
8971
7       0       s
 
8972
4       9       l
 
8973
2       2       i
 
8974
prepare stmt FROM "SELECT *
 
8975
FROM t1
 
8976
WHERE col_int_key IN (
 
8977
SELECT alias1.col_int_nokey AS field1
 
8978
FROM v1 AS alias1
 
8979
WHERE alias1.col_varchar_key < 'v'
 
8980
)";
 
8981
execute stmt;
 
8982
col_int_nokey   col_int_key     col_varchar_key
 
8983
1       7       v
 
8984
7       0       s
 
8985
4       9       l
 
8986
2       2       i
 
8987
execute stmt;
 
8988
col_int_nokey   col_int_key     col_varchar_key
 
8989
1       7       v
 
8990
7       0       s
 
8991
4       9       l
 
8992
2       2       i
 
8993
DEALLOCATE PREPARE stmt;
 
8994
DROP VIEW v1;
 
8995
DROP TABLE t1;
 
8996
# End of test for bug#13773979.
 
8997
#
 
8998
# BUG#13685026 ASSERTION CUR_SJ_INNER_TABLES == 0 IN
 
8999
# --OPTIMIZE_TABLE_ORDER::CHOOSE_TABLE_ORDER
 
9000
#
 
9001
CREATE TABLE t1 (
 
9002
col_int_key INT(11) NOT NULL,
 
9003
col_datetime_key DATETIME NOT NULL,
 
9004
col_varchar_key VARCHAR(1) NOT NULL,
 
9005
col_varchar_nokey VARCHAR(1) NOT NULL,
 
9006
KEY col_int_key (col_int_key),
 
9007
KEY col_datetime_key (col_datetime_key),
 
9008
KEY col_varchar_key (col_varchar_key,col_int_key)
 
9009
);
 
9010
INSERT INTO t1 VALUES (0,'2002-02-13 17:30:06','j','j');
 
9011
INSERT INTO t1 VALUES (8,'2008-09-27 00:34:58','v','v');
 
9012
CREATE TABLE t2 (
 
9013
col_int_key INT(11) NOT NULL,
 
9014
col_datetime_key DATETIME NOT NULL,
 
9015
col_varchar_key VARCHAR(1) NOT NULL,
 
9016
col_varchar_nokey VARCHAR(1) NOT NULL,
 
9017
KEY col_int_key (col_int_key),
 
9018
KEY col_datetime_key (col_datetime_key),
 
9019
KEY col_varchar_key (col_varchar_key,col_int_key)
 
9020
);
 
9021
INSERT INTO t2 VALUES (7,'2003-08-21 00:00:00','b','b');
 
9022
SET @old_depth=@@optimizer_search_depth;
 
9023
SET optimizer_search_depth=4;
 
9024
EXPLAIN SELECT col_datetime_key
 
9025
FROM t1 as outr
 
9026
WHERE col_datetime_key IN (
 
9027
SELECT alias1.col_datetime_key
 
9028
FROM t1 AS alias1
 
9029
LEFT JOIN t1 as alias3
 
9030
STRAIGHT_JOIN ( t2 AS alias4
 
9031
JOIN t1 AS alias5
 
9032
ON alias5.col_varchar_key <= alias4.col_varchar_nokey )
 
9033
ON alias5.col_int_key < alias4.col_int_key
 
9034
ON alias5.col_varchar_key = alias4.col_varchar_key
 
9035
);
 
9036
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
9037
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    NULL
 
9038
1       SIMPLE  outr    index   col_datetime_key        col_datetime_key        5       NULL    2       Using where; Using index; Using join buffer (Block Nested Loop)
 
9039
2       MATERIALIZED    alias1  index   NULL    col_datetime_key        5       NULL    2       Using index
 
9040
2       MATERIALIZED    alias4  ALL     col_int_key,col_varchar_key     NULL    NULL    NULL    1       NULL
 
9041
2       MATERIALIZED    alias5  ref     col_int_key,col_varchar_key     col_varchar_key 3       test.alias4.col_varchar_key     1       Using where; Using index
 
9042
2       MATERIALIZED    alias3  index   NULL    col_int_key     4       NULL    2       Using index
 
9043
SELECT col_datetime_key
 
9044
FROM t1 as outr
 
9045
WHERE col_datetime_key IN (
 
9046
SELECT alias1.col_datetime_key
 
9047
FROM t1 AS alias1
 
9048
LEFT JOIN t1 as alias3
 
9049
STRAIGHT_JOIN ( t2 AS alias4
 
9050
JOIN t1 AS alias5
 
9051
ON alias5.col_varchar_key <= alias4.col_varchar_nokey )
 
9052
ON alias5.col_int_key < alias4.col_int_key
 
9053
ON alias5.col_varchar_key = alias4.col_varchar_key
 
9054
);
 
9055
col_datetime_key
 
9056
2002-02-13 17:30:06
 
9057
2008-09-27 00:34:58
 
9058
DROP TABLE t1,t2;
 
9059
SET @@optimizer_search_depth=@old_depth;
 
9060
#
 
9061
# BUG#13848789: SEGFAULT IN JOIN_READ_NEXT_SAME AT 
 
9062
#               SQL/SQL_EXECUTOR.CC ON HAVING...IN...JOIN
 
9063
#
 
9064
CREATE TABLE t1 (
 
9065
col_int_key INT,
 
9066
col_varchar_key VARCHAR(1),
 
9067
KEY col_int_key (col_int_key),
 
9068
KEY col_varchar_key (col_varchar_key)
 
9069
);
 
9070
INSERT INTO t1 VALUES (8,'x');
 
9071
CREATE TABLE t2 (
 
9072
col_varchar_key VARCHAR(1),
 
9073
KEY col_varchar_key (col_varchar_key)
 
9074
);
 
9075
INSERT INTO t2 VALUES ('x'), ('y');
 
9076
explain SELECT MIN(col_int_key)
 
9077
FROM t1 as t1_outer
 
9078
HAVING (1, 2) IN (
 
9079
SELECT t1_inner.col_int_key, MAX(t1_inner.col_int_key)
 
9080
FROM t1 as t1_inner JOIN t2
 
9081
ON t2.col_varchar_key = t1_inner.col_varchar_key
 
9082
);
 
9083
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
9084
1       PRIMARY NULL    NULL    NULL    NULL    NULL    NULL    NULL    Select tables optimized away
 
9085
2       SUBQUERY        t1_inner        system  col_varchar_key NULL    NULL    NULL    1       NULL
 
9086
2       SUBQUERY        t2      ref     col_varchar_key col_varchar_key 4       const   1       Using index
 
9087
SELECT MIN(col_int_key)
 
9088
FROM t1 as t1_outer
 
9089
HAVING (1, 2) IN (
 
9090
SELECT t1_inner.col_int_key, MAX(t1_inner.col_int_key)
 
9091
FROM t1 as t1_inner JOIN t2
 
9092
ON t2.col_varchar_key = t1_inner.col_varchar_key
 
9093
);
 
9094
MIN(col_int_key)
 
9095
DROP TABLE t1,t2;
 
9096
# Bug#13838810: Segfault in evaluate_null_complemented_join_record
 
9097
CREATE TABLE t1 (
 
9098
pk int NOT NULL,
 
9099
col_int_nokey int DEFAULT NULL,
 
9100
col_int_key int DEFAULT NULL,
 
9101
col_varchar_key varchar(1) DEFAULT NULL,
 
9102
PRIMARY KEY (pk),
 
9103
KEY col_int_key (col_int_key),
 
9104
KEY col_varchar_key (col_varchar_key,col_int_key)
 
9105
) ENGINE=InnoDB;
 
9106
INSERT INTO t1 VALUES (10,NULL,8,'x');
 
9107
CREATE TABLE t2 (
 
9108
pk int NOT NULL,
 
9109
col_varchar_nokey varchar(1) DEFAULT NULL,
 
9110
PRIMARY KEY (pk)
 
9111
) ENGINE=InnoDB;
 
9112
INSERT INTO t2 VALUES (1,'x');
 
9113
CREATE TABLE t3 (
 
9114
pk int NOT NULL,
 
9115
col_varchar_key varchar(1) DEFAULT NULL,
 
9116
col_varchar_nokey varchar(1) DEFAULT NULL,
 
9117
PRIMARY KEY (pk),
 
9118
KEY col_varchar_key (col_varchar_key)
 
9119
) ENGINE=InnoDB;
 
9120
INSERT INTO t3 VALUES
 
9121
(1,'v','v'), (2,'v','v'), (3,'c','c'), (4,NULL,NULL);
 
9122
EXPLAIN SELECT table1.pk,table2.pk, table3.pk
 
9123
FROM t2 AS table1
 
9124
LEFT JOIN t1 AS table2
 
9125
LEFT JOIN t1 AS table3
 
9126
ON table3.col_int_key = table2.col_int_key
 
9127
ON table3.pk = table2.col_int_nokey AND
 
9128
table1.col_varchar_nokey IN (
 
9129
SELECT subquery3_t1.col_varchar_nokey
 
9130
FROM t3 AS subquery3_t1
 
9131
LEFT JOIN t1 AS subquery3_t2
 
9132
ON subquery3_t2.col_varchar_key = subquery3_t1.col_varchar_key
 
9133
WHERE subquery3_t2.col_int_nokey <> 9
 
9134
)
 
9135
;
 
9136
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
9137
1       SIMPLE  table1  ALL     NULL    NULL    NULL    NULL    1       Start temporary
 
9138
1       SIMPLE  table2  ALL     col_int_key     NULL    NULL    NULL    1       Using where
 
9139
1       SIMPLE  table3  eq_ref  PRIMARY,col_int_key     PRIMARY 4       test.table2.col_int_nokey       1       Using where
 
9140
1       SIMPLE  subquery3_t2    ALL     col_varchar_key NULL    NULL    NULL    1       Using where
 
9141
1       SIMPLE  subquery3_t1    ref     col_varchar_key col_varchar_key 4       test.subquery3_t2.col_varchar_key       1       Using where; End temporary
 
9142
SELECT table1.pk,table2.pk, table3.pk
 
9143
FROM t2 AS table1
 
9144
LEFT JOIN t1 AS table2
 
9145
LEFT JOIN t1 AS table3
 
9146
ON table3.col_int_key = table2.col_int_key
 
9147
ON table3.pk = table2.col_int_nokey AND
 
9148
table1.col_varchar_nokey IN (
 
9149
SELECT subquery3_t1.col_varchar_nokey
 
9150
FROM t3 AS subquery3_t1
 
9151
LEFT JOIN t1 AS subquery3_t2
 
9152
ON subquery3_t2.col_varchar_key = subquery3_t1.col_varchar_key
 
9153
WHERE subquery3_t2.col_int_nokey <> 9
 
9154
)
 
9155
;
 
9156
pk      pk      pk
 
9157
1       NULL    NULL
 
9158
DROP TABLE t1, t2, t3;
 
9159
Extra test case for specific code coverage
 
9160
CREATE TABLE t1(pk INTEGER);
 
9161
INSERT INTO t1 VALUES(1), (2);
 
9162
explain SELECT *
 
9163
FROM t1 AS ot1 LEFT JOIN t1 AS ot2
 
9164
ON ot1.pk=ot2.pk AND
 
9165
ot2.pk IN
 
9166
(SELECT it1.pk
 
9167
FROM t1 AS it1 LEFT JOIN t1 AS it2 ON it1.pk=it2.pk);
 
9168
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
9169
1       SIMPLE  ot1     ALL     NULL    NULL    NULL    NULL    2       Start temporary
 
9170
1       SIMPLE  ot2     ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
9171
1       SIMPLE  it1     ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
9172
1       SIMPLE  it2     ALL     NULL    NULL    NULL    NULL    2       Using where; End temporary; Using join buffer (Block Nested Loop)
 
9173
SELECT *
 
9174
FROM t1 AS ot1 LEFT JOIN t1 AS ot2
 
9175
ON ot1.pk=ot2.pk AND
 
9176
ot2.pk IN
 
9177
(SELECT it1.pk
 
9178
FROM t1 AS it1 LEFT JOIN t1 AS it2 ON it1.pk=it2.pk);
 
9179
pk      pk
 
9180
1       1
 
9181
2       2
 
9182
DROP TABLE t1;
 
9183
# End of test for bug#13838810.
 
9184
#
 
9185
# BUG#13685026 ASSERTION CUR_SJ_INNER_TABLES == 0 IN
 
9186
# --OPTIMIZE_TABLE_ORDER::CHOOSE_TABLE_ORDER
 
9187
#
 
9188
CREATE TABLE t1 (
 
9189
col_int_key INT(11) NOT NULL,
 
9190
col_datetime_key DATETIME NOT NULL,
 
9191
col_varchar_key VARCHAR(1) NOT NULL,
 
9192
col_varchar_nokey VARCHAR(1) NOT NULL,
 
9193
KEY col_int_key (col_int_key),
 
9194
KEY col_datetime_key (col_datetime_key),
 
9195
KEY col_varchar_key (col_varchar_key,col_int_key)
 
9196
);
 
9197
INSERT INTO t1 VALUES (0,'2002-02-13 17:30:06','j','j');
 
9198
INSERT INTO t1 VALUES (8,'2008-09-27 00:34:58','v','v');
 
9199
CREATE TABLE t2 (
 
9200
col_int_key INT(11) NOT NULL,
 
9201
col_datetime_key DATETIME NOT NULL,
 
9202
col_varchar_key VARCHAR(1) NOT NULL,
 
9203
col_varchar_nokey VARCHAR(1) NOT NULL,
 
9204
KEY col_int_key (col_int_key),
 
9205
KEY col_datetime_key (col_datetime_key),
 
9206
KEY col_varchar_key (col_varchar_key,col_int_key)
 
9207
);
 
9208
INSERT INTO t2 VALUES (7,'2003-08-21 00:00:00','b','b');
 
9209
SET @old_depth=@@optimizer_search_depth;
 
9210
SET optimizer_search_depth=4;
 
9211
EXPLAIN SELECT col_datetime_key
 
9212
FROM t1 as outr
 
9213
WHERE col_datetime_key IN (
 
9214
SELECT alias1.col_datetime_key
 
9215
FROM t1 AS alias1
 
9216
LEFT JOIN t1 as alias3
 
9217
STRAIGHT_JOIN ( t2 AS alias4
 
9218
JOIN t1 AS alias5
 
9219
ON alias5.col_varchar_key <= alias4.col_varchar_nokey )
 
9220
ON alias5.col_int_key < alias4.col_int_key
 
9221
ON alias5.col_varchar_key = alias4.col_varchar_key
 
9222
);
 
9223
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
9224
1       SIMPLE  <subquery2>     ALL     NULL    NULL    NULL    NULL    NULL    NULL
 
9225
1       SIMPLE  outr    index   col_datetime_key        col_datetime_key        5       NULL    2       Using where; Using index; Using join buffer (Block Nested Loop)
 
9226
2       MATERIALIZED    alias1  index   NULL    col_datetime_key        5       NULL    2       Using index
 
9227
2       MATERIALIZED    alias4  ALL     col_int_key,col_varchar_key     NULL    NULL    NULL    1       NULL
 
9228
2       MATERIALIZED    alias5  ref     col_int_key,col_varchar_key     col_varchar_key 3       test.alias4.col_varchar_key     1       Using where; Using index
 
9229
2       MATERIALIZED    alias3  index   NULL    col_int_key     4       NULL    2       Using index
 
9230
SELECT col_datetime_key
 
9231
FROM t1 as outr
 
9232
WHERE col_datetime_key IN (
 
9233
SELECT alias1.col_datetime_key
 
9234
FROM t1 AS alias1
 
9235
LEFT JOIN t1 as alias3
 
9236
STRAIGHT_JOIN ( t2 AS alias4
 
9237
JOIN t1 AS alias5
 
9238
ON alias5.col_varchar_key <= alias4.col_varchar_nokey )
 
9239
ON alias5.col_int_key < alias4.col_int_key
 
9240
ON alias5.col_varchar_key = alias4.col_varchar_key
 
9241
);
 
9242
col_datetime_key
 
9243
2002-02-13 17:30:06
 
9244
2008-09-27 00:34:58
 
9245
DROP TABLE t1,t2;
 
9246
SET @@optimizer_search_depth=@old_depth;
 
9247
#
 
9248
# Bug#13845930: Segfault in st_join_table::and_with_condition
 
9249
#
 
9250
CREATE TABLE t1 (
 
9251
col_int INTEGER
 
9252
);
 
9253
CREATE TABLE t2 (
 
9254
col_varchar_1 VARCHAR(1),
 
9255
col_varchar_2 VARCHAR(1)
 
9256
);
 
9257
INSERT INTO t2 VALUES ('x','x'), ('c','c');
 
9258
PREPARE stmt FROM '
 
9259
SELECT alias2.col_varchar_2 AS field1
 
9260
FROM t2 AS alias1
 
9261
     JOIN
 
9262
      (t2 AS alias2
 
9263
       LEFT JOIN t2 AS alias3
 
9264
       ON (8, 92) IN
 
9265
          (SELECT sq1_alias1.col_int,
 
9266
                  sq1_alias2.col_int
 
9267
           FROM t1 AS sq1_alias1 JOIN t1 AS sq1_alias2
 
9268
          )
 
9269
      )
 
9270
     ON alias3.col_varchar_1 = alias2.col_varchar_2
 
9271
';
 
9272
EXECUTE stmt;
 
9273
field1
 
9274
EXECUTE stmt;
 
9275
field1
 
9276
DEALLOCATE prepare stmt;
 
9277
DROP TABLE t1, t2;
 
9278
# End of test for bug#13845930.
 
9279
#
 
9280
# Bug#13855925: Assert 'prebuilt->search_tuple->n_fields > 0'
 
9281
#               in ha_innobase::index_read
 
9282
#
 
9283
CREATE TABLE t1 (
 
9284
pk INTEGER AUTO_INCREMENT,
 
9285
col_int_nokey INT,
 
9286
col_int_key INT,
 
9287
col_varchar_key VARCHAR(1),
 
9288
col_varchar_nokey VARCHAR(1),
 
9289
PRIMARY KEY (pk),
 
9290
KEY (col_varchar_key)
 
9291
) ENGINE=INNODB;
 
9292
INSERT INTO t1 (
 
9293
col_int_key, col_int_nokey,
 
9294
col_varchar_key, col_varchar_nokey
 
9295
) VALUES
 
9296
(4, 2, 'v','v'), (62, 150, 'v','v'), (7, NULL, 'c','c'), (1, 2, NULL, NULL),
 
9297
(0, 5, 'x','x'), (7, 3, 'i','i'), (7, 1, 'e','e'), (1, 4, 'p','p'),
 
9298
(7, NULL, 's','s'), (1, 2, 'j','j'), (5, 6, 'z','z'), (2, 6, 'c','c'),
 
9299
(0, 8, 'a','a'), (1, 2, 'q','q'), (8, 6, 'y','y'), (1, 8, NULL, NULL),
 
9300
(1, 3, 'r','r'), (9, 3, 'v','v'), (1, 9, NULL, NULL), (5, 6, 'r','r');
 
9301
CREATE TABLE t2 (
 
9302
pk INT AUTO_INCREMENT,
 
9303
col_int_nokey INT,
 
9304
col_int_key INT,
 
9305
PRIMARY KEY (pk),
 
9306
KEY (col_int_key)
 
9307
) AUTO_INCREMENT=10 ENGINE=INNODB;
 
9308
INSERT INTO t2 (col_int_key, col_int_nokey) VALUES
 
9309
(8, NULL), (7, 8), (1, 1), (7, 9), (9, 4), (NULL, 3), (1, 2), (9, NULL),
 
9310
(2, 2), (9, NULL), (2, 6), (4, 7), (0, 2), (4, 5), (8, 7), (NULL, 6),
 
9311
(NULL, 6), (0, 2), (NULL, 9), (8, 6);
 
9312
CREATE TABLE t3 (
 
9313
pk INT AUTO_INCREMENT,
 
9314
col_varchar_key VARCHAR(1),
 
9315
PRIMARY KEY (pk),
 
9316
KEY (col_varchar_key)
 
9317
) ENGINE=INNODB;
 
9318
INSERT INTO t3 (col_varchar_key) VALUES
 
9319
('c'), ('c'), ('q'), ('g'), ('e'), ('l'), (NULL), ('c'), ('h'), ('d'),
 
9320
('c'), ('i'), ('t'), ('g'), ('q'), ('l'), ('n'), ('z'), ('n'), ('r'), ('p');
 
9321
CREATE VIEW v1 AS
 
9322
SELECT table2.col_varchar_nokey AS field1
 
9323
FROM t2 AS table1
 
9324
INNER JOIN (t1 AS table2
 
9325
STRAIGHT_JOIN t2 AS table3
 
9326
ON table3.col_int_key = table2.pk AND
 
9327
table3.col_int_nokey = ANY
 
9328
(SELECT subquery1_t2.col_int_nokey AS subquery1_field1
 
9329
FROM t2 AS subquery1_t1
 
9330
RIGHT OUTER JOIN t1 AS subquery1_t2
 
9331
INNER JOIN t1 AS subquery1_t3
 
9332
ON subquery1_t3.col_int_key = subquery1_t2.pk
 
9333
ON subquery1_t3.col_varchar_key=subquery1_t2.col_varchar_nokey
 
9334
WHERE subquery1_t1.pk > 1
 
9335
)
 
9336
)
 
9337
ON table3.col_int_key IN
 
9338
(SELECT subquery2_t1.col_int_key AS subquery2_field1
 
9339
FROM t2 AS subquery2_t1
 
9340
RIGHT OUTER JOIN t3 AS subquery2_t2
 
9341
LEFT OUTER JOIN t1 AS subquery2_t3
 
9342
ON subquery2_t3.col_varchar_key = subquery2_t2.col_varchar_key
 
9343
ON subquery2_t3.pk = subquery2_t2.pk
 
9344
)
 
9345
;
 
9346
explain SELECT * FROM v1;
 
9347
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
9348
1       SIMPLE  table1  index   NULL    col_int_key     5       NULL    20      Using index
 
9349
1       SIMPLE  <subquery3>     ALL     NULL    NULL    NULL    NULL    NULL    Using join buffer (Block Nested Loop)
 
9350
1       SIMPLE  table2  ALL     PRIMARY NULL    NULL    NULL    20      Using where; Using join buffer (Block Nested Loop)
 
9351
1       SIMPLE  table3  ref     col_int_key     col_int_key     5       test.table2.pk  1       Using where
 
9352
1       SIMPLE  <subquery4>     eq_ref  <auto_key>      <auto_key>      5       test.table2.pk  1       NULL
 
9353
3       MATERIALIZED    subquery1_t2    ALL     PRIMARY NULL    NULL    NULL    20      Using where
 
9354
3       MATERIALIZED    subquery1_t3    ref     col_varchar_key col_varchar_key 4       test.subquery1_t2.col_varchar_nokey     1       Using where
 
9355
3       MATERIALIZED    subquery1_t1    index   PRIMARY col_int_key     5       NULL    20      Using where; Using index; Using join buffer (Block Nested Loop)
 
9356
4       MATERIALIZED    subquery2_t3    index   PRIMARY,col_varchar_key col_varchar_key 4       NULL    20      Using where; Using index
 
9357
4       MATERIALIZED    subquery2_t2    eq_ref  PRIMARY,col_varchar_key PRIMARY 4       test.subquery2_t3.pk    1       Using where
 
9358
4       MATERIALIZED    subquery2_t1    index   col_int_key     col_int_key     5       NULL    20      Using index; Using join buffer (Block Nested Loop)
 
9359
SELECT * FROM v1;
 
9360
field1
 
9361
v
 
9362
v
 
9363
v
 
9364
v
 
9365
v
 
9366
v
 
9367
v
 
9368
v
 
9369
v
 
9370
v
 
9371
v
 
9372
v
 
9373
v
 
9374
v
 
9375
v
 
9376
v
 
9377
v
 
9378
v
 
9379
v
 
9380
v
 
9381
DROP VIEW v1;
 
9382
DROP TABLE t1,t2,t3;
 
9383
# End of test for bug#13855925.
 
9384
#
 
9385
# Bug#13897959: Segfault in setup_semijoin_dups_elimination()
 
9386
#
 
9387
CREATE TABLE t1 (
 
9388
col_datetime_key DATETIME DEFAULT NULL,
 
9389
KEY col_datetime_key (col_datetime_key)
 
9390
) ENGINE=MyISAM;
 
9391
INSERT INTO t1 VALUES
 
9392
('2001-04-18 00:00:00'), ('2008-12-18 19:39:55'),
 
9393
('2000-08-01 12:19:39'), ('2004-09-25 21:29:06'),
 
9394
('2009-09-20 09:11:48'), ('2004-03-27 09:32:04');
 
9395
CREATE TABLE t2 (
 
9396
col_date_nokey date DEFAULT NULL,
 
9397
col_time_key time DEFAULT NULL,
 
9398
col_datetime_key datetime DEFAULT NULL,
 
9399
col_varchar_key varchar(1) DEFAULT NULL,
 
9400
col_varchar_nokey varchar(1) DEFAULT NULL,
 
9401
KEY col_time_key (col_time_key),
 
9402
KEY col_datetime_key (col_datetime_key),
 
9403
KEY col_varchar_key(col_varchar_key)
 
9404
) ENGINE=MyISAM;
 
9405
INSERT INTO t2 VALUES ('1900-01-01',NULL,'2001-11-04 19:07:55','x','x');
 
9406
SELECT grandparent1.col_varchar_nokey
 
9407
FROM t2 AS grandparent1 LEFT JOIN t1 USING (col_datetime_key)
 
9408
WHERE grandparent1.col_varchar_nokey IN (
 
9409
SELECT col_varchar_nokey
 
9410
FROM t2 AS parent1
 
9411
WHERE parent1.col_time_key > grandparent1.col_date_nokey
 
9412
);
 
9413
col_varchar_nokey
 
9414
DROP TABLE t1, t2;
 
9415
# End of test for bug#13897959.
 
9416
#
 
9417
# Bug#13898625 ASSERT `(REMAINING_TABLES_AFTER != 0) ...' IN
 
9418
# BEST_EXTENSION_BY_LIMITED_SEARCH
 
9419
#
 
9420
CREATE TABLE t1 (
 
9421
pk int(11) NOT NULL,
 
9422
col_int_nokey INT,
 
9423
col_int_key INT,
 
9424
col_varchar_key VARCHAR(1),
 
9425
col_varchar_nokey VARCHAR(1),
 
9426
PRIMARY KEY (pk),
 
9427
KEY col_int_key (col_int_key),
 
9428
KEY col_varchar_key (col_varchar_key,col_int_key)
 
9429
);
 
9430
INSERT INTO t1 VALUES (26,6,NULL,'f','f');
 
9431
INSERT INTO t1 VALUES (29,6,8,'c','c');
 
9432
CREATE TABLE t2 (
 
9433
pk INT NOT NULL,
 
9434
col_int_nokey INT,
 
9435
col_int_key INT,
 
9436
col_varchar_key VARCHAR(1),
 
9437
col_varchar_nokey VARCHAR(1),
 
9438
PRIMARY KEY (pk),
 
9439
KEY col_int_key (col_int_key),
 
9440
KEY col_varchar_key (col_varchar_key,col_int_key)
 
9441
);
 
9442
INSERT INTO t2 VALUES (1,2,4,'v','v');
 
9443
INSERT INTO t2 VALUES (2,150,62,'v','v');
 
9444
INSERT INTO t2 VALUES (5,5,0,'x','x');
 
9445
INSERT INTO t2 VALUES (6,3,7,'i','i');
 
9446
INSERT INTO t2 VALUES (7,1,7,'e','e');
 
9447
CREATE VIEW view_c AS SELECT * FROM t2;
 
9448
PREPARE prep_stmt_7430 FROM 'SELECT SUM( alias1.col_varchar_key ) AS field1
 
9449
FROM t1 AS alias1
 
9450
RIGHT JOIN t2 AS alias2
 
9451
INNER JOIN t1 AS alias3
 
9452
ON (alias3.col_varchar_key = alias2.col_varchar_key )
 
9453
ON ( "v" ) IN (
 
9454
SELECT sq1_alias1.col_varchar_nokey AS sq1_field1
 
9455
FROM t1 AS sq1_alias1
 
9456
)
 
9457
WHERE alias3.pk IN (
 
9458
SELECT sq2_alias1.col_int_key AS sq2_field1
 
9459
FROM ( view_c AS sq2_alias1, t1 AS sq2_alias2 )
 
9460
)
 
9461
';
 
9462
EXECUTE prep_stmt_7430;
 
9463
field1
 
9464
NULL
 
9465
EXECUTE prep_stmt_7430;
 
9466
field1
 
9467
NULL
 
9468
EXPLAIN SELECT SUM( alias1.col_varchar_key ) AS field1
 
9469
FROM t1 AS alias1
 
9470
RIGHT JOIN t2 AS alias2
 
9471
INNER JOIN t1 AS alias3
 
9472
ON (alias3.col_varchar_key = alias2.col_varchar_key )
 
9473
ON ( "v" ) IN (
 
9474
SELECT sq1_alias1.col_varchar_nokey AS sq1_field1
 
9475
FROM t1 AS sq1_alias1
 
9476
)
 
9477
WHERE alias3.pk IN (
 
9478
SELECT sq2_alias1.col_int_key AS sq2_field1
 
9479
FROM ( view_c AS sq2_alias1, t1 AS sq2_alias2 )
 
9480
)
 
9481
;
 
9482
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
9483
1       SIMPLE  alias3  ALL     PRIMARY,col_varchar_key NULL    NULL    NULL    2       Using where; Start temporary
 
9484
1       SIMPLE  alias2  ref     col_varchar_key col_varchar_key 4       test.alias3.col_varchar_key     1       Using index
 
9485
1       SIMPLE  sq1_alias1      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
9486
1       SIMPLE  alias1  index   NULL    col_varchar_key 9       NULL    2       Using index; End temporary; Using join buffer (Block Nested Loop)
 
9487
1       SIMPLE  <subquery3>     eq_ref  <auto_key>      <auto_key>      5       test.alias3.pk  1       NULL
 
9488
3       MATERIALIZED    sq2_alias2      index   NULL    PRIMARY 4       NULL    2       Using index
 
9489
3       MATERIALIZED    t2      index   col_int_key     col_int_key     5       NULL    5       Using index; Using join buffer (Block Nested Loop)
 
9490
PREPARE prep_stmt_7430 FROM 'SELECT SUM( alias1.col_varchar_key ) AS field1
 
9491
FROM t1 AS alias1
 
9492
RIGHT JOIN t2 AS alias2
 
9493
INNER JOIN t1 AS alias3
 
9494
ON (alias3.col_varchar_key = alias2.col_varchar_key )
 
9495
ON ( "v" ) IN (
 
9496
SELECT sq1_alias1.col_varchar_nokey AS sq1_field1
 
9497
FROM t1 AS sq1_alias1
 
9498
)
 
9499
WHERE alias3.pk IN (
 
9500
SELECT sq2_alias1.col_int_key AS sq2_field1
 
9501
FROM ( view_c AS sq2_alias1 , t1 AS sq2_alias2 )
 
9502
WHERE sq2_alias1.col_varchar_nokey <> alias2.col_varchar_key
 
9503
AND sq2_alias1.col_varchar_key < "l"
 
9504
  )
 
9505
';
 
9506
EXECUTE prep_stmt_7430;
 
9507
field1
 
9508
NULL
 
9509
EXECUTE prep_stmt_7430;
 
9510
field1
 
9511
NULL
 
9512
EXPLAIN SELECT SUM( alias1.col_varchar_key ) AS field1
 
9513
FROM t1 AS alias1
 
9514
RIGHT JOIN t2 AS alias2
 
9515
INNER JOIN t1 AS alias3
 
9516
ON (alias3.col_varchar_key = alias2.col_varchar_key )
 
9517
ON ( "v" ) IN (
 
9518
SELECT sq1_alias1.col_varchar_nokey AS sq1_field1
 
9519
FROM t1 AS sq1_alias1
 
9520
)
 
9521
WHERE alias3.pk IN (
 
9522
SELECT sq2_alias1.col_int_key AS sq2_field1
 
9523
FROM ( view_c AS sq2_alias1 , t1 AS sq2_alias2 )
 
9524
WHERE sq2_alias1.col_varchar_nokey <> alias2.col_varchar_key
 
9525
AND sq2_alias1.col_varchar_key < "l"
 
9526
  )
 
9527
;
 
9528
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
9529
1       SIMPLE  t2      range   col_int_key,col_varchar_key     col_varchar_key 4       NULL    2       Using where; Start temporary
 
9530
1       SIMPLE  alias3  eq_ref  PRIMARY,col_varchar_key PRIMARY 4       test.t2.col_int_key     1       Using where
 
9531
1       SIMPLE  alias2  ref     col_varchar_key col_varchar_key 4       test.alias3.col_varchar_key     1       Using index
 
9532
1       SIMPLE  sq2_alias2      index   NULL    PRIMARY 4       NULL    2       Using index; Using join buffer (Block Nested Loop)
 
9533
1       SIMPLE  sq1_alias1      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
9534
1       SIMPLE  alias1  index   NULL    col_varchar_key 9       NULL    2       Using index; End temporary; Using join buffer (Block Nested Loop)
 
9535
DROP TABLE t1,t2;
 
9536
DROP VIEW view_c;
 
9537
#
 
9538
# Bug#13902463 SEGFAULT IN BITMAP<64U>::MERGE OR ADD_KEY_FIELD
 
9539
# ON SECOND EXEC OF PREP STMT
 
9540
#
 
9541
CREATE TABLE t1 (
 
9542
pk INT,
 
9543
col_int_nokey INT,
 
9544
col_int_key INT,
 
9545
col_varchar_key VARCHAR(1),
 
9546
col_varchar_nokey VARCHAR(1),
 
9547
KEY col_varchar_key (col_varchar_key)
 
9548
);
 
9549
CREATE VIEW view_b AS SELECT * FROM t1;
 
9550
PREPARE prep_stmt_20421 FROM 'SELECT alias2.col_varchar_nokey AS field1
 
9551
FROM t1 AS alias1
 
9552
INNER JOIN t1 AS alias2
 
9553
ON (alias1.col_varchar_key = alias2.col_varchar_nokey
 
9554
AND ( alias1.col_int_key ) IN (
 
9555
SELECT t1.col_int_nokey
 
9556
FROM t1
 
9557
)
 
9558
)
 
9559
WHERE alias1.col_varchar_key IN (
 
9560
SELECT sq2_alias2.col_varchar_nokey AS sq2_field1
 
9561
FROM view_b AS sq2_alias1
 
9562
INNER JOIN t1 AS sq2_alias2
 
9563
ON (sq2_alias2.col_varchar_key = sq2_alias1.col_varchar_key )
 
9564
WHERE sq2_alias1.pk > alias2.pk
 
9565
)
 
9566
';
 
9567
EXECUTE prep_stmt_20421;
 
9568
field1
 
9569
EXECUTE prep_stmt_20421;
 
9570
field1
 
9571
EXPLAIN SELECT alias2.col_varchar_nokey AS field1
 
9572
FROM t1 AS alias1
 
9573
INNER JOIN t1 AS alias2
 
9574
ON (alias1.col_varchar_key = alias2.col_varchar_nokey
 
9575
AND ( alias1.col_int_key ) IN (
 
9576
SELECT t1.col_int_nokey
 
9577
FROM t1
 
9578
)
 
9579
)
 
9580
WHERE alias1.col_varchar_key IN (
 
9581
SELECT sq2_alias2.col_varchar_nokey AS sq2_field1
 
9582
FROM view_b AS sq2_alias1
 
9583
INNER JOIN t1 AS sq2_alias2
 
9584
ON (sq2_alias2.col_varchar_key = sq2_alias1.col_varchar_key )
 
9585
WHERE sq2_alias1.pk > alias2.pk
 
9586
)
 
9587
;
 
9588
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
9589
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
9590
ALTER TABLE t1 DROP INDEX col_varchar_key;
 
9591
PREPARE prep_stmt_20421 FROM 'SELECT alias2.col_varchar_nokey AS field1
 
9592
FROM t1 AS alias1
 
9593
INNER JOIN t1 AS alias2
 
9594
ON (alias1.col_varchar_key = alias2.col_varchar_nokey
 
9595
AND ( alias1.col_int_key ) IN (
 
9596
SELECT t1.col_int_nokey
 
9597
FROM t1
 
9598
)
 
9599
)
 
9600
WHERE alias1.col_varchar_key IN (
 
9601
SELECT sq2_alias2.col_varchar_nokey AS sq2_field1
 
9602
FROM view_b AS sq2_alias1
 
9603
INNER JOIN t1 AS sq2_alias2
 
9604
ON (sq2_alias2.col_varchar_key = sq2_alias1.col_varchar_key )
 
9605
WHERE sq2_alias1.pk > alias2.pk
 
9606
)
 
9607
';
 
9608
EXECUTE prep_stmt_20421;
 
9609
field1
 
9610
EXECUTE prep_stmt_20421;
 
9611
field1
 
9612
EXPLAIN SELECT alias2.col_varchar_nokey AS field1
 
9613
FROM t1 AS alias1
 
9614
INNER JOIN t1 AS alias2
 
9615
ON (alias1.col_varchar_key = alias2.col_varchar_nokey
 
9616
AND ( alias1.col_int_key ) IN (
 
9617
SELECT t1.col_int_nokey
 
9618
FROM t1
 
9619
)
 
9620
)
 
9621
WHERE alias1.col_varchar_key IN (
 
9622
SELECT sq2_alias2.col_varchar_nokey AS sq2_field1
 
9623
FROM view_b AS sq2_alias1
 
9624
INNER JOIN t1 AS sq2_alias2
 
9625
ON (sq2_alias2.col_varchar_key = sq2_alias1.col_varchar_key )
 
9626
WHERE sq2_alias1.pk > alias2.pk
 
9627
)
 
9628
;
 
9629
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
9630
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
9631
DROP TABLE t1;
 
9632
DROP VIEW view_b;
 
9633
#
 
9634
# Bug#13907277: Segfault in evaluate_null_complemented_join_record
 
9635
#
 
9636
CREATE TABLE t1 (
 
9637
pk INTEGER,
 
9638
col_varchar_nokey VARCHAR(1),
 
9639
col_varchar_key VARCHAR(1),
 
9640
PRIMARY KEY (pk)
 
9641
);
 
9642
INSERT INTO t1 VALUES (1, 'x', 'x');
 
9643
CREATE TABLE t2 (
 
9644
pk INTEGER,
 
9645
PRIMARY KEY (pk)
 
9646
);
 
9647
INSERT INTO t2 VALUES (1);
 
9648
CREATE TABLE t3 (
 
9649
pk INTEGER,
 
9650
col_int_nokey INTEGER,
 
9651
col_int_key INTEGER,
 
9652
col_varchar_nokey VARCHAR(1),
 
9653
PRIMARY KEY (pk)
 
9654
);
 
9655
INSERT INTO t3 VALUES (1, 6, 5, 'r');
 
9656
explain SELECT outer_t1.pk, outer_t2.pk
 
9657
FROM t3 AS outer_t1
 
9658
RIGHT JOIN t2 AS outer_t2
 
9659
ON outer_t1.col_int_nokey IN
 
9660
(SELECT inner_t1.col_int_nokey
 
9661
FROM t3 AS inner_t1
 
9662
LEFT JOIN t1 AS inner_t2
 
9663
INNER JOIN t1 AS inner_t3
 
9664
ON inner_t3.pk = inner_t2.pk
 
9665
ON inner_t3.col_varchar_nokey = inner_t2.col_varchar_key
 
9666
);
 
9667
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
9668
1       SIMPLE  outer_t2        system  NULL    NULL    NULL    NULL    1       NULL
 
9669
1       SIMPLE  outer_t1        ALL     NULL    NULL    NULL    NULL    1       Using where; Start temporary
 
9670
1       SIMPLE  inner_t1        ALL     NULL    NULL    NULL    NULL    1       Using where
 
9671
1       SIMPLE  inner_t2        ALL     PRIMARY NULL    NULL    NULL    1       NULL
 
9672
1       SIMPLE  inner_t3        eq_ref  PRIMARY PRIMARY 4       test.inner_t2.pk        1       Using where; End temporary
 
9673
SELECT outer_t1.pk, outer_t2.pk
 
9674
FROM t3 AS outer_t1
 
9675
RIGHT JOIN t2 AS outer_t2
 
9676
ON outer_t1.col_int_nokey IN
 
9677
(SELECT inner_t1.col_int_nokey
 
9678
FROM t3 AS inner_t1
 
9679
LEFT JOIN t1 AS inner_t2
 
9680
INNER JOIN t1 AS inner_t3
 
9681
ON inner_t3.pk = inner_t2.pk
 
9682
ON inner_t3.col_varchar_nokey = inner_t2.col_varchar_key
 
9683
);
 
9684
pk      pk
 
9685
1       1
 
9686
DROP TABLE t1, t2, t3;
 
9687
# End of test for bug#13907277.
 
9688
#
 
9689
# Bug#13955713: Assert 'JOIN->best_read < ...' on second execution
 
9690
#
 
9691
CREATE TABLE t1 (
 
9692
pk INTEGER,
 
9693
col_varchar_key VARCHAR(1),
 
9694
col_varchar_nokey VARCHAR(1)
 
9695
);
 
9696
PREPARE stmt FROM "
 
9697
SELECT MIN(alias2.col_varchar_key) AS field1
 
9698
FROM t1 AS alias1
 
9699
     INNER JOIN (t1 AS alias2
 
9700
       INNER JOIN t1 AS alias3
 
9701
       ON 8 IN
 
9702
         (SELECT sq1_alias1.pk AS sq1_field2
 
9703
          FROM t1 AS sq1_alias1
 
9704
          WHERE 9 IN
 
9705
             (SELECT SUM(t1_sq1_alias1.pk) AS t1_sq1_field2
 
9706
              FROM t1 AS t1_sq1_alias1
 
9707
             )
 
9708
         )
 
9709
     )
 
9710
     ON alias3.col_varchar_nokey = alias2.col_varchar_key
 
9711
WHERE EXISTS
 
9712
   (SELECT sq2_alias1.pk AS sq2_field1
 
9713
    FROM t1 AS sq2_alias1
 
9714
    WHERE sq2_alias1.col_varchar_key < alias1.col_varchar_nokey
 
9715
   )
 
9716
";
 
9717
EXECUTE stmt;
 
9718
field1
 
9719
NULL
 
9720
EXECUTE stmt;
 
9721
field1
 
9722
NULL
 
9723
DEALLOCATE PREPARE stmt;
 
9724
DROP TABLE t1;
 
9725
# End of test for bug#13955713.
 
9726
#
 
9727
# Bug#13956813: Segfault in memcpy from Join_cache::write_record_data()
 
9728
#
 
9729
CREATE TABLE t1 (
 
9730
pk INT,
 
9731
col_varchar_key VARCHAR(1),
 
9732
col_varchar_nokey VARCHAR(1)
 
9733
);
 
9734
CREATE TABLE t2 (
 
9735
pk INT,
 
9736
col_varchar_key VARCHAR(1),
 
9737
col_varchar_nokey VARCHAR(1)
 
9738
);
 
9739
INSERT INTO t2 VALUES
 
9740
(10,'j','j'), (11,'z','z'), (12,'c','c'), (13,'a','a'),
 
9741
(14,'q','q'), (15,'y','y'), (16,NULL,NULL), (17,'r','r'),
 
9742
(18,'v','v'), (19,NULL,NULL), (20,'r','r');
 
9743
CREATE TABLE t3 (
 
9744
pk INT,
 
9745
col_int_key INT,
 
9746
col_varchar_key VARCHAR(1),
 
9747
KEY col_int_key (col_int_key)
 
9748
);
 
9749
INSERT INTO t3 VALUES
 
9750
(15,NULL,'u'), (16,1,'m'), (17,9,NULL), (18,2,'o'),
 
9751
(19,9,'w'), (20,2,'m'), (21,4,'q'), (22,0,NULL),
 
9752
(23,4,'d'), (24,8,'g'), (25,NULL,'x'), (26,NULL,'f'),
 
9753
(27,0,'p'), (28,NULL,'j'), (29,8,'c');
 
9754
CREATE VIEW view_inline_0 AS
 
9755
SELECT t1.*
 
9756
FROM t1 INNER JOIN t3
 
9757
ON t1.pk = t3.pk;
 
9758
CREATE VIEW view_inline_1 AS
 
9759
SELECT sq2_alias2.col_varchar_key AS sq2_field1,
 
9760
sq2_alias1.col_varchar_key AS sq2_field2
 
9761
FROM t3 AS sq2_alias1 LEFT OUTER JOIN t3 AS sq2_alias2
 
9762
ON sq2_alias1.pk = sq2_alias2.col_int_key;
 
9763
CREATE VIEW view_inline_2 AS
 
9764
SELECT 'p', 'p' UNION SELECT 'k', 's';
 
9765
explain SELECT SUM(alias1.col_varchar_nokey) AS field2
 
9766
FROM t2 AS alias2
 
9767
LEFT JOIN (SELECT * FROM view_inline_0) AS alias1
 
9768
ON alias2.col_varchar_key = alias1.col_varchar_key AND
 
9769
(alias2.col_varchar_nokey, alias2.col_varchar_key) IN
 
9770
(SELECT * FROM view_inline_1
 
9771
)
 
9772
WHERE (alias1.col_varchar_key, alias1.col_varchar_nokey) IN
 
9773
(SELECT * FROM view_inline_2
 
9774
);
 
9775
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
9776
1       PRIMARY <subquery4>     ALL     NULL    NULL    NULL    NULL    NULL    Using where
 
9777
1       PRIMARY <derived2>      ref     <auto_key0>     <auto_key0>     8       <subquery4>.p,<subquery4>.My_exp_p      2       NULL
 
9778
1       PRIMARY alias2  ALL     NULL    NULL    NULL    NULL    11      Using where; Using join buffer (Block Nested Loop)
 
9779
1       PRIMARY <subquery3>     eq_ref  <auto_key>      <auto_key>      8       test.alias2.col_varchar_nokey,<subquery4>.p     1       NULL
 
9780
4       MATERIALIZED    <derived7>      ALL     NULL    NULL    NULL    NULL    2       NULL
 
9781
3       MATERIALIZED    sq2_alias1      ALL     NULL    NULL    NULL    NULL    15      NULL
 
9782
3       MATERIALIZED    sq2_alias2      ref     col_int_key     col_int_key     5       test.sq2_alias1.pk      2       NULL
 
9783
7       DERIVED NULL    NULL    NULL    NULL    NULL    NULL    NULL    No tables used
 
9784
8       UNION   NULL    NULL    NULL    NULL    NULL    NULL    NULL    No tables used
 
9785
NULL    UNION RESULT    <union7,8>      ALL     NULL    NULL    NULL    NULL    NULL    Using temporary
 
9786
2       DERIVED NULL    NULL    NULL    NULL    NULL    NULL    NULL    no matching row in const table
 
9787
SELECT SUM(alias1.col_varchar_nokey) AS field2
 
9788
FROM t2 AS alias2
 
9789
LEFT JOIN (SELECT * FROM view_inline_0) AS alias1
 
9790
ON alias2.col_varchar_key = alias1.col_varchar_key AND
 
9791
(alias2.col_varchar_nokey, alias2.col_varchar_key) IN
 
9792
(SELECT * FROM view_inline_1
 
9793
)
 
9794
WHERE (alias1.col_varchar_key, alias1.col_varchar_nokey) IN
 
9795
(SELECT * FROM view_inline_2
 
9796
);
 
9797
field2
 
9798
NULL
 
9799
DROP VIEW view_inline_0, view_inline_1, view_inline_2;
 
9800
DROP TABLE t1, t2, t3;
 
9801
# End of test for bug#13956813.
 
9802
#
 
9803
# Bug#13974177: Assert !(tab->table->regginfo.not_exists_optimize...
 
9804
#
 
9805
CREATE TABLE t1 (
 
9806
pk INTEGER AUTO_INCREMENT,
 
9807
col_int_nokey INTEGER,
 
9808
col_int_key INTEGER,
 
9809
col_varchar_key VARCHAR(1),
 
9810
col_varchar_nokey VARCHAR(1),
 
9811
PRIMARY KEY (pk),
 
9812
KEY (col_int_key),
 
9813
KEY (col_varchar_key, col_int_key)
 
9814
);
 
9815
INSERT INTO t1(col_int_key, col_int_nokey, col_varchar_key, col_varchar_nokey)
 
9816
VALUES
 
9817
(0, 4, 'j', 'j'), (8, 6, 'v', 'v'), (1, 3, 'c', 'c'), (8, 5, 'm', 'm'),
 
9818
(9, 3, 'd', 'd'), (24, 246, 'd', 'd'), (6, 2, 'y', 'y'), (1, 9, 't', 't'),
 
9819
(6, 3, 'd', 'd'), (2, 8, 's', 's'), (4, 1, 'r', 'r'), (8, 8, 'm', 'm'),
 
9820
(4, 8, 'b', 'b'), (4, 5, 'x', 'x'), (7, 7, 'g', 'g'), (4, 5, 'p', 'p'),
 
9821
(1, 1, 'q', 'q'), (9, 6, 'w', 'w'), (4, 2, 'd', 'd'), (8, 9, 'e', 'e');
 
9822
CREATE TABLE t2 (
 
9823
pk INTEGER AUTO_INCREMENT,
 
9824
col_int_nokey INTEGER NOT NULL,
 
9825
col_time_key TIME NOT NULL,
 
9826
col_time_nokey TIME NOT NULL,
 
9827
PRIMARY KEY (pk),
 
9828
KEY (col_time_key)
 
9829
) ENGINE=InnoDB;
 
9830
INSERT INTO t2 (col_int_nokey, col_time_key, col_time_nokey) VALUES
 
9831
(7, '00:00:00', '00:00:00'), (0, '00:00:00', '00:00:00'),
 
9832
(9, '06:35:17', '06:35:17'), (3, '18:07:14', '18:07:14'),
 
9833
(4, '20:36:52', '20:36:52'), (2, '21:29:07', '21:29:07'),
 
9834
(5, '23:45:57', '23:45:57'), (3, '22:54:57', '22:54:57'),
 
9835
(1, '18:45:09', '18:45:09'), (3, '14:30:46', '14:30:46'),
 
9836
(6, '19:23:43', '19:23:43'), (7, '03:39:30', '03:39:30'),
 
9837
(5, '23:37:52', '23:37:52'), (1, '16:59:30', '16:59:30'),
 
9838
(204, '22:21:15', '22:21:15'), (224, '12:24:37', '12:24:37'),
 
9839
(9, '15:02:08', '15:02:08'), (5, '23:59:59', '23:59:59'),
 
9840
(0, '08:23:30', '08:23:30'), (3, '08:32:22', '08:32:22');
 
9841
explain SELECT ot1.col_int_key AS x
 
9842
FROM t1 AS ot2
 
9843
LEFT JOIN t1 AS ot1
 
9844
ON ot2.col_varchar_nokey > ot1.col_varchar_key
 
9845
WHERE (ot1.col_int_nokey, ot1.pk) IN
 
9846
(SELECT it1.pk AS x,
 
9847
it1.col_int_nokey AS y
 
9848
FROM t2 AS it2
 
9849
LEFT JOIN t2 AS it1
 
9850
ON it2.col_time_nokey = it1.col_time_key
 
9851
) AND ot1.pk IS NULL
 
9852
;
 
9853
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
9854
1       SIMPLE  ot1     const   PRIMARY,col_varchar_key PRIMARY 4       const   1       Using where; Start temporary
 
9855
1       SIMPLE  it1     eq_ref  PRIMARY,col_time_key    PRIMARY 4       test.ot1.col_int_nokey  1       Using where
 
9856
1       SIMPLE  it2     ALL     NULL    NULL    NULL    NULL    20      Using where; End temporary; Using join buffer (Block Nested Loop)
 
9857
1       SIMPLE  ot2     ALL     NULL    NULL    NULL    NULL    20      Using where; Using join buffer (Block Nested Loop)
 
9858
SELECT ot1.col_int_key AS x
 
9859
FROM t1 AS ot2
 
9860
LEFT JOIN t1 AS ot1
 
9861
ON ot2.col_varchar_nokey > ot1.col_varchar_key
 
9862
WHERE (ot1.col_int_nokey, ot1.pk) IN
 
9863
(SELECT it1.pk AS x,
 
9864
it1.col_int_nokey AS y
 
9865
FROM t2 AS it2
 
9866
LEFT JOIN t2 AS it1
 
9867
ON it2.col_time_nokey = it1.col_time_key
 
9868
) AND ot1.pk IS NULL
 
9869
;
 
9870
x
 
9871
DROP TABLE t1, t2;
 
9872
# End of test for bug#13974177.
 
9873
#
 
9874
# Bug#13971022: Assert 'keyparts > 0' failed in create_ref_for_key...
 
9875
#
 
9876
CREATE TABLE t1 (
 
9877
pk INT,
 
9878
col_int_key INT,
 
9879
col_varchar_key VARCHAR(1),
 
9880
PRIMARY KEY (pk),
 
9881
KEY col_varchar_key (col_varchar_key,col_int_key)
 
9882
);
 
9883
CREATE TABLE t2 (
 
9884
pk INT,
 
9885
col_int_key INT,
 
9886
col_varchar_key VARCHAR(1),
 
9887
col_varchar_nokey VARCHAR(1),
 
9888
PRIMARY KEY (pk)
 
9889
) ENGINE=InnoDB;
 
9890
CREATE TABLE t3 (
 
9891
i INT
 
9892
);
 
9893
explain SELECT table1.pk AS field1
 
9894
FROM ( SELECT subquery1_t1. *
 
9895
FROM t2 AS subquery1_t1
 
9896
JOIN t2 AS subquery1_t2
 
9897
ON subquery1_t2.pk = subquery1_t1.pk) AS table1
 
9898
STRAIGHT_JOIN t2 AS table2
 
9899
ON table1.col_int_key IN (SELECT 7 FROM t3)
 
9900
WHERE table1.col_varchar_nokey IN
 
9901
(SELECT subquery3_t1.col_varchar_key AS subquery3_field1
 
9902
FROM t1 AS subquery3_t1
 
9903
)
 
9904
;
 
9905
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
9906
1       PRIMARY subquery3_t1    index   col_varchar_key col_varchar_key 9       NULL    0       Using where; Using index
 
9907
1       PRIMARY <subquery3>     ALL     NULL    NULL    NULL    NULL    NULL    Using join buffer (Block Nested Loop)
 
9908
1       PRIMARY <derived2>      ref     <auto_key0>     <auto_key0>     9       <subquery3>.7,test.subquery3_t1.col_varchar_key 2       Using where
 
9909
1       PRIMARY table2  index   NULL    PRIMARY 4       NULL    1       Using index; Using join buffer (Block Nested Loop)
 
9910
3       MATERIALIZED    t3      ALL     NULL    NULL    NULL    NULL    0       NULL
 
9911
2       DERIVED subquery1_t1    ALL     PRIMARY NULL    NULL    NULL    1       NULL
 
9912
2       DERIVED subquery1_t2    eq_ref  PRIMARY PRIMARY 4       test.subquery1_t1.pk    1       Using index
 
9913
SELECT table1.pk AS field1
 
9914
FROM ( SELECT subquery1_t1. *
 
9915
FROM t2 AS subquery1_t1
 
9916
JOIN t2 AS subquery1_t2
 
9917
ON subquery1_t2.pk = subquery1_t1.pk) AS table1
 
9918
STRAIGHT_JOIN t2 AS table2
 
9919
ON table1.col_int_key IN (SELECT 7 FROM t3)
 
9920
WHERE table1.col_varchar_nokey IN
 
9921
(SELECT subquery3_t1.col_varchar_key AS subquery3_field1
 
9922
FROM t1 AS subquery3_t1
 
9923
)
 
9924
;
 
9925
field1
 
9926
DROP TABLE t1, t2, t3;
 
9927
# End of test for bug#13971022.
 
9928
#
 
9929
# Bug#13623473 "MISSING ROWS ON SELECT AND JOIN WITH
 
9930
# TIME/DATETIME COMPARE" - Subquery part of test.
 
9931
#
 
9932
SET TIMESTAMP=UNIX_TIMESTAMP('2012-01-31 10:14:35');
 
9933
CREATE TABLE t1 (
 
9934
pk INT NOT NULL,
 
9935
col_int_nokey INT,
 
9936
col_int_key INT NOT NULL,
 
9937
PRIMARY KEY (pk),
 
9938
KEY col_int_key (col_int_key)
 
9939
) ENGINE=InnoDB;
 
9940
INSERT INTO t1 VALUES (10,1,7), (11,7,0), (12,4,9), (13,7,3),
 
9941
(14,0,4), (15,2,2), (16,9,5), (17,4,3), (18,0,1), (19,9,3), (20,1,6),
 
9942
(21,3,7), (22,8,5), (23,8,1), (24,18,204), (25,84,224), (26,6,9),
 
9943
(27,3,5), (28,6,0), (29,6,3);
 
9944
CREATE TABLE t2 (
 
9945
col_int_nokey INT NOT NULL,
 
9946
col_datetime_key DATETIME NOT NULL,
 
9947
col_varchar_key VARCHAR(1) NOT NULL,
 
9948
KEY col_datetime_key (col_datetime_key),
 
9949
KEY col_varchar_key (col_varchar_key)
 
9950
) ENGINE=InnoDB;
 
9951
INSERT INTO t2 VALUES (1,'2001-11-04 19:07:55','k');
 
9952
CREATE TABLE t3 (
 
9953
col_time_key TIME,
 
9954
KEY col_time_key (col_time_key)
 
9955
) ENGINE=InnoDB;
 
9956
INSERT INTO t3 VALUES ('21:22:34'), ('10:50:38'), ('00:21:38'),
 
9957
('04:08:02'), ('16:25:11'), ('10:14:58'), ('19:47:59'), ('11:14:24'),
 
9958
('00:00:00'), ('00:00:00'), ('15:57:25'), ('07:05:51'), ('19:22:21'),
 
9959
('03:53:16'), ('09:16:38'), ('15:37:26'), ('00:00:00'), ('05:03:03'),
 
9960
('02:59:24'), ('00:01:58');
 
9961
EXPLAIN EXTENDED SELECT outr.col_int_nokey
 
9962
FROM t2 as outr
 
9963
STRAIGHT_JOIN t3 AS outr2
 
9964
ON outr2.col_time_key > outr.col_datetime_key
 
9965
WHERE outr.col_int_nokey IN (
 
9966
SELECT col_int_key
 
9967
FROM t1 AS innr
 
9968
WHERE innr.pk >= innr.col_int_nokey
 
9969
) AND (
 
9970
outr.col_int_nokey <= 6
 
9971
OR
 
9972
outr.col_varchar_key IS NULL
 
9973
);
 
9974
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
9975
1       SIMPLE  outr    ALL     col_datetime_key        NULL    NULL    NULL    1       100.00  Using where; Start temporary
 
9976
1       SIMPLE  innr    ref     col_int_key     col_int_key     4       test.outr.col_int_nokey 1       100.00  Using where; End temporary
 
9977
1       SIMPLE  outr2   ALL     col_time_key    NULL    NULL    NULL    20      100.00  Range checked for each record (index map: 0x1)
 
9978
Warnings:
 
9979
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`))
 
9980
SELECT outr.col_int_nokey
 
9981
FROM t2 as outr
 
9982
STRAIGHT_JOIN t3 AS outr2
 
9983
ON outr2.col_time_key > outr.col_datetime_key
 
9984
WHERE outr.col_int_nokey IN (
 
9985
SELECT col_int_key
 
9986
FROM t1 AS innr
 
9987
WHERE innr.pk >= innr.col_int_nokey
 
9988
) AND (
 
9989
outr.col_int_nokey <= 6
 
9990
OR
 
9991
outr.col_varchar_key IS NULL
 
9992
);
 
9993
col_int_nokey
 
9994
1
 
9995
1
 
9996
1
 
9997
1
 
9998
1
 
9999
1
 
10000
1
 
10001
1
 
10002
1
 
10003
1
 
10004
1
 
10005
1
 
10006
1
 
10007
1
 
10008
1
 
10009
1
 
10010
1
 
10011
1
 
10012
1
 
10013
1
 
10014
DROP TABLE t1,t2,t3;
 
10015
SET TIMESTAMP = DEFAULT;
 
10016
# End of test for bug#13623473.
 
10017
#
 
10018
# Bug#13980954: Missing data on left join + null value + where..in
 
10019
#
 
10020
CREATE TABLE t1 (
 
10021
ik INT,
 
10022
vc varchar(1)
 
10023
);
 
10024
INSERT INTO t1 VALUES (8, 'x'), (NULL, 'x');
 
10025
CREATE TABLE t2 (
 
10026
ik INT,
 
10027
vc varchar(1)
 
10028
);
 
10029
INSERT INTO t2 VALUES
 
10030
(0, 'x'), (7, 'i'), (7, 'e'), (1, 'p'), (7, 's'), (1, 'j');
 
10031
explain format=json SELECT t2.vc, t2.ik AS t2_ik, t1.ik AS t1_ik
 
10032
FROM t2 LEFT JOIN t1 ON t2.vc=t1.vc
 
10033
WHERE t2.vc IN (SELECT vc FROM t2 AS t3);
 
10034
EXPLAIN
 
10035
{
 
10036
  "query_block": {
 
10037
    "select_id": 1,
 
10038
    "nested_loop": [
 
10039
      {
 
10040
        "table": {
 
10041
          "table_name": "t2",
 
10042
          "access_type": "ALL",
 
10043
          "rows": 6,
 
10044
          "filtered": 100,
 
10045
          "attached_condition": "(`test`.`t2`.`vc` is not null)"
 
10046
        }
 
10047
      },
 
10048
      {
 
10049
        "table": {
 
10050
          "table_name": "<subquery2>",
 
10051
          "access_type": "eq_ref",
 
10052
          "key": "<auto_key>",
 
10053
          "key_length": "4",
 
10054
          "ref": [
 
10055
            "test.t2.vc"
 
10056
          ],
 
10057
          "rows": 1,
 
10058
          "materialized_from_subquery": {
 
10059
            "using_temporary_table": true,
 
10060
            "query_block": {
 
10061
              "table": {
 
10062
                "table_name": "t3",
 
10063
                "access_type": "ALL",
 
10064
                "rows": 6,
 
10065
                "filtered": 100
 
10066
              }
 
10067
            }
 
10068
          }
 
10069
        }
 
10070
      },
 
10071
      {
 
10072
        "table": {
 
10073
          "table_name": "t1",
 
10074
          "access_type": "ALL",
 
10075
          "rows": 2,
 
10076
          "filtered": 100,
 
10077
          "using_join_buffer": "Block Nested Loop",
 
10078
          "attached_condition": "<if>(is_not_null_compl(t1), (`test`.`t1`.`vc` = `test`.`t2`.`vc`), true)"
 
10079
        }
 
10080
      }
 
10081
    ]
 
10082
  }
 
10083
}
 
10084
Warnings:
 
10085
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`)
 
10086
SELECT t2.vc, t2.ik AS t2_ik, t1.ik AS t1_ik
 
10087
FROM t2 LEFT JOIN t1 ON t2.vc=t1.vc
 
10088
WHERE t2.vc IN (SELECT vc FROM t2 AS t3);
 
10089
vc      t2_ik   t1_ik
 
10090
x       0       8
 
10091
x       0       NULL
 
10092
i       7       NULL
 
10093
e       7       NULL
 
10094
p       1       NULL
 
10095
s       7       NULL
 
10096
j       1       NULL
 
10097
DROP TABLE t1, t2;
 
10098
# End of test for bug#13980954.
 
10099
#
 
10100
# Bug#14048292: Segfault in Item_field::result_type on 2nd execution
 
10101
#               of prep stmt with join of view
 
10102
#
 
10103
CREATE TABLE t1 (
 
10104
col_int INT
 
10105
);
 
10106
INSERT INTO t1 VALUES (0), (1);
 
10107
CREATE VIEW view_t1 AS SELECT * FROM t1;
 
10108
explain SELECT alias1.col_int
 
10109
FROM t1 AS alias1
 
10110
LEFT JOIN view_t1 AS alias2
 
10111
ON alias1.col_int IN
 
10112
(SELECT sq1_alias1.col_int
 
10113
FROM t1 AS sq1_alias1
 
10114
);
 
10115
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
10116
1       SIMPLE  alias1  ALL     NULL    NULL    NULL    NULL    2       Start temporary
 
10117
1       SIMPLE  sq1_alias1      ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
10118
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       End temporary; Using join buffer (Block Nested Loop)
 
10119
PREPARE stmt FROM "SELECT alias1.col_int
 
10120
FROM t1 AS alias1
 
10121
LEFT JOIN view_t1 AS alias2
 
10122
ON alias1.col_int IN
 
10123
(SELECT sq1_alias1.col_int
 
10124
FROM t1 AS sq1_alias1
 
10125
)";
 
10126
EXECUTE stmt;
 
10127
col_int
 
10128
0
 
10129
1
 
10130
0
 
10131
1
 
10132
EXECUTE stmt;
 
10133
col_int
 
10134
0
 
10135
1
 
10136
0
 
10137
1
 
10138
DEALLOCATE PREPARE stmt;
 
10139
DROP VIEW view_t1;
 
10140
DROP TABLE t1;
 
10141
# End of test for bug#14048292.
 
10142
#
 
10143
# Bug#14064201: Missing data on join of derived table + WHERE .. IN
 
10144
#               with two operands
 
10145
#
 
10146
CREATE TABLE t1 (
 
10147
col_varchar_nokey VARCHAR(1)
 
10148
);
 
10149
INSERT INTO t1 VALUES
 
10150
('v'), ('s'), ('l'), ('y'), ('c'), ('i'), ('h'), ('q'), ('a'), ('v'),
 
10151
('u'), ('s'), ('y'), ('z'), ('h'), ('p'), ('e'), ('i'), ('y'), ('w');
 
10152
CREATE TABLE t2 (
 
10153
col_varchar_key VARCHAR(1),
 
10154
col_varchar_nokey VARCHAR(1),
 
10155
KEY col_varchar_key(col_varchar_key)
 
10156
);
 
10157
INSERT INTO t2 VALUES
 
10158
('j','j'), ('v','v'), ('c','c'), ('m','m'), ('d','d'), ('d','d'), ('y','y');
 
10159
explain format=json SELECT *
 
10160
FROM (SELECT * FROM t2) AS derived1
 
10161
LEFT JOIN t1
 
10162
USING (col_varchar_nokey)
 
10163
WHERE (col_varchar_nokey, col_varchar_nokey) IN
 
10164
(SELECT col_varchar_nokey, col_varchar_key
 
10165
FROM t2 AS derived2
 
10166
);
 
10167
EXPLAIN
 
10168
{
 
10169
  "query_block": {
 
10170
    "select_id": 1,
 
10171
    "nested_loop": [
 
10172
      {
 
10173
        "table": {
 
10174
          "table_name": "<subquery3>",
 
10175
          "access_type": "ALL",
 
10176
          "attached_condition": "((`<subquery3>`.`col_varchar_key` = `<subquery3>`.`col_varchar_nokey`) and (`<subquery3>`.`col_varchar_nokey` is not null))",
 
10177
          "materialized_from_subquery": {
 
10178
            "using_temporary_table": true,
 
10179
            "query_block": {
 
10180
              "table": {
 
10181
                "table_name": "derived2",
 
10182
                "access_type": "ALL",
 
10183
                "possible_keys": [
 
10184
                  "col_varchar_key"
 
10185
                ],
 
10186
                "rows": 7,
 
10187
                "filtered": 100,
 
10188
                "attached_condition": "(`test`.`derived2`.`col_varchar_key` = `test`.`derived2`.`col_varchar_nokey`)"
 
10189
              }
 
10190
            }
 
10191
          }
 
10192
        }
 
10193
      },
 
10194
      {
 
10195
        "table": {
 
10196
          "table_name": "derived1",
 
10197
          "access_type": "ref",
 
10198
          "possible_keys": [
 
10199
            "<auto_key0>"
 
10200
          ],
 
10201
          "key": "<auto_key0>",
 
10202
          "used_key_parts": [
 
10203
            "col_varchar_nokey"
 
10204
          ],
 
10205
          "key_length": "4",
 
10206
          "ref": [
 
10207
            "<subquery3>.col_varchar_nokey"
 
10208
          ],
 
10209
          "rows": 2,
 
10210
          "filtered": 100,
 
10211
          "materialized_from_subquery": {
 
10212
            "using_temporary_table": true,
 
10213
            "dependent": false,
 
10214
            "cacheable": true,
 
10215
            "query_block": {
 
10216
              "select_id": 2,
 
10217
              "table": {
 
10218
                "table_name": "t2",
 
10219
                "access_type": "ALL",
 
10220
                "rows": 7,
 
10221
                "filtered": 100
 
10222
              }
 
10223
            }
 
10224
          }
 
10225
        }
 
10226
      },
 
10227
      {
 
10228
        "table": {
 
10229
          "table_name": "t1",
 
10230
          "access_type": "ALL",
 
10231
          "rows": 20,
 
10232
          "filtered": 100,
 
10233
          "using_join_buffer": "Block Nested Loop",
 
10234
          "attached_condition": "<if>(is_not_null_compl(t1), (`test`.`t1`.`col_varchar_nokey` = `derived1`.`col_varchar_nokey`), true)"
 
10235
        }
 
10236
      }
 
10237
    ]
 
10238
  }
 
10239
}
 
10240
Warnings:
 
10241
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`))
 
10242
SELECT *
 
10243
FROM (SELECT * FROM t2) AS derived1
 
10244
LEFT JOIN t1
 
10245
USING (col_varchar_nokey)
 
10246
WHERE (col_varchar_nokey, col_varchar_nokey) IN
 
10247
(SELECT col_varchar_nokey, col_varchar_key
 
10248
FROM t2 AS derived2
 
10249
);
 
10250
col_varchar_nokey       col_varchar_key
 
10251
v       v
 
10252
y       y
 
10253
c       c
 
10254
v       v
 
10255
y       y
 
10256
y       y
 
10257
j       j
 
10258
m       m
 
10259
d       d
 
10260
d       d
 
10261
DROP TABLE t1, t2;
 
10262
CREATE TABLE t1 (
 
10263
col_int_nokey int NOT NULL,
 
10264
col_int_key int NOT NULL,
 
10265
KEY col_int_key (col_int_key)
 
10266
);
 
10267
INSERT INTO t1 VALUES
 
10268
(1,7), (7,0), (4,9), (7,3), (0,4), (2,2), (9,5), (4,3), (0,1), (9,3),
 
10269
(1,6), (3,7), (8,5), (8,1), (18,204), (84,224), (6,9), (3,5), (6,0), (6,3);
 
10270
CREATE TABLE t2 (
 
10271
col_int_nokey int NOT NULL,
 
10272
col_int_key int NOT NULL,
 
10273
KEY col_int_key (col_int_key)
 
10274
);
 
10275
INSERT INTO t2 VALUES
 
10276
(4,0), (6,8), (3,1), (5,8), (3,9), (246,24), (2,6), (9,1), (3,6), (8,2),
 
10277
(1,4), (8,8), (8,4), (5,4), (7,7), (5,4), (1,1), (6,9), (2,4), (9,8);
 
10278
explain format=json SELECT grandparent1.*
 
10279
FROM t1 AS grandparent1
 
10280
LEFT JOIN t1 USING (col_int_nokey)
 
10281
WHERE (col_int_nokey, col_int_nokey) IN
 
10282
(SELECT col_int_nokey, col_int_key
 
10283
FROM t2
 
10284
);
 
10285
EXPLAIN
 
10286
{
 
10287
  "query_block": {
 
10288
    "select_id": 1,
 
10289
    "nested_loop": [
 
10290
      {
 
10291
        "table": {
 
10292
          "table_name": "grandparent1",
 
10293
          "access_type": "ALL",
 
10294
          "rows": 20,
 
10295
          "filtered": 100,
 
10296
          "attached_condition": "((`test`.`grandparent1`.`col_int_nokey` is not null) and (`test`.`grandparent1`.`col_int_nokey` is not null))"
 
10297
        }
 
10298
      },
 
10299
      {
 
10300
        "table": {
 
10301
          "table_name": "<subquery2>",
 
10302
          "access_type": "eq_ref",
 
10303
          "key": "<auto_key>",
 
10304
          "key_length": "8",
 
10305
          "ref": [
 
10306
            "test.grandparent1.col_int_nokey",
 
10307
            "test.grandparent1.col_int_nokey"
 
10308
          ],
 
10309
          "rows": 1,
 
10310
          "materialized_from_subquery": {
 
10311
            "using_temporary_table": true,
 
10312
            "query_block": {
 
10313
              "table": {
 
10314
                "table_name": "t2",
 
10315
                "access_type": "ALL",
 
10316
                "possible_keys": [
 
10317
                  "col_int_key"
 
10318
                ],
 
10319
                "rows": 20,
 
10320
                "filtered": 100,
 
10321
                "attached_condition": "(`test`.`t2`.`col_int_key` = `test`.`t2`.`col_int_nokey`)"
 
10322
              }
 
10323
            }
 
10324
          }
 
10325
        }
 
10326
      },
 
10327
      {
 
10328
        "table": {
 
10329
          "table_name": "t1",
 
10330
          "access_type": "ALL",
 
10331
          "rows": 20,
 
10332
          "filtered": 100,
 
10333
          "using_join_buffer": "Block Nested Loop",
 
10334
          "attached_condition": "<if>(is_not_null_compl(t1), (`test`.`t1`.`col_int_nokey` = `test`.`grandparent1`.`col_int_nokey`), true)"
 
10335
        }
 
10336
      }
 
10337
    ]
 
10338
  }
 
10339
}
 
10340
Warnings:
 
10341
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`))
 
10342
SELECT grandparent1.*
 
10343
FROM t1 AS grandparent1
 
10344
LEFT JOIN t1 USING (col_int_nokey)
 
10345
WHERE (col_int_nokey, col_int_nokey) IN
 
10346
(SELECT col_int_nokey, col_int_key
 
10347
FROM t2
 
10348
);
 
10349
col_int_nokey   col_int_key
 
10350
1       7
 
10351
1       6
 
10352
7       0
 
10353
7       3
 
10354
7       0
 
10355
7       3
 
10356
1       7
 
10357
1       6
 
10358
8       5
 
10359
8       1
 
10360
8       5
 
10361
8       1
 
10362
DROP TABLE t1, t2;
 
10363
CREATE TABLE t1 (  
 
10364
pk int,  
 
10365
col_int_key int,  
 
10366
col_datetime_key datetime,  
 
10367
col_varchar_key varchar(1),  
 
10368
col_varchar_nokey varchar(1),  
 
10369
PRIMARY KEY (pk),  
 
10370
KEY col_int_key (col_int_key),  
 
10371
KEY col_datetime_key (col_datetime_key),  
 
10372
KEY col_varchar_key (col_varchar_key,col_int_key)
 
10373
) engine=MyISAM;
 
10374
INSERT INTO t1 VALUES
 
10375
(10,7,'2004-06-06 04:22:12','v','v'), (11,0,'2005-11-13 01:12:31','s','s'),
 
10376
(12,9,'2002-05-04 01:50:00','l','l'), (13,3,'2004-10-27 10:28:45','y','y'),
 
10377
(14,4,'2006-07-22 05:24:23','c','c'), (15,2,'2002-05-16 21:34:03','i','i'),
 
10378
(16,5,'2008-04-17 10:45:30','h','h'), (17,3,'2009-04-21 02:58:02','q','q'),
 
10379
(18,1,'2008-01-11 11:01:51','a','a'), (19,3,'1900-01-01 00:00:00','v','v'),
 
10380
(20,6,'2007-05-17 18:24:57','u','u'), (21,7,'2007-08-07 00:00:00','s','s'),
 
10381
(22,5,'2001-08-28 00:00:00','y','y'), (23,1,'2004-04-16 00:27:28','z','z'),
 
10382
(24,204,'2005-05-03 07:06:22','h','h'), (25,224,'2009-03-11 17:09:50','p','p'),
 
10383
(26,9,'2007-12-08 01:54:28','e','e'), (27,5,'2009-07-28 18:19:54','i','i'),
 
10384
(28,0,'2008-06-08 00:00:00','y','y'), (29,3,'2005-02-09 09:20:26','w','w');
 
10385
CREATE TABLE t2 (
 
10386
pk int,
 
10387
col_int_key int,
 
10388
col_datetime_key datetime,
 
10389
col_varchar_key varchar(1),
 
10390
col_varchar_nokey varchar(1),
 
10391
PRIMARY KEY (pk),
 
10392
KEY col_int_key (col_int_key),
 
10393
KEY col_datetime_key (col_datetime_key),
 
10394
KEY col_varchar_key (col_varchar_key,col_int_key)
 
10395
) engine=MyISAM;
 
10396
INSERT INTO t2 VALUES
 
10397
(1,0,'2002-02-13 17:30:06','j','j'), (2,8,'2008-09-27 00:34:58','v','v'),
 
10398
(3,1,'2007-05-28 00:00:00','c','c'), (4,8,'2009-07-25 09:21:20','m','m'),
 
10399
(5,9,'2002-01-16 00:00:00','d','d'), (6,24,'2006-10-12 04:32:53','d','d'),
 
10400
(7,6,'2001-02-15 03:08:38','y','y'), (8,1,'2004-10-02 20:31:15','t','t'),
 
10401
(9,6,'2002-08-20 22:48:00','d','d'), (10,2,'1900-01-01 00:00:00','s','s'),
 
10402
(11,4,'2005-08-15 00:00:00','r','r'), (12,8,'1900-01-01 00:00:00','m','m'),
 
10403
(13,4,'2008-05-16 08:09:06','b','b'), (14,4,'2001-01-20 12:47:23','x','x'),
 
10404
(15,7,'2008-07-02 00:00:00','g','g'), (16,4,'1900-01-01 00:00:00','p','p'),
 
10405
(17,1,'2002-12-08 11:34:58','q','q'), (18,9,'1900-01-01 00:00:00','w','w'),
 
10406
(19,4,'1900-01-01 00:00:00','d','d'), (20,8,'2002-08-25 20:35:06','e','e');
 
10407
SELECT alias1.col_datetime_key
 
10408
FROM t2 AS alias1
 
10409
RIGHT JOIN t2 AS alias2
 
10410
JOIN t2 AS alias3
 
10411
ON alias3.pk = alias2.pk
 
10412
ON alias3.col_varchar_nokey = alias2.col_varchar_key OR
 
10413
alias2.col_varchar_nokey
 
10414
WHERE (alias2.col_varchar_key, alias2.col_varchar_key) IN
 
10415
(SELECT sq2_alias2.col_varchar_key, sq2_alias1.col_varchar_nokey
 
10416
FROM t1 AS sq2_alias1, t1 AS sq2_alias2
 
10417
WHERE sq2_alias2.col_int_key < 2);
 
10418
col_datetime_key
 
10419
1900-01-01 00:00:00
 
10420
1900-01-01 00:00:00
 
10421
1900-01-01 00:00:00
 
10422
1900-01-01 00:00:00
 
10423
1900-01-01 00:00:00
 
10424
1900-01-01 00:00:00
 
10425
1900-01-01 00:00:00
 
10426
1900-01-01 00:00:00
 
10427
1900-01-01 00:00:00
 
10428
1900-01-01 00:00:00
 
10429
2001-01-20 12:47:23
 
10430
2001-01-20 12:47:23
 
10431
2001-02-15 03:08:38
 
10432
2001-02-15 03:08:38
 
10433
2002-01-16 00:00:00
 
10434
2002-01-16 00:00:00
 
10435
2002-02-13 17:30:06
 
10436
2002-02-13 17:30:06
 
10437
2002-08-20 22:48:00
 
10438
2002-08-20 22:48:00
 
10439
2002-08-25 20:35:06
 
10440
2002-08-25 20:35:06
 
10441
2002-12-08 11:34:58
 
10442
2002-12-08 11:34:58
 
10443
2004-10-02 20:31:15
 
10444
2004-10-02 20:31:15
 
10445
2005-08-15 00:00:00
 
10446
2005-08-15 00:00:00
 
10447
2006-10-12 04:32:53
 
10448
2006-10-12 04:32:53
 
10449
2007-05-28 00:00:00
 
10450
2007-05-28 00:00:00
 
10451
2008-05-16 08:09:06
 
10452
2008-05-16 08:09:06
 
10453
2008-07-02 00:00:00
 
10454
2008-07-02 00:00:00
 
10455
2008-09-27 00:34:58
 
10456
2008-09-27 00:34:58
 
10457
2009-07-25 09:21:20
 
10458
2009-07-25 09:21:20
 
10459
ALTER TABLE t1 DISABLE KEYS;
 
10460
ALTER TABLE t2 DISABLE KEYS;
 
10461
explain format=json SELECT alias1.col_datetime_key
 
10462
FROM t2 AS alias1
 
10463
RIGHT JOIN t2 AS alias2
 
10464
JOIN t2 AS alias3
 
10465
ON alias3.pk = alias2.pk
 
10466
ON alias3.col_varchar_nokey = alias2.col_varchar_key OR
 
10467
alias2.col_varchar_nokey
 
10468
WHERE (alias2.col_varchar_key, alias2.col_varchar_key) IN
 
10469
(SELECT sq2_alias2.col_varchar_key, sq2_alias1.col_varchar_nokey
 
10470
FROM t1 AS sq2_alias1, t1 AS sq2_alias2
 
10471
WHERE sq2_alias2.col_int_key < 2);
 
10472
EXPLAIN
 
10473
{
 
10474
  "query_block": {
 
10475
    "select_id": 1,
 
10476
    "nested_loop": [
 
10477
      {
 
10478
        "table": {
 
10479
          "table_name": "<subquery2>",
 
10480
          "access_type": "ALL",
 
10481
          "attached_condition": "(`<subquery2>`.`col_varchar_nokey` = `<subquery2>`.`col_varchar_key`)",
 
10482
          "materialized_from_subquery": {
 
10483
            "using_temporary_table": true,
 
10484
            "query_block": {
 
10485
              "nested_loop": [
 
10486
                {
 
10487
                  "table": {
 
10488
                    "table_name": "sq2_alias1",
 
10489
                    "access_type": "ALL",
 
10490
                    "rows": 20,
 
10491
                    "filtered": 100
 
10492
                  }
 
10493
                },
 
10494
                {
 
10495
                  "table": {
 
10496
                    "table_name": "sq2_alias2",
 
10497
                    "access_type": "ALL",
 
10498
                    "rows": 20,
 
10499
                    "filtered": 100,
 
10500
                    "using_join_buffer": "Block Nested Loop",
 
10501
                    "attached_condition": "((`test`.`sq2_alias2`.`col_varchar_key` = `test`.`sq2_alias1`.`col_varchar_nokey`) and (`test`.`sq2_alias2`.`col_int_key` < 2))"
 
10502
                  }
 
10503
                }
 
10504
              ]
 
10505
            }
 
10506
          }
 
10507
        }
 
10508
      },
 
10509
      {
 
10510
        "table": {
 
10511
          "table_name": "alias2",
 
10512
          "access_type": "ALL",
 
10513
          "possible_keys": [
 
10514
            "PRIMARY"
 
10515
          ],
 
10516
          "rows": 20,
 
10517
          "filtered": 100,
 
10518
          "using_join_buffer": "Block Nested Loop",
 
10519
          "attached_condition": "(`test`.`alias2`.`col_varchar_key` = `<subquery2>`.`col_varchar_key`)"
 
10520
        }
 
10521
      },
 
10522
      {
 
10523
        "table": {
 
10524
          "table_name": "alias3",
 
10525
          "access_type": "eq_ref",
 
10526
          "possible_keys": [
 
10527
            "PRIMARY"
 
10528
          ],
 
10529
          "key": "PRIMARY",
 
10530
          "used_key_parts": [
 
10531
            "pk"
 
10532
          ],
 
10533
          "key_length": "4",
 
10534
          "ref": [
 
10535
            "test.alias2.pk"
 
10536
          ],
 
10537
          "rows": 1,
 
10538
          "filtered": 100
 
10539
        }
 
10540
      },
 
10541
      {
 
10542
        "table": {
 
10543
          "table_name": "alias1",
 
10544
          "access_type": "ALL",
 
10545
          "rows": 20,
 
10546
          "filtered": 100,
 
10547
          "using_join_buffer": "Block Nested Loop",
 
10548
          "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)"
 
10549
        }
 
10550
      }
 
10551
    ]
 
10552
  }
 
10553
}
 
10554
Warnings:
 
10555
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))
 
10556
SELECT alias1.col_datetime_key
 
10557
FROM t2 AS alias1
 
10558
RIGHT JOIN t2 AS alias2
 
10559
JOIN t2 AS alias3
 
10560
ON alias3.pk = alias2.pk
 
10561
ON alias3.col_varchar_nokey = alias2.col_varchar_key OR
 
10562
alias2.col_varchar_nokey
 
10563
WHERE (alias2.col_varchar_key, alias2.col_varchar_key) IN
 
10564
(SELECT sq2_alias2.col_varchar_key, sq2_alias1.col_varchar_nokey
 
10565
FROM t1 AS sq2_alias1, t1 AS sq2_alias2
 
10566
WHERE sq2_alias2.col_int_key < 2);
 
10567
col_datetime_key
 
10568
2002-02-13 17:30:06
 
10569
2002-02-13 17:30:06
 
10570
2008-09-27 00:34:58
 
10571
2008-09-27 00:34:58
 
10572
2007-05-28 00:00:00
 
10573
2007-05-28 00:00:00
 
10574
2009-07-25 09:21:20
 
10575
2009-07-25 09:21:20
 
10576
2002-01-16 00:00:00
 
10577
2002-01-16 00:00:00
 
10578
2006-10-12 04:32:53
 
10579
2006-10-12 04:32:53
 
10580
2001-02-15 03:08:38
 
10581
2001-02-15 03:08:38
 
10582
2004-10-02 20:31:15
 
10583
2004-10-02 20:31:15
 
10584
2002-08-20 22:48:00
 
10585
2002-08-20 22:48:00
 
10586
1900-01-01 00:00:00
 
10587
1900-01-01 00:00:00
 
10588
2005-08-15 00:00:00
 
10589
2005-08-15 00:00:00
 
10590
1900-01-01 00:00:00
 
10591
1900-01-01 00:00:00
 
10592
2008-05-16 08:09:06
 
10593
2008-05-16 08:09:06
 
10594
2001-01-20 12:47:23
 
10595
2001-01-20 12:47:23
 
10596
2008-07-02 00:00:00
 
10597
2008-07-02 00:00:00
 
10598
1900-01-01 00:00:00
 
10599
1900-01-01 00:00:00
 
10600
2002-12-08 11:34:58
 
10601
2002-12-08 11:34:58
 
10602
1900-01-01 00:00:00
 
10603
1900-01-01 00:00:00
 
10604
1900-01-01 00:00:00
 
10605
1900-01-01 00:00:00
 
10606
2002-08-25 20:35:06
 
10607
2002-08-25 20:35:06
 
10608
DROP TABLE t1, t2;
 
10609
# End of test for bug#14064201.
 
10610
set @@optimizer_switch=@old_opt_switch;
 
10611
# End of 5.6 tests
 
10612
set optimizer_switch=default;
 
10613
set optimizer_switch=default;