From 101fd9349eddb7e9ed84a239145d5230a9bc7336 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Mon, 14 Mar 2016 20:04:44 -0400 Subject: Add a GetForeignUpperPaths callback function for FDWs. This is basically like the just-added create_upper_paths_hook, but control is funneled only to the FDW responsible for all the baserels of the current query; so providing such a callback is much less likely to add useless overhead than using the hook function is. The documentation is a bit sketchy. We'll likely want to improve it, and/or adjust the call conventions, when we get some experience with actually using this callback. Hopefully somebody will find time to experiment with it before 9.6 feature freeze. --- src/backend/optimizer/util/pathnode.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'src/backend/optimizer/util/pathnode.c') diff --git a/src/backend/optimizer/util/pathnode.c b/src/backend/optimizer/util/pathnode.c index 675e47cdd01..b8ea3168a84 100644 --- a/src/backend/optimizer/util/pathnode.c +++ b/src/backend/optimizer/util/pathnode.c @@ -1813,15 +1813,15 @@ create_worktablescan_path(PlannerInfo *root, RelOptInfo *rel, /* * create_foreignscan_path - * Creates a path corresponding to a scan of a foreign table or - * a foreign join, returning the pathnode. + * Creates a path corresponding to a scan of a foreign table, foreign join, + * or foreign upper-relation processing, returning the pathnode. * * This function is never called from core Postgres; rather, it's expected - * to be called by the GetForeignPaths or GetForeignJoinPaths function of - * a foreign data wrapper. We make the FDW supply all fields of the path, - * since we do not have any way to calculate them in core. However, there - * is a sane default for the pathtarget (rel->reltarget), so we let a NULL - * for "target" select that. + * to be called by the GetForeignPaths, GetForeignJoinPaths, or + * GetForeignUpperPaths function of a foreign data wrapper. We make the FDW + * supply all fields of the path, since we do not have any way to calculate + * them in core. However, there is a usually-sane default for the pathtarget + * (rel->reltarget), so we let a NULL for "target" select that. */ ForeignPath * create_foreignscan_path(PlannerInfo *root, RelOptInfo *rel, -- cgit v1.2.3