On Fri, Apr 26, 2013 at 07:49:47PM +0000, Tom Lane wrote:
> Fix collation assignment for aggregates with ORDER BY.
>
> ORDER BY expressions were being treated the same as regular aggregate
> arguments for purposes of collation determination, but really they should
> not affect the aggregate's collation at all; only collations of the
> aggregate's regular arguments should affect it.
>
> In many cases this mistake would lead to incorrectly throwing a "collation
> conflict" error; but in some cases the corrected code will silently assign
> a different collation to the aggregate than before, for example
> agg(foo ORDER BY bar COLLATE "x")
> which will now use foo's collation rather than "x" for the aggregate.
> Given this risk and the lack of field complaints about the issue, it
> doesn't seem prudent to back-patch.
>
> In passing, rearrange code in assign_collations_walker so that we don't
> need multiple copies of the standard logic for computing collation of a
> node with children. (Previously, CaseExpr duplicated the standard logic,
> and we would have needed a third copy for Aggref without this change.)
>
> Andrew Gierth and David Fetter
This needs back-patching to 9.1, where the bug was introduced.
Cheers,
David.
--
David Fetter <david@fetter.org> http://fetter.org/
Phone: +1 415 235 3778 AIM: dfetter666 Yahoo!: dfetter
Skype: davidfetter XMPP: david.fetter@gmail.com
iCal: webcal://www.tripit.com/feed/ical/people/david74/tripit.ics
Remember to vote!
Consider donating to Postgres: http://www.postgresql.org/about/donate