0004-Remove-JsonBehavior-stuff-from-union.patch.nocfbot

text/plain

Filename: 0004-Remove-JsonBehavior-stuff-from-union.patch.nocfbot
Type: text/plain
Part: 3
Message: Re: remaining sql/json patches
From a7e78b5e9c5cfa191a9580a7b98f6ea663edaa36 Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter@eisentraut.org>
Date: Tue, 21 Nov 2023 05:53:55 +0100
Subject: [PATCH 4/6] Remove JsonBehavior stuff from %union

---
 src/backend/parser/gram.y | 36 +++++++++++++++++-------------------
 1 file changed, 17 insertions(+), 19 deletions(-)

diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index a2d482ab70..2866d1345c 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -278,8 +278,6 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query);
 	MergeWhenClause *mergewhen;
 	struct KeyActions *keyactions;
 	struct KeyAction *keyaction;
-	JsonBehavior *jsbehavior;
-	JsonBehaviorClause *jsbehaviorclause;
 }
 
 %type <node>	stmt toplevel_stmt schema_stmt routine_body_stmt
@@ -654,6 +652,8 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query);
 				json_aggregate_func
 				json_api_common_syntax
 				json_argument
+				json_behavior
+				json_behavior_clause_opt
 %type <list>	json_name_and_value_list
 				json_value_expr_list
 				json_array_aggregate_order_by_clause_opt
@@ -665,8 +665,6 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query);
 %type <boolean>	json_key_uniqueness_constraint_opt
 				json_object_constructor_null_clause_opt
 				json_array_constructor_null_clause_opt
-%type <jsbehavior>	json_behavior
-%type <jsbehaviorclause> json_behavior_clause_opt
 
 
 /*
@@ -15779,7 +15777,7 @@ func_expr_common_subexpr:
 					n->output = (JsonOutput *) $4;
 					n->wrapper = $5;
 					n->quotes = $6;
-					n->behavior = $7;
+					n->behavior = (JsonBehaviorClause *) $7;
 					n->location = @1;
 					$$ = (Node *) n;
 				}
@@ -15794,7 +15792,7 @@ func_expr_common_subexpr:
 					p->op = JSON_EXISTS_OP;
 					p->common = (JsonCommon *) $3;
 					p->output = (JsonOutput *) $4;
-					p->behavior = $5;
+					p->behavior = (JsonBehaviorClause *) $5;
 					p->location = @1;
 					$$ = (Node *) p;
 				}
@@ -15809,7 +15807,7 @@ func_expr_common_subexpr:
 					n->op = JSON_VALUE_OP;
 					n->common = (JsonCommon *) $3;
 					n->output = (JsonOutput *) $4;
-					n->behavior = $5;
+					n->behavior = (JsonBehaviorClause *) $5;
 					n->location = @1;
 					$$ = (Node *) n;
 				}
@@ -16665,25 +16663,25 @@ json_returning_clause_opt:
 		;
 
 json_behavior:
-			DEFAULT a_expr	{ $$ = makeJsonBehavior(JSON_BEHAVIOR_DEFAULT, $2, @1); }
-			| ERROR_P		{ $$ = makeJsonBehavior(JSON_BEHAVIOR_ERROR, NULL, @1); }
-			| NULL_P		{ $$ = makeJsonBehavior(JSON_BEHAVIOR_NULL, NULL, @1); }
-			| TRUE_P		{ $$ = makeJsonBehavior(JSON_BEHAVIOR_TRUE, NULL, @1); }
-			| FALSE_P		{ $$ = makeJsonBehavior(JSON_BEHAVIOR_FALSE, NULL, @1); }
-			| UNKNOWN		{ $$ = makeJsonBehavior(JSON_BEHAVIOR_UNKNOWN, NULL, @1); }
-			| EMPTY_P ARRAY	{ $$ = makeJsonBehavior(JSON_BEHAVIOR_EMPTY_ARRAY, NULL, @1); }
-			| EMPTY_P OBJECT_P	{ $$ = makeJsonBehavior(JSON_BEHAVIOR_EMPTY_OBJECT, NULL, @1); }
+			DEFAULT a_expr	{ $$ = (Node *) makeJsonBehavior(JSON_BEHAVIOR_DEFAULT, $2, @1); }
+			| ERROR_P		{ $$ = (Node *) makeJsonBehavior(JSON_BEHAVIOR_ERROR, NULL, @1); }
+			| NULL_P		{ $$ = (Node *) makeJsonBehavior(JSON_BEHAVIOR_NULL, NULL, @1); }
+			| TRUE_P		{ $$ = (Node *) makeJsonBehavior(JSON_BEHAVIOR_TRUE, NULL, @1); }
+			| FALSE_P		{ $$ = (Node *) makeJsonBehavior(JSON_BEHAVIOR_FALSE, NULL, @1); }
+			| UNKNOWN		{ $$ = (Node *) makeJsonBehavior(JSON_BEHAVIOR_UNKNOWN, NULL, @1); }
+			| EMPTY_P ARRAY	{ $$ = (Node *) makeJsonBehavior(JSON_BEHAVIOR_EMPTY_ARRAY, NULL, @1); }
+			| EMPTY_P OBJECT_P	{ $$ = (Node *) makeJsonBehavior(JSON_BEHAVIOR_EMPTY_OBJECT, NULL, @1); }
 			/* non-standard, for Oracle compatibility only */
-			| EMPTY_P		{ $$ = makeJsonBehavior(JSON_BEHAVIOR_EMPTY_ARRAY, NULL, @1); }
+			| EMPTY_P		{ $$ = (Node *) makeJsonBehavior(JSON_BEHAVIOR_EMPTY_ARRAY, NULL, @1); }
 		;
 
 json_behavior_clause_opt:
 			json_behavior ON EMPTY_P
-				{ $$ = makeJsonBehaviorClause($1, NULL, @1); }
+				{ $$ = (Node *) makeJsonBehaviorClause((JsonBehavior *) $1, NULL, @1); }
 			| json_behavior ON ERROR_P
-				{ $$ = makeJsonBehaviorClause(NULL, $1, @1); }
+				{ $$ = (Node *) makeJsonBehaviorClause(NULL, (JsonBehavior *) $1, @1); }
 			| json_behavior ON EMPTY_P json_behavior ON ERROR_P
-				{ $$ = makeJsonBehaviorClause($1, $4, @1); }
+				{ $$ = (Node *) makeJsonBehaviorClause((JsonBehavior *) $1, (JsonBehavior *) $4, @1); }
 			| /* EMPTY */
 				{ $$ = NULL; }
 		;
-- 
2.42.1