• Tom Lane's avatar
    Add a new column to pg_am to specify whether an index AM supports backward · e4fb8ff0
    Tom Lane authored
    scanning; GiST and GIN do not, and it seems like too much trouble to make
    them do so.  By teaching ExecSupportsBackwardScan() about this restriction,
    we ensure that the planner will protect a scroll cursor from the problem
    by adding a Materialize node.
    
    In passing, fix another longstanding bug in the same area: backwards scan of
    a plan with set-returning functions in the targetlist did not work either,
    since the TupFromTlist expansion code pays no attention to direction (and
    has no way to run a SRF backwards anyway).  Again the fix is to make
    ExecSupportsBackwardScan check this restriction.
    
    Also adjust the index AM API specification to note that mark/restore support
    is unnecessary if the AM can't produce ordered output.
    e4fb8ff0
execAmi.c 12.7 KB