Re: BUG #19418: SQL/JSON JSON_VALUE() does not conform to ISO/IEC 9075-2:2023(E) 6.34 <JSON value constructor>

Richard Guo <guofenglinux@gmail.com>

From: Richard Guo <guofenglinux@gmail.com>
To: Amit Langote <amitlangote09@gmail.com>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Vik Fearing <vik@postgresfriends.org>, lukas.eder@gmail.com, pgsql-bugs@lists.postgresql.org, Álvaro Herrera <alvherre@kurilemu.de>
Date: 2026-04-21T00:57:34Z
Lists: pgsql-bugs
On Mon, Apr 20, 2026 at 6:05 PM Amit Langote <amitlangote09@gmail.com> wrote:
> Agreed that v4 is the better direction.

Thanks for review!

> The comment on orig_query could say "not walked" a bit more helpfully, e.g.
>
> Node       *orig_query;     /* for deparse only; not walked (func is) */

Sounds good.

> I also noticed that the comment for 'func' is incomplete as it is and
> this change warrants an update. Maybe a bit long, but how about:
>
>     Expr       *func;           /* expression producing the result:
>                                  * Aggref/WindowFunc for *AGG,
>                                  * CoalesceExpr for ARRAY_QUERY,
>                                  * json[b]_xxx() call for remaining types */

It seems that func is NULL for "remaining types".  How about we go
with:

  Expr       *func;           /* executable expression:
                               * Aggref/WindowFunc for *AGG,
                               * CoalesceExpr for ARRAY_QUERY,
                               * NULL for other types (executor calls
                               * underlying json[b]_xxx() functions) */

(maybe we should place the multi-line comment above the field.)

- Richard



Commits

  1. Enforce RETURNING typmod for empty-set JSON_ARRAY(query)

  2. Fix JSON_ARRAY(query) empty set handling and view deparsing