PG_FINALLY

Peter Eisentraut <peter@eisentraut.org>

Commit: 604bd3671121b51f977de146ed95484c2297fb3e
Author: Peter Eisentraut <peter@eisentraut.org>
Date: 2019-11-01T10:18:03Z
Releases: 13.0
PG_FINALLY

This gives an alternative way of catching exceptions, for the common
case where the cleanup code is the same in the error and non-error
cases.  So instead of

    PG_TRY();
    {
        ... code that might throw ereport(ERROR) ...
    }
    PG_CATCH();
    {
        cleanup();
	PG_RE_THROW();
    }
    PG_END_TRY();
    cleanup();

one can write

    PG_TRY();
    {
        ... code that might throw ereport(ERROR) ...
    }
    PG_FINALLY();
    {
        cleanup();
    }
    PG_END_TRY();

Discussion: https://www.postgresql.org/message-id/flat/95a822c3-728b-af0e-d7e5-71890507ae0c%402ndquadrant.com

Files

PathChange+/−
contrib/auto_explain/auto_explain.c modified +2 −6
contrib/dblink/dblink.c modified +3 −16
contrib/hstore_plpython/hstore_plpython.c modified +1 −4
contrib/jsonb_plpython/jsonb_plpython.c modified +1 −4
contrib/pg_stat_statements/pg_stat_statements.c modified +3 −9
contrib/pg_trgm/trgm_regexp.c modified +1 −4
contrib/postgres_fdw/connection.c modified +1 −4
contrib/postgres_fdw/postgres_fdw.c modified +4 −21
contrib/sepgsql/hooks.c modified +1 −3
contrib/sepgsql/label.c modified +5 −17
contrib/sepgsql/selinux.c modified +1 −3
contrib/sepgsql/uavc.c modified +1 −4
src/backend/catalog/index.c modified +2 −6
src/backend/commands/async.c modified +1 −8
src/backend/commands/copy.c modified +1 −3
src/backend/commands/event_trigger.c modified +2 −8
src/backend/commands/extension.c modified +1 −5
src/backend/commands/subscriptioncmds.c modified +2 −11
src/backend/commands/trigger.c modified +1 −3
src/backend/commands/vacuum.c modified +1 −5
src/backend/libpq/be-fsstubs.c modified +1 −3
src/backend/tcop/utility.c modified +2 −8
src/backend/utils/adt/xml.c modified +4 −16
src/include/utils/elog.h modified +37 −9
src/pl/plperl/plperl.c modified +2 −14
src/pl/plpgsql/src/pl_handler.c modified +2 −7
src/pl/plpython/plpy_cursorobject.c modified +1 −3
src/pl/plpython/plpy_elog.c modified +1 −12
src/pl/plpython/plpy_exec.c modified +2 −10
src/pl/plpython/plpy_spi.c modified +1 −3
src/pl/plpython/plpy_typeio.c modified +1 −4
src/pl/tcl/pltcl.c modified +2 −12

Discussion