Thread: BUG #1555: bug in GROUP BY?
The following bug has been logged online: Bug reference: 1555 Logged by: Peter Cottingham Email address: cottingh@rci.rutgers.edu PostgreSQL version: 7.4.7-3.FC3.1 Operating system: Linix Description: bug in GROUP BY? Details: Appears that the GROUP BY clause is not working correctly on new server (GROUP BY should order the result set in ASCENDING order, NOT DESCENDING order.) See below ********************************** select dom_id, count(ste_id) as ste_count from ste group by dom_id ********************************** ERRONEOUS RESULT SET: dom_id ste_count ----------- 5 4 3 12 2 50 1 53
On Mon, Mar 21, 2005 at 07:20:04PM +0000, Peter Cottingham wrote: > > Appears that the GROUP BY clause is not working correctly on new server > (GROUP BY should order the result set in ASCENDING order, NOT DESCENDING > order.) See below > > ********************************** > select dom_id, count(ste_id) as ste_count > from ste > group by dom_id > ********************************** As far as I know, the SQL standards don't specify that GROUP BY is supposed to give a particular order. A query without an ORDER BY clause, or a query with an ORDER BY clause that isn't specific enough, has an order that's implementation-dependent. If you want a particular order then use ORDER BY. Somebody please correct me if I'm mistaken (with a relevant citation from one of the standards). -- Michael Fuhr http://www.fuhr.org/~mfuhr/
Michael Fuhr <mike@fuhr.org> writes: > On Mon, Mar 21, 2005 at 07:20:04PM +0000, Peter Cottingham wrote: >> Appears that the GROUP BY clause is not working correctly on new server >> (GROUP BY should order the result set in ASCENDING order, NOT DESCENDING >> order.) See below > As far as I know, the SQL standards don't specify that GROUP BY is > supposed to give a particular order. > Somebody please correct me if I'm mistaken You're not. Peter is apparently accustomed to databases that only know how to implement GROUP BY with a sort-and-uniq kind of implementation ... that would include Postgres from a few years ago ... but there is no such requirement in the spec. Current PG versions are likely to implement GROUP BY with a hashing method, which will yield a completely unsorted output. It is pure coincidence that it happened to look like descending order in Peter's example. regards, tom lane
On Mon, 21 Mar 2005, Peter Cottingham wrote: > Appears that the GROUP BY clause is not working correctly on new server > (GROUP BY should order the result set in ASCENDING order, NOT DESCENDING > order.) See below I do not believe this is a bug. Result sets have no guaranteed ordering unless you give an ORDER BY.