diff --git a/src/backend/executor/nodeAppend.c b/src/backend/executor/nodeAppend.c index 5286ada835..a25e83d606 100644 --- a/src/backend/executor/nodeAppend.c +++ b/src/backend/executor/nodeAppend.c @@ -152,13 +152,13 @@ ExecInitAppend(Append *node, EState *estate, int eflags) * first subplan, but we set a noop flag so that we never actually * bother scanning it. */ - if (bms_is_empty(validsubplans)) - { - appendstate->as_noopscan = true; + //if (bms_is_empty(validsubplans)) + //{ + // appendstate->as_noopscan = true; - /* Mark the first as valid so that it's initialized below */ - validsubplans = bms_make_singleton(0); - } + // /* Mark the first as valid so that it's initialized below */ + // validsubplans = bms_make_singleton(0); + //} nplans = bms_num_members(validsubplans); } @@ -173,7 +173,7 @@ ExecInitAppend(Append *node, EState *estate, int eflags) * If there's no exec params then no further pruning can be done, we * can just set the valid subplans to all remaining subplans. */ - if (bms_is_empty(partprune->execparams)) + if (bms_is_empty(partprune->execparams) && nplans > 0) appendstate->as_valid_subplans = bms_add_range(NULL, 0, nplans - 1); appendstate->partition_pruning = partprune; diff --git a/src/backend/optimizer/plan/setrefs.c b/src/backend/optimizer/plan/setrefs.c index cd540a0df5..29873cd0df 100644 --- a/src/backend/optimizer/plan/setrefs.c +++ b/src/backend/optimizer/plan/setrefs.c @@ -652,7 +652,7 @@ set_plan_refs(PlannerInfo *root, Plan *plan, int rtoffset) * executor, we fix it up for possible use by EXPLAIN (not to * mention ease of debugging --- wrong varnos are very confusing). */ - set_dummy_tlist_references(plan, rtoffset); + //set_dummy_tlist_references(plan, rtoffset); /* * Since these plan types don't check quals either, we should not @@ -669,7 +669,7 @@ set_plan_refs(PlannerInfo *root, Plan *plan, int rtoffset) * tlist or quals. But we have to fix up the RT indexes in * its rowmarks. */ - set_dummy_tlist_references(plan, rtoffset); + //set_dummy_tlist_references(plan, rtoffset); Assert(splan->plan.qual == NIL); foreach(l, splan->rowMarks) @@ -691,7 +691,7 @@ set_plan_refs(PlannerInfo *root, Plan *plan, int rtoffset) * however; and those cannot contain subplan variable refs, so * fix_scan_expr works for them. */ - set_dummy_tlist_references(plan, rtoffset); + //set_dummy_tlist_references(plan, rtoffset); Assert(splan->plan.qual == NIL); splan->limitOffset = @@ -971,7 +971,7 @@ set_plan_refs(PlannerInfo *root, Plan *plan, int rtoffset) * Append, like Sort et al, doesn't actually evaluate its * targetlist or check quals. */ - set_dummy_tlist_references(plan, rtoffset); + //set_dummy_tlist_references(plan, rtoffset); Assert(splan->plan.qual == NIL); foreach(l, splan->partitioned_rels) { @@ -993,7 +993,7 @@ set_plan_refs(PlannerInfo *root, Plan *plan, int rtoffset) * MergeAppend, like Sort et al, doesn't actually evaluate its * targetlist or check quals. */ - set_dummy_tlist_references(plan, rtoffset); + //set_dummy_tlist_references(plan, rtoffset); Assert(splan->plan.qual == NIL); foreach(l, splan->partitioned_rels) { @@ -1009,7 +1009,7 @@ set_plan_refs(PlannerInfo *root, Plan *plan, int rtoffset) break; case T_RecursiveUnion: /* This doesn't evaluate targetlist or check quals either */ - set_dummy_tlist_references(plan, rtoffset); + //set_dummy_tlist_references(plan, rtoffset); Assert(plan->qual == NIL); break; case T_BitmapAnd: