1
0
mirror of https://github.com/postgres/postgres.git synced 2025-08-31 17:02:12 +03:00

Allow optional SAVEPOINT keyword in RELEASE and ROLLBACK TO, for greater

compliance with SQL2003 spec syntax.

Oliver Jowett
This commit is contained in:
Tom Lane
2004-08-12 19:12:21 +00:00
parent 10249abfa1
commit a583675108
8 changed files with 118 additions and 94 deletions

View File

@@ -1,21 +1,21 @@
<!--
$PostgreSQL: pgsql/doc/src/sgml/ref/rollback_to.sgml,v 1.1 2004/08/01 17:32:13 tgl Exp $
$PostgreSQL: pgsql/doc/src/sgml/ref/rollback_to.sgml,v 1.2 2004/08/12 19:12:21 tgl Exp $
PostgreSQL documentation
-->
<refentry id="SQL-ROLLBACK-TO">
<refmeta>
<refentrytitle id="SQL-ROLLBACK-TO-TITLE">ROLLBACK TO</refentrytitle>
<refentrytitle id="SQL-ROLLBACK-TO-TITLE">ROLLBACK TO SAVEPOINT</refentrytitle>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>ROLLBACK TO</refname>
<refname>ROLLBACK TO SAVEPOINT</refname>
<refpurpose>roll back to a savepoint</refpurpose>
</refnamediv>
<indexterm zone="sql-rollback-to">
<primary>ROLLBACK TO</primary>
<primary>ROLLBACK TO SAVEPOINT</primary>
</indexterm>
<indexterm zone="sql-rollback-to">
@@ -25,7 +25,7 @@ PostgreSQL documentation
<refsynopsisdiv>
<synopsis>
ROLLBACK TO <replaceable>savepoint_name</replaceable>
ROLLBACK [ WORK | TRANSACTION ] TO [ SAVEPOINT ] <replaceable>savepoint_name</replaceable>
</synopsis>
</refsynopsisdiv>
@@ -39,7 +39,7 @@ ROLLBACK TO <replaceable>savepoint_name</replaceable>
</para>
<para>
<command>ROLLBACK TO</> implicitly destroys all savepoints that
<command>ROLLBACK TO SAVEPOINT</> implicitly destroys all savepoints that
were established after the named savepoint.
</para>
</refsect1>
@@ -63,9 +63,9 @@ ROLLBACK TO <replaceable>savepoint_name</replaceable>
<title>Notes</title>
<para>
Use <xref linkend="SQL-RELEASE" endterm="SQL-RELEASE-TITLE"> to
destroy a savepoint without discarding the effects of commands executed
after it was established.
Use <xref linkend="SQL-RELEASE-SAVEPOINT"
endterm="SQL-RELEASE-SAVEPOINT-TITLE"> to destroy a savepoint without
discarding the effects of commands executed after it was established.
</para>
<para>
@@ -81,7 +81,7 @@ ROLLBACK TO <replaceable>savepoint_name</replaceable>
left it pointing to (that is, <command>FETCH</> is not rolled back).
A cursor whose execution causes a transaction to abort is put in a
can't-execute state, so while the transaction can be restored using
<command>ROLLBACK TO</>, the cursor can no longer be used.
<command>ROLLBACK TO SAVEPOINT</>, the cursor can no longer be used.
</para>
</refsect1>
@@ -92,7 +92,7 @@ ROLLBACK TO <replaceable>savepoint_name</replaceable>
To undo the effects of the commands executed after <literal>my_savepoint</literal>
was established:
<programlisting>
ROLLBACK TO my_savepoint;
ROLLBACK TO SAVEPOINT my_savepoint;
</programlisting>
</para>
@@ -110,7 +110,7 @@ FETCH 1 FROM foo;
----------
1
ROLLBACK TO foo;
ROLLBACK TO SAVEPOINT foo;
FETCH 1 FROM foo;
?column?
@@ -128,7 +128,13 @@ COMMIT;
<title>Compatibility</title>
<para>
This command is fully SQL standard conforming.
The SQL2003 standard specifies that the keyword SAVEPOINT is mandatory.
<productname>PostgreSQL</productname> and <productname>Oracle</productname>
allow the SAVEPOINT keyword to be omitted. SQL2003 allows only
WORK, not TRANSACTION, as a noise word after ROLLBACK. Also, SQL2003
has an optional clause AND [ NO ] CHAIN which is not currently supported
by <productname>PostgreSQL</productname>. Otherwise, this command is
fully conforming.
</para>
</refsect1>
@@ -139,7 +145,7 @@ COMMIT;
<member><xref linkend="sql-begin" endterm="sql-begin-title"></member>
<member><xref linkend="sql-commit" endterm="sql-commit-title"></member>
<member><xref linkend="sql-savepoint" endterm="sql-savepoint-title"></member>
<member><xref linkend="sql-release" endterm="sql-release-title"></member>
<member><xref linkend="sql-release-savepoint" endterm="sql-release-savepoint-title"></member>
<member><xref linkend="sql-rollback" endterm="sql-rollback-title"></member>
</simplelist>
</refsect1>