pgsql: Don't call data type input functions in GUC check hooks

From: Peter Eisentraut <peter(at)eisentraut(dot)org>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Don't call data type input functions in GUC check hooks
Date: 2019-06-30 09:04:42
Message-ID: E1hhVlK-0005Yi-9F@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Don't call data type input functions in GUC check hooks

Instead of calling pg_lsn_in() in check_recovery_target_lsn and
timestamptz_in() in check_recovery_target_time, reorganize the
respective code so that we don't raise any errors in the check hooks.
The previous code tried to use PG_TRY/PG_CATCH to handle errors in a
way that is not safe, so now the code contains no ereport() calls and
can operate safely within the GUC error handling system.

Moreover, since the interpretation of the recovery_target_time string
may depend on the time zone, we cannot do the final processing of that
string until all the GUC processing is done. Instead,
check_recovery_target_time() now does some parsing for syntax
checking, but the actual conversion to a timestamptz value is done
later in the recovery code that uses it.

Reported-by: Andres Freund <andres(at)anarazel(dot)de>
Reviewed-by: Michael Paquier <michael(at)paquier(dot)xyz>
Discussion: https://www.postgresql.org/message-id/flat/20190611061115.njjwkagvxp4qujhp%40alap3.anarazel.de

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/21f428ebde39339487c271a830fed135d6032d73

Modified Files
--------------
src/backend/access/transam/xlog.c | 15 +++++-
src/backend/utils/adt/pg_lsn.c | 38 ++++++++++----
src/backend/utils/misc/guc.c | 102 +++++++++++++++-----------------------
src/include/access/xlog.h | 2 +-
src/include/utils/pg_lsn.h | 2 +
5 files changed, 85 insertions(+), 74 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Peter Eisentraut 2019-06-30 11:27:51 pgsql: Fix breakage introduced in pg_lsn_in()
Previous Message Robert Haas 2019-06-29 20:48:12 Re: UCT (Re: pgsql: Update time zone data files to tzdata release 2019a.)