Use appendrel planning logic for top-level UNION ALL structures.
authorTom Lane <tgl@sss.pgh.pa.us>
Mon, 8 Nov 2010 20:15:02 +0000 (15:15 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Mon, 8 Nov 2010 20:15:02 +0000 (15:15 -0500)
commit947d0c862c895618a874344322e7b07c9df05cb2
treed93d5d236afc198144305ee6bedee2b78b6bfff0
parent543d22fc7423747afd59fe7214f2ddf6259efc62
Use appendrel planning logic for top-level UNION ALL structures.

Formerly, we could convert a UNION ALL structure inside a subquery-in-FROM
into an appendrel, as a side effect of pulling up the subquery into its
parent; but top-level UNION ALL always caused use of plan_set_operations().
That didn't matter too much because you got an Append-based plan either
way.  However, now that the appendrel code can do things with MergeAppend,
it's worthwhile to hack up the top-level case so it also uses appendrels.

This is a bit of a stopgap; but going much further than this will require
a major rewrite of the planner's set-operations support, which I'm not
prepared to undertake now.  For the moment let's grab the low-hanging fruit.
src/backend/optimizer/plan/planner.c
src/backend/optimizer/prep/prepjointree.c
src/include/optimizer/prep.h