]> git.ipfire.org Git - thirdparty/postgresql.git/commit
Fix thinko in plpgsql memory leak fix.
authorTom Lane <tgl@sss.pgh.pa.us>
Mon, 28 Dec 2020 16:41:25 +0000 (11:41 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Mon, 28 Dec 2020 16:41:25 +0000 (11:41 -0500)
commitfd1347f9d8def3a892a7335ec026bff0227db1af
treeb2fe24fe3c0cd57d80cb72fd874c2404cbbdff20
parent190f0af0d1277429467ef28332818952c1fd395f
Fix thinko in plpgsql memory leak fix.

Commit a6b1f5365 intended to place the transient "target" list of
a CALL statement in the function's statement-lifespan context,
but I fat-fingered that and used get_eval_mcontext() instead of
get_stmt_mcontext().  The eval_mcontext belongs to the "simple
expression" infrastructure, which is destroyed at transaction end.
The net effect is that a CALL in a procedure to another procedure
that has OUT or INOUT parameters would fail if the called procedure
did a COMMIT.

Per report from Peter Eisentraut.  Back-patch to v11, like the
prior patch.

Discussion: https://postgr.es/m/f075f7be-c654-9aa8-3ffc-e9214622f02a@enterprisedb.com
src/pl/plpgsql/src/expected/plpgsql_call.out
src/pl/plpgsql/src/pl_exec.c
src/pl/plpgsql/src/sql/plpgsql_call.sql