On 14 August 2015 at 17:42, Tom Lane <t...@sss.pgh.pa.us> wrote:

> The simplest fix for this would be to give up on the idea that DO blocks
> use private simple_eval_estates, and make them use the shared one.
> However, that would result in intra-transaction memory bloat for
> transactions executing large numbers of DO blocks; see commit c7b849a89,
> which installed that arrangement to begin with.  Since that change was
> based on a user complaint, this answer doesn't seem appetizing.
>

...


> Or we could change things so that DO blocks use private cast_hash
> hashtables along with their private simple_eval_estates.  This would
> give up some efficiency (since a DO block would then always need to do
> its own cast lookups) but it would be a simple and reliable fix.
>
> I'm kind of inclined to go with the last choice, but I wonder if anyone
> wants to argue differently, or sees another feasible solution.
>

Not everyone uses large numbers of DO blocks, but casts apply everywhere,
right?

If the choice is efficiency or memory bloat, can't we choose a point where
we switch from one to the other? i.e. use private structures after N uses
of the shared structures.

-- 
Simon Riggs                http://www.2ndQuadrant.com/
<http://www.2ndquadrant.com/>
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

Reply via email to