pgsql: Don't call data type input functions in GUC check hooks
От | Peter Eisentraut |
---|---|
Тема | pgsql: Don't call data type input functions in GUC check hooks |
Дата | |
Msg-id | E1hhVlK-0005Yi-9F@gemulon.postgresql.org обсуждение исходный текст |
Список | 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@anarazel.de> Reviewed-by: Michael Paquier <michael@paquier.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(-)
В списке pgsql-committers по дате отправления: