diff options
Diffstat (limited to 'src/include/access/tableam.h')
-rw-r--r-- | src/include/access/tableam.h | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/src/include/access/tableam.h b/src/include/access/tableam.h index da661289c1f..be09d180d45 100644 --- a/src/include/access/tableam.h +++ b/src/include/access/tableam.h @@ -796,6 +796,10 @@ typedef struct TableAmRoutine * on the page have to be returned, otherwise the tuples at offsets in * `tbmres->offsets` need to be returned. * + * `lossy_pages` and `exact_pages` are EXPLAIN counters that can be + * incremented by the table AM to indicate whether or not the block's + * representation in the bitmap is lossy. + * * XXX: Currently this may only be implemented if the AM uses md.c as its * storage manager, and uses ItemPointer->ip_blkid in a manner that maps * blockids directly to the underlying storage. nodeBitmapHeapscan.c @@ -811,7 +815,9 @@ typedef struct TableAmRoutine * scan_bitmap_next_tuple need to exist, or neither. */ bool (*scan_bitmap_next_block) (TableScanDesc scan, - struct TBMIterateResult *tbmres); + struct TBMIterateResult *tbmres, + uint64 *lossy_pages, + uint64 *exact_pages); /* * Fetch the next tuple of a bitmap table scan into `slot` and return true @@ -1954,12 +1960,18 @@ table_relation_estimate_size(Relation rel, int32 *attr_widths, * table_beginscan_bm(). Returns false if there are no tuples to be found on * the page, true otherwise. * + * `lossy_pages` and `exact_pages` are EXPLAIN counters that can be + * incremented by the table AM to indicate whether or not the block's + * representation in the bitmap is lossy. + * * Note, this is an optionally implemented function, therefore should only be * used after verifying the presence (at plan time or such). */ static inline bool table_scan_bitmap_next_block(TableScanDesc scan, - struct TBMIterateResult *tbmres) + struct TBMIterateResult *tbmres, + uint64 *lossy_pages, + uint64 *exact_pages) { /* * We don't expect direct calls to table_scan_bitmap_next_block with valid @@ -1970,7 +1982,9 @@ table_scan_bitmap_next_block(TableScanDesc scan, elog(ERROR, "unexpected table_scan_bitmap_next_block call during logical decoding"); return scan->rs_rd->rd_tableam->scan_bitmap_next_block(scan, - tbmres); + tbmres, + lossy_pages, + exact_pages); } /* |