From a6acace84be31b5008893bdfd9b88c69feca0485 Mon Sep 17 00:00:00 2001 From: jian he Date: Wed, 3 Apr 2024 14:05:54 +0800 Subject: [PATCH v48 1/1] minor refactor transformJsonTableColumns only apply v48-00001, we only have non-nested JsonTableColumn. for non-nested JsonTableColumn we must specify column name. aslo refactor the comments, make it align with the transformJsonTableColumns intention. --- src/backend/parser/parse_jsontable.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/backend/parser/parse_jsontable.c b/src/backend/parser/parse_jsontable.c index 80f463b3..b18488d4 100644 --- a/src/backend/parser/parse_jsontable.c +++ b/src/backend/parser/parse_jsontable.c @@ -217,9 +217,14 @@ generateJsonTablePathName(JsonTableParseContext *cxt) /* * Create a JsonTablePlan that will supply the source row for jt->columns - * using 'pathspec' and append the columns' transformed JsonExpr nodes to - * TableFunc.colvalexprs. - */ + * using 'pathspec'. + * append jt->columns' transformed name into TableFunc.colnames. + * append jt->columns' transformed typeid into TableFunc.coltypes. + * append jt->columns' transformed typemod into TableFunc.coltypmods. + * append jt->columns' transformed collationid into TableFunc.colcollations. + * append jt->columns' transformed JsonExpr nodes to TableFunc.colvalexprs. + * TableFunc.passingvalexprs is handled seperately in transformJsonTable. +*/ static JsonTablePlan * transformJsonTableColumns(JsonTableParseContext *cxt, List *columns, List *passingArgs, @@ -242,9 +247,8 @@ transformJsonTableColumns(JsonTableParseContext *cxt, List *columns, Oid typcoll = InvalidOid; Node *colexpr; - if (rawc->name) - tf->colnames = lappend(tf->colnames, - makeString(pstrdup(rawc->name))); + /* non-nested JsonTableColumn must specify column name */ + Assert(rawc->name); /* * Determine the type and typmod for the new column. FOR ORDINALITY @@ -311,6 +315,7 @@ transformJsonTableColumns(JsonTableParseContext *cxt, List *columns, tf->coltypmods = lappend_int(tf->coltypmods, typmod); tf->colcollations = lappend_oid(tf->colcollations, typcoll); tf->colvalexprs = lappend(tf->colvalexprs, colexpr); + tf->colnames = lappend(tf->colnames, makeString(pstrdup(rawc->name))); } return makeJsonTablePathScan(pathspec, errorOnError); base-commit: c627d944e6c2620fb3b28f2e4b27e19212f84045 prerequisite-patch-id: 66f6eafa1e846eafb86d61751714158389872378 -- 2.34.1