Convert range_in and multirange_in to report errors softly.
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 15 Dec 2022 17:18:36 +0000 (12:18 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 15 Dec 2022 17:18:36 +0000 (12:18 -0500)
commitd35a1af468162f510b6139bf81a7a41fd8ba8500
tree26c76daf21e73a9ed1e64eb534cf9296370ca4b2
parent75f49221c22286104f032827359783aa5f4e6646
Convert range_in and multirange_in to report errors softly.

This is mostly straightforward, except that if the range type
has a canonical function, that might throw an error during range
input.  (Such errors probably only occur for edge cases: in the
in-core canonical functions, it happens only if a bound has the
maximum valid value for the underlying type.)  Hence, this patch
extends the soft-error regime to allow canonical functions to
return errors softly as well.  Extensions implementing range
canonical functions will need modification anyway because of the
API change for range_serialize(); while at it, they might want
to do something similar to what's been done here in the in-core
canonical functions.

Discussion: https://postgr.es/m/3284599.1671075185@sss.pgh.pa.us
12 files changed:
src/backend/utils/adt/multirangetypes.c
src/backend/utils/adt/multirangetypes_selfuncs.c
src/backend/utils/adt/rangetypes.c
src/backend/utils/adt/rangetypes_gist.c
src/backend/utils/adt/rangetypes_selfuncs.c
src/backend/utils/adt/rangetypes_spgist.c
src/backend/utils/adt/rangetypes_typanalyze.c
src/include/utils/rangetypes.h
src/test/regress/expected/multirangetypes.out
src/test/regress/expected/rangetypes.out
src/test/regress/sql/multirangetypes.sql
src/test/regress/sql/rangetypes.sql