aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/backend/optimizer/plan/createplan.c6
-rw-r--r--src/backend/optimizer/util/pathnode.c15
2 files changed, 9 insertions, 12 deletions
diff --git a/src/backend/optimizer/plan/createplan.c b/src/backend/optimizer/plan/createplan.c
index 25d4750ca66..181387480a1 100644
--- a/src/backend/optimizer/plan/createplan.c
+++ b/src/backend/optimizer/plan/createplan.c
@@ -1227,8 +1227,7 @@ create_append_plan(PlannerInfo *root, AppendPath *best_path, int flags)
* pruning during execution. Gather information needed by the executor to
* do partition pruning.
*/
- if (enable_partition_pruning &&
- best_path->partitioned_rels != NIL)
+ if (enable_partition_pruning)
{
List *prunequal;
@@ -1393,8 +1392,7 @@ create_merge_append_plan(PlannerInfo *root, MergeAppendPath *best_path,
* pruning during execution. Gather information needed by the executor to
* do partition pruning.
*/
- if (enable_partition_pruning &&
- best_path->partitioned_rels != NIL)
+ if (enable_partition_pruning)
{
List *prunequal;
diff --git a/src/backend/optimizer/util/pathnode.c b/src/backend/optimizer/util/pathnode.c
index d465b9e2137..7aea30b306d 100644
--- a/src/backend/optimizer/util/pathnode.c
+++ b/src/backend/optimizer/util/pathnode.c
@@ -1230,15 +1230,14 @@ create_append_path(PlannerInfo *root,
/*
* When generating an Append path for a partitioned table, there may be
- * parameters that are useful so we can eliminate certain partitions
- * during execution. Here we'll go all the way and fully populate the
- * parameter info data as we do for normal base relations. However, we
- * need only bother doing this for RELOPT_BASEREL rels, as
- * RELOPT_OTHER_MEMBER_REL's Append paths are merged into the base rel's
- * Append subpaths. It would do no harm to do this, we just avoid it to
- * save wasting effort.
+ * parameterized quals that are useful for run-time pruning. Hence,
+ * compute path.param_info the same way as for any other baserel, so that
+ * such quals will be available for make_partition_pruneinfo(). (This
+ * would not work right for a non-baserel, ie a scan on a non-leaf child
+ * partition, and it's not necessary anyway in that case. Must skip it if
+ * we don't have "root", too.)
*/
- if (partitioned_rels != NIL && root && rel->reloptkind == RELOPT_BASEREL)
+ if (root && rel->reloptkind == RELOPT_BASEREL && IS_PARTITIONED_REL(rel))
pathnode->path.param_info = get_baserel_parampathinfo(root,
rel,
required_outer);