v48-0001-minor-refactor-transformJsonTableColumns.only_for_v48_0001

application/octet-stream

Filename: v48-0001-minor-refactor-transformJsonTableColumns.only_for_v48_0001
Type: application/octet-stream
Part: 0
Message: Re: remaining sql/json patches
From a6acace84be31b5008893bdfd9b88c69feca0485 Mon Sep 17 00:00:00 2001
From: jian he <jian.universality@gmail.com>
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