PoC-choose_plan_name.patch
application/octet-stream
Filename: PoC-choose_plan_name.patch
Type: application/octet-stream
Part: 0
Message:
Re: plan shape work
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: unified
| File | + | − |
|---|---|---|
| src/backend/optimizer/plan/planner.c | 35 | 0 |
diff --git a/src/backend/optimizer/plan/planner.c b/src/backend/optimizer/plan/planner.c
index 3b130e724f7..a112b4ac119 100644
--- a/src/backend/optimizer/plan/planner.c
+++ b/src/backend/optimizer/plan/planner.c
@@ -331,6 +331,7 @@ standard_planner(Query *parse, const char *query_string, int cursorOptions,
glob->subplans = NIL;
glob->subpaths = NIL;
glob->subroots = NIL;
+ glob->subplanNames = NIL;
glob->rewindPlanIDs = NULL;
glob->finalrtable = NIL;
glob->allRelids = NULL;
@@ -8837,6 +8838,39 @@ create_partial_unique_paths(PlannerInfo *root, RelOptInfo *input_rel,
}
}
+/*
+ * Choose a unique name for some subroot.
+ *
+ * Modifies glob->subplanNames to track names already used.
+ */
+char *
+choose_plan_name(PlannerGlobal *glob, const char *name, bool always_number)
+{
+ size_t base_len = strlen(name);
+ int max_suffix = always_number ? 0 : -1;
+ char *canon_name;
+
+ foreach_ptr(char, subplan_name, glob->subplanNames)
+ {
+ char *last_underscore = strrchr(subplan_name, '_');
+
+ if ((last_underscore - subplan_name) == base_len &&
+ strncmp(subplan_name, name, base_len) == 0)
+ {
+ int suffix_num = atoi(last_underscore + 1);
+
+ if (suffix_num > max_suffix)
+ max_suffix = suffix_num;
+ }
+ }
+
+ canon_name = psprintf("%s_%u", name, max_suffix + 1);
+ glob->subplanNames = lappend(glob->subplanNames, canon_name);
+
+ return (max_suffix == -1) ? pstrdup(name) : canon_name;
+}
+
+#if 0
/*
* Choose a unique name for some subroot.
*
@@ -8903,3 +8937,4 @@ choose_plan_name(PlannerGlobal *glob, const char *name, bool always_number)
pfree(proposed_name);
}
}
+#endif