From f553acbaafa8c06eb2a37cadff1c838aad3cb70f Mon Sep 17 00:00:00 2001 From: Jianghua Yang Date: Tue, 24 Mar 2026 08:35:32 -0700 Subject: [PATCH v1] Fix wrong argument to SOFT_ERROR_OCCURRED in timestamptz_date In commit e2f289e5b9b, which made many cast functions error safe, timestamptz_date() mistakenly passes fcinfo->args to the SOFT_ERROR_OCCURRED() macro instead of fcinfo->context. fcinfo->args is a NullableDatum[] array, not a Node pointer. The macro casts its argument to Node* and checks the NodeTag field. When given fcinfo->args, it reads the first argument's Datum value as a NodeTag, which will almost certainly not match T_ErrorSaveContext, causing the soft error check to always evaluate to false. As a result, when the timestamptz-to-date conversion encounters an overflow in error-safe mode, the function will return a garbage date value instead of the expected NULL. All three sibling functions modified in the same commit (date_timestamp, timestamp_date, date_timestamptz) correctly use fcinfo->context. Author: Jianghua Yang --- src/backend/utils/adt/date.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backend/utils/adt/date.c b/src/backend/utils/adt/date.c index 71ea048d251..c3327440380 100644 --- a/src/backend/utils/adt/date.c +++ b/src/backend/utils/adt/date.c @@ -1402,7 +1402,7 @@ timestamptz_date(PG_FUNCTION_ARGS) DateADT result; result = timestamptz2date_safe(timestamp, fcinfo->context); - if (SOFT_ERROR_OCCURRED(fcinfo->args)) + if (SOFT_ERROR_OCCURRED(fcinfo->context)) PG_RETURN_NULL(); PG_RETURN_DATEADT(result); -- 2.50.1 (Apple Git-155)