From 5ab7bc136d86802e96100c79d3a2dacd929afafc Mon Sep 17 00:00:00 2001 From: Kirill Reshke Date: Sun, 2 Aug 2026 13:09:56 +0500 Subject: [PATCH 1/2] Fix c23 compile error by using proxy functions --- contrib/extprotocol/gpextprotocol.c | 2 +- src/backend/access/external/url_curl.c | 4 +- src/backend/catalog/pg_type.c | 2 +- src/backend/cdb/cdbllize.c | 44 +++++++++++---- src/backend/cdb/cdbmutate.c | 40 +++++++++++-- src/backend/cdb/cdbplan.c | 14 ++--- src/backend/cdb/dispatcher/cdbdisp_query.c | 10 +++- src/backend/cdb/dispatcher/cdbgang.c | 6 +- src/backend/commands/resgroupcmds.c | 10 ++-- src/backend/executor/execUtils.c | 11 +++- src/backend/nodes/nodeFuncs.c | 4 +- src/backend/optimizer/plan/createplan.c | 15 ++++- src/backend/optimizer/plan/setrefs.c | 14 ++++- .../optimizer/util/predtest_valueset.c | 2 +- src/backend/optimizer/util/walkers.c | 39 ++++++++----- src/backend/task/entry.c | 56 ++++++++++--------- src/backend/task/misc.c | 16 ++---- src/backend/utils/adt/xid8funcs.c | 2 +- src/backend/utils/misc/fstream/fstream.c | 2 +- src/backend/utils/misc/uriparser.c | 2 +- src/backend/utils/resource_manager/memquota.c | 42 ++++++++++++-- src/common/compression.c | 2 +- src/include/cdb/cdbplan.h | 2 +- src/include/optimizer/walkers.h | 4 +- src/timezone/zic.c | 2 +- 25 files changed, 243 insertions(+), 104 deletions(-) diff --git a/contrib/extprotocol/gpextprotocol.c b/contrib/extprotocol/gpextprotocol.c index 26d75bcda39..69aed97f48d 100644 --- a/contrib/extprotocol/gpextprotocol.c +++ b/contrib/extprotocol/gpextprotocol.c @@ -299,7 +299,7 @@ DemoUri *ParseDemoUri(const char *uri_str) /* * parse protocol */ - char *post_protocol = strstr(uri_str, "://"); + const char *post_protocol = strstr(uri_str, "://"); if(!post_protocol) { diff --git a/src/backend/access/external/url_curl.c b/src/backend/access/external/url_curl.c index 4c512619776..df05873e4ea 100644 --- a/src/backend/access/external/url_curl.c +++ b/src/backend/access/external/url_curl.c @@ -1473,7 +1473,7 @@ url_curl_fopen(char *url, bool forwrite, extvar_t *ev, CopyFormatOptions *opts) { /* use empty message */ CURL_EASY_SETOPT(file->curl->handle, CURLOPT_POSTFIELDS, ""); - CURL_EASY_SETOPT(file->curl->handle, CURLOPT_POSTFIELDSIZE, 0); + CURL_EASY_SETOPT(file->curl->handle, CURLOPT_POSTFIELDSIZE, 0L); /* post away and check response, retry if failed (timeout or * connect error) */ gp_perform_backoff_and_check_response(file, easy_perform_work); @@ -1932,7 +1932,7 @@ gp_proto0_write_done(URL_CURL_FILE *file) /* use empty message */ CURL_EASY_SETOPT(file->curl->handle, CURLOPT_POSTFIELDS, ""); - CURL_EASY_SETOPT(file->curl->handle, CURLOPT_POSTFIELDSIZE, 0); + CURL_EASY_SETOPT(file->curl->handle, CURLOPT_POSTFIELDSIZE, 0L); /* post away! */ gp_perform_backoff_and_check_response(file, easy_perform_work); diff --git a/src/backend/catalog/pg_type.c b/src/backend/catalog/pg_type.c index 109157a8b3e..83e5660f122 100644 --- a/src/backend/catalog/pg_type.c +++ b/src/backend/catalog/pg_type.c @@ -1074,7 +1074,7 @@ char * makeMultirangeTypeName(const char *rangeTypeName, Oid typeNamespace) { char *buf; - char *rangestr; + const char *rangestr; /* * If the range type name contains "range" then change that to diff --git a/src/backend/cdb/cdbllize.c b/src/backend/cdb/cdbllize.c index def4b78fccc..31749f0305b 100644 --- a/src/backend/cdb/cdbllize.c +++ b/src/backend/cdb/cdbllize.c @@ -142,6 +142,7 @@ typedef struct * Forward Declarations */ static Node *fix_outer_query_motions_mutator(Node *node, decorate_subplans_with_motions_context *context); +static Node *fix_outer_query_motions_mutator_adapter(Node *node, void *context); static Plan *fix_subplan_motion(PlannerInfo *root, Plan *subplan, Flow *outer_query_flow); static bool build_slice_table_walker(Node *node, build_slice_table_context *context); static void adjust_top_path_for_parallel_retrieve_cursor(Path *path, PlanSlice *slice); @@ -852,7 +853,7 @@ fix_outer_query_motions_mutator(Node *node, decorate_subplans_with_motions_conte /* An expression node might have subtrees containing plans to be mutated. */ if (!is_plan_node(node)) { - node = plan_tree_mutator(node, fix_outer_query_motions_mutator, context, false); + node = plan_tree_mutator(node, fix_outer_query_motions_mutator_adapter, context, false); /* * If we see a SubPlan, remember the context where we saw it. We memorize @@ -912,7 +913,7 @@ fix_outer_query_motions_mutator(Node *node, decorate_subplans_with_motions_conte context->sliceDepth++; plan = (Plan *) plan_tree_mutator((Node *) plan, - fix_outer_query_motions_mutator, + fix_outer_query_motions_mutator_adapter, context, false); motion = (Motion *) plan; @@ -991,13 +992,20 @@ fix_outer_query_motions_mutator(Node *node, decorate_subplans_with_motions_conte saveCurrentPlanFlow = context->currentPlanFlow; if (plan->flow != NULL && plan->flow->locustype != CdbLocusType_OuterQuery) context->currentPlanFlow = plan->flow; - newnode = plan_tree_mutator(node, fix_outer_query_motions_mutator, context, false); + newnode = plan_tree_mutator(node, fix_outer_query_motions_mutator_adapter, context, false); context->currentPlanFlow = saveCurrentPlanFlow; } return newnode; } +static Node * +fix_outer_query_motions_mutator_adapter(Node *node, void *context) +{ + return fix_outer_query_motions_mutator( + node, (decorate_subplans_with_motions_context *) context); +} + /* * Add a Motion node on top of a Plan if needed, to make the result available * in 'outer_query_flow'. Subroutine of cdbllize_fix_outer_query_motions(). @@ -1270,6 +1278,14 @@ cdbllize_build_slice_table(PlannerInfo *root, Plan *top_plan, query->setOperations = NULL; } +static bool +build_slice_table_walker(Node *node, build_slice_table_context *context); +static bool +build_slice_table_walker_adapter(Node *node, void *context) +{ + return build_slice_table_walker(node, (build_slice_table_context *) context); +} + static bool build_slice_table_walker(Node *node, build_slice_table_context *context) { @@ -1312,9 +1328,9 @@ build_slice_table_walker(Node *node, build_slice_table_context *context) root->glob->subplan_sliceIds[plan_id - 1] = context->currentSliceIndex; result = plan_tree_walker(node, - build_slice_table_walker, - context, - true); + build_slice_table_walker_adapter, + context, + true); context->currentSliceIndex = save_currentSliceIndex; @@ -1372,7 +1388,7 @@ build_slice_table_walker(Node *node, build_slice_table_context *context) } result = plan_tree_walker((Node *) motion, - build_slice_table_walker, + build_slice_table_walker_adapter, context, false); @@ -1382,7 +1398,7 @@ build_slice_table_walker(Node *node, build_slice_table_context *context) } return plan_tree_walker(node, - build_slice_table_walker, + build_slice_table_walker_adapter, context, false); } @@ -1436,6 +1452,14 @@ typedef struct aware_result_t int nnodes; } aware_result_t; +static bool +motion_sanity_walker(Node *node, sanity_result_t *result); +static bool +motion_sanity_walker_adapter(Node *node, void *result) +{ + return motion_sanity_walker(node, (sanity_result_t *) result); +} + static bool motion_sanity_walker(Node *node, sanity_result_t *result) { @@ -1542,12 +1566,12 @@ motion_sanity_walker(Node *node, sanity_result_t *result) case T_Sort: case T_Material: case T_ForeignScan: - if (plan_tree_walker(node, motion_sanity_walker, result, true)) + if (plan_tree_walker(node, motion_sanity_walker_adapter, result, true)) return true; break; case T_Motion: - if (plan_tree_walker(node, motion_sanity_walker, result, true)) + if (plan_tree_walker(node, motion_sanity_walker_adapter, result, true)) return true; result->flags |= SANITY_MOTION; elog(DEBUG5, " found motion"); diff --git a/src/backend/cdb/cdbmutate.c b/src/backend/cdb/cdbmutate.c index 4b98f58dcd8..8136eb20841 100644 --- a/src/backend/cdb/cdbmutate.c +++ b/src/backend/cdb/cdbmutate.c @@ -61,6 +61,7 @@ typedef struct */ static Node *pre_dispatch_function_evaluation_mutator(Node *node, pre_dispatch_function_evaluation_context *context); +static Node *pre_dispatch_function_evaluation_mutator_adapter(Node *node, void *context); static bool replace_shareinput_targetlists_walker(Node *node, PlannerInfo *root, bool fPop); @@ -238,6 +239,14 @@ typedef struct ctid_inventory_context Index relid; } ctid_inventory_context; +static bool +ctid_inventory_walker(Node *node, ctid_inventory_context *inv); +static bool +ctid_inventory_walker_adapter(Node *node, void *inv) +{ + return ctid_inventory_walker(node, (ctid_inventory_context *) inv); +} + static bool ctid_inventory_walker(Node *node, ctid_inventory_context *inv) { @@ -259,7 +268,7 @@ ctid_inventory_walker(Node *node, ctid_inventory_context *inv) } return false; } - return plan_tree_walker(node, ctid_inventory_walker, inv, true); + return plan_tree_walker(node, ctid_inventory_walker_adapter, inv, true); } void @@ -1181,6 +1190,14 @@ typedef struct ParamWalkerContext Bitmapset *scanrelids; /* Bitmapset for scanrelid */ } ParamWalkerContext; +static bool +param_walker(Node *node, ParamWalkerContext *context); +static bool +param_walker_adapter(Node *node, void *context) +{ + return param_walker(node, (ParamWalkerContext *) context); +} + static bool param_walker(Node *node, ParamWalkerContext *context) { @@ -1277,7 +1294,7 @@ param_walker(Node *node, ParamWalkerContext *context) break; } - return plan_tree_walker(node, param_walker, context, false); + return plan_tree_walker(node, param_walker_adapter, context, false); } /* @@ -1343,6 +1360,14 @@ rte_param_walker(List *rtable, ParamWalkerContext *context) } } +static bool +initplan_walker(Node *node, ParamWalkerContext *context); +static bool +initplan_walker_adapter(Node *node, void *context) +{ + return initplan_walker(node, (ParamWalkerContext *) context); +} + static bool initplan_walker(Node *node, ParamWalkerContext *context) { @@ -1406,7 +1431,7 @@ initplan_walker(Node *node, ParamWalkerContext *context) plan->initPlan = new_initplans; } - return plan_tree_walker(node, initplan_walker, context, true); + return plan_tree_walker(node, initplan_walker_adapter, context, true); } /* @@ -1779,13 +1804,20 @@ pre_dispatch_function_evaluation_mutator(Node *node, * simplify its arguments (if any) using this routine. */ new_node = plan_tree_mutator(node, - pre_dispatch_function_evaluation_mutator, + pre_dispatch_function_evaluation_mutator_adapter, (void *) context, true); return new_node; } +static Node * +pre_dispatch_function_evaluation_mutator_adapter(Node *node, void *context) +{ + return pre_dispatch_function_evaluation_mutator( + node, (pre_dispatch_function_evaluation_context *) context); +} + /* * cdbpathtoplan_create_sri_path * diff --git a/src/backend/cdb/cdbplan.c b/src/backend/cdb/cdbplan.c index ebc09d54ffc..d2023c6999e 100644 --- a/src/backend/cdb/cdbplan.c +++ b/src/backend/cdb/cdbplan.c @@ -30,9 +30,9 @@ #include "utils/lsyscache.h" -static void mutate_plan_fields(Plan *newplan, Plan *oldplan, Node *(*mutator) (), void *context); -static void mutate_join_fields(Join *newplan, Join *oldplan, Node *(*mutator) (), void *context); -static void mutate_sort_fields(Sort* newplan, Sort* oldplan, Node *(*mutator) (), void *context); +static void mutate_plan_fields(Plan *newplan, Plan *oldplan, Node *(*mutator) (Node *, void *), void *context); +static void mutate_join_fields(Join *newplan, Join *oldplan, Node *(*mutator) (Node *, void *), void *context); +static void mutate_sort_fields(Sort* newplan, Sort* oldplan, Node *(*mutator) (Node *, void *), void *context); @@ -107,7 +107,7 @@ static void mutate_sort_fields(Sort* newplan, Sort* oldplan, Node *(*mutator) () Node * plan_tree_mutator(Node *node, - Node *(*mutator) (), + Node *(*mutator) (Node *, void *), void *context, bool recurse_into_subplans) { @@ -1101,7 +1101,7 @@ plan_tree_mutator(Node *node, * */ static void -mutate_plan_fields(Plan *newplan, Plan *oldplan, Node *(*mutator) (), void *context) +mutate_plan_fields(Plan *newplan, Plan *oldplan, Node *(*mutator) (Node *, void *), void *context) { /* * Scalar fields startup_cost total_cost plan_rows plan_width nParamExec @@ -1128,7 +1128,7 @@ mutate_plan_fields(Plan *newplan, Plan *oldplan, Node *(*mutator) (), void *cont * */ static void -mutate_join_fields(Join *newjoin, Join *oldjoin, Node *(*mutator) (), void *context) +mutate_join_fields(Join *newjoin, Join *oldjoin, Node *(*mutator) (Node *, void *), void *context) { /* A Join node is a Plan node. */ mutate_plan_fields((Plan *) newjoin, (Plan *) oldjoin, mutator, context); @@ -1146,7 +1146,7 @@ mutate_join_fields(Join *newjoin, Join *oldjoin, Node *(*mutator) (), void *cont * */ static void -mutate_sort_fields(Sort *newsort, Sort *oldsort, Node *(*mutator) (), void *context) +mutate_sort_fields(Sort *newsort, Sort *oldsort, Node *(*mutator) (Node *, void *), void *context) { /* A Join node is a Plan node. */ mutate_plan_fields((Plan *) newsort, (Plan *) oldsort, mutator, context); diff --git a/src/backend/cdb/dispatcher/cdbdisp_query.c b/src/backend/cdb/dispatcher/cdbdisp_query.c index 3d5045b4fdb..1547c4dc125 100644 --- a/src/backend/cdb/dispatcher/cdbdisp_query.c +++ b/src/backend/cdb/dispatcher/cdbdisp_query.c @@ -1654,6 +1654,14 @@ getExecParamsToDispatch(PlannedStmt *stmt, ParamExecData *intPrm) * This list is input to the function findParamType(), which loops over the * list looking for a specific paramid, and returns its type. */ +static bool +param_walker(Node *node, ParamWalkerContext *context); +static bool +param_walker_adapter(Node *node, void *context) +{ + return param_walker(node, (ParamWalkerContext *) context); +} + static bool param_walker(Node *node, ParamWalkerContext *context) { @@ -1670,7 +1678,7 @@ param_walker(Node *node, ParamWalkerContext *context) return false; } } - return plan_tree_walker(node, param_walker, context, true); + return plan_tree_walker(node, param_walker_adapter, context, true); } /* diff --git a/src/backend/cdb/dispatcher/cdbgang.c b/src/backend/cdb/dispatcher/cdbgang.c index 85e69086974..4f1629dbd29 100644 --- a/src/backend/cdb/dispatcher/cdbgang.c +++ b/src/backend/cdb/dispatcher/cdbgang.c @@ -167,7 +167,7 @@ AllocateGang(CdbDispatcherState *ds, GangType type, List *segments) bool segment_failure_due_to_recovery(const char *error_message) { - char *fatal = NULL, + const char *fatal = NULL, *ptr = NULL; int fatal_len = 0; @@ -210,7 +210,7 @@ segment_failure_due_to_recovery(const char *error_message) bool segment_failure_due_to_missing_writer(const char *error_message) { - char *fatal = NULL, + const char *fatal = NULL, *ptr = NULL; int fatal_len = 0; @@ -232,7 +232,7 @@ segment_failure_due_to_missing_writer(const char *error_message) bool segment_failure_due_to_fault_injector(const char *error_message) { - char *fatal = NULL, + const char *fatal = NULL, *ptr = NULL; int fatal_len = 0; diff --git a/src/backend/commands/resgroupcmds.c b/src/backend/commands/resgroupcmds.c index 3b325ba729c..8b545112873 100644 --- a/src/backend/commands/resgroupcmds.c +++ b/src/backend/commands/resgroupcmds.c @@ -1567,8 +1567,8 @@ checkCpusetSyntax(const char *cpuset) extern void checkCpuSetByRole(const char *cpuset) { - char *first = NULL; - char *last = NULL; + const char *first = NULL; + const char *last = NULL; if (cpuset == NULL) { @@ -1627,12 +1627,12 @@ getCpuSetByRole(const char *cpuset) errmsg("Unexpected cpuset invalid in getCpuSetByRole"))); } - char *first = strchr(cpuset, ';'); + const char *first = strchr(cpuset, ';'); if (first == NULL) splitcpuset = (char *)cpuset; else { - char *second = first + 1; + char *scpu = (char*)first + 1; /* Get result cpuset by IS_QUERY_DISPATCHER(), on master or segment */ if (IS_QUERY_DISPATCHER()) @@ -1649,6 +1649,6 @@ getCpuSetByRole(const char *cpuset) } } - return splitcpuset; + return (char *)splitcpuset; } diff --git a/src/backend/executor/execUtils.c b/src/backend/executor/execUtils.c index 5f9473c379e..e1ea7b849f1 100644 --- a/src/backend/executor/execUtils.c +++ b/src/backend/executor/execUtils.c @@ -2398,6 +2398,15 @@ typedef struct MotionFinderContext /* * Walker to find a motion node that matches a particular motionID */ +static bool +MotionFinderWalker(Plan *node, + void *context); +static bool +MotionFinderWalker_adapter(Node *node, void *context) +{ + return MotionFinderWalker((Plan *) node, context); +} + static bool MotionFinderWalker(Plan *node, void *context) @@ -2420,7 +2429,7 @@ MotionFinderWalker(Plan *node, } /* Continue walking */ - return plan_tree_walker((Node*)node, MotionFinderWalker, ctx, true); + return plan_tree_walker((Node*)node, MotionFinderWalker_adapter, ctx, true); } /* diff --git a/src/backend/nodes/nodeFuncs.c b/src/backend/nodes/nodeFuncs.c index ec2ad3b889a..82c41f92b78 100644 --- a/src/backend/nodes/nodeFuncs.c +++ b/src/backend/nodes/nodeFuncs.c @@ -35,7 +35,7 @@ static bool planstate_walk_members(PlanState **planstates, int nplans, void *context); static Node * -range_table_entry_mutator(RangeTblEntry *rte, Node *(*mutator)(), void *context, int flags); +range_table_entry_mutator(RangeTblEntry *rte, Node *(*mutator)(Node *, void *), void *context, int flags); /* * exprType - @@ -3970,7 +3970,7 @@ query_tree_mutator_impl(Query *query, } static Node * -range_table_entry_mutator(RangeTblEntry *rte, Node *(*mutator)(), void *context, int flags) +range_table_entry_mutator(RangeTblEntry *rte, Node *(*mutator)(Node *, void *), void *context, int flags) { RangeTblEntry *newrte; diff --git a/src/backend/optimizer/plan/createplan.c b/src/backend/optimizer/plan/createplan.c index 585c1385068..34e06f6411f 100644 --- a/src/backend/optimizer/plan/createplan.c +++ b/src/backend/optimizer/plan/createplan.c @@ -9320,6 +9320,11 @@ contain_motion(PlannerInfo *root, Node *node) return ctx.result; } +static bool +contain_motion_walk(Node *node, contain_motion_walk_context *ctx); +static bool +contain_motion_walk_adapter(Node *node, void *ctx); + static bool contain_motion_walk(Node *node, contain_motion_walk_context *ctx) { @@ -9344,7 +9349,7 @@ contain_motion_walk(Node *node, contain_motion_walk_context *ctx) return false; Plan *plan = list_nth(root->glob->subplans, plan_id - 1); - return plan_tree_walker((Node *) plan, contain_motion_walk, ctx, true); + return plan_tree_walker((Node *) plan, contain_motion_walk_adapter, ctx, true); } } @@ -9354,7 +9359,13 @@ contain_motion_walk(Node *node, contain_motion_walk_context *ctx) return true; } - return plan_tree_walker((Node *) node, contain_motion_walk, ctx, true); + return plan_tree_walker((Node *) node, contain_motion_walk_adapter, ctx, true); +} + +static bool +contain_motion_walk_adapter(Node *node, void *ctx) +{ + return contain_motion_walk(node, (contain_motion_walk_context *) ctx); } /* diff --git a/src/backend/optimizer/plan/setrefs.c b/src/backend/optimizer/plan/setrefs.c index 99c5b1372a6..eb0087e5099 100644 --- a/src/backend/optimizer/plan/setrefs.c +++ b/src/backend/optimizer/plan/setrefs.c @@ -4493,6 +4493,11 @@ cdb_extract_plan_dependencies(PlannerInfo *root, Plan *plan) (void) cdb_extract_plan_dependencies_walker((Node *) plan, &context); } +static bool +cdb_extract_plan_dependencies_walker(Node *node, cdb_extract_plan_dependencies_context *context); +static bool +cdb_extract_plan_dependencies_walker_adapter(Node *node, void *context); + static bool cdb_extract_plan_dependencies_walker(Node *node, cdb_extract_plan_dependencies_context *context) { @@ -4501,10 +4506,17 @@ cdb_extract_plan_dependencies_walker(Node *node, cdb_extract_plan_dependencies_c /* Extract function dependencies and check for regclass Consts */ fix_expr_common(context->root, node); - return plan_tree_walker(node, cdb_extract_plan_dependencies_walker, + return plan_tree_walker(node, cdb_extract_plan_dependencies_walker_adapter, (void *) context, true); } +static bool +cdb_extract_plan_dependencies_walker_adapter(Node *node, void *context) +{ + return cdb_extract_plan_dependencies_walker( + node, (cdb_extract_plan_dependencies_context *) context); +} + /* * cdb_expr_requires_full_eval * diff --git a/src/backend/optimizer/util/predtest_valueset.c b/src/backend/optimizer/util/predtest_valueset.c index 381b60e952b..e6ec7d6600b 100644 --- a/src/backend/optimizer/util/predtest_valueset.c +++ b/src/backend/optimizer/util/predtest_valueset.c @@ -28,7 +28,7 @@ #define INT32MAX (2147483647) #define INT32MIN (-2147483648) -static HTAB *CreateNodeSetHashTable(); +static HTAB *CreateNodeSetHashTable(MemoryContext memoryContext); static void AddValue(PossibleValueSet *pvs, Const *valueToCopy); static void RemoveValue(PossibleValueSet *pvs, Const *value); static bool ContainsValue(PossibleValueSet *pvs, Const *value); diff --git a/src/backend/optimizer/util/walkers.c b/src/backend/optimizer/util/walkers.c index 0de8c280e3b..4f45f5a619d 100644 --- a/src/backend/optimizer/util/walkers.c +++ b/src/backend/optimizer/util/walkers.c @@ -36,8 +36,8 @@ void exec_init_plan_tree_base(plan_tree_base_prefix *base, PlannedStmt *stmt) base->node = (Node*)stmt; } -static bool walk_scan_node_fields(Scan *scan, bool (*walker) (), void *context); -static bool walk_join_node_fields(Join *join, bool (*walker) (), void *context); +static bool walk_scan_node_fields(Scan *scan, bool (*walker) (Node *, void *), void *context); +static bool walk_join_node_fields(Join *join, bool (*walker) (Node *, void *), void *context); /* ----------------------------------------------------------------------- * @@ -57,7 +57,7 @@ static bool walk_join_node_fields(Join *join, bool (*walker) (), void *context); */ bool walk_plan_node_fields(Plan *plan, - bool (*walker) (), + bool (*walker) (Node *, void *), void *context) { /* target list to be computed at this node */ @@ -101,7 +101,7 @@ walk_plan_node_fields(Plan *plan, */ bool walk_scan_node_fields(Scan *scan, - bool (*walker) (), + bool (*walker) (Node *, void *), void *context) { /* A Scan node is a kind of Plan node. */ @@ -126,7 +126,7 @@ walk_scan_node_fields(Scan *scan, */ bool walk_join_node_fields(Join *join, - bool (*walker) (), + bool (*walker) (Node *, void *), void *context) { /* A Join node is a kind of Plan node. */ @@ -149,7 +149,7 @@ walk_join_node_fields(Join *join, */ bool plan_tree_walker(Node *node, - bool (*walker) (), + bool (*walker) (Node *, void *), void *context, bool recurse_into_subplans) { @@ -252,18 +252,18 @@ plan_tree_walker(Node *node, case T_DynamicForeignScan: if (walk_scan_node_fields((Scan *) node, walker, context)) return true; - if (walker(((ForeignScan *) node)->fdw_exprs, context)) + if (walker((Node *) ((ForeignScan *) node)->fdw_exprs, context)) return true; break; case T_CustomScan: if (walk_scan_node_fields((Scan *) node, walker, context)) return true; - if (walker(((CustomScan *) node)->custom_plans, context)) - return true; - if (walker(((CustomScan *) node)->custom_exprs, context)) - return true; - if (walker(((CustomScan *) node)->custom_scan_tlist, context)) + if (walker((Node *) ((CustomScan *) node)->custom_plans, context)) + return true; + if (walker((Node *) ((CustomScan *) node)->custom_exprs, context)) + return true; + if (walker((Node *) ((CustomScan *) node)->custom_scan_tlist, context)) return true; break; @@ -396,7 +396,7 @@ plan_tree_walker(Node *node, break; case T_DQAExpr: - if (walker(((DQAExpr *)node)->agg_filter, context)) + if (walker((Node *) ((DQAExpr *)node)->agg_filter, context)) return true; /* Other fields are simple items and lists of simple items. */ break; @@ -710,6 +710,11 @@ List *extract_nodes_plan(Plan *pl, int nodeTag, bool descendIntoSubqueries) return context.nodes; } +static bool +extract_nodes_walker(Node *node, extract_context *context); +static bool +extract_nodes_walker_adapter(Node *node, void *context); + static bool extract_nodes_walker(Node *node, extract_context *context) { @@ -758,11 +763,17 @@ extract_nodes_walker(Node *node, extract_context *context) return false; } - return plan_tree_walker(node, extract_nodes_walker, + return plan_tree_walker(node, extract_nodes_walker_adapter, (void *) context, true); } +static bool +extract_nodes_walker_adapter(Node *node, void *context) +{ + return extract_nodes_walker(node, (extract_context *) context); +} + /** * Extract nodes with specific tag. * Same as above, but starts off a scalar expression node rather than a PlannedStmt diff --git a/src/backend/task/entry.c b/src/backend/task/entry.c index e730305a961..357c47dee33 100644 --- a/src/backend/task/entry.c +++ b/src/backend/task/entry.c @@ -230,13 +230,14 @@ parse_cron_entry(char *schedule) return NULL; } -static int -get_list(bits, low, high, names, ch, file) - bitstr_t *bits; /* one bit per flag, default=FALSE */ - int low, high; /* bounds, impl. offset for bitstr */ - char *names[]; /* NULL or *[] of names for these elements */ - int ch; /* current character being processed */ - FILE *file; /* file being read */ +static int get_list( + bitstr_t *bits, /* one bit per flag, default = false */ + int low, + int high, /* bounds, implementation offset for bitstr */ + char *names[], /* NULL or array of element names */ + int ch, /* current character being processed */ + FILE *file /* file being read */ +) { register int done; @@ -273,14 +274,18 @@ get_list(bits, low, high, names, ch, file) return ch; } + +/* +* +* bits one bit per flag, default=FALSE +* low, +* high; bounds, impl. offset for bitstr +* names[]; NULL or names of elements +* ch; current character being processed +* file; file being read +*/ static int -get_range(bits, low, high, names, ch, file) - bitstr_t *bits; /* one bit per flag, default=FALSE */ - int low, - high; /* bounds, impl. offset for bitstr */ - char *names[]; /* NULL or names of elements */ - int ch; /* current character being processed */ - FILE *file; /* file being read */ +get_range(bitstr_t *bits, int low, int high, char *names[], int ch, FILE * file) { /* range = number | number "-" number [ "/" number ] */ register int i; @@ -370,13 +375,15 @@ get_range(bits, low, high, names, ch, file) return ch; } +/* + int *numptr; where does the result go? + int low; offset applied to result if symbolic enum used + char *names[]; symbolic names, if any, for enums + int ch; current character + FILE *file; source +*/ static int -get_number(numptr, low, names, ch, file) - int *numptr; /* where does the result go? */ - int low; /* offset applied to result if symbolic enum used */ - char *names[]; /* symbolic names, if any, for enums */ - int ch; /* current character */ - FILE *file; /* source */ +get_number(int *numptr, int low, char *names[], int ch, FILE *file) { char temp[MAX_TEMPSTR], *pc; int len, i, all_digits; @@ -427,12 +434,11 @@ get_number(numptr, low, names, ch, file) return EOF; } +/* + bitstr_t *bits; one bit per flag, default=FALSE +*/ static int -set_element(bits, low, high, number) - bitstr_t *bits; /* one bit per flag, default=FALSE */ - int low; - int high; - int number; +set_element(bitstr_t *bits, int low, int high, int number) { Debug(DPARS|DEXT, ("set_element(?,%d,%d,%d)\n", low, high, number)) diff --git a/src/backend/task/misc.c b/src/backend/task/misc.c index abc2f8a7f62..bbe16a79620 100644 --- a/src/backend/task/misc.c +++ b/src/backend/task/misc.c @@ -34,8 +34,7 @@ * get_char(file) : like getc() but increment LineNumber on newlines */ int -get_char(file) - FILE *file; +get_char(FILE *file) { int ch; @@ -75,9 +74,7 @@ get_char(file) * unget_char(ch, file) : like ungetc but do LineNumber processing */ void -unget_char(ch, file) - int ch; - FILE *file; +unget_char(int ch, FILE *file) { /* * Sneaky hack: we wrapped an in-memory buffer into a FILE* @@ -108,11 +105,7 @@ unget_char(ch, file) * (4) returns EOF or terminating character, whichever */ int -get_string(string, size, file, terms) - char *string; - int size; - FILE *file; - char *terms; +get_string(char *string, int size, FILE *file, char *terms) { int ch; @@ -133,8 +126,7 @@ get_string(string, size, file, terms) * skip_comments(file) : read past comment (if any) */ void -skip_comments(file) - FILE *file; +skip_comments(FILE *file) { int ch; diff --git a/src/backend/utils/adt/xid8funcs.c b/src/backend/utils/adt/xid8funcs.c index 254803a294c..9650fc0b6f8 100644 --- a/src/backend/utils/adt/xid8funcs.c +++ b/src/backend/utils/adt/xid8funcs.c @@ -227,7 +227,7 @@ is_visible_fxid(FullTransactionId value, const pg_snapshot *snap) #ifdef USE_BSEARCH_IF_NXIP_GREATER else if (snap->nxip > USE_BSEARCH_IF_NXIP_GREATER) { - void *res; + const void *res; res = bsearch(&value, snap->xip, snap->nxip, sizeof(FullTransactionId), cmp_fxid); diff --git a/src/backend/utils/misc/fstream/fstream.c b/src/backend/utils/misc/fstream/fstream.c index 56a730b98ad..a6dbe145b84 100644 --- a/src/backend/utils/misc/fstream/fstream.c +++ b/src/backend/utils/misc/fstream/fstream.c @@ -433,7 +433,7 @@ static int glob_path(fstream_t *fs, const char *path) while (*path == ' ') path++; - p = strchr(path, ' '); + p = (char *)strchr(path, ' '); if (p) *p++ = 0; diff --git a/src/backend/utils/misc/uriparser.c b/src/backend/utils/misc/uriparser.c index 0ee2ecad847..58cd124ebf5 100644 --- a/src/backend/utils/misc/uriparser.c +++ b/src/backend/utils/misc/uriparser.c @@ -70,7 +70,7 @@ ParseExternalTableUri(const char *uri_str) else /* not recognized. treat it as a custom protocol */ { - char *post_protocol = strstr(uri_str, "://"); + const char *post_protocol = strstr(uri_str, "://"); if(!post_protocol) { diff --git a/src/backend/utils/resource_manager/memquota.c b/src/backend/utils/resource_manager/memquota.c index 1cf5f805df9..95d91045f15 100644 --- a/src/backend/utils/resource_manager/memquota.c +++ b/src/backend/utils/resource_manager/memquota.c @@ -287,6 +287,16 @@ IsRootOperatorInGroup(Node *node) * in a plan. */ +static bool PolicyAutoPrelimWalker(Node *node, PolicyAutoContext *context); +static bool PolicyAutoAssignWalker(Node *node, PolicyAutoContext *context); +static bool PolicyEagerFreePrelimWalker(Node *node, PolicyEagerFreeContext *context); +static bool PolicyEagerFreeAssignWalker(Node *node, PolicyEagerFreeContext *context); + +static bool PolicyAutoPrelimWalker_adapter(Node *node, void *context); +static bool PolicyAutoAssignWalker_adapter(Node *node, void *context); +static bool PolicyEagerFreePrelimWalker_adapter(Node *node, void *context); +static bool PolicyEagerFreeAssignWalker_adapter(Node *node, void *context); + static bool PolicyAutoPrelimWalker(Node *node, PolicyAutoContext *context) { if (node == NULL) @@ -306,7 +316,7 @@ static bool PolicyAutoPrelimWalker(Node *node, PolicyAutoContext *context) context->numNonMemIntensiveOperators++; } } - return plan_tree_walker(node, PolicyAutoPrelimWalker, context, true); + return plan_tree_walker(node, PolicyAutoPrelimWalker_adapter, context, true); } /** @@ -350,7 +360,7 @@ static bool PolicyAutoAssignWalker(Node *node, PolicyAutoContext *context) elog(GP_RESMANAGER_MEMORY_LOG_LEVEL, "assigning plan node memory = %dKB", (int )planNode->operatorMemKB); } } - return plan_tree_walker(node, PolicyAutoAssignWalker, context, true); + return plan_tree_walker(node, PolicyAutoAssignWalker_adapter, context, true); } /** @@ -715,7 +725,7 @@ PolicyEagerFreePrelimWalker(Node *node, PolicyEagerFreeContext *context) } } - bool result = plan_tree_walker(node, PolicyEagerFreePrelimWalker, context, true); + bool result = plan_tree_walker(node, PolicyEagerFreePrelimWalker_adapter, context, true); Assert(!result); /* @@ -820,7 +830,7 @@ PolicyEagerFreeAssignWalker(Node *node, PolicyEagerFreeContext *context) } } - bool result = plan_tree_walker(node, PolicyEagerFreeAssignWalker, context, true); + bool result = plan_tree_walker(node, PolicyEagerFreeAssignWalker_adapter, context, true); Assert(!result); /* @@ -835,6 +845,30 @@ PolicyEagerFreeAssignWalker(Node *node, PolicyEagerFreeContext *context) return result; } +static bool +PolicyAutoPrelimWalker_adapter(Node *node, void *context) +{ + return PolicyAutoPrelimWalker(node, (PolicyAutoContext *) context); +} + +static bool +PolicyAutoAssignWalker_adapter(Node *node, void *context) +{ + return PolicyAutoAssignWalker(node, (PolicyAutoContext *) context); +} + +static bool +PolicyEagerFreePrelimWalker_adapter(Node *node, void *context) +{ + return PolicyEagerFreePrelimWalker(node, (PolicyEagerFreeContext *) context); +} + +static bool +PolicyEagerFreeAssignWalker_adapter(Node *node, void *context) +{ + return PolicyEagerFreeAssignWalker(node, (PolicyEagerFreeContext *) context); +} + /* * PolicyEagerFreeAssignOperatorMemoryKB * Main entry point for memory quota OPTIMIZE. This function distributes the memory diff --git a/src/common/compression.c b/src/common/compression.c index ee937623f0b..378e2381552 100644 --- a/src/common/compression.c +++ b/src/common/compression.c @@ -425,7 +425,7 @@ validate_compress_specification(pg_compress_specification *spec) void parse_compress_options(const char *option, char **algorithm, char **detail) { - char *sep; + const char *sep; char *endp; long result; diff --git a/src/include/cdb/cdbplan.h b/src/include/cdb/cdbplan.h index b133d832ddf..892b8b07049 100644 --- a/src/include/cdb/cdbplan.h +++ b/src/include/cdb/cdbplan.h @@ -18,7 +18,7 @@ #include "optimizer/walkers.h" -extern Node * plan_tree_mutator(Node *node, Node *(*mutator) (), void *context, bool recurse_into_subplans); +extern Node * plan_tree_mutator(Node *node, Node *(*mutator) (Node *, void *), void *context, bool recurse_into_subplans); extern String *get_tle_name(TargetEntry *tle, List *rtable, const char *default_name); diff --git a/src/include/optimizer/walkers.h b/src/include/optimizer/walkers.h index d29bc5551e8..54234ada1e1 100644 --- a/src/include/optimizer/walkers.h +++ b/src/include/optimizer/walkers.h @@ -31,9 +31,9 @@ extern void exec_init_plan_tree_base(plan_tree_base_prefix *base, PlannedStmt *s extern Plan *plan_tree_base_subplan_get_plan(plan_tree_base_prefix *base, SubPlan *subplan); extern void plan_tree_base_subplan_put_plan(plan_tree_base_prefix *base, SubPlan *subplan, Plan *plan); -extern bool walk_plan_node_fields(Plan *plan, bool (*walker) (), void *context); +extern bool walk_plan_node_fields(Plan *plan, bool (*walker) (Node *, void *), void *context); -extern bool plan_tree_walker(Node *node, bool (*walker) (), void *context, bool recurse_into_subplans); +extern bool plan_tree_walker(Node *node, bool (*walker) (Node *, void *), void *context, bool recurse_into_subplans); /** * Useful functions that aggregate information from expressions or plans. diff --git a/src/timezone/zic.c b/src/timezone/zic.c index a51fb55c721..55a6835f367 100644 --- a/src/timezone/zic.c +++ b/src/timezone/zic.c @@ -2638,7 +2638,7 @@ doabbr(char *abbr, struct zone const *zp, char const *letters, bool isdst, zic_t save, bool doquotes) { char *cp; - char *slashp; + const char *slashp; size_t len; char const *format = zp->z_format; From eb17a52d10f2b8a64aef7463408944dcd6ca2286 Mon Sep 17 00:00:00 2001 From: reshke Date: Tue, 4 Aug 2026 19:19:57 +0000 Subject: [PATCH 2/2] f --- gpcontrib/pg_hint_plan/pg_hint_plan.c | 4 ++-- src/backend/commands/resgroupcmds.c | 2 +- src/bin/gpfdist/gpfdist.c | 2 +- src/bin/pg_waldump/pg_waldump.c | 2 +- src/bin/pgbench/pgbench.c | 2 +- src/test/regress/pg_regress.c | 6 +++--- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/gpcontrib/pg_hint_plan/pg_hint_plan.c b/gpcontrib/pg_hint_plan/pg_hint_plan.c index 46fe8ca60de..691eb6e6367 100644 --- a/gpcontrib/pg_hint_plan/pg_hint_plan.c +++ b/gpcontrib/pg_hint_plan/pg_hint_plan.c @@ -2003,7 +2003,7 @@ get_hints_from_comment(const char *p) { const char *hint_head; char *head; - char *tail; + const char *tail; int len; if (p == NULL) @@ -2050,7 +2050,7 @@ get_hints_from_comment(const char *p) } /* We don't support nested block comments. */ - if ((head = strstr(p, BLOCK_COMMENT_START)) != NULL && head < tail) + if ((head = (char *)strstr(p, BLOCK_COMMENT_START)) != NULL && head < tail) { hint_ereport(head, ("Nested block comments are not supported.")); return NULL; diff --git a/src/backend/commands/resgroupcmds.c b/src/backend/commands/resgroupcmds.c index 8b545112873..98545870244 100644 --- a/src/backend/commands/resgroupcmds.c +++ b/src/backend/commands/resgroupcmds.c @@ -1632,7 +1632,7 @@ getCpuSetByRole(const char *cpuset) splitcpuset = (char *)cpuset; else { - char *scpu = (char*)first + 1; + char *second = (char*)first + 1; /* Get result cpuset by IS_QUERY_DISPATCHER(), on master or segment */ if (IS_QUERY_DISPATCHER()) diff --git a/src/bin/gpfdist/gpfdist.c b/src/bin/gpfdist/gpfdist.c index ad7fb868313..b9adb5f6035 100644 --- a/src/bin/gpfdist/gpfdist.c +++ b/src/bin/gpfdist/gpfdist.c @@ -3774,7 +3774,7 @@ static int request_set_transform(request_t *r) */ char* param = "#transform="; - char* start = strstr(r->path, param); + char* start = (char*)strstr(r->path, param); if (start) { /* diff --git a/src/bin/pg_waldump/pg_waldump.c b/src/bin/pg_waldump/pg_waldump.c index 92e8c85f745..fad472eb6da 100644 --- a/src/bin/pg_waldump/pg_waldump.c +++ b/src/bin/pg_waldump/pg_waldump.c @@ -160,7 +160,7 @@ create_fullpage_directory(char *path) static void split_path(const char *path, char **dir, char **fname) { - char *sep; + const char *sep; /* split filepath into directory & filename */ sep = strrchr(path, '/'); diff --git a/src/bin/pgbench/pgbench.c b/src/bin/pgbench/pgbench.c index 4dc4068b5c4..b403844d1cb 100644 --- a/src/bin/pgbench/pgbench.c +++ b/src/bin/pgbench/pgbench.c @@ -6140,7 +6140,7 @@ findBuiltin(const char *name) static int parseScriptWeight(const char *option, char **script) { - char *sep; + const char *sep; int weight; if ((sep = strrchr(option, WSEP))) diff --git a/src/test/regress/pg_regress.c b/src/test/regress/pg_regress.c index dd15d9cb5e5..756243f0b9c 100644 --- a/src/test/regress/pg_regress.c +++ b/src/test/regress/pg_regress.c @@ -1187,8 +1187,8 @@ char * get_expectfile(const char *testname, const char *file, const char *default_expectfile) { char expectpath[MAXPGPATH]; - char *file_type; - char *file_name; + const char *file_type; + const char *file_name; char base_file[MAXPGPATH]; _resultmap *rm; char buf[MAXPGPATH]; @@ -1219,7 +1219,7 @@ get_expectfile(const char *testname, const char *file, const char *default_expec * up to the last slash. */ { - char *p = strrchr(default_expectfile, '/'); + const char *p = strrchr(default_expectfile, '/'); if (!p) return NULL;