From: | "Nigel J(dot) Andrews" <nandrews(at)investsystems(dot)co(dot)uk> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: Freeing plan memory |
Date: | 2002-10-19 17:27:23 |
Message-ID: | Pine.LNX.4.21.0210191824050.26324-100000@ponder.fairway2k.co.uk |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Sat, 19 Oct 2002, Tom Lane wrote:
> "Nigel J. Andrews" <nandrews(at)investsystems(dot)co(dot)uk> writes:
> > The leak is that memory is grabbed in SPI_prepare() for a plan within
> > whatever context is current when it does the palloc(). It may be the
> > caller's or it may be the relevent SPI one. The plan is then copied
> > out of this memory [and context] into a child of the procedure's
> > context and forgotten about, or just plain forgotten.
>
> Au contraire: SPI_prepare builds the plan in its "execCxt", which is
> reset before returning (look at _SPI_begin_call and _SPI_end_call).
> So I see no leak there.
Ah, yes, I see that now.
> I'm not sure where the leak is in your plpython example, but I'd be
> inclined to look to plpython itself, perhaps even just the string
> concatenation expression in
> plan = plpy.prepare("SELECT " + repr(a))
Well it's not that string operation.
> plpgsql used to have terrible intra-function memory leaks, and only by
> dint of much hard work has it been brought to the point where you can
> expect a long loop in a plpgsql function not to chew up memory. AFAIK,
> no one has yet done similar work for the other PL languages.
Hmmm...my test case should boil down to a fairly small number of other calls in
the SPI_prepare wrapper and a quick looks doesn't show anything
interesting. Not sure I've got the time to dedicate to investigating this but
I'll look at it as and when I can.
I'm sending a patch for plpython.c to -patches which fixes a mistake I made in
the previous patch.
--
Nigel J. Andrews
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2002-10-19 17:38:39 | Re: Freeing plan memory |
Previous Message | Marcin Owsiany | 2002-10-19 17:17:13 | Security implications of (plpgsql) functions |