Separate TBM[Shared|Private]Iterator and TBMIterateResult
authorMelanie Plageman <melanieplageman@gmail.com>
Sat, 15 Mar 2025 14:10:51 +0000 (10:10 -0400)
committerMelanie Plageman <melanieplageman@gmail.com>
Sat, 15 Mar 2025 14:11:19 +0000 (10:11 -0400)
commit944e81bf99db2b5b70b8a389d4f273534da73f74
treeaef5b3e8d864fcdccc81ea1688b7a1ab8e7fbdf1
parent799959dc7cf0e2462601bea8d07b6edec3fa0c4f
Separate TBM[Shared|Private]Iterator and TBMIterateResult

Remove the TBMIterateResult member from the TBMPrivateIterator and
TBMSharedIterator and make tbm_[shared|private_]iterate() take a
TBMIterateResult as a parameter.

This allows tidbitmap API users to manage multiple TBMIterateResults per
scan. This is required for bitmap heap scan to use the read stream API,
with which there may be multiple I/Os in flight at once, each one with a
TBMIterateResult.

Reviewed-by: Tomas Vondra <tomas@vondra.me>
Discussion: https://postgr.es/m/d4bb26c9-fe07-439e-ac53-c0e244387e01%40vondra.me
src/backend/access/gin/ginget.c
src/backend/access/gin/ginscan.c
src/backend/access/heap/heapam_handler.c
src/backend/executor/nodeBitmapHeapscan.c
src/backend/nodes/tidbitmap.c
src/include/access/gin_private.h
src/include/nodes/tidbitmap.h