• Tom Lane's avatar
    Clean up planner confusion between ncolumns and nkeycolumns. · 75c46149
    Tom Lane authored
    We're only going to consider key columns when creating indexquals,
    so there is no point in having the outer loops in indxpath.c iterate
    further than nkeycolumns.
    
    Doing so in match_pathkeys_to_index() is actually wrong, and would have
    caused crashes by now, except that we have no index AMs supporting both
    amcanorderbyop and amcaninclude.
    
    It's also wrong in relation_has_unique_index_for().  The effect there is
    to fail to prove uniqueness even when the index does prove it, if there
    are extra columns.
    
    Also future-proof examine_variable() for the day when extra columns can
    be expressions, and fix what's either a thinko or just an oversight in
    btcostestimate(): we should consider the number of key columns, not the
    total, when deciding whether to derate correlation.
    
    None of these things seemed important enough to risk changing in a
    just-before-wrap patch, but since we're past the release wrap window,
    time to fix 'em.
    
    Discussion: https://postgr.es/m/25526.1549847928@sss.pgh.pa.us
    75c46149
indxpath.c 123 KB