Re: Add semi-join pushdown to postgres_fdw
Alexander Korotkov <aekorotkov@gmail.com>
From: Alexander Korotkov <aekorotkov@gmail.com>
To: Alexander Pyhalov <a.pyhalov@postgrespro.ru>
Cc: Tomas Vondra <tomas.vondra@enterprisedb.com>, "Fujii.Yuki@df.MitsubishiElectric.co.jp"
<Fujii.Yuki@df.mitsubishielectric.co.jp>, Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>,
Pgsql Hackers <pgsql-hackers@postgresql.org>, Ian Lawrence Barwick <barwick@gmail.com>
Date: 2023-11-27T00:49:25Z
Lists: pgsql-hackers
Attachments
- 0001-postgres_fdw-add-support-for-deparsing-semi-joins-v6.patch (application/octet-stream) patch v6-0001
Hi, Alexander! On Tue, Oct 31, 2023 at 1:07 PM Alexander Pyhalov <a.pyhalov@postgrespro.ru> wrote: > There are several cases when we can't push down semi-join in current > patch. > > 1) When target list has attributes from inner relation, which are > equivalent to some attributes of outer > relation, we fail to notice this. > > 2) When we examine A join B and decide that we can't push it down, this > decision is final - we state it in fdw_private of joinrel, > and so if we consider joining these relations in another order, we don't > reconsider. > This means that if later examine B join A, we don't try to push it down. > As semi-join can be executed as JOIN_UNIQUE_INNER or JOIN_UNIQUE_OUTER, > this can be a problem - we look at some of these paths and remember that > we can't push down such join. Thank you for the revision. I've revised the patch myself. I've replaced StringInfo with additional conds into a list of strings as I proposed before. I think the code became much clearer. Also, it gets rid of some unnecessary allocations. I think the code itself is not in bad shape. But patch lacks some high-level description of semi-joins processing as well as comments on each manipulation with additional conds. Could you please add this? ------ Regards, Alexander Korotkov
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
postgres_fdw: Avoid pulling up restrict infos from subqueries
- 729fe699e612 17.5 landed
- 023fb512755f 18.0 landed
-
Add support for deparsing semi-joins to contrib/postgres_fdw
- 824dbea3e41e 17.0 landed
-
Move PartitioPruneInfo out of plan nodes into PlannedStmt
- ec386948948c 16.0 cited