• Tom Lane's avatar
    Fix pushing of index-expression qualifications through UNION ALL. · b28ffd0f
    Tom Lane authored
    In commit 57664ed2, I made the planner
    wrap non-simple-variable outputs of appendrel children (IOW, child SELECTs
    of UNION ALL subqueries) inside PlaceHolderVars, in order to solve some
    issues with EquivalenceClass processing.  However, this means that any
    upper-level WHERE clauses mentioning such outputs will now contain
    PlaceHolderVars after they're pushed down into the appendrel child,
    and that prevents indxpath.c from recognizing that they could be matched
    to index expressions.  To fix, add explicit stripping of PlaceHolderVars
    from index operands, same as we have long done for RelabelType nodes.
    Add a regression test covering both this and the plain-UNION case (which
    is a totally different code path, but should also be able to do it).
    
    Per bug #6416 from Matteo Beccati.  Back-patch to 9.1, same as the
    previous change.
    b28ffd0f
union.out 9.77 KB