diff options
Diffstat (limited to 'src/backend/access')
-rw-r--r-- | src/backend/access/gin/ginget.c | 6 | ||||
-rw-r--r-- | src/backend/access/heap/heapam_handler.c | 10 |
2 files changed, 9 insertions, 7 deletions
diff --git a/src/backend/access/gin/ginget.c b/src/backend/access/gin/ginget.c index 63dd1f3679f..54aecc1d1f1 100644 --- a/src/backend/access/gin/ginget.c +++ b/src/backend/access/gin/ginget.c @@ -827,7 +827,7 @@ entryGetItem(GinState *ginstate, GinScanEntry entry, * in the bitmap. */ while (entry->matchResult == NULL || - (entry->matchResult->ntuples >= 0 && + (!entry->matchResult->lossy && entry->offset >= entry->matchResult->ntuples) || entry->matchResult->blockno < advancePastBlk || (ItemPointerIsLossyPage(&advancePast) && @@ -860,7 +860,7 @@ entryGetItem(GinState *ginstate, GinScanEntry entry, * We're now on the first page after advancePast which has any * items on it. If it's a lossy result, return that. */ - if (entry->matchResult->ntuples < 0) + if (entry->matchResult->lossy) { ItemPointerSetLossyPage(&entry->curItem, entry->matchResult->blockno); @@ -879,6 +879,8 @@ entryGetItem(GinState *ginstate, GinScanEntry entry, */ if (entry->matchResult->blockno == advancePastBlk) { + Assert(entry->matchResult->ntuples > 0); + /* * First, do a quick check against the last offset on the * page. If that's > advancePast, so are all the other diff --git a/src/backend/access/heap/heapam_handler.c b/src/backend/access/heap/heapam_handler.c index c0bec014154..269d581c2ec 100644 --- a/src/backend/access/heap/heapam_handler.c +++ b/src/backend/access/heap/heapam_handler.c @@ -2170,7 +2170,7 @@ heapam_scan_bitmap_next_block(TableScanDesc scan, VM_ALL_VISIBLE(scan->rs_rd, tbmres->blockno, &bscan->rs_vmbuffer)) { /* can't be lossy in the skip_fetch case */ - Assert(tbmres->ntuples >= 0); + Assert(!tbmres->lossy); Assert(bscan->rs_empty_tuples_pending >= 0); bscan->rs_empty_tuples_pending += tbmres->ntuples; @@ -2207,7 +2207,7 @@ heapam_scan_bitmap_next_block(TableScanDesc scan, /* * We need two separate strategies for lossy and non-lossy cases. */ - if (tbmres->ntuples >= 0) + if (!tbmres->lossy) { /* * Bitmap is non-lossy, so we just look through the offsets listed in @@ -2268,10 +2268,10 @@ heapam_scan_bitmap_next_block(TableScanDesc scan, Assert(ntup <= MaxHeapTuplesPerPage); hscan->rs_ntuples = ntup; - if (tbmres->ntuples >= 0) - (*exact_pages)++; - else + if (tbmres->lossy) (*lossy_pages)++; + else + (*exact_pages)++; /* * Return true to indicate that a valid block was found and the bitmap is |