aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/misc/guc.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2021-12-27 16:01:10 -0500
committerTom Lane <tgl@sss.pgh.pa.us>2021-12-27 16:01:10 -0500
commitcab5b9ab2c066ba904f13de2681872dcda31e207 (patch)
treec559d1f2e8c9546c2808cd663a77d8d4d3b927a5 /src/backend/utils/misc/guc.c
parent5609cc01c69b80f8788771dc6f5696a459469119 (diff)
downloadpostgresql-cab5b9ab2c066ba904f13de2681872dcda31e207.tar.gz
postgresql-cab5b9ab2c066ba904f13de2681872dcda31e207.zip
Revert changes about warnings/errors for placeholders.
Revert commits 5609cc01c, 2ed8a8cc5, and 75d22069e until we have a less broken idea of how this should work in parallel workers. Per buildfarm. Discussion: https://postgr.es/m/1640909.1640638123@sss.pgh.pa.us
Diffstat (limited to 'src/backend/utils/misc/guc.c')
-rw-r--r--src/backend/utils/misc/guc.c63
1 files changed, 12 insertions, 51 deletions
diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c
index d2390043479..f9504d3aec4 100644
--- a/src/backend/utils/misc/guc.c
+++ b/src/backend/utils/misc/guc.c
@@ -148,8 +148,6 @@ extern bool optimize_bounded_sort;
static int GUC_check_errcode_value;
-static List *reserved_class_prefix = NIL;
-
/* global variables for check hook support */
char *GUC_check_errmsg_string;
char *GUC_check_errdetail_string;
@@ -5569,44 +5567,18 @@ find_option(const char *name, bool create_placeholders, bool skip_errors,
* doesn't contain a separator, don't assume that it was meant to be a
* placeholder.
*/
- const char *sep = strchr(name, GUC_QUALIFIER_SEPARATOR);
-
- if (sep != NULL)
+ if (strchr(name, GUC_QUALIFIER_SEPARATOR) != NULL)
{
- size_t classLen = sep - name;
- ListCell *lc;
-
- /* The name must be syntactically acceptable ... */
- if (!valid_custom_variable_name(name))
- {
- if (!skip_errors)
- ereport(elevel,
- (errcode(ERRCODE_INVALID_NAME),
- errmsg("invalid configuration parameter name \"%s\"",
- name),
- errdetail("Custom parameter names must be two or more simple identifiers separated by dots.")));
- return NULL;
- }
- /* ... and it must not match any previously-reserved prefix */
- foreach(lc, reserved_class_prefix)
- {
- const char *rcprefix = lfirst(lc);
-
- if (strlen(rcprefix) == classLen &&
- strncmp(name, rcprefix, classLen) == 0)
- {
- if (!skip_errors)
- ereport(elevel,
- (errcode(ERRCODE_INVALID_NAME),
- errmsg("invalid configuration parameter name \"%s\"",
- name),
- errdetail("\"%s\" is a reserved prefix.",
- rcprefix)));
- return NULL;
- }
- }
- /* OK, create it */
- return add_placeholder_variable(name, elevel);
+ if (valid_custom_variable_name(name))
+ return add_placeholder_variable(name, elevel);
+ /* A special error message seems desirable here */
+ if (!skip_errors)
+ ereport(elevel,
+ (errcode(ERRCODE_INVALID_NAME),
+ errmsg("invalid configuration parameter name \"%s\"",
+ name),
+ errdetail("Custom parameter names must be two or more simple identifiers separated by dots.")));
+ return NULL;
}
}
@@ -9360,21 +9332,15 @@ DefineCustomEnumVariable(const char *name,
}
/*
- * Mark the given GUC prefix as "reserved".
- *
- * This prints warnings if there are any existing placeholders matching
- * the prefix, and then prevents new ones from being created.
* Extensions should call this after they've defined all of their custom
* GUCs, to help catch misspelled config-file entries.
*/
void
-MarkGUCPrefixReserved(const char *className)
+EmitWarningsOnPlaceholders(const char *className)
{
int classLen = strlen(className);
int i;
- MemoryContext oldcontext;
- /* Check for existing placeholders. */
for (i = 0; i < num_guc_variables; i++)
{
struct config_generic *var = guc_variables[i];
@@ -9389,11 +9355,6 @@ MarkGUCPrefixReserved(const char *className)
var->name)));
}
}
-
- /* And remember the name so we can prevent future mistakes. */
- oldcontext = MemoryContextSwitchTo(TopMemoryContext);
- reserved_class_prefix = lappend(reserved_class_prefix, pstrdup(className));
- MemoryContextSwitchTo(oldcontext);
}