Merge lp:~linuxjedi/drizzle/optimizer-bugs into lp:drizzle/7.0

Proposed by Andrew Hutchings
Status: Merged
Approved by: Brian Aker
Approved revision: 2133
Merged at revision: 2224
Proposed branch: lp:~linuxjedi/drizzle/optimizer-bugs
Merge into: lp:drizzle/7.0
Diff against target: 139 lines (+119/-0)
3 files modified
drizzled/item/subselect.cc (+1/-0)
tests/suite/regression/r/709500.result (+61/-0)
tests/suite/regression/t/709500.test (+57/-0)
To merge this branch: bzr merge lp:~linuxjedi/drizzle/optimizer-bugs
Reviewer Review Type Date Requested Status
Drizzle Developers Pending
Review via email: mp+52382@code.launchpad.net

Description of the change

To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'drizzled/item/subselect.cc'
2--- drizzled/item/subselect.cc 2011-03-03 08:29:06 +0000
3+++ drizzled/item/subselect.cc 2011-03-07 09:37:26 +0000
4@@ -1208,6 +1208,7 @@
5 select_lex->having= join->having= and_items(join->having, item);
6 if (join->having == item)
7 item->name= (char*)in_having_cond;
8+ select_lex->having->top_level_item();
9 select_lex->having_fix_field= 1;
10 /*
11 we do not check join->having->fixed, because Item_and (from and_items)
12
13=== added file 'tests/suite/regression/r/709500.result'
14--- tests/suite/regression/r/709500.result 1970-01-01 00:00:00 +0000
15+++ tests/suite/regression/r/709500.result 2011-03-07 09:37:26 +0000
16@@ -0,0 +1,61 @@
17+drop table if exists t1,t1s,t2s;
18+create table t1(i int);
19+insert into t1 values (1), (2), (3);
20+create table t1s(i int);
21+insert into t1s values (10), (20), (30);
22+create table t2s(i int);
23+insert into t2s values (100), (200), (300);
24+select straight_join t2s.i
25+from
26+t1s left outer join t2s on t2s.i = t1s.i;
27+i
28+NULL
29+NULL
30+NULL
31+select straight_join t2s.i
32+from
33+t1s left outer join t2s on t2s.i = t1s.i
34+having t2s.i = 999;
35+i
36+select * from t1
37+where t1.i NOT IN
38+(
39+select straight_join t2s.i
40+from
41+t1s left outer join t2s on t2s.i = t1s.i
42+having t2s.i = 100
43+);
44+i
45+1
46+2
47+3
48+select * from t1
49+where t1.i IN
50+(
51+select straight_join t2s.i
52+from
53+t1s left outer join t2s on t2s.i = t1s.i
54+having t2s.i = 100
55+) IS UNKNOWN;
56+i
57+select * from t1
58+where not t1.i = ANY
59+(
60+select straight_join t2s.i
61+from
62+t1s left outer join t2s on t2s.i = t1s.i
63+having t2s.i = 999
64+);
65+i
66+1
67+2
68+3
69+select * from t1
70+where t1.i = ANY (
71+select straight_join t2s.i
72+from
73+t1s left outer join t2s on t2s.i = t1s.i
74+having t2s.i = 999
75+) is unknown;
76+i
77+drop table t1,t1s,t2s;
78
79=== added file 'tests/suite/regression/t/709500.test'
80--- tests/suite/regression/t/709500.test 1970-01-01 00:00:00 +0000
81+++ tests/suite/regression/t/709500.test 2011-03-07 09:37:26 +0000
82@@ -0,0 +1,57 @@
83+--disable_warnings
84+drop table if exists t1,t1s,t2s;
85+--enable_warnings
86+
87+create table t1(i int);
88+insert into t1 values (1), (2), (3);
89+
90+create table t1s(i int);
91+insert into t1s values (10), (20), (30);
92+create table t2s(i int);
93+insert into t2s values (100), (200), (300);
94+
95+select straight_join t2s.i
96+ from
97+ t1s left outer join t2s on t2s.i = t1s.i;
98+
99+select straight_join t2s.i
100+ from
101+ t1s left outer join t2s on t2s.i = t1s.i
102+ having t2s.i = 999;
103+
104+select * from t1
105+where t1.i NOT IN
106+(
107+ select straight_join t2s.i
108+ from
109+ t1s left outer join t2s on t2s.i = t1s.i
110+ having t2s.i = 100
111+);
112+
113+select * from t1
114+where t1.i IN
115+(
116+ select straight_join t2s.i
117+ from
118+ t1s left outer join t2s on t2s.i = t1s.i
119+ having t2s.i = 100
120+) IS UNKNOWN;
121+
122+select * from t1
123+where not t1.i = ANY
124+(
125+ select straight_join t2s.i
126+ from
127+ t1s left outer join t2s on t2s.i = t1s.i
128+ having t2s.i = 999
129+);
130+
131+select * from t1
132+ where t1.i = ANY (
133+ select straight_join t2s.i
134+ from
135+ t1s left outer join t2s on t2s.i = t1s.i
136+ having t2s.i = 999
137+ ) is unknown;
138+
139+drop table t1,t1s,t2s;

Subscribers

People subscribed via source and target branches