diff --git a/src/backend/optimizer/path/costsize.c b/src/backend/optimizer/path/costsize.c index 4da0b17f137..c30d6e84672 100644 --- a/src/backend/optimizer/path/costsize.c +++ b/src/backend/optimizer/path/costsize.c @@ -1461,7 +1461,6 @@ cost_tidrangescan(Path *path, PlannerInfo *root, enable_mask |= PGS_CONSIDER_NONPARTIAL; path->disabled_nodes = (baserel->pgs_mask & enable_mask) != enable_mask ? 1 : 0; - path->disabled_nodes = 0; path->startup_cost = startup_cost; path->total_cost = startup_cost + cpu_run_cost + disk_run_cost; } diff --git a/src/backend/optimizer/plan/createplan.c b/src/backend/optimizer/plan/createplan.c index c26e841f537..e5200f4b3ce 100644 --- a/src/backend/optimizer/plan/createplan.c +++ b/src/backend/optimizer/plan/createplan.c @@ -6526,8 +6526,11 @@ materialize_finished_plan(Plan *subplan) subplan->startup_cost -= initplan_cost; subplan->total_cost -= initplan_cost; - /* Set cost data */ + /* Clear fields that cost_material() will consult */ + matpath.parallel_workers = 0; matpath.parent = NULL; + + /* Set cost data */ cost_material(&matpath, enable_material, subplan->disabled_nodes, diff --git a/src/backend/optimizer/util/pathnode.c b/src/backend/optimizer/util/pathnode.c index 7295438ad20..7b6c5d51e5d 100644 --- a/src/backend/optimizer/util/pathnode.c +++ b/src/backend/optimizer/util/pathnode.c @@ -3971,10 +3971,10 @@ reparameterize_path(PlannerInfo *root, Path *path, spath = reparameterize_path(root, spath, required_outer, loop_count); - enabled = - (mpath->path.disabled_nodes <= spath->disabled_nodes); if (spath == NULL) return NULL; + enabled = + (mpath->path.disabled_nodes <= spath->disabled_nodes); return (Path *) create_material_path(rel, spath, enabled); } case T_Memoize: