Re: Problem with custom aggregates and record pseudo-type

Поиск
Список
Период
Сортировка
От Maxim Boguk
Тема Re: Problem with custom aggregates and record pseudo-type
Дата
Msg-id CAK-MWwQMQtGeBsaC7E-pD8sYjfdUdQexTRdF_t97HC10NFHsMA@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Problem with custom aggregates and record pseudo-type  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-general


On Fri, Dec 2, 2011 at 3:19 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
Maxim Boguk <maxim.boguk@gmail.com> writes:
> I created special custom aggregate function to append arrays defined as:
> CREATE AGGREGATE array_accum (anyarray)
> (
>     sfunc = array_cat,
>     stype = anyarray,
>     initcond = '{}'
> );


> On arrays of common types it work without any problems:
> SELECT array_accum(i) from (values (ARRAY[1,2]), (ARRAY[3,4])) as t(i);
>  array_accum
> -------------
>  {1,2,3,4}
> (1 row)


> However once I try use it with record[] type I get an error:
> SELECT array_accum(i) from (values (ARRAY[row(1,2),row(2,3)]),
> (ARRAY[row(1,2),row(2,3)])) as t(i);
> ERROR:  cannot concatenate incompatible arrays

Hm ... it looks like this case can be made to work with a simple adjustment
to getTypeIOData, but in the meantime you might be able to get away with
leaving the initial value as NULL (ie, leave off the initcond clause).
The only behavioral difference would be that you'd get NULL not an empty
array for zero rows of input.

                       regards, tom lane

Thank you very much for an idea, you suggestiong work excellent as usual.
And again thank you for commiting a fix.

Kind Regards,
Maksym

В списке pgsql-general по дате отправления:

Предыдущее
От: Red Light
Дата:
Сообщение: Re: recursive inner trigger call
Следующее
От: Lonni J Friedman
Дата:
Сообщение: returning rows from an implicit JOIN where results either exist in both tables OR only one table