diff options
Diffstat (limited to 'src/backend/optimizer/util/pathnode.c')
-rw-r--r-- | src/backend/optimizer/util/pathnode.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/backend/optimizer/util/pathnode.c b/src/backend/optimizer/util/pathnode.c index f2d6385f183..b34c5f86900 100644 --- a/src/backend/optimizer/util/pathnode.c +++ b/src/backend/optimizer/util/pathnode.c @@ -3423,6 +3423,30 @@ reparameterize_path(PlannerInfo *root, Path *path, spath->path.pathkeys, required_outer); } + case T_Append: + { + AppendPath *apath = (AppendPath *) path; + List *childpaths = NIL; + ListCell *lc; + + /* Reparameterize the children */ + foreach(lc, apath->subpaths) + { + Path *spath = (Path *) lfirst(lc); + + spath = reparameterize_path(root, spath, + required_outer, + loop_count); + if (spath == NULL) + return NULL; + childpaths = lappend(childpaths, spath); + } + return (Path *) + create_append_path(rel, childpaths, + required_outer, + apath->path.parallel_workers, + apath->partitioned_rels); + } default: break; } |