Re: Function array_agg(array)

From: Ali Akbar <the(dot)apaan(at)gmail(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Function array_agg(array)
Date: 2014-10-12 12:37:13
Message-ID: CACQjQLqX2v895YVMYABCXgVP4QLenXgqiRgx9v_5oz7t79G-0w@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

2014-10-11 22:28 GMT+07:00 Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>:

> Seems dangerous as heck; certainly it would have side-effects far more
> wide-ranging than just making this particular function work.
>
> A safer answer is to split array_agg into two functions,
> array_agg(anynonarray) -> anyarray
> array_agg(anyarray) -> anyarray
>
> I rather imagine you should do that anyway, because I really doubt
> that this hack is operating quite as intended. I suspect you are
> producing arrays containing arrays as elements, not true 2-D arrays.
> That's not a direction we want to go in I think; certainly there are
> no other operations that produce such things.
>

Thanks for the review. Yes, it looks like the patch produced array as the
elements. So, all array operations behaves wierdly.

In this quick & dirty patch, I am trying to implement the
array_agg(anyarray), introducing two new functions:
- array_agg_anyarray_transfn
- array_agg_anyarray_finalfn

At first, i want to use accumArrayResult and makeMdArrayResult, but it's
complicated to work with multi-dimensional arrays with those two functions.
So i combined array_cat with those function.

Currently, it cannot handle NULL arrays:
backend> select array_agg(a) from (values(null::int[])) a(a);
1: array_agg (typeid = 1007, len = -1, typmod = -1, byval = f)
----
ERROR: cannot aggregate null arrays

Regards,
--
Ali Akbar

Attachment Content-Type Size
array_agg_anyarray-2.patch text/x-diff 12.5 KB

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Marko Tiikkaja 2014-10-12 12:40:35 Re: UPSERT wiki page, and SQL MERGE syntax
Previous Message Matthew Woodcraft 2014-10-12 12:36:51 Re: UPSERT wiki page, and SQL MERGE syntax