~linuxjedi/drizzle/trunk-bug-667053

« back to all changes in this revision

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

  • Committer: brian
  • Date: 2008-06-25 05:29:13 UTC
  • Revision ID: brian@localhost.localdomain-20080625052913-6upwo0jsrl4lnapl
clean slate

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
drop table if exists t0, t1, t2, t10, t11, t12;
 
2
create table t0 (a int);
 
3
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
 
4
create table t1(a int, b int);
 
5
insert into t1 values (0,0),(1,1),(2,2);
 
6
create table t2 as select * from t1;
 
7
create table t11(a int, b int);
 
8
create table t10 (pk int, a int, primary key(pk));
 
9
insert into t10 select a,a from t0;
 
10
create table t12 like t10;
 
11
insert into t12 select * from t10;
 
12
Flattened because of dependency, t10=func(t1)
 
13
explain select * from t1 where a in (select pk from t10);
 
14
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
15
1       PRIMARY t1      ALL     NULL    NULL    NULL    NULL    3       
 
16
1       PRIMARY t10     eq_ref  PRIMARY PRIMARY 4       test.t1.a       1       Using index
 
17
select * from t1 where a in (select pk from t10);
 
18
a       b
 
19
0       0
 
20
1       1
 
21
2       2
 
22
A confluent case of dependency
 
23
explain select * from t1 where a in (select a from t10 where pk=12);
 
24
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
25
1       PRIMARY t1      ALL     NULL    NULL    NULL    NULL    3       
 
26
1       PRIMARY t10     const   PRIMARY PRIMARY 4       const   1       Using where
 
27
select * from t1 where a in (select a from t10 where pk=12);
 
28
a       b
 
29
An empty table inside
 
30
explain select * from t1 where a in (select a from t11);
 
31
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
32
1       PRIMARY NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
 
33
select * from t1 where a in (select a from t11);
 
34
a       b
 
35
explain select * from t1 where a in (select pk from t10) and b in (select pk from t10);
 
36
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
37
1       PRIMARY t1      ALL     NULL    NULL    NULL    NULL    3       
 
38
1       PRIMARY t10     eq_ref  PRIMARY PRIMARY 4       test.t1.a       1       Using index
 
39
1       PRIMARY t10     eq_ref  PRIMARY PRIMARY 4       test.t1.b       1       Using index
 
40
select * from t1 where a in (select pk from t10) and b in (select pk from t10);
 
41
a       b
 
42
0       0
 
43
1       1
 
44
2       2
 
45
flattening a nested subquery
 
46
explain select * from t1 where a in (select pk from t10 where t10.a in (select pk from t12));
 
47
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
48
1       PRIMARY t1      ALL     NULL    NULL    NULL    NULL    3       
 
49
1       PRIMARY t10     eq_ref  PRIMARY PRIMARY 4       test.t1.a       1       
 
50
1       PRIMARY t12     eq_ref  PRIMARY PRIMARY 4       test.t10.a      1       Using index
 
51
select * from t1 where a in (select pk from t10 where t10.a in (select pk from t12));
 
52
a       b
 
53
0       0
 
54
1       1
 
55
2       2
 
56
flattening subquery w/ several tables
 
57
explain extended select * from t1 where a in (select t10.pk from t10, t12 where t12.pk=t10.a);
 
58
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
59
1       PRIMARY t1      ALL     NULL    NULL    NULL    NULL    3       100.00  
 
60
1       PRIMARY t10     eq_ref  PRIMARY PRIMARY 4       test.t1.a       1       100.00  
 
61
1       PRIMARY t12     eq_ref  PRIMARY PRIMARY 4       test.t10.a      1       100.00  Using index
 
62
Warnings:
 
63
Note    1003    select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from (`test`.`t10` join `test`.`t12`) join `test`.`t1` where ((`test`.`t10`.`pk` = `test`.`t1`.`a`) and (`test`.`t12`.`pk` = `test`.`t10`.`a`))
 
64
subqueries within outer joins go into ON expr.
 
65
explAin extended
 
66
select * from t1 left join (t2 A, t2 B) on ( A.A= t1.A And B.A in (select pk from t10));
 
67
id      select_type     tABle   type    possiBle_keys   key     key_len ref     rows    filtered        ExtrA
 
68
1       PRIMARY t1      ALL     NULL    NULL    NULL    NULL    3       100.00  
 
69
1       PRIMARY A       ALL     NULL    NULL    NULL    NULL    3       100.00  
 
70
1       PRIMARY B       ALL     NULL    NULL    NULL    NULL    3       100.00  
 
71
1       PRIMARY t10     eq_ref  PRIMARY PRIMARY 4       test.B.A        1       100.00  Using index
 
72
Warnings:
 
73
Note    1003    select `test`.`t1`.`A` AS `A`,`test`.`t1`.`B` AS `B`,`test`.`A`.`A` AS `A`,`test`.`A`.`B` AS `B`,`test`.`B`.`A` AS `A`,`test`.`B`.`B` AS `B` from `test`.`t1` left join ((`test`.`t10`) join `test`.`t2` `A` join `test`.`t2` `B`) on(((`test`.`A`.`A` = `test`.`t1`.`A`) And 1 And (`test`.`B`.`A` = `test`.`t10`.`pk`))) where 1
 
74
t2 should be wrapped into OJ-nest, so we have "t1 LJ (t2 J t10)"
 
75
explAin extended
 
76
select * from t1 left join t2 on (t2.A= t1.A And t2.A in (select pk from t10));
 
77
id      select_type     tABle   type    possiBle_keys   key     key_len ref     rows    filtered        ExtrA
 
78
1       PRIMARY t1      ALL     NULL    NULL    NULL    NULL    3       100.00  
 
79
1       PRIMARY t2      ALL     NULL    NULL    NULL    NULL    3       100.00  
 
80
1       PRIMARY t10     eq_ref  PRIMARY PRIMARY 4       test.t2.A       1       100.00  Using index
 
81
Warnings:
 
82
Note    1003    select `test`.`t1`.`A` AS `A`,`test`.`t1`.`B` AS `B`,`test`.`t2`.`A` AS `A`,`test`.`t2`.`B` AS `B` from `test`.`t1` left join ((`test`.`t10`) join `test`.`t2`) on(((`test`.`t2`.`A` = `test`.`t1`.`A`) And 1 And (`test`.`t2`.`A` = `test`.`t10`.`pk`))) where 1
 
83
we shouldn't flatten if we're going to get a join of > MAX_TABLES.
 
84
explain select * from 
 
85
t1 s00, t1 s01,  t1 s02, t1 s03, t1 s04,t1 s05,t1 s06,t1 s07,t1 s08,t1 s09,
 
86
t1 s10, t1 s11,  t1 s12, t1 s13, t1 s14,t1 s15,t1 s16,t1 s17,t1 s18,t1 s19,
 
87
t1 s20, t1 s21,  t1 s22, t1 s23, t1 s24,t1 s25,t1 s26,t1 s27,t1 s28,t1 s29,
 
88
t1 s30, t1 s31,  t1 s32, t1 s33, t1 s34,t1 s35,t1 s36,t1 s37,t1 s38,t1 s39,
 
89
t1 s40, t1 s41,  t1 s42, t1 s43, t1 s44,t1 s45,t1 s46,t1 s47,t1 s48,t1 s49
 
90
where
 
91
s00.a in (
 
92
select m00.a from
 
93
t1 m00, t1 m01,  t1 m02, t1 m03, t1 m04,t1 m05,t1 m06,t1 m07,t1 m08,t1 m09,
 
94
t1 m10, t1 m11,  t1 m12, t1 m13, t1 m14,t1 m15,t1 m16,t1 m17,t1 m18,t1 m19
 
95
);
 
96
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
97
1       PRIMARY s00     ALL     NULL    NULL    NULL    NULL    3       Using where
 
98
1       PRIMARY s01     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
99
1       PRIMARY s02     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
100
1       PRIMARY s03     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
101
1       PRIMARY s04     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
102
1       PRIMARY s05     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
103
1       PRIMARY s06     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
104
1       PRIMARY s07     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
105
1       PRIMARY s08     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
106
1       PRIMARY s09     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
107
1       PRIMARY s10     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
108
1       PRIMARY s11     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
109
1       PRIMARY s12     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
110
1       PRIMARY s13     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
111
1       PRIMARY s14     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
112
1       PRIMARY s15     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
113
1       PRIMARY s16     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
114
1       PRIMARY s17     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
115
1       PRIMARY s18     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
116
1       PRIMARY s19     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
117
1       PRIMARY s20     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
118
1       PRIMARY s21     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
119
1       PRIMARY s22     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
120
1       PRIMARY s23     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
121
1       PRIMARY s24     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
122
1       PRIMARY s25     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
123
1       PRIMARY s26     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
124
1       PRIMARY s27     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
125
1       PRIMARY s28     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
126
1       PRIMARY s29     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
127
1       PRIMARY s30     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
128
1       PRIMARY s31     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
129
1       PRIMARY s32     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
130
1       PRIMARY s33     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
131
1       PRIMARY s34     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
132
1       PRIMARY s35     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
133
1       PRIMARY s36     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
134
1       PRIMARY s37     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
135
1       PRIMARY s38     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
136
1       PRIMARY s39     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
137
1       PRIMARY s40     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
138
1       PRIMARY s41     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
139
1       PRIMARY s42     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
140
1       PRIMARY s43     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
141
1       PRIMARY s44     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
142
1       PRIMARY s45     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
143
1       PRIMARY s46     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
144
1       PRIMARY s47     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
145
1       PRIMARY s48     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
146
1       PRIMARY s49     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
147
2       DEPENDENT SUBQUERY      m00     ALL     NULL    NULL    NULL    NULL    3       Using where
 
148
2       DEPENDENT SUBQUERY      m01     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
149
2       DEPENDENT SUBQUERY      m02     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
150
2       DEPENDENT SUBQUERY      m03     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
151
2       DEPENDENT SUBQUERY      m04     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
152
2       DEPENDENT SUBQUERY      m05     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
153
2       DEPENDENT SUBQUERY      m06     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
154
2       DEPENDENT SUBQUERY      m07     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
155
2       DEPENDENT SUBQUERY      m08     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
156
2       DEPENDENT SUBQUERY      m09     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
157
2       DEPENDENT SUBQUERY      m10     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
158
2       DEPENDENT SUBQUERY      m11     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
159
2       DEPENDENT SUBQUERY      m12     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
160
2       DEPENDENT SUBQUERY      m13     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
161
2       DEPENDENT SUBQUERY      m14     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
162
2       DEPENDENT SUBQUERY      m15     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
163
2       DEPENDENT SUBQUERY      m16     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
164
2       DEPENDENT SUBQUERY      m17     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
165
2       DEPENDENT SUBQUERY      m18     ALL     NULL    NULL    NULL    NULL    3       Using join buffer
 
166
2       DEPENDENT SUBQUERY      m19     ALL     NULL    NULL    NULL    NULL    3       Using where; Using join buffer
 
167
select * from
 
168
t1 left join t2 on (t2.a= t1.a and t2.a in (select pk from t10)) 
 
169
where t1.a < 5;
 
170
a       b       a       b
 
171
0       0       0       0
 
172
1       1       1       1
 
173
2       2       2       2
 
174
prepare s1 from
 
175
' select * from
 
176
    t1 left join t2 on (t2.a= t1.a and t2.a in (select pk from t10))
 
177
  where t1.a < 5';
 
178
execute s1;
 
179
a       b       a       b
 
180
0       0       0       0
 
181
1       1       1       1
 
182
2       2       2       2
 
183
execute s1;
 
184
a       b       a       b
 
185
0       0       0       0
 
186
1       1       1       1
 
187
2       2       2       2
 
188
insert into t1 select (A.a + 10 * B.a),1 from t0 A, t0 B;
 
189
explain extended select * from t1 where a in (select pk from t10 where pk<3);
 
190
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
191
1       PRIMARY t1      ALL     NULL    NULL    NULL    NULL    103     100.00  Using where
 
192
1       PRIMARY t10     eq_ref  PRIMARY PRIMARY 4       test.t1.a       1       100.00  Using index
 
193
Warnings:
 
194
Note    1003    select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from (`test`.`t10`) join `test`.`t1` where ((`test`.`t10`.`pk` = `test`.`t1`.`a`) and (`test`.`t1`.`a` < 3))
 
195
drop table t0, t1;
 
196
drop table t10, t11, t12;