mirror of
https://github.com/postgres/postgres.git
synced 2025-11-04 20:11:56 +03:00
Switch some numeric-related functions to use soft error reporting
This commit changes some functions related to the data type numeric to
use the soft error reporting rather than a custom boolean flag (called
"have_error") that callers of these functions could rely on to bypass
the generation of ERROR reports, letting the callers do their own error
handling (timestamp, jsonpath and numeric_to_char() require them).
This results in the removal of some boilerplate code that was required
to handle both the ereport() and the "have_error" code paths bypassing
ereport(), unifying everything under the soft error reporting facility.
While on it, some duplicated error messages are removed. The function
upgraded in this commit were suffixed with "_opt_error" in their names.
They are renamed to "_safe" instead.
This change relies on d9f7f5d32f, that has introduced the soft error
reporting infrastructure.
Author: Amul Sul <sulamul@gmail.com>
Reviewed-by: Dean Rasheed <dean.a.rasheed@gmail.com>
Discussion: https://postgr.es/m/CAAJ_b96No5h5tRuR+KhcC44YcYUCw8WAHuLoqqyyop8_k3+JDQ@mail.gmail.com
This commit is contained in:
@@ -6389,12 +6389,12 @@ numeric_to_char(PG_FUNCTION_ARGS)
|
||||
if (IS_ROMAN(&Num))
|
||||
{
|
||||
int32 intvalue;
|
||||
bool err;
|
||||
ErrorSaveContext escontext = {T_ErrorSaveContext};
|
||||
|
||||
/* Round and convert to int */
|
||||
intvalue = numeric_int4_opt_error(value, &err);
|
||||
intvalue = numeric_int4_safe(value, (Node *) &escontext);
|
||||
/* On overflow, just use PG_INT32_MAX; int_to_roman will cope */
|
||||
if (err)
|
||||
if (escontext.error_occurred)
|
||||
intvalue = PG_INT32_MAX;
|
||||
numstr = int_to_roman(intvalue);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user