Against CVS HEAD:
test=# select version();
version -----------------------------------------------------------------------------------------------
PostgreSQL 8.0.0beta1 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 3.3.3 (Debian 20040401)
(1 row)
test=# begin; BEGIN test=# savepoint foo; SAVEPOINT test=# rollback to foo; ROLLBACK test=# rollback to savepoint foo; ERROR: syntax error at or near "foo" at character 23 LINE 1: rollback to savepoint foo; ^ test=# rollback; ROLLBACK
test=# begin; BEGIN test=# savepoint foo; SAVEPOINT test=# release foo; RELEASE test=# savepoint foo; SAVEPOINT test=# release savepoint foo; ERROR: syntax error at or near "foo" at character 19 LINE 1: release savepoint foo; ^
Comments:
1) We have a different syntax to the SQL200n draft (and Oracle by the looks of it) for ROLLBACK. The draft says:
<rollback statement> ::= ROLLBACK [ WORK ] [ AND [ NO ] CHAIN ] [ <savepoint clause> ] <savepoint clause> ::= TO SAVEPOINT <savepoint specifier>
2) We have a different syntax for RELEASE too. The SQL200n draft says:
<release savepoint statement> ::= RELEASE SAVEPOINT <savepoint specifier>
3) Can the command tag for a ROLLBACK TO SAVEPOINT be different to the command tag for a global rollback, so clients can distinguish the two cases? ("ROLLBACK <savepoint specifier>" might be nice)
-O
---------------------------(end of broadcast)--------------------------- TIP 5: Have you checked our extensive FAQ?
http://www.postgresql.org/docs/faqs/FAQ.html