diff options
Diffstat (limited to 'src/include/utils/tqual.h')
-rw-r--r-- | src/include/utils/tqual.h | 41 |
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); |