~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to tests/t/subselect_sj.test

  • Committer: Stewart Smith
  • Date: 2008-11-21 16:06:07 UTC
  • mto: This revision was merged to the branch mainline in revision 593.
  • Revision ID: stewart@flamingspork.com-20081121160607-n6gdlt013spuo54r
remove mysql_frm_type
and fix engines to return correct value from delete_table when table doesn't exist.
(it should be ENOENT).

Also fix up some tests that manipulated frm files by hand. These tests are no longer valid and will need to be rewritten in the not too distant future.

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
 
# TODO: This crashes the server: jaypipes... ?
51
 
#select * from t1 left join (t2 A, t2 B) on ( A.a= t1.a and B.a in (select pk from t10));
52
 
 
53
 
#--replace_result a A b B
54
 
#explain extended
55
 
#select * from t1 left join (t2 A, t2 B) on ( A.a= t1.a and B.a in (select pk from t10));
56
 
 
57
 
# TODO: psergey: check if case conversions like those are ok (it broke on  windows)
58
 
#--echo t2 should be wrapped into OJ-nest, so we have "t1 LJ (t2 J t10)"
59
 
#select * from t1 left join t2 on (t2.a= t1.a and t2.a in (select pk from t10));
60
 
 
61
 
#--replace_result a A b B
62
 
#explain extended
63
 
#select * from t1 left join t2 on (t2.a= t1.a and t2.a in (select pk from t10));
64
 
 
65
 
#--echo we shouldn't flatten if we're going to get a join of > MAX_TABLES.
66
 
#explain select * from 
67
 
#  t1 s00, t1 s01,  t1 s02, t1 s03, t1 s04,t1 s05,t1 s06,t1 s07,t1 s08,t1 s09,
68
 
#  t1 s10, t1 s11,  t1 s12, t1 s13, t1 s14,t1 s15,t1 s16,t1 s17,t1 s18,t1 s19,
69
 
#  t1 s20, t1 s21,  t1 s22, t1 s23, t1 s24,t1 s25,t1 s26,t1 s27,t1 s28,t1 s29,
70
 
#  t1 s30, t1 s31,  t1 s32, t1 s33, t1 s34,t1 s35,t1 s36,t1 s37,t1 s38,t1 s39,
71
 
#  t1 s40, t1 s41,  t1 s42, t1 s43, t1 s44,t1 s45,t1 s46,t1 s47,t1 s48,t1 s49
72
 
#where
73
 
#  s00.a in (
74
 
#  select m00.a from
75
 
#    t1 m00, t1 m01,  t1 m02, t1 m03, t1 m04,t1 m05,t1 m06,t1 m07,t1 m08,t1 m09,
76
 
#    t1 m10, t1 m11,  t1 m12, t1 m13, t1 m14,t1 m15,t1 m16,t1 m17,t1 m18,t1 m19
77
 
#  );
78
 
 
79
 
select * from
80
 
  t1 left join t2 on (t2.a= t1.a and t2.a in (select pk from t10)) 
81
 
where t1.a < 5;
82
 
 
83
 
# Try I2O orders
84
 
insert into t1 select (A.a + 10 * B.a),1 from t0 A, t0 B;
85
 
explain extended select * from t1 where a in (select pk from t10 where pk<3);
86
 
 
87
 
drop table t0, t1;
88
 
drop table t10, t11, t12;
89
 
drop table t2;