mirror of
https://github.com/postgres/postgres.git
synced 2025-07-31 22:04:40 +03:00
Fix a couple of issues in recent patch to print updates to postgresql.conf
settings: avoid calling superuser() in contexts where it's not defined, don't leak the transient copies of GetConfigOption output, and avoid the whole exercise in postmaster child processes. I found that actually no current caller of GetConfigOption has any use for its internal check of GUC_SUPERUSER_ONLY. But rather than just remove that entirely, it seemed better to add a parameter indicating whether to enforce the check. Per report from Simon and subsequent testing.
This commit is contained in:
@ -4,7 +4,7 @@
|
||||
*
|
||||
* Copyright (c) 2000-2009, PostgreSQL Global Development Group
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/backend/utils/misc/guc-file.l,v 1.61 2009/09/17 21:15:18 petere Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/utils/misc/guc-file.l,v 1.62 2009/10/03 18:04:57 tgl Exp $
|
||||
*/
|
||||
|
||||
%{
|
||||
@ -312,21 +312,26 @@ ProcessConfigFile(GucContext context)
|
||||
/* If we got here all the options checked out okay, so apply them. */
|
||||
for (item = head; item; item = item->next)
|
||||
{
|
||||
char *pre_value = NULL;
|
||||
char *pre_value = NULL;
|
||||
|
||||
if (context == PGC_SIGHUP)
|
||||
pre_value = pstrdup(GetConfigOption(item->name));
|
||||
/* In SIGHUP cases in the postmaster, report changes */
|
||||
if (context == PGC_SIGHUP && !IsUnderPostmaster)
|
||||
pre_value = pstrdup(GetConfigOption(item->name, false));
|
||||
|
||||
if (set_config_option(item->name, item->value, context,
|
||||
PGC_S_FILE, GUC_ACTION_SET, true))
|
||||
{
|
||||
if (pre_value && strcmp(pre_value, GetConfigOption(item->name)) != 0)
|
||||
set_config_sourcefile(item->name, item->filename,
|
||||
item->sourceline);
|
||||
if (pre_value &&
|
||||
strcmp(pre_value, GetConfigOption(item->name, false)) != 0)
|
||||
ereport(elevel,
|
||||
(errmsg("parameter \"%s\" changed to \"%s\"",
|
||||
item->name, item->value)));
|
||||
set_config_sourcefile(item->name, item->filename,
|
||||
item->sourceline);
|
||||
}
|
||||
|
||||
if (pre_value)
|
||||
pfree(pre_value);
|
||||
}
|
||||
|
||||
/* Remember when we last successfully loaded the config file. */
|
||||
|
Reference in New Issue
Block a user