| 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(-)
| 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 |