| From: | Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com> | 
|---|---|
| To: | Thom Brown <thom(at)linux(dot)com> | 
| Cc: | Robert Haas <robertmhaas(at)gmail(dot)com>, pgsql-bugs <pgsql-bugs(at)postgresql(dot)org> | 
| Subject: | Re: string_agg delimiter having no effect with order by | 
| Date: | 2010-08-04 14:37:10 | 
| Message-ID: | AANLkTi=9wEdNmVp4dO7UE_EnZApYgYtWVJrj-Pm=9u4-@mail.gmail.com | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-bugs pgsql-hackers | 
2010/8/4 Thom Brown <thom(at)linux(dot)com>:
> On 4 August 2010 14:24, Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com> wrote:
>> 2010/8/4 Thom Brown <thom(at)linux(dot)com>:
>>> On 4 August 2010 14:04, Robert Haas <robertmhaas(at)gmail(dot)com> wrote:
>>>> On Wed, Aug 4, 2010 at 6:03 AM, Thom Brown <thom(at)linux(dot)com> wrote:
>>>>> Actually, this rings a bell.  I think this may have been raised
>>>>> before, something to do with the delimiter being accepted as one of
>>>>> the order by values.  If this isn't really a bug, could someone
>>>>> mention it in the docs somewhere?
>>>>
>>>> Oh, yeah.  I 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.  Perhaps 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.
>>
>> this goes from ANSI SQL standard :( - I agree, this isn't intuitive
>> and pg can do better diagnostic now. But it has a sense. ORDER BY
>> hasn't sense for one parameter - only for complete function, so is
>> wrong to write ORDER BY over a some interesting parameter
>>
>> Regards
>>
>> Pavel Stehule
>>
>
> So really, should the documentation be changed from:
>
> string_agg(expression [, delimiter ] )
>
> to
>
> string_agg(expression [, delimiter ] [ GROUP BY expression [, ...] ] )
This syntax is available for all aggregate functions - this feature
isn't specific for string_agg
but there can be more descriptive example.
Regards
Pavel
>
> ?
>
> --
> Thom Brown
> Registered Linux user: #516935
>
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Shine | 2010-08-04 14:53:02 | BUG #5598: Compatibility modes | 
| Previous Message | Thom Brown | 2010-08-04 14:31:09 | Re: string_agg delimiter having no effect with order by | 
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Itagaki Takahiro | 2010-08-04 14:57:27 | Re: Where in the world is Itagaki Takahiro? | 
| Previous Message | Simon Riggs | 2010-08-04 14:36:44 | Re: merge command - GSoC progress |