Hi, Alexander! On Tue, Oct 31, 2023 at 1:07 PM Alexander Pyhalov <a.pyha...@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
0001-postgres_fdw-add-support-for-deparsing-semi-joins-v6.patch
Description: Binary data