diff options
Diffstat (limited to 'src/backend/optimizer/plan/setrefs.c')
-rw-r--r-- | src/backend/optimizer/plan/setrefs.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/backend/optimizer/plan/setrefs.c b/src/backend/optimizer/plan/setrefs.c index a7f65dd529f..c0641a7cfb0 100644 --- a/src/backend/optimizer/plan/setrefs.c +++ b/src/backend/optimizer/plan/setrefs.c @@ -1151,6 +1151,8 @@ set_customscan_references(PlannerInfo *root, CustomScan *cscan, int rtoffset) { + ListCell *lc; + /* Adjust scanrelid if it's valid */ if (cscan->scan.scanrelid > 0) cscan->scan.scanrelid += rtoffset; @@ -1194,6 +1196,12 @@ set_customscan_references(PlannerInfo *root, fix_scan_list(root, cscan->custom_exprs, rtoffset); } + /* Adjust child plan-nodes recursively, if needed */ + foreach (lc, cscan->custom_plans) + { + lfirst(lc) = set_plan_refs(root, (Plan *) lfirst(lc), rtoffset); + } + /* Adjust custom_relids if needed */ if (rtoffset > 0) { |