From: | Etsuro Fujita <etsuro(dot)fujita(at)gmail(dot)com> |
---|---|
To: | Bharath Rupireddy <bharath(dot)rupireddyforpostgres(at)gmail(dot)com> |
Cc: | Jeff Janes <jeff(dot)janes(at)gmail(dot)com>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: estimation problems for DISTINCT ON with FDW |
Date: | 2020-06-30 09:30:49 |
Message-ID: | CAPmGK17c8AnwPGvEHtKA-BW2MQFhD-MNwe=NE8gf5jKJ5bYdCA@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Mon, Jun 29, 2020 at 7:02 PM Bharath Rupireddy
<bharath(dot)rupireddyforpostgres(at)gmail(dot)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
From | Date | Subject | |
---|---|---|---|
Next Message | Asif Rehman | 2020-06-30 10:54:46 | Re: +(pg_lsn, int8) and -(pg_lsn, int8) operators |
Previous Message | Georgios | 2020-06-30 09:23:26 | Re: Include access method in listTables output |