Add explicit initialization for all PlannerGlobal fields master github/master
authorRichard Guo <[email protected]>
Wed, 14 May 2025 00:59:31 +0000 (09:59 +0900)
committerRichard Guo <[email protected]>
Wed, 14 May 2025 00:59:31 +0000 (09:59 +0900)
When creating a new PlannerGlobal node in standard_planner(), most
fields are explicitly initialized, but a few are not.  This doesn't
cause any functional issues, as makeNode() zeroes all fields by
default.  However, the inconsistency is undesirable from a clarity and
maintenance perspective.

This patch explicitly initializes the remaining fields to improve
consistency and readability.

Author: Richard Guo <[email protected]>
Reviewed-by: David Rowley <[email protected]>
Discussion: https://postgr.es/m/CAMbWs4-TgQHNOiouqGcuHoBqbJjWyx4UxGKxUY3FrF4trGbcPA@mail.gmail.com

src/backend/optimizer/plan/planner.c

index beafac8c0b04e8a27c074eb928605c63717c96fe..49ad6e835782fd87e6a7fdacd4633433c9f6955b 100644 (file)
@@ -326,10 +326,14 @@ standard_planner(Query *parse, const char *query_string, int cursorOptions,
    glob->subroots = NIL;
    glob->rewindPlanIDs = NULL;
    glob->finalrtable = NIL;
+   glob->allRelids = NULL;
+   glob->prunableRelids = NULL;
    glob->finalrteperminfos = NIL;
    glob->finalrowmarks = NIL;
    glob->resultRelations = NIL;
+   glob->firstResultRels = NIL;
    glob->appendRelations = NIL;
+   glob->partPruneInfos = NIL;
    glob->relationOids = NIL;
    glob->invalItems = NIL;
    glob->paramExecTypes = NIL;
@@ -338,6 +342,7 @@ standard_planner(Query *parse, const char *query_string, int cursorOptions,
    glob->lastPlanNodeId = 0;
    glob->transientPlan = false;
    glob->dependsOnRole = false;
+   glob->partition_directory = NULL;
 
    /*
     * Assess whether it's feasible to use parallel mode for this query. We