• Robert Haas's avatar
    Let Parallel Append over simple UNION ALL have partial subpaths. · 0927d2f4
    Robert Haas authored
    A simple UNION ALL gets flattened into an appendrel of subquery
    RTEs, but up until now it's been impossible for the appendrel to use
    the partial paths for the subqueries, so we can implement the
    appendrel as a Parallel Append but only one with non-partial paths
    as children.
    
    There are three separate obstacles to removing that limitation.
    First, when planning a subquery, propagate any partial paths to the
    final_rel so that they are potentially visible to outer query levels
    (but not if they have initPlans attached, because that wouldn't be
    safe).  Second, after planning a subquery, propagate any partial paths
    for the final_rel to the subquery RTE in the outer query level in the
    same way we do for non-partial paths.  Third, teach finalize_plan() to
    account for the possibility that the fake parameter we use for rescan
    signalling when the plan contains a Gather (Merge) node may be
    propagated from an outer query level.
    
    Patch by me, reviewed and tested by Amit Khandekar, Rajkumar
    Raghuwanshi, and Ashutosh Bapat.  Test cases based on examples by
    Rajkumar Raghuwanshi.
    
    Discussion: http://postgr.es/m/CA+Tgmoa6L9A1nNCk3aTDVZLZ4KkHDn1+tm7mFyFvP+uQPS7bAg@mail.gmail.com
    0927d2f4
select_parallel.out 28.3 KB