v1-0001-Modernize-some-for-loops.patch
text/plain
Filename: v1-0001-Modernize-some-for-loops.patch
Type: text/plain
Part: 0
Message:
Reorganize GUC structs
Patch
Format: format-patch
Series: patch v1-0001
Subject: Modernize some for loops
| File | + | − |
|---|---|---|
| src/backend/utils/misc/guc.c | 50 | 85 |
| src/backend/utils/misc/guc_funcs.c | 1 | 2 |
| src/backend/utils/misc/help_config.c | 2 | 3 |
From 46ed0194cfe80ac2ca06ddc17785d83626f2116d Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter@eisentraut.org>
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