On Thu, May 12, 2016 at 11:48 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> Robert Haas <robertmhaas@gmail.com> writes:
>> I could be wrong, but I thought that the target list for an expression
>> would always contain only Vars at this stage. Non-default tlists get
>> injected at the end of scan/join planning. Am I wrong?
>
> 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?
--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company