pgsql: SQL/JSON: Fix PASSING of string types other than text and varcha

From: Amit Langote <amitlan(at)postgresql(dot)org>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: SQL/JSON: Fix PASSING of string types other than text and varcha
Date: 2026-11-11 06:05:35
Message-ID: E1xR1Sh-00000000H3v-0JRH@gemulon.postgresql.org
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-committers

SQL/JSON: Fix PASSING of string types other than text and varchar

For PASSING arguments, transformJsonValueExpr() passes values of any
type of the string category to the jsonpath executor as they are,
without converting them to jsonb. However, JsonItemFromDatum() only
handled text and varchar among those, so passing a char(n) or name
value (such as current_user), or a value of a domain over text, failed
at run time:

ERROR: could not convert value of type character to jsonpath

Fix by making JsonItemFromDatum() handle those types too. bpchar is
handled like text, keeping its padding as to_jsonb() does, and name
directly. Any other type of the string category, including domains
over string types and types provided by extensions, is converted
through its output function, again as to_jsonb() does.

Doing this in the executor rather than coercing the argument in the
parser leaves parse trees unchanged, so that existing views and rules
using such PASSING arguments start working too.

Oversight in commit 6185c9737cf, so back-patch to 17.

Reported-by: Ilya Staroverov <i(dot)staroverov(at)ftdata(dot)ru>
Reported-by: chunling qin <303677365(at)qq(dot)com>
Author: Ilya Staroverov <i(dot)staroverov(at)ftdata(dot)ru>
Discussion: https://postgr.es/m/4601EAD4-F3E7-4182-9E49-5FFD3DA8CC8E@localhost.localdomain
Discussion: https://postgr.es/m/19813-6a460679ae295ed6@postgresql.org
Backpatch-through: 17

Branch
------
REL_18_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/23f3c0bb5c206b3fe8c0ee20140c6de86161186e

Modified Files
--------------
src/backend/utils/adt/jsonpath_exec.c | 51 ++++++++++++++++--
src/test/regress/expected/sqljson_queryfuncs.out | 66 ++++++++++++++++++++++++
src/test/regress/sql/sqljson_queryfuncs.sql | 25 +++++++++
3 files changed, 138 insertions(+), 4 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Amit Langote 2026-11-11 06:05:49 pgsql: SQL/JSON: Fix PASSING of string types other than text and varcha
Previous Message Amit Langote 2026-11-11 06:05:20 pgsql: SQL/JSON: Fix PASSING of string types other than text and varcha