• Andres Freund's avatar
    tableam: sample scan. · 73c954d2
    Andres Freund authored
    This moves sample scan support to below tableam. It's not optional as
    there is, in contrast to e.g. bitmap heap scans, no alternative way to
    perform tablesample queries. If an AM can't deal with the block based
    API, it will have to throw an ERROR.
    
    The tableam callbacks for this are block based, but given the current
    TsmRoutine interface, that seems to be required.
    
    The new interface doesn't require TsmRoutines to perform visibility
    checks anymore - that requires the TsmRoutine to know details about
    the AM, which we want to avoid.  To continue to allow taking the
    returned number of tuples account SampleScanState now has a donetuples
    field (which previously e.g. existed in SystemRowsSamplerData), which
    is only incremented after the visibility check succeeds.
    
    Author: Andres Freund
    Discussion: https://postgr.es/m/20180703070645.wchpu5muyto5n647@alap3.anarazel.de
    73c954d2
nodeSamplescan.c 9.43 KB