From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | pgsql-hackers(at)postgresql(dot)org, pgsql-bugs(at)postgresql(dot)org |
Subject: | Re: [HACKERS] We are not following the spec for HAVING without GROUP BY |
Date: | 2005-03-10 17:44:50 |
Message-ID: | 16153.1110476690@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs pgsql-hackers |
I wrote:
> This is quite clear that the output of a HAVING clause is a "grouped
> table" no matter whether the query uses GROUP BY or aggregates or not.
> What that means is that neither the HAVING clause nor the targetlist
> can use any ungrouped columns except within aggregate calls; that is,
> select col from tab having 2>1
> is in fact illegal per SQL spec, because col isn't a grouping column
> (there are no grouping columns in this query).
Actually, it's even more than that: a query with HAVING and no GROUP BY
should always return 1 row (if the HAVING succeeds) or 0 rows (if not).
If there are no aggregates, the entire from/where clause can be thrown
away, because it can have no impact on the result!
Would those of you with access to other DBMSes try this:
create table tab (col integer);
select 1 from tab having 1=0;
select 1 from tab having 1=1;
insert into tab values(1);
insert into tab values(2);
select 1 from tab having 1=0;
select 1 from tab having 1=1;
I claim that a SQL-conformant database will return 0, 1, 0, and 1 rows
from the 4 selects --- that is, the contents of tab make no difference
at all. (MySQL returns 0, 0, 0, and 2 rows, so they are definitely
copying our mistake...)
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Gill, Jerry T. | 2005-03-10 18:13:31 | Re: [HACKERS] We are not following the spec for HAVING without GROUP BY |
Previous Message | yingqun wang | 2005-03-10 15:42:32 | BUG #1534: 2^32-1 commands limitation in one transcation |
From | Date | Subject | |
---|---|---|---|
Next Message | Ioannis Theoharis | 2005-03-10 18:07:13 | Raw size |
Previous Message | Tom Lane | 2005-03-10 17:14:57 | Re: Too frequent warnings for wraparound failure |