diff options
author | Bruce Momjian <bruce@momjian.us> | 2022-07-14 15:44:22 -0400 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 2022-07-14 15:44:22 -0400 |
commit | 85e32877f1d747edf853ced703f6337fadb965a8 (patch) | |
tree | b51a74ba4579670faedc4cf33df93207ce79344f | |
parent | ebf06040e52262b876069f3e515c1c09b96084b0 (diff) | |
download | postgresql-85e32877f1d747edf853ced703f6337fadb965a8.tar.gz postgresql-85e32877f1d747edf853ced703f6337fadb965a8.zip |
doc: clarify the behavior of identically-named savepoints
Original patch by David G. Johnston.
Reported-by: David G. Johnston
Discussion: https://postgr.es/m/CAKFQuwYQCxSSuSL18skCWG8QHFswOJ3hjovHsOZUE346i4OpVQ@mail.gmail.com
Backpatch-through: 10
-rw-r--r-- | doc/src/sgml/ref/release_savepoint.sgml | 5 | ||||
-rw-r--r-- | doc/src/sgml/ref/savepoint.sgml | 30 |
2 files changed, 32 insertions, 3 deletions
diff --git a/doc/src/sgml/ref/release_savepoint.sgml b/doc/src/sgml/ref/release_savepoint.sgml index 39665d28efa..daf8eb9a436 100644 --- a/doc/src/sgml/ref/release_savepoint.sgml +++ b/doc/src/sgml/ref/release_savepoint.sgml @@ -82,8 +82,9 @@ RELEASE [ SAVEPOINT ] <replaceable>savepoint_name</replaceable> </para> <para> - If multiple savepoints have the same name, only the one that was most - recently defined is released. + If multiple savepoints have the same name, only the most recently defined + unreleased one is released. Repeated commands will release progressively + older savepoints. </para> </refsect1> diff --git a/doc/src/sgml/ref/savepoint.sgml b/doc/src/sgml/ref/savepoint.sgml index 87243b1d204..860a6a19c4e 100644 --- a/doc/src/sgml/ref/savepoint.sgml +++ b/doc/src/sgml/ref/savepoint.sgml @@ -53,7 +53,9 @@ SAVEPOINT <replaceable>savepoint_name</replaceable> <term><replaceable>savepoint_name</replaceable></term> <listitem> <para> - The name to give to the new savepoint. + The name to give to the new savepoint. If savepoints with the + same name already exist, they will be inaccessible until newer + identically-named savepoints are released. </para> </listitem> </varlistentry> @@ -106,6 +108,32 @@ COMMIT; </programlisting> The above transaction will insert both 3 and 4. </para> + + <para> + To use a single savepoint name: +<programlisting> +BEGIN; + INSERT INTO table1 VALUES (1); + SAVEPOINT my_savepoint; + INSERT INTO table1 VALUES (2); + SAVEPOINT my_savepoint; + INSERT INTO table1 VALUES (3); + + -- rollback to the second savepoint + ROLLBACK TO SAVEPOINT my_savepoint; + SELECT * FROM table1; -- shows rows 1 and 2 + + -- release the second savepoint + RELEASE SAVEPOINT my_savepoint; + + -- rollback to the first savepoint + ROLLBACK TO SAVEPOINT my_savepoint; + SELECT * FROM table1; -- shows only row 1 +COMMIT; +</programlisting> + The above transaction shows row 3 being rolled back first, then row 2. + </para> + </refsect1> <refsect1> |