~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to mysql-test/t/subselect_sj.test

  • 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
#
 
2
# Nested Loops semi-join subquery evaluation tests
 
3
#
 
4
--disable_warnings
 
5
drop table if exists t0, t1, t2, t10, t11, t12;
 
6
--enable_warnings
 
7
 
 
8
#
 
9
# 1. Subqueries that are converted into semi-joins
 
10
#
 
11
create table t0 (a int);
 
12
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
 
13
 
 
14
create table t1(a int, b int);
 
15
insert into t1 values (0,0),(1,1),(2,2);
 
16
create table t2 as select * from t1;
 
17
 
 
18
create table t11(a int, b int);
 
19
 
 
20
create table t10 (pk int, a int, primary key(pk));
 
21
insert into t10 select a,a from t0;
 
22
create table t12 like t10;
 
23
insert into t12 select * from t10;
 
24
 
 
25
 
 
26
--echo Flattened because of dependency, t10=func(t1)
 
27
explain select * from t1 where a in (select pk from t10);
 
28
select * from t1 where a in (select pk from t10);
 
29
 
 
30
--echo A confluent case of dependency
 
31
explain select * from t1 where a in (select a from t10 where pk=12);
 
32
select * from t1 where a in (select a from t10 where pk=12);
 
33
 
 
34
--echo An empty table inside
 
35
explain select * from t1 where a in (select a from t11);
 
36
select * from t1 where a in (select a from t11);
 
37
 
 
38
explain select * from t1 where a in (select pk from t10) and b in (select pk from t10);
 
39
select * from t1 where a in (select pk from t10) and b in (select pk from t10);
 
40
 
 
41
--echo flattening a nested subquery
 
42
explain select * from t1 where a in (select pk from t10 where t10.a in (select pk from t12));
 
43
select * from t1 where a in (select pk from t10 where t10.a in (select pk from t12));
 
44
 
 
45
--echo flattening subquery w/ several tables
 
46
explain extended select * from t1 where a in (select t10.pk from t10, t12 where t12.pk=t10.a);
 
47
 
 
48
--echo subqueries within outer joins go into ON expr.
 
49
# TODO: psergey: check if case conversions like those are ok (it broke on  windows)
 
50
--replace_result a A b B
 
51
explain extended
 
52
select * from t1 left join (t2 A, t2 B) on ( A.a= t1.a and B.a in (select pk from t10));
 
53
 
 
54
# TODO: psergey: check if case conversions like those are ok (it broke on  windows)
 
55
--echo t2 should be wrapped into OJ-nest, so we have "t1 LJ (t2 J t10)"
 
56
--replace_result a A b B
 
57
explain extended
 
58
select * from t1 left join t2 on (t2.a= t1.a and t2.a in (select pk from t10));
 
59
 
 
60
--echo we shouldn't flatten if we're going to get a join of > MAX_TABLES.
 
61
explain select * from 
 
62
  t1 s00, t1 s01,  t1 s02, t1 s03, t1 s04,t1 s05,t1 s06,t1 s07,t1 s08,t1 s09,
 
63
  t1 s10, t1 s11,  t1 s12, t1 s13, t1 s14,t1 s15,t1 s16,t1 s17,t1 s18,t1 s19,
 
64
  t1 s20, t1 s21,  t1 s22, t1 s23, t1 s24,t1 s25,t1 s26,t1 s27,t1 s28,t1 s29,
 
65
  t1 s30, t1 s31,  t1 s32, t1 s33, t1 s34,t1 s35,t1 s36,t1 s37,t1 s38,t1 s39,
 
66
  t1 s40, t1 s41,  t1 s42, t1 s43, t1 s44,t1 s45,t1 s46,t1 s47,t1 s48,t1 s49
 
67
where
 
68
  s00.a in (
 
69
  select m00.a from
 
70
    t1 m00, t1 m01,  t1 m02, t1 m03, t1 m04,t1 m05,t1 m06,t1 m07,t1 m08,t1 m09,
 
71
    t1 m10, t1 m11,  t1 m12, t1 m13, t1 m14,t1 m15,t1 m16,t1 m17,t1 m18,t1 m19
 
72
  );
 
73
 
 
74
select * from
 
75
  t1 left join t2 on (t2.a= t1.a and t2.a in (select pk from t10)) 
 
76
where t1.a < 5;
 
77
 
 
78
 
79
# Prepared statements
 
80
#
 
81
prepare s1 from
 
82
  ' select * from
 
83
    t1 left join t2 on (t2.a= t1.a and t2.a in (select pk from t10))
 
84
  where t1.a < 5';
 
85
execute s1;
 
86
execute s1;
 
87
 
 
88
# Try I2O orders
 
89
insert into t1 select (A.a + 10 * B.a),1 from t0 A, t0 B;
 
90
explain extended select * from t1 where a in (select pk from t10 where pk<3);
 
91
 
 
92
drop table t0, t1;
 
93
drop table t10, t11, t12;