summaryrefslogtreecommitdiff
path: root/src/include/utils/tqual.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/utils/tqual.h')
-rw-r--r--src/include/utils/tqual.h41
1 files changed, 21 insertions, 20 deletions
diff --git a/src/include/utils/tqual.h b/src/include/utils/tqual.h
index 070ee9cda1e..a69851e6661 100644
--- a/src/include/utils/tqual.h
+++ b/src/include/utils/tqual.h
@@ -1,14 +1,14 @@
/*-------------------------------------------------------------------------
*
* tqual.h
- * POSTGRES "time" qualification definitions.
+ * POSTGRES "time" qualification definitions, ie, tuple visibility rules.
*
* Should be moved/renamed... - vadim 07/28/98
*
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: tqual.h,v 1.37 2001/11/05 17:46:36 momjian Exp $
+ * $Id: tqual.h,v 1.38 2002/01/16 20:29:02 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -34,6 +34,7 @@ typedef SnapshotData *Snapshot;
#define SnapshotNow ((Snapshot) 0x0)
#define SnapshotSelf ((Snapshot) 0x1)
#define SnapshotAny ((Snapshot) 0x2)
+#define SnapshotToast ((Snapshot) 0x3)
extern DLLIMPORT Snapshot SnapshotDirty;
extern DLLIMPORT Snapshot QuerySnapshot;
@@ -44,37 +45,36 @@ extern bool ReferentialIntegritySnapshotOverride;
#define IsSnapshotNow(snapshot) ((Snapshot) (snapshot) == SnapshotNow)
#define IsSnapshotSelf(snapshot) ((Snapshot) (snapshot) == SnapshotSelf)
#define IsSnapshotAny(snapshot) ((Snapshot) (snapshot) == SnapshotAny)
+#define IsSnapshotToast(snapshot) ((Snapshot) (snapshot) == SnapshotToast)
#define IsSnapshotDirty(snapshot) ((Snapshot) (snapshot) == SnapshotDirty)
/*
* HeapTupleSatisfiesVisibility
- * True iff heap tuple satsifies a time qual.
+ * True iff heap tuple satisfies a time qual.
*
* Notes:
* Assumes heap tuple is valid.
- * Beware of multiple evaluations of arguments.
+ * Beware of multiple evaluations of snapshot argument.
*/
#define HeapTupleSatisfiesVisibility(tuple, snapshot) \
-( \
- TransactionIdEquals((tuple)->t_data->t_xmax, BootstrapTransactionId) ? \
- false \
+(IsSnapshotNow(snapshot) ? \
+ HeapTupleSatisfiesNow((tuple)->t_data) \
+: \
+ (IsSnapshotSelf(snapshot) ? \
+ HeapTupleSatisfiesItself((tuple)->t_data) \
: \
- ( \
- IsSnapshotAny(snapshot) ? \
+ (IsSnapshotAny(snapshot) ? \
true \
: \
- (IsSnapshotSelf(snapshot) ? \
- HeapTupleSatisfiesItself((tuple)->t_data) \
+ (IsSnapshotToast(snapshot) ? \
+ HeapTupleSatisfiesToast((tuple)->t_data) \
: \
- (IsSnapshotNow(snapshot) ? \
- HeapTupleSatisfiesNow((tuple)->t_data) \
+ (IsSnapshotDirty(snapshot) ? \
+ HeapTupleSatisfiesDirty((tuple)->t_data) \
: \
- (IsSnapshotDirty(snapshot) ? \
- HeapTupleSatisfiesDirty((tuple)->t_data) \
- : \
- HeapTupleSatisfiesSnapshot((tuple)->t_data, snapshot) \
- ) \
+ HeapTupleSatisfiesSnapshot((tuple)->t_data, snapshot) \
+ ) \
) \
) \
) \
@@ -93,14 +93,15 @@ typedef enum
HEAPTUPLE_DEAD, /* tuple is dead and deletable */
HEAPTUPLE_LIVE, /* tuple is live (committed, no deleter) */
HEAPTUPLE_RECENTLY_DEAD, /* tuple is dead, but not deletable yet */
- HEAPTUPLE_INSERT_IN_PROGRESS, /* inserting xact is still in
- * progress */
+ HEAPTUPLE_INSERT_IN_PROGRESS, /* inserting xact is still in
+ * progress */
HEAPTUPLE_DELETE_IN_PROGRESS /* deleting xact is still in progress */
} HTSV_Result;
extern bool HeapTupleSatisfiesItself(HeapTupleHeader tuple);
extern bool HeapTupleSatisfiesNow(HeapTupleHeader tuple);
extern bool HeapTupleSatisfiesDirty(HeapTupleHeader tuple);
+extern bool HeapTupleSatisfiesToast(HeapTupleHeader tuple);
extern bool HeapTupleSatisfiesSnapshot(HeapTupleHeader tuple,
Snapshot snapshot);
extern int HeapTupleSatisfiesUpdate(HeapTuple tuple);