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.y22
1 files changed, 19 insertions, 3 deletions
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index eddfb6e80d2..6a27714b05e 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -11,7 +11,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/parser/gram.y,v 2.469 2004/08/02 04:26:35 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/parser/gram.y,v 2.470 2004/08/12 19:12:21 tgl Exp $
*
* HISTORY
* AUTHOR DATE MAJOR EVENT
@@ -3982,6 +3982,14 @@ TransactionStmt:
(Node *)makeString($2)));
$$ = (Node *)n;
}
+ | RELEASE SAVEPOINT ColId
+ {
+ TransactionStmt *n = makeNode(TransactionStmt);
+ n->kind = TRANS_STMT_RELEASE;
+ n->options = list_make1(makeDefElem("savepoint_name",
+ (Node *)makeString($3)));
+ $$ = (Node *)n;
+ }
| RELEASE ColId
{
TransactionStmt *n = makeNode(TransactionStmt);
@@ -3990,12 +3998,20 @@ TransactionStmt:
(Node *)makeString($2)));
$$ = (Node *)n;
}
- | ROLLBACK TO ColId
+ | ROLLBACK opt_transaction TO SAVEPOINT ColId
{
TransactionStmt *n = makeNode(TransactionStmt);
n->kind = TRANS_STMT_ROLLBACK_TO;
n->options = list_make1(makeDefElem("savepoint_name",
- (Node *)makeString($3)));
+ (Node *)makeString($5)));
+ $$ = (Node *)n;
+ }
+ | ROLLBACK opt_transaction TO ColId
+ {
+ TransactionStmt *n = makeNode(TransactionStmt);
+ n->kind = TRANS_STMT_ROLLBACK_TO;
+ n->options = list_make1(makeDefElem("savepoint_name",
+ (Node *)makeString($4)));
$$ = (Node *)n;
}
;