0001-gen_guc_tables-reject-unrecognized-field-names-in-gu.patch
application/octet-stream
Filename: 0001-gen_guc_tables-reject-unrecognized-field-names-in-gu.patch
Type: application/octet-stream
Part: 0
Message:
gen_guc_tables improvements
Patch
Format: format-patch
Series: patch 0001
Subject: gen_guc_tables: reject unrecognized field names in guc_parameters.dat
| File | + | − |
|---|---|---|
| src/backend/utils/misc/gen_guc_tables.pl | 19 | 0 |
From 2dea67bdc43b93c8d85979cc4f4a0ed839dad6e5 Mon Sep 17 00:00:00 2001
From: Zsolt Parragi <zsolt.parragi@percona.com>
Date: Sun, 15 Mar 2026 11:21:33 +0000
Subject: [PATCH 1/4] gen_guc_tables: reject unrecognized field names in
guc_parameters.dat
Previously, a typo in a field name (e.g. "contex" instead of "context")
would be silently ignored, potentially leading to subtle bugs or missing
configuration. Add a whitelist of all recognized fields and report an
error if any entry contains an unknown key.
---
src/backend/utils/misc/gen_guc_tables.pl | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/src/backend/utils/misc/gen_guc_tables.pl b/src/backend/utils/misc/gen_guc_tables.pl
index a285c62f98d..ba2e6f001f1 100644
--- a/src/backend/utils/misc/gen_guc_tables.pl
+++ b/src/backend/utils/misc/gen_guc_tables.pl
@@ -53,6 +53,25 @@ sub validate_guc_entry
string => [], # no extra required fields
);
+ # All fields recognized by the generator. "line_number" is injected
+ # by Catalog::ParseData and is not a user-facing field.
+ my %valid_fields = map { $_ => 1 } (
+ @required_common,
+ qw(long_desc flags ifdef min max options
+ check_hook assign_hook show_hook
+ line_number));
+
+ for my $f (sort keys %$entry)
+ {
+ unless ($valid_fields{$f})
+ {
+ die sprintf(
+ qq{%s:%d: error: entry "%s" has unrecognized field "%s"\n},
+ $input_fname, $entry->{line_number},
+ $entry->{name} // '<unknown>', $f);
+ }
+ }
+
for my $f (@required_common)
{
unless (defined $entry->{$f})
--
2.43.0