Restructure planning code so that preprocessing of targetlist and quals

Tom Lane <tgl@sss.pgh.pa.us>

Commit: 3ee8f7e207b3459372e13603023a9d84bb800e0b
Author: Tom Lane <tgl@sss.pgh.pa.us>
Date: 2000-03-21T05:12:12Z
Releases: 7.1.1
Restructure planning code so that preprocessing of targetlist and quals
to simplify constant expressions and expand SubLink nodes into SubPlans
is done in a separate routine subquery_planner() that calls union_planner().
We formerly did most of this work in query_planner(), but that's the
wrong place because it may never see the real targetlist.  Splitting
union_planner into two routines also allows us to avoid redundant work
when union_planner is invoked recursively for UNION and inheritance
cases.  Upshot is that it is now possible to do something like
select float8(count(*)) / (select count(*) from int4_tbl)  from int4_tbl
group by f1;
which has never worked before.

Files