Re: Refactoring: Use soft error reporting for *_opt_error functions - Mailing list pgsql-hackers

From Dean Rasheed
Subject Re: Refactoring: Use soft error reporting for *_opt_error functions
Date
Msg-id CAEZATCUqTBXrPZb6+FK2dGNdO2i1GHVGsPGSKAz=VK9mu2adBg@mail.gmail.com
Whole thread Raw
In response to Re: Refactoring: Use soft error reporting for *_opt_error functions  (Michael Paquier <michael@paquier.xyz>)
Responses Re: Refactoring: Use soft error reporting for *_opt_error functions
List pgsql-hackers
On Wed, 3 Sept 2025 at 07:47, Michael Paquier <michael@paquier.xyz> wrote:
>
> The same error message is repeated twice.  How about using some gotos
> and one single ereport instead of two?  The same can be said for
> numeric_div_safe() and numeric_mod_safe(), for the division-by-0
> messages.

In numeric_div_safe() and numeric_mod_safe():

-     * If "have_error" is provided, check for division by zero here
+     * If "escontext" is provided, raise division by zero soft error here
      */
-    if (have_error && (arg2.ndigits == 0 || arg2.digits[0] == 0))
-    {
-        *have_error = true;
-        return NULL;
-    }
+    if (escontext && (arg2.ndigits == 0 || arg2.digits[0] == 0))
+        ereturn(escontext, NULL,
+                errcode(ERRCODE_DIVISION_BY_ZERO),
+                errmsg("division by zero"));

This might as well now be made to check for division-by-zero even if
escontext is NULL.

Regards,
Dean



pgsql-hackers by date:

Previous
From: "Hayato Kuroda (Fujitsu)"
Date:
Subject: RE: Logical Replication of sequences
Next
From: Alexander Korotkov
Date:
Subject: Re: VM corruption on standby