• Tom Lane's avatar
    Fix some planner bugs exposed by reports from Arjen van der Meijden. These · 281f4018
    Tom Lane authored
    are all in new-in-8.2 logic associated with indexability of ScalarArrayOpExpr
    (IN-clauses) or amortization of indexscan costs across repeated indexscans
    on the inside of a nestloop.  In particular:
    
    Fix some logic errors in the estimation for multiple scans induced by a
    ScalarArrayOpExpr indexqual.
    
    Include a small cost component in bitmap index scans to reflect the costs of
    manipulating the bitmap itself; this is mainly to prevent a bitmap scan from
    appearing to have the same cost as a plain indexscan for fetching a single
    tuple.
    
    Also add a per-index-scan-startup CPU cost component; while prior releases
    were clearly too pessimistic about the cost of repeated indexscans, the
    original 8.2 coding allowed the cost of an indexscan to effectively go to zero
    if repeated often enough, which is overly optimistic.
    
    Pay some attention to index correlation when estimating costs for a nestloop
    inner indexscan: this is significant when the plan fetches multiple heap
    tuples per iteration, since high correlation means those tuples are probably
    on the same or adjacent heap pages.
    281f4018
costsize.c 72.4 KB