Fix JsonExpr deparsing to emit QUOTES and WRAPPER correctly
authorAmit Langote <amitlan@postgresql.org>
Mon, 8 Apr 2024 07:02:40 +0000 (16:02 +0900)
committerAmit Langote <amitlan@postgresql.org>
Mon, 8 Apr 2024 07:14:12 +0000 (16:14 +0900)
commitf6a2529920cff76cb6e37ea840122574404dde8b
treebbd513901c2d4322b979f4a66055eb42a5a3185d
parent561b74ddb8781f8c0511f6473c51fb51c8c6b087
Fix JsonExpr deparsing to emit QUOTES and WRAPPER correctly

Currently, get_json_expr_options() does not emit the default values
for QUOTES (KEEP QUOTES) and WRAPPER (WITHOUT WRAPPER).  That causes
the deparsed JSON_TABLE() columns, such as those contained in a a
view's query, to behave differently when executed than the original
definition.  That's because the rules encoded in
transformJsonTableColumns() will choose either JSON_VALUE() or
JSON_QUERY() as implementation to execute a given column's path
expression depending on the QUOTES and WRAPPER specificationd and
they have slightly different semantics.

Reported-by: Jian He <jian.universality@gmail.com>
Discussion: https://postgr.es/m/CACJufxEqhqsfrg_p7EMyo5zak3d767iFDL8vz_4%3DZBHpOtrghw%40mail.gmail.com
src/backend/utils/adt/ruleutils.c
src/test/regress/expected/sqljson_jsontable.out
src/test/regress/expected/sqljson_queryfuncs.out