mirror of
https://github.com/postgres/postgres.git
synced 2025-08-19 23:22:23 +03:00
Revert "Move PartitionPruneInfo out of plan nodes into PlannedStmt"
This reverts commitec38694894
and its fixup589bb81649
. 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
This commit is contained in:
@@ -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);
|
||||
|
Reference in New Issue
Block a user