pgsql: Avoid leaking memory while evaluating arguments for a table func

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Avoid leaking memory while evaluating arguments for a table func
Date: 2014-06-20 02:14:41
Message-ID: E1WxoLh-0002zk-JC@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Avoid leaking memory while evaluating arguments for a table function.

ExecMakeTableFunctionResult evaluated the arguments for a function-in-FROM
in the query-lifespan memory context. This is insignificant in simple
cases where the function relation is scanned only once; but if the function
is in a sub-SELECT or is on the inside of a nested loop, any memory
consumed during argument evaluation can add up quickly. (The potential for
trouble here had been foreseen long ago, per existing comments; but we'd
not previously seen a complaint from the field about it.) To fix, create
an additional temporary context just for this purpose.

Per an example from MauMau. Back-patch to all active branches.

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/45b0f357235236dd3198f8abcca277adc0d7459a

Modified Files
--------------
src/backend/executor/execQual.c | 15 +++++++++++----
src/backend/executor/nodeFunctionscan.c | 16 ++++++++++++++++
src/include/executor/executor.h | 1 +
src/include/nodes/execnodes.h | 2 ++
4 files changed, 30 insertions(+), 4 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Tom Lane 2014-06-20 02:21:06 Re: pgsql: Let installcheck-world pass against a server requiring a passwor
Previous Message Noah Misch 2014-06-20 01:49:31 pgsql: Fix contrib/pg_upgrade/test.sh for $PWD containing spaces.