On 2017/01/05 13:19, Ashutosh Bapat wrote:
Hmm. If I understand the patch correctly, it does not return any path
when merge join is allowed and there are merge clauses but no hash
clauses. In this case we will not create a foreign join path, loosing
some optimization. If we remove GetExistingLocalJoinPath, which
returns a path in those cases as well, we have a regression in
Ok, will revise, but as I mentioned upthread, I'm not sure it's a good idea
to search the pathlist to get a merge join even in this case. I'd vote for
creating a merge join path from the inner/outer paths in this case as well.
I think that would simplify the code as well.
Creating a new path 1. requires memory
The search approach would require memory for saving the path, too.
2. spends CPU cycles in costing
and creating it
The search approach would also need extra cycles in the cases mentioned
in , wouldn't it? Since it would be useless to cost the
fdw_outerpath of a foreign join, we could skip that for the
fdw_outerpath if necessary.
3. requires a search in inner and outer relations'
pathlists (see my earlier reply).
What I'm thinking is basically to use the cheapest-total-cost paths of
the inner/outer relations, which wouldn't require any search.
Sent via pgsql-hackers mailing list (firstname.lastname@example.org)
To make changes to your subscription: