aboutsummaryrefslogtreecommitdiff
path: root/contrib/postgres_fdw/postgres_fdw.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/postgres_fdw/postgres_fdw.c')
-rw-r--r--contrib/postgres_fdw/postgres_fdw.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/contrib/postgres_fdw/postgres_fdw.c b/contrib/postgres_fdw/postgres_fdw.c
index 856798ee720..88fac15a5ce 100644
--- a/contrib/postgres_fdw/postgres_fdw.c
+++ b/contrib/postgres_fdw/postgres_fdw.c
@@ -3990,6 +3990,15 @@ foreign_join_ok(PlannerInfo *root, RelOptInfo *joinrel, JoinType jointype,
joinclauses = NIL;
}
+ /* Get foreign server */
+ fpinfo->server = fpinfo_o->server;
+
+ /*
+ * Copy shippable_extensions before checking whether the foreign join is
+ * OK, so that we know which quals can be evaluated on the foreign server.
+ */
+ fpinfo->shippable_extensions = fpinfo_o->shippable_extensions;
+
/* Join quals must be safe to push down. */
foreach(lc, joinclauses)
{
@@ -4133,9 +4142,6 @@ foreign_join_ok(PlannerInfo *root, RelOptInfo *joinrel, JoinType jointype,
else
fpinfo->user = NULL;
- /* Get foreign server */
- fpinfo->server = fpinfo_o->server;
-
/*
* Since both the joining relations come from the same server, the server
* level options should have same value for both the relations. Pick from