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 26abb50c, found more or less accidentally by the buildfarm thanks to the tests added in 961bed02. Report: https://postgr.es/m/30647.1483989734@sss.pgh.pa.us
Showing
Please register or sign in to comment