diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2016-03-14 20:04:44 -0400 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2016-03-14 20:04:48 -0400 |
commit | 101fd9349eddb7e9ed84a239145d5230a9bc7336 (patch) | |
tree | 8b77f95222f0a8342b45e6606a7e77046fdead3e /src/backend/optimizer/util/pathnode.c | |
parent | be6de4c1215a8ad5607b1fcc7e9e6da1de780877 (diff) | |
download | postgresql-101fd9349eddb7e9ed84a239145d5230a9bc7336.tar.gz postgresql-101fd9349eddb7e9ed84a239145d5230a9bc7336.zip |
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.
Diffstat (limited to 'src/backend/optimizer/util/pathnode.c')
-rw-r--r-- | src/backend/optimizer/util/pathnode.c | 14 |
1 files changed, 7 insertions, 7 deletions
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, |