Re: BUG #19491: Segmentation fault triggered by IS NULL

Ayush Tiwari <ayushtiwari.slg01@gmail.com>

From: Ayush Tiwari <ayushtiwari.slg01@gmail.com>
To: Srinath Reddy Sadipiralla <srinath2133@gmail.com>
Cc: 798604270@qq.com, pgsql-bugs@lists.postgresql.org, Álvaro Herrera <alvherre@kurilemu.de>
Date: 2026-06-05T16:11:34Z
Lists: pgsql-bugs

Attachments

Hi,

On Mon, 25 May 2026 at 22:06, Srinath Reddy Sadipiralla <
srinath2133@gmail.com> wrote:

> Hi,
>
> I have reviewed the patch , i think the error message might be
> something like
>
> diff --git a/src/backend/parser/parse_expr.c
> b/src/backend/parser/parse_expr.c
> index 89d0f348303..59e34f082e4 100644
> --- a/src/backend/parser/parse_expr.c
> +++ b/src/backend/parser/parse_expr.c
> @@ -4203,6 +4203,13 @@ transformJsonParseArg(ParseState *pstate, Node
> *jsexpr, JsonFormat *format,
>
>        TEXTOID, -1,
>
>        COERCION_IMPLICIT,
>
>        COERCE_IMPLICIT_CAST, -1);
> +                       if(expr == NULL)
> +                               ereport(ERROR,
> +                               (errcode(ERRCODE_CANNOT_COERCE),
> +                                errmsg("cannot cast type %s to %s",
> +                                               format_type_be(*exprtype),
> +                                               format_type_be(TEXTOID)),
> +                                parser_errposition(pstate,
> exprLocation(raw_expr))));
>                         *exprtype = TEXTOID;
>                 }
>

Thanks, that reads better.  v2 attached, raising ERRCODE_CANNOT_COERCE
right where the coercion fails:

  ERROR:  cannot cast type sqljson_mystr to text

which also covers the JSON() WITH UNIQUE KEYS path.

Regards,
Ayush

Commits

  1. IS JSON/JSON(): Protect against expressions uncoercible to text

  2. Reject degenerate SPLIT PARTITION with DEFAULT partition