BitmapHeapScan uses the read stream API Make Bitmap Heap Scan use the read stream API instead of invoking ReadBuffer() for each block indicated by the bitmap.
The read stream API handles prefetching, so remove all of the explicit prefetching from bitmap heap scan code. Now, heap table AM implements a read stream callback which uses the bitmap iterator to return the next required block to the read stream code. Tomas Vondra conducted extensive regression testing of this feature. Andres Freund, Thomas Munro, and I analyzed regressions and Thomas Munro patched the read stream API. Author: Melanie Plageman <melanieplage...@gmail.com> Reviewed-by: Tomas Vondra <to...@vondra.me> Tested-by: Tomas Vondra <to...@vondra.me> Tested-by: Andres Freund <and...@anarazel.de> Tested-by: Thomas Munro <thomas.mu...@gmail.com> Tested-by: Nazir Bilal Yavuz <byavu...@gmail.com> Discussion: https://postgr.es/m/flat/CAAKRu_ZwCwWFeL_H3ia26bP2e7HiKLWt0ZmGXPVwPO6uXq0vaA%40mail.gmail.com Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/2b73a8cd33b745c5b8a7f44322f86642519e3a40 Modified Files -------------- src/backend/access/heap/heapam.c | 80 +++++++ src/backend/access/heap/heapam_handler.c | 90 ++++---- src/backend/executor/nodeBitmapHeapscan.c | 341 +----------------------------- src/include/access/tableam.h | 25 +-- src/include/nodes/execnodes.h | 23 +- 5 files changed, 124 insertions(+), 435 deletions(-)