Move return statements out of PG_TRY blocks.
authorNathan Bossart <[email protected]>
Wed, 3 May 2023 18:32:43 +0000 (11:32 -0700)
committerNathan Bossart <[email protected]>
Thu, 4 May 2023 23:26:05 +0000 (16:26 -0700)
commit24964394a972d0e7b030bf02a600bceea0be72d3
tree3e8edafa3a21672e8eae09143f6577c1c9a458df
parent580df507896351a0ebb5a09c2c84c0eac7b6740f
Move return statements out of PG_TRY blocks.

If we exit a PG_TRY block early via "continue", "break", "goto", or
"return", we'll skip unwinding its exception stack.  This change
moves a couple of such "return" statements in PL/Python out of
PG_TRY blocks.  This was introduced in d0aa965c0a and affects all
supported versions.

We might also be able to add compile-time checks to prevent
recurrence, but that is left as a future exercise.

Reported-by: Mikhail Gribkov, Xing Guo
Author: Xing Guo
Reviewed-by: Michael Paquier, Andres Freund, Tom Lane
Discussion: https://postgr.es/m/CAMEv5_v5Y%2B-D%3DCO1%2Bqoe16sAmgC4sbbQjz%2BUtcHmB6zcgS%2B5Ew%40mail.gmail.com
Discussion: https://postgr.es/m/CACpMh%2BCMsGMRKFzFMm3bYTzQmMU5nfEEoEDU2apJcc4hid36AQ%40mail.gmail.com
Backpatch-through: 11 (all supported versions)
src/pl/plpython/plpy_exec.c