• Tom Lane's avatar
    Repair logic flaw in cost estimator: cost_nestloop() was estimating CPU · 1d5e7a6f
    Tom Lane authored
    costs using the inner path's parent->rows count as the number of tuples
    processed per inner scan iteration.  This is wrong when we are using an
    inner indexscan with indexquals based on join clauses, because the rows
    count in a Relation node reflects the selectivity of the restriction
    clauses for that rel only.  Upshot was that if join clause was very
    selective, we'd drastically overestimate the true cost of the join.
    Fix is to calculate correct output-rows estimate for an inner indexscan
    when the IndexPath node is created and save it in the path node.
    Change of path node doesn't require initdb, since path nodes don't
    appear in saved rules.
    1d5e7a6f
createplan.c 41 KB