summaryrefslogtreecommitdiff
path: root/src/include/access/relscan.h
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2007-06-09 18:49:55 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2007-06-09 18:49:55 +0000
commit85d72f05167b87bc44464b2eabea8538f1fd1e45 (patch)
treefc7af5457fa0611971618803ffa6f47396d3a183 /src/include/access/relscan.h
parent7063c46fc18e2987b655b0bc7531128633daac7e (diff)
downloadpostgresql-85d72f05167b87bc44464b2eabea8538f1fd1e45.tar.gz
Teach heapam code to know the difference between a real seqscan and the
pseudo HeapScanDesc created for a bitmap heap scan. This avoids some useless overhead during a bitmap scan startup, in particular invoking the syncscan code. (We might someday want to do that, but right now it's merely useless contention for shared memory, to say nothing of possibly pushing useful entries out of syncscan's small LRU list.) This also allows elimination of ugly pgstat_discount_heap_scan() kluge.
Diffstat (limited to 'src/include/access/relscan.h')
-rw-r--r--src/include/access/relscan.h7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/include/access/relscan.h b/src/include/access/relscan.h
index b45b2caabf..15b9b8a337 100644
--- a/src/include/access/relscan.h
+++ b/src/include/access/relscan.h
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/include/access/relscan.h,v 1.55 2007/06/08 18:23:53 tgl Exp $
+ * $PostgreSQL: pgsql/src/include/access/relscan.h,v 1.56 2007/06/09 18:49:55 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -26,12 +26,13 @@ typedef struct HeapScanDescData
Snapshot rs_snapshot; /* snapshot to see */
int rs_nkeys; /* number of scan keys */
ScanKey rs_key; /* array of scan key descriptors */
+ bool rs_bitmapscan; /* true if this is really a bitmap scan */
+ bool rs_pageatatime; /* verify visibility page-at-a-time? */
/* state set up at initscan time */
BlockNumber rs_nblocks; /* number of blocks to scan */
BlockNumber rs_startblock; /* block # to start at */
BufferAccessStrategy rs_strategy; /* access strategy for reads */
- bool rs_pageatatime; /* verify visibility page-at-a-time? */
bool rs_syncscan; /* report location to syncscan logic? */
/* scan current state */
@@ -42,7 +43,7 @@ typedef struct HeapScanDescData
/* NB: if rs_cbuf is not InvalidBuffer, we hold a pin on that buffer */
ItemPointerData rs_mctid; /* marked scan position, if any */
- /* these fields only used in page-at-a-time mode */
+ /* these fields only used in page-at-a-time mode and for bitmap scans */
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 */