Add pg_settings.pending_restart column
with input from David G. Johnston, Robert Haas, Michael Paquier
This commit is contained in:
parent
333a870f94
commit
a486e35706
@ -9042,6 +9042,14 @@ SELECT * FROM pg_locks pl LEFT JOIN pg_prepared_xacts ppx
|
|||||||
or when examined by a non-superuser)
|
or when examined by a non-superuser)
|
||||||
</entry>
|
</entry>
|
||||||
</row>
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry><structfield>pending_restart</structfield></entry>
|
||||||
|
<entry><type>boolean</type></entry>
|
||||||
|
<entry><literal>true</literal> if the value has been changed in the
|
||||||
|
configuration file but needs a restart; or <literal>false</literal>
|
||||||
|
otherwise.
|
||||||
|
</entry>
|
||||||
|
</row>
|
||||||
</tbody>
|
</tbody>
|
||||||
</tgroup>
|
</tgroup>
|
||||||
</table>
|
</table>
|
||||||
|
@ -5927,12 +5927,14 @@ set_config_option(const char *name, const char *value,
|
|||||||
{
|
{
|
||||||
if (*conf->variable != newval)
|
if (*conf->variable != newval)
|
||||||
{
|
{
|
||||||
|
record->status |= GUC_PENDING_RESTART;
|
||||||
ereport(elevel,
|
ereport(elevel,
|
||||||
(errcode(ERRCODE_CANT_CHANGE_RUNTIME_PARAM),
|
(errcode(ERRCODE_CANT_CHANGE_RUNTIME_PARAM),
|
||||||
errmsg("parameter \"%s\" cannot be changed without restarting the server",
|
errmsg("parameter \"%s\" cannot be changed without restarting the server",
|
||||||
name)));
|
name)));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
record->status &= ~GUC_PENDING_RESTART;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -6015,12 +6017,14 @@ set_config_option(const char *name, const char *value,
|
|||||||
{
|
{
|
||||||
if (*conf->variable != newval)
|
if (*conf->variable != newval)
|
||||||
{
|
{
|
||||||
|
record->status |= GUC_PENDING_RESTART;
|
||||||
ereport(elevel,
|
ereport(elevel,
|
||||||
(errcode(ERRCODE_CANT_CHANGE_RUNTIME_PARAM),
|
(errcode(ERRCODE_CANT_CHANGE_RUNTIME_PARAM),
|
||||||
errmsg("parameter \"%s\" cannot be changed without restarting the server",
|
errmsg("parameter \"%s\" cannot be changed without restarting the server",
|
||||||
name)));
|
name)));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
record->status &= ~GUC_PENDING_RESTART;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -6103,12 +6107,14 @@ set_config_option(const char *name, const char *value,
|
|||||||
{
|
{
|
||||||
if (*conf->variable != newval)
|
if (*conf->variable != newval)
|
||||||
{
|
{
|
||||||
|
record->status |= GUC_PENDING_RESTART;
|
||||||
ereport(elevel,
|
ereport(elevel,
|
||||||
(errcode(ERRCODE_CANT_CHANGE_RUNTIME_PARAM),
|
(errcode(ERRCODE_CANT_CHANGE_RUNTIME_PARAM),
|
||||||
errmsg("parameter \"%s\" cannot be changed without restarting the server",
|
errmsg("parameter \"%s\" cannot be changed without restarting the server",
|
||||||
name)));
|
name)));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
record->status &= ~GUC_PENDING_RESTART;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -6209,12 +6215,14 @@ set_config_option(const char *name, const char *value,
|
|||||||
if (*conf->variable == NULL || newval == NULL ||
|
if (*conf->variable == NULL || newval == NULL ||
|
||||||
strcmp(*conf->variable, newval) != 0)
|
strcmp(*conf->variable, newval) != 0)
|
||||||
{
|
{
|
||||||
|
record->status |= GUC_PENDING_RESTART;
|
||||||
ereport(elevel,
|
ereport(elevel,
|
||||||
(errcode(ERRCODE_CANT_CHANGE_RUNTIME_PARAM),
|
(errcode(ERRCODE_CANT_CHANGE_RUNTIME_PARAM),
|
||||||
errmsg("parameter \"%s\" cannot be changed without restarting the server",
|
errmsg("parameter \"%s\" cannot be changed without restarting the server",
|
||||||
name)));
|
name)));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
record->status &= ~GUC_PENDING_RESTART;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -6302,12 +6310,14 @@ set_config_option(const char *name, const char *value,
|
|||||||
{
|
{
|
||||||
if (*conf->variable != newval)
|
if (*conf->variable != newval)
|
||||||
{
|
{
|
||||||
|
record->status |= GUC_PENDING_RESTART;
|
||||||
ereport(elevel,
|
ereport(elevel,
|
||||||
(errcode(ERRCODE_CANT_CHANGE_RUNTIME_PARAM),
|
(errcode(ERRCODE_CANT_CHANGE_RUNTIME_PARAM),
|
||||||
errmsg("parameter \"%s\" cannot be changed without restarting the server",
|
errmsg("parameter \"%s\" cannot be changed without restarting the server",
|
||||||
name)));
|
name)));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
record->status &= ~GUC_PENDING_RESTART;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -8009,6 +8019,8 @@ GetConfigOptionByNum(int varnum, const char **values, bool *noshow)
|
|||||||
values[14] = NULL;
|
values[14] = NULL;
|
||||||
values[15] = NULL;
|
values[15] = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
values[16] = (conf->status & GUC_PENDING_RESTART) ? "t" : "f";
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -8044,7 +8056,7 @@ show_config_by_name(PG_FUNCTION_ARGS)
|
|||||||
* show_all_settings - equiv to SHOW ALL command but implemented as
|
* show_all_settings - equiv to SHOW ALL command but implemented as
|
||||||
* a Table Function.
|
* a Table Function.
|
||||||
*/
|
*/
|
||||||
#define NUM_PG_SETTINGS_ATTS 16
|
#define NUM_PG_SETTINGS_ATTS 17
|
||||||
|
|
||||||
Datum
|
Datum
|
||||||
show_all_settings(PG_FUNCTION_ARGS)
|
show_all_settings(PG_FUNCTION_ARGS)
|
||||||
@ -8104,6 +8116,8 @@ show_all_settings(PG_FUNCTION_ARGS)
|
|||||||
TEXTOID, -1, 0);
|
TEXTOID, -1, 0);
|
||||||
TupleDescInitEntry(tupdesc, (AttrNumber) 16, "sourceline",
|
TupleDescInitEntry(tupdesc, (AttrNumber) 16, "sourceline",
|
||||||
INT4OID, -1, 0);
|
INT4OID, -1, 0);
|
||||||
|
TupleDescInitEntry(tupdesc, (AttrNumber) 17, "pending_restart",
|
||||||
|
BOOLOID, -1, 0);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Generate attribute metadata needed later to produce tuples from raw
|
* Generate attribute metadata needed later to produce tuples from raw
|
||||||
|
@ -53,6 +53,6 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/* yyyymmddN */
|
/* yyyymmddN */
|
||||||
#define CATALOG_VERSION_NO 201505121
|
#define CATALOG_VERSION_NO 201505141
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -3067,7 +3067,7 @@ DATA(insert OID = 2077 ( current_setting PGNSP PGUID 12 1 0 0 0 f f f f t f s 1
|
|||||||
DESCR("SHOW X as a function");
|
DESCR("SHOW X as a function");
|
||||||
DATA(insert OID = 2078 ( set_config PGNSP PGUID 12 1 0 0 0 f f f f f f v 3 0 25 "25 25 16" _null_ _null_ _null_ _null_ _null_ set_config_by_name _null_ _null_ _null_ ));
|
DATA(insert OID = 2078 ( set_config PGNSP PGUID 12 1 0 0 0 f f f f f f v 3 0 25 "25 25 16" _null_ _null_ _null_ _null_ _null_ set_config_by_name _null_ _null_ _null_ ));
|
||||||
DESCR("SET X as a function");
|
DESCR("SET X as a function");
|
||||||
DATA(insert OID = 2084 ( pg_show_all_settings PGNSP PGUID 12 1 1000 0 0 f f f f t t s 0 0 2249 "" "{25,25,25,25,25,25,25,25,25,25,25,1009,25,25,25,23}" "{o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}" "{name,setting,unit,category,short_desc,extra_desc,context,vartype,source,min_val,max_val,enumvals,boot_val,reset_val,sourcefile,sourceline}" _null_ _null_ show_all_settings _null_ _null_ _null_ ));
|
DATA(insert OID = 2084 ( pg_show_all_settings PGNSP PGUID 12 1 1000 0 0 f f f f t t s 0 0 2249 "" "{25,25,25,25,25,25,25,25,25,25,25,1009,25,25,25,23,16}" "{o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o}" "{name,setting,unit,category,short_desc,extra_desc,context,vartype,source,min_val,max_val,enumvals,boot_val,reset_val,sourcefile,sourceline,pending_restart}" _null_ _null_ show_all_settings _null_ _null_ _null_ ));
|
||||||
DESCR("SHOW ALL as a function");
|
DESCR("SHOW ALL as a function");
|
||||||
DATA(insert OID = 3329 ( pg_show_all_file_settings PGNSP PGUID 12 1 1000 0 0 f f f f t t s 0 0 2249 "" "{25,23,23,25,25}" "{o,o,o,o,o}" "{sourcefile,sourceline,seqno,name,setting}" _null_ _null_ show_all_file_settings _null_ _null_ _null_ ));
|
DATA(insert OID = 3329 ( pg_show_all_file_settings PGNSP PGUID 12 1 1000 0 0 f f f f t t s 0 0 2249 "" "{25,23,23,25,25}" "{o,o,o,o,o}" "{sourcefile,sourceline,seqno,name,setting}" _null_ _null_ show_all_file_settings _null_ _null_ _null_ ));
|
||||||
DESCR("show config file settings");
|
DESCR("show config file settings");
|
||||||
|
@ -167,6 +167,7 @@ struct config_generic
|
|||||||
* Caution: the GUC_IS_IN_FILE bit is transient state for ProcessConfigFile.
|
* Caution: the GUC_IS_IN_FILE bit is transient state for ProcessConfigFile.
|
||||||
* Do not assume that its value represents useful information elsewhere.
|
* Do not assume that its value represents useful information elsewhere.
|
||||||
*/
|
*/
|
||||||
|
#define GUC_PENDING_RESTART 0x0002
|
||||||
|
|
||||||
|
|
||||||
/* GUC records for specific variable types */
|
/* GUC records for specific variable types */
|
||||||
|
@ -1616,8 +1616,9 @@ pg_settings| SELECT a.name,
|
|||||||
a.boot_val,
|
a.boot_val,
|
||||||
a.reset_val,
|
a.reset_val,
|
||||||
a.sourcefile,
|
a.sourcefile,
|
||||||
a.sourceline
|
a.sourceline,
|
||||||
FROM pg_show_all_settings() a(name, setting, unit, category, short_desc, extra_desc, context, vartype, source, min_val, max_val, enumvals, boot_val, reset_val, sourcefile, sourceline);
|
a.pending_restart
|
||||||
|
FROM pg_show_all_settings() a(name, setting, unit, category, short_desc, extra_desc, context, vartype, source, min_val, max_val, enumvals, boot_val, reset_val, sourcefile, sourceline, pending_restart);
|
||||||
pg_shadow| SELECT pg_authid.rolname AS usename,
|
pg_shadow| SELECT pg_authid.rolname AS usename,
|
||||||
pg_authid.oid AS usesysid,
|
pg_authid.oid AS usesysid,
|
||||||
pg_authid.rolcreatedb AS usecreatedb,
|
pg_authid.rolcreatedb AS usecreatedb,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user