aboutsummaryrefslogtreecommitdiff
path: root/src/backend/parser/gram.y
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/parser/gram.y')
-rw-r--r--src/backend/parser/gram.y158
1 files changed, 1 insertions, 157 deletions
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index 583ee321e1d..cd5ba2d4d8d 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -282,7 +282,6 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query);
CreateMatViewStmt RefreshMatViewStmt CreateAmStmt
CreatePublicationStmt AlterPublicationStmt
CreateSubscriptionStmt AlterSubscriptionStmt DropSubscriptionStmt
- MergeStmt
%type <node> select_no_parens select_with_parens select_clause
simple_select values_clause
@@ -585,10 +584,6 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query);
%type <list> hash_partbound partbound_datum_list range_datum_list
%type <defelt> hash_partbound_elem
-%type <node> merge_when_clause opt_and_condition
-%type <list> merge_when_list
-%type <node> merge_update merge_delete merge_insert
-
/*
* Non-keyword token types. These are hard-wired into the "flex" lexer.
* They must be listed first so that their numeric codes do not depend on
@@ -656,8 +651,7 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query);
LEADING LEAKPROOF LEAST LEFT LEVEL LIKE LIMIT LISTEN LOAD LOCAL
LOCALTIME LOCALTIMESTAMP LOCATION LOCK_P LOCKED LOGGED
- MAPPING MATCH MATCHED MATERIALIZED MAXVALUE MERGE METHOD
- MINUTE_P MINVALUE MODE MONTH_P MOVE
+ MAPPING MATCH MATERIALIZED MAXVALUE METHOD MINUTE_P MINVALUE MODE MONTH_P MOVE
NAME_P NAMES NATIONAL NATURAL NCHAR NEW NEXT NO NONE
NOT NOTHING NOTIFY NOTNULL NOWAIT NULL_P NULLIF
@@ -926,7 +920,6 @@ stmt :
| RefreshMatViewStmt
| LoadStmt
| LockStmt
- | MergeStmt
| NotifyStmt
| PrepareStmt
| ReassignOwnedStmt
@@ -10667,7 +10660,6 @@ ExplainableStmt:
| InsertStmt
| UpdateStmt
| DeleteStmt
- | MergeStmt
| DeclareCursorStmt
| CreateAsStmt
| CreateMatViewStmt
@@ -10730,7 +10722,6 @@ PreparableStmt:
| InsertStmt
| UpdateStmt
| DeleteStmt /* by default all are $$=$1 */
- | MergeStmt
;
/*****************************************************************************
@@ -11100,151 +11091,6 @@ set_target_list:
/*****************************************************************************
*
* QUERY:
- * MERGE STATEMENTS
- *
- *****************************************************************************/
-
-MergeStmt:
- MERGE INTO relation_expr_opt_alias
- USING table_ref
- ON a_expr
- merge_when_list
- {
- MergeStmt *m = makeNode(MergeStmt);
-
- m->relation = $3;
- m->source_relation = $5;
- m->join_condition = $7;
- m->mergeActionList = $8;
-
- $$ = (Node *)m;
- }
- ;
-
-
-merge_when_list:
- merge_when_clause { $$ = list_make1($1); }
- | merge_when_list merge_when_clause { $$ = lappend($1,$2); }
- ;
-
-merge_when_clause:
- WHEN MATCHED opt_and_condition THEN merge_update
- {
- MergeAction *m = makeNode(MergeAction);
-
- m->matched = true;
- m->commandType = CMD_UPDATE;
- m->condition = $3;
- m->stmt = $5;
-
- $$ = (Node *)m;
- }
- | WHEN MATCHED opt_and_condition THEN merge_delete
- {
- MergeAction *m = makeNode(MergeAction);
-
- m->matched = true;
- m->commandType = CMD_DELETE;
- m->condition = $3;
- m->stmt = $5;
-
- $$ = (Node *)m;
- }
- | WHEN NOT MATCHED opt_and_condition THEN merge_insert
- {
- MergeAction *m = makeNode(MergeAction);
-
- m->matched = false;
- m->commandType = CMD_INSERT;
- m->condition = $4;
- m->stmt = $6;
-
- $$ = (Node *)m;
- }
- | WHEN NOT MATCHED opt_and_condition THEN DO NOTHING
- {
- MergeAction *m = makeNode(MergeAction);
-
- m->matched = false;
- m->commandType = CMD_NOTHING;
- m->condition = $4;
- m->stmt = NULL;
-
- $$ = (Node *)m;
- }
- ;
-
-opt_and_condition:
- AND a_expr { $$ = $2; }
- | { $$ = NULL; }
- ;
-
-merge_delete:
- DELETE_P
- {
- DeleteStmt *n = makeNode(DeleteStmt);
- $$ = (Node *)n;
- }
- ;
-
-merge_update:
- UPDATE SET set_clause_list
- {
- UpdateStmt *n = makeNode(UpdateStmt);
- n->targetList = $3;
-
- $$ = (Node *)n;
- }
- ;
-
-merge_insert:
- INSERT values_clause
- {
- InsertStmt *n = makeNode(InsertStmt);
- n->cols = NIL;
- n->selectStmt = $2;
-
- $$ = (Node *)n;
- }
- | INSERT OVERRIDING override_kind VALUE_P values_clause
- {
- InsertStmt *n = makeNode(InsertStmt);
- n->cols = NIL;
- n->override = $3;
- n->selectStmt = $5;
-
- $$ = (Node *)n;
- }
- | INSERT '(' insert_column_list ')' values_clause
- {
- InsertStmt *n = makeNode(InsertStmt);
- n->cols = $3;
- n->selectStmt = $5;
-
- $$ = (Node *)n;
- }
- | INSERT '(' insert_column_list ')' OVERRIDING override_kind VALUE_P values_clause
- {
- InsertStmt *n = makeNode(InsertStmt);
- n->cols = $3;
- n->override = $6;
- n->selectStmt = $8;
-
- $$ = (Node *)n;
- }
- | INSERT DEFAULT VALUES
- {
- InsertStmt *n = makeNode(InsertStmt);
- n->cols = NIL;
- n->selectStmt = NULL;
-
- $$ = (Node *)n;
- }
- ;
-
-/*****************************************************************************
- *
- * QUERY:
* CURSOR STATEMENTS
*
*****************************************************************************/
@@ -15242,10 +15088,8 @@ unreserved_keyword:
| LOGGED
| MAPPING
| MATCH
- | MATCHED
| MATERIALIZED
| MAXVALUE
- | MERGE
| METHOD
| MINUTE_P
| MINVALUE