From 46ed0194cfe80ac2ca06ddc17785d83626f2116d Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Fri, 3 Oct 2025 08:27:18 +0200 Subject: [PATCH v1 1/8] Modernize some for loops in guc-related source files, in anticipation of some further restructuring. --- src/backend/utils/misc/guc.c | 135 ++++++++++----------------- src/backend/utils/misc/guc_funcs.c | 3 +- src/backend/utils/misc/help_config.c | 5 +- 3 files changed, 53 insertions(+), 90 deletions(-) diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c index 46fdefebe35..f22189471dc 100644 --- a/src/backend/utils/misc/guc.c +++ b/src/backend/utils/misc/guc.c @@ -285,8 +285,7 @@ ProcessConfigFileInternal(GucContext context, bool applySettings, int elevel) bool error = false; bool applying = false; const char *ConfFileWithError; - ConfigVariable *item, - *head, + ConfigVariable *head, *tail; HASH_SEQ_STATUS status; GUCHashEntry *hentry; @@ -337,7 +336,7 @@ ProcessConfigFileInternal(GucContext context, bool applySettings, int elevel) /* * Prune all items except the last "data_directory" from the list. */ - for (item = head; item; item = item->next) + for (ConfigVariable *item = head; item; item = item->next) { if (!item->ignore && strcmp(item->name, "data_directory") == 0) @@ -385,7 +384,7 @@ ProcessConfigFileInternal(GucContext context, bool applySettings, int elevel) * variable mentioned in the file; and we detect duplicate entries in the * file and mark the earlier occurrences as ignorable. */ - for (item = head; item; item = item->next) + for (ConfigVariable *item = head; item; item = item->next) { struct config_generic *record; @@ -409,9 +408,7 @@ ProcessConfigFileInternal(GucContext context, bool applySettings, int elevel) * avoid the O(N^2) behavior here with some additional state, * but it seems unlikely to be worth the trouble. */ - ConfigVariable *pitem; - - for (pitem = head; pitem != item; pitem = pitem->next) + for (ConfigVariable *pitem = head; pitem != item; pitem = pitem->next) { if (!pitem->ignore && strcmp(pitem->name, item->name) == 0) @@ -455,7 +452,6 @@ ProcessConfigFileInternal(GucContext context, bool applySettings, int elevel) while ((hentry = (GUCHashEntry *) hash_seq_search(&status)) != NULL) { struct config_generic *gconf = hentry->gucvar; - GucStack *stack; if (gconf->reset_source != PGC_S_FILE || (gconf->status & GUC_IS_IN_FILE)) @@ -488,7 +484,7 @@ ProcessConfigFileInternal(GucContext context, bool applySettings, int elevel) gconf->reset_source = PGC_S_DEFAULT; if (gconf->source == PGC_S_FILE) set_guc_source(gconf, PGC_S_DEFAULT); - for (stack = gconf->stack; stack; stack = stack->prev) + for (GucStack *stack = gconf->stack; stack; stack = stack->prev) { if (stack->source == PGC_S_FILE) stack->source = PGC_S_DEFAULT; @@ -532,7 +528,7 @@ ProcessConfigFileInternal(GucContext context, bool applySettings, int elevel) /* * Now apply the values from the config file. */ - for (item = head; item; item = item->next) + for (ConfigVariable *item = head; item; item = item->next) { char *pre_value = NULL; int scres; @@ -708,13 +704,11 @@ guc_free(void *ptr) static bool string_field_used(struct config_string *conf, char *strval) { - GucStack *stack; - if (strval == *(conf->variable) || strval == conf->reset_val || strval == conf->boot_val) return true; - for (stack = conf->gen.stack; stack; stack = stack->prev) + for (GucStack *stack = conf->gen.stack; stack; stack = stack->prev) { if (strval == stack->prior.val.stringval || strval == stack->masked.val.stringval) @@ -747,8 +741,6 @@ set_string_field(struct config_string *conf, char **field, char *newval) static bool extra_field_used(struct config_generic *gconf, void *extra) { - GucStack *stack; - if (extra == gconf->extra) return true; switch (gconf->vartype) @@ -774,7 +766,7 @@ extra_field_used(struct config_generic *gconf, void *extra) return true; break; } - for (stack = gconf->stack; stack; stack = stack->prev) + for (GucStack *stack = gconf->stack; stack; stack = stack->prev) { if (extra == stack->prior.extra || extra == stack->masked.extra) @@ -908,7 +900,6 @@ build_guc_variables(void) HASHCTL hash_ctl; GUCHashEntry *hentry; bool found; - int i; /* * Create the memory context that will hold all GUC-related data. @@ -921,7 +912,7 @@ build_guc_variables(void) /* * Count all the built-in variables, and set their vartypes correctly. */ - for (i = 0; ConfigureNamesBool[i].gen.name; i++) + for (int i = 0; ConfigureNamesBool[i].gen.name; i++) { struct config_bool *conf = &ConfigureNamesBool[i]; @@ -930,7 +921,7 @@ build_guc_variables(void) num_vars++; } - for (i = 0; ConfigureNamesInt[i].gen.name; i++) + for (int i = 0; ConfigureNamesInt[i].gen.name; i++) { struct config_int *conf = &ConfigureNamesInt[i]; @@ -938,7 +929,7 @@ build_guc_variables(void) num_vars++; } - for (i = 0; ConfigureNamesReal[i].gen.name; i++) + for (int i = 0; ConfigureNamesReal[i].gen.name; i++) { struct config_real *conf = &ConfigureNamesReal[i]; @@ -946,7 +937,7 @@ build_guc_variables(void) num_vars++; } - for (i = 0; ConfigureNamesString[i].gen.name; i++) + for (int i = 0; ConfigureNamesString[i].gen.name; i++) { struct config_string *conf = &ConfigureNamesString[i]; @@ -954,7 +945,7 @@ build_guc_variables(void) num_vars++; } - for (i = 0; ConfigureNamesEnum[i].gen.name; i++) + for (int i = 0; ConfigureNamesEnum[i].gen.name; i++) { struct config_enum *conf = &ConfigureNamesEnum[i]; @@ -977,7 +968,7 @@ build_guc_variables(void) &hash_ctl, HASH_ELEM | HASH_FUNCTION | HASH_COMPARE | HASH_CONTEXT); - for (i = 0; ConfigureNamesBool[i].gen.name; i++) + for (int i = 0; ConfigureNamesBool[i].gen.name; i++) { struct config_generic *gucvar = &ConfigureNamesBool[i].gen; @@ -989,7 +980,7 @@ build_guc_variables(void) hentry->gucvar = gucvar; } - for (i = 0; ConfigureNamesInt[i].gen.name; i++) + for (int i = 0; ConfigureNamesInt[i].gen.name; i++) { struct config_generic *gucvar = &ConfigureNamesInt[i].gen; @@ -1001,7 +992,7 @@ build_guc_variables(void) hentry->gucvar = gucvar; } - for (i = 0; ConfigureNamesReal[i].gen.name; i++) + for (int i = 0; ConfigureNamesReal[i].gen.name; i++) { struct config_generic *gucvar = &ConfigureNamesReal[i].gen; @@ -1013,7 +1004,7 @@ build_guc_variables(void) hentry->gucvar = gucvar; } - for (i = 0; ConfigureNamesString[i].gen.name; i++) + for (int i = 0; ConfigureNamesString[i].gen.name; i++) { struct config_generic *gucvar = &ConfigureNamesString[i].gen; @@ -1025,7 +1016,7 @@ build_guc_variables(void) hentry->gucvar = gucvar; } - for (i = 0; ConfigureNamesEnum[i].gen.name; i++) + for (int i = 0; ConfigureNamesEnum[i].gen.name; i++) { struct config_generic *gucvar = &ConfigureNamesEnum[i].gen; @@ -1237,7 +1228,6 @@ find_option(const char *name, bool create_placeholders, bool skip_errors, int elevel) { GUCHashEntry *hentry; - int i; Assert(name); @@ -1254,7 +1244,7 @@ find_option(const char *name, bool create_placeholders, bool skip_errors, * set of supported old names is short enough that a brute-force search is * the best way. */ - for (i = 0; map_old_guc_names[i] != NULL; i += 2) + for (int i = 0; map_old_guc_names[i] != NULL; i += 2) { if (guc_name_compare(name, map_old_guc_names[i]) == 0) return find_option(map_old_guc_names[i + 1], false, @@ -2679,7 +2669,6 @@ convert_to_base_unit(double value, const char *unit, char unitstr[MAX_UNIT_LEN + 1]; int unitlen; const unit_conversion *table; - int i; /* extract unit string to compare to table entries */ unitlen = 0; @@ -2699,7 +2688,7 @@ convert_to_base_unit(double value, const char *unit, else table = time_unit_conversion_table; - for (i = 0; *table[i].unit; i++) + for (int i = 0; *table[i].unit; i++) { if (base_unit == table[i].base_unit && strcmp(unitstr, table[i].unit) == 0) @@ -2735,7 +2724,6 @@ convert_int_from_base_unit(int64 base_value, int base_unit, int64 *value, const char **unit) { const unit_conversion *table; - int i; *unit = NULL; @@ -2744,7 +2732,7 @@ convert_int_from_base_unit(int64 base_value, int base_unit, else table = time_unit_conversion_table; - for (i = 0; *table[i].unit; i++) + for (int i = 0; *table[i].unit; i++) { if (base_unit == table[i].base_unit) { @@ -2777,7 +2765,6 @@ convert_real_from_base_unit(double base_value, int base_unit, double *value, const char **unit) { const unit_conversion *table; - int i; *unit = NULL; @@ -2786,7 +2773,7 @@ convert_real_from_base_unit(double base_value, int base_unit, else table = time_unit_conversion_table; - for (i = 0; *table[i].unit; i++) + for (int i = 0; *table[i].unit; i++) { if (base_unit == table[i].base_unit) { @@ -3027,9 +3014,7 @@ parse_real(const char *value, double *result, int flags, const char **hintmsg) const char * config_enum_lookup_by_value(struct config_enum *record, int val) { - const struct config_enum_entry *entry; - - for (entry = record->options; entry && entry->name; entry++) + for (const struct config_enum_entry *entry = record->options; entry && entry->name; entry++) { if (entry->val == val) return entry->name; @@ -3051,9 +3036,7 @@ bool config_enum_lookup_by_name(struct config_enum *record, const char *value, int *retval) { - const struct config_enum_entry *entry; - - for (entry = record->options; entry && entry->name; entry++) + for (const struct config_enum_entry *entry = record->options; entry && entry->name; entry++) { if (pg_strcasecmp(value, entry->name) == 0) { @@ -3077,7 +3060,6 @@ char * config_enum_get_options(struct config_enum *record, const char *prefix, const char *suffix, const char *separator) { - const struct config_enum_entry *entry; StringInfoData retstr; int seplen; @@ -3085,7 +3067,7 @@ config_enum_get_options(struct config_enum *record, const char *prefix, appendStringInfoString(&retstr, prefix); seplen = strlen(separator); - for (entry = record->options; entry && entry->name; entry++) + for (const struct config_enum_entry *entry = record->options; entry && entry->name; entry++) { if (!entry->hidden) { @@ -3772,8 +3754,6 @@ set_config_with_handle(const char *name, config_handle *handle, } if (makeDefault) { - GucStack *stack; - if (conf->gen.reset_source <= source) { conf->reset_val = newval; @@ -3783,7 +3763,7 @@ set_config_with_handle(const char *name, config_handle *handle, conf->gen.reset_scontext = context; conf->gen.reset_srole = srole; } - for (stack = conf->gen.stack; stack; stack = stack->prev) + for (GucStack *stack = conf->gen.stack; stack; stack = stack->prev) { if (stack->source <= source) { @@ -3870,8 +3850,6 @@ set_config_with_handle(const char *name, config_handle *handle, } if (makeDefault) { - GucStack *stack; - if (conf->gen.reset_source <= source) { conf->reset_val = newval; @@ -3881,7 +3859,7 @@ set_config_with_handle(const char *name, config_handle *handle, conf->gen.reset_scontext = context; conf->gen.reset_srole = srole; } - for (stack = conf->gen.stack; stack; stack = stack->prev) + for (GucStack *stack = conf->gen.stack; stack; stack = stack->prev) { if (stack->source <= source) { @@ -3968,8 +3946,6 @@ set_config_with_handle(const char *name, config_handle *handle, } if (makeDefault) { - GucStack *stack; - if (conf->gen.reset_source <= source) { conf->reset_val = newval; @@ -3979,7 +3955,7 @@ set_config_with_handle(const char *name, config_handle *handle, conf->gen.reset_scontext = context; conf->gen.reset_srole = srole; } - for (stack = conf->gen.stack; stack; stack = stack->prev) + for (GucStack *stack = conf->gen.stack; stack; stack = stack->prev) { if (stack->source <= source) { @@ -4134,8 +4110,6 @@ set_config_with_handle(const char *name, config_handle *handle, if (makeDefault) { - GucStack *stack; - if (conf->gen.reset_source <= source) { set_string_field(conf, &conf->reset_val, newval); @@ -4145,7 +4119,7 @@ set_config_with_handle(const char *name, config_handle *handle, conf->gen.reset_scontext = context; conf->gen.reset_srole = srole; } - for (stack = conf->gen.stack; stack; stack = stack->prev) + for (GucStack *stack = conf->gen.stack; stack; stack = stack->prev) { if (stack->source <= source) { @@ -4236,8 +4210,6 @@ set_config_with_handle(const char *name, config_handle *handle, } if (makeDefault) { - GucStack *stack; - if (conf->gen.reset_source <= source) { conf->reset_val = newval; @@ -4247,7 +4219,7 @@ set_config_with_handle(const char *name, config_handle *handle, conf->gen.reset_scontext = context; conf->gen.reset_srole = srole; } - for (stack = conf->gen.stack; stack; stack = stack->prev) + for (GucStack *stack = conf->gen.stack; stack; stack = stack->prev) { if (stack->source <= source) { @@ -4474,7 +4446,6 @@ static void write_auto_conf_file(int fd, const char *filename, ConfigVariable *head) { StringInfoData buf; - ConfigVariable *item; initStringInfo(&buf); @@ -4494,7 +4465,7 @@ write_auto_conf_file(int fd, const char *filename, ConfigVariable *head) } /* Emit each parameter, properly quoting the value */ - for (item = head; item != NULL; item = item->next) + for (ConfigVariable *item = head; item != NULL; item = item->next) { char *escaped; @@ -4542,7 +4513,7 @@ static void replace_auto_config_value(ConfigVariable **head_p, ConfigVariable **tail_p, const char *name, const char *value) { - ConfigVariable *item, + ConfigVariable *newitem, *next, *prev = NULL; @@ -4551,7 +4522,7 @@ replace_auto_config_value(ConfigVariable **head_p, ConfigVariable **tail_p, * one, but if external tools have modified the config file, there could * be more. */ - for (item = *head_p; item != NULL; item = next) + for (ConfigVariable *item = *head_p; item != NULL; item = next) { next = item->next; if (guc_name_compare(item->name, name) == 0) @@ -4578,21 +4549,21 @@ replace_auto_config_value(ConfigVariable **head_p, ConfigVariable **tail_p, return; /* OK, append a new entry */ - item = palloc(sizeof *item); - item->name = pstrdup(name); - item->value = pstrdup(value); - item->errmsg = NULL; - item->filename = pstrdup(""); /* new item has no location */ - item->sourceline = 0; - item->ignore = false; - item->applied = false; - item->next = NULL; + newitem = palloc_object(ConfigVariable); + newitem->name = pstrdup(name); + newitem->value = pstrdup(value); + newitem->errmsg = NULL; + newitem->filename = pstrdup(""); /* new item has no location */ + newitem->sourceline = 0; + newitem->ignore = false; + newitem->applied = false; + newitem->next = NULL; if (*head_p == NULL) - *head_p = item; + *head_p = newitem; else - (*tail_p)->next = item; - *tail_p = item; + (*tail_p)->next = newitem; + *tail_p = newitem; } @@ -6384,7 +6355,6 @@ void ParseLongOption(const char *string, char **name, char **value) { size_t equal_pos; - char *cp; Assert(string); Assert(name); @@ -6406,7 +6376,7 @@ ParseLongOption(const char *string, char **name, char **value) *value = NULL; } - for (cp = *name; *cp; cp++) + for (char *cp = *name; *cp; cp++) if (*cp == '-') *cp = '_'; } @@ -6420,8 +6390,6 @@ ParseLongOption(const char *string, char **name, char **value) void TransformGUCArray(ArrayType *array, List **names, List **values) { - int i; - Assert(array != NULL); Assert(ARR_ELEMTYPE(array) == TEXTOID); Assert(ARR_NDIM(array) == 1); @@ -6429,7 +6397,7 @@ TransformGUCArray(ArrayType *array, List **names, List **values) *names = NIL; *values = NIL; - for (i = 1; i <= ARR_DIMS(array)[0]; i++) + for (int i = 1; i <= ARR_DIMS(array)[0]; i++) { Datum d; bool isnull; @@ -6533,7 +6501,6 @@ GUCArrayAdd(ArrayType *array, const char *name, const char *value) { int index; bool isnull; - int i; Assert(ARR_ELEMTYPE(array) == TEXTOID); Assert(ARR_NDIM(array) == 1); @@ -6541,7 +6508,7 @@ GUCArrayAdd(ArrayType *array, const char *name, const char *value) index = ARR_DIMS(array)[0] + 1; /* add after end */ - for (i = 1; i <= ARR_DIMS(array)[0]; i++) + for (int i = 1; i <= ARR_DIMS(array)[0]; i++) { Datum d; char *current; @@ -6589,7 +6556,6 @@ GUCArrayDelete(ArrayType *array, const char *name) { struct config_generic *record; ArrayType *newarray; - int i; int index; Assert(name); @@ -6609,7 +6575,7 @@ GUCArrayDelete(ArrayType *array, const char *name) newarray = NULL; index = 1; - for (i = 1; i <= ARR_DIMS(array)[0]; i++) + for (int i = 1; i <= ARR_DIMS(array)[0]; i++) { Datum d; char *val; @@ -6658,7 +6624,6 @@ ArrayType * GUCArrayReset(ArrayType *array) { ArrayType *newarray; - int i; int index; /* if array is currently null, nothing to do */ @@ -6672,7 +6637,7 @@ GUCArrayReset(ArrayType *array) newarray = NULL; index = 1; - for (i = 1; i <= ARR_DIMS(array)[0]; i++) + for (int i = 1; i <= ARR_DIMS(array)[0]; i++) { Datum d; char *val; diff --git a/src/backend/utils/misc/guc_funcs.c b/src/backend/utils/misc/guc_funcs.c index b9e26982abd..f712a5971cf 100644 --- a/src/backend/utils/misc/guc_funcs.c +++ b/src/backend/utils/misc/guc_funcs.c @@ -986,7 +986,6 @@ show_all_file_settings(PG_FUNCTION_ARGS) #define NUM_PG_FILE_SETTINGS_ATTS 7 ReturnSetInfo *rsinfo = (ReturnSetInfo *) fcinfo->resultinfo; ConfigVariable *conf; - int seqno; /* Scan the config files using current context as workspace */ conf = ProcessConfigFileInternal(PGC_SIGHUP, false, DEBUG3); @@ -995,7 +994,7 @@ show_all_file_settings(PG_FUNCTION_ARGS) InitMaterializedSRF(fcinfo, 0); /* Process the results and create a tuplestore */ - for (seqno = 1; conf != NULL; conf = conf->next, seqno++) + for (int seqno = 1; conf != NULL; conf = conf->next, seqno++) { Datum values[NUM_PG_FILE_SETTINGS_ATTS]; bool nulls[NUM_PG_FILE_SETTINGS_ATTS]; diff --git a/src/backend/utils/misc/help_config.c b/src/backend/utils/misc/help_config.c index 55c36ddf051..86812ac881f 100644 --- a/src/backend/utils/misc/help_config.c +++ b/src/backend/utils/misc/help_config.c @@ -46,15 +46,14 @@ void GucInfoMain(void) { struct config_generic **guc_vars; - int numOpts, - i; + int numOpts; /* Initialize the GUC hash table */ build_guc_variables(); guc_vars = get_guc_variables(&numOpts); - for (i = 0; i < numOpts; i++) + for (int i = 0; i < numOpts; i++) { mixedStruct *var = (mixedStruct *) guc_vars[i]; base-commit: b292256272623d1a7532f3893a4565d1944742b4 -- 2.51.0