On Tue, Jul 1, 2014 at 7:39 AM, Etsuro Fujita <fujita.ets...@lab.ntt.co.jp>
wrote:

> (2014/06/30 20:17), Ashutosh Bapat wrote:
>
>> On Mon, Jun 30, 2014 at 4:17 PM, Etsuro Fujita
>> <fujita.ets...@lab.ntt.co.jp <mailto:fujita.ets...@lab.ntt.co.jp>> wrote:
>>
>
>      (2014/06/30 17:47), Ashutosh Bapat wrote:
>>
>
>          BTW, why aren't you using the tlist passed to this function? I
>> guess
>>         create_scan_plan() passes tlist after processing it, so that
>>         should be
>>         used rather than rel->reltargetlist.
>>
>
>      I think that that would be maybe OK, but I think that it would not
>>     be efficient to use the list to compute attrs_used, because the
>>     tlist would have more information than rel->reltargetlist in cases
>>     where the tlist is build through build_physical_tlist().
>>
>
>  In that case, we can call build_relation_tlist() for foreign tables.
>>
>
> Do you mean build_physical_tlist()?
>
>
Sorry, I meant build_path_tlist() or disuse_physical_tlist() whichever is
appropriate.

We may want to modify use_physical_tlist(), to return false, in case of
foreign tables. BTW, it does return false for inheritance trees.

 486     /*
 487      * Can't do it with inheritance cases either (mainly because Append
 488      * doesn't project).
 489      */
 490     if (rel->reloptkind != RELOPT_BASEREL)
 491         return false;

Yeah, we can call build_physical_tlist() (and do that in some cases), but
> if we call the function, it would generate a tlist that contains all Vars
> in the relation, not only those Vars actually needed by the query (ie, Vars
> in reltargetlist), and thus it would take more cycles to compute attr_used
> from the tlist than from reltargetlist.  That' what I wanted to say.
>
>
> Thanks,
>
> Best regards,
> Etsuro Fujita
>



-- 
Best Wishes,
Ashutosh Bapat
EnterpriseDB Corporation
The Postgres Database Company

Reply via email to