Re: Function scan FDW pushdown
От | Alexander Pyhalov |
---|---|
Тема | Re: Function scan FDW pushdown |
Дата | |
Msg-id | c8193892b7fba6f52c34b6d4582eb126@postgrespro.ru обсуждение исходный текст |
Ответ на | Re: Function scan FDW pushdown (Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>) |
Список | pgsql-hackers |
Ashutosh Bapat писал 2021-06-15 16:15: > Hi Alexander, Hi. The current version of the patch is based on asymetric partition-wise join. Currently it is applied after v19-0001-Asymmetric-partitionwise-join.patch from on https://www.postgresql.org/message-id/792d60f4-37bc-e6ad-68ca-c2af5cbb2d9b@postgrespro.ru . >> So far I don't know how to visualize actual function expression used >> in >> function RTE, as in postgresExplainForeignScan() es->rtable comes from >> queryDesc->plannedstmt->rtable, and rte->functions is already 0. > > The actual function expression will be part of the Remote SQL of > ForeignScan node so no need to visualize it separately. We still need to create tuple description for functions in get_tupdesc_for_join_scan_tuples(), so I had to remove setting newrte->functions to NIL in add_rte_to_flat_rtable(). With rte->functions in place, there's no issues for explain. > > The patch will have problems when there are multiple foreign tables > all on different servers or use different FDWs. In such a case the > function scan's RelOptInfo will get the fpinfo based on the first > foreign table the function scan is paired with during join planning. > But that may not be the best foreign table to join. We should be able > to plan all the possible joins. Current infra to add one fpinfo per > RelOptInfo won't help there. We need something better. I suppose attached version of the patch is more mature. > > The patch targets only postgres FDW, how do you see this working with > other FDWs? Not now. We introduce necessary APIs for other FDWs, but implementing TryShippableJoinPaths() doesn't seem straightforward. > > If we come up with the right approach we could use it for 1. pushing > down queries with IN () clause 2. joining a small local table with a > large foreign table by sending the local table rows down to the > foreign server. -- Best regards, Alexander Pyhalov, Postgres Professional
Вложения
В списке pgsql-hackers по дате отправления: