Re: Nicely exiting PG_TRY and PG_CATCH - Mailing list pgsql-hackers

From Tom Lane
Subject Re: Nicely exiting PG_TRY and PG_CATCH
Date
Msg-id 3353555.1665177543@sss.pgh.pa.us
Whole thread Raw
In response to Nicely exiting PG_TRY and PG_CATCH  (Mikhail Gribkov <youzhick@gmail.com>)
Responses Re: Nicely exiting PG_TRY and PG_CATCH  (Mikhail Gribkov <youzhick@gmail.com>)
List pgsql-hackers
Mikhail Gribkov <youzhick@gmail.com> writes:
> Usually it's not a good idea to exit PG_TRY() block via return statement.
> Otherwise it would leave PG_exception_stack global variable in a wrong
> state and next ereport() will jump to some junk address.

Yeah, you can't return or goto out of the PG_TRY part.

> Another suspicious case is PG_CATCH block in jsonb_plpython.c:

This should be OK.  The PG_CATCH and PG_FINALLY macros are set up so that
we've fully restored that state *before* we execute any of the
error-handling code.  It would be basically impossible to have a guarantee
that CATCH blocks never throw errors; they'd be so restricted as to be
near useless, like signal handlers.

            regards, tom lane



pgsql-hackers by date:

Previous
From: Israel Barth Rubio
Date:
Subject: Re: Add support for DEFAULT specification in COPY FROM
Next
From: Nathan Bossart
Date:
Subject: Re: Adding Support for Copy callback functionality on COPY TO api