summaryrefslogtreecommitdiff
path: root/src/include
diff options
context:
space:
mode:
authorAlvaro Herrera2009-10-02 17:57:30 +0000
committerAlvaro Herrera2009-10-02 17:57:30 +0000
commitcaa4cfa3697472a6673eb817eb34681684cba14f (patch)
tree8da52acab9865afa01f6771a33f3eb9a5952b6fa /src/include
parentfabf75cffc34b187aba57b0d3a086ebec586d016 (diff)
Ensure that a cursor has an immutable snapshot throughout its lifespan.
The old coding was using a regular snapshot, referenced elsewhere, that was subject to having its command counter updated. Fix by creating a private copy of the snapshot exclusively for the cursor. Backpatch to 8.4, which is when the bug was introduced during the snapshot management rewrite.
Diffstat (limited to 'src/include')
-rw-r--r--src/include/utils/snapmgr.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/include/utils/snapmgr.h b/src/include/utils/snapmgr.h
index 979a52c6224..a82e53bb17a 100644
--- a/src/include/utils/snapmgr.h
+++ b/src/include/utils/snapmgr.h
@@ -6,7 +6,7 @@
* Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/include/utils/snapmgr.h,v 1.5 2009/06/11 14:49:13 momjian Exp $
+ * $PostgreSQL: pgsql/src/include/utils/snapmgr.h,v 1.6 2009/10/02 17:57:30 alvherre Exp $
*
*-------------------------------------------------------------------------
*/
@@ -26,6 +26,7 @@ extern TransactionId RecentGlobalXmin;
extern Snapshot GetTransactionSnapshot(void);
extern Snapshot GetLatestSnapshot(void);
extern void SnapshotSetCommandId(CommandId curcid);
+extern Snapshot CopySnapshot(Snapshot snapshot);
extern void PushActiveSnapshot(Snapshot snapshot);
extern void PushUpdatedSnapshot(Snapshot snapshot);