| From: | Richard Guo <rguo(at)postgresql(dot)org> |
|---|---|
| To: | pgsql-committers(at)lists(dot)postgresql(dot)org |
| Subject: | pgsql: Fix deparsing of JSON_ARRAY(subquery) with a FORMAT clause |
| Date: | 2026-07-27 01:22:42 |
| Message-ID: | E1woA3G-00000000SKS-42SE@gemulon.postgresql.org |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-committers |
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(dot)evan(dot)chao(at)gmail(dot)com>
Reviewed-by: Ewan Young <kdbase(dot)hack(at)gmail(dot)com>
Reviewed-by: Richard Guo <guofenglinux(at)gmail(dot)com>
Discussion: https://postgr.es/m/4C89B193-7D54-4705-9CF9-F0D484B9E099@gmail.com
Backpatch-through: 19
Branch
------
REL_19_STABLE
Details
-------
https://git.postgresql.org/pg/commitdiff/aa50f4f02920101b84466668bd3b90c156dcda89
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(-)
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Amit Kapila | 2026-07-27 03:45:19 | pgsql: Fix issues in logical replication sequence synchronization. |
| Previous Message | Michael Paquier | 2026-07-27 00:59:16 | pgsql: Update .gitignore in test/modules/nbtree |