aboutsummaryrefslogtreecommitdiff
path: root/src/include
diff options
context:
space:
mode:
Diffstat (limited to 'src/include')
-rw-r--r--src/include/access/relscan.h11
-rw-r--r--src/include/access/valid.h35
-rw-r--r--src/include/nodes/execnodes.h8
-rw-r--r--src/include/utils/tqual.h16
4 files changed, 25 insertions, 45 deletions
diff --git a/src/include/access/relscan.h b/src/include/access/relscan.h
index 88f4078d24b..c0b7c92cd53 100644
--- a/src/include/access/relscan.h
+++ b/src/include/access/relscan.h
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/include/access/relscan.h,v 1.41 2005/10/15 02:49:42 momjian Exp $
+ * $PostgreSQL: pgsql/src/include/access/relscan.h,v 1.42 2005/11/26 03:03:07 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -26,14 +26,23 @@ typedef struct HeapScanDescData
int rs_nkeys; /* number of scan keys */
ScanKey rs_key; /* array of scan key descriptors */
BlockNumber rs_nblocks; /* number of blocks to scan */
+ bool rs_pageatatime; /* verify visibility page-at-a-time? */
/* scan current state */
+ bool rs_inited; /* false = scan not init'd yet */
HeapTupleData rs_ctup; /* current tuple in scan, if any */
+ BlockNumber rs_cblock; /* current block # in scan, if any */
Buffer rs_cbuf; /* current buffer in scan, if any */
/* NB: if rs_cbuf is not InvalidBuffer, we hold a pin on that buffer */
ItemPointerData rs_mctid; /* marked scan position, if any */
PgStat_Info rs_pgstat_info; /* statistics collector hook */
+
+ /* these fields only used in page-at-a-time mode */
+ int rs_cindex; /* current tuple's index in vistuples */
+ int rs_mindex; /* marked tuple's saved index */
+ int rs_ntuples; /* number of visible tuples on page */
+ OffsetNumber rs_vistuples[MaxHeapTuplesPerPage]; /* their offsets */
} HeapScanDescData;
typedef HeapScanDescData *HeapScanDesc;
diff --git a/src/include/access/valid.h b/src/include/access/valid.h
index 8309c699178..cb9c6369a12 100644
--- a/src/include/access/valid.h
+++ b/src/include/access/valid.h
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/include/access/valid.h,v 1.36 2004/12/31 22:03:21 pgsql Exp $
+ * $PostgreSQL: pgsql/src/include/access/valid.h,v 1.37 2005/11/26 03:03:07 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -65,37 +65,4 @@ do \
} \
} while (0)
-/*
- * HeapTupleSatisfies
- *
- * res is set TRUE if the HeapTuple satisfies the timequal and keytest,
- * otherwise it is set FALSE. Note that the hint bits in the HeapTuple's
- * t_infomask may be updated as a side effect.
- *
- * on 8/21/92 mao says: i rearranged the tests here to do keytest before
- * SatisfiesTimeQual. profiling indicated that even for vacuumed relations,
- * time qual checking was more expensive than key testing. time qual is
- * least likely to fail, too. we should really add the time qual test to
- * the restriction and optimize it in the normal way. this has interactions
- * with joey's expensive function work.
- */
-#define HeapTupleSatisfies(tuple, \
- relation, \
- buffer, \
- disk_page, \
- snapshot, \
- nKeys, \
- key, \
- res) \
-do \
-{ \
- if ((key) != NULL) \
- HeapKeyTest(tuple, RelationGetDescr(relation), nKeys, key, res); \
- else \
- (res) = true; \
- \
- if ((res) && (relation)->rd_rel->relkind != RELKIND_UNCATALOGED) \
- (res) = HeapTupleSatisfiesVisibility(tuple, snapshot, buffer); \
-} while (0)
-
#endif /* VALID_H */
diff --git a/src/include/nodes/execnodes.h b/src/include/nodes/execnodes.h
index f70847798e6..82f182c3497 100644
--- a/src/include/nodes/execnodes.h
+++ b/src/include/nodes/execnodes.h
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/include/nodes/execnodes.h,v 1.142 2005/11/25 19:47:50 tgl Exp $
+ * $PostgreSQL: pgsql/src/include/nodes/execnodes.h,v 1.143 2005/11/26 03:03:07 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -958,9 +958,6 @@ typedef struct BitmapIndexScanState
* bitmapqualorig execution state for bitmapqualorig expressions
* tbm bitmap obtained from child index scan(s)
* tbmres current-page data
- * curslot current tbmres index or tuple offset on page
- * minslot lowest tbmres index or tuple offset to try
- * maxslot highest tbmres index or tuple offset to try
* ----------------
*/
typedef struct BitmapHeapScanState
@@ -969,9 +966,6 @@ typedef struct BitmapHeapScanState
List *bitmapqualorig;
TIDBitmap *tbm;
TBMIterateResult *tbmres;
- int curslot;
- int minslot;
- int maxslot;
} BitmapHeapScanState;
/* ----------------
diff --git a/src/include/utils/tqual.h b/src/include/utils/tqual.h
index bfd51cb72e6..5e3efa17967 100644
--- a/src/include/utils/tqual.h
+++ b/src/include/utils/tqual.h
@@ -8,7 +8,7 @@
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/include/utils/tqual.h,v 1.59 2005/10/15 02:49:46 momjian Exp $
+ * $PostgreSQL: pgsql/src/include/utils/tqual.h,v 1.60 2005/11/26 03:03:07 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -55,6 +55,15 @@ typedef SnapshotData *Snapshot;
extern DLLIMPORT Snapshot SnapshotDirty;
+/* This macro encodes the knowledge of which snapshots are MVCC-safe */
+#define IsMVCCSnapshot(snapshot) \
+ ((snapshot) != SnapshotNow && \
+ (snapshot) != SnapshotSelf && \
+ (snapshot) != SnapshotAny && \
+ (snapshot) != SnapshotToast && \
+ (snapshot) != SnapshotDirty)
+
+
extern DLLIMPORT Snapshot SerializableSnapshot;
extern DLLIMPORT Snapshot LatestSnapshot;
extern DLLIMPORT Snapshot ActiveSnapshot;
@@ -69,8 +78,9 @@ extern TransactionId RecentGlobalXmin;
* True iff heap tuple satisfies a time qual.
*
* Notes:
- * Assumes heap tuple is valid.
- * Beware of multiple evaluations of snapshot argument.
+ * Assumes heap tuple is valid.
+ * Beware of multiple evaluations of snapshot argument.
+ * Hint bits in the HeapTuple's t_infomask may be updated as a side effect.
*/
#define HeapTupleSatisfiesVisibility(tuple, snapshot, buffer) \
((snapshot) == SnapshotNow ? \