summaryrefslogtreecommitdiff
path: root/src/backend/partitioning
diff options
context:
space:
mode:
authorAlvaro Herrera2023-05-04 10:09:59 +0000
committerAlvaro Herrera2023-05-04 10:09:59 +0000
commit5472743d9e8583638a897b47558066167cc14583 (patch)
tree5c983ffbf40157062fe6922f1b0c448e8b7d011f /src/backend/partitioning
parent919c486a275bcdd83d2add77da87b6edbd91418c (diff)
Revert "Move PartitionPruneInfo out of plan nodes into PlannedStmt"
This reverts commit ec386948948c and its fixup 589bb816499e. This change was intended to support query planning avoiding acquisition of locks on partitions that were going to be pruned; however, the overall project took a different direction at [1] and this bit is no longer needed. Put things back the way they were as agreed in [2], to avoid unnecessary complexity. Discussion: [1] https://postgr.es/m/4191508.1674157166@sss.pgh.pa.us Discussion: [2] https://postgr.es/m/20230502175409.kcoirxczpdha26wt@alvherre.pgsql
Diffstat (limited to 'src/backend/partitioning')
-rw-r--r--src/backend/partitioning/partprune.c19
1 files changed, 6 insertions, 13 deletions
diff --git a/src/backend/partitioning/partprune.c b/src/backend/partitioning/partprune.c
index 0fb10351278..7179b22a057 100644
--- a/src/backend/partitioning/partprune.c
+++ b/src/backend/partitioning/partprune.c
@@ -210,20 +210,16 @@ static void partkey_datum_from_expr(PartitionPruneContext *context,
/*
* make_partition_pruneinfo
- * Checks if the given set of quals can be used to build pruning steps
- * that the executor can use to prune away unneeded partitions. If
- * suitable quals are found then a PartitionPruneInfo is built and tagged
- * onto the PlannerInfo's partPruneInfos list.
- *
- * The return value is the 0-based index of the item added to the
- * partPruneInfos list or -1 if nothing was added.
+ * Builds a PartitionPruneInfo which can be used in the executor to allow
+ * additional partition pruning to take place. Returns NULL when
+ * partition pruning would be useless.
*
* 'parentrel' is the RelOptInfo for an appendrel, and 'subpaths' is the list
* of scan paths for its child rels.
* 'prunequal' is a list of potential pruning quals (i.e., restriction
* clauses that are applicable to the appendrel).
*/
-int
+PartitionPruneInfo *
make_partition_pruneinfo(PlannerInfo *root, RelOptInfo *parentrel,
List *subpaths,
List *prunequal)
@@ -337,11 +333,10 @@ make_partition_pruneinfo(PlannerInfo *root, RelOptInfo *parentrel,
* quals, then we can just not bother with run-time pruning.
*/
if (prunerelinfos == NIL)
- return -1;
+ return NULL;
/* Else build the result data structure */
pruneinfo = makeNode(PartitionPruneInfo);
- pruneinfo->root_parent_relids = parentrel->relids;
pruneinfo->prune_infos = prunerelinfos;
/*
@@ -364,9 +359,7 @@ make_partition_pruneinfo(PlannerInfo *root, RelOptInfo *parentrel,
else
pruneinfo->other_subplans = NULL;
- root->partPruneInfos = lappend(root->partPruneInfos, pruneinfo);
-
- return list_length(root->partPruneInfos) - 1;
+ return pruneinfo;
}
/*