• Tom Lane's avatar
    Support parameterized TidPaths. · b5415e3c
    Tom Lane authored
    Up to now we've not worried much about joins where the join key is a
    relation's CTID column, reasoning that storing a table's CTIDs in some
    other table would be pretty useless.  However, there are use-cases for
    this sort of query involving self-joins, so that argument doesn't really
    hold water.
    
    This patch allows generating plans for joins on CTID that use a nestloop
    with inner TidScan, similar to what we might do with an index on the join
    column.  This is the most efficient way to join when the outer side of
    the nestloop is expected to yield relatively few rows.
    
    This change requires upgrading tidpath.c and the generated TidPaths
    to work with RestrictInfos instead of bare qual clauses, but that's
    long-postponed technical debt anyway.
    
    Discussion: https://postgr.es/m/17443.1545435266@sss.pgh.pa.us
    b5415e3c
relation.h 101 KB