On Fri, Dec 2, 2011 at 3:19 AM, Tom Lane <t...@sss.pgh.pa.us> wrote: > Maxim Boguk <maxim.bo...@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