pgsql: Fix error handling in pltcl_returnnext.

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Fix error handling in pltcl_returnnext.
Date: 2017-01-09 22:47:48
Message-ID: E1cQijE-0000Qc-71@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Fix error handling in pltcl_returnnext.

We can't throw elog(ERROR) out of a Tcl command procedure; we have
to catch the error and return TCL_ERROR to the Tcl interpreter.
pltcl_returnnext failed to meet this requirement, so that errors
detected by pltcl_build_tuple_result or other functions called here
led to longjmp'ing out of the Tcl interpreter and thereby leaving it
in a bad state. Use the existing subtransaction support to prevent
that. Oversight in commit 26abb50c4, found more or less accidentally
by the buildfarm thanks to the tests added in 961bed020.

Report: https://postgr.es/m/30647.1483989734@sss.pgh.pa.us

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/8c5722948e831c1862a39da2bb5d793a6f2aabab

Modified Files
--------------
src/pl/tcl/pltcl.c | 99 ++++++++++++++++++++++++++++++++----------------------
1 file changed, 59 insertions(+), 40 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Stephen Frost 2017-01-10 04:10:37 pgsql: Fix invalid-parallel-jobs error message
Previous Message Alvaro Herrera 2017-01-09 22:27:54 pgsql: Fix ALTER TABLE / SET TYPE for irregular inheritance