~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to tests/r/subselect_mat.result

  • Committer: Stewart Smith
  • Author(s): Marko Mäkelä
  • Date: 2010-12-20 03:21:44 UTC
  • mto: (2021.1.2 build)
  • mto: This revision was merged to the branch mainline in revision 2022.
  • Revision ID: stewart@flamingspork.com-20101220032144-7aqh2z403u7d7bdp
Merge Revision revid:marko.makela@oracle.com-20101104131215-pfxnpidlrzd4krg0 from MySQL InnoDB

Original revid:marko.makela@oracle.com-20101104131215-pfxnpidlrzd4krg0

Original Authors: Marko Mäkelä <marko.makela@oracle.com>
Original commit message:
row_ins_index_entry(): Note that only CREATE INDEX sets foreign=FALSE.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
drop table if exists t1, t2, t3, t1i, t2i, t3i;
2
2
create table t1 (a1 char(8), a2 char(8));
3
 
create table t2 (b1 char(8), b2 char(8));
 
3
create temporary table t2 (b1 char(8), b2 char(8)) ENGINE=MyISAM;
4
4
create table t3 (c1 char(8), c2 char(8));
5
5
insert into t1 values ('1 - 00', '2 - 00');
6
6
insert into t1 values ('1 - 01', '2 - 01');
14
14
insert into t3 values ('1 - 02', '2 - 02');
15
15
insert into t3 values ('1 - 03', '2 - 03');
16
16
insert into t3 values ('1 - 04', '2 - 04');
17
 
create table t1i (a1 char(8), a2 char(8));
 
17
create temporary table t1i (a1 char(8), a2 char(8)) ENGINE=MyISAM;
18
18
create table t2i (b1 char(8), b2 char(8));
19
 
create table t3i (c1 char(8), c2 char(8));
 
19
create temporary table t3i (c1 char(8), c2 char(8)) ENGINE=MyISAM;
20
20
create index it1i1 on t1i (a1);
21
21
create index it1i2 on t1i (a2);
22
22
create index it1i3 on t1i (a1, a2);
29
29
insert into t1i select * from t1;
30
30
insert into t2i select * from t2;
31
31
insert into t3i select * from t3;
32
 
set @@optimizer_switch=no_semijoin;
33
 
/******************************************************************************
 
32
/********************************************************************
34
33
* Simple tests.
35
 
******************************************************************************/
 
34
********************************************************************/
36
35
# non-indexed nullable fields
37
36
explain extended
38
37
select * from t1 where a1 in (select b1 from t2 where b1 > '0');
39
38
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
40
 
1       PRIMARY t1      ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
41
 
2       SUBQUERY        t2      ALL     NULL    NULL    NULL    NULL    5       100.00  Using where
 
39
1       PRIMARY t1      ALL     NULL    NULL    NULL    NULL    #       100.00  Using where
 
40
2       SUBQUERY        t2      ALL     NULL    NULL    NULL    NULL    #       100.00  Using where
42
41
Warnings:
43
 
Note    1003    select "test"."t1"."a1" AS "a1","test"."t1"."a2" AS "a2" from "test"."t1" where <in_optimizer>("test"."t1"."a1","test"."t1"."a1" in ( <materialize> (select "test"."t2"."b1" AS "b1" from "test"."t2" where ("test"."t2"."b1" > '0') ), <primary_index_lookup>("test"."t1"."a1" in <temporary table> on distinct_key)))
 
42
Note    1003    select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2` from `test`.`t1` where <in_optimizer>(`test`.`t1`.`a1`,`test`.`t1`.`a1` in ( <materialize> (select `test`.`t2`.`b1` AS `b1` from `test`.`t2` where (`test`.`t2`.`b1` > '0') ), <primary_index_lookup>(`test`.`t1`.`a1` in <temporary table> on distinct_key)))
44
43
select * from t1 where a1 in (select b1 from t2 where b1 > '0');
45
44
a1      a2
46
45
1 - 01  2 - 01
48
47
explain extended
49
48
select * from t1 where a1 in (select b1 from t2 where b1 > '0' group by b1);
50
49
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
51
 
1       PRIMARY t1      ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
52
 
2       SUBQUERY        t2      ALL     NULL    NULL    NULL    NULL    5       100.00  Using where; Using temporary; Using filesort
 
50
1       PRIMARY t1      ALL     NULL    NULL    NULL    NULL    #       100.00  Using where
 
51
2       SUBQUERY        t2      ALL     NULL    NULL    NULL    NULL    #       100.00  Using where; Using temporary; Using filesort
53
52
Warnings:
54
 
Note    1003    select "test"."t1"."a1" AS "a1","test"."t1"."a2" AS "a2" from "test"."t1" where <in_optimizer>("test"."t1"."a1","test"."t1"."a1" in ( <materialize> (select "test"."t2"."b1" AS "b1" from "test"."t2" where ("test"."t2"."b1" > '0') group by "test"."t2"."b1" ), <primary_index_lookup>("test"."t1"."a1" in <temporary table> on distinct_key)))
 
53
Note    1003    select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2` from `test`.`t1` where <in_optimizer>(`test`.`t1`.`a1`,`test`.`t1`.`a1` in ( <materialize> (select `test`.`t2`.`b1` AS `b1` from `test`.`t2` where (`test`.`t2`.`b1` > '0') group by `test`.`t2`.`b1` ), <primary_index_lookup>(`test`.`t1`.`a1` in <temporary table> on distinct_key)))
55
54
select * from t1 where a1 in (select b1 from t2 where b1 > '0' group by b1);
56
55
a1      a2
57
56
1 - 01  2 - 01
59
58
explain extended
60
59
select * from t1 where (a1, a2) in (select b1, b2 from t2 where b1 > '0' group by b1, b2);
61
60
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
62
 
1       PRIMARY t1      ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
63
 
2       SUBQUERY        t2      ALL     NULL    NULL    NULL    NULL    5       100.00  Using where; Using temporary; Using filesort
 
61
1       PRIMARY t1      ALL     NULL    NULL    NULL    NULL    #       100.00  Using where
 
62
2       SUBQUERY        t2      ALL     NULL    NULL    NULL    NULL    #       100.00  Using where; Using temporary; Using filesort
64
63
Warnings:
65
 
Note    1003    select "test"."t1"."a1" AS "a1","test"."t1"."a2" AS "a2" from "test"."t1" where <in_optimizer>(("test"."t1"."a1","test"."t1"."a2"),("test"."t1"."a1","test"."t1"."a2") in ( <materialize> (select "test"."t2"."b1" AS "b1","test"."t2"."b2" AS "b2" from "test"."t2" where ("test"."t2"."b1" > '0') group by "test"."t2"."b1","test"."t2"."b2" ), <primary_index_lookup>("test"."t1"."a1" in <temporary table> on distinct_key)))
 
64
Note    1003    select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2` from `test`.`t1` where <in_optimizer>((`test`.`t1`.`a1`,`test`.`t1`.`a2`),(`test`.`t1`.`a1`,`test`.`t1`.`a2`) in ( <materialize> (select `test`.`t2`.`b1` AS `b1`,`test`.`t2`.`b2` AS `b2` from `test`.`t2` where (`test`.`t2`.`b1` > '0') group by `test`.`t2`.`b1`,`test`.`t2`.`b2` ), <primary_index_lookup>(`test`.`t1`.`a1` in <temporary table> on distinct_key)))
66
65
select * from t1 where (a1, a2) in (select b1, b2 from t2 where b1 > '0' group by b1, b2);
67
66
a1      a2
68
67
1 - 01  2 - 01
70
69
explain extended
71
70
select * from t1 where (a1, a2) in (select b1, min(b2) from t2 where b1 > '0' group by b1);
72
71
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
73
 
1       PRIMARY t1      ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
74
 
2       SUBQUERY        t2      ALL     NULL    NULL    NULL    NULL    5       100.00  Using where; Using temporary; Using filesort
75
 
Warnings:
76
 
Note    1003    select "test"."t1"."a1" AS "a1","test"."t1"."a2" AS "a2" from "test"."t1" where <in_optimizer>(("test"."t1"."a1","test"."t1"."a2"),("test"."t1"."a1","test"."t1"."a2") in ( <materialize> (select "test"."t2"."b1" AS "b1",min("test"."t2"."b2") AS "min(b2)" from "test"."t2" where ("test"."t2"."b1" > '0') group by "test"."t2"."b1" ), <primary_index_lookup>("test"."t1"."a1" in <temporary table> on distinct_key)))
 
72
1       PRIMARY t1      ALL     NULL    NULL    NULL    NULL    #       100.00  Using where
 
73
2       SUBQUERY        t2      ALL     NULL    NULL    NULL    NULL    #       100.00  Using where; Using temporary; Using filesort
 
74
Warnings:
 
75
Note    1003    select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2` from `test`.`t1` where <in_optimizer>((`test`.`t1`.`a1`,`test`.`t1`.`a2`),(`test`.`t1`.`a1`,`test`.`t1`.`a2`) in ( <materialize> (select `test`.`t2`.`b1` AS `b1`,min(`test`.`t2`.`b2`) AS `min(b2)` from `test`.`t2` where (`test`.`t2`.`b1` > '0') group by `test`.`t2`.`b1` ), <primary_index_lookup>(`test`.`t1`.`a1` in <temporary table> on distinct_key)))
77
76
select * from t1 where (a1, a2) in (select b1, min(b2) from t2 where b1 > '0' group by b1);
78
 
a1      a2
79
 
1 - 01  2 - 01
80
 
1 - 02  2 - 02
81
 
explain extended
82
 
select * from t1i where a1 in (select b1 from t2i where b1 > '0');
83
 
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
84
 
1       PRIMARY t1i     index   NULL    it1i3   18      NULL    3       100.00  Using where; Using index
85
 
2       SUBQUERY        t2i     index   it2i1,it2i3     it2i1   9       NULL    5       100.00  Using where; Using index
86
 
Warnings:
87
 
Note    1003    select "test"."t1i"."a1" AS "a1","test"."t1i"."a2" AS "a2" from "test"."t1i" where <in_optimizer>("test"."t1i"."a1","test"."t1i"."a1" in ( <materialize> (select "test"."t2i"."b1" AS "b1" from "test"."t2i" where ("test"."t2i"."b1" > '0') ), <primary_index_lookup>("test"."t1i"."a1" in <temporary table> on distinct_key)))
88
 
select * from t1i where a1 in (select b1 from t2i where b1 > '0');
89
 
a1      a2
90
 
1 - 01  2 - 01
91
 
1 - 02  2 - 02
92
 
explain extended
93
 
select * from t1i where a1 in (select b1 from t2i where b1 > '0' group by b1);
94
 
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
95
 
1       PRIMARY t1i     index   NULL    it1i3   18      NULL    3       100.00  Using where; Using index
96
 
2       SUBQUERY        t2i     range   it2i1,it2i3     it2i1   9       NULL    3       100.00  Using where; Using index for group-by
97
 
Warnings:
98
 
Note    1003    select "test"."t1i"."a1" AS "a1","test"."t1i"."a2" AS "a2" from "test"."t1i" where <in_optimizer>("test"."t1i"."a1","test"."t1i"."a1" in ( <materialize> (select "test"."t2i"."b1" AS "b1" from "test"."t2i" where ("test"."t2i"."b1" > '0') group by "test"."t2i"."b1" ), <primary_index_lookup>("test"."t1i"."a1" in <temporary table> on distinct_key)))
99
 
select * from t1i where a1 in (select b1 from t2i where b1 > '0' group by b1);
100
 
a1      a2
101
 
1 - 01  2 - 01
102
 
1 - 02  2 - 02
103
 
explain extended
104
 
select * from t1i where (a1, a2) in (select b1, b2 from t2i where b1 > '0');
105
 
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
106
 
1       PRIMARY t1i     index   NULL    it1i3   18      NULL    3       100.00  Using where; Using index
107
 
2       SUBQUERY        t2i     index   it2i1,it2i3     it2i3   18      NULL    5       100.00  Using where; Using index
108
 
Warnings:
109
 
Note    1003    select "test"."t1i"."a1" AS "a1","test"."t1i"."a2" AS "a2" from "test"."t1i" where <in_optimizer>(("test"."t1i"."a1","test"."t1i"."a2"),("test"."t1i"."a1","test"."t1i"."a2") in ( <materialize> (select "test"."t2i"."b1" AS "b1","test"."t2i"."b2" AS "b2" from "test"."t2i" where ("test"."t2i"."b1" > '0') ), <primary_index_lookup>("test"."t1i"."a1" in <temporary table> on distinct_key)))
110
 
select * from t1i where (a1, a2) in (select b1, b2 from t2i where b1 > '0');
111
 
a1      a2
112
 
1 - 01  2 - 01
113
 
1 - 02  2 - 02
114
 
explain extended
115
 
select * from t1i where (a1, a2) in (select b1, b2 from t2i where b1 > '0' group by b1, b2);
116
 
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
117
 
1       PRIMARY t1i     index   NULL    it1i3   18      NULL    3       100.00  Using where; Using index
118
 
2       SUBQUERY        t2i     range   it2i1,it2i3     it2i3   18      NULL    3       100.00  Using where; Using index for group-by
119
 
Warnings:
120
 
Note    1003    select "test"."t1i"."a1" AS "a1","test"."t1i"."a2" AS "a2" from "test"."t1i" where <in_optimizer>(("test"."t1i"."a1","test"."t1i"."a2"),("test"."t1i"."a1","test"."t1i"."a2") in ( <materialize> (select "test"."t2i"."b1" AS "b1","test"."t2i"."b2" AS "b2" from "test"."t2i" where ("test"."t2i"."b1" > '0') group by "test"."t2i"."b1","test"."t2i"."b2" ), <primary_index_lookup>("test"."t1i"."a1" in <temporary table> on distinct_key)))
121
 
select * from t1i where (a1, a2) in (select b1, b2 from t2i where b1 > '0' group by b1, b2);
122
 
a1      a2
123
 
1 - 01  2 - 01
124
 
1 - 02  2 - 02
125
 
explain extended
126
 
select * from t1i where (a1, a2) in (select b1, min(b2) from t2i where b1 > '0' group by b1);
127
 
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
128
 
1       PRIMARY t1i     index   NULL    it1i3   18      NULL    3       100.00  Using where; Using index
129
 
2       SUBQUERY        t2i     range   it2i1,it2i3     it2i3   18      NULL    3       100.00  Using where; Using index for group-by
130
 
Warnings:
131
 
Note    1003    select "test"."t1i"."a1" AS "a1","test"."t1i"."a2" AS "a2" from "test"."t1i" where <in_optimizer>(("test"."t1i"."a1","test"."t1i"."a2"),("test"."t1i"."a1","test"."t1i"."a2") in ( <materialize> (select "test"."t2i"."b1" AS "b1",min("test"."t2i"."b2") AS "min(b2)" from "test"."t2i" where ("test"."t2i"."b1" > '0') group by "test"."t2i"."b1" ), <primary_index_lookup>("test"."t1i"."a1" in <temporary table> on distinct_key)))
132
 
select * from t1i where (a1, a2) in (select b1, min(b2) from t2i where b1 > '0' group by b1);
133
 
a1      a2
134
 
1 - 01  2 - 01
135
 
1 - 02  2 - 02
136
 
explain extended
137
 
select * from t1 where (a1, a2) in (select b1, b2 from t2 order by b1, b2);
138
 
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
139
 
1       PRIMARY t1      ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
140
 
2       SUBQUERY        t2      ALL     NULL    NULL    NULL    NULL    5       100.00  
141
 
Warnings:
142
 
Note    1003    select "test"."t1"."a1" AS "a1","test"."t1"."a2" AS "a2" from "test"."t1" where <in_optimizer>(("test"."t1"."a1","test"."t1"."a2"),("test"."t1"."a1","test"."t1"."a2") in ( <materialize> (select "test"."t2"."b1" AS "b1","test"."t2"."b2" AS "b2" from "test"."t2" order by "test"."t2"."b1","test"."t2"."b2" ), <primary_index_lookup>("test"."t1"."a1" in <temporary table> on distinct_key)))
143
 
select * from t1 where (a1, a2) in (select b1, b2 from t2 order by b1, b2);
144
 
a1      a2
145
 
1 - 01  2 - 01
146
 
1 - 02  2 - 02
147
 
explain extended
148
 
select * from t1i where (a1, a2) in (select b1, b2 from t2i order by b1, b2);
149
 
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
150
 
1       PRIMARY t1i     index   NULL    it1i3   18      NULL    3       100.00  Using where; Using index
151
 
2       SUBQUERY        t2i     index   NULL    it2i3   18      NULL    5       100.00  Using index
152
 
Warnings:
153
 
Note    1003    select "test"."t1i"."a1" AS "a1","test"."t1i"."a2" AS "a2" from "test"."t1i" where <in_optimizer>(("test"."t1i"."a1","test"."t1i"."a2"),("test"."t1i"."a1","test"."t1i"."a2") in ( <materialize> (select "test"."t2i"."b1" AS "b1","test"."t2i"."b2" AS "b2" from "test"."t2i" order by "test"."t2i"."b1","test"."t2i"."b2" ), <primary_index_lookup>("test"."t1i"."a1" in <temporary table> on distinct_key)))
154
 
select * from t1i where (a1, a2) in (select b1, b2 from t2i order by b1, b2);
155
 
a1      a2
156
 
1 - 01  2 - 01
157
 
1 - 02  2 - 02
158
 
explain extended
159
 
select * from t1
160
 
where (a1, a2) in (select b1, b2 from t2 where b1 >  '0') and
161
 
(a1, a2) in (select c1, c2 from t3
162
 
where (c1, c2) in (select b1, b2 from t2i where b2 > '0'));
163
 
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
164
 
1       PRIMARY t1      ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
165
 
3       SUBQUERY        t3      ALL     NULL    NULL    NULL    NULL    4       100.00  Using where
166
 
4       SUBQUERY        t2i     index   it2i2   it2i3   18      NULL    5       100.00  Using where; Using index
167
 
2       SUBQUERY        t2      ALL     NULL    NULL    NULL    NULL    5       100.00  Using where
168
 
Warnings:
169
 
Note    1003    select "test"."t1"."a1" AS "a1","test"."t1"."a2" AS "a2" from "test"."t1" where (<in_optimizer>(("test"."t1"."a1","test"."t1"."a2"),("test"."t1"."a1","test"."t1"."a2") in ( <materialize> (select "test"."t2"."b1" AS "b1","test"."t2"."b2" AS "b2" from "test"."t2" where ("test"."t2"."b1" > '0') ), <primary_index_lookup>("test"."t1"."a1" in <temporary table> on distinct_key))) and <in_optimizer>(("test"."t1"."a1","test"."t1"."a2"),("test"."t1"."a1","test"."t1"."a2") in ( <materialize> (select "test"."t3"."c1" AS "c1","test"."t3"."c2" AS "c2" from "test"."t3" where <in_optimizer>(("test"."t3"."c1","test"."t3"."c2"),("test"."t3"."c1","test"."t3"."c2") in ( <materialize> (select "test"."t2i"."b1" AS "b1","test"."t2i"."b2" AS "b2" from "test"."t2i" where ("test"."t2i"."b2" > '0') ), <primary_index_lookup>("test"."t3"."c1" in <temporary table> on distinct_key))) ), <primary_index_lookup>("test"."t1"."a1" in <temporary table> on distinct_key))))
170
 
select * from t1
171
 
where (a1, a2) in (select b1, b2 from t2 where b1 >  '0') and
172
 
(a1, a2) in (select c1, c2 from t3
173
 
where (c1, c2) in (select b1, b2 from t2i where b2 > '0'));
174
 
a1      a2
175
 
1 - 01  2 - 01
176
 
1 - 02  2 - 02
177
 
explain extended
178
 
select * from t1i
179
 
where (a1, a2) in (select b1, b2 from t2i where b1 >  '0') and
180
 
(a1, a2) in (select c1, c2 from t3i
181
 
where (c1, c2) in (select b1, b2 from t2i where b2 > '0'));
182
 
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
183
 
1       PRIMARY t1i     index   NULL    it1i3   18      NULL    3       100.00  Using where; Using index
184
 
3       SUBQUERY        t3i     index   NULL    it3i3   18      NULL    4       100.00  Using where; Using index
185
 
4       SUBQUERY        t2i     index   it2i2   it2i3   18      NULL    5       100.00  Using where; Using index
186
 
2       SUBQUERY        t2i     index   it2i1,it2i3     it2i3   18      NULL    5       100.00  Using where; Using index
187
 
Warnings:
188
 
Note    1003    select "test"."t1i"."a1" AS "a1","test"."t1i"."a2" AS "a2" from "test"."t1i" where (<in_optimizer>(("test"."t1i"."a1","test"."t1i"."a2"),("test"."t1i"."a1","test"."t1i"."a2") in ( <materialize> (select "test"."t2i"."b1" AS "b1","test"."t2i"."b2" AS "b2" from "test"."t2i" where ("test"."t2i"."b1" > '0') ), <primary_index_lookup>("test"."t1i"."a1" in <temporary table> on distinct_key))) and <in_optimizer>(("test"."t1i"."a1","test"."t1i"."a2"),("test"."t1i"."a1","test"."t1i"."a2") in ( <materialize> (select "test"."t3i"."c1" AS "c1","test"."t3i"."c2" AS "c2" from "test"."t3i" where <in_optimizer>(("test"."t3i"."c1","test"."t3i"."c2"),("test"."t3i"."c1","test"."t3i"."c2") in ( <materialize> (select "test"."t2i"."b1" AS "b1","test"."t2i"."b2" AS "b2" from "test"."t2i" where ("test"."t2i"."b2" > '0') ), <primary_index_lookup>("test"."t3i"."c1" in <temporary table> on distinct_key))) ), <primary_index_lookup>("test"."t1i"."a1" in <temporary table> on distinct_key))))
189
 
select * from t1i
190
 
where (a1, a2) in (select b1, b2 from t2i where b1 >  '0') and
191
 
(a1, a2) in (select c1, c2 from t3i
192
 
where (c1, c2) in (select b1, b2 from t2i where b2 > '0'));
193
 
a1      a2
194
 
1 - 01  2 - 01
195
 
1 - 02  2 - 02
196
 
explain extended
197
 
select * from t1
198
 
where (a1, a2) in (select b1, b2 from t2
199
 
where b2 in (select c2 from t3 where c2 LIKE '%02') or
200
 
b2 in (select c2 from t3 where c2 LIKE '%03')) and
201
 
(a1, a2) in (select c1, c2 from t3
202
 
where (c1, c2) in (select b1, b2 from t2i where b2 > '0'));
203
 
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
204
 
1       PRIMARY t1      ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
205
 
5       SUBQUERY        t3      ALL     NULL    NULL    NULL    NULL    4       100.00  Using where
206
 
6       SUBQUERY        t2i     index   it2i2   it2i3   18      NULL    5       100.00  Using where; Using index
207
 
2       SUBQUERY        t2      ALL     NULL    NULL    NULL    NULL    5       100.00  Using where
208
 
4       SUBQUERY        t3      ALL     NULL    NULL    NULL    NULL    4       100.00  Using where
209
 
3       SUBQUERY        t3      ALL     NULL    NULL    NULL    NULL    4       100.00  Using where
210
 
Warnings:
211
 
Note    1003    select "test"."t1"."a1" AS "a1","test"."t1"."a2" AS "a2" from "test"."t1" where (<in_optimizer>(("test"."t1"."a1","test"."t1"."a2"),("test"."t1"."a1","test"."t1"."a2") in ( <materialize> (select "test"."t2"."b1" AS "b1","test"."t2"."b2" AS "b2" from "test"."t2" where (<in_optimizer>("test"."t2"."b2","test"."t2"."b2" in ( <materialize> (select "test"."t3"."c2" AS "c2" from "test"."t3" where ("test"."t3"."c2" like '%02') ), <primary_index_lookup>("test"."t2"."b2" in <temporary table> on distinct_key))) or <in_optimizer>("test"."t2"."b2","test"."t2"."b2" in ( <materialize> (select "test"."t3"."c2" AS "c2" from "test"."t3" where ("test"."t3"."c2" like '%03') ), <primary_index_lookup>("test"."t2"."b2" in <temporary table> on distinct_key)))) ), <primary_index_lookup>("test"."t1"."a1" in <temporary table> on distinct_key))) and <in_optimizer>(("test"."t1"."a1","test"."t1"."a2"),("test"."t1"."a1","test"."t1"."a2") in ( <materialize> (select "test"."t3"."c1" AS "c1","test"."t3"."c2" AS "c2" from "test"."t3" where <in_optimizer>(("test"."t3"."c1","test"."t3"."c2"),("test"."t3"."c1","test"."t3"."c2") in ( <materialize> (select "test"."t2i"."b1" AS "b1","test"."t2i"."b2" AS "b2" from "test"."t2i" where ("test"."t2i"."b2" > '0') ), <primary_index_lookup>("test"."t3"."c1" in <temporary table> on distinct_key))) ), <primary_index_lookup>("test"."t1"."a1" in <temporary table> on distinct_key))))
212
 
select * from t1
213
 
where (a1, a2) in (select b1, b2 from t2
214
 
where b2 in (select c2 from t3 where c2 LIKE '%02') or
215
 
b2 in (select c2 from t3 where c2 LIKE '%03')) and
216
 
(a1, a2) in (select c1, c2 from t3
217
 
where (c1, c2) in (select b1, b2 from t2i where b2 > '0'));
218
 
a1      a2
219
 
1 - 02  2 - 02
220
 
explain extended
221
 
select * from t1
222
 
where (a1, a2) in (select b1, b2 from t2
 
77
a1      a2
 
78
1 - 01  2 - 01
 
79
1 - 02  2 - 02
 
80
explain extended
 
81
select * from t1i where a1 in (select b1 from t2i where b1 > '0');
 
82
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
83
1       PRIMARY t1i     index   NULL    it1i3   70      NULL    #       100.00  Using where; Using index
 
84
2       SUBQUERY        t2i     index   it2i1,it2i3     it2i1   35      NULL    #       100.00  Using where; Using index
 
85
Warnings:
 
86
Note    1003    select `test`.`t1i`.`a1` AS `a1`,`test`.`t1i`.`a2` AS `a2` from `test`.`t1i` where <in_optimizer>(`test`.`t1i`.`a1`,`test`.`t1i`.`a1` in ( <materialize> (select `test`.`t2i`.`b1` AS `b1` from `test`.`t2i` where (`test`.`t2i`.`b1` > '0') ), <primary_index_lookup>(`test`.`t1i`.`a1` in <temporary table> on distinct_key)))
 
87
select * from t1i where a1 in (select b1 from t2i where b1 > '0');
 
88
a1      a2
 
89
1 - 01  2 - 01
 
90
1 - 02  2 - 02
 
91
explain extended
 
92
select * from t1i where a1 in (select b1 from t2i where b1 > '0' group by b1);
 
93
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
94
1       PRIMARY t1i     index   NULL    it1i3   70      NULL    #       100.00  Using where; Using index
 
95
2       SUBQUERY        t2i     index   it2i1,it2i3     it2i1   35      NULL    #       100.00  Using where; Using index
 
96
Warnings:
 
97
Note    1003    select `test`.`t1i`.`a1` AS `a1`,`test`.`t1i`.`a2` AS `a2` from `test`.`t1i` where <in_optimizer>(`test`.`t1i`.`a1`,`test`.`t1i`.`a1` in ( <materialize> (select `test`.`t2i`.`b1` AS `b1` from `test`.`t2i` where (`test`.`t2i`.`b1` > '0') group by `test`.`t2i`.`b1` ), <primary_index_lookup>(`test`.`t1i`.`a1` in <temporary table> on distinct_key)))
 
98
select * from t1i where a1 in (select b1 from t2i where b1 > '0' group by b1);
 
99
a1      a2
 
100
1 - 01  2 - 01
 
101
1 - 02  2 - 02
 
102
explain extended
 
103
select * from t1i where (a1, a2) in (select b1, b2 from t2i where b1 > '0');
 
104
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
105
1       PRIMARY t1i     index   NULL    it1i3   70      NULL    #       100.00  Using where; Using index
 
106
2       SUBQUERY        t2i     index   it2i1,it2i3     it2i3   70      NULL    #       100.00  Using where; Using index
 
107
Warnings:
 
108
Note    1003    select `test`.`t1i`.`a1` AS `a1`,`test`.`t1i`.`a2` AS `a2` from `test`.`t1i` where <in_optimizer>((`test`.`t1i`.`a1`,`test`.`t1i`.`a2`),(`test`.`t1i`.`a1`,`test`.`t1i`.`a2`) in ( <materialize> (select `test`.`t2i`.`b1` AS `b1`,`test`.`t2i`.`b2` AS `b2` from `test`.`t2i` where (`test`.`t2i`.`b1` > '0') ), <primary_index_lookup>(`test`.`t1i`.`a1` in <temporary table> on distinct_key)))
 
109
select * from t1i where (a1, a2) in (select b1, b2 from t2i where b1 > '0');
 
110
a1      a2
 
111
1 - 01  2 - 01
 
112
1 - 02  2 - 02
 
113
explain extended
 
114
select * from t1i where (a1, a2) in (select b1, b2 from t2i where b1 > '0' group by b1, b2);
 
115
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
116
1       PRIMARY t1i     index   NULL    it1i3   70      NULL    #       100.00  Using where; Using index
 
117
2       SUBQUERY        t2i     index   it2i1,it2i3     it2i3   70      NULL    #       100.00  Using where; Using index
 
118
Warnings:
 
119
Note    1003    select `test`.`t1i`.`a1` AS `a1`,`test`.`t1i`.`a2` AS `a2` from `test`.`t1i` where <in_optimizer>((`test`.`t1i`.`a1`,`test`.`t1i`.`a2`),(`test`.`t1i`.`a1`,`test`.`t1i`.`a2`) in ( <materialize> (select `test`.`t2i`.`b1` AS `b1`,`test`.`t2i`.`b2` AS `b2` from `test`.`t2i` where (`test`.`t2i`.`b1` > '0') group by `test`.`t2i`.`b1`,`test`.`t2i`.`b2` ), <primary_index_lookup>(`test`.`t1i`.`a1` in <temporary table> on distinct_key)))
 
120
select * from t1i where (a1, a2) in (select b1, b2 from t2i where b1 > '0' group by b1, b2);
 
121
a1      a2
 
122
1 - 01  2 - 01
 
123
1 - 02  2 - 02
 
124
explain extended
 
125
select * from t1i where (a1, a2) in (select b1, min(b2) from t2i where b1 > '0' group by b1);
 
126
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
127
1       PRIMARY t1i     index   NULL    it1i3   70      NULL    #       100.00  Using where; Using index
 
128
2       SUBQUERY        t2i     index   it2i1,it2i3     it2i1   35      NULL    #       100.00  Using where
 
129
Warnings:
 
130
Note    1003    select `test`.`t1i`.`a1` AS `a1`,`test`.`t1i`.`a2` AS `a2` from `test`.`t1i` where <in_optimizer>((`test`.`t1i`.`a1`,`test`.`t1i`.`a2`),(`test`.`t1i`.`a1`,`test`.`t1i`.`a2`) in ( <materialize> (select `test`.`t2i`.`b1` AS `b1`,min(`test`.`t2i`.`b2`) AS `min(b2)` from `test`.`t2i` where (`test`.`t2i`.`b1` > '0') group by `test`.`t2i`.`b1` ), <primary_index_lookup>(`test`.`t1i`.`a1` in <temporary table> on distinct_key)))
 
131
select * from t1i where (a1, a2) in (select b1, min(b2) from t2i where b1 > '0' group by b1);
 
132
a1      a2
 
133
1 - 01  2 - 01
 
134
1 - 02  2 - 02
 
135
explain extended
 
136
select * from t1 where (a1, a2) in (select b1, b2 from t2 order by b1, b2);
 
137
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
138
1       PRIMARY t1      ALL     NULL    NULL    NULL    NULL    #       100.00  Using where
 
139
2       SUBQUERY        t2      ALL     NULL    NULL    NULL    NULL    #       100.00  
 
140
Warnings:
 
141
Note    1003    select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2` from `test`.`t1` where <in_optimizer>((`test`.`t1`.`a1`,`test`.`t1`.`a2`),(`test`.`t1`.`a1`,`test`.`t1`.`a2`) in ( <materialize> (select `test`.`t2`.`b1` AS `b1`,`test`.`t2`.`b2` AS `b2` from `test`.`t2` order by `test`.`t2`.`b1`,`test`.`t2`.`b2` ), <primary_index_lookup>(`test`.`t1`.`a1` in <temporary table> on distinct_key)))
 
142
select * from t1 where (a1, a2) in (select b1, b2 from t2 order by b1, b2);
 
143
a1      a2
 
144
1 - 01  2 - 01
 
145
1 - 02  2 - 02
 
146
explain extended
 
147
select * from t1i where (a1, a2) in (select b1, b2 from t2i order by b1, b2);
 
148
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
149
1       PRIMARY t1i     index   NULL    it1i3   70      NULL    #       100.00  Using where; Using index
 
150
2       SUBQUERY        t2i     index   NULL    it2i3   70      NULL    #       100.00  Using index
 
151
Warnings:
 
152
Note    1003    select `test`.`t1i`.`a1` AS `a1`,`test`.`t1i`.`a2` AS `a2` from `test`.`t1i` where <in_optimizer>((`test`.`t1i`.`a1`,`test`.`t1i`.`a2`),(`test`.`t1i`.`a1`,`test`.`t1i`.`a2`) in ( <materialize> (select `test`.`t2i`.`b1` AS `b1`,`test`.`t2i`.`b2` AS `b2` from `test`.`t2i` order by `test`.`t2i`.`b1`,`test`.`t2i`.`b2` ), <primary_index_lookup>(`test`.`t1i`.`a1` in <temporary table> on distinct_key)))
 
153
select * from t1i where (a1, a2) in (select b1, b2 from t2i order by b1, b2);
 
154
a1      a2
 
155
1 - 01  2 - 01
 
156
1 - 02  2 - 02
 
157
explain extended
 
158
select * from t1
 
159
where (a1, a2) in (select b1, b2 from t2 where b1 >  '0') and
 
160
(a1, a2) in (select c1, c2 from t3
 
161
where (c1, c2) in (select b1, b2 from t2i where b2 > '0'));
 
162
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
163
1       PRIMARY t1      ALL     NULL    NULL    NULL    NULL    #       100.00  Using where
 
164
3       SUBQUERY        t3      ALL     NULL    NULL    NULL    NULL    #       100.00  Using where
 
165
4       SUBQUERY        t2i     index   it2i2   it2i3   70      NULL    #       100.00  Using where; Using index
 
166
2       SUBQUERY        t2      ALL     NULL    NULL    NULL    NULL    #       100.00  Using where
 
167
Warnings:
 
168
Note    1003    select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2` from `test`.`t1` where (<in_optimizer>((`test`.`t1`.`a1`,`test`.`t1`.`a2`),(`test`.`t1`.`a1`,`test`.`t1`.`a2`) in ( <materialize> (select `test`.`t2`.`b1` AS `b1`,`test`.`t2`.`b2` AS `b2` from `test`.`t2` where (`test`.`t2`.`b1` > '0') ), <primary_index_lookup>(`test`.`t1`.`a1` in <temporary table> on distinct_key))) and <in_optimizer>((`test`.`t1`.`a1`,`test`.`t1`.`a2`),(`test`.`t1`.`a1`,`test`.`t1`.`a2`) in ( <materialize> (select `test`.`t3`.`c1` AS `c1`,`test`.`t3`.`c2` AS `c2` from `test`.`t3` where <in_optimizer>((`test`.`t3`.`c1`,`test`.`t3`.`c2`),(`test`.`t3`.`c1`,`test`.`t3`.`c2`) in ( <materialize> (select `test`.`t2i`.`b1` AS `b1`,`test`.`t2i`.`b2` AS `b2` from `test`.`t2i` where (`test`.`t2i`.`b2` > '0') ), <primary_index_lookup>(`test`.`t3`.`c1` in <temporary table> on distinct_key))) ), <primary_index_lookup>(`test`.`t1`.`a1` in <temporary table> on distinct_key))))
 
169
select * from t1
 
170
where (a1, a2) in (select b1, b2 from t2 where b1 >  '0') and
 
171
(a1, a2) in (select c1, c2 from t3
 
172
where (c1, c2) in (select b1, b2 from t2i where b2 > '0'));
 
173
a1      a2
 
174
1 - 01  2 - 01
 
175
1 - 02  2 - 02
 
176
explain extended
 
177
select * from t1i
 
178
where (a1, a2) in (select b1, b2 from t2i where b1 >  '0') and
 
179
(a1, a2) in (select c1, c2 from t3i
 
180
where (c1, c2) in (select b1, b2 from t2i where b2 > '0'));
 
181
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
182
1       PRIMARY t1i     index   NULL    it1i3   70      NULL    #       100.00  Using where; Using index
 
183
3       SUBQUERY        t3i     index   NULL    it3i3   70      NULL    #       100.00  Using where; Using index
 
184
4       SUBQUERY        t2i     index   it2i2   it2i3   70      NULL    #       100.00  Using where; Using index
 
185
2       SUBQUERY        t2i     index   it2i1,it2i3     it2i3   70      NULL    #       100.00  Using where; Using index
 
186
Warnings:
 
187
Note    1003    select `test`.`t1i`.`a1` AS `a1`,`test`.`t1i`.`a2` AS `a2` from `test`.`t1i` where (<in_optimizer>((`test`.`t1i`.`a1`,`test`.`t1i`.`a2`),(`test`.`t1i`.`a1`,`test`.`t1i`.`a2`) in ( <materialize> (select `test`.`t2i`.`b1` AS `b1`,`test`.`t2i`.`b2` AS `b2` from `test`.`t2i` where (`test`.`t2i`.`b1` > '0') ), <primary_index_lookup>(`test`.`t1i`.`a1` in <temporary table> on distinct_key))) and <in_optimizer>((`test`.`t1i`.`a1`,`test`.`t1i`.`a2`),(`test`.`t1i`.`a1`,`test`.`t1i`.`a2`) in ( <materialize> (select `test`.`t3i`.`c1` AS `c1`,`test`.`t3i`.`c2` AS `c2` from `test`.`t3i` where <in_optimizer>((`test`.`t3i`.`c1`,`test`.`t3i`.`c2`),(`test`.`t3i`.`c1`,`test`.`t3i`.`c2`) in ( <materialize> (select `test`.`t2i`.`b1` AS `b1`,`test`.`t2i`.`b2` AS `b2` from `test`.`t2i` where (`test`.`t2i`.`b2` > '0') ), <primary_index_lookup>(`test`.`t3i`.`c1` in <temporary table> on distinct_key))) ), <primary_index_lookup>(`test`.`t1i`.`a1` in <temporary table> on distinct_key))))
 
188
select * from t1i
 
189
where (a1, a2) in (select b1, b2 from t2i where b1 >  '0') and
 
190
(a1, a2) in (select c1, c2 from t3i
 
191
where (c1, c2) in (select b1, b2 from t2i where b2 > '0'));
 
192
a1      a2
 
193
1 - 01  2 - 01
 
194
1 - 02  2 - 02
 
195
explain extended
 
196
select * from t1
 
197
where (a1, a2) in (select b1, b2 from t2
 
198
where b2 in (select c2 from t3 where c2 LIKE '%02') or
 
199
b2 in (select c2 from t3 where c2 LIKE '%03')) and
 
200
(a1, a2) in (select c1, c2 from t3
 
201
where (c1, c2) in (select b1, b2 from t2i where b2 > '0'));
 
202
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
203
1       PRIMARY t1      ALL     NULL    NULL    NULL    NULL    #       100.00  Using where
 
204
5       SUBQUERY        t3      ALL     NULL    NULL    NULL    NULL    #       100.00  Using where
 
205
6       SUBQUERY        t2i     index   it2i2   it2i3   70      NULL    #       100.00  Using where; Using index
 
206
2       SUBQUERY        t2      ALL     NULL    NULL    NULL    NULL    #       100.00  Using where
 
207
4       SUBQUERY        t3      ALL     NULL    NULL    NULL    NULL    #       100.00  Using where
 
208
3       SUBQUERY        t3      ALL     NULL    NULL    NULL    NULL    #       100.00  Using where
 
209
Warnings:
 
210
Note    1003    select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2` from `test`.`t1` where (<in_optimizer>((`test`.`t1`.`a1`,`test`.`t1`.`a2`),(`test`.`t1`.`a1`,`test`.`t1`.`a2`) in ( <materialize> (select `test`.`t2`.`b1` AS `b1`,`test`.`t2`.`b2` AS `b2` from `test`.`t2` where (<in_optimizer>(`test`.`t2`.`b2`,`test`.`t2`.`b2` in ( <materialize> (select `test`.`t3`.`c2` AS `c2` from `test`.`t3` where (`test`.`t3`.`c2` like '%02') ), <primary_index_lookup>(`test`.`t2`.`b2` in <temporary table> on distinct_key))) or <in_optimizer>(`test`.`t2`.`b2`,`test`.`t2`.`b2` in ( <materialize> (select `test`.`t3`.`c2` AS `c2` from `test`.`t3` where (`test`.`t3`.`c2` like '%03') ), <primary_index_lookup>(`test`.`t2`.`b2` in <temporary table> on distinct_key)))) ), <primary_index_lookup>(`test`.`t1`.`a1` in <temporary table> on distinct_key))) and <in_optimizer>((`test`.`t1`.`a1`,`test`.`t1`.`a2`),(`test`.`t1`.`a1`,`test`.`t1`.`a2`) in ( <materialize> (select `test`.`t3`.`c1` AS `c1`,`test`.`t3`.`c2` AS `c2` from `test`.`t3` where <in_optimizer>((`test`.`t3`.`c1`,`test`.`t3`.`c2`),(`test`.`t3`.`c1`,`test`.`t3`.`c2`) in ( <materialize> (select `test`.`t2i`.`b1` AS `b1`,`test`.`t2i`.`b2` AS `b2` from `test`.`t2i` where (`test`.`t2i`.`b2` > '0') ), <primary_index_lookup>(`test`.`t3`.`c1` in <temporary table> on distinct_key))) ), <primary_index_lookup>(`test`.`t1`.`a1` in <temporary table> on distinct_key))))
 
211
select * from t1
 
212
where (a1, a2) in (select b1, b2 from t2
 
213
where b2 in (select c2 from t3 where c2 LIKE '%02') or
 
214
b2 in (select c2 from t3 where c2 LIKE '%03')) and
 
215
(a1, a2) in (select c1, c2 from t3
 
216
where (c1, c2) in (select b1, b2 from t2i where b2 > '0'));
 
217
a1      a2
 
218
1 - 02  2 - 02
 
219
explain extended
 
220
select * from t1
 
221
where (a1, a2) in (select b1, b2 from t2
223
222
where b2 in (select c2 from t3 t3a where c1 = a1) or
224
223
b2 in (select c2 from t3 t3b where c2 LIKE '%03')) and
225
224
(a1, a2) in (select c1, c2 from t3 t3c
226
225
where (c1, c2) in (select b1, b2 from t2i where b2 > '0'));
227
226
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
228
 
1       PRIMARY t1      ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
229
 
5       SUBQUERY        t3c     ALL     NULL    NULL    NULL    NULL    4       100.00  Using where
230
 
6       SUBQUERY        t2i     index   it2i2   it2i3   18      NULL    5       100.00  Using where; Using index
231
 
2       DEPENDENT SUBQUERY      t2      ALL     NULL    NULL    NULL    NULL    5       100.00  Using where
232
 
4       SUBQUERY        t3b     ALL     NULL    NULL    NULL    NULL    4       100.00  Using where
233
 
3       DEPENDENT SUBQUERY      t3a     ALL     NULL    NULL    NULL    NULL    4       100.00  Using where
 
227
1       PRIMARY t1      ALL     NULL    NULL    NULL    NULL    #       100.00  Using where
 
228
5       SUBQUERY        t3c     ALL     NULL    NULL    NULL    NULL    #       100.00  Using where
 
229
6       SUBQUERY        t2i     index   it2i2   it2i3   70      NULL    #       100.00  Using where; Using index
 
230
2       DEPENDENT SUBQUERY      t2      ALL     NULL    NULL    NULL    NULL    #       100.00  Using where
 
231
4       SUBQUERY        t3b     ALL     NULL    NULL    NULL    NULL    #       100.00  Using where
 
232
3       DEPENDENT SUBQUERY      t3a     ALL     NULL    NULL    NULL    NULL    #       100.00  Using where
234
233
Warnings:
235
234
Note    1276    Field or reference 'test.t1.a1' of SELECT #3 was resolved in SELECT #1
236
 
Note    1003    select "test"."t1"."a1" AS "a1","test"."t1"."a2" AS "a2" from "test"."t1" where (<in_optimizer>(("test"."t1"."a1","test"."t1"."a2"),<exists>(select "test"."t2"."b1" AS "b1","test"."t2"."b2" AS "b2" from "test"."t2" where ((<in_optimizer>("test"."t2"."b2",<exists>(select 1 AS "Not_used" from "test"."t3" "t3a" where (("test"."t3a"."c1" = "test"."t1"."a1") and (<cache>("test"."t2"."b2") = "test"."t3a"."c2")))) or <in_optimizer>("test"."t2"."b2","test"."t2"."b2" in ( <materialize> (select "test"."t3b"."c2" AS "c2" from "test"."t3" "t3b" where ("test"."t3b"."c2" like '%03') ), <primary_index_lookup>("test"."t2"."b2" in <temporary table> on distinct_key)))) and (<cache>("test"."t1"."a1") = "test"."t2"."b1") and (<cache>("test"."t1"."a2") = "test"."t2"."b2")))) and <in_optimizer>(("test"."t1"."a1","test"."t1"."a2"),("test"."t1"."a1","test"."t1"."a2") in ( <materialize> (select "test"."t3c"."c1" AS "c1","test"."t3c"."c2" AS "c2" from "test"."t3" "t3c" where <in_optimizer>(("test"."t3c"."c1","test"."t3c"."c2"),("test"."t3c"."c1","test"."t3c"."c2") in ( <materialize> (select "test"."t2i"."b1" AS "b1","test"."t2i"."b2" AS "b2" from "test"."t2i" where ("test"."t2i"."b2" > '0') ), <primary_index_lookup>("test"."t3c"."c1" in <temporary table> on distinct_key))) ), <primary_index_lookup>("test"."t1"."a1" in <temporary table> on distinct_key))))
 
235
Note    1003    select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2` from `test`.`t1` where (<in_optimizer>((`test`.`t1`.`a1`,`test`.`t1`.`a2`),<exists>(select `test`.`t2`.`b1` AS `b1`,`test`.`t2`.`b2` AS `b2` from `test`.`t2` where ((<in_optimizer>(`test`.`t2`.`b2`,<exists>(select 1 AS `Not_used` from `test`.`t3` `t3a` where ((`test`.`t3a`.`c1` = `test`.`t1`.`a1`) and (<cache>(`test`.`t2`.`b2`) = `test`.`t3a`.`c2`)))) or <in_optimizer>(`test`.`t2`.`b2`,`test`.`t2`.`b2` in ( <materialize> (select `test`.`t3b`.`c2` AS `c2` from `test`.`t3` `t3b` where (`test`.`t3b`.`c2` like '%03') ), <primary_index_lookup>(`test`.`t2`.`b2` in <temporary table> on distinct_key)))) and (<cache>(`test`.`t1`.`a1`) = `test`.`t2`.`b1`) and (<cache>(`test`.`t1`.`a2`) = `test`.`t2`.`b2`)))) and <in_optimizer>((`test`.`t1`.`a1`,`test`.`t1`.`a2`),(`test`.`t1`.`a1`,`test`.`t1`.`a2`) in ( <materialize> (select `test`.`t3c`.`c1` AS `c1`,`test`.`t3c`.`c2` AS `c2` from `test`.`t3` `t3c` where <in_optimizer>((`test`.`t3c`.`c1`,`test`.`t3c`.`c2`),(`test`.`t3c`.`c1`,`test`.`t3c`.`c2`) in ( <materialize> (select `test`.`t2i`.`b1` AS `b1`,`test`.`t2i`.`b2` AS `b2` from `test`.`t2i` where (`test`.`t2i`.`b2` > '0') ), <primary_index_lookup>(`test`.`t3c`.`c1` in <temporary table> on distinct_key))) ), <primary_index_lookup>(`test`.`t1`.`a1` in <temporary table> on distinct_key))))
237
236
select * from t1
238
237
where (a1, a2) in (select b1, b2 from t2
239
238
where b2 in (select c2 from t3 t3a where c1 = a1) or
257
256
(a1, a2) in (select c1, c2 from t3i
258
257
where (c1, c2) in (select b1, b2 from t2i where b2 > '0')));
259
258
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
260
 
1       PRIMARY t1      ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
261
 
5       SUBQUERY        t3      ALL     NULL    NULL    NULL    NULL    4       100.00  Using where
262
 
6       SUBQUERY        t2i     index   it2i2   it2i3   18      NULL    5       100.00  Using where; Using index
263
 
2       SUBQUERY        t2      ALL     NULL    NULL    NULL    NULL    5       100.00  Using where; Using temporary; Using filesort
264
 
4       SUBQUERY        t3      ALL     NULL    NULL    NULL    NULL    4       100.00  Using where
265
 
3       SUBQUERY        t3      ALL     NULL    NULL    NULL    NULL    4       100.00  Using where
266
 
7       UNION   t1i     index   NULL    it1i3   18      NULL    3       100.00  Using where; Using index
267
 
9       SUBQUERY        t3i     index   NULL    it3i3   18      NULL    4       100.00  Using where; Using index
268
 
10      SUBQUERY        t2i     index   it2i2   it2i3   18      NULL    5       100.00  Using where; Using index
269
 
8       SUBQUERY        t2i     index   it2i1,it2i3     it2i3   18      NULL    5       100.00  Using where; Using index
270
 
NULL    UNION RESULT    <union1,7>      ALL     NULL    NULL    NULL    NULL    NULL    NULL    
 
259
1       PRIMARY t1      ALL     NULL    NULL    NULL    NULL    #       100.00  Using where
 
260
5       SUBQUERY        t3      ALL     NULL    NULL    NULL    NULL    #       100.00  Using where
 
261
6       SUBQUERY        t2i     index   it2i2   it2i3   70      NULL    #       100.00  Using where; Using index
 
262
2       SUBQUERY        t2      ALL     NULL    NULL    NULL    NULL    #       100.00  Using where; Using temporary; Using filesort
 
263
4       SUBQUERY        t3      ALL     NULL    NULL    NULL    NULL    #       100.00  Using where
 
264
3       SUBQUERY        t3      ALL     NULL    NULL    NULL    NULL    #       100.00  Using where
 
265
7       UNION   t1i     index   NULL    it1i3   70      NULL    #       100.00  Using where; Using index
 
266
9       SUBQUERY        t3i     index   NULL    it3i3   70      NULL    #       100.00  Using where; Using index
 
267
10      SUBQUERY        t2i     index   it2i2   it2i3   70      NULL    #       100.00  Using where; Using index
 
268
8       SUBQUERY        t2i     index   it2i1,it2i3     it2i3   70      NULL    #       100.00  Using where; Using index
 
269
NULL    UNION RESULT    <union1,7>      ALL     NULL    NULL    NULL    NULL    #       NULL    
271
270
Warnings:
272
 
Note    1003    (select "test"."t1"."a1" AS "a1","test"."t1"."a2" AS "a2" from "test"."t1" where (<in_optimizer>(("test"."t1"."a1","test"."t1"."a2"),("test"."t1"."a1","test"."t1"."a2") in ( <materialize> (select "test"."t2"."b1" AS "b1","test"."t2"."b2" AS "b2" from "test"."t2" where (<in_optimizer>("test"."t2"."b2","test"."t2"."b2" in ( <materialize> (select "test"."t3"."c2" AS "c2" from "test"."t3" where ("test"."t3"."c2" like '%02') ), <primary_index_lookup>("test"."t2"."b2" in <temporary table> on distinct_key))) or <in_optimizer>("test"."t2"."b2","test"."t2"."b2" in ( <materialize> (select "test"."t3"."c2" AS "c2" from "test"."t3" where ("test"."t3"."c2" like '%03') ), <primary_index_lookup>("test"."t2"."b2" in <temporary table> on distinct_key)))) group by "test"."t2"."b1","test"."t2"."b2" ), <primary_index_lookup>("test"."t1"."a1" in <temporary table> on distinct_key))) and <in_optimizer>(("test"."t1"."a1","test"."t1"."a2"),("test"."t1"."a1","test"."t1"."a2") in ( <materialize> (select "test"."t3"."c1" AS "c1","test"."t3"."c2" AS "c2" from "test"."t3" where <in_optimizer>(("test"."t3"."c1","test"."t3"."c2"),("test"."t3"."c1","test"."t3"."c2") in ( <materialize> (select "test"."t2i"."b1" AS "b1","test"."t2i"."b2" AS "b2" from "test"."t2i" where ("test"."t2i"."b2" > '0') ), <primary_index_lookup>("test"."t3"."c1" in <temporary table> on distinct_key))) ), <primary_index_lookup>("test"."t1"."a1" in <temporary table> on distinct_key))))) union (select "test"."t1i"."a1" AS "a1","test"."t1i"."a2" AS "a2" from "test"."t1i" where (<in_optimizer>(("test"."t1i"."a1","test"."t1i"."a2"),("test"."t1i"."a1","test"."t1i"."a2") in ( <materialize> (select "test"."t2i"."b1" AS "b1","test"."t2i"."b2" AS "b2" from "test"."t2i" where ("test"."t2i"."b1" > '0') ), <primary_index_lookup>("test"."t1i"."a1" in <temporary table> on distinct_key))) and <in_optimizer>(("test"."t1i"."a1","test"."t1i"."a2"),("test"."t1i"."a1","test"."t1i"."a2") in ( <materialize> (select "test"."t3i"."c1" AS "c1","test"."t3i"."c2" AS "c2" from "test"."t3i" where <in_optimizer>(("test"."t3i"."c1","test"."t3i"."c2"),("test"."t3i"."c1","test"."t3i"."c2") in ( <materialize> (select "test"."t2i"."b1" AS "b1","test"."t2i"."b2" AS "b2" from "test"."t2i" where ("test"."t2i"."b2" > '0') ), <primary_index_lookup>("test"."t3i"."c1" in <temporary table> on distinct_key))) ), <primary_index_lookup>("test"."t1i"."a1" in <temporary table> on distinct_key)))))
 
271
Note    1003    (select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2` from `test`.`t1` where (<in_optimizer>((`test`.`t1`.`a1`,`test`.`t1`.`a2`),(`test`.`t1`.`a1`,`test`.`t1`.`a2`) in ( <materialize> (select `test`.`t2`.`b1` AS `b1`,`test`.`t2`.`b2` AS `b2` from `test`.`t2` where (<in_optimizer>(`test`.`t2`.`b2`,`test`.`t2`.`b2` in ( <materialize> (select `test`.`t3`.`c2` AS `c2` from `test`.`t3` where (`test`.`t3`.`c2` like '%02') ), <primary_index_lookup>(`test`.`t2`.`b2` in <temporary table> on distinct_key))) or <in_optimizer>(`test`.`t2`.`b2`,`test`.`t2`.`b2` in ( <materialize> (select `test`.`t3`.`c2` AS `c2` from `test`.`t3` where (`test`.`t3`.`c2` like '%03') ), <primary_index_lookup>(`test`.`t2`.`b2` in <temporary table> on distinct_key)))) group by `test`.`t2`.`b1`,`test`.`t2`.`b2` ), <primary_index_lookup>(`test`.`t1`.`a1` in <temporary table> on distinct_key))) and <in_optimizer>((`test`.`t1`.`a1`,`test`.`t1`.`a2`),(`test`.`t1`.`a1`,`test`.`t1`.`a2`) in ( <materialize> (select `test`.`t3`.`c1` AS `c1`,`test`.`t3`.`c2` AS `c2` from `test`.`t3` where <in_optimizer>((`test`.`t3`.`c1`,`test`.`t3`.`c2`),(`test`.`t3`.`c1`,`test`.`t3`.`c2`) in ( <materialize> (select `test`.`t2i`.`b1` AS `b1`,`test`.`t2i`.`b2` AS `b2` from `test`.`t2i` where (`test`.`t2i`.`b2` > '0') ), <primary_index_lookup>(`test`.`t3`.`c1` in <temporary table> on distinct_key))) ), <primary_index_lookup>(`test`.`t1`.`a1` in <temporary table> on distinct_key))))) union (select `test`.`t1i`.`a1` AS `a1`,`test`.`t1i`.`a2` AS `a2` from `test`.`t1i` where (<in_optimizer>((`test`.`t1i`.`a1`,`test`.`t1i`.`a2`),(`test`.`t1i`.`a1`,`test`.`t1i`.`a2`) in ( <materialize> (select `test`.`t2i`.`b1` AS `b1`,`test`.`t2i`.`b2` AS `b2` from `test`.`t2i` where (`test`.`t2i`.`b1` > '0') ), <primary_index_lookup>(`test`.`t1i`.`a1` in <temporary table> on distinct_key))) and <in_optimizer>((`test`.`t1i`.`a1`,`test`.`t1i`.`a2`),(`test`.`t1i`.`a1`,`test`.`t1i`.`a2`) in ( <materialize> (select `test`.`t3i`.`c1` AS `c1`,`test`.`t3i`.`c2` AS `c2` from `test`.`t3i` where <in_optimizer>((`test`.`t3i`.`c1`,`test`.`t3i`.`c2`),(`test`.`t3i`.`c1`,`test`.`t3i`.`c2`) in ( <materialize> (select `test`.`t2i`.`b1` AS `b1`,`test`.`t2i`.`b2` AS `b2` from `test`.`t2i` where (`test`.`t2i`.`b2` > '0') ), <primary_index_lookup>(`test`.`t3i`.`c1` in <temporary table> on distinct_key))) ), <primary_index_lookup>(`test`.`t1i`.`a1` in <temporary table> on distinct_key)))))
273
272
(select * from t1
274
273
where (a1, a2) in (select b1, b2 from t2
275
274
where b2 in (select c2 from t3 where c2 LIKE '%02') or
291
290
(a1, a2) in (select c1, c2 from t3
292
291
where (c1, c2) in (select b1, b2 from t2i where b2 > '0'));
293
292
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
294
 
1       PRIMARY t1      ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
295
 
4       SUBQUERY        t3      ALL     NULL    NULL    NULL    NULL    4       100.00  Using where
296
 
5       SUBQUERY        t2i     index   it2i2   it2i3   18      NULL    5       100.00  Using where; Using index
297
 
2       DEPENDENT SUBQUERY      t1      ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
298
 
3       DEPENDENT UNION t2      ALL     NULL    NULL    NULL    NULL    5       100.00  Using where
299
 
NULL    UNION RESULT    <union2,3>      ALL     NULL    NULL    NULL    NULL    NULL    NULL    
 
293
1       PRIMARY t1      ALL     NULL    NULL    NULL    NULL    #       100.00  Using where
 
294
4       SUBQUERY        t3      ALL     NULL    NULL    NULL    NULL    #       100.00  Using where
 
295
5       SUBQUERY        t2i     index   it2i2   it2i3   70      NULL    #       100.00  Using where; Using index
 
296
2       DEPENDENT SUBQUERY      t1      ALL     NULL    NULL    NULL    NULL    #       100.00  Using where
 
297
3       DEPENDENT UNION t2      ALL     NULL    NULL    NULL    NULL    #       100.00  Using where
 
298
NULL    UNION RESULT    <union2,3>      ALL     NULL    NULL    NULL    NULL    #       NULL    
300
299
Warnings:
301
 
Note    1003    select "test"."t1"."a1" AS "a1","test"."t1"."a2" AS "a2" from "test"."t1" where (<in_optimizer>(("test"."t1"."a1","test"."t1"."a2"),<exists>(select "test"."t1"."a1" AS "a1","test"."t1"."a2" AS "a2" from "test"."t1" where (("test"."t1"."a1" > '0') and (<cache>("test"."t1"."a1") = "test"."t1"."a1") and (<cache>("test"."t1"."a2") = "test"."t1"."a2")) union select "test"."t2"."b1" AS "b1","test"."t2"."b2" AS "b2" from "test"."t2" where (("test"."t2"."b1" < '9') and (<cache>("test"."t1"."a1") = "test"."t2"."b1") and (<cache>("test"."t1"."a2") = "test"."t2"."b2")))) and <in_optimizer>(("test"."t1"."a1","test"."t1"."a2"),("test"."t1"."a1","test"."t1"."a2") in ( <materialize> (select "test"."t3"."c1" AS "c1","test"."t3"."c2" AS "c2" from "test"."t3" where <in_optimizer>(("test"."t3"."c1","test"."t3"."c2"),("test"."t3"."c1","test"."t3"."c2") in ( <materialize> (select "test"."t2i"."b1" AS "b1","test"."t2i"."b2" AS "b2" from "test"."t2i" where ("test"."t2i"."b2" > '0') ), <primary_index_lookup>("test"."t3"."c1" in <temporary table> on distinct_key))) ), <primary_index_lookup>("test"."t1"."a1" in <temporary table> on distinct_key))))
 
300
Note    1003    select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2` from `test`.`t1` where (<in_optimizer>((`test`.`t1`.`a1`,`test`.`t1`.`a2`),<exists>(select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2` from `test`.`t1` where ((`test`.`t1`.`a1` > '0') and (<cache>(`test`.`t1`.`a1`) = `test`.`t1`.`a1`) and (<cache>(`test`.`t1`.`a2`) = `test`.`t1`.`a2`)) union select `test`.`t2`.`b1` AS `b1`,`test`.`t2`.`b2` AS `b2` from `test`.`t2` where ((`test`.`t2`.`b1` < '9') and (<cache>(`test`.`t1`.`a1`) = `test`.`t2`.`b1`) and (<cache>(`test`.`t1`.`a2`) = `test`.`t2`.`b2`)))) and <in_optimizer>((`test`.`t1`.`a1`,`test`.`t1`.`a2`),(`test`.`t1`.`a1`,`test`.`t1`.`a2`) in ( <materialize> (select `test`.`t3`.`c1` AS `c1`,`test`.`t3`.`c2` AS `c2` from `test`.`t3` where <in_optimizer>((`test`.`t3`.`c1`,`test`.`t3`.`c2`),(`test`.`t3`.`c1`,`test`.`t3`.`c2`) in ( <materialize> (select `test`.`t2i`.`b1` AS `b1`,`test`.`t2i`.`b2` AS `b2` from `test`.`t2i` where (`test`.`t2i`.`b2` > '0') ), <primary_index_lookup>(`test`.`t3`.`c1` in <temporary table> on distinct_key))) ), <primary_index_lookup>(`test`.`t1`.`a1` in <temporary table> on distinct_key))))
302
301
select * from t1
303
302
where (a1, a2) in (select * from t1 where a1 > '0' UNION select * from t2 where b1 < '9') and
304
303
(a1, a2) in (select c1, c2 from t3
313
312
where (c1, c2) in (select b1, b2 from t2i where b2 > '0')) and
314
313
a1 = c1;
315
314
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
316
 
1       PRIMARY t1      ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
317
 
1       PRIMARY t3      ALL     NULL    NULL    NULL    NULL    4       100.00  Using where; Using join buffer
318
 
4       SUBQUERY        t3      ALL     NULL    NULL    NULL    NULL    4       100.00  Using where
319
 
5       SUBQUERY        t2i     index   it2i2   it2i3   18      NULL    5       100.00  Using where; Using index
320
 
2       DEPENDENT SUBQUERY      t1      ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
321
 
3       DEPENDENT UNION t2      ALL     NULL    NULL    NULL    NULL    5       100.00  Using where
322
 
NULL    UNION RESULT    <union2,3>      ALL     NULL    NULL    NULL    NULL    NULL    NULL    
 
315
1       PRIMARY t1      ALL     NULL    NULL    NULL    NULL    #       100.00  Using where
 
316
1       PRIMARY t3      ALL     NULL    NULL    NULL    NULL    #       100.00  Using where; Using join buffer
 
317
4       SUBQUERY        t3      ALL     NULL    NULL    NULL    NULL    #       100.00  Using where
 
318
5       SUBQUERY        t2i     index   it2i2   it2i3   70      NULL    #       100.00  Using where; Using index
 
319
2       DEPENDENT SUBQUERY      t1      ALL     NULL    NULL    NULL    NULL    #       100.00  Using where
 
320
3       DEPENDENT UNION t2      ALL     NULL    NULL    NULL    NULL    #       100.00  Using where
 
321
NULL    UNION RESULT    <union2,3>      ALL     NULL    NULL    NULL    NULL    #       NULL    
323
322
Warnings:
324
 
Note    1003    select "test"."t1"."a1" AS "a1","test"."t1"."a2" AS "a2","test"."t3"."c1" AS "c1","test"."t3"."c2" AS "c2" from "test"."t1" join "test"."t3" where (("test"."t3"."c1" = "test"."t1"."a1") and <in_optimizer>(("test"."t1"."a1","test"."t1"."a2"),<exists>(select "test"."t1"."a1" AS "a1","test"."t1"."a2" AS "a2" from "test"."t1" where (("test"."t1"."a1" > '0') and (<cache>("test"."t1"."a1") = "test"."t1"."a1") and (<cache>("test"."t1"."a2") = "test"."t1"."a2")) union select "test"."t2"."b1" AS "b1","test"."t2"."b2" AS "b2" from "test"."t2" where (("test"."t2"."b1" < '9') and (<cache>("test"."t1"."a1") = "test"."t2"."b1") and (<cache>("test"."t1"."a2") = "test"."t2"."b2")))) and <in_optimizer>(("test"."t3"."c1","test"."t3"."c2"),("test"."t3"."c1","test"."t3"."c2") in ( <materialize> (select "test"."t3"."c1" AS "c1","test"."t3"."c2" AS "c2" from "test"."t3" where <in_optimizer>(("test"."t3"."c1","test"."t3"."c2"),("test"."t3"."c1","test"."t3"."c2") in ( <materialize> (select "test"."t2i"."b1" AS "b1","test"."t2i"."b2" AS "b2" from "test"."t2i" where ("test"."t2i"."b2" > '0') ), <primary_index_lookup>("test"."t3"."c1" in <temporary table> on distinct_key))) ), <primary_index_lookup>("test"."t3"."c1" in <temporary table> on distinct_key))))
 
323
Note    1003    select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,`test`.`t3`.`c1` AS `c1`,`test`.`t3`.`c2` AS `c2` from `test`.`t1` join `test`.`t3` where ((`test`.`t3`.`c1` = `test`.`t1`.`a1`) and <in_optimizer>((`test`.`t1`.`a1`,`test`.`t1`.`a2`),<exists>(select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2` from `test`.`t1` where ((`test`.`t1`.`a1` > '0') and (<cache>(`test`.`t1`.`a1`) = `test`.`t1`.`a1`) and (<cache>(`test`.`t1`.`a2`) = `test`.`t1`.`a2`)) union select `test`.`t2`.`b1` AS `b1`,`test`.`t2`.`b2` AS `b2` from `test`.`t2` where ((`test`.`t2`.`b1` < '9') and (<cache>(`test`.`t1`.`a1`) = `test`.`t2`.`b1`) and (<cache>(`test`.`t1`.`a2`) = `test`.`t2`.`b2`)))) and <in_optimizer>((`test`.`t3`.`c1`,`test`.`t3`.`c2`),(`test`.`t3`.`c1`,`test`.`t3`.`c2`) in ( <materialize> (select `test`.`t3`.`c1` AS `c1`,`test`.`t3`.`c2` AS `c2` from `test`.`t3` where <in_optimizer>((`test`.`t3`.`c1`,`test`.`t3`.`c2`),(`test`.`t3`.`c1`,`test`.`t3`.`c2`) in ( <materialize> (select `test`.`t2i`.`b1` AS `b1`,`test`.`t2i`.`b2` AS `b2` from `test`.`t2i` where (`test`.`t2i`.`b2` > '0') ), <primary_index_lookup>(`test`.`t3`.`c1` in <temporary table> on distinct_key))) ), <primary_index_lookup>(`test`.`t3`.`c1` in <temporary table> on distinct_key))))
325
324
select * from t1, t3
326
325
where (a1, a2) in (select * from t1 where a1 > '0' UNION select * from t2 where b1 < '9') and
327
326
(c1, c2) in (select c1, c2 from t3
330
329
a1      a2      c1      c2
331
330
1 - 01  2 - 01  1 - 01  2 - 01
332
331
1 - 02  2 - 02  1 - 02  2 - 02
333
 
/******************************************************************************
 
332
/*********************************************************************
334
333
* Negative tests, where materialization should not be applied.
335
 
******************************************************************************/
 
334
**********************************************************************/
336
335
# UNION in a subquery
337
336
explain extended
338
337
select * from t3
339
338
where c1 in (select a1 from t1 where a1 > '0' UNION select b1 from t2 where b1 < '9');
340
339
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
341
 
1       PRIMARY t3      ALL     NULL    NULL    NULL    NULL    4       100.00  Using where
342
 
2       DEPENDENT SUBQUERY      t1      ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
343
 
3       DEPENDENT UNION t2      ALL     NULL    NULL    NULL    NULL    5       100.00  Using where
344
 
NULL    UNION RESULT    <union2,3>      ALL     NULL    NULL    NULL    NULL    NULL    NULL    
 
340
1       PRIMARY t3      ALL     NULL    NULL    NULL    NULL    #       100.00  Using where
 
341
2       DEPENDENT SUBQUERY      t1      ALL     NULL    NULL    NULL    NULL    #       100.00  Using where
 
342
3       DEPENDENT UNION t2      ALL     NULL    NULL    NULL    NULL    #       100.00  Using where
 
343
NULL    UNION RESULT    <union2,3>      ALL     NULL    NULL    NULL    NULL    #       NULL    
345
344
Warnings:
346
 
Note    1003    select "test"."t3"."c1" AS "c1","test"."t3"."c2" AS "c2" from "test"."t3" where <in_optimizer>("test"."t3"."c1",<exists>(select 1 AS "Not_used" from "test"."t1" where (("test"."t1"."a1" > '0') and (<cache>("test"."t3"."c1") = "test"."t1"."a1")) union select 1 AS "Not_used" from "test"."t2" where (("test"."t2"."b1" < '9') and (<cache>("test"."t3"."c1") = "test"."t2"."b1"))))
 
345
Note    1003    select `test`.`t3`.`c1` AS `c1`,`test`.`t3`.`c2` AS `c2` from `test`.`t3` where <in_optimizer>(`test`.`t3`.`c1`,<exists>(select 1 AS `Not_used` from `test`.`t1` where ((`test`.`t1`.`a1` > '0') and (<cache>(`test`.`t3`.`c1`) = `test`.`t1`.`a1`)) union select 1 AS `Not_used` from `test`.`t2` where ((`test`.`t2`.`b1` < '9') and (<cache>(`test`.`t3`.`c1`) = `test`.`t2`.`b1`))))
347
346
select * from t3
348
347
where c1 in (select a1 from t1 where a1 > '0' UNION select b1 from t2 where b1 < '9');
349
348
c1      c2
358
357
(a1, a2) in (select c1, c2 from t3 t3c
359
358
where (c1, c2) in (select b1, b2 from t2i where b2 > '0' or b2 = a2));
360
359
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
361
 
1       PRIMARY t1      ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
362
 
5       DEPENDENT SUBQUERY      t3c     ALL     NULL    NULL    NULL    NULL    4       100.00  Using where
363
 
6       DEPENDENT SUBQUERY      t2i     index_subquery  it2i1,it2i2,it2i3       it2i3   18      func,func       2       100.00  Using index; Using where
364
 
2       DEPENDENT SUBQUERY      t2      ALL     NULL    NULL    NULL    NULL    5       100.00  Using where
365
 
4       SUBQUERY        t3b     ALL     NULL    NULL    NULL    NULL    4       100.00  Using where
366
 
3       DEPENDENT SUBQUERY      t3a     ALL     NULL    NULL    NULL    NULL    4       100.00  Using where
 
360
1       PRIMARY t1      ALL     NULL    NULL    NULL    NULL    #       100.00  Using where
 
361
5       DEPENDENT SUBQUERY      t3c     ALL     NULL    NULL    NULL    NULL    #       100.00  Using where
 
362
6       DEPENDENT SUBQUERY      t2i     index_subquery  it2i1,it2i2,it2i3       it2i3   70      func,func       #       100.00  Using index; Using where
 
363
2       DEPENDENT SUBQUERY      t2      ALL     NULL    NULL    NULL    NULL    #       100.00  Using where
 
364
4       SUBQUERY        t3b     ALL     NULL    NULL    NULL    NULL    #       100.00  Using where
 
365
3       DEPENDENT SUBQUERY      t3a     ALL     NULL    NULL    NULL    NULL    #       100.00  Using where
367
366
Warnings:
368
367
Note    1276    Field or reference 'test.t1.a1' of SELECT #3 was resolved in SELECT #1
369
368
Note    1276    Field or reference 'test.t1.a2' of SELECT #6 was resolved in SELECT #1
370
 
Note    1003    select "test"."t1"."a1" AS "a1","test"."t1"."a2" AS "a2" from "test"."t1" where (<in_optimizer>(("test"."t1"."a1","test"."t1"."a2"),<exists>(select "test"."t2"."b1" AS "b1","test"."t2"."b2" AS "b2" from "test"."t2" where ((<in_optimizer>("test"."t2"."b2",<exists>(select 1 AS "Not_used" from "test"."t3" "t3a" where (("test"."t3a"."c1" = "test"."t1"."a1") and (<cache>("test"."t2"."b2") = "test"."t3a"."c2")))) or <in_optimizer>("test"."t2"."b2","test"."t2"."b2" in ( <materialize> (select "test"."t3b"."c2" AS "c2" from "test"."t3" "t3b" where ("test"."t3b"."c2" like '%03') ), <primary_index_lookup>("test"."t2"."b2" in <temporary table> on distinct_key)))) and (<cache>("test"."t1"."a1") = "test"."t2"."b1") and (<cache>("test"."t1"."a2") = "test"."t2"."b2")))) and <in_optimizer>(("test"."t1"."a1","test"."t1"."a2"),<exists>(select "test"."t3c"."c1" AS "c1","test"."t3c"."c2" AS "c2" from "test"."t3" "t3c" where (<in_optimizer>(("test"."t3c"."c1","test"."t3c"."c2"),<exists>(<index_lookup>(<cache>("test"."t3c"."c1") in t2i on it2i3 where ((("test"."t2i"."b2" > '0') or ("test"."t2i"."b2" = "test"."t1"."a2")) and (<cache>("test"."t3c"."c1") = "test"."t2i"."b1") and (<cache>("test"."t3c"."c2") = "test"."t2i"."b2"))))) and (<cache>("test"."t1"."a1") = "test"."t3c"."c1") and (<cache>("test"."t1"."a2") = "test"."t3c"."c2")))))
371
 
explain extended
372
 
select * from t1 where (a1, a2) in (select '1 - 01', '2 - 01');
373
 
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
374
 
1       PRIMARY t1      ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
375
 
2       DEPENDENT SUBQUERY      NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    No tables used
376
 
Warnings:
377
 
Note    1003    select "test"."t1"."a1" AS "a1","test"."t1"."a2" AS "a2" from "test"."t1" where <in_optimizer>(("test"."t1"."a1","test"."t1"."a2"),<exists>(select '1 - 01' AS "1 - 01",'2 - 01' AS "2 - 01" having ((<cache>("test"."t1"."a1") = '1 - 01') and (<cache>("test"."t1"."a2") = '2 - 01'))))
378
 
select * from t1 where (a1, a2) in (select '1 - 01', '2 - 01');
379
 
a1      a2
380
 
1 - 01  2 - 01
381
 
explain extended
382
 
select * from t1 where (a1, a2) in (select '1 - 01', '2 - 01' from dual);
383
 
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
384
 
1       PRIMARY t1      ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
385
 
2       DEPENDENT SUBQUERY      NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    No tables used
386
 
Warnings:
387
 
Note    1003    select "test"."t1"."a1" AS "a1","test"."t1"."a2" AS "a2" from "test"."t1" where <in_optimizer>(("test"."t1"."a1","test"."t1"."a2"),<exists>(select '1 - 01' AS "1 - 01",'2 - 01' AS "2 - 01" having ((<cache>("test"."t1"."a1") = '1 - 01') and (<cache>("test"."t1"."a2") = '2 - 01'))))
388
 
select * from t1 where (a1, a2) in (select '1 - 01', '2 - 01' from dual);
 
369
Note    1003    select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2` from `test`.`t1` where (<in_optimizer>((`test`.`t1`.`a1`,`test`.`t1`.`a2`),<exists>(select `test`.`t2`.`b1` AS `b1`,`test`.`t2`.`b2` AS `b2` from `test`.`t2` where ((<in_optimizer>(`test`.`t2`.`b2`,<exists>(select 1 AS `Not_used` from `test`.`t3` `t3a` where ((`test`.`t3a`.`c1` = `test`.`t1`.`a1`) and (<cache>(`test`.`t2`.`b2`) = `test`.`t3a`.`c2`)))) or <in_optimizer>(`test`.`t2`.`b2`,`test`.`t2`.`b2` in ( <materialize> (select `test`.`t3b`.`c2` AS `c2` from `test`.`t3` `t3b` where (`test`.`t3b`.`c2` like '%03') ), <primary_index_lookup>(`test`.`t2`.`b2` in <temporary table> on distinct_key)))) and (<cache>(`test`.`t1`.`a1`) = `test`.`t2`.`b1`) and (<cache>(`test`.`t1`.`a2`) = `test`.`t2`.`b2`)))) and <in_optimizer>((`test`.`t1`.`a1`,`test`.`t1`.`a2`),<exists>(select `test`.`t3c`.`c1` AS `c1`,`test`.`t3c`.`c2` AS `c2` from `test`.`t3` `t3c` where (<in_optimizer>((`test`.`t3c`.`c1`,`test`.`t3c`.`c2`),<exists>(<index_lookup>(<cache>(`test`.`t3c`.`c1`) in t2i on it2i3 where (((`test`.`t2i`.`b2` > '0') or (`test`.`t2i`.`b2` = `test`.`t1`.`a2`)) and (<cache>(`test`.`t3c`.`c1`) = `test`.`t2i`.`b1`) and (<cache>(`test`.`t3c`.`c2`) = `test`.`t2i`.`b2`))))) and (<cache>(`test`.`t1`.`a1`) = `test`.`t3c`.`c1`) and (<cache>(`test`.`t1`.`a2`) = `test`.`t3c`.`c2`)))))
 
370
DROP TABLE t1i, t2i, t3i;
 
371
explain extended
 
372
select * from t1 where (a1, a2) in (select '1 - 01', '2 - 01');
 
373
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
374
1       PRIMARY t1      ALL     NULL    NULL    NULL    NULL    #       100.00  Using where
 
375
2       DEPENDENT SUBQUERY      NULL    NULL    NULL    NULL    NULL    NULL    #       NULL    No tables used
 
376
Warnings:
 
377
Note    1003    select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2` from `test`.`t1` where <in_optimizer>((`test`.`t1`.`a1`,`test`.`t1`.`a2`),<exists>(select '1 - 01' AS `1 - 01`,'2 - 01' AS `2 - 01` having ((<cache>(`test`.`t1`.`a1`) = '1 - 01') and (<cache>(`test`.`t1`.`a2`) = '2 - 01'))))
 
378
select * from t1 where (a1, a2) in (select '1 - 01', '2 - 01');
389
379
a1      a2
390
380
1 - 01  2 - 01
391
381
/******************************************************************************
398
388
0
399
389
0
400
390
/* GROUP BY clause */
401
 
create table columns (col int key);
 
391
create temporary table columns (col int key) ENGINE=MyISAM;
402
392
insert into columns values (1), (2);
403
393
explain extended
404
394
select * from t1 group by (select col from columns limit 1);
405
395
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
406
 
1       PRIMARY t1      ALL     NULL    NULL    NULL    NULL    3       100.00  
407
 
2       SUBQUERY        columns index   NULL    PRIMARY 4       NULL    2       100.00  Using index
 
396
1       PRIMARY t1      ALL     NULL    NULL    NULL    NULL    #       100.00  
 
397
2       SUBQUERY        columns index   NULL    PRIMARY 4       NULL    #       100.00  Using index
408
398
Warnings:
409
 
Note    1003    select "test"."t1"."a1" AS "a1","test"."t1"."a2" AS "a2" from "test"."t1" group by (select "test"."columns"."col" AS "col" from "test"."columns" limit 1)
 
399
Note    1003    select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2` from `test`.`t1` group by (select `test`.`columns`.`col` AS `col` from `test`.`columns` limit 1)
410
400
select * from t1 group by (select col from columns limit 1);
411
401
a1      a2
412
402
1 - 00  2 - 00
413
403
explain extended
414
404
select * from t1 group by (a1 in (select col from columns));
415
405
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
416
 
1       PRIMARY t1      ALL     NULL    NULL    NULL    NULL    3       100.00  Using temporary; Using filesort
417
 
2       DEPENDENT SUBQUERY      columns unique_subquery PRIMARY PRIMARY 4       func    1       100.00  Using index; Using where; Full scan on NULL key
 
406
1       PRIMARY t1      ALL     NULL    NULL    NULL    NULL    #       100.00  Using temporary; Using filesort
 
407
2       DEPENDENT SUBQUERY      columns unique_subquery PRIMARY PRIMARY 4       func    #       100.00  Using index; Using where; Full scan on NULL key
418
408
Warnings:
419
 
Note    1003    select "test"."t1"."a1" AS "a1","test"."t1"."a2" AS "a2" from "test"."t1" group by <in_optimizer>("test"."t1"."a1",<exists>(<primary_index_lookup>(<cache>("test"."t1"."a1") in columns on PRIMARY where trigcond((<cache>("test"."t1"."a1") = "test"."columns"."col")))))
 
409
Note    1003    select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2` from `test`.`t1` group by <in_optimizer>(`test`.`t1`.`a1`,<exists>(<primary_index_lookup>(<cache>(`test`.`t1`.`a1`) in columns on PRIMARY where trigcond((<cache>(`test`.`t1`.`a1`) = `test`.`columns`.`col`)))))
420
410
select * from t1 group by (a1 in (select col from columns));
421
411
a1      a2
422
412
1 - 00  2 - 00
424
414
explain extended
425
415
select * from t1 order by (select col from columns limit 1);
426
416
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
427
 
1       PRIMARY t1      ALL     NULL    NULL    NULL    NULL    3       100.00  
428
 
2       SUBQUERY        columns index   NULL    PRIMARY 4       NULL    2       100.00  Using index
 
417
1       PRIMARY t1      ALL     NULL    NULL    NULL    NULL    #       100.00  
 
418
2       SUBQUERY        columns index   NULL    PRIMARY 4       NULL    #       100.00  Using index
429
419
Warnings:
430
 
Note    1003    select "test"."t1"."a1" AS "a1","test"."t1"."a2" AS "a2" from "test"."t1" order by (select "test"."columns"."col" AS "col" from "test"."columns" limit 1)
 
420
Note    1003    select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2` from `test`.`t1` order by (select `test`.`columns`.`col` AS `col` from `test`.`columns` limit 1)
431
421
select * from t1 order by (select col from columns limit 1);
432
422
a1      a2
433
423
1 - 00  2 - 00
434
424
1 - 01  2 - 01
435
425
1 - 02  2 - 02
 
426
DROP TABLE columns;
436
427
/******************************************************************************
437
428
* Column types/sizes that affect materialization.
438
429
******************************************************************************/
440
431
Test that BLOBs are not materialized (except when arguments of some functions).
441
432
*/
442
433
# force materialization to be always considered
443
 
set @@optimizer_switch=no_semijoin;
444
434
set @prefix_len = 6;
445
435
set @blob_len = 16;
446
436
set @suffix_len = @blob_len - @prefix_len;
447
 
create table t1_16 (a1 blob(16), a2 blob(16));
448
 
create table t2_16 (b1 blob(16), b2 blob(16));
449
 
create table t3_16 (c1 blob(16), c2 blob(16));
 
437
create temporary table t1_16 (a1 blob, a2 blob) ENGINE=MyISAM;
 
438
create temporary table t2_16 (b1 blob, b2 blob) ENGINE=MyISAM;
 
439
create temporary table t3_16 (c1 blob, c2 blob) ENGINE=MyISAM;
450
440
insert into t1_16 values
451
441
(concat('1 - 00', repeat('x', @suffix_len)), concat('2 - 00', repeat('x', @suffix_len)));
452
442
insert into t1_16 values
474
464
1       PRIMARY t1_16   ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
475
465
2       DEPENDENT SUBQUERY      t2_16   ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
476
466
Warnings:
477
 
Note    1003    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 (select 1 AS "Not_used" from "test"."t2_16" where (("test"."t2_16"."b1" > '0') and (<cache>("test"."t1_16"."a1") = "test"."t2_16"."b1"))))
 
467
Note    1003    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 (select 1 AS `Not_used` from `test`.`t2_16` where ((`test`.`t2_16`.`b1` > '0') and (<cache>(`test`.`t1_16`.`a1`) = `test`.`t2_16`.`b1`))))
478
468
select left(a1,7), left(a2,7)
479
469
from t1_16
480
470
where a1 in (select b1 from t2_16 where b1 > '0');
488
478
1       PRIMARY t1_16   ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
489
479
2       DEPENDENT SUBQUERY      t2_16   ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
490
480
Warnings:
491
 
Note    1003    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"."a2"),("test"."t1_16"."a1","test"."t1_16"."a2") in (select "test"."t2_16"."b1" AS "b1","test"."t2_16"."b2" AS "b2" from "test"."t2_16" where (("test"."t2_16"."b1" > '0') and (<cache>("test"."t1_16"."a1") = "test"."t2_16"."b1") and (<cache>("test"."t1_16"."a2") = "test"."t2_16"."b2"))))
 
481
Note    1003    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`.`a2`),(`test`.`t1_16`.`a1`,`test`.`t1_16`.`a2`) in (select `test`.`t2_16`.`b1` AS `b1`,`test`.`t2_16`.`b2` AS `b2` from `test`.`t2_16` where ((`test`.`t2_16`.`b1` > '0') and (<cache>(`test`.`t1_16`.`a1`) = `test`.`t2_16`.`b1`) and (<cache>(`test`.`t1_16`.`a2`) = `test`.`t2_16`.`b2`))))
492
482
select left(a1,7), left(a2,7)
493
483
from t1_16
494
484
where (a1,a2) in (select b1, b2 from t2_16 where b1 > '0');
502
492
1       PRIMARY t1_16   ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
503
493
2       SUBQUERY        t2_16   ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
504
494
Warnings:
505
 
Note    1003    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 substr("test"."t2_16"."b1",1,16) AS "substring(b1,1,16)" from "test"."t2_16" where ("test"."t2_16"."b1" > '0') ), <primary_index_lookup>("test"."t1_16"."a1" in <temporary table> on distinct_key)))
 
495
Note    1003    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 substr(`test`.`t2_16`.`b1`,1,16) AS `substring(b1,1,16)` from `test`.`t2_16` where (`test`.`t2_16`.`b1` > '0') ), <primary_index_lookup>(`test`.`t1_16`.`a1` in <temporary table> on distinct_key)))
506
496
select left(a1,7), left(a2,7)
507
497
from t1_16
508
498
where a1 in (select substring(b1,1,16) from t2_16 where b1 > '0');
516
506
1       PRIMARY t1_16   ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
517
507
2       DEPENDENT SUBQUERY      t2_16   ALL     NULL    NULL    NULL    NULL    3       100.00  Using filesort
518
508
Warnings:
519
 
Note    1003    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 (select group_concat("test"."t2_16"."b1" separator ',') AS "group_concat(b1)" 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 ',')))))
 
509
Note    1003    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 (select group_concat(`test`.`t2_16`.`b1` separator ',') AS `group_concat(b1)` 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 ',')))))
520
510
select left(a1,7), left(a2,7)
521
511
from t1_16
522
512
where a1 in (select group_concat(b1) from t2_16 group by b2);
531
521
1       PRIMARY t1_16   ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
532
522
2       SUBQUERY        t2_16   ALL     NULL    NULL    NULL    NULL    3       100.00  Using filesort
533
523
Warnings:
534
 
Note    1003    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 group_concat("test"."t2_16"."b1" separator ',') AS "group_concat(b1)" from "test"."t2_16" group by "test"."t2_16"."b2" ), <primary_index_lookup>("test"."t1_16"."a1" in <temporary table> on distinct_key)))
 
524
Note    1003    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 group_concat(`test`.`t2_16`.`b1` separator ',') AS `group_concat(b1)` from `test`.`t2_16` group by `test`.`t2_16`.`b2` ), <primary_index_lookup>(`test`.`t1_16`.`a1` in <temporary table> on distinct_key)))
535
525
select left(a1,7), left(a2,7)
536
526
from t1_16
537
527
where a1 in (select group_concat(b1) from t2_16 group by b2);
553
543
3       DEPENDENT SUBQUERY      t2      ALL     NULL    NULL    NULL    NULL    5       100.00  Using where; Using join buffer
554
544
4       SUBQUERY        t3      ALL     NULL    NULL    NULL    NULL    4       100.00  Using where
555
545
Warnings:
556
 
Note    1003    select "test"."t1"."a1" AS "a1","test"."t1"."a2" AS "a2" from "test"."t1" where <in_optimizer>(concat("test"."t1"."a1",'x'),concat("test"."t1"."a1",'x') in ( <materialize> (select left("test"."t1_16"."a1",8) AS "left(a1,8)" from "test"."t1_16" where <in_optimizer>(("test"."t1_16"."a1","test"."t1_16"."a2"),("test"."t1_16"."a1","test"."t1_16"."a2") in (select "test"."t2_16"."b1" AS "b1","test"."t2_16"."b2" AS "b2" from "test"."t2_16" join "test"."t2" where (("test"."t2"."b2" = substr("test"."t2_16"."b2",1,6)) and <in_optimizer>("test"."t2"."b1","test"."t2"."b1" in ( <materialize> (select "test"."t3"."c1" AS "c1" from "test"."t3" where ("test"."t3"."c2" > '0') ), <primary_index_lookup>("test"."t2"."b1" in <temporary table> on distinct_key))) and (<cache>("test"."t1_16"."a1") = "test"."t2_16"."b1") and (<cache>("test"."t1_16"."a2") = "test"."t2_16"."b2")))) ), <primary_index_lookup>(concat("test"."t1"."a1",'x') in <temporary table> on distinct_key)))
 
546
Note    1003    select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2` from `test`.`t1` where <in_optimizer>(concat(`test`.`t1`.`a1`,'x'),concat(`test`.`t1`.`a1`,'x') in ( <materialize> (select left(`test`.`t1_16`.`a1`,8) AS `left(a1,8)` from `test`.`t1_16` where <in_optimizer>((`test`.`t1_16`.`a1`,`test`.`t1_16`.`a2`),(`test`.`t1_16`.`a1`,`test`.`t1_16`.`a2`) in (select `test`.`t2_16`.`b1` AS `b1`,`test`.`t2_16`.`b2` AS `b2` from `test`.`t2_16` join `test`.`t2` where ((`test`.`t2`.`b2` = substr(`test`.`t2_16`.`b2`,1,6)) and <in_optimizer>(`test`.`t2`.`b1`,`test`.`t2`.`b1` in ( <materialize> (select `test`.`t3`.`c1` AS `c1` from `test`.`t3` where (`test`.`t3`.`c2` > '0') ), <primary_index_lookup>(`test`.`t2`.`b1` in <temporary table> on distinct_key))) and (<cache>(`test`.`t1_16`.`a1`) = `test`.`t2_16`.`b1`) and (<cache>(`test`.`t1_16`.`a2`) = `test`.`t2_16`.`b2`)))) ), <primary_index_lookup>(concat(`test`.`t1`.`a1`,'x') in <temporary table> on distinct_key)))
557
547
drop table t1_16, t2_16, t3_16;
558
548
set @blob_len = 512;
559
549
set @suffix_len = @blob_len - @prefix_len;
560
 
create table t1_512 (a1 blob(512), a2 blob(512));
561
 
create table t2_512 (b1 blob(512), b2 blob(512));
562
 
create table t3_512 (c1 blob(512), c2 blob(512));
 
550
create temporary table t1_512 (a1 blob, a2 blob) ENGINE=MyISAM;
 
551
create temporary table t2_512 (b1 blob, b2 blob) ENGINE=MyISAM;
 
552
create temporary table t3_512 (c1 blob, c2 blob) ENGINE=MyISAM;
563
553
insert into t1_512 values
564
554
(concat('1 - 00', repeat('x', @suffix_len)), concat('2 - 00', repeat('x', @suffix_len)));
565
555
insert into t1_512 values
587
577
1       PRIMARY t1_512  ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
588
578
2       DEPENDENT SUBQUERY      t2_512  ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
589
579
Warnings:
590
 
Note    1003    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 (select 1 AS "Not_used" from "test"."t2_512" where (("test"."t2_512"."b1" > '0') and (<cache>("test"."t1_512"."a1") = "test"."t2_512"."b1"))))
 
580
Note    1003    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 (select 1 AS `Not_used` from `test`.`t2_512` where ((`test`.`t2_512`.`b1` > '0') and (<cache>(`test`.`t1_512`.`a1`) = `test`.`t2_512`.`b1`))))
591
581
select left(a1,7), left(a2,7)
592
582
from t1_512
593
583
where a1 in (select b1 from t2_512 where b1 > '0');
601
591
1       PRIMARY t1_512  ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
602
592
2       DEPENDENT SUBQUERY      t2_512  ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
603
593
Warnings:
604
 
Note    1003    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"."a2"),("test"."t1_512"."a1","test"."t1_512"."a2") in (select "test"."t2_512"."b1" AS "b1","test"."t2_512"."b2" AS "b2" from "test"."t2_512" where (("test"."t2_512"."b1" > '0') and (<cache>("test"."t1_512"."a1") = "test"."t2_512"."b1") and (<cache>("test"."t1_512"."a2") = "test"."t2_512"."b2"))))
 
594
Note    1003    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`.`a2`),(`test`.`t1_512`.`a1`,`test`.`t1_512`.`a2`) in (select `test`.`t2_512`.`b1` AS `b1`,`test`.`t2_512`.`b2` AS `b2` from `test`.`t2_512` where ((`test`.`t2_512`.`b1` > '0') and (<cache>(`test`.`t1_512`.`a1`) = `test`.`t2_512`.`b1`) and (<cache>(`test`.`t1_512`.`a2`) = `test`.`t2_512`.`b2`))))
605
595
select left(a1,7), left(a2,7)
606
596
from t1_512
607
597
where (a1,a2) in (select b1, b2 from t2_512 where b1 > '0');
615
605
1       PRIMARY t1_512  ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
616
606
2       SUBQUERY        t2_512  ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
617
607
Warnings:
618
 
Note    1003    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 substr("test"."t2_512"."b1",1,512) AS "substring(b1,1,512)" from "test"."t2_512" where ("test"."t2_512"."b1" > '0') ), <primary_index_lookup>("test"."t1_512"."a1" in <temporary table> on distinct_key)))
 
608
Note    1003    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 substr(`test`.`t2_512`.`b1`,1,512) AS `substring(b1,1,512)` from `test`.`t2_512` where (`test`.`t2_512`.`b1` > '0') ), <primary_index_lookup>(`test`.`t1_512`.`a1` in <temporary table> on distinct_key)))
619
609
select left(a1,7), left(a2,7)
620
610
from t1_512
621
611
where a1 in (select substring(b1,1,512) from t2_512 where b1 > '0');
629
619
1       PRIMARY t1_512  ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
630
620
2       SUBQUERY        t2_512  ALL     NULL    NULL    NULL    NULL    3       100.00  Using filesort
631
621
Warnings:
632
 
Note    1003    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 group_concat("test"."t2_512"."b1" separator ',') AS "group_concat(b1)" from "test"."t2_512" group by "test"."t2_512"."b2" ), <primary_index_lookup>("test"."t1_512"."a1" in <temporary table> on distinct_key)))
 
622
Note    1003    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 group_concat(`test`.`t2_512`.`b1` separator ',') AS `group_concat(b1)` from `test`.`t2_512` group by `test`.`t2_512`.`b2` ), <primary_index_lookup>(`test`.`t1_512`.`a1` in <temporary table> on distinct_key)))
633
623
select left(a1,7), left(a2,7)
634
624
from t1_512
635
625
where a1 in (select group_concat(b1) from t2_512 group by b2);
644
634
1       PRIMARY t1_512  ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
645
635
2       SUBQUERY        t2_512  ALL     NULL    NULL    NULL    NULL    3       100.00  Using filesort
646
636
Warnings:
647
 
Note    1003    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 group_concat("test"."t2_512"."b1" separator ',') AS "group_concat(b1)" from "test"."t2_512" group by "test"."t2_512"."b2" ), <primary_index_lookup>("test"."t1_512"."a1" in <temporary table> on distinct_key)))
 
637
Note    1003    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 group_concat(`test`.`t2_512`.`b1` separator ',') AS `group_concat(b1)` from `test`.`t2_512` group by `test`.`t2_512`.`b2` ), <primary_index_lookup>(`test`.`t1_512`.`a1` in <temporary table> on distinct_key)))
648
638
select left(a1,7), left(a2,7)
649
639
from t1_512
650
640
where a1 in (select group_concat(b1) from t2_512 group by b2);
654
644
drop table t1_512, t2_512, t3_512;
655
645
set @blob_len = 1024;
656
646
set @suffix_len = @blob_len - @prefix_len;
657
 
create table t1_1024 (a1 blob(1024), a2 blob(1024));
658
 
create table t2_1024 (b1 blob(1024), b2 blob(1024));
659
 
create table t3_1024 (c1 blob(1024), c2 blob(1024));
 
647
create temporary table t1_1024 (a1 blob, a2 blob) ENGINE=MyISAM;
 
648
create temporary table t2_1024 (b1 blob, b2 blob) ENGINE=MyISAM;
 
649
create temporary table t3_1024 (c1 blob, c2 blob) ENGINE=MyISAM;
660
650
insert into t1_1024 values
661
651
(concat('1 - 00', repeat('x', @suffix_len)), concat('2 - 00', repeat('x', @suffix_len)));
662
652
insert into t1_1024 values
684
674
1       PRIMARY t1_1024 ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
685
675
2       DEPENDENT SUBQUERY      t2_1024 ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
686
676
Warnings:
687
 
Note    1003    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 (select 1 AS "Not_used" from "test"."t2_1024" where (("test"."t2_1024"."b1" > '0') and (<cache>("test"."t1_1024"."a1") = "test"."t2_1024"."b1"))))
 
677
Note    1003    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 (select 1 AS `Not_used` from `test`.`t2_1024` where ((`test`.`t2_1024`.`b1` > '0') and (<cache>(`test`.`t1_1024`.`a1`) = `test`.`t2_1024`.`b1`))))
688
678
select left(a1,7), left(a2,7)
689
679
from t1_1024
690
680
where a1 in (select b1 from t2_1024 where b1 > '0');
698
688
1       PRIMARY t1_1024 ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
699
689
2       DEPENDENT SUBQUERY      t2_1024 ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
700
690
Warnings:
701
 
Note    1003    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"."a2"),("test"."t1_1024"."a1","test"."t1_1024"."a2") in (select "test"."t2_1024"."b1" AS "b1","test"."t2_1024"."b2" AS "b2" from "test"."t2_1024" where (("test"."t2_1024"."b1" > '0') and (<cache>("test"."t1_1024"."a1") = "test"."t2_1024"."b1") and (<cache>("test"."t1_1024"."a2") = "test"."t2_1024"."b2"))))
 
691
Note    1003    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`.`a2`),(`test`.`t1_1024`.`a1`,`test`.`t1_1024`.`a2`) in (select `test`.`t2_1024`.`b1` AS `b1`,`test`.`t2_1024`.`b2` AS `b2` from `test`.`t2_1024` where ((`test`.`t2_1024`.`b1` > '0') and (<cache>(`test`.`t1_1024`.`a1`) = `test`.`t2_1024`.`b1`) and (<cache>(`test`.`t1_1024`.`a2`) = `test`.`t2_1024`.`b2`))))
702
692
select left(a1,7), left(a2,7)
703
693
from t1_1024
704
694
where (a1,a2) in (select b1, b2 from t2_1024 where b1 > '0');
712
702
1       PRIMARY t1_1024 ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
713
703
2       DEPENDENT SUBQUERY      t2_1024 ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
714
704
Warnings:
715
 
Note    1003    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 (select 1 AS "Not_used" from "test"."t2_1024" where (("test"."t2_1024"."b1" > '0') and (<cache>("test"."t1_1024"."a1") = substr("test"."t2_1024"."b1",1,1024)))))
 
705
Note    1003    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 (select 1 AS `Not_used` from `test`.`t2_1024` where ((`test`.`t2_1024`.`b1` > '0') and (<cache>(`test`.`t1_1024`.`a1`) = substr(`test`.`t2_1024`.`b1`,1,1024)))))
716
706
select left(a1,7), left(a2,7)
717
707
from t1_1024
718
708
where a1 in (select substring(b1,1,1024) from t2_1024 where b1 > '0');
726
716
1       PRIMARY t1_1024 ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
727
717
2       SUBQUERY        t2_1024 ALL     NULL    NULL    NULL    NULL    3       100.00  Using filesort
728
718
Warnings:
729
 
Note    1003    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 group_concat("test"."t2_1024"."b1" separator ',') AS "group_concat(b1)" from "test"."t2_1024" group by "test"."t2_1024"."b2" ), <primary_index_lookup>("test"."t1_1024"."a1" in <temporary table> on distinct_key)))
 
719
Note    1003    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 group_concat(`test`.`t2_1024`.`b1` separator ',') AS `group_concat(b1)` from `test`.`t2_1024` group by `test`.`t2_1024`.`b2` ), <primary_index_lookup>(`test`.`t1_1024`.`a1` in <temporary table> on distinct_key)))
730
720
select left(a1,7), left(a2,7)
731
721
from t1_1024
732
722
where a1 in (select group_concat(b1) from t2_1024 group by b2);
741
731
1       PRIMARY t1_1024 ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
742
732
2       SUBQUERY        t2_1024 ALL     NULL    NULL    NULL    NULL    3       100.00  Using filesort
743
733
Warnings:
744
 
Note    1003    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 group_concat("test"."t2_1024"."b1" separator ',') AS "group_concat(b1)" from "test"."t2_1024" group by "test"."t2_1024"."b2" ), <primary_index_lookup>("test"."t1_1024"."a1" in <temporary table> on distinct_key)))
 
734
Note    1003    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 group_concat(`test`.`t2_1024`.`b1` separator ',') AS `group_concat(b1)` from `test`.`t2_1024` group by `test`.`t2_1024`.`b2` ), <primary_index_lookup>(`test`.`t1_1024`.`a1` in <temporary table> on distinct_key)))
745
735
select left(a1,7), left(a2,7)
746
736
from t1_1024
747
737
where a1 in (select group_concat(b1) from t2_1024 group by b2);
751
741
drop table t1_1024, t2_1024, t3_1024;
752
742
set @blob_len = 1025;
753
743
set @suffix_len = @blob_len - @prefix_len;
754
 
create table t1_1025 (a1 blob(1025), a2 blob(1025));
755
 
create table t2_1025 (b1 blob(1025), b2 blob(1025));
756
 
create table t3_1025 (c1 blob(1025), c2 blob(1025));
 
744
create temporary table t1_1025 (a1 blob, a2 blob) ENGINE=MyISAM;
 
745
create temporary table t2_1025 (b1 blob, b2 blob) ENGINE=MyISAM;
 
746
create temporary table t3_1025 (c1 blob, c2 blob) ENGINE=MyISAM;
757
747
insert into t1_1025 values
758
748
(concat('1 - 00', repeat('x', @suffix_len)), concat('2 - 00', repeat('x', @suffix_len)));
759
749
insert into t1_1025 values
781
771
1       PRIMARY t1_1025 ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
782
772
2       DEPENDENT SUBQUERY      t2_1025 ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
783
773
Warnings:
784
 
Note    1003    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 (select 1 AS "Not_used" from "test"."t2_1025" where (("test"."t2_1025"."b1" > '0') and (<cache>("test"."t1_1025"."a1") = "test"."t2_1025"."b1"))))
 
774
Note    1003    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 (select 1 AS `Not_used` from `test`.`t2_1025` where ((`test`.`t2_1025`.`b1` > '0') and (<cache>(`test`.`t1_1025`.`a1`) = `test`.`t2_1025`.`b1`))))
785
775
select left(a1,7), left(a2,7)
786
776
from t1_1025
787
777
where a1 in (select b1 from t2_1025 where b1 > '0');
795
785
1       PRIMARY t1_1025 ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
796
786
2       DEPENDENT SUBQUERY      t2_1025 ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
797
787
Warnings:
798
 
Note    1003    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"."a2"),("test"."t1_1025"."a1","test"."t1_1025"."a2") in (select "test"."t2_1025"."b1" AS "b1","test"."t2_1025"."b2" AS "b2" from "test"."t2_1025" where (("test"."t2_1025"."b1" > '0') and (<cache>("test"."t1_1025"."a1") = "test"."t2_1025"."b1") and (<cache>("test"."t1_1025"."a2") = "test"."t2_1025"."b2"))))
 
788
Note    1003    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`.`a2`),(`test`.`t1_1025`.`a1`,`test`.`t1_1025`.`a2`) in (select `test`.`t2_1025`.`b1` AS `b1`,`test`.`t2_1025`.`b2` AS `b2` from `test`.`t2_1025` where ((`test`.`t2_1025`.`b1` > '0') and (<cache>(`test`.`t1_1025`.`a1`) = `test`.`t2_1025`.`b1`) and (<cache>(`test`.`t1_1025`.`a2`) = `test`.`t2_1025`.`b2`))))
799
789
select left(a1,7), left(a2,7)
800
790
from t1_1025
801
791
where (a1,a2) in (select b1, b2 from t2_1025 where b1 > '0');
809
799
1       PRIMARY t1_1025 ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
810
800
2       DEPENDENT SUBQUERY      t2_1025 ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
811
801
Warnings:
812
 
Note    1003    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 (select 1 AS "Not_used" from "test"."t2_1025" where (("test"."t2_1025"."b1" > '0') and (<cache>("test"."t1_1025"."a1") = substr("test"."t2_1025"."b1",1,1025)))))
 
802
Note    1003    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 (select 1 AS `Not_used` from `test`.`t2_1025` where ((`test`.`t2_1025`.`b1` > '0') and (<cache>(`test`.`t1_1025`.`a1`) = substr(`test`.`t2_1025`.`b1`,1,1025)))))
813
803
select left(a1,7), left(a2,7)
814
804
from t1_1025
815
805
where a1 in (select substring(b1,1,1025) from t2_1025 where b1 > '0');
823
813
1       PRIMARY t1_1025 ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
824
814
2       SUBQUERY        t2_1025 ALL     NULL    NULL    NULL    NULL    3       100.00  Using filesort
825
815
Warnings:
826
 
Note    1003    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 group_concat("test"."t2_1025"."b1" separator ',') AS "group_concat(b1)" from "test"."t2_1025" group by "test"."t2_1025"."b2" ), <primary_index_lookup>("test"."t1_1025"."a1" in <temporary table> on distinct_key)))
 
816
Note    1003    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 group_concat(`test`.`t2_1025`.`b1` separator ',') AS `group_concat(b1)` from `test`.`t2_1025` group by `test`.`t2_1025`.`b2` ), <primary_index_lookup>(`test`.`t1_1025`.`a1` in <temporary table> on distinct_key)))
827
817
select left(a1,7), left(a2,7)
828
818
from t1_1025
829
819
where a1 in (select group_concat(b1) from t2_1025 group by b2);
838
828
1       PRIMARY t1_1025 ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
839
829
2       SUBQUERY        t2_1025 ALL     NULL    NULL    NULL    NULL    3       100.00  Using filesort
840
830
Warnings:
841
 
Note    1003    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 group_concat("test"."t2_1025"."b1" separator ',') AS "group_concat(b1)" from "test"."t2_1025" group by "test"."t2_1025"."b2" ), <primary_index_lookup>("test"."t1_1025"."a1" in <temporary table> on distinct_key)))
 
831
Note    1003    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 group_concat(`test`.`t2_1025`.`b1` separator ',') AS `group_concat(b1)` from `test`.`t2_1025` group by `test`.`t2_1025`.`b2` ), <primary_index_lookup>(`test`.`t1_1025`.`a1` in <temporary table> on distinct_key)))
842
832
select left(a1,7), left(a2,7)
843
833
from t1_1025
844
834
where a1 in (select group_concat(b1) from t2_1025 group by b2);
846
836
1 - 01x 2 - 01x
847
837
1 - 02x 2 - 02x
848
838
drop table t1_1025, t2_1025, t3_1025;
849
 
create table t1bit (a1 bit(3), a2 bit(3));
850
 
create table t2bit (b1 bit(3), b2 bit(3));
851
 
insert into t1bit values (b'000', b'100');
852
 
insert into t1bit values (b'001', b'101');
853
 
insert into t1bit values (b'010', b'110');
854
 
insert into t2bit values (b'001', b'101');
855
 
insert into t2bit values (b'010', b'110');
856
 
insert into t2bit values (b'110', b'111');
857
 
set @@optimizer_switch=no_semijoin;
858
 
explain extended select bin(a1), bin(a2)
859
 
from t1bit
860
 
where (a1, a2) in (select b1, b2 from t2bit);
861
 
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
862
 
1       PRIMARY t1bit   ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
863
 
2       SUBQUERY        t2bit   ALL     NULL    NULL    NULL    NULL    3       100.00  
864
 
Warnings:
865
 
Note    1003    select conv("test"."t1bit"."a1",10,2) AS "bin(a1)",conv("test"."t1bit"."a2",10,2) AS "bin(a2)" from "test"."t1bit" where <in_optimizer>(("test"."t1bit"."a1","test"."t1bit"."a2"),("test"."t1bit"."a1","test"."t1bit"."a2") in ( <materialize> (select "test"."t2bit"."b1" AS "b1","test"."t2bit"."b2" AS "b2" from "test"."t2bit" ), <primary_index_lookup>("test"."t1bit"."a1" in <temporary table> on distinct_key)))
866
 
select bin(a1), bin(a2)
867
 
from t1bit
868
 
where (a1, a2) in (select b1, b2 from t2bit);
869
 
bin(a1) bin(a2)
870
 
1       101
871
 
10      110
872
 
drop table t1bit, t2bit;
873
 
create table t1bb (a1 bit(3), a2 blob(3));
874
 
create table t2bb (b1 bit(3), b2 blob(3));
875
 
insert into t1bb values (b'000', '100');
876
 
insert into t1bb values (b'001', '101');
877
 
insert into t1bb values (b'010', '110');
878
 
insert into t2bb values (b'001', '101');
879
 
insert into t2bb values (b'010', '110');
880
 
insert into t2bb values (b'110', '111');
881
 
explain extended select bin(a1), a2
882
 
from t1bb
883
 
where (a1, a2) in (select b1, b2 from t2bb);
884
 
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
885
 
1       PRIMARY t1bb    ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
886
 
2       DEPENDENT SUBQUERY      t2bb    ALL     NULL    NULL    NULL    NULL    3       100.00  Using where
887
 
Warnings:
888
 
Note    1003    select conv("test"."t1bb"."a1",10,2) AS "bin(a1)","test"."t1bb"."a2" AS "a2" from "test"."t1bb" where <in_optimizer>(("test"."t1bb"."a1","test"."t1bb"."a2"),("test"."t1bb"."a1","test"."t1bb"."a2") in (select "test"."t2bb"."b1" AS "b1","test"."t2bb"."b2" AS "b2" from "test"."t2bb" where ((<cache>("test"."t1bb"."a1") = "test"."t2bb"."b1") and (<cache>("test"."t1bb"."a2") = "test"."t2bb"."b2"))))
889
 
select bin(a1), a2
890
 
from t1bb
891
 
where (a1, a2) in (select b1, b2 from t2bb);
892
 
bin(a1) a2
893
 
1       101
894
 
10      110
895
 
drop table t1bb, t2bb;
896
 
drop table t1, t2, t3, t1i, t2i, t3i, columns;
 
839
drop table t1, t2, t3;
897
840
/******************************************************************************
898
841
* Test the cache of the left operand of IN.
899
842
******************************************************************************/
900
 
set @@optimizer_switch=no_semijoin;
901
 
create table t1 (s1 int);
902
 
create table t2 (s2 int);
 
843
# Test that default values of Cached_item are not used for comparison
 
844
create temporary table t1 (s1 int) ENGINE=MyISAM;
 
845
create temporary table t2 (s2 int) ENGINE=MyISAM;
903
846
insert into t1 values (5),(1),(0);
904
847
insert into t2 values (0), (1);
905
848
select s2 from t2 where s2 in (select s1 from t1);
907
850
0
908
851
1
909
852
drop table t1, t2;
910
 
create table t1 (a int not null, b int not null);
911
 
create table t2 (c int not null, d int not null);
912
 
create table t3 (e int not null);
 
853
create temporary table t1 (a int not null, b int not null) ENGINE=MyISAM;
 
854
create temporary table t2 (c int not null, d int not null) ENGINE=MyISAM;
 
855
create temporary table t3 (e int not null) ENGINE=MyISAM;
913
856
insert into t1 values (1,10);
914
857
insert into t1 values (1,20);
915
858
insert into t1 values (2,10);
933
876
1       PRIMARY t1      ALL     NULL    NULL    NULL    NULL    7       100.00  Using where
934
877
2       SUBQUERY        t2      ALL     NULL    NULL    NULL    NULL    6       100.00  Using where
935
878
Warnings:
936
 
Note    1003    select "test"."t1"."a" AS "a" from "test"."t1" where <in_optimizer>("test"."t1"."a","test"."t1"."a" in ( <materialize> (select "test"."t2"."c" AS "c" from "test"."t2" where ("test"."t2"."d" >= 20) ), <primary_index_lookup>("test"."t1"."a" in <temporary table> on distinct_key)))
 
879
Note    1003    select `test`.`t1`.`a` AS `a` from `test`.`t1` where <in_optimizer>(`test`.`t1`.`a`,`test`.`t1`.`a` in ( <materialize> (select `test`.`t2`.`c` AS `c` from `test`.`t2` where (`test`.`t2`.`d` >= 20) ), <primary_index_lookup>(`test`.`t1`.`a` in <temporary table> on distinct_key)))
937
880
select a from t1 where a in (select c from t2 where d >= 20);
938
881
a
939
882
2
947
890
1       PRIMARY t1      index   NULL    it1a    4       NULL    7       100.00  Using where; Using index
948
891
2       SUBQUERY        t2      ALL     NULL    NULL    NULL    NULL    6       100.00  Using where
949
892
Warnings:
950
 
Note    1003    select "test"."t1"."a" AS "a" from "test"."t1" where <in_optimizer>("test"."t1"."a","test"."t1"."a" in ( <materialize> (select "test"."t2"."c" AS "c" from "test"."t2" where ("test"."t2"."d" >= 20) ), <primary_index_lookup>("test"."t1"."a" in <temporary table> on distinct_key)))
 
893
Note    1003    select `test`.`t1`.`a` AS `a` from `test`.`t1` where <in_optimizer>(`test`.`t1`.`a`,`test`.`t1`.`a` in ( <materialize> (select `test`.`t2`.`c` AS `c` from `test`.`t2` where (`test`.`t2`.`d` >= 20) ), <primary_index_lookup>(`test`.`t1`.`a` in <temporary table> on distinct_key)))
951
894
select a from t1 where a in (select c from t2 where d >= 20);
952
895
a
953
896
2
961
904
1       PRIMARY t1      index   NULL    it1a    4       NULL    7       100.00  Using where; Using index
962
905
2       SUBQUERY        t2      ALL     NULL    NULL    NULL    NULL    7       100.00  Using where
963
906
Warnings:
964
 
Note    1003    select "test"."t1"."a" AS "a" from "test"."t1" where <in_optimizer>("test"."t1"."a","test"."t1"."a" in ( <materialize> (select "test"."t2"."c" AS "c" from "test"."t2" where ("test"."t2"."d" >= 20) ), <primary_index_lookup>("test"."t1"."a" in <temporary table> on distinct_key)))
 
907
Note    1003    select `test`.`t1`.`a` AS `a` from `test`.`t1` where <in_optimizer>(`test`.`t1`.`a`,`test`.`t1`.`a` in ( <materialize> (select `test`.`t2`.`c` AS `c` from `test`.`t2` where (`test`.`t2`.`d` >= 20) ), <primary_index_lookup>(`test`.`t1`.`a` in <temporary table> on distinct_key)))
965
908
select a from t1 where a in (select c from t2 where d >= 20);
966
909
a
967
910
2
974
917
1       PRIMARY t1      index   NULL    it1a    4       NULL    7       100.00  Using index
975
918
2       SUBQUERY        t2      ALL     NULL    NULL    NULL    NULL    7       100.00  Using where
976
919
Warnings:
977
 
Note    1003    select "test"."t1"."a" AS "a" from "test"."t1" group by "test"."t1"."a" having <in_optimizer>("test"."t1"."a","test"."t1"."a" in ( <materialize> (select "test"."t2"."c" AS "c" from "test"."t2" where ("test"."t2"."d" >= 20) ), <primary_index_lookup>("test"."t1"."a" in <temporary table> on distinct_key)))
 
920
Note    1003    select `test`.`t1`.`a` AS `a` from `test`.`t1` group by `test`.`t1`.`a` having <in_optimizer>(`test`.`t1`.`a`,`test`.`t1`.`a` in ( <materialize> (select `test`.`t2`.`c` AS `c` from `test`.`t2` where (`test`.`t2`.`d` >= 20) ), <primary_index_lookup>(`test`.`t1`.`a` in <temporary table> on distinct_key)))
978
921
select a from t1 group by a having a in (select c from t2 where d >= 20);
979
922
a
980
923
2
986
929
1       PRIMARY t1      index   NULL    it1a    4       NULL    7       100.00  Using index
987
930
2       SUBQUERY        t2      ALL     NULL    NULL    NULL    NULL    7       100.00  Using where
988
931
Warnings:
989
 
Note    1003    select "test"."t1"."a" AS "a" from "test"."t1" group by "test"."t1"."a" having <in_optimizer>("test"."t1"."a","test"."t1"."a" in ( <materialize> (select "test"."t2"."c" AS "c" from "test"."t2" where ("test"."t2"."d" >= 20) ), <primary_index_lookup>("test"."t1"."a" in <temporary table> on distinct_key)))
 
932
Note    1003    select `test`.`t1`.`a` AS `a` from `test`.`t1` group by `test`.`t1`.`a` having <in_optimizer>(`test`.`t1`.`a`,`test`.`t1`.`a` in ( <materialize> (select `test`.`t2`.`c` AS `c` from `test`.`t2` where (`test`.`t2`.`d` >= 20) ), <primary_index_lookup>(`test`.`t1`.`a` in <temporary table> on distinct_key)))
990
933
select a from t1 group by a having a in (select c from t2 where d >= 20);
991
934
a
992
935
2
1000
943
3       DEPENDENT SUBQUERY      t3      ALL     NULL    NULL    NULL    NULL    4       100.00  Using where
1001
944
Warnings:
1002
945
Note    1276    Field or reference 'test.t1.b' of SELECT #3 was resolved in SELECT #1
1003
 
Note    1003    select "test"."t1"."a" AS "a" from "test"."t1" group by "test"."t1"."a" having <in_optimizer>("test"."t1"."a",<exists>(select 1 AS "Not_used" from "test"."t2" where (<nop>(<in_optimizer>("test"."t2"."d",<exists>(select "test"."t3"."e" AS "e" from "test"."t3" where (max("test"."t1"."b") = "test"."t3"."e") having (<cache>("test"."t2"."d") >= <ref_null_helper>("test"."t3"."e"))))) and (<cache>("test"."t1"."a") = "test"."t2"."c"))))
 
946
Note    1003    select `test`.`t1`.`a` AS `a` from `test`.`t1` group by `test`.`t1`.`a` having <in_optimizer>(`test`.`t1`.`a`,<exists>(select 1 AS `Not_used` from `test`.`t2` where (<nop>(<in_optimizer>(`test`.`t2`.`d`,<exists>(select `test`.`t3`.`e` AS `e` from `test`.`t3` where (max(`test`.`t1`.`b`) = `test`.`t3`.`e`) having (<cache>(`test`.`t2`.`d`) >= <ref_null_helper>(`test`.`t3`.`e`))))) and (<cache>(`test`.`t1`.`a`) = `test`.`t2`.`c`))))
1004
947
select a from t1 group by a
1005
948
having a in (select c from t2 where d >= some(select e from t3 where max(b)=e));
1006
949
a
1015
958
3       DEPENDENT SUBQUERY      t3      ALL     NULL    NULL    NULL    NULL    4       100.00  Using where
1016
959
Warnings:
1017
960
Note    1276    Field or reference 'test.t1.b' of SELECT #3 was resolved in SELECT #1
1018
 
Note    1003    select "test"."t1"."a" AS "a" from "test"."t1" where <in_optimizer>("test"."t1"."a",<exists>(select 1 AS "Not_used" from "test"."t2" where (<nop>(<in_optimizer>("test"."t2"."d",<exists>(select 1 AS "Not_used" from "test"."t3" where (("test"."t1"."b" = "test"."t3"."e") and (<cache>("test"."t2"."d") >= "test"."t3"."e"))))) and (<cache>("test"."t1"."a") = "test"."t2"."c"))))
 
961
Note    1003    select `test`.`t1`.`a` AS `a` from `test`.`t1` where <in_optimizer>(`test`.`t1`.`a`,<exists>(select 1 AS `Not_used` from `test`.`t2` where (<nop>(<in_optimizer>(`test`.`t2`.`d`,<exists>(select 1 AS `Not_used` from `test`.`t3` where ((`test`.`t1`.`b` = `test`.`t3`.`e`) and (<cache>(`test`.`t2`.`d`) >= `test`.`t3`.`e`))))) and (<cache>(`test`.`t1`.`a`) = `test`.`t2`.`c`))))
1019
962
select a from t1
1020
963
where a in (select c from t2 where d >= some(select e from t3 where b=e));
1021
964
a