On Nov 1, 2013, at 2:08 PM, Tom Lane <t...@sss.pgh.pa.us> wrote:
> g.vanluffe...@qipc.com writes:
>> int4range ( and any other range function) consumes much memory when used in
>> a select statement on a big table.
> 
> The problem is that range_out leaks memory, as a consequence of creating a
> number of intermediate strings that it doesn't bother to free.  I don't
> believe it's the only output function that leaks memory, but it does
> so with particular vim: now that we've increased the initial size of
> StringInfo buffers, it's probably wasting upwards of 2K per call.
> 
> While we could doubtless hack range_out to release those strings again,
> it seems to me that that's just sticking a finger in the dike.  I'm
> inclined to think that we really ought to solve this class of problems
> once and for all by fixing printtup.c to run the output functions in a
> temporary memory context,
...
> we're already using a reset-per-row approach to memory management of
> output function calls in COPY OUT, and I know for a fact that we've
> squeezed that code path as hard as we could.

+1. COPY is actually the case I was worried about… if you're dealing with large 
amounts of data in other clients ISTM that other things will bottleneck before 
the extra memory context.

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to