BitmapHeapScan: Push skip_fetch optimization into table AM Commit 7c70996ebf0949b142 introduced an optimization to allow bitmap scans to operate like index-only scans by not fetching a block from the heap if none of the underlying data is needed and the block is marked all visible in the visibility map.
With the introduction of table AMs, a FIXME was added to this code indicating that the skip_fetch logic should be pushed into the table AM-specific code, as not all table AMs may use a visibility map in the same way. This commit resolves this FIXME for the current block. The layering violation is still present in BitmapHeapScans's prefetching code, which uses the visibility map to decide whether or not to prefetch a block. However, this can be addressed independently. Author: Melanie Plageman Reviewed-by: Andres Freund, Heikki Linnakangas, Tomas Vondra, Mark Dilger Discussion: https://postgr.es/m/CAAKRu_ZwCwWFeL_H3ia26bP2e7HiKLWt0ZmGXPVwPO6uXq0vaA%40mail.gmail.com Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/04e72ed617be354a53a076b76c6644e364ed80a3 Modified Files -------------- src/backend/access/heap/heapam.c | 15 ++++ src/backend/access/heap/heapam_handler.c | 29 +++++++ src/backend/executor/nodeBitmapHeapscan.c | 124 ++++++++++-------------------- src/include/access/heapam.h | 10 +++ src/include/access/tableam.h | 12 ++- src/include/nodes/execnodes.h | 8 +- 6 files changed, 105 insertions(+), 93 deletions(-)