From aa060cd7140c63514ef67fac552fafdd1ece7efc Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Wed, 26 Jan 2005 23:20:37 +0000 Subject: Close all cursors created during a failed subtransaction. This is needed to avoid problems when a cursor depends on objects created or changed in the same subtransaction. We'd like to do better someday, but this seems the only workable answer for 8.0.1. --- doc/src/sgml/ref/rollback_to.sgml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'doc/src') diff --git a/doc/src/sgml/ref/rollback_to.sgml b/doc/src/sgml/ref/rollback_to.sgml index 0b87dc1a6bb..aa204e2f9a9 100644 --- a/doc/src/sgml/ref/rollback_to.sgml +++ b/doc/src/sgml/ref/rollback_to.sgml @@ -1,5 +1,5 @@ @@ -74,11 +74,13 @@ ROLLBACK [ WORK | TRANSACTION ] TO [ SAVEPOINT ] savepoint_name Cursors have somewhat non-transactional behavior with respect to - savepoints. Any cursor that is opened inside the savepoint is not closed - when the savepoint is rolled back. If a cursor is affected by a + savepoints. Any cursor that is opened inside a savepoint will be closed + when the savepoint is rolled back. If a previously opened cursor is + affected by a FETCH command inside a savepoint that is later rolled back, the cursor position remains at the position that FETCH left it pointing to (that is, FETCH is not rolled back). + Closing a cursor is not undone by rolling back, either. 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 ROLLBACK TO SAVEPOINT, the cursor can no longer be used. -- cgit v1.2.3