Andres Freund <andres@anarazel.de> writes:
> On 2015-05-10 18:36:45 +0000, Tom Lane wrote:
>> * Consider foreign joins only between foreign tables on the same server,
>> rather than between any two foreign tables with the same underlying FDW
>> handler function. In most if not all cases, the FDW would simply have had
>> to apply the same-server restriction itself (far more expensively, both for
>> lack of caching and because it would be repeated for each combination of
>> input sub-joins), or else risk nasty bugs. Anyone who's really intent on
>> doing something outside this restriction can always use the
>> set_join_pathlist_hook.
> Hm. I'm not sure I can agree with that judgement. It does not seem that
> far fetched to want to push joins between two different FDW servers to
> one FDW.
What I doubt is that people can do that *correctly*. See my
counterexamples in the pgsql-hackers thread. In any case, as also noted
on that thread, an FDW that wants to adjust this behavior could do so by
changing RelOptInfo.serverid to match the ID of the selected common server
during GetForeignPaths.
regards, tom lane