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