[postgis-users] ERROR: array size exceeds themaximumallowed(134217727)

Paul Ramsey pramsey at cleverelephant.ca
Mon Mar 22 14:27:18 PDT 2010


This looks like a winner, at least insofar as it removes the max array
error condition for me in OS/X. Huge thanks to Greg Stark for digging
up the references to Tom Lane's changes in the array agg stuff...

On Mon, Mar 22, 2010 at 2:15 PM, Paul Ramsey <pramsey at cleverelephant.ca> wrote:
> Mike,
> See if this patch makes anything better. It matches tlane's changes to
> the 8.4 agg finalfunc.
> P.
>
> On Mon, Mar 22, 2010 at 1:29 PM, Greg Stark <gsstark at mit.edu> wrote:
>> On Mon, Mar 22, 2010 at 4:45 PM, Paul Ramsey <pramsey at cleverelephant.ca> wrote:
>>> Did you already try replacing your postgis functions with array_agg
>>> calls to see if we can push the problem back over the fence to pgsql
>>> land?
>>
>> On Sat, Mar 20, 2010 at 9:17 AM, Mike Leahy <mgleahy at alumni.uwaterloo.ca> wrote:
>>> Running this query on various data will produce one of two results.  One is
>>> the error mentioned in the subject (ERROR:  array size exceeds the maximum
>>> allowed (134217727)).  I can find very little information on this error.  The
>>> other outcome is that it often causes the PostgreSQL backend to segfault (see
>>> gdboutput.txt).
>>
>> gdboutput.txt:
>>
>> Program terminated with signal 11, Segmentation fault.
>> #0  0x00007fa4be23615b in pfree () from
>> /usr/lib/postgresql/8.4/bin/postgres
>> #1  0x00007fa4be18091b in makeMdArrayResult () from
>> /usr/lib/postgresql/8.4/bin/postgres
>> #2  0x00007fa4b7f038bc in pgis_accum_finalfn () from
>> /usr/lib/postgresql/8.4/lib/postgis-1.5.so
>> #3  0x00007fa4b7f039ee in pgis_geometry_union_finalfn () from
>> /usr/lib/postgresql/8.4/lib/postgis-1.5.so
>>
>> Any chance you can generate one of these seg faults from a build with
>> symbols and with assertions enabled? It might catch the problem
>> earlier and provide more info.
>>
>> IIRC there were some memory management changes which required changes
>> to array_agg() and which had some risk of causing problems for other
>> sites with similar coding. Is it possible your'e missing some of these
>> changes? I'm having trouble tracking them all down but at least
>> there's these:
>>
>>
>> commit 3d332de2eab8a01c0ef3f58ea69de2010fe8a1e1
>> Author: Tom Lane <tgl at sss.pgh.pa.us>
>> Date:   Thu Jul 23 20:45:27 2009 +0000
>>
>>    In a non-hashed Agg node, reset the "aggcontext" at group
>> boundaries, instead
>>    of individually pfree'ing pass-by-reference transition values.  This should
>>    be at least as fast as the prior coding, and it has the major advantage of
>>    clearing out any working data an aggregate function may have stored in or
>>    underneath the aggcontext.  This avoids memory leakage when an aggregate
>>    such as array_agg() is used in GROUP BY mode.  Per report from Chris Spotts.
>>
>>    Back-patch to 8.4.  In principle the problem could arise in prior versions,
>>    but since they didn't have array_agg the issue seems not critical.
>>
>> commit 7f83b61cc26eeac0c5a09add49f6cf899f87fc0b
>> Author: Tom Lane <tgl at sss.pgh.pa.us>
>> Date:   Sat Jun 20 18:45:28 2009 +0000
>>
>>    Fix things so that array_agg_finalfn does not modify or free its input
>>    ArrayBuildState, per trouble report from Merlin Moncure.  By adopting
>>    this fix, we are essentially deciding that aggregate final-functions
>>    should not modify their inputs ever.  Adjust documentation and comments
>>    to match that conclusion.
>>
>> --
>> greg
>> _______________________________________________
>> postgis-users mailing list
>> postgis-users at postgis.refractions.net
>> http://postgis.refractions.net/mailman/listinfo/postgis-users
>>
>



More information about the postgis-users mailing list