pgsql: BitmapHeapScan uses the read stream API - Mailing list pgsql-committers

From Melanie Plageman
Subject pgsql: BitmapHeapScan uses the read stream API
Date
Msg-id E1ttSbb-002bpI-1g@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
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 <melanieplageman@gmail.com>
Reviewed-by: Tomas Vondra <tomas@vondra.me>
Tested-by: Tomas Vondra <tomas@vondra.me>
Tested-by: Andres Freund <andres@anarazel.de>
Tested-by: Thomas Munro <thomas.munro@gmail.com>
Tested-by: Nazir Bilal Yavuz <byavuz81@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(-)


pgsql-committers by date:

Previous
From: Melanie Plageman
Date:
Subject: pgsql: Separate TBM[Shared|Private]Iterator and TBMIterateResult
Next
From: Melanie Plageman
Date:
Subject: pgsql: Remove table AM callback scan_bitmap_next_block