From: | Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com> |
---|---|
To: | "David E(dot) Wheeler" <david(at)kineticode(dot)com> |
Cc: | Takahiro Itagaki <itagaki(dot)takahiro(at)oss(dot)ntt(dot)co(dot)jp>, "pgsql-hackers(at)postgresql(dot)org Hackers" <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Review: listagg aggregate |
Date: | 2010-01-28 08:38:10 |
Message-ID: | 162867791001280038y4361e0b6qb35196904749bc85@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
2010/1/28 David E. Wheeler <david(at)kineticode(dot)com>:
> On Jan 27, 2010, at 6:47 PM, Takahiro Itagaki wrote:
>
>> * I think we cannot cache the delimiter at the first call.
>> For example,
>> SELECT string_agg(elem, delim)
>> FROM (VALUES('A', ','), ('B', '+'), ('C', '*')) t(elem, delim);
>> should return 'A+B*C' rather than 'A,B,C'.
>
> Ooh, nice.
>
>> * Can we use StringInfo directly as the aggregate context instead of
>> StringAggState? For the first reason, we need to drop 'delimiter' field
>> from struct StringAggState. Now it has only StringInfo field.
>
> Makes sense.
no, has not.
Pavel
>
>> * We'd better avoiding to call text_to_cstring() for delimitors and elements
>> for performance reason. We can use appendBinaryStringInfo() here.
>>
>> My proposal patch attached.
>>
>> Also, I've not changed it yet, but it might be considerable:
>>
>> * Do we need better names for string_agg1_transfn and string_agg2_transfn?
>> They are almost "internal names", but we could have more
>> like string_agg_with_sep_transfn.
>
> Yes please.
>
>> Comments?
>
> Patch looks great, thank you!
>
> David
>
>
>
From | Date | Subject | |
---|---|---|---|
Next Message | Pavel Stehule | 2010-01-28 08:40:01 | Re: Review: listagg aggregate |
Previous Message | Pavel Stehule | 2010-01-28 08:37:46 | Re: Review: listagg aggregate |