git.postgresql.org Git - postgresql.git/commit

git projects / postgresql.git / commit
? search:
summary | shortlog | log | commit | commitdiff | tree
(parent: 666cbae) | patch
Don't call data type input functions in GUC check hooks
2019年6月30日 08:15:25 +0000 (10:15 +0200)
2019年6月30日 08:27:43 +0000 (10:27 +0200)
commit 21f428ebde39339487c271a830fed135d6032d73
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@anarazel.de>
Reviewed-by: Michael Paquier <michael@paquier.xyz>
Discussion: https://www.postgresql.org/message-id/flat/20190611061115.njjwkagvxp4qujhp%40alap3.anarazel.de
src/backend/access/transam/xlog.c diff | blob | blame | history
src/backend/utils/adt/pg_lsn.c diff | blob | blame | history
src/backend/utils/misc/guc.c diff | blob | blame | history
src/include/access/xlog.h diff | blob | blame | history
src/include/utils/pg_lsn.h diff | blob | blame | history
This is the main PostgreSQL git repository.
RSS Atom

AltStyle によって変換されたページ (->オリジナル) /