mirror of
https://github.com/postgres/postgres.git
synced 2025-10-25 13:17:41 +03:00
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
This commit is contained in:
@@ -354,7 +354,12 @@ typedef struct GinScanEntryData
|
||||
/* for a partial-match or full-scan query, we accumulate all TIDs here */
|
||||
TIDBitmap *matchBitmap;
|
||||
TBMPrivateIterator *matchIterator;
|
||||
TBMIterateResult *matchResult;
|
||||
|
||||
/*
|
||||
* If blockno is InvalidBlockNumber, all of the other fields in the
|
||||
* matchResult are meaningless.
|
||||
*/
|
||||
TBMIterateResult matchResult;
|
||||
OffsetNumber matchOffsets[TBM_MAX_TUPLES_PER_PAGE];
|
||||
int matchNtuples;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user