From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Andres Freund <andres(at)2ndquadrant(dot)com> |
Cc: | David Fetter <david(at)fetter(dot)org>, PG Hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Bug Fix: COLLATE with multiple ORDER BYs in aggregates |
Date: | 2013-04-25 22:04:10 |
Message-ID: | 23364.1366927450@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Andres Freund <andres(at)2ndquadrant(dot)com> writes:
> On 2013-04-25 13:42:32 -0400, Tom Lane wrote:
>> The argument for it seems to be that
>> array_agg(a COLLATE "C" ORDER BY b COLLATE "POSIX")
>> should not throw an error, but why not?
> Uh. Why should it? SELECT foo COLLATE "C" FROM ... ORDER BY bar COLLATE
> "POSIX" doesn't throw one either?
After thinking about it a bit more, this case *should* throw an error:
string_agg(a COLLATE "C", b COLLATE "POSIX")
but these should not:
array_agg(a COLLATE "C" ORDER BY b COLLATE "POSIX")
array_agg(a ORDER BY b COLLATE "C", c COLLATE "POSIX")
that is, the ORDER BY expression(s) ought to be considered independently
rather than as part of the agg's argument list.
It looks like the proposed patch gets this right, but the proposed
test cases really fail to illuminate the problem IMO.
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Kevin Grittner | 2013-04-25 23:29:39 | Fixing statistics problem related to vacuum truncation termination |
Previous Message | Shaun Thomas | 2013-04-25 21:06:45 | Re: Allowing parallel pg_restore from pipe |