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: Vik Fearing <vik@postgresfriends.org>
Cc: lukas.eder@gmail.com, pgsql-bugs@lists.postgresql.org, PG Bug reporting form <noreply@postgresql.org>, Álvaro Herrera <alvherre@kurilemu.de>
Date: 2026-03-02T05:45:03Z
Lists: pgsql-bugs
On Mon, Mar 2, 2026 at 2:09 PM Richard Guo <guofenglinux@gmail.com> wrote: > On Fri, Feb 27, 2026 at 11:44 PM Richard Guo <guofenglinux@gmail.com> wrote: > > I wonder if we can fix it by wrapping the JSON_ARRAYAGG in a COALESCE > > to catch the NULL and convert it to an empty array; ie: > > > > SELECT COALESCE( > > JSON_ARRAYAGG(a [FORMAT] [RETURNING] [ON NULL]), > > '[]'::[RETURNING_TYPE] > > ) FROM (query) q(a) > The attached patch seems to fix it. (cc-ing Álvaro who committed 7081ac46a) Regarding back-patching, I believe this fix is safe to back-patch to stable branches. However, similar to a nearby bug fix, this will only apply to newly created views. Existing views will continue to exhibit the old behavior until recreated. Additionally, this changes the user-facing output from NULL to [], so users may need to update any application code that relied on the NULL behavior. - Richard
Commits
-
Enforce RETURNING typmod for empty-set JSON_ARRAY(query)
- 9d124a14b3d4 19 (unreleased) landed
-
Fix JSON_ARRAY(query) empty set handling and view deparsing
- 8d829f5a0203 19 (unreleased) landed