• Tom Lane's avatar
    Fix run-time partition pruning for appends with multiple source rels. · 1c2cb274
    Tom Lane authored
    The previous coding here supposed that if run-time partitioning applied to
    a particular Append/MergeAppend plan, then all child plans of that node
    must be members of a single partitioning hierarchy.  This is totally wrong,
    since an Append could be formed from a UNION ALL: we could have multiple
    hierarchies sharing the same Append, or child plans that aren't part of any
    hierarchy.
    
    To fix, restructure the related plan-time and execution-time data
    structures so that we can have a separate list or array for each
    partitioning hierarchy.  Also track subplans that are not part of any
    hierarchy, and make sure they don't get pruned.
    
    Per reports from Phil Florent and others.  Back-patch to v11, since
    the bug originated there.
    
    David Rowley, with a lot of cosmetic adjustments by me; thanks also
    to Amit Langote for review.
    
    Discussion: https://postgr.es/m/HE1PR03MB17068BB27404C90B5B788BCABA7B0@HE1PR03MB1706.eurprd03.prod.outlook.com
    1c2cb274
allpaths.c 118 KB