agora inbox for pgsql-committers@postgresql.org  
help / color / mirror / Atom feed
From: Richard Guo <rguo@postgresql.org>
To: pgsql-committers@lists.postgresql.org
Subject: pgsql: Fix deparsing of JSON_ARRAY(subquery) with a FORMAT clause
Date: Mon, 27 Jul 2026 01:22:42 +0000
Message-ID: <E1woA3G-00000000SKO-3tBg@gemulon.postgresql.org> (raw)

Fix deparsing of JSON_ARRAY(subquery) with a FORMAT clause

Commit 8d829f5a0 introduced the JSCTOR_JSON_ARRAY_QUERY constructor
type so that ruleutils.c could deparse JSON_ARRAY(subquery) using its
original syntax, storing the transformed subquery in a new orig_query
field.  However, the input FORMAT clause of JSON_ARRAY(subquery FORMAT
...) was not preserved for deparsing.  The format was recorded only in
the executable expression kept in the func field, which ruleutils.c
does not inspect, so it is silently dropped.

This is more than cosmetic, because FORMAT JSON changes the result:
without it a text value is treated as a string to be quoted, while
with it the value is treated as already-formatted JSON.

To fix, record the input FORMAT in a new deparse-only field of
JsonConstructorExpr, alongside orig_query, and emit it in ruleutils.c.

Bump catalog version.

Author: Chao Li <li.evan.chao@gmail.com>
Reviewed-by: Ewan Young <kdbase.hack@gmail.com>
Reviewed-by: Richard Guo <guofenglinux@gmail.com>
Discussion: https://postgr.es/m/4C89B193-7D54-4705-9CF9-F0D484B9E099@gmail.com
Backpatch-through: 19

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/f4c850d11afc60a4fc4bc782fc40d7b752bf8d7f

Modified Files
--------------
src/backend/parser/parse_expr.c       | 3 +++
src/backend/utils/adt/ruleutils.c     | 1 +
src/include/catalog/catversion.h      | 2 +-
src/include/nodes/primnodes.h         | 5 +++++
src/test/regress/expected/sqljson.out | 7 +++++++
src/test/regress/sql/sqljson.sql      | 8 ++++++++
6 files changed, 25 insertions(+), 1 deletion(-)



view thread (2+ messages)  latest in thread

Message-ID: <E1woA3G-00000000SKO-3tBg@gemulon.postgresql.org>
Permalink:  ../E1woA3G-00000000SKO-3tBg@gemulon.postgresql.org/
Also on:    postgresql.org/message-id/E1woA3G-00000000SKO-3tBg@gemulon.postgresql.org

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-committers@postgresql.org
  Cc: rguo@postgresql.org, pgsql-committers@lists.postgresql.org
  Subject: Re: pgsql: Fix deparsing of JSON_ARRAY(subquery) with a FORMAT clause
  In-Reply-To: <E1woA3G-00000000SKO-3tBg@gemulon.postgresql.org>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox