mirror of
https://github.com/postgres/postgres.git
synced 2025-07-14 08:21:07 +03:00
Issue a warning if a change-on-restart-only postgresql.conf value is
modified and the server config files are reloaded
This commit is contained in:
2
doc/TODO
2
doc/TODO
@ -83,7 +83,7 @@ Administration
|
|||||||
o %Allow postgresql.conf file values to be changed via an SQL
|
o %Allow postgresql.conf file values to be changed via an SQL
|
||||||
API, perhaps using SET GLOBAL
|
API, perhaps using SET GLOBAL
|
||||||
o Allow the server to be stopped/restarted via an SQL API
|
o Allow the server to be stopped/restarted via an SQL API
|
||||||
o Issue a warning if a change-on-restart-only postgresql.conf value
|
o -Issue a warning if a change-on-restart-only postgresql.conf value
|
||||||
is modified and the server config files are reloaded
|
is modified and the server config files are reloaded
|
||||||
o Mark change-on-restart-only values in postgresql.conf
|
o Mark change-on-restart-only values in postgresql.conf
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ first.
|
|||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>%Remove behavior of postmaster -o
|
<li>%Remove behavior of postmaster -o
|
||||||
</li><li>-*%Allow pooled connections to list all prepared statements*
|
</li><li>-<em>%Allow pooled connections to list all prepared statements</em>
|
||||||
<p> This would allow an application inheriting a pooled connection to know
|
<p> This would allow an application inheriting a pooled connection to know
|
||||||
the statements prepared in the current session.
|
the statements prepared in the current session.
|
||||||
</p>
|
</p>
|
||||||
@ -79,8 +79,8 @@ first.
|
|||||||
</li><li>%Allow postgresql.conf file values to be changed via an SQL
|
</li><li>%Allow postgresql.conf file values to be changed via an SQL
|
||||||
API, perhaps using SET GLOBAL
|
API, perhaps using SET GLOBAL
|
||||||
</li><li>Allow the server to be stopped/restarted via an SQL API
|
</li><li>Allow the server to be stopped/restarted via an SQL API
|
||||||
</li><li>Issue a warning if a change-on-restart-only postgresql.conf value
|
</li><li>-<em>Issue a warning if a change-on-restart-only postgresql.conf value
|
||||||
is modified and the server config files are reloaded
|
is modified and the server config files are reloaded</em>
|
||||||
</li><li>Mark change-on-restart-only values in postgresql.conf
|
</li><li>Mark change-on-restart-only values in postgresql.conf
|
||||||
</li></ul>
|
</li></ul>
|
||||||
</li><li>Tablespaces
|
</li><li>Tablespaces
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
* Written by Peter Eisentraut <peter_e@gmx.net>.
|
* Written by Peter Eisentraut <peter_e@gmx.net>.
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.309 2006/01/09 10:05:31 petere Exp $
|
* $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.310 2006/02/04 12:50:47 petere Exp $
|
||||||
*
|
*
|
||||||
*--------------------------------------------------------------------
|
*--------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -2201,6 +2201,7 @@ static void ReportGUCOption(struct config_generic * record);
|
|||||||
static void ShowGUCConfigOption(const char *name, DestReceiver *dest);
|
static void ShowGUCConfigOption(const char *name, DestReceiver *dest);
|
||||||
static void ShowAllGUCConfig(DestReceiver *dest);
|
static void ShowAllGUCConfig(DestReceiver *dest);
|
||||||
static char *_ShowOption(struct config_generic * record);
|
static char *_ShowOption(struct config_generic * record);
|
||||||
|
static bool is_newvalue_equal(struct config_generic *record, const char *newvalue);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -3631,7 +3632,15 @@ set_config_option(const char *name, const char *value,
|
|||||||
break;
|
break;
|
||||||
case PGC_POSTMASTER:
|
case PGC_POSTMASTER:
|
||||||
if (context == PGC_SIGHUP)
|
if (context == PGC_SIGHUP)
|
||||||
|
{
|
||||||
|
if (changeVal && !is_newvalue_equal(record, value))
|
||||||
|
ereport(elevel,
|
||||||
|
(errcode(ERRCODE_CANT_CHANGE_RUNTIME_PARAM),
|
||||||
|
errmsg("parameter \"%s\" cannot be changed after server start; configuration file change ignored",
|
||||||
|
name)));
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
}
|
||||||
if (context != PGC_POSTMASTER)
|
if (context != PGC_POSTMASTER)
|
||||||
{
|
{
|
||||||
ereport(elevel,
|
ereport(elevel,
|
||||||
@ -5079,6 +5088,44 @@ _ShowOption(struct config_generic * record)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static bool
|
||||||
|
is_newvalue_equal(struct config_generic *record, const char *newvalue)
|
||||||
|
{
|
||||||
|
switch (record->vartype)
|
||||||
|
{
|
||||||
|
case PGC_BOOL:
|
||||||
|
{
|
||||||
|
struct config_bool *conf = (struct config_bool *) record;
|
||||||
|
bool newval;
|
||||||
|
|
||||||
|
return parse_bool(newvalue, &newval) && *conf->variable == newval;
|
||||||
|
}
|
||||||
|
case PGC_INT:
|
||||||
|
{
|
||||||
|
struct config_int *conf = (struct config_int *) record;
|
||||||
|
int newval;
|
||||||
|
|
||||||
|
return parse_int(newvalue, &newval) && *conf->variable == newval;
|
||||||
|
}
|
||||||
|
case PGC_REAL:
|
||||||
|
{
|
||||||
|
struct config_real *conf = (struct config_real *) record;
|
||||||
|
double newval;
|
||||||
|
|
||||||
|
return parse_real(newvalue, &newval) && *conf->variable == newval;
|
||||||
|
}
|
||||||
|
case PGC_STRING:
|
||||||
|
{
|
||||||
|
struct config_string *conf = (struct config_string *) record;
|
||||||
|
|
||||||
|
return strcmp(*conf->variable, newvalue) == 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifdef EXEC_BACKEND
|
#ifdef EXEC_BACKEND
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Reference in New Issue
Block a user