diff options
| author | Peter Eisentraut | 2019-06-30 08:15:25 +0000 |
|---|---|---|
| committer | Peter Eisentraut | 2019-06-30 08:27:43 +0000 |
| commit | 21f428ebde39339487c271a830fed135d6032d73 (patch) | |
| tree | 0a69ab528a79a31f3306a1d60c190c09a1fca085 /src/include/access | |
| parent | 666cbae16da46b833f57ef8b12ff0bf215684d9c (diff) | |
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
Diffstat (limited to 'src/include/access')
| -rw-r--r-- | src/include/access/xlog.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/include/access/xlog.h b/src/include/access/xlog.h index 237f4e0350c..d519252aad7 100644 --- a/src/include/access/xlog.h +++ b/src/include/access/xlog.h @@ -132,7 +132,7 @@ extern char *PrimarySlotName; /* indirectly set via GUC system */ extern TransactionId recoveryTargetXid; -extern TimestampTz recoveryTargetTime; +extern char *recovery_target_time_string; extern const char *recoveryTargetName; extern XLogRecPtr recoveryTargetLSN; extern RecoveryTargetType recoveryTarget; |
