mirror of
https://github.com/postgres/postgres.git
synced 2025-07-02 09:02:37 +03:00
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
This commit is contained in:
@ -8848,9 +8848,15 @@ get_json_expr_options(JsonExpr *jsexpr, deparse_context *context,
|
||||
appendStringInfo(context->buf, " WITH CONDITIONAL WRAPPER");
|
||||
else if (jsexpr->wrapper == JSW_UNCONDITIONAL)
|
||||
appendStringInfo(context->buf, " WITH UNCONDITIONAL WRAPPER");
|
||||
/* The default */
|
||||
else if (jsexpr->wrapper == JSW_NONE || jsexpr->wrapper == JSW_UNSPEC)
|
||||
appendStringInfo(context->buf, " WITHOUT WRAPPER");
|
||||
|
||||
if (jsexpr->omit_quotes)
|
||||
appendStringInfo(context->buf, " OMIT QUOTES");
|
||||
/* The default */
|
||||
else
|
||||
appendStringInfo(context->buf, " KEEP QUOTES");
|
||||
}
|
||||
|
||||
if (jsexpr->on_empty && jsexpr->on_empty->btype != default_behavior)
|
||||
|
Reference in New Issue
Block a user