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:
