On Thu, May 12, 2016 at 11:37 PM, Tom Lane <[email protected]> wrote:
>
> Robert Haas <[email protected]> writes:
> >> Target list for a relation, you mean? See relation.h:
> >>
> >> * reltarget - Default Path output tlist for this rel; normally
contains
> >> * Var and PlaceHolderVar nodes for the values we need
to
> >> * output from this relation.
> >> * List is in no particular order, but all rels of an
> >> * appendrel set must use corresponding orders.
> >> * NOTE: in an appendrel child relation, may contain
> >> * arbitrary expressions pulled up from a subquery!
>
> > Err, wow. That makes my head hurt. Can you explain why this case
> > only arises for appendrel children, and not for plain rels?
>
> Well, plain rels only output Vars ;-)
>
Does this mean that base rels can't contain PlaceHolderVars? Isn't it
possible in below code:
query_planner()
{
..
/*
* Now distribute "placeholders" to base rels as needed. This has to be
* done after join removal because removal could change whether a
* placeholder is evaluatable at a base rel.
*/
add_placeholders_to_base_rels(root);
..
}
With Regards,
Amit Kapila.
EnterpriseDB: http://www.enterprisedb.com