Here are a couple of small patches to tidy up the parser a bit in your v28-0004 (JSON_TABLE) patch. It's not a lot; the rest looks okay to me. (I don't have an opinion on the concurrent discussion on resolving some precedence issues.)
From 0dc7e7852702272f0bf12aaa4b56b9ac60c4d969 Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <pe...@eisentraut.org>
Date: Thu, 7 Dec 2023 08:56:26 +0100
Subject: [PATCH 1/3] Fix spurious tab characters

---
 src/backend/parser/gram.y | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index 3755434af0..78aaa7a32f 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -16661,7 +16661,7 @@ json_quotes_clause_opt:
 json_table:
                        JSON_TABLE '('
                                json_value_expr ',' a_expr 
json_passing_clause_opt
-                               COLUMNS '('     
json_table_column_definition_list ')'
+                               COLUMNS '(' json_table_column_definition_list 
')'
                                json_table_plan_clause_opt
                                json_behavior_clause_opt
                        ')'
@@ -16680,7 +16680,7 @@ json_table:
                                }
                        | JSON_TABLE '('
                                json_value_expr ',' a_expr AS name 
json_passing_clause_opt
-                               COLUMNS '('     
json_table_column_definition_list ')'
+                               COLUMNS '(' json_table_column_definition_list 
')'
                                json_table_plan_clause_opt
                                json_behavior_clause_opt
                        ')'
@@ -16772,7 +16772,7 @@ json_table_column_definition:
                                        $$ = (Node *) n;
                                }
                        | NESTED path_opt Sconst
-                               COLUMNS '('     
json_table_column_definition_list ')'
+                               COLUMNS '(' json_table_column_definition_list 
')'
                                {
                                        JsonTableColumn *n = 
makeNode(JsonTableColumn);
 
@@ -16784,7 +16784,7 @@ json_table_column_definition:
                                        $$ = (Node *) n;
                                }
                        | NESTED path_opt Sconst AS name
-                               COLUMNS '('     
json_table_column_definition_list ')'
+                               COLUMNS '(' json_table_column_definition_list 
')'
                                {
                                        JsonTableColumn *n = 
makeNode(JsonTableColumn);
 
-- 
2.43.0

From 5ee8a90940d107fc3bf93cccfde2e6a511218377 Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <pe...@eisentraut.org>
Date: Thu, 7 Dec 2023 09:15:21 +0100
Subject: [PATCH 2/3] Light reformatting

---
 src/backend/parser/gram.y | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index 78aaa7a32f..4fad661ff0 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -16883,12 +16883,14 @@ json_table_plan_sibling:
                ;
 
 json_table_default_plan_choices:
-                       json_table_default_plan_inner_outer                     
{ $$ = $1 | JSTPJ_UNION; }
-                       | json_table_default_plan_union_cross           { $$ = 
$1 | JSTPJ_OUTER; }
-                       | json_table_default_plan_inner_outer ','
-                         json_table_default_plan_union_cross           { $$ = 
$1 | $3; }
-                       | json_table_default_plan_union_cross ','
-                         json_table_default_plan_inner_outer           { $$ = 
$1 | $3; }
+                       json_table_default_plan_inner_outer
+                               { $$ = $1 | JSTPJ_UNION; }
+                       | json_table_default_plan_union_cross
+                               { $$ = $1 | JSTPJ_OUTER; }
+                       | json_table_default_plan_inner_outer ',' 
json_table_default_plan_union_cross
+                               { $$ = $1 | $3; }
+                       | json_table_default_plan_union_cross ',' 
json_table_default_plan_inner_outer
+                               { $$ = $1 | $3; }
                ;
 
 json_table_default_plan_inner_outer:
-- 
2.43.0

From a57cea1ea87fe78e6b4e90cef6bccccbecde67fa Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <pe...@eisentraut.org>
Date: Thu, 7 Dec 2023 09:15:36 +0100
Subject: [PATCH 3/3] Remove some unnecessary intermediate rules

---
 src/backend/parser/gram.y | 18 ++++--------------
 1 file changed, 4 insertions(+), 14 deletions(-)

diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index 4fad661ff0..b5eb73acf9 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -657,10 +657,8 @@ static Node *makeRecursiveViewSelect(char *relname, List 
*aliases, Node *query);
                                json_table_plan_clause_opt
                                json_table_plan
                                json_table_plan_simple
-                               json_table_plan_parent_child
                                json_table_plan_outer
                                json_table_plan_inner
-                               json_table_plan_sibling
                                json_table_plan_union
                                json_table_plan_cross
                                json_table_plan_primary
@@ -16823,8 +16821,10 @@ json_table_plan_clause_opt:
 
 json_table_plan:
                        json_table_plan_simple
-                       | json_table_plan_parent_child
-                       | json_table_plan_sibling
+                       | json_table_plan_outer
+                       | json_table_plan_inner
+                       | json_table_plan_union
+                       | json_table_plan_cross
                ;
 
 json_table_plan_simple:
@@ -16858,11 +16858,6 @@ json_table_plan_inner:
                                { $$ = makeJsonTableJoinedPlan(JSTPJ_INNER, $1, 
$3, @1); }
                ;
 
-json_table_plan_parent_child:
-                       json_table_plan_outer
-                       | json_table_plan_inner
-               ;
-
 json_table_plan_union:
                        json_table_plan_primary UNION json_table_plan_primary
                                { $$ = makeJsonTableJoinedPlan(JSTPJ_UNION, $1, 
$3, @1); }
@@ -16877,11 +16872,6 @@ json_table_plan_cross:
                                { $$ = makeJsonTableJoinedPlan(JSTPJ_CROSS, $1, 
$3, @1); }
                ;
 
-json_table_plan_sibling:
-                       json_table_plan_union
-                       | json_table_plan_cross
-               ;
-
 json_table_default_plan_choices:
                        json_table_default_plan_inner_outer
                                { $$ = $1 | JSTPJ_UNION; }
-- 
2.43.0

Reply via email to