On Mon, Jun 29, 2020 at 7:02 PM Bharath Rupireddy <bharath.rupireddyforpostg...@gmail.com> wrote: > > It doesn't cost out the plan of pushing the DISTINCT ON down to the foreign > > side, which is probably the best way to run the query. I guess it makes > > sense that FDW machinery in general doesn't want to try to push a > > PostgreSQL specific construct. > > I think you are right, the DISTINCT operation is not being pushed to > remote(I may be wrong here. just for info - I looked at remote SQL > from explain(verbose) on the query to find this out) and so is for > estimates.
I think you are right. > But when fdw is > used for non-sharded configurations such as just to get existing data > from another remote postgres server, oracle, hadoop or some other > remote database engines where DISTINCT operation is supported, it's > good to push that to remote for both explains/estimates as well as in > the actual queries itself, to reduce data transferred from remote > database server to local postgres database server. I think so too. And I think we could do so using the upper-planner pathification (ie, GetForeignUpperPaths() with UPPERREL_DISTINCT in create_distinct_paths()). It's on my long-term TODO list to implement that in postgres_fdw. Best regards, Etsuro Fujita