1
by brian
clean slate |
1 |
# test of problems with having (Reported by Mark Rogers) |
2 |
#
|
|
3 |
||
4 |
--disable_warnings
|
|
5 |
drop table if exists t1,t2,t3; |
|
6 |
--enable_warnings
|
|
7 |
||
8 |
create table t1 (a int); |
|
9 |
select count(a) as b from t1 where a=0 having b > 0; |
|
10 |
insert into t1 values (null); |
|
11 |
select count(a) as b from t1 where a=0 having b > 0; |
|
12 |
select count(a) as b from t1 where a=0 having b >=0; |
|
13 |
explain extended select count(a) as b from t1 where a=0 having b >=0; |
|
14 |
drop table t1; |
|
15 |
||
16 |
#
|
|
17 |
# Test of problem with HAVING and AVG() |
|
18 |
#
|
|
19 |
||
20 |
CREATE TABLE t1 ( |
|
520.1.18
by Brian Aker
A bunch more test fixes. |
21 |
raw_id int NOT NULL default '0', |
22 |
chr_start int NOT NULL default '0', |
|
23 |
chr_end int NOT NULL default '0', |
|
24 |
raw_start int NOT NULL default '0', |
|
25 |
raw_end int NOT NULL default '0', |
|
26 |
raw_ori int NOT NULL default '0' |
|
1
by brian
clean slate |
27 |
);
|
28 |
||
29 |
INSERT INTO t1 VALUES (469713,1,164123,1,164123,1),(317330,164124,317193,101,153170,1),(469434,317194,375620,101,58527,1),(591816,375621,484273,1,108653,1),(591807,484274,534671,91,50488,1),(318885,534672,649362,101,114791,1),(318728,649363,775520,102,126259,1),(336829,775521,813997,101,38577,1),(317740,813998,953227,101,139330,1),(1,813998,953227,101,139330,1); |
|
30 |
||
31 |
CREATE TABLE t2 ( |
|
520.1.18
by Brian Aker
A bunch more test fixes. |
32 |
id int NOT NULL default '0', |
33 |
contig_id int NOT NULL default '0', |
|
34 |
seq_start int NOT NULL default '0', |
|
35 |
seq_end int NOT NULL default '0', |
|
36 |
strand int NOT NULL default '0', |
|
1
by brian
clean slate |
37 |
KEY id (id) |
38 |
);
|
|
39 |
INSERT INTO t2 VALUES (133195,469713,61327,61384,1),(133196,469713,64113,64387,1),(133197,1,1,1,0),(133197,1,1,1,-2); |
|
40 |
SELECT e.id, |
|
41 |
MIN( IF(sgp.raw_ori=1, |
|
42 |
(e.seq_start+sgp.chr_start-sgp.raw_start), |
|
43 |
(sgp.chr_start+sgp.raw_end-e.seq_end))) as start, |
|
44 |
MAX( IF(sgp.raw_ori=1, |
|
45 |
(e.seq_end+sgp.chr_start-sgp.raw_start), |
|
46 |
(sgp.chr_start+sgp.raw_end-e.seq_start))) as end, |
|
47 |
AVG(IF (sgp.raw_ori=1,e.strand,(-e.strand))) as chr_strand |
|
48 |
FROM t1 sgp, |
|
49 |
t2 e |
|
50 |
WHERE sgp.raw_id=e.contig_id |
|
51 |
GROUP BY e.id |
|
52 |
HAVING chr_strand= -1 and end >= 0 |
|
53 |
AND start <= 999660; |
|
54 |
drop table t1,t2; |
|
55 |
||
56 |
#
|
|
57 |
# Test problem with having and MAX() IS NOT NULL |
|
58 |
#
|
|
59 |
||
520.1.18
by Brian Aker
A bunch more test fixes. |
60 |
CREATE TABLE t1 (Fld1 int default NULL,Fld2 int default NULL); |
1
by brian
clean slate |
61 |
INSERT INTO t1 VALUES (1,10),(1,20),(2,NULL),(2,NULL),(3,50); |
62 |
select Fld1, max(Fld2) as q from t1 group by Fld1 having q is not null; |
|
63 |
select Fld1, max(Fld2) from t1 group by Fld1 having max(Fld2) is not null; |
|
64 |
select Fld1, max(Fld2) from t1 group by Fld1 having avg(Fld2) is not null; |
|
65 |
select Fld1, max(Fld2) from t1 group by Fld1 having std(Fld2) is not null; |
|
66 |
select Fld1, max(Fld2) from t1 group by Fld1 having variance(Fld2) is not null; |
|
67 |
drop table t1; |
|
68 |
||
69 |
#
|
|
70 |
# Test problem with count(distinct) in having |
|
71 |
#
|
|
72 |
create table t1 (id int not null, qty int not null); |
|
73 |
insert into t1 values (1,2),(1,3),(2,4),(2,5); |
|
74 |
select id, sum(qty) as sqty from t1 group by id having sqty>2; |
|
75 |
select sum(qty) as sqty from t1 group by id having count(id) > 0; |
|
76 |
select sum(qty) as sqty from t1 group by id having count(distinct id) > 0; |
|
77 |
drop table t1; |
|
78 |
||
79 |
#
|
|
80 |
# Test case for Bug #4358 Problem with HAVING clause that uses alias from the |
|
81 |
# select list and TEXT field |
|
82 |
#
|
|
83 |
||
1063.9.3
by Brian Aker
Partial fix for tests for tmp |
84 |
CREATE TEMPORARY TABLE t1 ( |
520.1.18
by Brian Aker
A bunch more test fixes. |
85 |
`id` bigint NOT NULL default '0', |
1
by brian
clean slate |
86 |
`description` text |
87 |
) ENGINE=MyISAM; |
|
88 |
||
1063.9.3
by Brian Aker
Partial fix for tests for tmp |
89 |
CREATE TEMPORARY TABLE t2 ( |
520.1.18
by Brian Aker
A bunch more test fixes. |
90 |
`id` bigint NOT NULL default '0', |
1
by brian
clean slate |
91 |
`description` varchar(20) |
92 |
) ENGINE=MyISAM; |
|
93 |
||
94 |
INSERT INTO t1 VALUES (1, 'test'); |
|
95 |
INSERT INTO t2 VALUES (1, 'test'); |
|
96 |
||
1063.9.3
by Brian Aker
Partial fix for tests for tmp |
97 |
CREATE TEMPORARY TABLE t3 ( |
520.1.18
by Brian Aker
A bunch more test fixes. |
98 |
`id` bigint NOT NULL default '0', |
99 |
`order_id` bigint NOT NULL default '0' |
|
1
by brian
clean slate |
100 |
) ENGINE=MyISAM; |
101 |
||
102 |
select
|
|
103 |
a.id, a.description, |
|
104 |
count(b.id) as c |
|
105 |
from t1 a left join t3 b on a.id=b.order_id |
|
106 |
group by a.id, a.description |
|
107 |
having (a.description is not null) and (c=0); |
|
108 |
||
109 |
select
|
|
110 |
a.*, |
|
111 |
count(b.id) as c |
|
112 |
from t2 a left join t3 b on a.id=b.order_id |
|
113 |
group by a.id, a.description |
|
114 |
having (a.description is not null) and (c=0); |
|
115 |
||
116 |
INSERT INTO t1 VALUES (2, 'test2'); |
|
117 |
||
118 |
select
|
|
119 |
a.id, a.description, |
|
120 |
count(b.id) as c |
|
121 |
from t1 a left join t3 b on a.id=b.order_id |
|
122 |
group by a.id, a.description |
|
123 |
having (a.description is not null) and (c=0); |
|
124 |
drop table t1,t2,t3; |
|
125 |
||
126 |
#
|
|
127 |
# Bug #14274: HAVING clause containing only set function |
|
128 |
#
|
|
129 |
||
130 |
CREATE TABLE t1 (a int); |
|
131 |
INSERT INTO t1 VALUES (3), (4), (1), (3), (1); |
|
132 |
||
133 |
SELECT SUM(a) FROM t1 GROUP BY a HAVING SUM(a)>0; |
|
134 |
SELECT SUM(a) FROM t1 GROUP BY a HAVING SUM(a); |
|
135 |
||
136 |
DROP TABLE t1; |
|
137 |
||
138 |
#
|
|
139 |
# Bug #14927: HAVING clause containing constant false conjunct |
|
140 |
#
|
|
141 |
||
142 |
CREATE TABLE t1 (a int); |
|
143 |
INSERT INTO t1 VALUES (1), (2), (1), (3), (2), (1); |
|
144 |
||
145 |
SELECT a FROM t1 GROUP BY a HAVING a > 1; |
|
146 |
SELECT a FROM t1 GROUP BY a HAVING 1 != 1 AND a > 1; |
|
147 |
SELECT 0 AS x, a FROM t1 GROUP BY x,a HAVING x=1 AND a > 1; |
|
148 |
||
149 |
EXPLAIN SELECT a FROM t1 GROUP BY a HAVING 1 != 1 AND a > 1; |
|
150 |
EXPLAIN SELECT 0 AS x, a FROM t1 GROUP BY x,a HAVING x=1 AND a > 1; |
|
151 |
||
152 |
DROP table t1; |
|
153 |
||
154 |
#
|
|
155 |
# Bug #29911: HAVING clause depending on constant table and evaluated to false |
|
156 |
#
|
|
157 |
||
158 |
CREATE TABLE t1 (a int PRIMARY KEY); |
|
159 |
CREATE TABLE t2 (b int PRIMARY KEY, a int); |
|
160 |
CREATE TABLE t3 (b int, flag int); |
|
161 |
||
162 |
INSERT INTO t1 VALUES (1); |
|
163 |
INSERT INTO t2 VALUES (1,1), (2,1), (3,1); |
|
164 |
INSERT INTO t3(b,flag) VALUES (2, 1); |
|
165 |
||
166 |
SELECT t1.a |
|
167 |
FROM t1 INNER JOIN t2 ON t1.a=t2.a LEFT JOIN t3 ON t2.b=t3.b |
|
168 |
GROUP BY t1.a, t2.b HAVING MAX(t3.flag)=0; |
|
169 |
||
170 |
SELECT DISTINCT t1.a, MAX(t3.flag) |
|
171 |
FROM t1 INNER JOIN t2 ON t1.a=t2.a LEFT JOIN t3 ON t2.b=t3.b |
|
172 |
GROUP BY t1.a, t2.b HAVING MAX(t3.flag)=0; |
|
173 |
||
174 |
SELECT DISTINCT t1.a |
|
175 |
FROM t1 INNER JOIN t2 ON t1.a=t2.a LEFT JOIN t3 ON t2.b=t3.b |
|
176 |
GROUP BY t1.a, t2.b HAVING MAX(t3.flag)=0; |
|
177 |
||
178 |
DROP TABLE t1,t2,t3; |
|
179 |
||
180 |
# End of 4.1 tests |
|
181 |
||
182 |
#
|
|
183 |
# Tests for WL#1972 CORRECT EVALUATION OF COLUMN REFERENCES IN THE HAVING CLAUSE |
|
184 |
# Per the SAP VERI tests and WL#1972, MySQL must ensure that HAVING can |
|
185 |
# correctly evaluate column references from the GROUP BY clause, even if the |
|
186 |
# same references are not also found in the select list. |
|
187 |
#
|
|
188 |
||
189 |
# set global sql_mode='ansi'; |
|
190 |
# set session sql_mode='ansi'; |
|
191 |
||
192 |
create table t1 (col1 int, col2 varchar(5), col_t1 int); |
|
193 |
create table t2 (col1 int, col2 varchar(5), col_t2 int); |
|
194 |
create table t3 (col1 int, col2 varchar(5), col_t3 int); |
|
195 |
||
196 |
insert into t1 values(10,'hello',10); |
|
197 |
insert into t1 values(20,'hello',20); |
|
198 |
insert into t1 values(30,'hello',30); |
|
199 |
insert into t1 values(10,'bye',10); |
|
200 |
insert into t1 values(10,'sam',10); |
|
201 |
insert into t1 values(10,'bob',10); |
|
202 |
||
203 |
insert into t2 select * from t1; |
|
204 |
insert into t3 select * from t1; |
|
205 |
||
206 |
select count(*) from t1 group by col1 having col1 = 10; |
|
207 |
select count(*) as count_col1 from t1 group by col1 having col1 = 10; |
|
208 |
select count(*) as count_col1 from t1 as tmp1 group by col1 having col1 = 10; |
|
209 |
select count(*) from t1 group by col2 having col2 = 'hello'; |
|
1731.3.1
by Lee Bieber
change tests to use enum values instead of error numbers |
210 |
--error ER_BAD_FIELD_ERROR
|
1
by brian
clean slate |
211 |
select count(*) from t1 group by col2 having col1 = 10; |
212 |
select col1 as count_col1 from t1 as tmp1 group by col1 having col1 = 10; |
|
213 |
select col1 as count_col1 from t1 as tmp1 group by col1 having count_col1 = 10; |
|
214 |
select col1 as count_col1 from t1 as tmp1 group by count_col1 having col1 = 10; |
|
215 |
# ANSI: should return SQLSTATE 42000 Syntax error or access violation |
|
216 |
# MySQL: returns 10 - because of GROUP BY name resolution |
|
217 |
select col1 as count_col1 from t1 as tmp1 group by count_col1 having count_col1 = 10; |
|
218 |
# ANSI: should return SQLSTATE 42000 Syntax error or access violation |
|
219 |
# MySQL: returns 10 - because of GROUP BY name resolution |
|
220 |
select col1 as count_col1,col2 from t1 as tmp1 group by col1,col2 having col1 = 10; |
|
221 |
select col1 as count_col1,col2 from t1 as tmp1 group by col1,col2 having count_col1 = 10; |
|
222 |
select col1 as count_col1,col2 from t1 as tmp1 group by col1,col2 having col2 = 'hello'; |
|
223 |
select col1 as count_col1,col2 as group_col2 from t1 as tmp1 group by col1,col2 having group_col2 = 'hello'; |
|
1731.3.1
by Lee Bieber
change tests to use enum values instead of error numbers |
224 |
--error ER_PARSE_ERROR
|
1
by brian
clean slate |
225 |
select sum(col1) as co12 from t1 group by col2 having col2 10; |
226 |
select sum(col1) as co2, count(col2) as cc from t1 group by col1 having col1 =10; |
|
1731.3.1
by Lee Bieber
change tests to use enum values instead of error numbers |
227 |
--error ER_BAD_FIELD_ERROR
|
1
by brian
clean slate |
228 |
select t2.col2 from t2 group by t2.col1, t2.col2 having t1.col1 <= 10; |
229 |
||
230 |
||
231 |
#
|
|
232 |
# queries with nested sub-queries |
|
233 |
#
|
|
234 |
||
235 |
# the having column is resolved in the same query |
|
236 |
select t1.col1 from t1 |
|
237 |
where t1.col2 in |
|
238 |
(select t2.col2 from t2 |
|
239 |
group by t2.col1, t2.col2 having t2.col1 <= 10); |
|
240 |
||
241 |
select t1.col1 from t1 |
|
242 |
where t1.col2 in |
|
243 |
(select t2.col2 from t2 |
|
244 |
group by t2.col1, t2.col2 |
|
245 |
having t2.col1 <= |
|
246 |
(select min(t3.col1) from t3)); |
|
247 |
||
248 |
# the having column is resolved in the SELECT clause of the outer query - |
|
249 |
# works in ANSI |
|
250 |
select t1.col1 from t1 |
|
251 |
where t1.col2 in |
|
252 |
(select t2.col2 from t2 |
|
253 |
group by t2.col1, t2.col2 having t1.col1 <= 10); |
|
254 |
||
255 |
# the having column is resolved in the SELECT clause of the outer query - |
|
256 |
# error in ANSI, works with MySQL extension |
|
257 |
select t1.col1 as tmp_col from t1 |
|
258 |
where t1.col2 in |
|
259 |
(select t2.col2 from t2 |
|
260 |
group by t2.col1, t2.col2 having tmp_col <= 10); |
|
261 |
||
262 |
# the having column is resolved in the FROM clause of the outer query - |
|
263 |
# works in ANSI |
|
264 |
select t1.col1 from t1 |
|
265 |
where t1.col2 in |
|
266 |
(select t2.col2 from t2 |
|
267 |
group by t2.col1, t2.col2 having col_t1 <= 10); |
|
268 |
||
269 |
# Item_field must be resolved in the same way as Item_ref |
|
270 |
select sum(col1) from t1 |
|
271 |
group by col_t1 |
|
272 |
having (select col_t1 from t2 where col_t1 = col_t2 order by col_t2 limit 1); |
|
273 |
||
274 |
# nested queries with HAVING, inner having column resolved in outer FROM clause |
|
275 |
# the outer having column is not referenced in GROUP BY which results in an error |
|
1731.3.1
by Lee Bieber
change tests to use enum values instead of error numbers |
276 |
--error ER_BAD_FIELD_ERROR
|
1
by brian
clean slate |
277 |
select t1.col1 from t1 |
278 |
where t1.col2 in |
|
279 |
(select t2.col2 from t2 |
|
280 |
group by t2.col1, t2.col2 having col_t1 <= 10) |
|
281 |
having col_t1 <= 20; |
|
282 |
||
283 |
# both having columns are resolved in the GROUP clause of the outer query |
|
284 |
select t1.col1 from t1 |
|
285 |
where t1.col2 in |
|
286 |
(select t2.col2 from t2 |
|
287 |
group by t2.col1, t2.col2 having col_t1 <= 10) |
|
288 |
group by col_t1 |
|
289 |
having col_t1 <= 20; |
|
290 |
||
291 |
#
|
|
292 |
# nested HAVING clauses |
|
293 |
#
|
|
294 |
||
295 |
# non-correlated subqueries |
|
296 |
select col_t1, sum(col1) from t1 |
|
297 |
group by col_t1 |
|
298 |
having col_t1 > 10 and |
|
299 |
exists (select sum(t2.col1) from t2 |
|
300 |
group by t2.col2 having t2.col2 > 'b'); |
|
301 |
||
302 |
# correlated subqueries - inner having column 't1.col2' resolves to |
|
303 |
# the outer FROM clause, which cannot be used because the outer query |
|
304 |
# is grouped |
|
1731.3.1
by Lee Bieber
change tests to use enum values instead of error numbers |
305 |
--error ER_BAD_FIELD_ERROR
|
1
by brian
clean slate |
306 |
select sum(col1) from t1 |
307 |
group by col_t1 |
|
308 |
having col_t1 in (select sum(t2.col1) from t2 |
|
309 |
group by t2.col2, t2.col1 having t2.col1 = t1.col1); |
|
310 |
||
311 |
# correlated subqueries - inner having column 'col_t1' resolves to |
|
312 |
# the outer GROUP clause |
|
313 |
select sum(col1) from t1 |
|
314 |
group by col_t1 |
|
315 |
having col_t1 in (select sum(t2.col1) from t2 |
|
316 |
group by t2.col2, t2.col1 having t2.col1 = col_t1); |
|
317 |
||
318 |
#
|
|
319 |
# queries with joins and ambiguous column names |
|
320 |
#
|
|
1731.3.1
by Lee Bieber
change tests to use enum values instead of error numbers |
321 |
--error ER_NON_UNIQ_ERROR
|
1
by brian
clean slate |
322 |
select t1.col1, t2.col1 from t1, t2 where t1.col1 = t2.col1 |
323 |
group by t1.col1, t2.col1 having col1 = 2; |
|
324 |
||
1731.3.1
by Lee Bieber
change tests to use enum values instead of error numbers |
325 |
--error ER_NON_UNIQ_ERROR
|
1
by brian
clean slate |
326 |
select t1.col1*10+t2.col1 from t1,t2 where t1.col1=t2.col1 |
327 |
group by t1.col1, t2.col1 having col1 = 2; |
|
328 |
||
329 |
drop table t1, t2, t3; |
|
330 |
||
331 |
# More queries to test ANSI compatibility |
|
332 |
create table t1 (s1 int); |
|
333 |
insert into t1 values (1),(2),(3); |
|
334 |
||
335 |
select count(*) from t1 group by s1 having s1 is null; |
|
336 |
||
337 |
# prepared statements prints warnings too early |
|
338 |
--disable_ps_protocol
|
|
339 |
select s1*0 as s1 from t1 group by s1 having s1 <> 0; |
|
340 |
--enable_ps_protocol
|
|
341 |
||
342 |
# ANSI requires: 3 rows |
|
343 |
# MySQL returns: 0 rows - because of GROUP BY name resolution |
|
344 |
||
345 |
select s1*0 from t1 group by s1 having s1 = 0; |
|
346 |
||
347 |
select s1 from t1 group by 1 having 1 = 0; |
|
348 |
||
349 |
select count(s1) from t1 group by s1 having count(1+1)=2; |
|
350 |
# ANSI requires: 3 rows |
|
351 |
# MySQL returns: 0 rows - because of GROUP BY name resolution |
|
352 |
||
353 |
select count(s1) from t1 group by s1 having s1*0=0; |
|
354 |
||
2114.2.1
by Brian Aker
Next pass through of tests (remove number, use label for error). |
355 |
--error ER_NON_UNIQ_ERROR
|
1
by brian
clean slate |
356 |
select * from t1 a, t1 b group by a.s1 having s1 is null; |
357 |
# ANSI requires: 0 rows |
|
358 |
# MySQL returns: |
|
359 |
# "ERROR 1052 (23000): Column 's1' in having clause is ambiguous" |
|
360 |
# I think the column is ambiguous in ANSI too. |
|
361 |
# It is the same as: |
|
362 |
# select a.s1, b.s1 from t1 a, t1 b group by a.s1 having s1 is null; |
|
363 |
# currently we first check SELECT, thus s1 is ambiguous. |
|
364 |
||
365 |
drop table t1; |
|
366 |
||
520.1.18
by Brian Aker
A bunch more test fixes. |
367 |
create table t1 (s1 char); |
1
by brian
clean slate |
368 |
insert into t1 values ('b'),('y'); |
369 |
||
520.1.18
by Brian Aker
A bunch more test fixes. |
370 |
select s1,count(s1) from t1 group by s1 having s1 = 'y'; |
1
by brian
clean slate |
371 |
# ANSI requires: 1 row, with count(s1) = 2 |
372 |
# MySQL returns: 1 row, with count(s1) = 1 |
|
373 |
||
374 |
drop table t1; |
|
375 |
||
376 |
||
377 |
#
|
|
378 |
# Bug #15917: unexpected complain for a name in having clause |
|
379 |
# when the server is run on Windows or with --lower-case-table-names=1 |
|
380 |
#
|
|
381 |
||
382 |
--disable_warnings
|
|
383 |
DROP SCHEMA IF EXISTS HU; |
|
384 |
--enable_warnings
|
|
385 |
CREATE SCHEMA HU ; |
|
386 |
USE HU ; |
|
387 |
||
388 |
CREATE TABLE STAFF |
|
389 |
(EMPNUM CHAR(3) NOT NULL UNIQUE, |
|
390 |
EMPNAME CHAR(20), |
|
391 |
GRADE DECIMAL(4), |
|
392 |
CITY CHAR(15)); |
|
393 |
||
394 |
CREATE TABLE PROJ |
|
395 |
(PNUM CHAR(3) NOT NULL UNIQUE, |
|
396 |
PNAME CHAR(20), |
|
397 |
PTYPE CHAR(6), |
|
398 |
BUDGET DECIMAL(9), |
|
399 |
CITY CHAR(15)); |
|
400 |
||
401 |
INSERT INTO STAFF VALUES ('E1','Alice',12,'Deale'); |
|
402 |
INSERT INTO STAFF VALUES ('E2','Betty',10,'Vienna'); |
|
403 |
INSERT INTO STAFF VALUES ('E3','Carmen',13,'Vienna'); |
|
404 |
INSERT INTO STAFF VALUES ('E4','Don',12,'Deale'); |
|
405 |
INSERT INTO STAFF VALUES ('E5','Ed',13,'Akron'); |
|
406 |
||
407 |
INSERT INTO PROJ VALUES ('P1','MXSS','Design',10000,'Deale'); |
|
408 |
INSERT INTO PROJ VALUES ('P2','CALM','Code',30000,'Vienna'); |
|
409 |
INSERT INTO PROJ VALUES ('P3','SDP','Test',30000,'Tampa'); |
|
410 |
INSERT INTO PROJ VALUES ('P4','SDP','Design',20000,'Deale'); |
|
411 |
INSERT INTO PROJ VALUES ('P5','IRM','Test',10000,'Vienna'); |
|
412 |
INSERT INTO PROJ VALUES ('P6','PAYR','Design',50000,'Deale'); |
|
413 |
||
414 |
SELECT EMPNUM, GRADE*1000 |
|
415 |
FROM HU.STAFF WHERE GRADE * 1000 > |
|
416 |
ANY (SELECT SUM(BUDGET) FROM HU.PROJ |
|
417 |
GROUP BY CITY, PTYPE |
|
418 |
HAVING HU.PROJ.CITY = HU.STAFF.CITY); |
|
419 |
||
420 |
DROP SCHEMA HU; |
|
421 |
USE test; |
|
422 |
#
|
|
423 |
# Bug#18739: non-standard HAVING extension was allowed in strict ANSI sql mode. |
|
424 |
#
|
|
425 |
create table t1(f1 int); |
|
426 |
select f1 from t1 having max(f1)=f1; |
|
427 |
select f1 from t1 group by f1 having max(f1)=f1; |
|
428 |
select f1 from t1 having max(f1)=f1; |
|
429 |
select f1 from t1 group by f1 having max(f1)=f1; |
|
430 |
drop table t1; |