> 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. There might be problems pushing DISTINCTs to remote servers with the usage of fdw for sharding configurations. 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. With Regards, Bharath Rupireddy. EnterpriseDB: http://www.enterprisedb.com