Skip to content
Snippets Groups Projects
  • Tom Lane's avatar
    3ee8f7e2
    Restructure planning code so that preprocessing of targetlist and quals · 3ee8f7e2
    Tom Lane authored
    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.
    3ee8f7e2
    History
    Restructure planning code so that preprocessing of targetlist and quals
    Tom Lane authored
    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.