• Andres Freund's avatar
    tableam: bitmap table scan. · bfbcad47
    Andres Freund authored
    This moves bitmap heap scan support to below an optional tableam
    callback. It's optional as the whole concept of bitmap heapscans is
    fairly block specific.
    
    This basically moves the work previously done in bitgetpage() into the
    new scan_bitmap_next_block callback, and the direct poking into the
    buffer done in BitmapHeapNext() into the new scan_bitmap_next_tuple()
    callback.
    
    The abstraction is currently somewhat leaky because
    nodeBitmapHeapscan.c's prefetching and visibilitymap based logic
    remains - it's likely that we'll later have to move more into the
    AM. But it's not trivial to do so without introducing a significant
    amount of code duplication between the AMs, so that's a project for
    later.
    
    Note that now nodeBitmapHeapscan.c and the associated node types are a
    bit misnamed. But it's not clear whether renaming wouldn't be a cure
    worse than the disease. Either way, that'd be best done in a separate
    commit.
    
    Author: Andres Freund
    Reviewed-By: Robert Haas (in an older version)
    Discussion: https://postgr.es/m/20180703070645.wchpu5muyto5n647@alap3.anarazel.de
    bfbcad47
tableamapi.c 6.47 KB