From ccd5d688fd5c1dd16908788e0a0abd0f3e64eb77 Mon Sep 17 00:00:00 2001 From: Melanie Plageman Date: Tue, 13 Feb 2024 10:17:47 -0500 Subject: [PATCH v1 08/11] Reduce scope of BitmapHeapScan tbmiterator local variables To simplify the diff of a future commit which will move the TBMIterators into the scan descriptor, define them in a narrower scope now. --- src/backend/executor/nodeBitmapHeapscan.c | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/src/backend/executor/nodeBitmapHeapscan.c b/src/backend/executor/nodeBitmapHeapscan.c index 19d115de06f..4d55390715c 100644 --- a/src/backend/executor/nodeBitmapHeapscan.c +++ b/src/backend/executor/nodeBitmapHeapscan.c @@ -76,8 +76,6 @@ BitmapHeapNext(BitmapHeapScanState *node) ExprContext *econtext; TableScanDesc scan; TIDBitmap *tbm; - TBMIterator *tbmiterator = NULL; - TBMSharedIterator *shared_tbmiterator = NULL; TBMIterateResult *tbmres; TupleTableSlot *slot; ParallelBitmapHeapState *pstate = node->pstate; @@ -90,10 +88,6 @@ BitmapHeapNext(BitmapHeapScanState *node) slot = node->ss.ss_ScanTupleSlot; scan = node->ss.ss_currentScanDesc; tbm = node->tbm; - if (pstate == NULL) - tbmiterator = node->tbmiterator; - else - shared_tbmiterator = node->shared_tbmiterator; tbmres = node->tbmres; /* @@ -111,6 +105,8 @@ BitmapHeapNext(BitmapHeapScanState *node) if (!node->initialized) { bool can_skip_fetch; + TBMIterator *tbmiterator = NULL; + TBMSharedIterator *shared_tbmiterator = NULL; /* * We can potentially skip fetching heap pages if we do not need any * columns of the table, either for checking non-indexable quals or @@ -129,7 +125,7 @@ BitmapHeapNext(BitmapHeapScanState *node) elog(ERROR, "unrecognized result from subplan"); node->tbm = tbm; - node->tbmiterator = tbmiterator = tbm_begin_iterate(tbm); + tbmiterator = tbm_begin_iterate(tbm); node->tbmres = tbmres = NULL; #ifdef USE_PREFETCH @@ -182,8 +178,7 @@ BitmapHeapNext(BitmapHeapScanState *node) } /* Allocate a private iterator and attach the shared state to it */ - node->shared_tbmiterator = shared_tbmiterator = - tbm_attach_shared_iterate(dsa, pstate->tbmiterator); + shared_tbmiterator = tbm_attach_shared_iterate(dsa, pstate->tbmiterator); node->tbmres = tbmres = NULL; #ifdef USE_PREFETCH @@ -206,6 +201,8 @@ BitmapHeapNext(BitmapHeapScanState *node) can_skip_fetch); } + node->tbmiterator = tbmiterator; + node->shared_tbmiterator = shared_tbmiterator; node->initialized = true; } @@ -219,9 +216,9 @@ BitmapHeapNext(BitmapHeapScanState *node) if (tbmres == NULL) { if (!pstate) - node->tbmres = tbmres = tbm_iterate(tbmiterator); + node->tbmres = tbmres = tbm_iterate(node->tbmiterator); else - node->tbmres = tbmres = tbm_shared_iterate(shared_tbmiterator); + node->tbmres = tbmres = tbm_shared_iterate(node->shared_tbmiterator); if (tbmres == NULL) { /* no more entries in the bitmap */ -- 2.37.2