Re: CAST(... ON DEFAULT) - WIP build on top of Error-Safe User Functions
jian he <jian.universality@gmail.com>
From: jian he <jian.universality@gmail.com>
To: Corey Huinker <corey.huinker@gmail.com>
Cc: Vik Fearing <vik@postgresfriends.org>,
Isaac Morland <isaac.morland@gmail.com>, pgsql-hackers@lists.postgresql.org
Date: 2025-11-25T12:27:52Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Make cast functions to type money error safe
- b36b95640487 19 (unreleased) landed
-
Make cast function from circle to polygon error safe
- 26f9012beecf 19 (unreleased) landed
-
Make geometry cast functions error safe
- 45cdaf3665be 19 (unreleased) landed
-
Make cast functions from jsonb error safe
- 10e4d8aaf46f 19 (unreleased) landed
-
Make many cast functions error safe
- e2f289e5b9b8 19 (unreleased) landed
-
Add SQL/JSON query functions
- 6185c9737cf4 17.0 cited
-
Add soft error handling to some expression nodes
- aaaf9449ec6b 17.0 cited
Attachments
- v12-0019-invent-some-error-safe-functions.patch (text/x-patch) patch v12-0019
- v12-0018-error-safe-for-casting-geometry-data-type.patch (text/x-patch) patch v12-0018
- v12-0017-error-safe-for-casting-jsonb-to-other-types-per-pg_cast.patch (text/x-patch) patch v12-0017
- v12-0015-error-safe-for-casting-timestamptz-to-other-types-per-pg_cast.patch (text/x-patch) patch v12-0015
- v12-0016-error-safe-for-casting-timestamp-to-other-types-per-pg_cast.patch (text/x-patch) patch v12-0016
- v12-0014-error-safe-for-casting-interval-to-other-types-per-pg_cast.patch (text/x-patch) patch v12-0014
- v12-0012-error-safe-for-casting-float8-to-other-types-per-pg_cast.patch (text/x-patch) patch v12-0012
- v12-0013-error-safe-for-casting-date-to-other-types-per-pg_cast.patch (text/x-patch) patch v12-0013
- v12-0011-error-safe-for-casting-float4-to-other-types-per-pg_cast.patch (text/x-patch) patch v12-0011
- v12-0010-error-safe-for-casting-numeric-to-other-types-per-pg_cast.patch (text/x-patch) patch v12-0010
- v12-0009-error-safe-for-casting-bigint-to-other-types-per-pg_cast.patch (text/x-patch) patch v12-0009
- v12-0008-error-safe-for-casting-integer-to-other-types-per-pg_cast.patch (text/x-patch) patch v12-0008
- v12-0007-error-safe-for-casting-macaddr8-to-other-types-per-pg_cast.patch (text/x-patch) patch v12-0007
- v12-0006-error-safe-for-casting-inet-to-other-types-per-pg_cast.patch (text/x-patch) patch v12-0006
- v12-0005-error-safe-for-casting-character-varying-to-other-types-per-pg_c.patch (text/x-patch) patch v12-0005
- v12-0003-error-safe-for-casting-character-to-other-types-per-pg_cast.patch (text/x-patch) patch v12-0003
- v12-0002-error-safe-for-casting-bit-varbit-to-other-types-per-pg_cast.patch (text/x-patch) patch v12-0002
- v12-0004-error-safe-for-casting-character-to-other-types-per-pg_cast.patch (text/x-patch) patch v12-0004
- v12-0020-CAST-expr-AS-newtype-DEFAULT-ON-ERROR.patch (text/x-patch) patch v12-0020
- v12-0001-error-safe-for-casting-bytea-to-other-types-per-pg_cast.patch (text/x-patch) patch v12-0001
On Fri, Nov 21, 2025 at 3:32 PM Corey Huinker <corey.huinker@gmail.com> wrote: > >>> >>> Also, are we settled on this new pg_cast column name (pg_cast.casterrorsafe)? >>> Overall, I think it's better not to touch pg_cast.dat in each of these >>> refactoring patches. >> >> >> I'm fine with it. I can see having 'f' and 's' both mean cast functions, but 's' means safe, but the extra boolean works too and we'll be fine with either method. > > > I can work on this part if you don't have time. Do you mean change pg_cast.casterrorsafe from boolean to char? Currently pg_cast.casterrorsafe works just fine. if the cast function is not applicable, the castfunc would be InvalidOid. also the cast function is either error safe or not, I don't see a usage case for the third value. attached v12-0004 fixes the xmlparse error, see https://cirrus-ci.com/task/6181359384788992?logs=build#L1217. all other patches remain the same as v11. -- jian https://www.enterprisedb.com/