• Tom Lane's avatar
    Fix planner error with multiple copies of an AlternativeSubPlan. · 29aa0ce3
    Tom Lane authored
    It's possible for us to copy an AlternativeSubPlan expression node
    into multiple places, for example the scan quals of several
    partition children.  Then it's possible that we choose a different
    one of the alternatives as optimal in each place.  Commit 41efb834
    failed to consider this scenario, so its attempt to remove "unused"
    subplans could remove subplans that were still used elsewhere.
    
    Fix by delaying the removal logic until we've examined all the
    AlternativeSubPlans in a given query level.  (This does assume that
    AlternativeSubPlans couldn't get copied to other query levels, but
    for the foreseeable future that's fine; cf qual_is_pushdown_safe.)
    
    Per report from Rajkumar Raghuwanshi.  Back-patch to v14
    where the faulty logic came in.
    
    Discussion: https://postgr.es/m/CAKcux6==O3NNZC3bZ2prRYv3cjm3_Zw1GfzmOjEVqYN4jub2+Q@mail.gmail.com
    29aa0ce3
subselect.sql 25.8 KB