Re: Push down more full joins in postgres_fdw
От | Etsuro Fujita |
---|---|
Тема | Re: Push down more full joins in postgres_fdw |
Дата | |
Msg-id | 41aef262-a700-0e52-19b1-54cb468e621e@lab.ntt.co.jp обсуждение исходный текст |
Ответ на | Re: Push down more full joins in postgres_fdw (Ashutosh Bapat <ashutosh.bapat@enterprisedb.com>) |
Ответы |
Re: Push down more full joins in postgres_fdw
|
Список | pgsql-hackers |
On 2016/09/13 14:17, Ashutosh Bapat wrote: > But another concern about the approach of generating an > subselect alias for a path, if needed, at the path creation time > would be that the path might be rejected by add_path, which would > result in totally wasting cycles for generating the subselect alias > for the path. > A path may get rejected but the relation is not rejected. The alias > applies to a relation and its targetlist, which will remain same for all > paths created for that relation, esp when it's a base relation or join. > So, AFAIU that work never gets wasted. I think there is no guarantee that add_path won't reject foreign join paths. The possibility would be very low, though. > However minimum overhead it might have, we will deparse the > query every > time we create a path involving that kind of relation i.e. for > different > pathkeys, different parameterization and different joins in > which that > relation participates in. This number can be significant. We want to > avoid this overhead if we can. > Exactly. As I said above, I think the overhead would be negligible > compared to the overhead in explaining each remote query for costing > or the overhead in sending the final remote query for execution, though. > It won't remain minimal as the number of paths created increases, > increasing the number of times a query is deparsed. We deparse query > every time time we cost a path for a relation with use_remote_estimates > true. As we try to push down more and more stuff, we will create more > paths and deparse the query more time. > Also, that makes the interface better. Right now, in your patch, you > have changed the order of deparsing in the existing code, so that the > aliases are registered while deparsing FROM clause and before any Var > nodes are deparsed. If we create aliases at the time of path creation, > only once in GetForeignJoinPaths or GetForeignPaths as appropriate, that > would require less code churn and would save some CPU cycles as well. Agreed. Will fix. Best regards, Etsuro Fujita
В списке pgsql-hackers по дате отправления: