From a7e78b5e9c5cfa191a9580a7b98f6ea663edaa36 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut 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 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 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 json_key_uniqueness_constraint_opt json_object_constructor_null_clause_opt json_array_constructor_null_clause_opt -%type json_behavior -%type 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