Re: string_agg delimiter having no effect with order by - Mailing list pgsql-bugs

From Thom Brown
Subject Re: string_agg delimiter having no effect with order by
Date
Msg-id AANLkTikLO_=4Xb2dTkOw3p+U_HDFx1QS3AhQVBEs_ZHw@mail.gmail.com
Whole thread Raw
In response to Re: string_agg delimiter having no effect with order by  (Robert Haas <robertmhaas@gmail.com>)
Responses Re: string_agg delimiter having no effect with order by  (Pavel Stehule <pavel.stehule@gmail.com>)
List pgsql-bugs
On 4 August 2010 14:04, Robert Haas <robertmhaas@gmail.com> wrote:
> On Wed, Aug 4, 2010 at 6:03 AM, Thom Brown <thom@linux.com> wrote:
>> Actually, this rings a bell. =A0I think this may have been raised
>> before, something to do with the delimiter being accepted as one of
>> the order by values. =A0If this isn't really a bug, could someone
>> mention it in the docs somewhere?
>
> Oh, yeah. =A0I guess you need this:
>
> select thing, string_agg(stuff, ',' order by stuff) from agg_test
> group by thing;
>
> Rather than this:
>
> select thing, string_agg(stuff order by stuff, ',') from agg_test
> group by thing;
>
> It's all kinds of not obvious to me what the second one is supposed to
> mean, but I remember this was discussed before. =A0Perhaps we need a
> <note> somewhere about multi-argument aggregates.
>

Yes, that works with the order clause.  That's really weird!  It looks
like part of the delimiter parameter, and that's undocumented, or at
least impossible to gleen from the documentation.

This should be clarified as it looks like having ORDER BY *or* a
delimiter is supported, but not both.  It's horribly unintuitive!
This is one of the very few cases where MySQL's version actually makes
more sense.

Thom

pgsql-bugs by date:

Previous
From: Fujii Masao
Date:
Subject: In 8.2, shutdown wrongly caused automatic restart
Next
From: Pavel Stehule
Date:
Subject: Re: string_agg delimiter having no effect with order by