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 | |
| 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')
| -rw-r--r-- | src/backend/parser/gram.y | 22 | ||||
| -rw-r--r-- | src/backend/tcop/utility.c | 6 |
2 files changed, 22 insertions, 6 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; } ; diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c index b9c50d7d81c..89ac4843ba8 100644 --- a/src/backend/tcop/utility.c +++ b/src/backend/tcop/utility.c @@ -10,7 +10,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/tcop/utility.c,v 1.223 2004/08/02 01:30:45 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/tcop/utility.c,v 1.224 2004/08/12 19:12:21 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -388,12 +388,12 @@ ProcessUtility(Node *parsetree, break; case TRANS_STMT_RELEASE: - RequireTransactionChain((void *)stmt, "RELEASE"); + RequireTransactionChain((void *)stmt, "RELEASE SAVEPOINT"); ReleaseSavepoint(stmt->options); break; case TRANS_STMT_ROLLBACK_TO: - RequireTransactionChain((void *)stmt, "ROLLBACK TO"); + RequireTransactionChain((void *)stmt, "ROLLBACK TO SAVEPOINT"); RollbackToSavepoint(stmt->options); /* * CommitTransactionCommand is in charge |
