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.steh...@gmail.com>: > > > 2014-10-24 13:58 GMT+02:00 Pavel Stehule <pavel.steh...@gmail.com>: > >> >> >> 2014-10-24 11:43 GMT+02:00 Ali Akbar <the.ap...@gmail.com>: >> >>> >>> 2014-10-24 16:26 GMT+07:00 Pavel Stehule <pavel.steh...@gmail.com>: >>> >>>> Hi >>>> >>>> some 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 database > > I fixed small issue in regress tests and I enhanced tests for varlena > types and null values. > > Regards > > Pavel > > >> >> but array(subselect) works >> >> postgres=# select array(select a from xx); >> array >> ------------------- >> {{1,2,3},{1,2,3}} >> (1 row) >> >> Regards >> >> Pavel >> >> >> >>> >>> -- >>> Ali Akbar >>> >> >> >