Re: CAST(... ON DEFAULT) - WIP build on top of Error-Safe User Functions

From: jian he <jian(dot)universality(at)gmail(dot)com>
To: Kirill Reshke <reshkekirill(at)gmail(dot)com>
Cc: Corey Huinker <corey(dot)huinker(at)gmail(dot)com>, Vik Fearing <vik(at)postgresfriends(dot)org>, Isaac Morland <isaac(dot)morland(at)gmail(dot)com>, pgsql-hackers(at)lists(dot)postgresql(dot)org
Subject: Re: CAST(... ON DEFAULT) - WIP build on top of Error-Safe User Functions
Date: 2025-12-15 04:37:43
Message-ID: CACJufxFzqAshLFw-xTqpz3Mu=6nMLnPiD8bBhbqX6KcFPVjEHw@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

hi.

On Wed, Dec 10, 2025 at 9:32 PM Kirill Reshke <reshkekirill(at)gmail(dot)com> wrote:
>
> Hi!
>
> Overall, I think this patch is doing a good thing. Also, are we
> holding it until the next SQL standard release, because sql/23 leaks
> this feature?
>
> Below are my 2c.
>
> 1)
> First of all, I would prefer the `Bumps catversion` comment in the
> commit msg of v15-0022.
>
ok.

> 2)
> In v15-0006, if dont understand when memory allocated by
> `result = (macaddr *) palloc0(sizeof(macaddr));` will be freed. Does
> it persist until the query ends? I tried to get OOM with a query that
> errors out macaddr8 casts repeatedly, but failed.
>

if ((addr->d != 0xFF) || (addr->e != 0xFE))
- ereport(ERROR,
+ ereturn(fcinfo->context, (Datum) 0,
(errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE),
errmsg("macaddr8 data out of range to convert to macaddr"),
errhint("Only addresses that have FF and FE as values in the "

the change is minor, changing ereport to ereturn.
The whole refactoring does not related to OOM errror,
OOM errors will behave exactly as they did previously.

> 3)
> > * When error_safe set to true, we will evaluate the constant expression in a
> > * error safe way. If the evaluation fails, return NULL instead of throwing
> > * error.
>
> Somebody has to say it - s/error_safe set/error_safe is set/, also
> s/throwing error/throwing an error/
>
sure.

mainly rebase due to recent palloc_object, palloc_array conflict.

--
jian
https://www.enterprisedb.com/

Attachment Content-Type Size
v16-0023-error-safe-for-user-defined-CREATE-CAST.patch application/x-patch 71.9 KB
v16-0021-error-safe-for-casting-geometry-data-type.patch application/x-patch 12.0 KB
v16-0007-error-safe-for-casting-macaddr8-to-other-types-per-pg_cast.patch application/x-patch 1.5 KB
v16-0022-CAST-expr-AS-newtype-DEFAULT-ON-ERROR.patch application/x-patch 120.2 KB
v16-0020-refactor-point_dt.patch application/x-patch 8.4 KB
v16-0019-introduce-float8-safe-function.patch application/x-patch 3.8 KB
v16-0018-refactor-float_overflow_error-float_underflow_error-float_zero_d.patch application/x-patch 14.2 KB
v16-0017-error-safe-for-casting-jsonb-to-other-types-per-pg_cast.patch application/x-patch 6.3 KB
v16-0016-error-safe-for-casting-timestamp-to-other-types-per-pg_cast.patch application/x-patch 3.1 KB
v16-0015-error-safe-for-casting-timestamptz-to-other-types-per-pg_cast.patch application/x-patch 3.6 KB
v16-0014-error-safe-for-casting-interval-to-other-types-per-pg_cast.patch application/x-patch 2.1 KB
v16-0013-error-safe-for-casting-date-to-other-types-per-pg_cast.patch application/x-patch 2.2 KB
v16-0012-error-safe-for-casting-float8-to-other-types-per-pg_cast.patch application/x-patch 3.6 KB
v16-0010-error-safe-for-casting-numeric-to-other-types-per-pg_cast.patch application/x-patch 5.2 KB
v16-0011-error-safe-for-casting-float4-to-other-types-per-pg_cast.patch application/x-patch 3.1 KB
v16-0008-error-safe-for-casting-integer-to-other-types-per-pg_cast.patch application/x-patch 2.9 KB
v16-0009-error-safe-for-casting-bigint-to-other-types-per-pg_cast.patch application/x-patch 3.9 KB
v16-0006-error-safe-for-casting-inet-to-other-types-per-pg_cast.patch application/x-patch 1.8 KB
v16-0005-error-safe-for-casting-character-varying-to-other-types-per-pg_c.patch application/x-patch 2.1 KB
v16-0004-error-safe-for-casting-text-to-other-types-per-pg_cast.patch application/x-patch 9.9 KB
v16-0003-error-safe-for-casting-character-to-other-types-per-pg_cast.patch application/x-patch 4.6 KB
v16-0002-error-safe-for-casting-bit-varbit-to-other-types-per-pg_cast.patch application/x-patch 2.6 KB
v16-0001-error-safe-for-casting-bytea-to-other-types-per-pg_cast.patch application/x-patch 2.1 KB

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Pavel Stehule 2025-12-15 04:42:34 Re: proposal: schema variables
Previous Message Amit Kapila 2025-12-15 04:20:56 Re: Newly created replication slot may be invalidated by checkpoint