From 5472743d9e8583638a897b47558066167cc14583 Mon Sep 17 00:00:00 2001 From: Alvaro Herrera Date: Thu, 4 May 2023 12:09:59 +0200 Subject: 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 --- src/backend/executor/execMain.c | 1 - src/backend/executor/execParallel.c | 1 - src/backend/executor/execPartition.c | 18 +----------------- src/backend/executor/execUtils.c | 1 - src/backend/executor/nodeAppend.c | 5 ++--- src/backend/executor/nodeMergeAppend.c | 5 ++--- 6 files changed, 5 insertions(+), 26 deletions(-) (limited to 'src/backend/executor') diff --git a/src/backend/executor/execMain.c b/src/backend/executor/execMain.c index eaf6f31a154..00a1f158d8e 100644 --- a/src/backend/executor/execMain.c +++ b/src/backend/executor/execMain.c @@ -824,7 +824,6 @@ InitPlan(QueryDesc *queryDesc, int eflags) ExecInitRangeTable(estate, rangeTable, plannedstmt->permInfos); estate->es_plannedstmt = plannedstmt; - estate->es_part_prune_infos = plannedstmt->partPruneInfos; /* * Next, build the ExecRowMark array from the PlanRowMark(s), if any. diff --git a/src/backend/executor/execParallel.c b/src/backend/executor/execParallel.c index aa3f2834537..cc2b8ccab70 100644 --- a/src/backend/executor/execParallel.c +++ b/src/backend/executor/execParallel.c @@ -183,7 +183,6 @@ ExecSerializePlan(Plan *plan, EState *estate) pstmt->dependsOnRole = false; pstmt->parallelModeNeeded = false; pstmt->planTree = plan; - pstmt->partPruneInfos = estate->es_part_prune_infos; pstmt->rtable = estate->es_range_table; pstmt->permInfos = estate->es_rteperminfos; pstmt->resultRelations = NIL; diff --git a/src/backend/executor/execPartition.c b/src/backend/executor/execPartition.c index 9799968a428..eb8a87fd632 100644 --- a/src/backend/executor/execPartition.c +++ b/src/backend/executor/execPartition.c @@ -1778,9 +1778,6 @@ adjust_partition_colnos_using_map(List *colnos, AttrMap *attrMap) * Initialize data structure needed for run-time partition pruning and * do initial pruning if needed * - * 'root_parent_relids' identifies the relation to which both the parent plan - * and the PartitionPruneInfo given by 'part_prune_index' belong. - * * On return, *initially_valid_subplans is assigned the set of indexes of * child subplans that must be initialized along with the parent plan node. * Initial pruning is performed here if needed and in that case only the @@ -1793,24 +1790,11 @@ adjust_partition_colnos_using_map(List *colnos, AttrMap *attrMap) PartitionPruneState * ExecInitPartitionPruning(PlanState *planstate, int n_total_subplans, - int part_prune_index, - Bitmapset *root_parent_relids, + PartitionPruneInfo *pruneinfo, Bitmapset **initially_valid_subplans) { PartitionPruneState *prunestate; EState *estate = planstate->state; - PartitionPruneInfo *pruneinfo; - - /* Obtain the pruneinfo we need, and make sure it's the right one */ - pruneinfo = list_nth(estate->es_part_prune_infos, part_prune_index); - if (!bms_equal(root_parent_relids, pruneinfo->root_parent_relids)) - ereport(ERROR, - errcode(ERRCODE_INTERNAL_ERROR), - errmsg_internal("mismatching PartitionPruneInfo found at part_prune_index %d", - part_prune_index), - errdetail_internal("plan node relids %s, pruneinfo relids %s", - bmsToString(root_parent_relids), - bmsToString(pruneinfo->root_parent_relids))); /* We may need an expression context to evaluate partition exprs */ ExecAssignExprContext(estate, planstate); diff --git a/src/backend/executor/execUtils.c b/src/backend/executor/execUtils.c index 872cbd454df..25aba9a243a 100644 --- a/src/backend/executor/execUtils.c +++ b/src/backend/executor/execUtils.c @@ -123,7 +123,6 @@ CreateExecutorState(void) estate->es_rowmarks = NULL; estate->es_rteperminfos = NIL; estate->es_plannedstmt = NULL; - estate->es_part_prune_infos = NIL; estate->es_junkFilter = NULL; diff --git a/src/backend/executor/nodeAppend.c b/src/backend/executor/nodeAppend.c index c185b11c671..609df6b9e62 100644 --- a/src/backend/executor/nodeAppend.c +++ b/src/backend/executor/nodeAppend.c @@ -134,7 +134,7 @@ ExecInitAppend(Append *node, EState *estate, int eflags) appendstate->as_begun = false; /* If run-time partition pruning is enabled, then set that up now */ - if (node->part_prune_index >= 0) + if (node->part_prune_info != NULL) { PartitionPruneState *prunestate; @@ -145,8 +145,7 @@ ExecInitAppend(Append *node, EState *estate, int eflags) */ prunestate = ExecInitPartitionPruning(&appendstate->ps, list_length(node->appendplans), - node->part_prune_index, - node->apprelids, + node->part_prune_info, &validsubplans); appendstate->as_prune_state = prunestate; nplans = bms_num_members(validsubplans); diff --git a/src/backend/executor/nodeMergeAppend.c b/src/backend/executor/nodeMergeAppend.c index 399b39c598e..21b5726e6ed 100644 --- a/src/backend/executor/nodeMergeAppend.c +++ b/src/backend/executor/nodeMergeAppend.c @@ -82,7 +82,7 @@ ExecInitMergeAppend(MergeAppend *node, EState *estate, int eflags) mergestate->ps.ExecProcNode = ExecMergeAppend; /* If run-time partition pruning is enabled, then set that up now */ - if (node->part_prune_index >= 0) + if (node->part_prune_info != NULL) { PartitionPruneState *prunestate; @@ -93,8 +93,7 @@ ExecInitMergeAppend(MergeAppend *node, EState *estate, int eflags) */ prunestate = ExecInitPartitionPruning(&mergestate->ps, list_length(node->mergeplans), - node->part_prune_index, - node->apprelids, + node->part_prune_info, &validsubplans); mergestate->ms_prune_state = prunestate; nplans = bms_num_members(validsubplans); -- cgit v1.2.3