Re: Function array_agg(array) - Mailing list pgsql-hackers
From | Pavel Stehule |
---|---|
Subject | Re: Function array_agg(array) |
Date | |
Msg-id | CAFj8pRAo4d9UBxSirR14yQdaOmV4issy2WDZvZiqNucD_zpzcQ@mail.gmail.com Whole thread Raw |
In response to | Re: Function array_agg(array) (Pavel Stehule <pavel.stehule@gmail.com>) |
Responses |
Re: Function array_agg(array)
|
List | pgsql-hackers |
Hi Ali
I checked a code. I am thinking so code organization is not good. accumArrayResult is too long now. makeMdArrayResult will not work, when arrays was joined (it is not consistent now). I don't like a usage of state->is_array_accum in array_userfunc.c -- it is signal of wrong wrapping. next question: there is function array_append(anyarray, anyelement). Isn't time to define array_append(anyarray, anyarray) now?
Regards
Pavel
2014-10-24 15:05 GMT+02:00 Pavel Stehule <pavel.stehule@gmail.com>:
2014-10-24 13:58 GMT+02:00 Pavel Stehule <pavel.stehule@gmail.com>:2014-10-24 11:43 GMT+02:00 Ali Akbar <the.apaan@gmail.com>:2014-10-24 16:26 GMT+07:00 Pavel Stehule <pavel.stehule@gmail.com>:Hisome in last patch is wrong, I cannot to compile it:
arrayfuncs.c: In function ‘accumArrayResult’:
arrayfuncs.c:4603:9: error: ‘ArrayBuildState’ has no member named ‘alen’
astate->alen = 64; /* arbitrary starting array size */
^
arrayfuncs.c:4604:9: error: ‘ArrayBuildState’ has no member named ‘dvalues’
astate->dvalues = (Datum *) palloc(astate->alen * sizeof(Datum));
^
arrayfuncs.c:4604:44: error: ‘ArrayBuildState’ has no member named ‘alen’
astate->dvalues = (Datum *) palloc(astate->alen * sizeof(Datum));
^
arrayfuncs.c:4605:9: error: ‘ArrayBuildState’ has no member named ‘dnulls’
astate->dnulls = (bool *) palloc(astate->alen * sizeof(bool));
^
arrayfuncs.c:4605:42: error: ‘ArrayBuildState’ has no member named ‘alen’
astate->dnulls = (bool *) palloc(astate->alen * sizeof(bool));
^
arrayfuncs.c:4606:9: error: ‘ArrayBuildState’ has no member named ‘nelems’
astate->nelems = 0;
^
arrayfuncs.c:4618:13: error: ‘ArrayBuildState’ has no member named ‘nelems’
if (astate->nelems >= astate->alen)
^
arrayfuncs.c:4618:31: error: ‘ArrayBuildState’ has no member named ‘alen’
if (astate->nelems >= astate->alen)
^
arrayfuncs.c:4620:10: error: ‘ArrayBuildState’ has no member named ‘alen’
astate->alen *= 2;Sorry, correct patch attached.This patch is in patience format (git --patience ..). In previous patches, i use context format (git --patience ... | filterdiff --format=context), but it turns out that some modification is lost.last version is compileable, but some is still broken
postgres=# select array_agg(array[i, i+1, i-1])
from generate_series(1,2) a(i);
ERROR: could not find array type for data type integer[]I am sorry, it works - I had a problem with broken databaseI fixed small issue in regress tests and I enhanced tests for varlena types and null values.Regards
Pavelbut array(subselect) works
postgres=# select array(select a from xx);
array
-------------------
{{1,2,3},{1,2,3}}
(1 row)Regards
Pavel--
Ali Akbar
pgsql-hackers by date: