mirror of
https://github.com/postgres/postgres.git
synced 2025-12-19 17:02:53 +03:00
Move PartitioPruneInfo out of plan nodes into PlannedStmt
The planner will now add a given PartitioPruneInfo to PlannedStmt.partPruneInfos instead of directly to the Append/MergeAppend plan node. What gets set instead in the latter is an index field which points to the list element of PlannedStmt.partPruneInfos containing the PartitioPruneInfo belonging to the plan node. A later commit will make AcquireExecutorLocks() do the initial partition pruning to determine a minimal set of partitions to be locked when validating a plan tree and it will need to consult the PartitioPruneInfos referenced therein to do so. It would be better for the PartitioPruneInfos to be accessible directly than requiring a walk of the plan tree to find them, which is easier when it can be done by simply iterating over PlannedStmt.partPruneInfos. Author: Amit Langote <amitlangote09@gmail.com> Discussion: https://postgr.es/m/CA+HiwqFGkMSge6TgC9KQzde0ohpAycLQuV7ooitEEpbKB0O_mg@mail.gmail.com
This commit is contained in:
@@ -122,6 +122,9 @@ typedef struct PlannerGlobal
|
||||
/* "flat" list of AppendRelInfos */
|
||||
List *appendRelations;
|
||||
|
||||
/* List of PartitionPruneInfo contained in the plan */
|
||||
List *partPruneInfos;
|
||||
|
||||
/* OIDs of relations the plan depends on */
|
||||
List *relationOids;
|
||||
|
||||
@@ -503,6 +506,9 @@ struct PlannerInfo
|
||||
|
||||
/* Does this query modify any partition key columns? */
|
||||
bool partColsUpdated;
|
||||
|
||||
/* PartitionPruneInfos added in this query's plan. */
|
||||
List *partPruneInfos;
|
||||
};
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user