postgresql/src/pl
Tom Lane 89ef2aedae Fix pl/tcl's handling of errors from Tcl_ListObjGetElements().
In a procedure or function returning tuple, we use that function to
parse the Tcl script's result, which is supposed to be a Tcl list.
If it isn't, you get an error.  Commit 26abb50c4 incautiously
supposed that we could use throw_tcl_error() to report such an error.
That doesn't actually work, because low-level functions like
Tcl_ListObjGetElements() don't fill Tcl's errorInfo variable.
The result is either a null-pointer-dereference crash or emission
of misleading context information describing the previous Tcl error.

Back off to just reporting the interpreter's result string, and
improve throw_tcl_error()'s comment to explain when to use it.

Also, although the similar code in pltcl_trigger_handler() avoided
this mistake, it was using a fairly confusing wording of the
error message.  Improve that while we're here.

Per report from A. Kozhemyakin.  Back-patch to all supported
branches.

Erik Wienhold and Tom Lane

Discussion: https://postgr.es/m/6a2a1c40-2b2c-4a33-8b72-243c0766fcda@postgrespro.ru
2024-06-04 18:02:13 -04:00
..
plperl Hide warnings from Python headers when using gcc-compatible compiler. 2023-12-26 16:16:29 -05:00
plpgsql Fix handling of polymorphic output arguments for procedures. 2024-05-14 20:19:20 -04:00
plpython Fix recursive RECORD-returning plpython functions. 2024-05-09 13:16:21 -04:00
tcl Fix pl/tcl's handling of errors from Tcl_ListObjGetElements(). 2024-06-04 18:02:13 -04:00
Makefile Make distprep and *clean build targets recurse into all subdirectories. 2011-07-03 13:55:12 -04:00