v2-0002-Change-config_generic.vartype-to-be-initialized-a.patch
text/plain
Filename: v2-0002-Change-config_generic.vartype-to-be-initialized-a.patch
Type: text/plain
Part: 1
Message:
Re: Reorganize GUC structs
Patch
Format: format-patch
Series: patch v2-0002
Subject: Change config_generic.vartype to be initialized at compile time
| File | + | − |
|---|---|---|
| src/backend/utils/misc/gen_guc_tables.pl | 1 | 0 |
| src/backend/utils/misc/guc.c | 1 | 27 |
| src/include/utils/guc_tables.h | 1 | 1 |
From f4c24d5b87dbbbd1af5740ec12a5d42bd8f1349d Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter@eisentraut.org>
Date: Fri, 3 Oct 2025 08:27:18 +0200
Subject: [PATCH v2 2/5] Change config_generic.vartype to be initialized at
compile time
Previously, this was initialized at run time so that it did not have
to be maintained by hand in guc_tables.c, but since that table is now
generated anyway, we might as well generate this bit as well.
Discussion: https://www.postgresql.org/message-id/flat/8fdfb91e-60fb-44fa-8df6-f5dea47353c9@eisentraut.org
---
src/backend/utils/misc/gen_guc_tables.pl | 1 +
src/backend/utils/misc/guc.c | 28 +-----------------------
src/include/utils/guc_tables.h | 2 +-
3 files changed, 3 insertions(+), 28 deletions(-)
diff --git a/src/backend/utils/misc/gen_guc_tables.pl b/src/backend/utils/misc/gen_guc_tables.pl
index a48a9ebd0eb..b187259bf1e 100644
--- a/src/backend/utils/misc/gen_guc_tables.pl
+++ b/src/backend/utils/misc/gen_guc_tables.pl
@@ -68,6 +68,7 @@ sub print_one_table
if $entry->{long_desc};
printf $ofh "\t\t\t.flags = %s,\n", $entry->{flags}
if $entry->{flags};
+ printf $ofh "\t\t\t.vartype = %s,\n", ('PGC_' . uc($type));
print $ofh "\t\t},\n";
printf $ofh "\t\t.variable = &%s,\n", $entry->{variable};
printf $ofh "\t\t.boot_val = %s,\n", $entry->{boot_val};
diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c
index a64427ac979..a82286cc98a 100644
--- a/src/backend/utils/misc/guc.c
+++ b/src/backend/utils/misc/guc.c
@@ -890,48 +890,22 @@ build_guc_variables(void)
ALLOCSET_DEFAULT_SIZES);
/*
- * Count all the built-in variables, and set their vartypes correctly.
+ * Count all the built-in variables.
*/
for (int i = 0; ConfigureNamesBool[i].gen.name; i++)
- {
- struct config_bool *conf = &ConfigureNamesBool[i];
-
- /* Rather than requiring vartype to be filled in by hand, do this: */
- conf->gen.vartype = PGC_BOOL;
num_vars++;
- }
for (int i = 0; ConfigureNamesInt[i].gen.name; i++)
- {
- struct config_int *conf = &ConfigureNamesInt[i];
-
- conf->gen.vartype = PGC_INT;
num_vars++;
- }
for (int i = 0; ConfigureNamesReal[i].gen.name; i++)
- {
- struct config_real *conf = &ConfigureNamesReal[i];
-
- conf->gen.vartype = PGC_REAL;
num_vars++;
- }
for (int i = 0; ConfigureNamesString[i].gen.name; i++)
- {
- struct config_string *conf = &ConfigureNamesString[i];
-
- conf->gen.vartype = PGC_STRING;
num_vars++;
- }
for (int i = 0; ConfigureNamesEnum[i].gen.name; i++)
- {
- struct config_enum *conf = &ConfigureNamesEnum[i];
-
- conf->gen.vartype = PGC_ENUM;
num_vars++;
- }
/*
* Create hash table with 20% slack
diff --git a/src/include/utils/guc_tables.h b/src/include/utils/guc_tables.h
index c5776be029b..3de3d809545 100644
--- a/src/include/utils/guc_tables.h
+++ b/src/include/utils/guc_tables.h
@@ -177,8 +177,8 @@ struct config_generic
const char *short_desc; /* short desc. of this variable's purpose */
const char *long_desc; /* long desc. of this variable's purpose */
int flags; /* flag bits, see guc.h */
+ enum config_type vartype; /* type of variable */
/* variable fields, initialized at runtime: */
- enum config_type vartype; /* type of variable (set only at startup) */
int status; /* status bits, see below */
GucSource source; /* source of the current actual value */
GucSource reset_source; /* source of the reset_value */
--
2.51.0