diff options
| author | Tom Lane | 2004-08-12 19:12:21 +0000 |
|---|---|---|
| committer | Tom Lane | 2004-08-12 19:12:21 +0000 |
| commit | a583675108e60c55d0d4947d6c474bb9cb166d1a (patch) | |
| tree | 4042917b4f51c18a0803673ec58e7dfad74c689d /src/backend/parser | |
| parent | 10249abfa19a53e9e158396333400ae66ae1c02b (diff) | |
Allow optional SAVEPOINT keyword in RELEASE and ROLLBACK TO, for greater
compliance with SQL2003 spec syntax.
Oliver Jowett
Diffstat (limited to 'src/backend/parser')
| -rw-r--r-- | src/backend/parser/gram.y | 22 |
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; } ; |
