aboutsummaryrefslogtreecommitdiff
path: root/src/backend/parser/parse_jsontable.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/parser/parse_jsontable.c')
-rw-r--r--src/backend/parser/parse_jsontable.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/src/backend/parser/parse_jsontable.c b/src/backend/parser/parse_jsontable.c
index 99d3101f6b2..37f2cba0ef0 100644
--- a/src/backend/parser/parse_jsontable.c
+++ b/src/backend/parser/parse_jsontable.c
@@ -402,12 +402,6 @@ transformJsonTableColumn(JsonTableColumn *jtc, Node *contextItemExpr,
Node *pathspec;
JsonFuncExpr *jfexpr = makeNode(JsonFuncExpr);
- /*
- * XXX consider inventing JSON_TABLE_VALUE_OP, etc. and pass the column
- * name via JsonExpr so that JsonPathValue(), etc. can provide error
- * message tailored to JSON_TABLE(), such as by mentioning the column
- * names in the message.
- */
if (jtc->coltype == JTC_REGULAR)
jfexpr->op = JSON_VALUE_OP;
else if (jtc->coltype == JTC_EXISTS)
@@ -415,6 +409,10 @@ transformJsonTableColumn(JsonTableColumn *jtc, Node *contextItemExpr,
else
jfexpr->op = JSON_QUERY_OP;
+ /* Pass the column name so any runtime JsonExpr errors can print it. */
+ Assert(jtc->name != NULL);
+ jfexpr->column_name = pstrdup(jtc->name);
+
jfexpr->context_item = makeJsonValueExpr((Expr *) contextItemExpr, NULL,
makeJsonFormat(JS_FORMAT_DEFAULT,
JS_ENC_DEFAULT,