set_dummy_tlist_hacks.patch
application/octet-stream
Filename: set_dummy_tlist_hacks.patch
Type: application/octet-stream
Part: 0
Patch
Format: unified
| File | + | − |
|---|---|---|
| src/backend/executor/nodeAppend.c | 7 | 7 |
| src/backend/optimizer/plan/setrefs.c | 6 | 6 |
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: