From 0b178aab4f9cfbb8b7d75ebe335ba00fea074a73 Mon Sep 17 00:00:00 2001
From: Mark Dilger <mark.dilger@enterprisedb.com>
Date: Tue, 3 Aug 2021 09:34:19 -0700
Subject: [PATCH v6 01/19] Allow SET and ALTER SYSTEM SET per role.

Lay the groundwork for delegating to built-in roles the privilege to
perform SET and ALTER SYSTEM SET on GUC variables which otherwise
can only be changed by superuser.  Do not delegate any variables
here.  We anticipate follow-on patches to reduce the number of
operations which require superuser by creating built-in roles with
privilege to manage portions of the set of all GUC variables.
---
 contrib/auth_delay/auth_delay.c               |    1 +
 contrib/auto_explain/auto_explain.c           |   12 +
 contrib/pg_prewarm/autoprewarm.c              |    2 +
 .../pg_stat_statements/pg_stat_statements.c   |    5 +
 contrib/pg_trgm/trgm_op.c                     |    3 +
 contrib/sepgsql/hooks.c                       |    2 +
 src/backend/utils/misc/guc.c                  |  717 +++++--
 src/include/utils/guc.h                       |    9 +
 src/include/utils/guc_tables.h                |    1 +
 src/pl/plperl/plperl.c                        |    8 +-
 src/pl/plpgsql/src/pl_handler.c               |   10 +-
 src/pl/tcl/pltcl.c                            |    4 +-
 .../modules/delay_execution/delay_execution.c |    1 +
 .../ssl_passphrase_func.c                     |    1 +
 src/test/modules/worker_spi/worker_spi.c      |    3 +
 src/test/regress/expected/guc_priv_admin.out  | 1794 +++++++++++++++++
 src/test/regress/parallel_schedule            |    2 +-
 src/test/regress/sql/guc_priv_admin.sql       | 1422 +++++++++++++
 18 files changed, 3815 insertions(+), 182 deletions(-)
 create mode 100644 src/test/regress/expected/guc_priv_admin.out
 create mode 100644 src/test/regress/sql/guc_priv_admin.sql

diff --git a/contrib/auth_delay/auth_delay.c b/contrib/auth_delay/auth_delay.c
index 5820ac328d..4b151a10ba 100644
--- a/contrib/auth_delay/auth_delay.c
+++ b/contrib/auth_delay/auth_delay.c
@@ -63,6 +63,7 @@ _PG_init(void)
 							0,
 							0, INT_MAX / 1000,
 							PGC_SIGHUP,
+							GUC_SUPERUSER_ONLY,
 							GUC_UNIT_MS,
 							NULL,
 							NULL,
diff --git a/contrib/auto_explain/auto_explain.c b/contrib/auto_explain/auto_explain.c
index e9092ba359..e349066375 100644
--- a/contrib/auto_explain/auto_explain.c
+++ b/contrib/auto_explain/auto_explain.c
@@ -100,6 +100,7 @@ _PG_init(void)
 							-1,
 							-1, INT_MAX,
 							PGC_SUSET,
+							GUC_SUPERUSER_ONLY,
 							GUC_UNIT_MS,
 							NULL,
 							NULL,
@@ -111,6 +112,7 @@ _PG_init(void)
 							 &auto_explain_log_analyze,
 							 false,
 							 PGC_SUSET,
+							 GUC_SUPERUSER_ONLY,
 							 0,
 							 NULL,
 							 NULL,
@@ -122,6 +124,7 @@ _PG_init(void)
 							 &auto_explain_log_settings,
 							 false,
 							 PGC_SUSET,
+							 GUC_SUPERUSER_ONLY,
 							 0,
 							 NULL,
 							 NULL,
@@ -133,6 +136,7 @@ _PG_init(void)
 							 &auto_explain_log_verbose,
 							 false,
 							 PGC_SUSET,
+							 GUC_SUPERUSER_ONLY,
 							 0,
 							 NULL,
 							 NULL,
@@ -144,6 +148,7 @@ _PG_init(void)
 							 &auto_explain_log_buffers,
 							 false,
 							 PGC_SUSET,
+							 GUC_SUPERUSER_ONLY,
 							 0,
 							 NULL,
 							 NULL,
@@ -155,6 +160,7 @@ _PG_init(void)
 							 &auto_explain_log_wal,
 							 false,
 							 PGC_SUSET,
+							 GUC_SUPERUSER_ONLY,
 							 0,
 							 NULL,
 							 NULL,
@@ -166,6 +172,7 @@ _PG_init(void)
 							 &auto_explain_log_triggers,
 							 false,
 							 PGC_SUSET,
+							 GUC_SUPERUSER_ONLY,
 							 0,
 							 NULL,
 							 NULL,
@@ -178,6 +185,7 @@ _PG_init(void)
 							 EXPLAIN_FORMAT_TEXT,
 							 format_options,
 							 PGC_SUSET,
+							 GUC_SUPERUSER_ONLY,
 							 0,
 							 NULL,
 							 NULL,
@@ -190,6 +198,7 @@ _PG_init(void)
 							 LOG,
 							 loglevel_options,
 							 PGC_SUSET,
+							 GUC_SUPERUSER_ONLY,
 							 0,
 							 NULL,
 							 NULL,
@@ -201,6 +210,7 @@ _PG_init(void)
 							 &auto_explain_log_nested_statements,
 							 false,
 							 PGC_SUSET,
+							 GUC_SUPERUSER_ONLY,
 							 0,
 							 NULL,
 							 NULL,
@@ -212,6 +222,7 @@ _PG_init(void)
 							 &auto_explain_log_timing,
 							 true,
 							 PGC_SUSET,
+							 GUC_SUPERUSER_ONLY,
 							 0,
 							 NULL,
 							 NULL,
@@ -225,6 +236,7 @@ _PG_init(void)
 							 0.0,
 							 1.0,
 							 PGC_SUSET,
+							 GUC_SUPERUSER_ONLY,
 							 0,
 							 NULL,
 							 NULL,
diff --git a/contrib/pg_prewarm/autoprewarm.c b/contrib/pg_prewarm/autoprewarm.c
index 0289ea657c..b00fcfe7f6 100644
--- a/contrib/pg_prewarm/autoprewarm.c
+++ b/contrib/pg_prewarm/autoprewarm.c
@@ -116,6 +116,7 @@ _PG_init(void)
 							300,
 							0, INT_MAX / 1000,
 							PGC_SIGHUP,
+							GUC_SUPERUSER_ONLY,
 							GUC_UNIT_S,
 							NULL,
 							NULL,
@@ -131,6 +132,7 @@ _PG_init(void)
 							 &autoprewarm,
 							 true,
 							 PGC_POSTMASTER,
+							 GUC_SUPERUSER_ONLY,
 							 0,
 							 NULL,
 							 NULL,
diff --git a/contrib/pg_stat_statements/pg_stat_statements.c b/contrib/pg_stat_statements/pg_stat_statements.c
index 07fe0e7cda..be32e8613b 100644
--- a/contrib/pg_stat_statements/pg_stat_statements.c
+++ b/contrib/pg_stat_statements/pg_stat_statements.c
@@ -387,6 +387,7 @@ _PG_init(void)
 							100,
 							INT_MAX,
 							PGC_POSTMASTER,
+							GUC_SUPERUSER_ONLY,
 							0,
 							NULL,
 							NULL,
@@ -399,6 +400,7 @@ _PG_init(void)
 							 PGSS_TRACK_TOP,
 							 track_options,
 							 PGC_SUSET,
+							 GUC_SUPERUSER_ONLY,
 							 0,
 							 NULL,
 							 NULL,
@@ -410,6 +412,7 @@ _PG_init(void)
 							 &pgss_track_utility,
 							 true,
 							 PGC_SUSET,
+							 GUC_SUPERUSER_ONLY,
 							 0,
 							 NULL,
 							 NULL,
@@ -421,6 +424,7 @@ _PG_init(void)
 							 &pgss_track_planning,
 							 false,
 							 PGC_SUSET,
+							 GUC_SUPERUSER_ONLY,
 							 0,
 							 NULL,
 							 NULL,
@@ -432,6 +436,7 @@ _PG_init(void)
 							 &pgss_save,
 							 true,
 							 PGC_SIGHUP,
+							 GUC_SUPERUSER_ONLY,
 							 0,
 							 NULL,
 							 NULL,
diff --git a/contrib/pg_trgm/trgm_op.c b/contrib/pg_trgm/trgm_op.c
index fb38135f7a..c24d8243c1 100644
--- a/contrib/pg_trgm/trgm_op.c
+++ b/contrib/pg_trgm/trgm_op.c
@@ -72,6 +72,7 @@ _PG_init(void)
 							 0.0,
 							 1.0,
 							 PGC_USERSET,
+							 GUC_SUPERUSER_ONLY,
 							 0,
 							 NULL,
 							 NULL,
@@ -84,6 +85,7 @@ _PG_init(void)
 							 0.0,
 							 1.0,
 							 PGC_USERSET,
+							 GUC_SUPERUSER_ONLY,
 							 0,
 							 NULL,
 							 NULL,
@@ -96,6 +98,7 @@ _PG_init(void)
 							 0.0,
 							 1.0,
 							 PGC_USERSET,
+							 GUC_SUPERUSER_ONLY,
 							 0,
 							 NULL,
 							 NULL,
diff --git a/contrib/sepgsql/hooks.c b/contrib/sepgsql/hooks.c
index 19a3ffb7ff..df7984de9c 100644
--- a/contrib/sepgsql/hooks.c
+++ b/contrib/sepgsql/hooks.c
@@ -432,6 +432,7 @@ _PG_init(void)
 							 &sepgsql_permissive,
 							 false,
 							 PGC_SIGHUP,
+							 GUC_SUPERUSER_ONLY,
 							 GUC_NOT_IN_SAMPLE,
 							 NULL,
 							 NULL,
@@ -450,6 +451,7 @@ _PG_init(void)
 							 &sepgsql_debug_audit,
 							 false,
 							 PGC_USERSET,
+							 GUC_SUPERUSER_ONLY,
 							 GUC_NOT_IN_SAMPLE,
 							 NULL,
 							 NULL,
diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c
index 467b0fd6fe..1fe414304b 100644
--- a/src/backend/utils/misc/guc.c
+++ b/src/backend/utils/misc/guc.c
@@ -972,6 +972,7 @@ static struct config_bool ConfigureNamesBool[] =
 		{"enable_seqscan", PGC_USERSET, QUERY_TUNING_METHOD,
 			gettext_noop("Enables the planner's use of sequential-scan plans."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&enable_seqscan,
@@ -982,6 +983,7 @@ static struct config_bool ConfigureNamesBool[] =
 		{"enable_indexscan", PGC_USERSET, QUERY_TUNING_METHOD,
 			gettext_noop("Enables the planner's use of index-scan plans."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&enable_indexscan,
@@ -992,6 +994,7 @@ static struct config_bool ConfigureNamesBool[] =
 		{"enable_indexonlyscan", PGC_USERSET, QUERY_TUNING_METHOD,
 			gettext_noop("Enables the planner's use of index-only-scan plans."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&enable_indexonlyscan,
@@ -1002,6 +1005,7 @@ static struct config_bool ConfigureNamesBool[] =
 		{"enable_bitmapscan", PGC_USERSET, QUERY_TUNING_METHOD,
 			gettext_noop("Enables the planner's use of bitmap-scan plans."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&enable_bitmapscan,
@@ -1012,6 +1016,7 @@ static struct config_bool ConfigureNamesBool[] =
 		{"enable_tidscan", PGC_USERSET, QUERY_TUNING_METHOD,
 			gettext_noop("Enables the planner's use of TID scan plans."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&enable_tidscan,
@@ -1022,6 +1027,7 @@ static struct config_bool ConfigureNamesBool[] =
 		{"enable_sort", PGC_USERSET, QUERY_TUNING_METHOD,
 			gettext_noop("Enables the planner's use of explicit sort steps."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&enable_sort,
@@ -1031,7 +1037,8 @@ static struct config_bool ConfigureNamesBool[] =
 	{
 		{"enable_incremental_sort", PGC_USERSET, QUERY_TUNING_METHOD,
 			gettext_noop("Enables the planner's use of incremental sort steps."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&enable_incremental_sort,
 		true,
@@ -1041,6 +1048,7 @@ static struct config_bool ConfigureNamesBool[] =
 		{"enable_hashagg", PGC_USERSET, QUERY_TUNING_METHOD,
 			gettext_noop("Enables the planner's use of hashed aggregation plans."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&enable_hashagg,
@@ -1051,6 +1059,7 @@ static struct config_bool ConfigureNamesBool[] =
 		{"enable_material", PGC_USERSET, QUERY_TUNING_METHOD,
 			gettext_noop("Enables the planner's use of materialization."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&enable_material,
@@ -1061,6 +1070,7 @@ static struct config_bool ConfigureNamesBool[] =
 		{"enable_memoize", PGC_USERSET, QUERY_TUNING_METHOD,
 			gettext_noop("Enables the planner's use of memoization."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&enable_memoize,
@@ -1071,6 +1081,7 @@ static struct config_bool ConfigureNamesBool[] =
 		{"enable_nestloop", PGC_USERSET, QUERY_TUNING_METHOD,
 			gettext_noop("Enables the planner's use of nested-loop join plans."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&enable_nestloop,
@@ -1081,6 +1092,7 @@ static struct config_bool ConfigureNamesBool[] =
 		{"enable_mergejoin", PGC_USERSET, QUERY_TUNING_METHOD,
 			gettext_noop("Enables the planner's use of merge join plans."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&enable_mergejoin,
@@ -1091,6 +1103,7 @@ static struct config_bool ConfigureNamesBool[] =
 		{"enable_hashjoin", PGC_USERSET, QUERY_TUNING_METHOD,
 			gettext_noop("Enables the planner's use of hash join plans."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&enable_hashjoin,
@@ -1101,6 +1114,7 @@ static struct config_bool ConfigureNamesBool[] =
 		{"enable_gathermerge", PGC_USERSET, QUERY_TUNING_METHOD,
 			gettext_noop("Enables the planner's use of gather merge plans."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&enable_gathermerge,
@@ -1111,6 +1125,7 @@ static struct config_bool ConfigureNamesBool[] =
 		{"enable_partitionwise_join", PGC_USERSET, QUERY_TUNING_METHOD,
 			gettext_noop("Enables partitionwise join."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&enable_partitionwise_join,
@@ -1121,6 +1136,7 @@ static struct config_bool ConfigureNamesBool[] =
 		{"enable_partitionwise_aggregate", PGC_USERSET, QUERY_TUNING_METHOD,
 			gettext_noop("Enables partitionwise aggregation and grouping."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&enable_partitionwise_aggregate,
@@ -1131,6 +1147,7 @@ static struct config_bool ConfigureNamesBool[] =
 		{"enable_parallel_append", PGC_USERSET, QUERY_TUNING_METHOD,
 			gettext_noop("Enables the planner's use of parallel append plans."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&enable_parallel_append,
@@ -1141,6 +1158,7 @@ static struct config_bool ConfigureNamesBool[] =
 		{"enable_parallel_hash", PGC_USERSET, QUERY_TUNING_METHOD,
 			gettext_noop("Enables the planner's use of parallel hash plans."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&enable_parallel_hash,
@@ -1153,6 +1171,7 @@ static struct config_bool ConfigureNamesBool[] =
 			gettext_noop("Allows the query planner and executor to compare partition "
 						 "bounds to conditions in the query to determine which "
 						 "partitions must be scanned."),
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&enable_partition_pruning,
@@ -1163,6 +1182,7 @@ static struct config_bool ConfigureNamesBool[] =
 		{"enable_async_append", PGC_USERSET, QUERY_TUNING_METHOD,
 			gettext_noop("Enables the planner's use of async append plans."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&enable_async_append,
@@ -1174,6 +1194,7 @@ static struct config_bool ConfigureNamesBool[] =
 			gettext_noop("Enables genetic query optimization."),
 			gettext_noop("This algorithm attempts to do planning without "
 						 "exhaustive searching."),
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&enable_geqo,
@@ -1185,6 +1206,7 @@ static struct config_bool ConfigureNamesBool[] =
 		{"is_superuser", PGC_INTERNAL, UNGROUPED,
 			gettext_noop("Shows whether the current user is a superuser."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_REPORT | GUC_NO_SHOW_ALL | GUC_NO_RESET_ALL | GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE
 		},
 		&session_auth_is_superuser,
@@ -1194,7 +1216,8 @@ static struct config_bool ConfigureNamesBool[] =
 	{
 		{"bonjour", PGC_POSTMASTER, CONN_AUTH_SETTINGS,
 			gettext_noop("Enables advertising the server via Bonjour."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&enable_bonjour,
 		false,
@@ -1203,7 +1226,8 @@ static struct config_bool ConfigureNamesBool[] =
 	{
 		{"track_commit_timestamp", PGC_POSTMASTER, REPLICATION_SENDING,
 			gettext_noop("Collects transaction commit time."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&track_commit_timestamp,
 		false,
@@ -1212,7 +1236,8 @@ static struct config_bool ConfigureNamesBool[] =
 	{
 		{"ssl", PGC_SIGHUP, CONN_AUTH_SSL,
 			gettext_noop("Enables SSL connections."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&EnableSSL,
 		false,
@@ -1221,7 +1246,8 @@ static struct config_bool ConfigureNamesBool[] =
 	{
 		{"ssl_passphrase_command_supports_reload", PGC_SIGHUP, CONN_AUTH_SSL,
 			gettext_noop("Also use ssl_passphrase_command during server reload."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&ssl_passphrase_command_supports_reload,
 		false,
@@ -1230,7 +1256,8 @@ static struct config_bool ConfigureNamesBool[] =
 	{
 		{"ssl_prefer_server_ciphers", PGC_SIGHUP, CONN_AUTH_SSL,
 			gettext_noop("Give priority to server ciphersuite order."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&SSLPreferServerCiphers,
 		true,
@@ -1242,7 +1269,8 @@ static struct config_bool ConfigureNamesBool[] =
 			gettext_noop("The server will use the fsync() system call in several places to make "
 						 "sure that updates are physically written to disk. This insures "
 						 "that a database cluster will recover to a consistent state after "
-						 "an operating system or hardware crash.")
+						 "an operating system or hardware crash."),
+			GUC_SUPERUSER_ONLY
 		},
 		&enableFsync,
 		true,
@@ -1257,6 +1285,7 @@ static struct config_bool ConfigureNamesBool[] =
 						 "(but still report a warning), and continue processing. This "
 						 "behavior could cause crashes or other serious problems. Only "
 						 "has an effect if checksums are enabled."),
+			GUC_SUPERUSER_ONLY,
 			GUC_NOT_IN_SAMPLE
 		},
 		&ignore_checksum_failure,
@@ -1271,6 +1300,7 @@ static struct config_bool ConfigureNamesBool[] =
 						 "zero_damaged_pages to true causes the system to instead report a "
 						 "warning, zero out the damaged page, and continue processing. This "
 						 "behavior will destroy data, namely all the rows on the damaged page."),
+			GUC_SUPERUSER_ONLY,
 			GUC_NOT_IN_SAMPLE
 		},
 		&zero_damaged_pages,
@@ -1290,6 +1320,7 @@ static struct config_bool ConfigureNamesBool[] =
 						 "crashes, data loss, propagate or hide corruption, "
 						 "or other serious problems. Only has an effect "
 						 "during recovery or in standby mode."),
+			GUC_SUPERUSER_ONLY,
 			GUC_NOT_IN_SAMPLE
 		},
 		&ignore_invalid_pages,
@@ -1303,7 +1334,8 @@ static struct config_bool ConfigureNamesBool[] =
 						 "only partially written to disk.  During recovery, the row changes "
 						 "stored in WAL are not enough to recover.  This option writes "
 						 "pages when first modified after a checkpoint to WAL so full recovery "
-						 "is possible.")
+						 "is possible."),
+			GUC_SUPERUSER_ONLY
 		},
 		&fullPageWrites,
 		true,
@@ -1313,7 +1345,8 @@ static struct config_bool ConfigureNamesBool[] =
 	{
 		{"wal_log_hints", PGC_POSTMASTER, WAL_SETTINGS,
 			gettext_noop("Writes full pages to WAL when first modified after a checkpoint, even for a non-critical modification."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&wal_log_hints,
 		false,
@@ -1323,7 +1356,8 @@ static struct config_bool ConfigureNamesBool[] =
 	{
 		{"wal_init_zero", PGC_SUSET, WAL_SETTINGS,
 			gettext_noop("Writes zeroes to new WAL files before first use."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&wal_init_zero,
 		true,
@@ -1333,7 +1367,8 @@ static struct config_bool ConfigureNamesBool[] =
 	{
 		{"wal_recycle", PGC_SUSET, WAL_SETTINGS,
 			gettext_noop("Recycles WAL files by renaming them."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&wal_recycle,
 		true,
@@ -1343,7 +1378,8 @@ static struct config_bool ConfigureNamesBool[] =
 	{
 		{"log_checkpoints", PGC_SIGHUP, LOGGING_WHAT,
 			gettext_noop("Logs each checkpoint."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&log_checkpoints,
 		false,
@@ -1352,7 +1388,8 @@ static struct config_bool ConfigureNamesBool[] =
 	{
 		{"log_connections", PGC_SU_BACKEND, LOGGING_WHAT,
 			gettext_noop("Logs each successful connection."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&Log_connections,
 		false,
@@ -1361,7 +1398,8 @@ static struct config_bool ConfigureNamesBool[] =
 	{
 		{"log_disconnections", PGC_SU_BACKEND, LOGGING_WHAT,
 			gettext_noop("Logs end of a session, including duration."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&Log_disconnections,
 		false,
@@ -1370,7 +1408,8 @@ static struct config_bool ConfigureNamesBool[] =
 	{
 		{"log_replication_commands", PGC_SUSET, LOGGING_WHAT,
 			gettext_noop("Logs each replication command."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&log_replication_commands,
 		false,
@@ -1380,6 +1419,7 @@ static struct config_bool ConfigureNamesBool[] =
 		{"debug_assertions", PGC_INTERNAL, PRESET_OPTIONS,
 			gettext_noop("Shows whether the running server has assertion checks enabled."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE
 		},
 		&assert_enabled,
@@ -1394,7 +1434,8 @@ static struct config_bool ConfigureNamesBool[] =
 	{
 		{"exit_on_error", PGC_USERSET, ERROR_HANDLING_OPTIONS,
 			gettext_noop("Terminate session on any error."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&ExitOnAnyError,
 		false,
@@ -1403,7 +1444,8 @@ static struct config_bool ConfigureNamesBool[] =
 	{
 		{"restart_after_crash", PGC_SIGHUP, ERROR_HANDLING_OPTIONS,
 			gettext_noop("Reinitialize server after backend crash."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&restart_after_crash,
 		true,
@@ -1413,6 +1455,7 @@ static struct config_bool ConfigureNamesBool[] =
 		{"remove_temp_files_after_crash", PGC_SIGHUP, DEVELOPER_OPTIONS,
 			gettext_noop("Remove temporary files after backend crash."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_NOT_IN_SAMPLE
 		},
 		&remove_temp_files_after_crash,
@@ -1423,7 +1466,8 @@ static struct config_bool ConfigureNamesBool[] =
 	{
 		{"log_duration", PGC_SUSET, LOGGING_WHAT,
 			gettext_noop("Logs the duration of each completed SQL statement."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&log_duration,
 		false,
@@ -1432,7 +1476,8 @@ static struct config_bool ConfigureNamesBool[] =
 	{
 		{"debug_print_parse", PGC_USERSET, LOGGING_WHAT,
 			gettext_noop("Logs each query's parse tree."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&Debug_print_parse,
 		false,
@@ -1441,7 +1486,8 @@ static struct config_bool ConfigureNamesBool[] =
 	{
 		{"debug_print_rewritten", PGC_USERSET, LOGGING_WHAT,
 			gettext_noop("Logs each query's rewritten parse tree."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&Debug_print_rewritten,
 		false,
@@ -1450,7 +1496,8 @@ static struct config_bool ConfigureNamesBool[] =
 	{
 		{"debug_print_plan", PGC_USERSET, LOGGING_WHAT,
 			gettext_noop("Logs each query's execution plan."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&Debug_print_plan,
 		false,
@@ -1459,7 +1506,8 @@ static struct config_bool ConfigureNamesBool[] =
 	{
 		{"debug_pretty_print", PGC_USERSET, LOGGING_WHAT,
 			gettext_noop("Indents parse and plan tree displays."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&Debug_pretty_print,
 		true,
@@ -1468,7 +1516,8 @@ static struct config_bool ConfigureNamesBool[] =
 	{
 		{"log_parser_stats", PGC_SUSET, STATS_MONITORING,
 			gettext_noop("Writes parser performance statistics to the server log."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&log_parser_stats,
 		false,
@@ -1477,7 +1526,8 @@ static struct config_bool ConfigureNamesBool[] =
 	{
 		{"log_planner_stats", PGC_SUSET, STATS_MONITORING,
 			gettext_noop("Writes planner performance statistics to the server log."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&log_planner_stats,
 		false,
@@ -1486,7 +1536,8 @@ static struct config_bool ConfigureNamesBool[] =
 	{
 		{"log_executor_stats", PGC_SUSET, STATS_MONITORING,
 			gettext_noop("Writes executor performance statistics to the server log."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&log_executor_stats,
 		false,
@@ -1495,7 +1546,8 @@ static struct config_bool ConfigureNamesBool[] =
 	{
 		{"log_statement_stats", PGC_SUSET, STATS_MONITORING,
 			gettext_noop("Writes cumulative performance statistics to the server log."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&log_statement_stats,
 		false,
@@ -1506,6 +1558,7 @@ static struct config_bool ConfigureNamesBool[] =
 		{"log_btree_build_stats", PGC_SUSET, DEVELOPER_OPTIONS,
 			gettext_noop("Logs system resource usage statistics (memory and CPU) on various B-tree operations."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_NOT_IN_SAMPLE
 		},
 		&log_btree_build_stats,
@@ -1519,7 +1572,8 @@ static struct config_bool ConfigureNamesBool[] =
 			gettext_noop("Collects information about executing commands."),
 			gettext_noop("Enables the collection of information on the currently "
 						 "executing command of each session, along with "
-						 "the time at which that command began execution.")
+						 "the time at which that command began execution."),
+			GUC_SUPERUSER_ONLY
 		},
 		&pgstat_track_activities,
 		true,
@@ -1528,7 +1582,8 @@ static struct config_bool ConfigureNamesBool[] =
 	{
 		{"track_counts", PGC_SUSET, STATS_COLLECTOR,
 			gettext_noop("Collects statistics on database activity."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&pgstat_track_counts,
 		true,
@@ -1537,7 +1592,8 @@ static struct config_bool ConfigureNamesBool[] =
 	{
 		{"track_io_timing", PGC_SUSET, STATS_COLLECTOR,
 			gettext_noop("Collects timing statistics for database I/O activity."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&track_io_timing,
 		false,
@@ -1546,7 +1602,8 @@ static struct config_bool ConfigureNamesBool[] =
 	{
 		{"track_wal_io_timing", PGC_SUSET, STATS_COLLECTOR,
 			gettext_noop("Collects timing statistics for WAL I/O activity."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&track_wal_io_timing,
 		false,
@@ -1556,7 +1613,8 @@ static struct config_bool ConfigureNamesBool[] =
 	{
 		{"update_process_title", PGC_SUSET, PROCESS_TITLE,
 			gettext_noop("Updates the process title to show the active SQL command."),
-			gettext_noop("Enables updating of the process title every time a new SQL command is received by the server.")
+			gettext_noop("Enables updating of the process title every time a new SQL command is received by the server."),
+			GUC_SUPERUSER_ONLY
 		},
 		&update_process_title,
 #ifdef WIN32
@@ -1570,7 +1628,8 @@ static struct config_bool ConfigureNamesBool[] =
 	{
 		{"autovacuum", PGC_SIGHUP, AUTOVACUUM,
 			gettext_noop("Starts the autovacuum subprocess."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&autovacuum_start_daemon,
 		true,
@@ -1581,6 +1640,7 @@ static struct config_bool ConfigureNamesBool[] =
 		{"trace_notify", PGC_USERSET, DEVELOPER_OPTIONS,
 			gettext_noop("Generates debugging output for LISTEN and NOTIFY."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_NOT_IN_SAMPLE
 		},
 		&Trace_notify,
@@ -1593,6 +1653,7 @@ static struct config_bool ConfigureNamesBool[] =
 		{"trace_locks", PGC_SUSET, DEVELOPER_OPTIONS,
 			gettext_noop("Emits information about lock usage."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_NOT_IN_SAMPLE
 		},
 		&Trace_locks,
@@ -1603,6 +1664,7 @@ static struct config_bool ConfigureNamesBool[] =
 		{"trace_userlocks", PGC_SUSET, DEVELOPER_OPTIONS,
 			gettext_noop("Emits information about user lock usage."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_NOT_IN_SAMPLE
 		},
 		&Trace_userlocks,
@@ -1613,6 +1675,7 @@ static struct config_bool ConfigureNamesBool[] =
 		{"trace_lwlocks", PGC_SUSET, DEVELOPER_OPTIONS,
 			gettext_noop("Emits information about lightweight lock usage."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_NOT_IN_SAMPLE
 		},
 		&Trace_lwlocks,
@@ -1623,6 +1686,7 @@ static struct config_bool ConfigureNamesBool[] =
 		{"debug_deadlocks", PGC_SUSET, DEVELOPER_OPTIONS,
 			gettext_noop("Dumps information about all current locks when a deadlock timeout occurs."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_NOT_IN_SAMPLE
 		},
 		&Debug_deadlocks,
@@ -1634,7 +1698,8 @@ static struct config_bool ConfigureNamesBool[] =
 	{
 		{"log_lock_waits", PGC_SUSET, LOGGING_WHAT,
 			gettext_noop("Logs long lock waits."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&log_lock_waits,
 		false,
@@ -1643,7 +1708,8 @@ static struct config_bool ConfigureNamesBool[] =
 	{
 		{"log_recovery_conflict_waits", PGC_SIGHUP, LOGGING_WHAT,
 			gettext_noop("Logs standby recovery conflict waits."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&log_recovery_conflict_waits,
 		false,
@@ -1655,7 +1721,8 @@ static struct config_bool ConfigureNamesBool[] =
 			gettext_noop("By default, connection logs only show the IP address "
 						 "of the connecting host. If you want them to show the host name you "
 						 "can turn this on, but depending on your host name resolution "
-						 "setup it might impose a non-negligible performance penalty.")
+						 "setup it might impose a non-negligible performance penalty."),
+			GUC_SUPERUSER_ONLY
 		},
 		&log_hostname,
 		false,
@@ -1668,7 +1735,8 @@ static struct config_bool ConfigureNamesBool[] =
 						 "(or NULL = expr) are treated as expr IS NULL, that is, they "
 						 "return true if expr evaluates to the null value, and false "
 						 "otherwise. The correct behavior of expr = NULL is to always "
-						 "return null (unknown).")
+						 "return null (unknown)."),
+			GUC_SUPERUSER_ONLY
 		},
 		&Transform_null_equals,
 		false,
@@ -1677,7 +1745,8 @@ static struct config_bool ConfigureNamesBool[] =
 	{
 		{"db_user_namespace", PGC_SIGHUP, CONN_AUTH_AUTH,
 			gettext_noop("Enables per-database user names."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&Db_user_namespace,
 		false,
@@ -1687,6 +1756,7 @@ static struct config_bool ConfigureNamesBool[] =
 		{"default_transaction_read_only", PGC_USERSET, CLIENT_CONN_STATEMENT,
 			gettext_noop("Sets the default read-only status of new transactions."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_REPORT
 		},
 		&DefaultXactReadOnly,
@@ -1697,6 +1767,7 @@ static struct config_bool ConfigureNamesBool[] =
 		{"transaction_read_only", PGC_USERSET, CLIENT_CONN_STATEMENT,
 			gettext_noop("Sets the current transaction's read-only status."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_NO_RESET_ALL | GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE
 		},
 		&XactReadOnly,
@@ -1706,7 +1777,8 @@ static struct config_bool ConfigureNamesBool[] =
 	{
 		{"default_transaction_deferrable", PGC_USERSET, CLIENT_CONN_STATEMENT,
 			gettext_noop("Sets the default deferrable status of new transactions."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&DefaultXactDeferrable,
 		false,
@@ -1716,6 +1788,7 @@ static struct config_bool ConfigureNamesBool[] =
 		{"transaction_deferrable", PGC_USERSET, CLIENT_CONN_STATEMENT,
 			gettext_noop("Whether to defer a read-only serializable transaction until it can be executed with no possible serialization failures."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_NO_RESET_ALL | GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE
 		},
 		&XactDeferrable,
@@ -1725,7 +1798,8 @@ static struct config_bool ConfigureNamesBool[] =
 	{
 		{"row_security", PGC_USERSET, CLIENT_CONN_STATEMENT,
 			gettext_noop("Enable row security."),
-			gettext_noop("When enabled, row security will be applied to all users.")
+			gettext_noop("When enabled, row security will be applied to all users."),
+			GUC_SUPERUSER_ONLY
 		},
 		&row_security,
 		true,
@@ -1734,7 +1808,8 @@ static struct config_bool ConfigureNamesBool[] =
 	{
 		{"check_function_bodies", PGC_USERSET, CLIENT_CONN_STATEMENT,
 			gettext_noop("Check routine bodies during CREATE FUNCTION and CREATE PROCEDURE."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&check_function_bodies,
 		true,
@@ -1745,7 +1820,8 @@ static struct config_bool ConfigureNamesBool[] =
 			gettext_noop("Enable input of NULL elements in arrays."),
 			gettext_noop("When turned on, unquoted NULL in an array input "
 						 "value means a null value; "
-						 "otherwise it is taken literally.")
+						 "otherwise it is taken literally."),
+			GUC_SUPERUSER_ONLY
 		},
 		&Array_nulls,
 		true,
@@ -1761,6 +1837,7 @@ static struct config_bool ConfigureNamesBool[] =
 		{"default_with_oids", PGC_USERSET, COMPAT_OPTIONS_PREVIOUS,
 			gettext_noop("WITH OIDS is no longer supported; this can only be false."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE
 		},
 		&default_with_oids,
@@ -1770,7 +1847,8 @@ static struct config_bool ConfigureNamesBool[] =
 	{
 		{"logging_collector", PGC_POSTMASTER, LOGGING_WHERE,
 			gettext_noop("Start a subprocess to capture stderr output and/or csvlogs into log files."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&Logging_collector,
 		false,
@@ -1779,7 +1857,8 @@ static struct config_bool ConfigureNamesBool[] =
 	{
 		{"log_truncate_on_rotation", PGC_SIGHUP, LOGGING_WHERE,
 			gettext_noop("Truncate existing log files of same name during log rotation."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&Log_truncate_on_rotation,
 		false,
@@ -1791,6 +1870,7 @@ static struct config_bool ConfigureNamesBool[] =
 		{"trace_sort", PGC_USERSET, DEVELOPER_OPTIONS,
 			gettext_noop("Emit information about resource usage in sorting."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_NOT_IN_SAMPLE
 		},
 		&trace_sort,
@@ -1805,6 +1885,7 @@ static struct config_bool ConfigureNamesBool[] =
 		{"trace_syncscan", PGC_USERSET, DEVELOPER_OPTIONS,
 			gettext_noop("Generate debugging output for synchronized scanning."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_NOT_IN_SAMPLE
 		},
 		&trace_syncscan,
@@ -1820,6 +1901,7 @@ static struct config_bool ConfigureNamesBool[] =
 			"optimize_bounded_sort", PGC_USERSET, QUERY_TUNING_METHOD,
 			gettext_noop("Enable bounded sorting using heap sort."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_NOT_IN_SAMPLE | GUC_EXPLAIN
 		},
 		&optimize_bounded_sort,
@@ -1833,6 +1915,7 @@ static struct config_bool ConfigureNamesBool[] =
 		{"wal_debug", PGC_SUSET, DEVELOPER_OPTIONS,
 			gettext_noop("Emit WAL-related debugging output."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_NOT_IN_SAMPLE
 		},
 		&XLOG_DEBUG,
@@ -1845,6 +1928,7 @@ static struct config_bool ConfigureNamesBool[] =
 		{"integer_datetimes", PGC_INTERNAL, PRESET_OPTIONS,
 			gettext_noop("Shows whether datetimes are integer based."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_REPORT | GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE
 		},
 		&integer_datetimes,
@@ -1855,7 +1939,8 @@ static struct config_bool ConfigureNamesBool[] =
 	{
 		{"krb_caseins_users", PGC_SIGHUP, CONN_AUTH_AUTH,
 			gettext_noop("Sets whether Kerberos and GSSAPI user names should be treated as case-insensitive."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&pg_krb_caseins_users,
 		false,
@@ -1865,7 +1950,8 @@ static struct config_bool ConfigureNamesBool[] =
 	{
 		{"escape_string_warning", PGC_USERSET, COMPAT_OPTIONS_PREVIOUS,
 			gettext_noop("Warn about backslash escapes in ordinary string literals."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&escape_string_warning,
 		true,
@@ -1876,6 +1962,7 @@ static struct config_bool ConfigureNamesBool[] =
 		{"standard_conforming_strings", PGC_USERSET, COMPAT_OPTIONS_PREVIOUS,
 			gettext_noop("Causes '...' strings to treat backslashes literally."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_REPORT
 		},
 		&standard_conforming_strings,
@@ -1886,7 +1973,8 @@ static struct config_bool ConfigureNamesBool[] =
 	{
 		{"synchronize_seqscans", PGC_USERSET, COMPAT_OPTIONS_PREVIOUS,
 			gettext_noop("Enable synchronized sequential scans."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&synchronize_seqscans,
 		true,
@@ -1896,7 +1984,8 @@ static struct config_bool ConfigureNamesBool[] =
 	{
 		{"recovery_target_inclusive", PGC_POSTMASTER, WAL_RECOVERY_TARGET,
 			gettext_noop("Sets whether to include or exclude transaction with recovery target."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&recoveryTargetInclusive,
 		true,
@@ -1906,7 +1995,8 @@ static struct config_bool ConfigureNamesBool[] =
 	{
 		{"hot_standby", PGC_POSTMASTER, REPLICATION_STANDBY,
 			gettext_noop("Allows connections and queries during recovery."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&EnableHotStandby,
 		true,
@@ -1916,7 +2006,8 @@ static struct config_bool ConfigureNamesBool[] =
 	{
 		{"hot_standby_feedback", PGC_SIGHUP, REPLICATION_STANDBY,
 			gettext_noop("Allows feedback from a hot standby to the primary that will avoid query conflicts."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&hot_standby_feedback,
 		false,
@@ -1927,6 +2018,7 @@ static struct config_bool ConfigureNamesBool[] =
 		{"in_hot_standby", PGC_INTERNAL, PRESET_OPTIONS,
 			gettext_noop("Shows whether hot standby is currently active."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_REPORT | GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE
 		},
 		&in_hot_standby,
@@ -1938,6 +2030,7 @@ static struct config_bool ConfigureNamesBool[] =
 		{"allow_system_table_mods", PGC_SUSET, DEVELOPER_OPTIONS,
 			gettext_noop("Allows modifications of the structure of system tables."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_NOT_IN_SAMPLE
 		},
 		&allowSystemTableMods,
@@ -1950,6 +2043,7 @@ static struct config_bool ConfigureNamesBool[] =
 			gettext_noop("Disables reading from system indexes."),
 			gettext_noop("It does not prevent updating the indexes, so it is safe "
 						 "to use.  The worst consequence is slowness."),
+			GUC_SUPERUSER_ONLY,
 			GUC_NOT_IN_SAMPLE
 		},
 		&IgnoreSystemIndexes,
@@ -1961,7 +2055,8 @@ static struct config_bool ConfigureNamesBool[] =
 		{"lo_compat_privileges", PGC_SUSET, COMPAT_OPTIONS_PREVIOUS,
 			gettext_noop("Enables backward compatibility mode for privilege checks on large objects."),
 			gettext_noop("Skips privilege checks when reading or modifying large objects, "
-						 "for compatibility with PostgreSQL releases prior to 9.0.")
+						 "for compatibility with PostgreSQL releases prior to 9.0."),
+			GUC_SUPERUSER_ONLY
 		},
 		&lo_compat_privileges,
 		false,
@@ -1972,6 +2067,7 @@ static struct config_bool ConfigureNamesBool[] =
 		{"quote_all_identifiers", PGC_USERSET, COMPAT_OPTIONS_PREVIOUS,
 			gettext_noop("When generating SQL fragments, quote all identifiers."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 		},
 		&quote_all_identifiers,
 		false,
@@ -1982,6 +2078,7 @@ static struct config_bool ConfigureNamesBool[] =
 		{"data_checksums", PGC_INTERNAL, PRESET_OPTIONS,
 			gettext_noop("Shows whether data checksums are turned on for this cluster."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE
 		},
 		&data_checksums,
@@ -1992,7 +2089,8 @@ static struct config_bool ConfigureNamesBool[] =
 	{
 		{"syslog_sequence_numbers", PGC_SIGHUP, LOGGING_WHERE,
 			gettext_noop("Add sequence number to syslog messages to avoid duplicate suppression."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&syslog_sequence_numbers,
 		true,
@@ -2002,7 +2100,8 @@ static struct config_bool ConfigureNamesBool[] =
 	{
 		{"syslog_split_messages", PGC_SIGHUP, LOGGING_WHERE,
 			gettext_noop("Split messages sent to syslog by lines and to fit into 1024 bytes."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&syslog_split_messages,
 		true,
@@ -2013,6 +2112,7 @@ static struct config_bool ConfigureNamesBool[] =
 		{"parallel_leader_participation", PGC_USERSET, RESOURCES_ASYNCHRONOUS,
 			gettext_noop("Controls whether Gather and Gather Merge also run subplans."),
 			gettext_noop("Should gather nodes also run subplans or just gather tuples?"),
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&parallel_leader_participation,
@@ -2024,6 +2124,7 @@ static struct config_bool ConfigureNamesBool[] =
 		{"jit", PGC_USERSET, QUERY_TUNING_OTHER,
 			gettext_noop("Allow JIT compilation."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&jit_enabled,
@@ -2035,6 +2136,7 @@ static struct config_bool ConfigureNamesBool[] =
 		{"jit_debugging_support", PGC_SU_BACKEND, DEVELOPER_OPTIONS,
 			gettext_noop("Register JIT-compiled functions with debugger."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_NOT_IN_SAMPLE
 		},
 		&jit_debugging_support,
@@ -2052,6 +2154,7 @@ static struct config_bool ConfigureNamesBool[] =
 		{"jit_dump_bitcode", PGC_SUSET, DEVELOPER_OPTIONS,
 			gettext_noop("Write out LLVM bitcode to facilitate JIT debugging."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_NOT_IN_SAMPLE
 		},
 		&jit_dump_bitcode,
@@ -2063,6 +2166,7 @@ static struct config_bool ConfigureNamesBool[] =
 		{"jit_expressions", PGC_USERSET, DEVELOPER_OPTIONS,
 			gettext_noop("Allow JIT compilation of expressions."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_NOT_IN_SAMPLE
 		},
 		&jit_expressions,
@@ -2074,6 +2178,7 @@ static struct config_bool ConfigureNamesBool[] =
 		{"jit_profiling_support", PGC_SU_BACKEND, DEVELOPER_OPTIONS,
 			gettext_noop("Register JIT-compiled functions with perf profiler."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_NOT_IN_SAMPLE
 		},
 		&jit_profiling_support,
@@ -2091,6 +2196,7 @@ static struct config_bool ConfigureNamesBool[] =
 		{"jit_tuple_deforming", PGC_USERSET, DEVELOPER_OPTIONS,
 			gettext_noop("Allow JIT compilation of tuple deforming."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_NOT_IN_SAMPLE
 		},
 		&jit_tuple_deforming,
@@ -2101,6 +2207,8 @@ static struct config_bool ConfigureNamesBool[] =
 	{
 		{"data_sync_retry", PGC_POSTMASTER, ERROR_HANDLING_OPTIONS,
 			gettext_noop("Whether to continue running after a failure to sync data files."),
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&data_sync_retry,
 		false,
@@ -2110,6 +2218,8 @@ static struct config_bool ConfigureNamesBool[] =
 	{
 		{"wal_receiver_create_temp_slot", PGC_SIGHUP, REPLICATION_STANDBY,
 			gettext_noop("Sets whether a WAL receiver should create a temporary replication slot if no permanent slot is configured."),
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&wal_receiver_create_temp_slot,
 		false,
@@ -2130,6 +2240,7 @@ static struct config_int ConfigureNamesInt[] =
 			gettext_noop("Forces a switch to the next WAL file if a "
 						 "new file has not been started within N seconds."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_S
 		},
 		&XLogArchiveTimeout,
@@ -2140,6 +2251,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"post_auth_delay", PGC_BACKEND, DEVELOPER_OPTIONS,
 			gettext_noop("Waits N seconds on connection startup after authentication."),
 			gettext_noop("This allows attaching a debugger to the process."),
+			GUC_SUPERUSER_ONLY,
 			GUC_NOT_IN_SAMPLE | GUC_UNIT_S
 		},
 		&PostAuthDelay,
@@ -2150,7 +2262,8 @@ static struct config_int ConfigureNamesInt[] =
 		{"default_statistics_target", PGC_USERSET, QUERY_TUNING_OTHER,
 			gettext_noop("Sets the default statistics target."),
 			gettext_noop("This applies to table columns that have not had a "
-						 "column-specific target set via ALTER TABLE SET STATISTICS.")
+						 "column-specific target set via ALTER TABLE SET STATISTICS."),
+			GUC_SUPERUSER_ONLY
 		},
 		&default_statistics_target,
 		100, 1, 10000,
@@ -2163,6 +2276,7 @@ static struct config_int ConfigureNamesInt[] =
 			gettext_noop("The planner will merge subqueries into upper "
 						 "queries if the resulting FROM list would have no more than "
 						 "this many items."),
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&from_collapse_limit,
@@ -2176,6 +2290,7 @@ static struct config_int ConfigureNamesInt[] =
 			gettext_noop("The planner will flatten explicit JOIN "
 						 "constructs into lists of FROM items whenever a "
 						 "list of no more than this many items would result."),
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&join_collapse_limit,
@@ -2186,6 +2301,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"geqo_threshold", PGC_USERSET, QUERY_TUNING_GEQO,
 			gettext_noop("Sets the threshold of FROM items beyond which GEQO is used."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&geqo_threshold,
@@ -2196,6 +2312,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"geqo_effort", PGC_USERSET, QUERY_TUNING_GEQO,
 			gettext_noop("GEQO: effort is used to set the default for other GEQO parameters."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&Geqo_effort,
@@ -2206,6 +2323,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"geqo_pool_size", PGC_USERSET, QUERY_TUNING_GEQO,
 			gettext_noop("GEQO: number of individuals in the population."),
 			gettext_noop("Zero selects a suitable default value."),
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&Geqo_pool_size,
@@ -2216,6 +2334,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"geqo_generations", PGC_USERSET, QUERY_TUNING_GEQO,
 			gettext_noop("GEQO: number of iterations of the algorithm."),
 			gettext_noop("Zero selects a suitable default value."),
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&Geqo_generations,
@@ -2228,6 +2347,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"deadlock_timeout", PGC_SUSET, LOCK_MANAGEMENT,
 			gettext_noop("Sets the time to wait on a lock before checking for deadlock."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_MS
 		},
 		&DeadlockTimeout,
@@ -2239,6 +2359,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"max_standby_archive_delay", PGC_SIGHUP, REPLICATION_STANDBY,
 			gettext_noop("Sets the maximum delay before canceling queries when a hot standby server is processing archived WAL data."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_MS
 		},
 		&max_standby_archive_delay,
@@ -2250,6 +2371,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"max_standby_streaming_delay", PGC_SIGHUP, REPLICATION_STANDBY,
 			gettext_noop("Sets the maximum delay before canceling queries when a hot standby server is processing streamed WAL data."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_MS
 		},
 		&max_standby_streaming_delay,
@@ -2261,6 +2383,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"recovery_min_apply_delay", PGC_SIGHUP, REPLICATION_STANDBY,
 			gettext_noop("Sets the minimum delay for applying changes during recovery."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_MS
 		},
 		&recovery_min_apply_delay,
@@ -2272,6 +2395,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"wal_receiver_status_interval", PGC_SIGHUP, REPLICATION_STANDBY,
 			gettext_noop("Sets the maximum interval between WAL receiver status reports to the sending server."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_S
 		},
 		&wal_receiver_status_interval,
@@ -2283,6 +2407,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"wal_receiver_timeout", PGC_SIGHUP, REPLICATION_STANDBY,
 			gettext_noop("Sets the maximum wait time to receive data from the sending server."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_MS
 		},
 		&wal_receiver_timeout,
@@ -2293,7 +2418,8 @@ static struct config_int ConfigureNamesInt[] =
 	{
 		{"max_connections", PGC_POSTMASTER, CONN_AUTH_SETTINGS,
 			gettext_noop("Sets the maximum number of concurrent connections."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&MaxConnections,
 		100, 1, MAX_BACKENDS,
@@ -2304,7 +2430,8 @@ static struct config_int ConfigureNamesInt[] =
 		/* see max_connections */
 		{"superuser_reserved_connections", PGC_POSTMASTER, CONN_AUTH_SETTINGS,
 			gettext_noop("Sets the number of connection slots reserved for superusers."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&ReservedBackends,
 		3, 0, MAX_BACKENDS,
@@ -2315,6 +2442,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"min_dynamic_shared_memory", PGC_POSTMASTER, RESOURCES_MEM,
 			gettext_noop("Amount of dynamic shared memory reserved at startup."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_MB
 		},
 		&min_dynamic_shared_memory,
@@ -2330,6 +2458,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"shared_buffers", PGC_POSTMASTER, RESOURCES_MEM,
 			gettext_noop("Sets the number of shared memory buffers used by the server."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_BLOCKS
 		},
 		&NBuffers,
@@ -2341,6 +2470,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"temp_buffers", PGC_USERSET, RESOURCES_MEM,
 			gettext_noop("Sets the maximum number of temporary buffers used by each session."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_BLOCKS | GUC_EXPLAIN
 		},
 		&num_temp_buffers,
@@ -2351,7 +2481,8 @@ static struct config_int ConfigureNamesInt[] =
 	{
 		{"port", PGC_POSTMASTER, CONN_AUTH_SETTINGS,
 			gettext_noop("Sets the TCP port the server listens on."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&PostPortNumber,
 		DEF_PGPORT, 1, 65535,
@@ -2366,7 +2497,8 @@ static struct config_int ConfigureNamesInt[] =
 						 "to be a numeric mode specification in the form "
 						 "accepted by the chmod and umask system calls. "
 						 "(To use the customary octal format the number must "
-						 "start with a 0 (zero).)")
+						 "start with a 0 (zero).)"),
+			GUC_SUPERUSER_ONLY
 		},
 		&Unix_socket_permissions,
 		0777, 0000, 0777,
@@ -2380,7 +2512,8 @@ static struct config_int ConfigureNamesInt[] =
 						 "to be a numeric mode specification in the form "
 						 "accepted by the chmod and umask system calls. "
 						 "(To use the customary octal format the number must "
-						 "start with a 0 (zero).)")
+						 "start with a 0 (zero).)"),
+			GUC_SUPERUSER_ONLY
 		},
 		&Log_file_mode,
 		0600, 0000, 0777,
@@ -2395,6 +2528,7 @@ static struct config_int ConfigureNamesInt[] =
 						 "in the form accepted by the chmod and umask system "
 						 "calls. (To use the customary octal format the number "
 						 "must start with a 0 (zero).)"),
+			GUC_SUPERUSER_ONLY,
 			GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE
 		},
 		&data_directory_mode,
@@ -2408,6 +2542,7 @@ static struct config_int ConfigureNamesInt[] =
 			gettext_noop("This much memory can be used by each internal "
 						 "sort operation and hash table before switching to "
 						 "temporary disk files."),
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_KB | GUC_EXPLAIN
 		},
 		&work_mem,
@@ -2419,6 +2554,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"maintenance_work_mem", PGC_USERSET, RESOURCES_MEM,
 			gettext_noop("Sets the maximum memory to be used for maintenance operations."),
 			gettext_noop("This includes operations such as VACUUM and CREATE INDEX."),
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_KB
 		},
 		&maintenance_work_mem,
@@ -2431,6 +2567,7 @@ static struct config_int ConfigureNamesInt[] =
 			gettext_noop("Sets the maximum memory to be used for logical decoding."),
 			gettext_noop("This much memory can be used by each internal "
 						 "reorder buffer before spilling to disk."),
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_KB
 		},
 		&logical_decoding_work_mem,
@@ -2447,6 +2584,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"max_stack_depth", PGC_SUSET, RESOURCES_MEM,
 			gettext_noop("Sets the maximum stack depth, in kilobytes."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_KB
 		},
 		&max_stack_depth,
@@ -2458,6 +2596,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"temp_file_limit", PGC_SUSET, RESOURCES_DISK,
 			gettext_noop("Limits the total size of all temporary files used by each process."),
 			gettext_noop("-1 means no limit."),
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_KB
 		},
 		&temp_file_limit,
@@ -2468,7 +2607,8 @@ static struct config_int ConfigureNamesInt[] =
 	{
 		{"vacuum_cost_page_hit", PGC_USERSET, RESOURCES_VACUUM_DELAY,
 			gettext_noop("Vacuum cost for a page found in the buffer cache."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&VacuumCostPageHit,
 		1, 0, 10000,
@@ -2478,7 +2618,8 @@ static struct config_int ConfigureNamesInt[] =
 	{
 		{"vacuum_cost_page_miss", PGC_USERSET, RESOURCES_VACUUM_DELAY,
 			gettext_noop("Vacuum cost for a page not found in the buffer cache."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&VacuumCostPageMiss,
 		2, 0, 10000,
@@ -2488,7 +2629,8 @@ static struct config_int ConfigureNamesInt[] =
 	{
 		{"vacuum_cost_page_dirty", PGC_USERSET, RESOURCES_VACUUM_DELAY,
 			gettext_noop("Vacuum cost for a page dirtied by vacuum."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&VacuumCostPageDirty,
 		20, 0, 10000,
@@ -2498,7 +2640,8 @@ static struct config_int ConfigureNamesInt[] =
 	{
 		{"vacuum_cost_limit", PGC_USERSET, RESOURCES_VACUUM_DELAY,
 			gettext_noop("Vacuum cost amount available before napping."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&VacuumCostLimit,
 		200, 1, 10000,
@@ -2508,7 +2651,8 @@ static struct config_int ConfigureNamesInt[] =
 	{
 		{"autovacuum_vacuum_cost_limit", PGC_SIGHUP, AUTOVACUUM,
 			gettext_noop("Vacuum cost amount available before napping, for autovacuum."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&autovacuum_vac_cost_limit,
 		-1, -1, 10000,
@@ -2518,7 +2662,8 @@ static struct config_int ConfigureNamesInt[] =
 	{
 		{"max_files_per_process", PGC_POSTMASTER, RESOURCES_KERNEL,
 			gettext_noop("Sets the maximum number of simultaneously open files for each server process."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&max_files_per_process,
 		1000, 64, INT_MAX,
@@ -2531,7 +2676,8 @@ static struct config_int ConfigureNamesInt[] =
 	{
 		{"max_prepared_transactions", PGC_POSTMASTER, RESOURCES_MEM,
 			gettext_noop("Sets the maximum number of simultaneously prepared transactions."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&max_prepared_xacts,
 		0, 0, MAX_BACKENDS,
@@ -2543,6 +2689,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"trace_lock_oidmin", PGC_SUSET, DEVELOPER_OPTIONS,
 			gettext_noop("Sets the minimum OID of tables for tracking locks."),
 			gettext_noop("Is used to avoid output on system tables."),
+			GUC_SUPERUSER_ONLY,
 			GUC_NOT_IN_SAMPLE
 		},
 		&Trace_lock_oidmin,
@@ -2553,6 +2700,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"trace_lock_table", PGC_SUSET, DEVELOPER_OPTIONS,
 			gettext_noop("Sets the OID of the table with unconditionally lock tracing."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_NOT_IN_SAMPLE
 		},
 		&Trace_lock_table,
@@ -2565,6 +2713,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"statement_timeout", PGC_USERSET, CLIENT_CONN_STATEMENT,
 			gettext_noop("Sets the maximum allowed duration of any statement."),
 			gettext_noop("A value of 0 turns off the timeout."),
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_MS
 		},
 		&StatementTimeout,
@@ -2576,6 +2725,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"lock_timeout", PGC_USERSET, CLIENT_CONN_STATEMENT,
 			gettext_noop("Sets the maximum allowed duration of any wait for a lock."),
 			gettext_noop("A value of 0 turns off the timeout."),
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_MS
 		},
 		&LockTimeout,
@@ -2587,6 +2737,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"idle_in_transaction_session_timeout", PGC_USERSET, CLIENT_CONN_STATEMENT,
 			gettext_noop("Sets the maximum allowed idle time between queries, when in a transaction."),
 			gettext_noop("A value of 0 turns off the timeout."),
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_MS
 		},
 		&IdleInTransactionSessionTimeout,
@@ -2598,6 +2749,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"idle_session_timeout", PGC_USERSET, CLIENT_CONN_STATEMENT,
 			gettext_noop("Sets the maximum allowed idle time between queries, when not in a transaction."),
 			gettext_noop("A value of 0 turns off the timeout."),
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_MS
 		},
 		&IdleSessionTimeout,
@@ -2608,7 +2760,8 @@ static struct config_int ConfigureNamesInt[] =
 	{
 		{"vacuum_freeze_min_age", PGC_USERSET, CLIENT_CONN_STATEMENT,
 			gettext_noop("Minimum age at which VACUUM should freeze a table row."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&vacuum_freeze_min_age,
 		50000000, 0, 1000000000,
@@ -2618,7 +2771,8 @@ static struct config_int ConfigureNamesInt[] =
 	{
 		{"vacuum_freeze_table_age", PGC_USERSET, CLIENT_CONN_STATEMENT,
 			gettext_noop("Age at which VACUUM should scan whole table to freeze tuples."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&vacuum_freeze_table_age,
 		150000000, 0, 2000000000,
@@ -2628,7 +2782,8 @@ static struct config_int ConfigureNamesInt[] =
 	{
 		{"vacuum_multixact_freeze_min_age", PGC_USERSET, CLIENT_CONN_STATEMENT,
 			gettext_noop("Minimum age at which VACUUM should freeze a MultiXactId in a table row."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&vacuum_multixact_freeze_min_age,
 		5000000, 0, 1000000000,
@@ -2638,7 +2793,8 @@ static struct config_int ConfigureNamesInt[] =
 	{
 		{"vacuum_multixact_freeze_table_age", PGC_USERSET, CLIENT_CONN_STATEMENT,
 			gettext_noop("Multixact age at which VACUUM should scan whole table to freeze tuples."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&vacuum_multixact_freeze_table_age,
 		150000000, 0, 2000000000,
@@ -2648,7 +2804,8 @@ static struct config_int ConfigureNamesInt[] =
 	{
 		{"vacuum_defer_cleanup_age", PGC_SIGHUP, REPLICATION_PRIMARY,
 			gettext_noop("Number of transactions by which VACUUM and HOT cleanup should be deferred, if any."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&vacuum_defer_cleanup_age,
 		0, 0, 1000000,			/* see ComputeXidHorizons */
@@ -2657,7 +2814,8 @@ static struct config_int ConfigureNamesInt[] =
 	{
 		{"vacuum_failsafe_age", PGC_USERSET, CLIENT_CONN_STATEMENT,
 			gettext_noop("Age at which VACUUM should trigger failsafe to avoid a wraparound outage."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&vacuum_failsafe_age,
 		1600000000, 0, 2100000000,
@@ -2666,7 +2824,8 @@ static struct config_int ConfigureNamesInt[] =
 	{
 		{"vacuum_multixact_failsafe_age", PGC_USERSET, CLIENT_CONN_STATEMENT,
 			gettext_noop("Multixact age at which VACUUM should trigger failsafe to avoid a wraparound outage."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&vacuum_multixact_failsafe_age,
 		1600000000, 0, 2100000000,
@@ -2681,7 +2840,8 @@ static struct config_int ConfigureNamesInt[] =
 			gettext_noop("Sets the maximum number of locks per transaction."),
 			gettext_noop("The shared lock table is sized on the assumption that "
 						 "at most max_locks_per_transaction * max_connections distinct "
-						 "objects will need to be locked at any one time.")
+						 "objects will need to be locked at any one time."),
+			GUC_SUPERUSER_ONLY
 		},
 		&max_locks_per_xact,
 		64, 10, INT_MAX,
@@ -2693,7 +2853,8 @@ static struct config_int ConfigureNamesInt[] =
 			gettext_noop("Sets the maximum number of predicate locks per transaction."),
 			gettext_noop("The shared predicate lock table is sized on the assumption that "
 						 "at most max_pred_locks_per_transaction * max_connections distinct "
-						 "objects will need to be locked at any one time.")
+						 "objects will need to be locked at any one time."),
+			GUC_SUPERUSER_ONLY
 		},
 		&max_predicate_locks_per_xact,
 		64, 10, INT_MAX,
@@ -2704,7 +2865,8 @@ static struct config_int ConfigureNamesInt[] =
 		{"max_pred_locks_per_relation", PGC_SIGHUP, LOCK_MANAGEMENT,
 			gettext_noop("Sets the maximum number of predicate-locked pages and tuples per relation."),
 			gettext_noop("If more than this total of pages and tuples in the same relation are locked "
-						 "by a connection, those locks are replaced by a relation-level lock.")
+						 "by a connection, those locks are replaced by a relation-level lock."),
+			GUC_SUPERUSER_ONLY
 		},
 		&max_predicate_locks_per_relation,
 		-2, INT_MIN, INT_MAX,
@@ -2715,7 +2877,8 @@ static struct config_int ConfigureNamesInt[] =
 		{"max_pred_locks_per_page", PGC_SIGHUP, LOCK_MANAGEMENT,
 			gettext_noop("Sets the maximum number of predicate-locked tuples per page."),
 			gettext_noop("If more than this number of tuples on the same page are locked "
-						 "by a connection, those locks are replaced by a page-level lock.")
+						 "by a connection, those locks are replaced by a page-level lock."),
+			GUC_SUPERUSER_ONLY
 		},
 		&max_predicate_locks_per_page,
 		2, 0, INT_MAX,
@@ -2726,6 +2889,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"authentication_timeout", PGC_SIGHUP, CONN_AUTH_AUTH,
 			gettext_noop("Sets the maximum allowed time to complete client authentication."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_S
 		},
 		&AuthenticationTimeout,
@@ -2738,6 +2902,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"pre_auth_delay", PGC_SIGHUP, DEVELOPER_OPTIONS,
 			gettext_noop("Waits N seconds on connection startup before authentication."),
 			gettext_noop("This allows attaching a debugger to the process."),
+			GUC_SUPERUSER_ONLY,
 			GUC_NOT_IN_SAMPLE | GUC_UNIT_S
 		},
 		&PreAuthDelay,
@@ -2749,6 +2914,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"wal_keep_size", PGC_SIGHUP, REPLICATION_SENDING,
 			gettext_noop("Sets the size of WAL files held for standby servers."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_MB
 		},
 		&wal_keep_size_mb,
@@ -2760,6 +2926,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"min_wal_size", PGC_SIGHUP, WAL_CHECKPOINTS,
 			gettext_noop("Sets the minimum size to shrink the WAL to."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_MB
 		},
 		&min_wal_size_mb,
@@ -2772,6 +2939,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"max_wal_size", PGC_SIGHUP, WAL_CHECKPOINTS,
 			gettext_noop("Sets the WAL size that triggers a checkpoint."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_MB
 		},
 		&max_wal_size_mb,
@@ -2784,6 +2952,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"checkpoint_timeout", PGC_SIGHUP, WAL_CHECKPOINTS,
 			gettext_noop("Sets the maximum time between automatic WAL checkpoints."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_S
 		},
 		&CheckPointTimeout,
@@ -2798,6 +2967,7 @@ static struct config_int ConfigureNamesInt[] =
 			gettext_noop("Write a message to the server log if checkpoints "
 						 "caused by the filling of checkpoint segment files happens more "
 						 "frequently than this number of seconds. Zero turns off the warning."),
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_S
 		},
 		&CheckPointWarning,
@@ -2809,6 +2979,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"checkpoint_flush_after", PGC_SIGHUP, WAL_CHECKPOINTS,
 			gettext_noop("Number of pages after which previously performed writes are flushed to disk."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_BLOCKS
 		},
 		&checkpoint_flush_after,
@@ -2820,6 +2991,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"wal_buffers", PGC_POSTMASTER, WAL_SETTINGS,
 			gettext_noop("Sets the number of disk-page buffers in shared memory for WAL."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_XBLOCKS
 		},
 		&XLOGbuffers,
@@ -2831,6 +3003,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"wal_writer_delay", PGC_SIGHUP, WAL_SETTINGS,
 			gettext_noop("Time between WAL flushes performed in the WAL writer."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_MS
 		},
 		&WalWriterDelay,
@@ -2842,6 +3015,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"wal_writer_flush_after", PGC_SIGHUP, WAL_SETTINGS,
 			gettext_noop("Amount of WAL written out by WAL writer that triggers a flush."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_XBLOCKS
 		},
 		&WalWriterFlushAfter,
@@ -2853,6 +3027,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"wal_skip_threshold", PGC_USERSET, WAL_SETTINGS,
 			gettext_noop("Minimum size of new file to fsync instead of writing WAL."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_KB
 		},
 		&wal_skip_threshold,
@@ -2863,7 +3038,8 @@ static struct config_int ConfigureNamesInt[] =
 	{
 		{"max_wal_senders", PGC_POSTMASTER, REPLICATION_SENDING,
 			gettext_noop("Sets the maximum number of simultaneously running WAL sender processes."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&max_wal_senders,
 		10, 0, MAX_BACKENDS,
@@ -2874,7 +3050,8 @@ static struct config_int ConfigureNamesInt[] =
 		/* see max_wal_senders */
 		{"max_replication_slots", PGC_POSTMASTER, REPLICATION_SENDING,
 			gettext_noop("Sets the maximum number of simultaneously defined replication slots."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&max_replication_slots,
 		10, 0, MAX_BACKENDS /* XXX? */ ,
@@ -2887,6 +3064,7 @@ static struct config_int ConfigureNamesInt[] =
 			gettext_noop("Replication slots will be marked as failed, and segments released "
 						 "for deletion or recycling, if this much space is occupied by WAL "
 						 "on disk."),
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_MB
 		},
 		&max_slot_wal_keep_size_mb,
@@ -2898,6 +3076,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"wal_sender_timeout", PGC_USERSET, REPLICATION_SENDING,
 			gettext_noop("Sets the maximum time to wait for WAL replication."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_MS
 		},
 		&wal_sender_timeout,
@@ -2909,7 +3088,8 @@ static struct config_int ConfigureNamesInt[] =
 		{"commit_delay", PGC_SUSET, WAL_SETTINGS,
 			gettext_noop("Sets the delay in microseconds between transaction commit and "
 						 "flushing WAL to disk."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 			/* we have no microseconds designation, so can't supply units here */
 		},
 		&CommitDelay,
@@ -2921,7 +3101,8 @@ static struct config_int ConfigureNamesInt[] =
 		{"commit_siblings", PGC_USERSET, WAL_SETTINGS,
 			gettext_noop("Sets the minimum concurrent open transactions before performing "
 						 "commit_delay."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&CommitSiblings,
 		5, 0, 1000,
@@ -2934,7 +3115,8 @@ static struct config_int ConfigureNamesInt[] =
 			gettext_noop("This affects real, double precision, and geometric data types. "
 						 "A zero or negative parameter value is added to the standard "
 						 "number of digits (FLT_DIG or DBL_DIG as appropriate). "
-						 "Any value greater than zero selects precise output mode.")
+						 "Any value greater than zero selects precise output mode."),
+			GUC_SUPERUSER_ONLY
 		},
 		&extra_float_digits,
 		1, -15, 3,
@@ -2947,6 +3129,7 @@ static struct config_int ConfigureNamesInt[] =
 						 "a sample of statements will be logged."
 						 " Sampling is determined by log_statement_sample_rate."),
 			gettext_noop("Zero logs a sample of all queries. -1 turns this feature off."),
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_MS
 		},
 		&log_min_duration_sample,
@@ -2959,6 +3142,7 @@ static struct config_int ConfigureNamesInt[] =
 			gettext_noop("Sets the minimum execution time above which "
 						 "all statements will be logged."),
 			gettext_noop("Zero prints all queries. -1 turns this feature off."),
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_MS
 		},
 		&log_min_duration_statement,
@@ -2971,6 +3155,7 @@ static struct config_int ConfigureNamesInt[] =
 			gettext_noop("Sets the minimum execution time above which "
 						 "autovacuum actions will be logged."),
 			gettext_noop("Zero prints all actions. -1 turns autovacuum logging off."),
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_MS
 		},
 		&Log_autovacuum_min_duration,
@@ -2982,6 +3167,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"log_parameter_max_length", PGC_SUSET, LOGGING_WHAT,
 			gettext_noop("When logging statements, limit logged parameter values to first N bytes."),
 			gettext_noop("-1 to print values in full."),
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_BYTE
 		},
 		&log_parameter_max_length,
@@ -2993,6 +3179,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"log_parameter_max_length_on_error", PGC_USERSET, LOGGING_WHAT,
 			gettext_noop("When reporting an error, limit logged parameter values to first N bytes."),
 			gettext_noop("-1 to print values in full."),
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_BYTE
 		},
 		&log_parameter_max_length_on_error,
@@ -3004,6 +3191,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"bgwriter_delay", PGC_SIGHUP, RESOURCES_BGWRITER,
 			gettext_noop("Background writer sleep time between rounds."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_MS
 		},
 		&BgWriterDelay,
@@ -3014,7 +3202,8 @@ static struct config_int ConfigureNamesInt[] =
 	{
 		{"bgwriter_lru_maxpages", PGC_SIGHUP, RESOURCES_BGWRITER,
 			gettext_noop("Background writer maximum number of LRU pages to flush per round."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&bgwriter_lru_maxpages,
 		100, 0, INT_MAX / 2,	/* Same upper limit as shared_buffers */
@@ -3025,6 +3214,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"bgwriter_flush_after", PGC_SIGHUP, RESOURCES_BGWRITER,
 			gettext_noop("Number of pages after which previously performed writes are flushed to disk."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_BLOCKS
 		},
 		&bgwriter_flush_after,
@@ -3038,6 +3228,7 @@ static struct config_int ConfigureNamesInt[] =
 			RESOURCES_ASYNCHRONOUS,
 			gettext_noop("Number of simultaneous requests that can be handled efficiently by the disk subsystem."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&effective_io_concurrency,
@@ -3056,6 +3247,7 @@ static struct config_int ConfigureNamesInt[] =
 			RESOURCES_ASYNCHRONOUS,
 			gettext_noop("A variant of effective_io_concurrency that is used for maintenance work."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&maintenance_io_concurrency,
@@ -3072,6 +3264,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"backend_flush_after", PGC_USERSET, RESOURCES_ASYNCHRONOUS,
 			gettext_noop("Number of pages after which previously performed writes are flushed to disk."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_BLOCKS
 		},
 		&backend_flush_after,
@@ -3085,6 +3278,7 @@ static struct config_int ConfigureNamesInt[] =
 			RESOURCES_ASYNCHRONOUS,
 			gettext_noop("Maximum number of concurrent worker processes."),
 			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&max_worker_processes,
 		8, 0, MAX_BACKENDS,
@@ -3097,6 +3291,7 @@ static struct config_int ConfigureNamesInt[] =
 			REPLICATION_SUBSCRIBERS,
 			gettext_noop("Maximum number of logical replication worker processes."),
 			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&max_logical_replication_workers,
 		4, 0, MAX_BACKENDS,
@@ -3109,6 +3304,7 @@ static struct config_int ConfigureNamesInt[] =
 			REPLICATION_SUBSCRIBERS,
 			gettext_noop("Maximum number of table synchronization workers per subscription."),
 			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&max_sync_workers_per_subscription,
 		2, 0, MAX_BACKENDS,
@@ -3119,6 +3315,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"log_rotation_age", PGC_SIGHUP, LOGGING_WHERE,
 			gettext_noop("Automatic log file rotation will occur after N minutes."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_MIN
 		},
 		&Log_RotationAge,
@@ -3130,6 +3327,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"log_rotation_size", PGC_SIGHUP, LOGGING_WHERE,
 			gettext_noop("Automatic log file rotation will occur after N kilobytes."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_KB
 		},
 		&Log_RotationSize,
@@ -3141,6 +3339,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"max_function_args", PGC_INTERNAL, PRESET_OPTIONS,
 			gettext_noop("Shows the maximum number of function arguments."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE
 		},
 		&max_function_args,
@@ -3152,6 +3351,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"max_index_keys", PGC_INTERNAL, PRESET_OPTIONS,
 			gettext_noop("Shows the maximum number of index keys."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE
 		},
 		&max_index_keys,
@@ -3163,6 +3363,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"max_identifier_length", PGC_INTERNAL, PRESET_OPTIONS,
 			gettext_noop("Shows the maximum identifier length."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE
 		},
 		&max_identifier_length,
@@ -3174,6 +3375,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"block_size", PGC_INTERNAL, PRESET_OPTIONS,
 			gettext_noop("Shows the size of a disk block."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE
 		},
 		&block_size,
@@ -3185,6 +3387,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"segment_size", PGC_INTERNAL, PRESET_OPTIONS,
 			gettext_noop("Shows the number of pages per disk file."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_BLOCKS | GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE
 		},
 		&segment_size,
@@ -3196,6 +3399,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"wal_block_size", PGC_INTERNAL, PRESET_OPTIONS,
 			gettext_noop("Shows the block size in the write ahead log."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE
 		},
 		&wal_block_size,
@@ -3208,6 +3412,7 @@ static struct config_int ConfigureNamesInt[] =
 			gettext_noop("Sets the time to wait before retrying to retrieve WAL "
 						 "after a failed attempt."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_MS
 		},
 		&wal_retrieve_retry_interval,
@@ -3219,6 +3424,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"wal_segment_size", PGC_INTERNAL, PRESET_OPTIONS,
 			gettext_noop("Shows the size of write ahead log segments."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_BYTE | GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE
 		},
 		&wal_segment_size,
@@ -3232,6 +3438,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"autovacuum_naptime", PGC_SIGHUP, AUTOVACUUM,
 			gettext_noop("Time to sleep between autovacuum runs."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_S
 		},
 		&autovacuum_naptime,
@@ -3241,7 +3448,8 @@ static struct config_int ConfigureNamesInt[] =
 	{
 		{"autovacuum_vacuum_threshold", PGC_SIGHUP, AUTOVACUUM,
 			gettext_noop("Minimum number of tuple updates or deletes prior to vacuum."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&autovacuum_vac_thresh,
 		50, 0, INT_MAX,
@@ -3250,7 +3458,8 @@ static struct config_int ConfigureNamesInt[] =
 	{
 		{"autovacuum_vacuum_insert_threshold", PGC_SIGHUP, AUTOVACUUM,
 			gettext_noop("Minimum number of tuple inserts prior to vacuum, or -1 to disable insert vacuums."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&autovacuum_vac_ins_thresh,
 		1000, -1, INT_MAX,
@@ -3259,7 +3468,8 @@ static struct config_int ConfigureNamesInt[] =
 	{
 		{"autovacuum_analyze_threshold", PGC_SIGHUP, AUTOVACUUM,
 			gettext_noop("Minimum number of tuple inserts, updates, or deletes prior to analyze."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&autovacuum_anl_thresh,
 		50, 0, INT_MAX,
@@ -3269,7 +3479,8 @@ static struct config_int ConfigureNamesInt[] =
 		/* see varsup.c for why this is PGC_POSTMASTER not PGC_SIGHUP */
 		{"autovacuum_freeze_max_age", PGC_POSTMASTER, AUTOVACUUM,
 			gettext_noop("Age at which to autovacuum a table to prevent transaction ID wraparound."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&autovacuum_freeze_max_age,
 
@@ -3284,7 +3495,8 @@ static struct config_int ConfigureNamesInt[] =
 		/* see multixact.c for why this is PGC_POSTMASTER not PGC_SIGHUP */
 		{"autovacuum_multixact_freeze_max_age", PGC_POSTMASTER, AUTOVACUUM,
 			gettext_noop("Multixact age at which to autovacuum a table to prevent multixact wraparound."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&autovacuum_multixact_freeze_max_age,
 		400000000, 10000, 2000000000,
@@ -3294,7 +3506,8 @@ static struct config_int ConfigureNamesInt[] =
 		/* see max_connections */
 		{"autovacuum_max_workers", PGC_POSTMASTER, AUTOVACUUM,
 			gettext_noop("Sets the maximum number of simultaneously running autovacuum worker processes."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&autovacuum_max_workers,
 		3, 1, MAX_BACKENDS,
@@ -3304,7 +3517,8 @@ static struct config_int ConfigureNamesInt[] =
 	{
 		{"max_parallel_maintenance_workers", PGC_USERSET, RESOURCES_ASYNCHRONOUS,
 			gettext_noop("Sets the maximum number of parallel processes per maintenance operation."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&max_parallel_maintenance_workers,
 		2, 0, 1024,
@@ -3315,6 +3529,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"max_parallel_workers_per_gather", PGC_USERSET, RESOURCES_ASYNCHRONOUS,
 			gettext_noop("Sets the maximum number of parallel processes per executor node."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&max_parallel_workers_per_gather,
@@ -3326,6 +3541,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"max_parallel_workers", PGC_USERSET, RESOURCES_ASYNCHRONOUS,
 			gettext_noop("Sets the maximum number of parallel workers that can be active at one time."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&max_parallel_workers,
@@ -3337,6 +3553,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"autovacuum_work_mem", PGC_SIGHUP, RESOURCES_MEM,
 			gettext_noop("Sets the maximum memory to be used by each autovacuum worker process."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_KB
 		},
 		&autovacuum_work_mem,
@@ -3348,6 +3565,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"old_snapshot_threshold", PGC_POSTMASTER, RESOURCES_ASYNCHRONOUS,
 			gettext_noop("Time before a snapshot is too old to read pages changed after the snapshot was taken."),
 			gettext_noop("A value of -1 disables this feature."),
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_MIN
 		},
 		&old_snapshot_threshold,
@@ -3359,6 +3577,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"tcp_keepalives_idle", PGC_USERSET, CONN_AUTH_SETTINGS,
 			gettext_noop("Time between issuing TCP keepalives."),
 			gettext_noop("A value of 0 uses the system default."),
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_S
 		},
 		&tcp_keepalives_idle,
@@ -3370,6 +3589,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"tcp_keepalives_interval", PGC_USERSET, CONN_AUTH_SETTINGS,
 			gettext_noop("Time between TCP keepalive retransmits."),
 			gettext_noop("A value of 0 uses the system default."),
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_S
 		},
 		&tcp_keepalives_interval,
@@ -3381,6 +3601,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"ssl_renegotiation_limit", PGC_USERSET, CONN_AUTH_SSL,
 			gettext_noop("SSL renegotiation is no longer supported; this can only be 0."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE,
 		},
 		&ssl_renegotiation_limit,
@@ -3394,6 +3615,7 @@ static struct config_int ConfigureNamesInt[] =
 			gettext_noop("This controls the number of consecutive keepalive retransmits that can be "
 						 "lost before a connection is considered dead. A value of 0 uses the "
 						 "system default."),
+			GUC_SUPERUSER_ONLY
 		},
 		&tcp_keepalives_count,
 		0, 0, INT_MAX,
@@ -3404,6 +3626,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"gin_fuzzy_search_limit", PGC_USERSET, CLIENT_CONN_OTHER,
 			gettext_noop("Sets the maximum allowed result for exact search by GIN."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			0
 		},
 		&GinFuzzySearchLimit,
@@ -3416,6 +3639,7 @@ static struct config_int ConfigureNamesInt[] =
 			gettext_noop("Sets the planner's assumption about the total size of the data caches."),
 			gettext_noop("That is, the total size of the caches (kernel cache and shared buffers) used for PostgreSQL data files. "
 						 "This is measured in disk pages, which are normally 8 kB each."),
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_BLOCKS | GUC_EXPLAIN,
 		},
 		&effective_cache_size,
@@ -3427,6 +3651,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"min_parallel_table_scan_size", PGC_USERSET, QUERY_TUNING_COST,
 			gettext_noop("Sets the minimum amount of table data for a parallel scan."),
 			gettext_noop("If the planner estimates that it will read a number of table pages too small to reach this limit, a parallel scan will not be considered."),
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_BLOCKS | GUC_EXPLAIN,
 		},
 		&min_parallel_table_scan_size,
@@ -3438,6 +3663,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"min_parallel_index_scan_size", PGC_USERSET, QUERY_TUNING_COST,
 			gettext_noop("Sets the minimum amount of index data for a parallel scan."),
 			gettext_noop("If the planner estimates that it will read a number of index pages too small to reach this limit, a parallel scan will not be considered."),
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_BLOCKS | GUC_EXPLAIN,
 		},
 		&min_parallel_index_scan_size,
@@ -3450,6 +3676,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"server_version_num", PGC_INTERNAL, PRESET_OPTIONS,
 			gettext_noop("Shows the server version as an integer."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE
 		},
 		&server_version_num,
@@ -3461,6 +3688,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"log_temp_files", PGC_SUSET, LOGGING_WHAT,
 			gettext_noop("Log the use of temporary files larger than this number of kilobytes."),
 			gettext_noop("Zero logs all files. The default is -1 (turning this feature off)."),
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_KB
 		},
 		&log_temp_files,
@@ -3472,6 +3700,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"track_activity_query_size", PGC_POSTMASTER, STATS_COLLECTOR,
 			gettext_noop("Sets the size reserved for pg_stat_activity.query, in bytes."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_BYTE
 		},
 		&pgstat_track_activity_query_size,
@@ -3483,6 +3712,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"gin_pending_list_limit", PGC_USERSET, CLIENT_CONN_STATEMENT,
 			gettext_noop("Sets the maximum size of the pending list for GIN index."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_KB
 		},
 		&gin_pending_list_limit,
@@ -3494,6 +3724,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"tcp_user_timeout", PGC_USERSET, CONN_AUTH_SETTINGS,
 			gettext_noop("TCP user timeout."),
 			gettext_noop("A value of 0 uses the system default."),
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_MS
 		},
 		&tcp_user_timeout,
@@ -3505,6 +3736,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"huge_page_size", PGC_POSTMASTER, RESOURCES_MEM,
 			gettext_noop("The size of huge page that should be requested."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_KB
 		},
 		&huge_page_size,
@@ -3516,6 +3748,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"debug_discard_caches", PGC_SUSET, DEVELOPER_OPTIONS,
 			gettext_noop("Aggressively flush system caches for debugging purposes."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_NOT_IN_SAMPLE
 		},
 		&debug_discard_caches,
@@ -3539,6 +3772,7 @@ static struct config_int ConfigureNamesInt[] =
 		{"client_connection_check_interval", PGC_USERSET, CONN_AUTH_SETTINGS,
 			gettext_noop("Sets the time interval between checks for disconnection while running queries."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_MS
 		},
 		&client_connection_check_interval,
@@ -3560,6 +3794,7 @@ static struct config_real ConfigureNamesReal[] =
 			gettext_noop("Sets the planner's estimate of the cost of a "
 						 "sequentially fetched disk page."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&seq_page_cost,
@@ -3571,6 +3806,7 @@ static struct config_real ConfigureNamesReal[] =
 			gettext_noop("Sets the planner's estimate of the cost of a "
 						 "nonsequentially fetched disk page."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&random_page_cost,
@@ -3582,6 +3818,7 @@ static struct config_real ConfigureNamesReal[] =
 			gettext_noop("Sets the planner's estimate of the cost of "
 						 "processing each tuple (row)."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&cpu_tuple_cost,
@@ -3593,6 +3830,7 @@ static struct config_real ConfigureNamesReal[] =
 			gettext_noop("Sets the planner's estimate of the cost of "
 						 "processing each index entry during an index scan."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&cpu_index_tuple_cost,
@@ -3604,6 +3842,7 @@ static struct config_real ConfigureNamesReal[] =
 			gettext_noop("Sets the planner's estimate of the cost of "
 						 "processing each operator or function call."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&cpu_operator_cost,
@@ -3615,6 +3854,7 @@ static struct config_real ConfigureNamesReal[] =
 			gettext_noop("Sets the planner's estimate of the cost of "
 						 "passing each tuple (row) from worker to leader backend."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&parallel_tuple_cost,
@@ -3626,6 +3866,7 @@ static struct config_real ConfigureNamesReal[] =
 			gettext_noop("Sets the planner's estimate of the cost of "
 						 "starting up worker processes for parallel query."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&parallel_setup_cost,
@@ -3637,6 +3878,7 @@ static struct config_real ConfigureNamesReal[] =
 		{"jit_above_cost", PGC_USERSET, QUERY_TUNING_COST,
 			gettext_noop("Perform JIT compilation if query is more expensive."),
 			gettext_noop("-1 disables JIT compilation."),
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&jit_above_cost,
@@ -3648,6 +3890,7 @@ static struct config_real ConfigureNamesReal[] =
 		{"jit_optimize_above_cost", PGC_USERSET, QUERY_TUNING_COST,
 			gettext_noop("Optimize JIT-compiled functions if query is more expensive."),
 			gettext_noop("-1 disables optimization."),
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&jit_optimize_above_cost,
@@ -3659,6 +3902,7 @@ static struct config_real ConfigureNamesReal[] =
 		{"jit_inline_above_cost", PGC_USERSET, QUERY_TUNING_COST,
 			gettext_noop("Perform JIT inlining if query is more expensive."),
 			gettext_noop("-1 disables inlining."),
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&jit_inline_above_cost,
@@ -3671,6 +3915,7 @@ static struct config_real ConfigureNamesReal[] =
 			gettext_noop("Sets the planner's estimate of the fraction of "
 						 "a cursor's rows that will be retrieved."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&cursor_tuple_fraction,
@@ -3682,6 +3927,7 @@ static struct config_real ConfigureNamesReal[] =
 		{"geqo_selection_bias", PGC_USERSET, QUERY_TUNING_GEQO,
 			gettext_noop("GEQO: selective pressure within the population."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&Geqo_selection_bias,
@@ -3693,6 +3939,7 @@ static struct config_real ConfigureNamesReal[] =
 		{"geqo_seed", PGC_USERSET, QUERY_TUNING_GEQO,
 			gettext_noop("GEQO: seed for random path selection."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&Geqo_seed,
@@ -3704,6 +3951,7 @@ static struct config_real ConfigureNamesReal[] =
 		{"hash_mem_multiplier", PGC_USERSET, RESOURCES_MEM,
 			gettext_noop("Multiple of work_mem to use for hash tables."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&hash_mem_multiplier,
@@ -3714,7 +3962,8 @@ static struct config_real ConfigureNamesReal[] =
 	{
 		{"bgwriter_lru_multiplier", PGC_SIGHUP, RESOURCES_BGWRITER,
 			gettext_noop("Multiple of the average buffer usage to free per round."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&bgwriter_lru_multiplier,
 		2.0, 0.0, 10.0,
@@ -3725,6 +3974,7 @@ static struct config_real ConfigureNamesReal[] =
 		{"seed", PGC_USERSET, UNGROUPED,
 			gettext_noop("Sets the seed for random-number generation."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_NO_SHOW_ALL | GUC_NO_RESET_ALL | GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE
 		},
 		&phony_random_seed,
@@ -3736,6 +3986,7 @@ static struct config_real ConfigureNamesReal[] =
 		{"vacuum_cost_delay", PGC_USERSET, RESOURCES_VACUUM_DELAY,
 			gettext_noop("Vacuum cost delay in milliseconds."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_MS
 		},
 		&VacuumCostDelay,
@@ -3747,6 +3998,7 @@ static struct config_real ConfigureNamesReal[] =
 		{"autovacuum_vacuum_cost_delay", PGC_SIGHUP, AUTOVACUUM,
 			gettext_noop("Vacuum cost delay in milliseconds, for autovacuum."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_UNIT_MS
 		},
 		&autovacuum_vac_cost_delay,
@@ -3757,7 +4009,8 @@ static struct config_real ConfigureNamesReal[] =
 	{
 		{"autovacuum_vacuum_scale_factor", PGC_SIGHUP, AUTOVACUUM,
 			gettext_noop("Number of tuple updates or deletes prior to vacuum as a fraction of reltuples."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&autovacuum_vac_scale,
 		0.2, 0.0, 100.0,
@@ -3767,7 +4020,8 @@ static struct config_real ConfigureNamesReal[] =
 	{
 		{"autovacuum_vacuum_insert_scale_factor", PGC_SIGHUP, AUTOVACUUM,
 			gettext_noop("Number of tuple inserts prior to vacuum as a fraction of reltuples."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&autovacuum_vac_ins_scale,
 		0.2, 0.0, 100.0,
@@ -3777,7 +4031,8 @@ static struct config_real ConfigureNamesReal[] =
 	{
 		{"autovacuum_analyze_scale_factor", PGC_SIGHUP, AUTOVACUUM,
 			gettext_noop("Number of tuple inserts, updates, or deletes prior to analyze as a fraction of reltuples."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&autovacuum_anl_scale,
 		0.1, 0.0, 100.0,
@@ -3787,7 +4042,8 @@ static struct config_real ConfigureNamesReal[] =
 	{
 		{"checkpoint_completion_target", PGC_SIGHUP, WAL_CHECKPOINTS,
 			gettext_noop("Time spent flushing dirty buffers during checkpoint, as fraction of checkpoint interval."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&CheckPointCompletionTarget,
 		0.9, 0.0, 1.0,
@@ -3797,7 +4053,8 @@ static struct config_real ConfigureNamesReal[] =
 	{
 		{"log_statement_sample_rate", PGC_SUSET, LOGGING_WHEN,
 			gettext_noop("Fraction of statements exceeding log_min_duration_sample to be logged."),
-			gettext_noop("Use a value between 0.0 (never log) and 1.0 (always log).")
+			gettext_noop("Use a value between 0.0 (never log) and 1.0 (always log)."),
+			GUC_SUPERUSER_ONLY
 		},
 		&log_statement_sample_rate,
 		1.0, 0.0, 1.0,
@@ -3808,7 +4065,8 @@ static struct config_real ConfigureNamesReal[] =
 		{"log_transaction_sample_rate", PGC_SUSET, LOGGING_WHEN,
 			gettext_noop("Sets the fraction of transactions from which to log all statements."),
 			gettext_noop("Use a value between 0.0 (never log) and 1.0 (log all "
-						 "statements for all transactions).")
+						 "statements for all transactions)."),
+			GUC_SUPERUSER_ONLY
 		},
 		&log_xact_sample_rate,
 		0.0, 0.0, 1.0,
@@ -3827,7 +4085,8 @@ static struct config_string ConfigureNamesString[] =
 	{
 		{"archive_command", PGC_SIGHUP, WAL_ARCHIVING,
 			gettext_noop("Sets the shell command that will be called to archive a WAL file."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&XLogArchiveCommand,
 		"",
@@ -3837,7 +4096,8 @@ static struct config_string ConfigureNamesString[] =
 	{
 		{"restore_command", PGC_SIGHUP, WAL_ARCHIVE_RECOVERY,
 			gettext_noop("Sets the shell command that will be called to retrieve an archived WAL file."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&recoveryRestoreCommand,
 		"",
@@ -3847,7 +4107,8 @@ static struct config_string ConfigureNamesString[] =
 	{
 		{"archive_cleanup_command", PGC_SIGHUP, WAL_ARCHIVE_RECOVERY,
 			gettext_noop("Sets the shell command that will be executed at every restart point."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&archiveCleanupCommand,
 		"",
@@ -3857,7 +4118,8 @@ static struct config_string ConfigureNamesString[] =
 	{
 		{"recovery_end_command", PGC_SIGHUP, WAL_ARCHIVE_RECOVERY,
 			gettext_noop("Sets the shell command that will be executed once at the end of recovery."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&recoveryEndCommand,
 		"",
@@ -3867,7 +4129,8 @@ static struct config_string ConfigureNamesString[] =
 	{
 		{"recovery_target_timeline", PGC_POSTMASTER, WAL_RECOVERY_TARGET,
 			gettext_noop("Specifies the timeline to recover into."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&recovery_target_timeline_string,
 		"latest",
@@ -3877,7 +4140,8 @@ static struct config_string ConfigureNamesString[] =
 	{
 		{"recovery_target", PGC_POSTMASTER, WAL_RECOVERY_TARGET,
 			gettext_noop("Set to \"immediate\" to end recovery as soon as a consistent state is reached."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&recovery_target_string,
 		"",
@@ -3886,7 +4150,8 @@ static struct config_string ConfigureNamesString[] =
 	{
 		{"recovery_target_xid", PGC_POSTMASTER, WAL_RECOVERY_TARGET,
 			gettext_noop("Sets the transaction ID up to which recovery will proceed."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&recovery_target_xid_string,
 		"",
@@ -3895,7 +4160,8 @@ static struct config_string ConfigureNamesString[] =
 	{
 		{"recovery_target_time", PGC_POSTMASTER, WAL_RECOVERY_TARGET,
 			gettext_noop("Sets the time stamp up to which recovery will proceed."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&recovery_target_time_string,
 		"",
@@ -3904,7 +4170,8 @@ static struct config_string ConfigureNamesString[] =
 	{
 		{"recovery_target_name", PGC_POSTMASTER, WAL_RECOVERY_TARGET,
 			gettext_noop("Sets the named restore point up to which recovery will proceed."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&recovery_target_name_string,
 		"",
@@ -3913,7 +4180,8 @@ static struct config_string ConfigureNamesString[] =
 	{
 		{"recovery_target_lsn", PGC_POSTMASTER, WAL_RECOVERY_TARGET,
 			gettext_noop("Sets the LSN of the write-ahead log location up to which recovery will proceed."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&recovery_target_lsn_string,
 		"",
@@ -3923,7 +4191,8 @@ static struct config_string ConfigureNamesString[] =
 	{
 		{"promote_trigger_file", PGC_SIGHUP, REPLICATION_STANDBY,
 			gettext_noop("Specifies a file name whose presence ends recovery in the standby."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&PromoteTriggerFile,
 		"",
@@ -3944,7 +4213,8 @@ static struct config_string ConfigureNamesString[] =
 	{
 		{"primary_slot_name", PGC_SIGHUP, REPLICATION_STANDBY,
 			gettext_noop("Sets the name of the replication slot to use on the sending server."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&PrimarySlotName,
 		"",
@@ -3955,6 +4225,7 @@ static struct config_string ConfigureNamesString[] =
 		{"client_encoding", PGC_USERSET, CLIENT_CONN_LOCALE,
 			gettext_noop("Sets the client's character set encoding."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_IS_NAME | GUC_REPORT
 		},
 		&client_encoding_string,
@@ -3965,7 +4236,8 @@ static struct config_string ConfigureNamesString[] =
 	{
 		{"log_line_prefix", PGC_SIGHUP, LOGGING_WHAT,
 			gettext_noop("Controls information prefixed to each log line."),
-			gettext_noop("If blank, no prefix is used.")
+			gettext_noop("If blank, no prefix is used."),
+			GUC_SUPERUSER_ONLY
 		},
 		&Log_line_prefix,
 		"%m [%p] ",
@@ -3975,7 +4247,8 @@ static struct config_string ConfigureNamesString[] =
 	{
 		{"log_timezone", PGC_SIGHUP, LOGGING_WHAT,
 			gettext_noop("Sets the time zone to use in log messages."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&log_timezone_string,
 		"GMT",
@@ -3987,6 +4260,7 @@ static struct config_string ConfigureNamesString[] =
 			gettext_noop("Sets the display format for date and time values."),
 			gettext_noop("Also controls interpretation of ambiguous "
 						 "date inputs."),
+			GUC_SUPERUSER_ONLY,
 			GUC_LIST_INPUT | GUC_REPORT
 		},
 		&datestyle_string,
@@ -3998,6 +4272,7 @@ static struct config_string ConfigureNamesString[] =
 		{"default_table_access_method", PGC_USERSET, CLIENT_CONN_STATEMENT,
 			gettext_noop("Sets the default table access method for new tables."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_IS_NAME
 		},
 		&default_table_access_method,
@@ -4009,6 +4284,7 @@ static struct config_string ConfigureNamesString[] =
 		{"default_tablespace", PGC_USERSET, CLIENT_CONN_STATEMENT,
 			gettext_noop("Sets the default tablespace to create tables and indexes in."),
 			gettext_noop("An empty string selects the database's default tablespace."),
+			GUC_SUPERUSER_ONLY,
 			GUC_IS_NAME
 		},
 		&default_tablespace,
@@ -4020,6 +4296,7 @@ static struct config_string ConfigureNamesString[] =
 		{"temp_tablespaces", PGC_USERSET, CLIENT_CONN_STATEMENT,
 			gettext_noop("Sets the tablespace(s) to use for temporary tables and sort files."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_LIST_INPUT | GUC_LIST_QUOTE
 		},
 		&temp_tablespaces,
@@ -4055,7 +4332,8 @@ static struct config_string ConfigureNamesString[] =
 	{
 		{"bonjour_name", PGC_POSTMASTER, CONN_AUTH_SETTINGS,
 			gettext_noop("Sets the Bonjour service name."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&bonjour_name,
 		"",
@@ -4068,6 +4346,7 @@ static struct config_string ConfigureNamesString[] =
 		{"lc_collate", PGC_INTERNAL, PRESET_OPTIONS,
 			gettext_noop("Shows the collation order locale."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE
 		},
 		&locale_collate,
@@ -4079,6 +4358,7 @@ static struct config_string ConfigureNamesString[] =
 		{"lc_ctype", PGC_INTERNAL, PRESET_OPTIONS,
 			gettext_noop("Shows the character classification and case conversion locale."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE
 		},
 		&locale_ctype,
@@ -4089,7 +4369,8 @@ static struct config_string ConfigureNamesString[] =
 	{
 		{"lc_messages", PGC_SUSET, CLIENT_CONN_LOCALE,
 			gettext_noop("Sets the language in which messages are displayed."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&locale_messages,
 		"",
@@ -4099,7 +4380,8 @@ static struct config_string ConfigureNamesString[] =
 	{
 		{"lc_monetary", PGC_USERSET, CLIENT_CONN_LOCALE,
 			gettext_noop("Sets the locale for formatting monetary amounts."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&locale_monetary,
 		"C",
@@ -4109,7 +4391,8 @@ static struct config_string ConfigureNamesString[] =
 	{
 		{"lc_numeric", PGC_USERSET, CLIENT_CONN_LOCALE,
 			gettext_noop("Sets the locale for formatting numbers."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&locale_numeric,
 		"C",
@@ -4119,7 +4402,8 @@ static struct config_string ConfigureNamesString[] =
 	{
 		{"lc_time", PGC_USERSET, CLIENT_CONN_LOCALE,
 			gettext_noop("Sets the locale for formatting date and time values."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&locale_time,
 		"C",
@@ -4130,6 +4414,7 @@ static struct config_string ConfigureNamesString[] =
 		{"session_preload_libraries", PGC_SUSET, CLIENT_CONN_PRELOAD,
 			gettext_noop("Lists shared libraries to preload into each backend."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_LIST_INPUT | GUC_LIST_QUOTE | GUC_SUPERUSER_ONLY
 		},
 		&session_preload_libraries_string,
@@ -4141,6 +4426,7 @@ static struct config_string ConfigureNamesString[] =
 		{"shared_preload_libraries", PGC_POSTMASTER, CLIENT_CONN_PRELOAD,
 			gettext_noop("Lists shared libraries to preload into server."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_LIST_INPUT | GUC_LIST_QUOTE | GUC_SUPERUSER_ONLY
 		},
 		&shared_preload_libraries_string,
@@ -4152,6 +4438,7 @@ static struct config_string ConfigureNamesString[] =
 		{"local_preload_libraries", PGC_USERSET, CLIENT_CONN_PRELOAD,
 			gettext_noop("Lists unprivileged shared libraries to preload into each backend."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_LIST_INPUT | GUC_LIST_QUOTE
 		},
 		&local_preload_libraries_string,
@@ -4163,6 +4450,7 @@ static struct config_string ConfigureNamesString[] =
 		{"search_path", PGC_USERSET, CLIENT_CONN_STATEMENT,
 			gettext_noop("Sets the schema search order for names that are not schema-qualified."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_LIST_INPUT | GUC_LIST_QUOTE | GUC_EXPLAIN
 		},
 		&namespace_search_path,
@@ -4175,6 +4463,7 @@ static struct config_string ConfigureNamesString[] =
 		{"server_encoding", PGC_INTERNAL, PRESET_OPTIONS,
 			gettext_noop("Shows the server (database) character set encoding."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_IS_NAME | GUC_REPORT | GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE
 		},
 		&server_encoding_string,
@@ -4187,6 +4476,7 @@ static struct config_string ConfigureNamesString[] =
 		{"server_version", PGC_INTERNAL, PRESET_OPTIONS,
 			gettext_noop("Shows the server version."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_REPORT | GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE
 		},
 		&server_version_string,
@@ -4199,6 +4489,7 @@ static struct config_string ConfigureNamesString[] =
 		{"role", PGC_USERSET, UNGROUPED,
 			gettext_noop("Sets the current role."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_IS_NAME | GUC_NO_SHOW_ALL | GUC_NO_RESET_ALL | GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE | GUC_NOT_WHILE_SEC_REST
 		},
 		&role_string,
@@ -4211,6 +4502,7 @@ static struct config_string ConfigureNamesString[] =
 		{"session_authorization", PGC_USERSET, UNGROUPED,
 			gettext_noop("Sets the session user name."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_IS_NAME | GUC_REPORT | GUC_NO_SHOW_ALL | GUC_NO_RESET_ALL | GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE | GUC_NOT_WHILE_SEC_REST
 		},
 		&session_authorization_string,
@@ -4224,6 +4516,7 @@ static struct config_string ConfigureNamesString[] =
 			gettext_noop("Valid values are combinations of \"stderr\", "
 						 "\"syslog\", \"csvlog\", and \"eventlog\", "
 						 "depending on the platform."),
+			GUC_SUPERUSER_ONLY,
 			GUC_LIST_INPUT
 		},
 		&Log_destination_string,
@@ -4235,6 +4528,7 @@ static struct config_string ConfigureNamesString[] =
 			gettext_noop("Sets the destination directory for log files."),
 			gettext_noop("Can be specified as relative to the data directory "
 						 "or as absolute path."),
+			GUC_SUPERUSER_ONLY,
 			GUC_SUPERUSER_ONLY
 		},
 		&Log_directory,
@@ -4245,6 +4539,7 @@ static struct config_string ConfigureNamesString[] =
 		{"log_filename", PGC_SIGHUP, LOGGING_WHERE,
 			gettext_noop("Sets the file name pattern for log files."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_SUPERUSER_ONLY
 		},
 		&Log_filename,
@@ -4256,7 +4551,8 @@ static struct config_string ConfigureNamesString[] =
 		{"syslog_ident", PGC_SIGHUP, LOGGING_WHERE,
 			gettext_noop("Sets the program name used to identify PostgreSQL "
 						 "messages in syslog."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&syslog_ident_str,
 		"postgres",
@@ -4267,7 +4563,8 @@ static struct config_string ConfigureNamesString[] =
 		{"event_source", PGC_POSTMASTER, LOGGING_WHERE,
 			gettext_noop("Sets the application name used to identify "
 						 "PostgreSQL messages in the event log."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&event_source,
 		DEFAULT_EVENT_SOURCE,
@@ -4278,6 +4575,7 @@ static struct config_string ConfigureNamesString[] =
 		{"TimeZone", PGC_USERSET, CLIENT_CONN_LOCALE,
 			gettext_noop("Sets the time zone for displaying and interpreting time stamps."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_REPORT
 		},
 		&timezone_string,
@@ -4287,7 +4585,8 @@ static struct config_string ConfigureNamesString[] =
 	{
 		{"timezone_abbreviations", PGC_USERSET, CLIENT_CONN_LOCALE,
 			gettext_noop("Selects a file of time zone abbreviations."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&timezone_abbreviations_string,
 		NULL,
@@ -4298,7 +4597,8 @@ static struct config_string ConfigureNamesString[] =
 		{"unix_socket_group", PGC_POSTMASTER, CONN_AUTH_SETTINGS,
 			gettext_noop("Sets the owning group of the Unix-domain socket."),
 			gettext_noop("The owning user of the socket is always the user "
-						 "that starts the server.")
+						 "that starts the server."),
+			GUC_SUPERUSER_ONLY
 		},
 		&Unix_socket_group,
 		"",
@@ -4309,6 +4609,7 @@ static struct config_string ConfigureNamesString[] =
 		{"unix_socket_directories", PGC_POSTMASTER, CONN_AUTH_SETTINGS,
 			gettext_noop("Sets the directories where Unix-domain sockets will be created."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_LIST_INPUT | GUC_LIST_QUOTE | GUC_SUPERUSER_ONLY
 		},
 		&Unix_socket_directories,
@@ -4324,6 +4625,7 @@ static struct config_string ConfigureNamesString[] =
 		{"listen_addresses", PGC_POSTMASTER, CONN_AUTH_SETTINGS,
 			gettext_noop("Sets the host name or IP address(es) to listen to."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_LIST_INPUT
 		},
 		&ListenAddresses,
@@ -4339,6 +4641,7 @@ static struct config_string ConfigureNamesString[] =
 		{"data_directory", PGC_POSTMASTER, FILE_LOCATIONS,
 			gettext_noop("Sets the server's data directory."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_SUPERUSER_ONLY | GUC_DISALLOW_IN_AUTO_FILE
 		},
 		&data_directory,
@@ -4350,6 +4653,7 @@ static struct config_string ConfigureNamesString[] =
 		{"config_file", PGC_POSTMASTER, FILE_LOCATIONS,
 			gettext_noop("Sets the server's main configuration file."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_DISALLOW_IN_FILE | GUC_SUPERUSER_ONLY
 		},
 		&ConfigFileName,
@@ -4394,6 +4698,7 @@ static struct config_string ConfigureNamesString[] =
 		{"ssl_library", PGC_INTERNAL, PRESET_OPTIONS,
 			gettext_noop("Shows the name of the SSL library."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE
 		},
 		&ssl_library,
@@ -4408,7 +4713,8 @@ static struct config_string ConfigureNamesString[] =
 	{
 		{"ssl_cert_file", PGC_SIGHUP, CONN_AUTH_SSL,
 			gettext_noop("Location of the SSL server certificate file."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&ssl_cert_file,
 		"server.crt",
@@ -4418,7 +4724,8 @@ static struct config_string ConfigureNamesString[] =
 	{
 		{"ssl_key_file", PGC_SIGHUP, CONN_AUTH_SSL,
 			gettext_noop("Location of the SSL server private key file."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&ssl_key_file,
 		"server.key",
@@ -4428,7 +4735,8 @@ static struct config_string ConfigureNamesString[] =
 	{
 		{"ssl_ca_file", PGC_SIGHUP, CONN_AUTH_SSL,
 			gettext_noop("Location of the SSL certificate authority file."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&ssl_ca_file,
 		"",
@@ -4438,7 +4746,8 @@ static struct config_string ConfigureNamesString[] =
 	{
 		{"ssl_crl_file", PGC_SIGHUP, CONN_AUTH_SSL,
 			gettext_noop("Location of the SSL certificate revocation list file."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&ssl_crl_file,
 		"",
@@ -4448,7 +4757,8 @@ static struct config_string ConfigureNamesString[] =
 	{
 		{"ssl_crl_dir", PGC_SIGHUP, CONN_AUTH_SSL,
 			gettext_noop("Location of the SSL certificate revocation list directory."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&ssl_crl_dir,
 		"",
@@ -4470,6 +4780,7 @@ static struct config_string ConfigureNamesString[] =
 		{"synchronous_standby_names", PGC_SIGHUP, REPLICATION_PRIMARY,
 			gettext_noop("Number of synchronous standbys and list of names of potential synchronous ones."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_LIST_INPUT
 		},
 		&SyncRepStandbyNames,
@@ -4480,7 +4791,8 @@ static struct config_string ConfigureNamesString[] =
 	{
 		{"default_text_search_config", PGC_USERSET, CLIENT_CONN_LOCALE,
 			gettext_noop("Sets default text search configuration."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&TSCurrentConfig,
 		"pg_catalog.simple",
@@ -4543,6 +4855,7 @@ static struct config_string ConfigureNamesString[] =
 		{"application_name", PGC_USERSET, LOGGING_WHAT,
 			gettext_noop("Sets the application name to be reported in statistics and logs."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_IS_NAME | GUC_REPORT | GUC_NOT_IN_SAMPLE
 		},
 		&application_name,
@@ -4554,6 +4867,7 @@ static struct config_string ConfigureNamesString[] =
 		{"cluster_name", PGC_POSTMASTER, PROCESS_TITLE,
 			gettext_noop("Sets the name of the cluster, which is included in the process title."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_IS_NAME
 		},
 		&cluster_name,
@@ -4565,6 +4879,7 @@ static struct config_string ConfigureNamesString[] =
 		{"wal_consistency_checking", PGC_SUSET, DEVELOPER_OPTIONS,
 			gettext_noop("Sets the WAL resource managers for which WAL consistency checks are done."),
 			gettext_noop("Full-page images will be logged for all data blocks and cross-checked against the results of WAL replay."),
+			GUC_SUPERUSER_ONLY,
 			GUC_LIST_INPUT | GUC_NOT_IN_SAMPLE
 		},
 		&wal_consistency_checking_string,
@@ -4587,7 +4902,7 @@ static struct config_string ConfigureNamesString[] =
 		{"backtrace_functions", PGC_SUSET, DEVELOPER_OPTIONS,
 			gettext_noop("Log backtrace for errors in these functions."),
 			NULL,
-			GUC_NOT_IN_SAMPLE
+			GUC_SUPERUSER_ONLY
 		},
 		&backtrace_functions,
 		"",
@@ -4606,7 +4921,8 @@ static struct config_enum ConfigureNamesEnum[] =
 	{
 		{"backslash_quote", PGC_USERSET, COMPAT_OPTIONS_PREVIOUS,
 			gettext_noop("Sets whether \"\\'\" is allowed in string literals."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&backslash_quote,
 		BACKSLASH_QUOTE_SAFE_ENCODING, backslash_quote_options,
@@ -4616,7 +4932,8 @@ static struct config_enum ConfigureNamesEnum[] =
 	{
 		{"bytea_output", PGC_USERSET, CLIENT_CONN_STATEMENT,
 			gettext_noop("Sets the output format for bytea."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&bytea_output,
 		BYTEA_OUTPUT_HEX, bytea_output_options,
@@ -4627,7 +4944,8 @@ static struct config_enum ConfigureNamesEnum[] =
 		{"client_min_messages", PGC_USERSET, CLIENT_CONN_STATEMENT,
 			gettext_noop("Sets the message levels that are sent to the client."),
 			gettext_noop("Each level includes all the levels that follow it. The later"
-						 " the level, the fewer messages are sent.")
+						 " the level, the fewer messages are sent."),
+			GUC_SUPERUSER_ONLY
 		},
 		&client_min_messages,
 		NOTICE, client_message_level_options,
@@ -4637,7 +4955,8 @@ static struct config_enum ConfigureNamesEnum[] =
 	{
 		{"compute_query_id", PGC_SUSET, STATS_MONITORING,
 			gettext_noop("Compute query identifiers."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&compute_query_id,
 		COMPUTE_QUERY_ID_AUTO, compute_query_id_options,
@@ -4649,6 +4968,7 @@ static struct config_enum ConfigureNamesEnum[] =
 			gettext_noop("Enables the planner to use constraints to optimize queries."),
 			gettext_noop("Table scans will be skipped if their constraints"
 						 " guarantee that no rows match the query."),
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&constraint_exclusion,
@@ -4659,7 +4979,8 @@ static struct config_enum ConfigureNamesEnum[] =
 	{
 		{"default_toast_compression", PGC_USERSET, CLIENT_CONN_STATEMENT,
 			gettext_noop("Sets the default compression method for compressible values."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&default_toast_compression,
 		TOAST_PGLZ_COMPRESSION,
@@ -4670,7 +4991,8 @@ static struct config_enum ConfigureNamesEnum[] =
 	{
 		{"default_transaction_isolation", PGC_USERSET, CLIENT_CONN_STATEMENT,
 			gettext_noop("Sets the transaction isolation level of each new transaction."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&DefaultXactIsoLevel,
 		XACT_READ_COMMITTED, isolation_level_options,
@@ -4681,6 +5003,7 @@ static struct config_enum ConfigureNamesEnum[] =
 		{"transaction_isolation", PGC_USERSET, CLIENT_CONN_STATEMENT,
 			gettext_noop("Sets the current transaction's isolation level."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_NO_RESET_ALL | GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE
 		},
 		&XactIsoLevel,
@@ -4692,6 +5015,7 @@ static struct config_enum ConfigureNamesEnum[] =
 		{"IntervalStyle", PGC_USERSET, CLIENT_CONN_LOCALE,
 			gettext_noop("Sets the display format for interval values."),
 			NULL,
+			GUC_SUPERUSER_ONLY,
 			GUC_REPORT
 		},
 		&IntervalStyle,
@@ -4702,7 +5026,8 @@ static struct config_enum ConfigureNamesEnum[] =
 	{
 		{"log_error_verbosity", PGC_SUSET, LOGGING_WHAT,
 			gettext_noop("Sets the verbosity of logged messages."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&Log_error_verbosity,
 		PGERROR_DEFAULT, log_error_verbosity_options,
@@ -4713,7 +5038,8 @@ static struct config_enum ConfigureNamesEnum[] =
 		{"log_min_messages", PGC_SUSET, LOGGING_WHEN,
 			gettext_noop("Sets the message levels that are logged."),
 			gettext_noop("Each level includes all the levels that follow it. The later"
-						 " the level, the fewer messages are sent.")
+						 " the level, the fewer messages are sent."),
+			GUC_SUPERUSER_ONLY
 		},
 		&log_min_messages,
 		WARNING, server_message_level_options,
@@ -4724,7 +5050,8 @@ static struct config_enum ConfigureNamesEnum[] =
 		{"log_min_error_statement", PGC_SUSET, LOGGING_WHEN,
 			gettext_noop("Causes all statements generating error at or above this level to be logged."),
 			gettext_noop("Each level includes all the levels that follow it. The later"
-						 " the level, the fewer messages are sent.")
+						 " the level, the fewer messages are sent."),
+			GUC_SUPERUSER_ONLY
 		},
 		&log_min_error_statement,
 		ERROR, server_message_level_options,
@@ -4734,7 +5061,8 @@ static struct config_enum ConfigureNamesEnum[] =
 	{
 		{"log_statement", PGC_SUSET, LOGGING_WHAT,
 			gettext_noop("Sets the type of statements logged."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&log_statement,
 		LOGSTMT_NONE, log_statement_options,
@@ -4744,7 +5072,8 @@ static struct config_enum ConfigureNamesEnum[] =
 	{
 		{"syslog_facility", PGC_SIGHUP, LOGGING_WHERE,
 			gettext_noop("Sets the syslog \"facility\" to be used when syslog enabled."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&syslog_facility,
 #ifdef HAVE_SYSLOG
@@ -4759,7 +5088,8 @@ static struct config_enum ConfigureNamesEnum[] =
 	{
 		{"session_replication_role", PGC_SUSET, CLIENT_CONN_STATEMENT,
 			gettext_noop("Sets the session's behavior for triggers and rewrite rules."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&SessionReplicationRole,
 		SESSION_REPLICATION_ROLE_ORIGIN, session_replication_role_options,
@@ -4769,7 +5099,8 @@ static struct config_enum ConfigureNamesEnum[] =
 	{
 		{"synchronous_commit", PGC_USERSET, WAL_SETTINGS,
 			gettext_noop("Sets the current transaction's synchronization level."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&synchronous_commit,
 		SYNCHRONOUS_COMMIT_ON, synchronous_commit_options,
@@ -4779,7 +5110,8 @@ static struct config_enum ConfigureNamesEnum[] =
 	{
 		{"archive_mode", PGC_POSTMASTER, WAL_ARCHIVING,
 			gettext_noop("Allows archiving of WAL files using archive_command."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&XLogArchiveMode,
 		ARCHIVE_MODE_OFF, archive_mode_options,
@@ -4789,7 +5121,8 @@ static struct config_enum ConfigureNamesEnum[] =
 	{
 		{"recovery_target_action", PGC_POSTMASTER, WAL_RECOVERY_TARGET,
 			gettext_noop("Sets the action to perform upon reaching the recovery target."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&recoveryTargetAction,
 		RECOVERY_TARGET_ACTION_PAUSE, recovery_target_action_options,
@@ -4800,7 +5133,8 @@ static struct config_enum ConfigureNamesEnum[] =
 		{"trace_recovery_messages", PGC_SIGHUP, DEVELOPER_OPTIONS,
 			gettext_noop("Enables logging of recovery-related debugging information."),
 			gettext_noop("Each level includes all the levels that follow it. The later"
-						 " the level, the fewer messages are sent.")
+						 " the level, the fewer messages are sent."),
+			GUC_SUPERUSER_ONLY
 		},
 		&trace_recovery_messages,
 
@@ -4815,7 +5149,8 @@ static struct config_enum ConfigureNamesEnum[] =
 	{
 		{"track_functions", PGC_SUSET, STATS_COLLECTOR,
 			gettext_noop("Collects function-level statistics on database activity."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&pgstat_track_functions,
 		TRACK_FUNC_OFF, track_function_options,
@@ -4825,7 +5160,8 @@ static struct config_enum ConfigureNamesEnum[] =
 	{
 		{"wal_compression", PGC_SUSET, WAL_SETTINGS,
 			gettext_noop("Compresses full-page writes written in WAL file with specified method."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&wal_compression,
 		WAL_COMPRESSION_NONE, wal_compression_options,
@@ -4835,7 +5171,8 @@ static struct config_enum ConfigureNamesEnum[] =
 	{
 		{"wal_level", PGC_POSTMASTER, WAL_SETTINGS,
 			gettext_noop("Sets the level of information written to the WAL."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&wal_level,
 		WAL_LEVEL_REPLICA, wal_level_options,
@@ -4845,7 +5182,8 @@ static struct config_enum ConfigureNamesEnum[] =
 	{
 		{"dynamic_shared_memory_type", PGC_POSTMASTER, RESOURCES_MEM,
 			gettext_noop("Selects the dynamic shared memory implementation used."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&dynamic_shared_memory_type,
 		DEFAULT_DYNAMIC_SHARED_MEMORY_TYPE, dynamic_shared_memory_options,
@@ -4855,7 +5193,8 @@ static struct config_enum ConfigureNamesEnum[] =
 	{
 		{"shared_memory_type", PGC_POSTMASTER, RESOURCES_MEM,
 			gettext_noop("Selects the shared memory implementation used for the main shared memory region."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&shared_memory_type,
 		DEFAULT_SHARED_MEMORY_TYPE, shared_memory_options,
@@ -4865,7 +5204,8 @@ static struct config_enum ConfigureNamesEnum[] =
 	{
 		{"wal_sync_method", PGC_SIGHUP, WAL_SETTINGS,
 			gettext_noop("Selects the method used for forcing WAL updates to disk."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&sync_method,
 		DEFAULT_SYNC_METHOD, sync_method_options,
@@ -4875,7 +5215,8 @@ static struct config_enum ConfigureNamesEnum[] =
 	{
 		{"xmlbinary", PGC_USERSET, CLIENT_CONN_STATEMENT,
 			gettext_noop("Sets how binary values are to be encoded in XML."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&xmlbinary,
 		XMLBINARY_BASE64, xmlbinary_options,
@@ -4886,7 +5227,8 @@ static struct config_enum ConfigureNamesEnum[] =
 		{"xmloption", PGC_USERSET, CLIENT_CONN_STATEMENT,
 			gettext_noop("Sets whether XML data in implicit parsing and serialization "
 						 "operations is to be considered as documents or content fragments."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&xmloption,
 		XMLOPTION_CONTENT, xmloption_options,
@@ -4896,7 +5238,8 @@ static struct config_enum ConfigureNamesEnum[] =
 	{
 		{"huge_pages", PGC_POSTMASTER, RESOURCES_MEM,
 			gettext_noop("Use of huge pages on Linux or Windows."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&huge_pages,
 		HUGE_PAGES_TRY, huge_pages_options,
@@ -4907,6 +5250,7 @@ static struct config_enum ConfigureNamesEnum[] =
 		{"force_parallel_mode", PGC_USERSET, DEVELOPER_OPTIONS,
 			gettext_noop("Forces use of parallel query facilities."),
 			gettext_noop("If possible, run query using a parallel worker and with parallel restrictions."),
+			GUC_SUPERUSER_ONLY,
 			GUC_NOT_IN_SAMPLE | GUC_EXPLAIN
 		},
 		&force_parallel_mode,
@@ -4917,7 +5261,8 @@ static struct config_enum ConfigureNamesEnum[] =
 	{
 		{"password_encryption", PGC_USERSET, CONN_AUTH_AUTH,
 			gettext_noop("Chooses the algorithm for encrypting passwords."),
-			NULL
+			NULL,
+			GUC_SUPERUSER_ONLY
 		},
 		&Password_encryption,
 		PASSWORD_TYPE_SCRAM_SHA_256, password_encryption_options,
@@ -4930,6 +5275,7 @@ static struct config_enum ConfigureNamesEnum[] =
 			gettext_noop("Prepared statements can have custom and generic plans, and the planner "
 						 "will attempt to choose which is better.  This can be set to override "
 						 "the default behavior."),
+			GUC_SUPERUSER_ONLY,
 			GUC_EXPLAIN
 		},
 		&plan_cache_mode,
@@ -4964,6 +5310,8 @@ static struct config_enum ConfigureNamesEnum[] =
 	{
 		{"recovery_init_sync_method", PGC_SIGHUP, ERROR_HANDLING_OPTIONS,
 			gettext_noop("Sets the method for synchronizing the data directory before crash recovery."),
+			NULL,
+			GUC_SUPERUSER_ONLY,
 		},
 		&recovery_init_sync_method,
 		RECOVERY_INIT_SYNC_METHOD_FSYNC, recovery_init_sync_method_options,
@@ -7251,6 +7599,15 @@ parse_and_validate_value(struct config_generic *record,
 	return true;
 }
 
+static bool
+role_has_privileges(Oid roleid, int privileges)
+{
+	if (privileges & GUC_SUPERUSER_ONLY)
+		return superuser_arg(roleid);
+
+	return false;
+}
+
 
 /*
  * Sets option `name' to given value.
@@ -7398,7 +7755,8 @@ set_config_option(const char *name, const char *value,
 			break;
 		case PGC_SU_BACKEND:
 			/* Reject if we're connecting but user is not superuser */
-			if (context == PGC_BACKEND)
+			if (context == PGC_BACKEND &&
+				!role_has_privileges(GetUserId(), record->privileges))
 			{
 				ereport(elevel,
 						(errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
@@ -7445,7 +7803,8 @@ set_config_option(const char *name, const char *value,
 			}
 			break;
 		case PGC_SUSET:
-			if (context == PGC_USERSET || context == PGC_BACKEND)
+			if ((context == PGC_USERSET || context == PGC_BACKEND) &&
+				!role_has_privileges(GetUserId(), record->privileges))
 			{
 				ereport(elevel,
 						(errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
@@ -8487,6 +8846,7 @@ replace_auto_config_value(ConfigVariable **head_p, ConfigVariable **tail_p,
 void
 AlterSystemSetConfigFile(AlterSystemStmt *altersysstmt)
 {
+	VariableSetKind kind;
 	char	   *name;
 	char	   *value;
 	bool		resetall = false;
@@ -8496,17 +8856,18 @@ AlterSystemSetConfigFile(AlterSystemStmt *altersysstmt)
 	char		AutoConfFileName[MAXPGPATH];
 	char		AutoConfTmpFileName[MAXPGPATH];
 
-	if (!superuser())
-		ereport(ERROR,
-				(errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
-				 errmsg("must be superuser to execute ALTER SYSTEM command")));
-
 	/*
 	 * Extract statement arguments
 	 */
 	name = altersysstmt->setstmt->name;
+	kind = altersysstmt->setstmt->kind;
 
-	switch (altersysstmt->setstmt->kind)
+	if (!superuser() && kind == VAR_RESET_ALL)
+		ereport(ERROR,
+				(errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
+				 errmsg("must be superuser to execute ALTER SYSTEM RESET ALL command")));
+
+	switch (kind)
 	{
 		case VAR_SET_VALUE:
 			value = ExtractSetVariableArgs(altersysstmt->setstmt);
@@ -8550,6 +8911,15 @@ AlterSystemSetConfigFile(AlterSystemStmt *altersysstmt)
 					 errmsg("parameter \"%s\" cannot be changed",
 							name)));
 
+		/*
+		 * Deny non-superusers trying to run ALTER SYSTEM SET on variables
+		 * unless they belong to a role intended for the purpose.
+		 */
+		if (!role_has_privileges(GetUserId(), record->privileges))
+			ereport(ERROR,
+					(errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
+					 errmsg("permission denied to set parameter \"%s\"", name)));
+
 		/*
 		 * If a value is specified, verify that it's sane.
 		 */
@@ -8911,6 +9281,7 @@ init_custom_variable(const char *name,
 					 const char *short_desc,
 					 const char *long_desc,
 					 GucContext context,
+					 int privileges,
 					 int flags,
 					 enum config_type type,
 					 size_t sz)
@@ -8956,6 +9327,7 @@ init_custom_variable(const char *name,
 	gen->group = CUSTOM_OPTIONS;
 	gen->short_desc = short_desc;
 	gen->long_desc = long_desc;
+	gen->privileges = privileges;
 	gen->flags = flags;
 	gen->vartype = type;
 
@@ -9154,6 +9526,7 @@ DefineCustomBoolVariable(const char *name,
 						 bool *valueAddr,
 						 bool bootValue,
 						 GucContext context,
+						 int privileges,
 						 int flags,
 						 GucBoolCheckHook check_hook,
 						 GucBoolAssignHook assign_hook,
@@ -9162,8 +9535,8 @@ DefineCustomBoolVariable(const char *name,
 	struct config_bool *var;
 
 	var = (struct config_bool *)
-		init_custom_variable(name, short_desc, long_desc, context, flags,
-							 PGC_BOOL, sizeof(struct config_bool));
+		init_custom_variable(name, short_desc, long_desc, context, privileges,
+							 flags, PGC_BOOL, sizeof(struct config_bool));
 	var->variable = valueAddr;
 	var->boot_val = bootValue;
 	var->reset_val = bootValue;
@@ -9182,6 +9555,7 @@ DefineCustomIntVariable(const char *name,
 						int minValue,
 						int maxValue,
 						GucContext context,
+						int privileges,
 						int flags,
 						GucIntCheckHook check_hook,
 						GucIntAssignHook assign_hook,
@@ -9190,8 +9564,8 @@ DefineCustomIntVariable(const char *name,
 	struct config_int *var;
 
 	var = (struct config_int *)
-		init_custom_variable(name, short_desc, long_desc, context, flags,
-							 PGC_INT, sizeof(struct config_int));
+		init_custom_variable(name, short_desc, long_desc, context, privileges,
+							 flags, PGC_INT, sizeof(struct config_int));
 	var->variable = valueAddr;
 	var->boot_val = bootValue;
 	var->reset_val = bootValue;
@@ -9212,6 +9586,7 @@ DefineCustomRealVariable(const char *name,
 						 double minValue,
 						 double maxValue,
 						 GucContext context,
+						 int privileges,
 						 int flags,
 						 GucRealCheckHook check_hook,
 						 GucRealAssignHook assign_hook,
@@ -9220,8 +9595,8 @@ DefineCustomRealVariable(const char *name,
 	struct config_real *var;
 
 	var = (struct config_real *)
-		init_custom_variable(name, short_desc, long_desc, context, flags,
-							 PGC_REAL, sizeof(struct config_real));
+		init_custom_variable(name, short_desc, long_desc, context, privileges,
+							 flags, PGC_REAL, sizeof(struct config_real));
 	var->variable = valueAddr;
 	var->boot_val = bootValue;
 	var->reset_val = bootValue;
@@ -9240,6 +9615,7 @@ DefineCustomStringVariable(const char *name,
 						   char **valueAddr,
 						   const char *bootValue,
 						   GucContext context,
+						   int privileges,
 						   int flags,
 						   GucStringCheckHook check_hook,
 						   GucStringAssignHook assign_hook,
@@ -9248,8 +9624,8 @@ DefineCustomStringVariable(const char *name,
 	struct config_string *var;
 
 	var = (struct config_string *)
-		init_custom_variable(name, short_desc, long_desc, context, flags,
-							 PGC_STRING, sizeof(struct config_string));
+		init_custom_variable(name, short_desc, long_desc, context, privileges,
+							 flags, PGC_STRING, sizeof(struct config_string));
 	var->variable = valueAddr;
 	var->boot_val = bootValue;
 	var->check_hook = check_hook;
@@ -9266,6 +9642,7 @@ DefineCustomEnumVariable(const char *name,
 						 int bootValue,
 						 const struct config_enum_entry *options,
 						 GucContext context,
+						 int privileges,
 						 int flags,
 						 GucEnumCheckHook check_hook,
 						 GucEnumAssignHook assign_hook,
@@ -9274,8 +9651,8 @@ DefineCustomEnumVariable(const char *name,
 	struct config_enum *var;
 
 	var = (struct config_enum *)
-		init_custom_variable(name, short_desc, long_desc, context, flags,
-							 PGC_ENUM, sizeof(struct config_enum));
+		init_custom_variable(name, short_desc, long_desc, context, privileges,
+							 flags, PGC_ENUM, sizeof(struct config_enum));
 	var->variable = valueAddr;
 	var->boot_val = bootValue;
 	var->reset_val = bootValue;
diff --git a/src/include/utils/guc.h b/src/include/utils/guc.h
index a7c3a4958e..4e23109ead 100644
--- a/src/include/utils/guc.h
+++ b/src/include/utils/guc.h
@@ -198,6 +198,10 @@ typedef enum
 
 #define GUC_QUALIFIER_SEPARATOR '.'
 
+/*
+ * privilege bits required to modify a GUC variable
+ */
+
 /*
  * bit values in "flags" of a GUC variable
  */
@@ -294,6 +298,7 @@ extern void DefineCustomBoolVariable(const char *name,
 									 bool *valueAddr,
 									 bool bootValue,
 									 GucContext context,
+									 int privileges,
 									 int flags,
 									 GucBoolCheckHook check_hook,
 									 GucBoolAssignHook assign_hook,
@@ -307,6 +312,7 @@ extern void DefineCustomIntVariable(const char *name,
 									int minValue,
 									int maxValue,
 									GucContext context,
+									int privileges,
 									int flags,
 									GucIntCheckHook check_hook,
 									GucIntAssignHook assign_hook,
@@ -320,6 +326,7 @@ extern void DefineCustomRealVariable(const char *name,
 									 double minValue,
 									 double maxValue,
 									 GucContext context,
+									 int privileges,
 									 int flags,
 									 GucRealCheckHook check_hook,
 									 GucRealAssignHook assign_hook,
@@ -331,6 +338,7 @@ extern void DefineCustomStringVariable(const char *name,
 									   char **valueAddr,
 									   const char *bootValue,
 									   GucContext context,
+									   int privileges,
 									   int flags,
 									   GucStringCheckHook check_hook,
 									   GucStringAssignHook assign_hook,
@@ -343,6 +351,7 @@ extern void DefineCustomEnumVariable(const char *name,
 									 int bootValue,
 									 const struct config_enum_entry *options,
 									 GucContext context,
+									 int privileges,
 									 int flags,
 									 GucEnumCheckHook check_hook,
 									 GucEnumAssignHook assign_hook,
diff --git a/src/include/utils/guc_tables.h b/src/include/utils/guc_tables.h
index 6b40f1eeb8..27288236ae 100644
--- a/src/include/utils/guc_tables.h
+++ b/src/include/utils/guc_tables.h
@@ -143,6 +143,7 @@ struct config_generic
 	enum config_group group;	/* to help organize variables by function */
 	const char *short_desc;		/* short desc. of this variable's purpose */
 	const char *long_desc;		/* long desc. of this variable's purpose */
+	int			privileges;		/* privileges bits, see guc.h */
 	int			flags;			/* flag bits, see guc.h */
 	/* variable fields, initialized at runtime: */
 	enum config_type vartype;	/* type of variable (set only at startup) */
diff --git a/src/pl/plperl/plperl.c b/src/pl/plperl/plperl.c
index 6299adf71a..730e5f6d14 100644
--- a/src/pl/plperl/plperl.c
+++ b/src/pl/plperl/plperl.c
@@ -406,7 +406,7 @@ _PG_init(void)
 							 NULL,
 							 &plperl_use_strict,
 							 false,
-							 PGC_USERSET, 0,
+							 PGC_USERSET, GUC_SUPERUSER_ONLY, 0,
 							 NULL, NULL, NULL);
 
 	/*
@@ -420,7 +420,7 @@ _PG_init(void)
 							   NULL,
 							   &plperl_on_init,
 							   NULL,
-							   PGC_SIGHUP, 0,
+							   PGC_SIGHUP, GUC_SUPERUSER_ONLY, 0,
 							   NULL, NULL, NULL);
 
 	/*
@@ -442,7 +442,7 @@ _PG_init(void)
 							   NULL,
 							   &plperl_on_plperl_init,
 							   NULL,
-							   PGC_SUSET, 0,
+							   PGC_SUSET, GUC_SUPERUSER_ONLY, 0,
 							   NULL, NULL, NULL);
 
 	DefineCustomStringVariable("plperl.on_plperlu_init",
@@ -450,7 +450,7 @@ _PG_init(void)
 							   NULL,
 							   &plperl_on_plperlu_init,
 							   NULL,
-							   PGC_SUSET, 0,
+							   PGC_SUSET, GUC_SUPERUSER_ONLY, 0,
 							   NULL, NULL, NULL);
 
 	EmitWarningsOnPlaceholders("plperl");
diff --git a/src/pl/plpgsql/src/pl_handler.c b/src/pl/plpgsql/src/pl_handler.c
index 00aace2f39..2fe38ffc24 100644
--- a/src/pl/plpgsql/src/pl_handler.c
+++ b/src/pl/plpgsql/src/pl_handler.c
@@ -158,7 +158,7 @@ _PG_init(void)
 							 &plpgsql_variable_conflict,
 							 PLPGSQL_RESOLVE_ERROR,
 							 variable_conflict_options,
-							 PGC_SUSET, 0,
+							 PGC_SUSET, GUC_SUPERUSER_ONLY, 0,
 							 NULL, NULL, NULL);
 
 	DefineCustomBoolVariable("plpgsql.print_strict_params",
@@ -166,7 +166,7 @@ _PG_init(void)
 							 NULL,
 							 &plpgsql_print_strict_params,
 							 false,
-							 PGC_USERSET, 0,
+							 PGC_USERSET, GUC_SUPERUSER_ONLY, 0,
 							 NULL, NULL, NULL);
 
 	DefineCustomBoolVariable("plpgsql.check_asserts",
@@ -174,7 +174,7 @@ _PG_init(void)
 							 NULL,
 							 &plpgsql_check_asserts,
 							 true,
-							 PGC_USERSET, 0,
+							 PGC_USERSET, GUC_SUPERUSER_ONLY, 0,
 							 NULL, NULL, NULL);
 
 	DefineCustomStringVariable("plpgsql.extra_warnings",
@@ -182,7 +182,7 @@ _PG_init(void)
 							   NULL,
 							   &plpgsql_extra_warnings_string,
 							   "none",
-							   PGC_USERSET, GUC_LIST_INPUT,
+							   PGC_USERSET, GUC_SUPERUSER_ONLY, GUC_LIST_INPUT,
 							   plpgsql_extra_checks_check_hook,
 							   plpgsql_extra_warnings_assign_hook,
 							   NULL);
@@ -192,7 +192,7 @@ _PG_init(void)
 							   NULL,
 							   &plpgsql_extra_errors_string,
 							   "none",
-							   PGC_USERSET, GUC_LIST_INPUT,
+							   PGC_USERSET, GUC_SUPERUSER_ONLY, GUC_LIST_INPUT,
 							   plpgsql_extra_checks_check_hook,
 							   plpgsql_extra_errors_assign_hook,
 							   NULL);
diff --git a/src/pl/tcl/pltcl.c b/src/pl/tcl/pltcl.c
index e11837559d..d72506aa26 100644
--- a/src/pl/tcl/pltcl.c
+++ b/src/pl/tcl/pltcl.c
@@ -464,14 +464,14 @@ _PG_init(void)
 							   NULL,
 							   &pltcl_start_proc,
 							   NULL,
-							   PGC_SUSET, 0,
+							   PGC_SUSET, GUC_SUPERUSER_ONLY, 0,
 							   NULL, NULL, NULL);
 	DefineCustomStringVariable("pltclu.start_proc",
 							   gettext_noop("PL/TclU function to call once when pltclu is first used."),
 							   NULL,
 							   &pltclu_start_proc,
 							   NULL,
-							   PGC_SUSET, 0,
+							   PGC_SUSET, GUC_SUPERUSER_ONLY, 0,
 							   NULL, NULL, NULL);
 
 	pltcl_pm_init_done = true;
diff --git a/src/test/modules/delay_execution/delay_execution.c b/src/test/modules/delay_execution/delay_execution.c
index b3d0841ba8..e8f983c2c4 100644
--- a/src/test/modules/delay_execution/delay_execution.c
+++ b/src/test/modules/delay_execution/delay_execution.c
@@ -86,6 +86,7 @@ _PG_init(void)
 							0,
 							0, INT_MAX,
 							PGC_USERSET,
+							GUC_SUPERUSER_ONLY,
 							0,
 							NULL,
 							NULL,
diff --git a/src/test/modules/ssl_passphrase_callback/ssl_passphrase_func.c b/src/test/modules/ssl_passphrase_callback/ssl_passphrase_func.c
index 6b0a3db104..e6bc2b0a6a 100644
--- a/src/test/modules/ssl_passphrase_callback/ssl_passphrase_func.c
+++ b/src/test/modules/ssl_passphrase_callback/ssl_passphrase_func.c
@@ -44,6 +44,7 @@ _PG_init(void)
 							   &ssl_passphrase,
 							   NULL,
 							   PGC_SIGHUP,
+							   GUC_SUPERUSER_ONLY,
 							   0,	/* no flags required */
 							   NULL,
 							   NULL,
diff --git a/src/test/modules/worker_spi/worker_spi.c b/src/test/modules/worker_spi/worker_spi.c
index d0acef2652..d6f1e6ac0b 100644
--- a/src/test/modules/worker_spi/worker_spi.c
+++ b/src/test/modules/worker_spi/worker_spi.c
@@ -293,6 +293,7 @@ _PG_init(void)
 							1,
 							INT_MAX,
 							PGC_SIGHUP,
+							GUC_SUPERUSER_ONLY,
 							0,
 							NULL,
 							NULL,
@@ -309,6 +310,7 @@ _PG_init(void)
 							1,
 							100,
 							PGC_POSTMASTER,
+							GUC_SUPERUSER_ONLY,
 							0,
 							NULL,
 							NULL,
@@ -320,6 +322,7 @@ _PG_init(void)
 							   &worker_spi_database,
 							   "postgres",
 							   PGC_POSTMASTER,
+							   GUC_SUPERUSER_ONLY,
 							   0,
 							   NULL, NULL, NULL);
 
diff --git a/src/test/regress/expected/guc_priv_admin.out b/src/test/regress/expected/guc_priv_admin.out
new file mode 100644
index 0000000000..640b6e5581
--- /dev/null
+++ b/src/test/regress/expected/guc_priv_admin.out
@@ -0,0 +1,1794 @@
+-- Superuser DBA
+CREATE ROLE admin SUPERUSER;
+-- Perform all operations as user 'admin' --
+SET SESSION AUTHORIZATION admin;
+-- PGC_BACKEND / DEVELOPER_OPTIONS
+SET ignore_system_indexes = OFF;  -- fail, cannot be set after connection start
+ERROR:  parameter "ignore_system_indexes" cannot be set after connection start
+RESET ignore_system_indexes;  -- fail, cannot be set after connection start
+ERROR:  parameter "ignore_system_indexes" cannot be set after connection start
+ALTER SYSTEM SET ignore_system_indexes = OFF;  -- ok
+ALTER SYSTEM RESET ignore_system_indexes;  -- ok
+SET post_auth_delay = 50;  -- fail, cannot be set after connection start
+ERROR:  parameter "post_auth_delay" cannot be set after connection start
+RESET post_auth_delay;  -- fail, cannot be set after connection start
+ERROR:  parameter "post_auth_delay" cannot be set after connection start
+ALTER SYSTEM SET post_auth_delay = 50;  -- ok
+ALTER SYSTEM RESET post_auth_delay;  -- ok
+-- PGC_INTERNAL / PRESET_OPTIONS
+SET block_size = 50;  -- fail, cannot be changed
+ERROR:  parameter "block_size" cannot be changed
+RESET block_size;  -- fail, cannot be changed
+ERROR:  parameter "block_size" cannot be changed
+ALTER SYSTEM SET block_size = 50;  -- fail, cannot be changed
+ERROR:  parameter "block_size" cannot be changed
+ALTER SYSTEM RESET block_size;  -- fail, cannot be changed
+ERROR:  parameter "block_size" cannot be changed
+SET data_checksums = OFF;  -- fail, cannot be changed
+ERROR:  parameter "data_checksums" cannot be changed
+RESET data_checksums;  -- fail, cannot be changed
+ERROR:  parameter "data_checksums" cannot be changed
+ALTER SYSTEM SET data_checksums = OFF;  -- fail, cannot be changed
+ERROR:  parameter "data_checksums" cannot be changed
+ALTER SYSTEM RESET data_checksums;  -- fail, cannot be changed
+ERROR:  parameter "data_checksums" cannot be changed
+SET data_directory_mode = 50;  -- fail, cannot be changed
+ERROR:  parameter "data_directory_mode" cannot be changed
+RESET data_directory_mode;  -- fail, cannot be changed
+ERROR:  parameter "data_directory_mode" cannot be changed
+ALTER SYSTEM SET data_directory_mode = 50;  -- fail, cannot be changed
+ERROR:  parameter "data_directory_mode" cannot be changed
+ALTER SYSTEM RESET data_directory_mode;  -- fail, cannot be changed
+ERROR:  parameter "data_directory_mode" cannot be changed
+SET debug_assertions = OFF;  -- fail, cannot be changed
+ERROR:  parameter "debug_assertions" cannot be changed
+RESET debug_assertions;  -- fail, cannot be changed
+ERROR:  parameter "debug_assertions" cannot be changed
+ALTER SYSTEM SET debug_assertions = OFF;  -- fail, cannot be changed
+ERROR:  parameter "debug_assertions" cannot be changed
+ALTER SYSTEM RESET debug_assertions;  -- fail, cannot be changed
+ERROR:  parameter "debug_assertions" cannot be changed
+SET in_hot_standby = OFF;  -- fail, cannot be changed
+ERROR:  parameter "in_hot_standby" cannot be changed
+RESET in_hot_standby;  -- fail, cannot be changed
+ERROR:  parameter "in_hot_standby" cannot be changed
+ALTER SYSTEM SET in_hot_standby = OFF;  -- fail, cannot be changed
+ERROR:  parameter "in_hot_standby" cannot be changed
+ALTER SYSTEM RESET in_hot_standby;  -- fail, cannot be changed
+ERROR:  parameter "in_hot_standby" cannot be changed
+SET integer_datetimes = OFF;  -- fail, cannot be changed
+ERROR:  parameter "integer_datetimes" cannot be changed
+RESET integer_datetimes;  -- fail, cannot be changed
+ERROR:  parameter "integer_datetimes" cannot be changed
+ALTER SYSTEM SET integer_datetimes = OFF;  -- fail, cannot be changed
+ERROR:  parameter "integer_datetimes" cannot be changed
+ALTER SYSTEM RESET integer_datetimes;  -- fail, cannot be changed
+ERROR:  parameter "integer_datetimes" cannot be changed
+SET lc_collate = 'en_US.UTF-8';  -- fail, cannot be changed
+ERROR:  parameter "lc_collate" cannot be changed
+RESET lc_collate;  -- fail, cannot be changed
+ERROR:  parameter "lc_collate" cannot be changed
+ALTER SYSTEM SET lc_collate = 'en_US.UTF-8';  -- fail, cannot be changed
+ERROR:  parameter "lc_collate" cannot be changed
+ALTER SYSTEM RESET lc_collate;  -- fail, cannot be changed
+ERROR:  parameter "lc_collate" cannot be changed
+SET lc_ctype = 'en_US.UTF-8';  -- fail, cannot be changed
+ERROR:  parameter "lc_ctype" cannot be changed
+RESET lc_ctype;  -- fail, cannot be changed
+ERROR:  parameter "lc_ctype" cannot be changed
+ALTER SYSTEM SET lc_ctype = 'en_US.UTF-8';  -- fail, cannot be changed
+ERROR:  parameter "lc_ctype" cannot be changed
+ALTER SYSTEM RESET lc_ctype;  -- fail, cannot be changed
+ERROR:  parameter "lc_ctype" cannot be changed
+SET max_function_args = 50;  -- fail, cannot be changed
+ERROR:  parameter "max_function_args" cannot be changed
+RESET max_function_args;  -- fail, cannot be changed
+ERROR:  parameter "max_function_args" cannot be changed
+ALTER SYSTEM SET max_function_args = 50;  -- fail, cannot be changed
+ERROR:  parameter "max_function_args" cannot be changed
+ALTER SYSTEM RESET max_function_args;  -- fail, cannot be changed
+ERROR:  parameter "max_function_args" cannot be changed
+SET max_identifier_length = 50;  -- fail, cannot be changed
+ERROR:  parameter "max_identifier_length" cannot be changed
+RESET max_identifier_length;  -- fail, cannot be changed
+ERROR:  parameter "max_identifier_length" cannot be changed
+ALTER SYSTEM SET max_identifier_length = 50;  -- fail, cannot be changed
+ERROR:  parameter "max_identifier_length" cannot be changed
+ALTER SYSTEM RESET max_identifier_length;  -- fail, cannot be changed
+ERROR:  parameter "max_identifier_length" cannot be changed
+SET max_index_keys = 50;  -- fail, cannot be changed
+ERROR:  parameter "max_index_keys" cannot be changed
+RESET max_index_keys;  -- fail, cannot be changed
+ERROR:  parameter "max_index_keys" cannot be changed
+ALTER SYSTEM SET max_index_keys = 50;  -- fail, cannot be changed
+ERROR:  parameter "max_index_keys" cannot be changed
+ALTER SYSTEM RESET max_index_keys;  -- fail, cannot be changed
+ERROR:  parameter "max_index_keys" cannot be changed
+SET segment_size = 50;  -- fail, cannot be changed
+ERROR:  parameter "segment_size" cannot be changed
+RESET segment_size;  -- fail, cannot be changed
+ERROR:  parameter "segment_size" cannot be changed
+ALTER SYSTEM SET segment_size = 50;  -- fail, cannot be changed
+ERROR:  parameter "segment_size" cannot be changed
+ALTER SYSTEM RESET segment_size;  -- fail, cannot be changed
+ERROR:  parameter "segment_size" cannot be changed
+SET server_encoding = 'UTF8';  -- fail, cannot be changed
+ERROR:  parameter "server_encoding" cannot be changed
+RESET server_encoding;  -- fail, cannot be changed
+ERROR:  parameter "server_encoding" cannot be changed
+ALTER SYSTEM SET server_encoding = 'UTF8';  -- fail, cannot be changed
+ERROR:  parameter "server_encoding" cannot be changed
+ALTER SYSTEM RESET server_encoding;  -- fail, cannot be changed
+ERROR:  parameter "server_encoding" cannot be changed
+SET server_version = '9.1';  -- fail, cannot be changed
+ERROR:  parameter "server_version" cannot be changed
+RESET server_version;  -- fail, cannot be changed
+ERROR:  parameter "server_version" cannot be changed
+ALTER SYSTEM SET server_version = '9.1';  -- fail, cannot be changed
+ERROR:  parameter "server_version" cannot be changed
+ALTER SYSTEM RESET server_version;  -- fail, cannot be changed
+ERROR:  parameter "server_version" cannot be changed
+SET server_version_num = 50;  -- fail, cannot be changed
+ERROR:  parameter "server_version_num" cannot be changed
+RESET server_version_num;  -- fail, cannot be changed
+ERROR:  parameter "server_version_num" cannot be changed
+ALTER SYSTEM SET server_version_num = 50;  -- fail, cannot be changed
+ERROR:  parameter "server_version_num" cannot be changed
+ALTER SYSTEM RESET server_version_num;  -- fail, cannot be changed
+ERROR:  parameter "server_version_num" cannot be changed
+SET ssl_library = 'OpenSSL';  -- fail, cannot be changed
+ERROR:  parameter "ssl_library" cannot be changed
+RESET ssl_library;  -- fail, cannot be changed
+ERROR:  parameter "ssl_library" cannot be changed
+ALTER SYSTEM SET ssl_library = 'OpenSSL';  -- fail, cannot be changed
+ERROR:  parameter "ssl_library" cannot be changed
+ALTER SYSTEM RESET ssl_library;  -- fail, cannot be changed
+ERROR:  parameter "ssl_library" cannot be changed
+SET wal_block_size = 50;  -- fail, cannot be changed
+ERROR:  parameter "wal_block_size" cannot be changed
+RESET wal_block_size;  -- fail, cannot be changed
+ERROR:  parameter "wal_block_size" cannot be changed
+ALTER SYSTEM SET wal_block_size = 50;  -- fail, cannot be changed
+ERROR:  parameter "wal_block_size" cannot be changed
+ALTER SYSTEM RESET wal_block_size;  -- fail, cannot be changed
+ERROR:  parameter "wal_block_size" cannot be changed
+SET wal_segment_size = 50;  -- fail, cannot be changed
+ERROR:  parameter "wal_segment_size" cannot be changed
+RESET wal_segment_size;  -- fail, cannot be changed
+ERROR:  parameter "wal_segment_size" cannot be changed
+ALTER SYSTEM SET wal_segment_size = 50;  -- fail, cannot be changed
+ERROR:  parameter "wal_segment_size" cannot be changed
+ALTER SYSTEM RESET wal_segment_size;  -- fail, cannot be changed
+ERROR:  parameter "wal_segment_size" cannot be changed
+-- PGC_INTERNAL / UNGROUPED
+SET is_superuser = OFF;  -- fail, cannot be changed
+ERROR:  parameter "is_superuser" cannot be changed
+RESET is_superuser;  -- fail, cannot be changed
+ERROR:  parameter "is_superuser" cannot be changed
+ALTER SYSTEM SET is_superuser = OFF;  -- fail, cannot be changed
+ERROR:  parameter "is_superuser" cannot be changed
+ALTER SYSTEM RESET is_superuser;  -- fail, cannot be changed
+ERROR:  parameter "is_superuser" cannot be changed
+-- PGC_POSTMASTER / AUTOVACUUM
+SET autovacuum_freeze_max_age = 1000050000;  -- fail, requires restart
+ERROR:  parameter "autovacuum_freeze_max_age" cannot be changed without restarting the server
+RESET autovacuum_freeze_max_age;  -- fail, requires restart
+ERROR:  parameter "autovacuum_freeze_max_age" cannot be changed without restarting the server
+ALTER SYSTEM SET autovacuum_freeze_max_age = 1000050000;  -- ok
+ALTER SYSTEM RESET autovacuum_freeze_max_age;  -- ok
+SET autovacuum_max_workers = 50;  -- fail, requires restart
+ERROR:  parameter "autovacuum_max_workers" cannot be changed without restarting the server
+RESET autovacuum_max_workers;  -- fail, requires restart
+ERROR:  parameter "autovacuum_max_workers" cannot be changed without restarting the server
+ALTER SYSTEM SET autovacuum_max_workers = 50;  -- ok
+ALTER SYSTEM RESET autovacuum_max_workers;  -- ok
+SET autovacuum_multixact_freeze_max_age = 1000005000;  -- fail, requires restart
+ERROR:  parameter "autovacuum_multixact_freeze_max_age" cannot be changed without restarting the server
+RESET autovacuum_multixact_freeze_max_age;  -- fail, requires restart
+ERROR:  parameter "autovacuum_multixact_freeze_max_age" cannot be changed without restarting the server
+ALTER SYSTEM SET autovacuum_multixact_freeze_max_age = 1000005000;  -- ok
+ALTER SYSTEM RESET autovacuum_multixact_freeze_max_age;  -- ok
+-- PGC_POSTMASTER / CLIENT_CONN_PRELOAD
+SET jit_provider = 'llvmjit';  -- fail, requires restart
+ERROR:  parameter "jit_provider" cannot be changed without restarting the server
+RESET jit_provider;  -- fail, requires restart
+ERROR:  parameter "jit_provider" cannot be changed without restarting the server
+ALTER SYSTEM SET jit_provider = 'llvmjit';  -- ok
+ALTER SYSTEM RESET jit_provider;  -- ok
+SET shared_preload_libraries = 'iconv, pcre';  -- fail, requires restart
+ERROR:  parameter "shared_preload_libraries" cannot be changed without restarting the server
+RESET shared_preload_libraries;  -- fail, requires restart
+ERROR:  parameter "shared_preload_libraries" cannot be changed without restarting the server
+ALTER SYSTEM SET shared_preload_libraries = 'iconv, pcre';  -- ok
+ALTER SYSTEM RESET shared_preload_libraries;  -- ok
+-- PGC_POSTMASTER / CONN_AUTH_SETTINGS
+SET bonjour = OFF;  -- fail, requires restart
+ERROR:  parameter "bonjour" cannot be changed without restarting the server
+RESET bonjour;  -- fail, requires restart
+ERROR:  parameter "bonjour" cannot be changed without restarting the server
+ALTER SYSTEM SET bonjour = OFF;  -- ok
+ALTER SYSTEM RESET bonjour;  -- ok
+SET bonjour_name = 'BonneNuit';  -- fail, requires restart
+ERROR:  parameter "bonjour_name" cannot be changed without restarting the server
+RESET bonjour_name;  -- fail, requires restart
+ERROR:  parameter "bonjour_name" cannot be changed without restarting the server
+ALTER SYSTEM SET bonjour_name = 'BonneNuit';  -- ok
+ALTER SYSTEM RESET bonjour_name;  -- ok
+SET listen_addresses = 'localhost';  -- fail, requires restart
+ERROR:  parameter "listen_addresses" cannot be changed without restarting the server
+RESET listen_addresses;  -- fail, requires restart
+ERROR:  parameter "listen_addresses" cannot be changed without restarting the server
+ALTER SYSTEM SET listen_addresses = 'localhost';  -- ok
+ALTER SYSTEM RESET listen_addresses;  -- ok
+SET max_connections = 50;  -- fail, requires restart
+ERROR:  parameter "max_connections" cannot be changed without restarting the server
+RESET max_connections;  -- fail, requires restart
+ERROR:  parameter "max_connections" cannot be changed without restarting the server
+ALTER SYSTEM SET max_connections = 50;  -- ok
+ALTER SYSTEM RESET max_connections;  -- ok
+SET port = 50;  -- fail, requires restart
+ERROR:  parameter "port" cannot be changed without restarting the server
+RESET port;  -- fail, requires restart
+ERROR:  parameter "port" cannot be changed without restarting the server
+ALTER SYSTEM SET port = 50;  -- ok
+ALTER SYSTEM RESET port;  -- ok
+SET superuser_reserved_connections = 50;  -- fail, requires restart
+ERROR:  parameter "superuser_reserved_connections" cannot be changed without restarting the server
+RESET superuser_reserved_connections;  -- fail, requires restart
+ERROR:  parameter "superuser_reserved_connections" cannot be changed without restarting the server
+ALTER SYSTEM SET superuser_reserved_connections = 50;  -- ok
+ALTER SYSTEM RESET superuser_reserved_connections;  -- ok
+SET unix_socket_directories = '/tmp';  -- fail, requires restart
+ERROR:  parameter "unix_socket_directories" cannot be changed without restarting the server
+RESET unix_socket_directories;  -- fail, requires restart
+ERROR:  parameter "unix_socket_directories" cannot be changed without restarting the server
+ALTER SYSTEM SET unix_socket_directories = '/tmp';  -- ok
+ALTER SYSTEM RESET unix_socket_directories;  -- ok
+SET unix_socket_group = 'tenant';  -- fail, requires restart
+ERROR:  parameter "unix_socket_group" cannot be changed without restarting the server
+RESET unix_socket_group;  -- fail, requires restart
+ERROR:  parameter "unix_socket_group" cannot be changed without restarting the server
+ALTER SYSTEM SET unix_socket_group = 'tenant';  -- ok
+ALTER SYSTEM RESET unix_socket_group;  -- ok
+SET unix_socket_permissions = 50;  -- fail, requires restart
+ERROR:  parameter "unix_socket_permissions" cannot be changed without restarting the server
+RESET unix_socket_permissions;  -- fail, requires restart
+ERROR:  parameter "unix_socket_permissions" cannot be changed without restarting the server
+ALTER SYSTEM SET unix_socket_permissions = 50;  -- ok
+ALTER SYSTEM RESET unix_socket_permissions;  -- ok
+-- PGC_POSTMASTER / DEVELOPER_OPTIONS
+SET ignore_invalid_pages = OFF;  -- fail, requires restart
+ERROR:  parameter "ignore_invalid_pages" cannot be changed without restarting the server
+RESET ignore_invalid_pages;  -- fail, requires restart
+ERROR:  parameter "ignore_invalid_pages" cannot be changed without restarting the server
+ALTER SYSTEM SET ignore_invalid_pages = OFF;  -- ok
+ALTER SYSTEM RESET ignore_invalid_pages;  -- ok
+-- PGC_POSTMASTER / ERROR_HANDLING_OPTIONS
+SET data_sync_retry = OFF;  -- fail, requires restart
+ERROR:  parameter "data_sync_retry" cannot be changed without restarting the server
+RESET data_sync_retry;  -- fail, requires restart
+ERROR:  parameter "data_sync_retry" cannot be changed without restarting the server
+ALTER SYSTEM SET data_sync_retry = OFF;  -- ok
+ALTER SYSTEM RESET data_sync_retry;  -- ok
+-- PGC_POSTMASTER / FILE_LOCATIONS
+SET config_file = '/usr/local/data/postgresql.conf';  -- fail, requires restart
+ERROR:  parameter "config_file" cannot be changed without restarting the server
+RESET config_file;  -- fail, requires restart
+ERROR:  parameter "config_file" cannot be changed without restarting the server
+ALTER SYSTEM SET config_file = '/usr/local/data/postgresql.conf';  -- fail, cannot be changed
+ERROR:  parameter "config_file" cannot be changed
+ALTER SYSTEM RESET config_file;  -- fail, cannot be changed
+ERROR:  parameter "config_file" cannot be changed
+SET data_directory = '/usr/local/data';  -- fail, requires restart
+ERROR:  parameter "data_directory" cannot be changed without restarting the server
+RESET data_directory;  -- fail, requires restart
+ERROR:  parameter "data_directory" cannot be changed without restarting the server
+ALTER SYSTEM SET data_directory = '/usr/local/data';  -- fail, cannot be changed
+ERROR:  parameter "data_directory" cannot be changed
+ALTER SYSTEM RESET data_directory;  -- fail, cannot be changed
+ERROR:  parameter "data_directory" cannot be changed
+SET external_pid_file = '/var/postgres/master.pid';  -- fail, requires restart
+ERROR:  parameter "external_pid_file" cannot be changed without restarting the server
+RESET external_pid_file;  -- fail, requires restart
+ERROR:  parameter "external_pid_file" cannot be changed without restarting the server
+ALTER SYSTEM SET external_pid_file = '/var/postgres/master.pid';  -- ok
+ALTER SYSTEM RESET external_pid_file;  -- ok
+-- PGC_POSTMASTER / LOCK_MANAGEMENT
+SET max_locks_per_transaction = 50;  -- fail, requires restart
+ERROR:  parameter "max_locks_per_transaction" cannot be changed without restarting the server
+RESET max_locks_per_transaction;  -- fail, requires restart
+ERROR:  parameter "max_locks_per_transaction" cannot be changed without restarting the server
+ALTER SYSTEM SET max_locks_per_transaction = 50;  -- ok
+ALTER SYSTEM RESET max_locks_per_transaction;  -- ok
+SET max_pred_locks_per_transaction = 50;  -- fail, requires restart
+ERROR:  parameter "max_pred_locks_per_transaction" cannot be changed without restarting the server
+RESET max_pred_locks_per_transaction;  -- fail, requires restart
+ERROR:  parameter "max_pred_locks_per_transaction" cannot be changed without restarting the server
+ALTER SYSTEM SET max_pred_locks_per_transaction = 50;  -- ok
+ALTER SYSTEM RESET max_pred_locks_per_transaction;  -- ok
+-- PGC_POSTMASTER / LOGGING_WHERE
+SET event_source = 'PostgreSQL';  -- fail, requires restart
+ERROR:  parameter "event_source" cannot be changed without restarting the server
+RESET event_source;  -- fail, requires restart
+ERROR:  parameter "event_source" cannot be changed without restarting the server
+ALTER SYSTEM SET event_source = 'PostgreSQL';  -- ok
+ALTER SYSTEM RESET event_source;  -- ok
+SET logging_collector = OFF;  -- fail, requires restart
+ERROR:  parameter "logging_collector" cannot be changed without restarting the server
+RESET logging_collector;  -- fail, requires restart
+ERROR:  parameter "logging_collector" cannot be changed without restarting the server
+ALTER SYSTEM SET logging_collector = OFF;  -- ok
+ALTER SYSTEM RESET logging_collector;  -- ok
+-- PGC_POSTMASTER / PROCESS_TITLE
+SET cluster_name = 'BonCluster';  -- fail, requires restart
+ERROR:  parameter "cluster_name" cannot be changed without restarting the server
+RESET cluster_name;  -- fail, requires restart
+ERROR:  parameter "cluster_name" cannot be changed without restarting the server
+ALTER SYSTEM SET cluster_name = 'BonCluster';  -- ok
+ALTER SYSTEM RESET cluster_name;  -- ok
+-- PGC_POSTMASTER / REPLICATION_SENDING
+SET max_replication_slots = 50;  -- fail, requires restart
+ERROR:  parameter "max_replication_slots" cannot be changed without restarting the server
+RESET max_replication_slots;  -- fail, requires restart
+ERROR:  parameter "max_replication_slots" cannot be changed without restarting the server
+ALTER SYSTEM SET max_replication_slots = 50;  -- ok
+ALTER SYSTEM RESET max_replication_slots;  -- ok
+SET max_wal_senders = 50;  -- fail, requires restart
+ERROR:  parameter "max_wal_senders" cannot be changed without restarting the server
+RESET max_wal_senders;  -- fail, requires restart
+ERROR:  parameter "max_wal_senders" cannot be changed without restarting the server
+ALTER SYSTEM SET max_wal_senders = 50;  -- ok
+ALTER SYSTEM RESET max_wal_senders;  -- ok
+SET track_commit_timestamp = OFF;  -- fail, requires restart
+ERROR:  parameter "track_commit_timestamp" cannot be changed without restarting the server
+RESET track_commit_timestamp;  -- fail, requires restart
+ERROR:  parameter "track_commit_timestamp" cannot be changed without restarting the server
+ALTER SYSTEM SET track_commit_timestamp = OFF;  -- ok
+ALTER SYSTEM RESET track_commit_timestamp;  -- ok
+-- PGC_POSTMASTER / REPLICATION_STANDBY
+SET hot_standby = OFF;  -- fail, requires restart
+ERROR:  parameter "hot_standby" cannot be changed without restarting the server
+RESET hot_standby;  -- fail, requires restart
+ERROR:  parameter "hot_standby" cannot be changed without restarting the server
+ALTER SYSTEM SET hot_standby = OFF;  -- ok
+ALTER SYSTEM RESET hot_standby;  -- ok
+-- PGC_POSTMASTER / REPLICATION_SUBSCRIBERS
+SET max_logical_replication_workers = 50;  -- fail, requires restart
+ERROR:  parameter "max_logical_replication_workers" cannot be changed without restarting the server
+RESET max_logical_replication_workers;  -- fail, requires restart
+ERROR:  parameter "max_logical_replication_workers" cannot be changed without restarting the server
+ALTER SYSTEM SET max_logical_replication_workers = 50;  -- ok
+ALTER SYSTEM RESET max_logical_replication_workers;  -- ok
+-- PGC_POSTMASTER / RESOURCES_ASYNCHRONOUS
+SET max_worker_processes = 50;  -- fail, requires restart
+ERROR:  parameter "max_worker_processes" cannot be changed without restarting the server
+RESET max_worker_processes;  -- fail, requires restart
+ERROR:  parameter "max_worker_processes" cannot be changed without restarting the server
+ALTER SYSTEM SET max_worker_processes = 50;  -- ok
+ALTER SYSTEM RESET max_worker_processes;  -- ok
+SET old_snapshot_threshold = 50;  -- fail, requires restart
+ERROR:  parameter "old_snapshot_threshold" cannot be changed without restarting the server
+RESET old_snapshot_threshold;  -- fail, requires restart
+ERROR:  parameter "old_snapshot_threshold" cannot be changed without restarting the server
+ALTER SYSTEM SET old_snapshot_threshold = 50;  -- ok
+ALTER SYSTEM RESET old_snapshot_threshold;  -- ok
+-- PGC_POSTMASTER / RESOURCES_KERNEL
+SET max_files_per_process = 1073741855;  -- fail, requires restart
+ERROR:  parameter "max_files_per_process" cannot be changed without restarting the server
+RESET max_files_per_process;  -- fail, requires restart
+ERROR:  parameter "max_files_per_process" cannot be changed without restarting the server
+ALTER SYSTEM SET max_files_per_process = 1073741855;  -- ok
+ALTER SYSTEM RESET max_files_per_process;  -- ok
+-- PGC_POSTMASTER / RESOURCES_MEM
+SET dynamic_shared_memory_type = 'posix';  -- fail, requires restart
+ERROR:  parameter "dynamic_shared_memory_type" cannot be changed without restarting the server
+RESET dynamic_shared_memory_type;  -- fail, requires restart
+ERROR:  parameter "dynamic_shared_memory_type" cannot be changed without restarting the server
+ALTER SYSTEM SET dynamic_shared_memory_type = 'posix';  -- ok
+ALTER SYSTEM RESET dynamic_shared_memory_type;  -- ok
+SET huge_pages = 'try';  -- fail, requires restart
+ERROR:  parameter "huge_pages" cannot be changed without restarting the server
+RESET huge_pages;  -- fail, requires restart
+ERROR:  parameter "huge_pages" cannot be changed without restarting the server
+ALTER SYSTEM SET huge_pages = 'try';  -- ok
+ALTER SYSTEM RESET huge_pages;  -- ok
+SET max_prepared_transactions = 50;  -- fail, requires restart
+ERROR:  parameter "max_prepared_transactions" cannot be changed without restarting the server
+RESET max_prepared_transactions;  -- fail, requires restart
+ERROR:  parameter "max_prepared_transactions" cannot be changed without restarting the server
+ALTER SYSTEM SET max_prepared_transactions = 50;  -- ok
+ALTER SYSTEM RESET max_prepared_transactions;  -- ok
+SET min_dynamic_shared_memory = 50;  -- fail, requires restart
+ERROR:  parameter "min_dynamic_shared_memory" cannot be changed without restarting the server
+RESET min_dynamic_shared_memory;  -- fail, requires restart
+ERROR:  parameter "min_dynamic_shared_memory" cannot be changed without restarting the server
+ALTER SYSTEM SET min_dynamic_shared_memory = 50;  -- ok
+ALTER SYSTEM RESET min_dynamic_shared_memory;  -- ok
+SET shared_buffers = 50;  -- fail, requires restart
+ERROR:  parameter "shared_buffers" cannot be changed without restarting the server
+RESET shared_buffers;  -- fail, requires restart
+ERROR:  parameter "shared_buffers" cannot be changed without restarting the server
+ALTER SYSTEM SET shared_buffers = 50;  -- ok
+ALTER SYSTEM RESET shared_buffers;  -- ok
+SET shared_memory_type = 'mmap';  -- fail, requires restart
+ERROR:  parameter "shared_memory_type" cannot be changed without restarting the server
+RESET shared_memory_type;  -- fail, requires restart
+ERROR:  parameter "shared_memory_type" cannot be changed without restarting the server
+ALTER SYSTEM SET shared_memory_type = 'mmap';  -- ok
+ALTER SYSTEM RESET shared_memory_type;  -- ok
+-- PGC_POSTMASTER / STATS_COLLECTOR
+SET track_activity_query_size = 524338;  -- fail, requires restart
+ERROR:  parameter "track_activity_query_size" cannot be changed without restarting the server
+RESET track_activity_query_size;  -- fail, requires restart
+ERROR:  parameter "track_activity_query_size" cannot be changed without restarting the server
+ALTER SYSTEM SET track_activity_query_size = 524338;  -- ok
+ALTER SYSTEM RESET track_activity_query_size;  -- ok
+-- PGC_POSTMASTER / WAL_ARCHIVING
+SET archive_mode = 'off';  -- fail, requires restart
+ERROR:  parameter "archive_mode" cannot be changed without restarting the server
+RESET archive_mode;  -- fail, requires restart
+ERROR:  parameter "archive_mode" cannot be changed without restarting the server
+ALTER SYSTEM SET archive_mode = 'off';  -- ok
+ALTER SYSTEM RESET archive_mode;  -- ok
+-- PGC_POSTMASTER / WAL_RECOVERY_TARGET
+SET recovery_target_action = 'pause';  -- fail, requires restart
+ERROR:  parameter "recovery_target_action" cannot be changed without restarting the server
+RESET recovery_target_action;  -- fail, requires restart
+ERROR:  parameter "recovery_target_action" cannot be changed without restarting the server
+ALTER SYSTEM SET recovery_target_action = 'pause';  -- ok
+ALTER SYSTEM RESET recovery_target_action;  -- ok
+SET recovery_target_inclusive = OFF;  -- fail, requires restart
+ERROR:  parameter "recovery_target_inclusive" cannot be changed without restarting the server
+RESET recovery_target_inclusive;  -- fail, requires restart
+ERROR:  parameter "recovery_target_inclusive" cannot be changed without restarting the server
+ALTER SYSTEM SET recovery_target_inclusive = OFF;  -- ok
+ALTER SYSTEM RESET recovery_target_inclusive;  -- ok
+SET recovery_target_lsn = '16/B374D848';  -- fail, requires restart
+ERROR:  parameter "recovery_target_lsn" cannot be changed without restarting the server
+RESET recovery_target_lsn;  -- fail, requires restart
+ERROR:  parameter "recovery_target_lsn" cannot be changed without restarting the server
+ALTER SYSTEM SET recovery_target_lsn = '16/B374D848';  -- ok
+ALTER SYSTEM RESET recovery_target_lsn;  -- ok
+SET recovery_target_name = 'BonPoint';  -- fail, requires restart
+ERROR:  parameter "recovery_target_name" cannot be changed without restarting the server
+RESET recovery_target_name;  -- fail, requires restart
+ERROR:  parameter "recovery_target_name" cannot be changed without restarting the server
+ALTER SYSTEM SET recovery_target_name = 'BonPoint';  -- ok
+ALTER SYSTEM RESET recovery_target_name;  -- ok
+SET recovery_target_time = '2001-02-03 04:05:06.789 Europe/Helsinki';  -- fail, requires restart
+ERROR:  parameter "recovery_target_time" cannot be changed without restarting the server
+RESET recovery_target_time;  -- fail, requires restart
+ERROR:  parameter "recovery_target_time" cannot be changed without restarting the server
+ALTER SYSTEM SET recovery_target_time = '2001-02-03 04:05:06.789 Europe/Helsinki';  -- ok
+ALTER SYSTEM RESET recovery_target_time;  -- ok
+SET recovery_target_timeline = 'latest';  -- fail, requires restart
+ERROR:  parameter "recovery_target_timeline" cannot be changed without restarting the server
+RESET recovery_target_timeline;  -- fail, requires restart
+ERROR:  parameter "recovery_target_timeline" cannot be changed without restarting the server
+ALTER SYSTEM SET recovery_target_timeline = 'latest';  -- ok
+ALTER SYSTEM RESET recovery_target_timeline;  -- ok
+SET recovery_target_xid = '12345678';  -- fail, requires restart
+ERROR:  parameter "recovery_target_xid" cannot be changed without restarting the server
+RESET recovery_target_xid;  -- fail, requires restart
+ERROR:  parameter "recovery_target_xid" cannot be changed without restarting the server
+ALTER SYSTEM SET recovery_target_xid = '12345678';  -- ok
+ALTER SYSTEM RESET recovery_target_xid;  -- ok
+-- PGC_POSTMASTER / WAL_SETTINGS
+SET wal_buffers = 50;  -- fail, requires restart
+ERROR:  parameter "wal_buffers" cannot be changed without restarting the server
+RESET wal_buffers;  -- fail, requires restart
+ERROR:  parameter "wal_buffers" cannot be changed without restarting the server
+ALTER SYSTEM SET wal_buffers = 50;  -- ok
+ALTER SYSTEM RESET wal_buffers;  -- ok
+SET wal_level = 'replica';  -- fail, requires restart
+ERROR:  parameter "wal_level" cannot be changed without restarting the server
+RESET wal_level;  -- fail, requires restart
+ERROR:  parameter "wal_level" cannot be changed without restarting the server
+ALTER SYSTEM SET wal_level = 'replica';  -- ok
+ALTER SYSTEM RESET wal_level;  -- ok
+SET wal_log_hints = OFF;  -- fail, requires restart
+ERROR:  parameter "wal_log_hints" cannot be changed without restarting the server
+RESET wal_log_hints;  -- fail, requires restart
+ERROR:  parameter "wal_log_hints" cannot be changed without restarting the server
+ALTER SYSTEM SET wal_log_hints = OFF;  -- ok
+ALTER SYSTEM RESET wal_log_hints;  -- ok
+-- PGC_SIGHUP / AUTOVACUUM
+SET autovacuum = OFF;  -- fail, requires reload
+ERROR:  parameter "autovacuum" cannot be changed now
+RESET autovacuum;  -- fail, requires reload
+ERROR:  parameter "autovacuum" cannot be changed now
+ALTER SYSTEM SET autovacuum = OFF;  -- ok
+ALTER SYSTEM RESET autovacuum;  -- ok
+SET autovacuum_analyze_scale_factor = 50;  -- fail, requires reload
+ERROR:  parameter "autovacuum_analyze_scale_factor" cannot be changed now
+RESET autovacuum_analyze_scale_factor;  -- fail, requires reload
+ERROR:  parameter "autovacuum_analyze_scale_factor" cannot be changed now
+ALTER SYSTEM SET autovacuum_analyze_scale_factor = 50;  -- ok
+ALTER SYSTEM RESET autovacuum_analyze_scale_factor;  -- ok
+SET autovacuum_analyze_threshold = 50;  -- fail, requires reload
+ERROR:  parameter "autovacuum_analyze_threshold" cannot be changed now
+RESET autovacuum_analyze_threshold;  -- fail, requires reload
+ERROR:  parameter "autovacuum_analyze_threshold" cannot be changed now
+ALTER SYSTEM SET autovacuum_analyze_threshold = 50;  -- ok
+ALTER SYSTEM RESET autovacuum_analyze_threshold;  -- ok
+SET autovacuum_naptime = 50;  -- fail, requires reload
+ERROR:  parameter "autovacuum_naptime" cannot be changed now
+RESET autovacuum_naptime;  -- fail, requires reload
+ERROR:  parameter "autovacuum_naptime" cannot be changed now
+ALTER SYSTEM SET autovacuum_naptime = 50;  -- ok
+ALTER SYSTEM RESET autovacuum_naptime;  -- ok
+SET autovacuum_vacuum_cost_delay = 50;  -- fail, requires reload
+ERROR:  parameter "autovacuum_vacuum_cost_delay" cannot be changed now
+RESET autovacuum_vacuum_cost_delay;  -- fail, requires reload
+ERROR:  parameter "autovacuum_vacuum_cost_delay" cannot be changed now
+ALTER SYSTEM SET autovacuum_vacuum_cost_delay = 50;  -- ok
+ALTER SYSTEM RESET autovacuum_vacuum_cost_delay;  -- ok
+SET autovacuum_vacuum_cost_limit = 50;  -- fail, requires reload
+ERROR:  parameter "autovacuum_vacuum_cost_limit" cannot be changed now
+RESET autovacuum_vacuum_cost_limit;  -- fail, requires reload
+ERROR:  parameter "autovacuum_vacuum_cost_limit" cannot be changed now
+ALTER SYSTEM SET autovacuum_vacuum_cost_limit = 50;  -- ok
+ALTER SYSTEM RESET autovacuum_vacuum_cost_limit;  -- ok
+SET autovacuum_vacuum_insert_scale_factor = 50;  -- fail, requires reload
+ERROR:  parameter "autovacuum_vacuum_insert_scale_factor" cannot be changed now
+RESET autovacuum_vacuum_insert_scale_factor;  -- fail, requires reload
+ERROR:  parameter "autovacuum_vacuum_insert_scale_factor" cannot be changed now
+ALTER SYSTEM SET autovacuum_vacuum_insert_scale_factor = 50;  -- ok
+ALTER SYSTEM RESET autovacuum_vacuum_insert_scale_factor;  -- ok
+SET autovacuum_vacuum_insert_threshold = 50;  -- fail, requires reload
+ERROR:  parameter "autovacuum_vacuum_insert_threshold" cannot be changed now
+RESET autovacuum_vacuum_insert_threshold;  -- fail, requires reload
+ERROR:  parameter "autovacuum_vacuum_insert_threshold" cannot be changed now
+ALTER SYSTEM SET autovacuum_vacuum_insert_threshold = 50;  -- ok
+ALTER SYSTEM RESET autovacuum_vacuum_insert_threshold;  -- ok
+SET autovacuum_vacuum_scale_factor = 50;  -- fail, requires reload
+ERROR:  parameter "autovacuum_vacuum_scale_factor" cannot be changed now
+RESET autovacuum_vacuum_scale_factor;  -- fail, requires reload
+ERROR:  parameter "autovacuum_vacuum_scale_factor" cannot be changed now
+ALTER SYSTEM SET autovacuum_vacuum_scale_factor = 50;  -- ok
+ALTER SYSTEM RESET autovacuum_vacuum_scale_factor;  -- ok
+SET autovacuum_vacuum_threshold = 50;  -- fail, requires reload
+ERROR:  parameter "autovacuum_vacuum_threshold" cannot be changed now
+RESET autovacuum_vacuum_threshold;  -- fail, requires reload
+ERROR:  parameter "autovacuum_vacuum_threshold" cannot be changed now
+ALTER SYSTEM SET autovacuum_vacuum_threshold = 50;  -- ok
+ALTER SYSTEM RESET autovacuum_vacuum_threshold;  -- ok
+-- PGC_SIGHUP / CONN_AUTH_AUTH
+SET authentication_timeout = 50;  -- fail, requires reload
+ERROR:  parameter "authentication_timeout" cannot be changed now
+RESET authentication_timeout;  -- fail, requires reload
+ERROR:  parameter "authentication_timeout" cannot be changed now
+ALTER SYSTEM SET authentication_timeout = 50;  -- ok
+ALTER SYSTEM RESET authentication_timeout;  -- ok
+SET db_user_namespace = OFF;  -- fail, requires reload
+ERROR:  parameter "db_user_namespace" cannot be changed now
+RESET db_user_namespace;  -- fail, requires reload
+ERROR:  parameter "db_user_namespace" cannot be changed now
+ALTER SYSTEM SET db_user_namespace = OFF;  -- ok
+ALTER SYSTEM RESET db_user_namespace;  -- ok
+SET krb_caseins_users = OFF;  -- fail, requires reload
+ERROR:  parameter "krb_caseins_users" cannot be changed now
+RESET krb_caseins_users;  -- fail, requires reload
+ERROR:  parameter "krb_caseins_users" cannot be changed now
+ALTER SYSTEM SET krb_caseins_users = OFF;  -- ok
+ALTER SYSTEM RESET krb_caseins_users;  -- ok
+SET krb_server_keyfile = 'krb/server.key';  -- fail, requires reload
+ERROR:  parameter "krb_server_keyfile" cannot be changed now
+RESET krb_server_keyfile;  -- fail, requires reload
+ERROR:  parameter "krb_server_keyfile" cannot be changed now
+ALTER SYSTEM SET krb_server_keyfile = 'krb/server.key';  -- ok
+ALTER SYSTEM RESET krb_server_keyfile;  -- ok
+-- PGC_SIGHUP / CONN_AUTH_SSL
+SET ssl_ca_file = 'ca/server.ca';  -- fail, requires reload
+ERROR:  parameter "ssl_ca_file" cannot be changed now
+RESET ssl_ca_file;  -- fail, requires reload
+ERROR:  parameter "ssl_ca_file" cannot be changed now
+ALTER SYSTEM SET ssl_ca_file = 'ca/server.ca';  -- ok
+ALTER SYSTEM RESET ssl_ca_file;  -- ok
+SET ssl_cert_file = 'crt/server.crt';  -- fail, requires reload
+ERROR:  parameter "ssl_cert_file" cannot be changed now
+RESET ssl_cert_file;  -- fail, requires reload
+ERROR:  parameter "ssl_cert_file" cannot be changed now
+ALTER SYSTEM SET ssl_cert_file = 'crt/server.crt';  -- ok
+ALTER SYSTEM RESET ssl_cert_file;  -- ok
+SET ssl_ciphers = 'none';  -- fail, requires reload
+ERROR:  parameter "ssl_ciphers" cannot be changed now
+RESET ssl_ciphers;  -- fail, requires reload
+ERROR:  parameter "ssl_ciphers" cannot be changed now
+ALTER SYSTEM SET ssl_ciphers = 'none';  -- ok
+ALTER SYSTEM RESET ssl_ciphers;  -- ok
+SET ssl_crl_dir = 'crl/';  -- fail, requires reload
+ERROR:  parameter "ssl_crl_dir" cannot be changed now
+RESET ssl_crl_dir;  -- fail, requires reload
+ERROR:  parameter "ssl_crl_dir" cannot be changed now
+ALTER SYSTEM SET ssl_crl_dir = 'crl/';  -- ok
+ALTER SYSTEM RESET ssl_crl_dir;  -- ok
+SET ssl_crl_file = 'crl/server.crl';  -- fail, requires reload
+ERROR:  parameter "ssl_crl_file" cannot be changed now
+RESET ssl_crl_file;  -- fail, requires reload
+ERROR:  parameter "ssl_crl_file" cannot be changed now
+ALTER SYSTEM SET ssl_crl_file = 'crl/server.crl';  -- ok
+ALTER SYSTEM RESET ssl_crl_file;  -- ok
+SET ssl_dh_params_file = 'ssl/params';  -- fail, requires reload
+ERROR:  parameter "ssl_dh_params_file" cannot be changed now
+RESET ssl_dh_params_file;  -- fail, requires reload
+ERROR:  parameter "ssl_dh_params_file" cannot be changed now
+ALTER SYSTEM SET ssl_dh_params_file = 'ssl/params';  -- ok
+ALTER SYSTEM RESET ssl_dh_params_file;  -- ok
+SET ssl_ecdh_curve = 'none';  -- fail, requires reload
+ERROR:  parameter "ssl_ecdh_curve" cannot be changed now
+RESET ssl_ecdh_curve;  -- fail, requires reload
+ERROR:  parameter "ssl_ecdh_curve" cannot be changed now
+ALTER SYSTEM SET ssl_ecdh_curve = 'none';  -- ok
+ALTER SYSTEM RESET ssl_ecdh_curve;  -- ok
+SET ssl_key_file = 'crl/server.key';  -- fail, requires reload
+ERROR:  parameter "ssl_key_file" cannot be changed now
+RESET ssl_key_file;  -- fail, requires reload
+ERROR:  parameter "ssl_key_file" cannot be changed now
+ALTER SYSTEM SET ssl_key_file = 'crl/server.key';  -- ok
+ALTER SYSTEM RESET ssl_key_file;  -- ok
+SET ssl_min_protocol_version = 'TLSv1.2';  -- fail, requires reload
+ERROR:  parameter "ssl_min_protocol_version" cannot be changed now
+RESET ssl_min_protocol_version;  -- fail, requires reload
+ERROR:  parameter "ssl_min_protocol_version" cannot be changed now
+ALTER SYSTEM SET ssl_min_protocol_version = 'TLSv1.2';  -- ok
+ALTER SYSTEM RESET ssl_min_protocol_version;  -- ok
+SET ssl_passphrase_command = '/bin/passphrase';  -- fail, requires reload
+ERROR:  parameter "ssl_passphrase_command" cannot be changed now
+RESET ssl_passphrase_command;  -- fail, requires reload
+ERROR:  parameter "ssl_passphrase_command" cannot be changed now
+ALTER SYSTEM SET ssl_passphrase_command = '/bin/passphrase';  -- ok
+ALTER SYSTEM RESET ssl_passphrase_command;  -- ok
+SET ssl_passphrase_command_supports_reload = OFF;  -- fail, requires reload
+ERROR:  parameter "ssl_passphrase_command_supports_reload" cannot be changed now
+RESET ssl_passphrase_command_supports_reload;  -- fail, requires reload
+ERROR:  parameter "ssl_passphrase_command_supports_reload" cannot be changed now
+ALTER SYSTEM SET ssl_passphrase_command_supports_reload = OFF;  -- ok
+ALTER SYSTEM RESET ssl_passphrase_command_supports_reload;  -- ok
+SET ssl_prefer_server_ciphers = OFF;  -- fail, requires reload
+ERROR:  parameter "ssl_prefer_server_ciphers" cannot be changed now
+RESET ssl_prefer_server_ciphers;  -- fail, requires reload
+ERROR:  parameter "ssl_prefer_server_ciphers" cannot be changed now
+ALTER SYSTEM SET ssl_prefer_server_ciphers = OFF;  -- ok
+ALTER SYSTEM RESET ssl_prefer_server_ciphers;  -- ok
+-- PGC_SIGHUP / DEVELOPER_OPTIONS
+SET pre_auth_delay = 50;  -- fail, requires reload
+ERROR:  parameter "pre_auth_delay" cannot be changed now
+RESET pre_auth_delay;  -- fail, requires reload
+ERROR:  parameter "pre_auth_delay" cannot be changed now
+ALTER SYSTEM SET pre_auth_delay = 50;  -- ok
+ALTER SYSTEM RESET pre_auth_delay;  -- ok
+SET remove_temp_files_after_crash = OFF;  -- fail, requires reload
+ERROR:  parameter "remove_temp_files_after_crash" cannot be changed now
+RESET remove_temp_files_after_crash;  -- fail, requires reload
+ERROR:  parameter "remove_temp_files_after_crash" cannot be changed now
+ALTER SYSTEM SET remove_temp_files_after_crash = OFF;  -- ok
+ALTER SYSTEM RESET remove_temp_files_after_crash;  -- ok
+SET trace_recovery_messages = 'log';  -- fail, requires reload
+ERROR:  parameter "trace_recovery_messages" cannot be changed now
+RESET trace_recovery_messages;  -- fail, requires reload
+ERROR:  parameter "trace_recovery_messages" cannot be changed now
+ALTER SYSTEM SET trace_recovery_messages = 'log';  -- ok
+ALTER SYSTEM RESET trace_recovery_messages;  -- ok
+-- PGC_SIGHUP / ERROR_HANDLING_OPTIONS
+SET recovery_init_sync_method = 'fsync';  -- fail, requires reload
+ERROR:  parameter "recovery_init_sync_method" cannot be changed now
+RESET recovery_init_sync_method;  -- fail, requires reload
+ERROR:  parameter "recovery_init_sync_method" cannot be changed now
+ALTER SYSTEM SET recovery_init_sync_method = 'fsync';  -- ok
+ALTER SYSTEM RESET recovery_init_sync_method;  -- ok
+SET restart_after_crash = OFF;  -- fail, requires reload
+ERROR:  parameter "restart_after_crash" cannot be changed now
+RESET restart_after_crash;  -- fail, requires reload
+ERROR:  parameter "restart_after_crash" cannot be changed now
+ALTER SYSTEM SET restart_after_crash = OFF;  -- ok
+ALTER SYSTEM RESET restart_after_crash;  -- ok
+-- PGC_SIGHUP / LOCK_MANAGEMENT
+SET max_pred_locks_per_page = 50;  -- fail, requires reload
+ERROR:  parameter "max_pred_locks_per_page" cannot be changed now
+RESET max_pred_locks_per_page;  -- fail, requires reload
+ERROR:  parameter "max_pred_locks_per_page" cannot be changed now
+ALTER SYSTEM SET max_pred_locks_per_page = 50;  -- ok
+ALTER SYSTEM RESET max_pred_locks_per_page;  -- ok
+SET max_pred_locks_per_relation = 50;  -- fail, requires reload
+ERROR:  parameter "max_pred_locks_per_relation" cannot be changed now
+RESET max_pred_locks_per_relation;  -- fail, requires reload
+ERROR:  parameter "max_pred_locks_per_relation" cannot be changed now
+ALTER SYSTEM SET max_pred_locks_per_relation = 50;  -- ok
+ALTER SYSTEM RESET max_pred_locks_per_relation;  -- ok
+-- PGC_SIGHUP / LOGGING_WHAT
+SET log_autovacuum_min_duration = 50;  -- fail, requires reload
+ERROR:  parameter "log_autovacuum_min_duration" cannot be changed now
+RESET log_autovacuum_min_duration;  -- fail, requires reload
+ERROR:  parameter "log_autovacuum_min_duration" cannot be changed now
+ALTER SYSTEM SET log_autovacuum_min_duration = 50;  -- ok
+ALTER SYSTEM RESET log_autovacuum_min_duration;  -- ok
+SET log_checkpoints = OFF;  -- fail, requires reload
+ERROR:  parameter "log_checkpoints" cannot be changed now
+RESET log_checkpoints;  -- fail, requires reload
+ERROR:  parameter "log_checkpoints" cannot be changed now
+ALTER SYSTEM SET log_checkpoints = OFF;  -- ok
+ALTER SYSTEM RESET log_checkpoints;  -- ok
+SET log_hostname = OFF;  -- fail, requires reload
+ERROR:  parameter "log_hostname" cannot be changed now
+RESET log_hostname;  -- fail, requires reload
+ERROR:  parameter "log_hostname" cannot be changed now
+ALTER SYSTEM SET log_hostname = OFF;  -- ok
+ALTER SYSTEM RESET log_hostname;  -- ok
+SET log_line_prefix = '%m [%p] ';  -- fail, requires reload
+ERROR:  parameter "log_line_prefix" cannot be changed now
+RESET log_line_prefix;  -- fail, requires reload
+ERROR:  parameter "log_line_prefix" cannot be changed now
+ALTER SYSTEM SET log_line_prefix = '%m [%p] ';  -- ok
+ALTER SYSTEM RESET log_line_prefix;  -- ok
+SET log_recovery_conflict_waits = OFF;  -- fail, requires reload
+ERROR:  parameter "log_recovery_conflict_waits" cannot be changed now
+RESET log_recovery_conflict_waits;  -- fail, requires reload
+ERROR:  parameter "log_recovery_conflict_waits" cannot be changed now
+ALTER SYSTEM SET log_recovery_conflict_waits = OFF;  -- ok
+ALTER SYSTEM RESET log_recovery_conflict_waits;  -- ok
+SET log_timezone = 'Europe/Helsinki';  -- fail, requires reload
+ERROR:  parameter "log_timezone" cannot be changed now
+RESET log_timezone;  -- fail, requires reload
+ERROR:  parameter "log_timezone" cannot be changed now
+ALTER SYSTEM SET log_timezone = 'Europe/Helsinki';  -- ok
+ALTER SYSTEM RESET log_timezone;  -- ok
+-- PGC_SIGHUP / LOGGING_WHERE
+SET log_directory = 'log';  -- fail, requires reload
+ERROR:  parameter "log_directory" cannot be changed now
+RESET log_directory;  -- fail, requires reload
+ERROR:  parameter "log_directory" cannot be changed now
+ALTER SYSTEM SET log_directory = 'log';  -- ok
+ALTER SYSTEM RESET log_directory;  -- ok
+SET log_file_mode = 50;  -- fail, requires reload
+ERROR:  parameter "log_file_mode" cannot be changed now
+RESET log_file_mode;  -- fail, requires reload
+ERROR:  parameter "log_file_mode" cannot be changed now
+ALTER SYSTEM SET log_file_mode = 50;  -- ok
+ALTER SYSTEM RESET log_file_mode;  -- ok
+SET log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log';  -- fail, requires reload
+ERROR:  parameter "log_filename" cannot be changed now
+RESET log_filename;  -- fail, requires reload
+ERROR:  parameter "log_filename" cannot be changed now
+ALTER SYSTEM SET log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log';  -- ok
+ALTER SYSTEM RESET log_filename;  -- ok
+SET log_rotation_age = 50;  -- fail, requires reload
+ERROR:  parameter "log_rotation_age" cannot be changed now
+RESET log_rotation_age;  -- fail, requires reload
+ERROR:  parameter "log_rotation_age" cannot be changed now
+ALTER SYSTEM SET log_rotation_age = 50;  -- ok
+ALTER SYSTEM RESET log_rotation_age;  -- ok
+SET log_rotation_size = 50;  -- fail, requires reload
+ERROR:  parameter "log_rotation_size" cannot be changed now
+RESET log_rotation_size;  -- fail, requires reload
+ERROR:  parameter "log_rotation_size" cannot be changed now
+ALTER SYSTEM SET log_rotation_size = 50;  -- ok
+ALTER SYSTEM RESET log_rotation_size;  -- ok
+SET log_truncate_on_rotation = OFF;  -- fail, requires reload
+ERROR:  parameter "log_truncate_on_rotation" cannot be changed now
+RESET log_truncate_on_rotation;  -- fail, requires reload
+ERROR:  parameter "log_truncate_on_rotation" cannot be changed now
+ALTER SYSTEM SET log_truncate_on_rotation = OFF;  -- ok
+ALTER SYSTEM RESET log_truncate_on_rotation;  -- ok
+SET syslog_ident = 'postgres';  -- fail, requires reload
+ERROR:  parameter "syslog_ident" cannot be changed now
+RESET syslog_ident;  -- fail, requires reload
+ERROR:  parameter "syslog_ident" cannot be changed now
+ALTER SYSTEM SET syslog_ident = 'postgres';  -- ok
+ALTER SYSTEM RESET syslog_ident;  -- ok
+SET syslog_sequence_numbers = OFF;  -- fail, requires reload
+ERROR:  parameter "syslog_sequence_numbers" cannot be changed now
+RESET syslog_sequence_numbers;  -- fail, requires reload
+ERROR:  parameter "syslog_sequence_numbers" cannot be changed now
+ALTER SYSTEM SET syslog_sequence_numbers = OFF;  -- ok
+ALTER SYSTEM RESET syslog_sequence_numbers;  -- ok
+SET syslog_split_messages = OFF;  -- fail, requires reload
+ERROR:  parameter "syslog_split_messages" cannot be changed now
+RESET syslog_split_messages;  -- fail, requires reload
+ERROR:  parameter "syslog_split_messages" cannot be changed now
+ALTER SYSTEM SET syslog_split_messages = OFF;  -- ok
+ALTER SYSTEM RESET syslog_split_messages;  -- ok
+-- PGC_SIGHUP / REPLICATION_PRIMARY
+SET synchronous_standby_names = 'fee, fi, fo, fum';  -- fail, requires reload
+ERROR:  parameter "synchronous_standby_names" cannot be changed now
+RESET synchronous_standby_names;  -- fail, requires reload
+ERROR:  parameter "synchronous_standby_names" cannot be changed now
+ALTER SYSTEM SET synchronous_standby_names = 'fee, fi, fo, fum';  -- ok
+ALTER SYSTEM RESET synchronous_standby_names;  -- ok
+SET vacuum_defer_cleanup_age = 50;  -- fail, requires reload
+ERROR:  parameter "vacuum_defer_cleanup_age" cannot be changed now
+RESET vacuum_defer_cleanup_age;  -- fail, requires reload
+ERROR:  parameter "vacuum_defer_cleanup_age" cannot be changed now
+ALTER SYSTEM SET vacuum_defer_cleanup_age = 50;  -- ok
+ALTER SYSTEM RESET vacuum_defer_cleanup_age;  -- ok
+-- PGC_SIGHUP / REPLICATION_SENDING
+SET max_slot_wal_keep_size = 50;  -- fail, requires reload
+ERROR:  parameter "max_slot_wal_keep_size" cannot be changed now
+RESET max_slot_wal_keep_size;  -- fail, requires reload
+ERROR:  parameter "max_slot_wal_keep_size" cannot be changed now
+ALTER SYSTEM SET max_slot_wal_keep_size = 50;  -- ok
+ALTER SYSTEM RESET max_slot_wal_keep_size;  -- ok
+SET wal_keep_size = 50;  -- fail, requires reload
+ERROR:  parameter "wal_keep_size" cannot be changed now
+RESET wal_keep_size;  -- fail, requires reload
+ERROR:  parameter "wal_keep_size" cannot be changed now
+ALTER SYSTEM SET wal_keep_size = 50;  -- ok
+ALTER SYSTEM RESET wal_keep_size;  -- ok
+-- PGC_SIGHUP / REPLICATION_STANDBY
+SET hot_standby_feedback = OFF;  -- fail, requires reload
+ERROR:  parameter "hot_standby_feedback" cannot be changed now
+RESET hot_standby_feedback;  -- fail, requires reload
+ERROR:  parameter "hot_standby_feedback" cannot be changed now
+ALTER SYSTEM SET hot_standby_feedback = OFF;  -- ok
+ALTER SYSTEM RESET hot_standby_feedback;  -- ok
+SET max_standby_archive_delay = 50;  -- fail, requires reload
+ERROR:  parameter "max_standby_archive_delay" cannot be changed now
+RESET max_standby_archive_delay;  -- fail, requires reload
+ERROR:  parameter "max_standby_archive_delay" cannot be changed now
+ALTER SYSTEM SET max_standby_archive_delay = 50;  -- ok
+ALTER SYSTEM RESET max_standby_archive_delay;  -- ok
+SET max_standby_streaming_delay = 50;  -- fail, requires reload
+ERROR:  parameter "max_standby_streaming_delay" cannot be changed now
+RESET max_standby_streaming_delay;  -- fail, requires reload
+ERROR:  parameter "max_standby_streaming_delay" cannot be changed now
+ALTER SYSTEM SET max_standby_streaming_delay = 50;  -- ok
+ALTER SYSTEM RESET max_standby_streaming_delay;  -- ok
+SET primary_conninfo = 'postgresql://other@localhost/otherdb?connect_timeout=10&application_name=myapp';  -- fail, requires reload
+ERROR:  parameter "primary_conninfo" cannot be changed now
+RESET primary_conninfo;  -- fail, requires reload
+ERROR:  parameter "primary_conninfo" cannot be changed now
+ALTER SYSTEM SET primary_conninfo = 'postgresql://other@localhost/otherdb?connect_timeout=10&application_name=myapp';  -- ok
+ALTER SYSTEM RESET primary_conninfo;  -- ok
+SET primary_slot_name = 'bonne_fente';  -- fail, requires reload
+ERROR:  parameter "primary_slot_name" cannot be changed now
+RESET primary_slot_name;  -- fail, requires reload
+ERROR:  parameter "primary_slot_name" cannot be changed now
+ALTER SYSTEM SET primary_slot_name = 'bonne_fente';  -- ok
+ALTER SYSTEM RESET primary_slot_name;  -- ok
+SET promote_trigger_file = 'promote.trigger';  -- fail, requires reload
+ERROR:  parameter "promote_trigger_file" cannot be changed now
+RESET promote_trigger_file;  -- fail, requires reload
+ERROR:  parameter "promote_trigger_file" cannot be changed now
+ALTER SYSTEM SET promote_trigger_file = 'promote.trigger';  -- ok
+ALTER SYSTEM RESET promote_trigger_file;  -- ok
+SET recovery_min_apply_delay = 50;  -- fail, requires reload
+ERROR:  parameter "recovery_min_apply_delay" cannot be changed now
+RESET recovery_min_apply_delay;  -- fail, requires reload
+ERROR:  parameter "recovery_min_apply_delay" cannot be changed now
+ALTER SYSTEM SET recovery_min_apply_delay = 50;  -- ok
+ALTER SYSTEM RESET recovery_min_apply_delay;  -- ok
+SET wal_receiver_create_temp_slot = OFF;  -- fail, requires reload
+ERROR:  parameter "wal_receiver_create_temp_slot" cannot be changed now
+RESET wal_receiver_create_temp_slot;  -- fail, requires reload
+ERROR:  parameter "wal_receiver_create_temp_slot" cannot be changed now
+ALTER SYSTEM SET wal_receiver_create_temp_slot = OFF;  -- ok
+ALTER SYSTEM RESET wal_receiver_create_temp_slot;  -- ok
+SET wal_receiver_status_interval = 50;  -- fail, requires reload
+ERROR:  parameter "wal_receiver_status_interval" cannot be changed now
+RESET wal_receiver_status_interval;  -- fail, requires reload
+ERROR:  parameter "wal_receiver_status_interval" cannot be changed now
+ALTER SYSTEM SET wal_receiver_status_interval = 50;  -- ok
+ALTER SYSTEM RESET wal_receiver_status_interval;  -- ok
+SET wal_receiver_timeout = 50;  -- fail, requires reload
+ERROR:  parameter "wal_receiver_timeout" cannot be changed now
+RESET wal_receiver_timeout;  -- fail, requires reload
+ERROR:  parameter "wal_receiver_timeout" cannot be changed now
+ALTER SYSTEM SET wal_receiver_timeout = 50;  -- ok
+ALTER SYSTEM RESET wal_receiver_timeout;  -- ok
+SET wal_retrieve_retry_interval = 50;  -- fail, requires reload
+ERROR:  parameter "wal_retrieve_retry_interval" cannot be changed now
+RESET wal_retrieve_retry_interval;  -- fail, requires reload
+ERROR:  parameter "wal_retrieve_retry_interval" cannot be changed now
+ALTER SYSTEM SET wal_retrieve_retry_interval = 50;  -- ok
+ALTER SYSTEM RESET wal_retrieve_retry_interval;  -- ok
+-- PGC_SIGHUP / REPLICATION_SUBSCRIBERS
+SET max_sync_workers_per_subscription = 50;  -- fail, requires reload
+ERROR:  parameter "max_sync_workers_per_subscription" cannot be changed now
+RESET max_sync_workers_per_subscription;  -- fail, requires reload
+ERROR:  parameter "max_sync_workers_per_subscription" cannot be changed now
+ALTER SYSTEM SET max_sync_workers_per_subscription = 50;  -- ok
+ALTER SYSTEM RESET max_sync_workers_per_subscription;  -- ok
+-- PGC_SIGHUP / RESOURCES_BGWRITER
+SET bgwriter_delay = 50;  -- fail, requires reload
+ERROR:  parameter "bgwriter_delay" cannot be changed now
+RESET bgwriter_delay;  -- fail, requires reload
+ERROR:  parameter "bgwriter_delay" cannot be changed now
+ALTER SYSTEM SET bgwriter_delay = 50;  -- ok
+ALTER SYSTEM RESET bgwriter_delay;  -- ok
+SET bgwriter_flush_after = 50;  -- fail, requires reload
+ERROR:  parameter "bgwriter_flush_after" cannot be changed now
+RESET bgwriter_flush_after;  -- fail, requires reload
+ERROR:  parameter "bgwriter_flush_after" cannot be changed now
+ALTER SYSTEM SET bgwriter_flush_after = 50;  -- ok
+ALTER SYSTEM RESET bgwriter_flush_after;  -- ok
+SET bgwriter_lru_maxpages = 50;  -- fail, requires reload
+ERROR:  parameter "bgwriter_lru_maxpages" cannot be changed now
+RESET bgwriter_lru_maxpages;  -- fail, requires reload
+ERROR:  parameter "bgwriter_lru_maxpages" cannot be changed now
+ALTER SYSTEM SET bgwriter_lru_maxpages = 50;  -- ok
+ALTER SYSTEM RESET bgwriter_lru_maxpages;  -- ok
+SET bgwriter_lru_multiplier = 5;  -- fail, requires reload
+ERROR:  parameter "bgwriter_lru_multiplier" cannot be changed now
+RESET bgwriter_lru_multiplier;  -- fail, requires reload
+ERROR:  parameter "bgwriter_lru_multiplier" cannot be changed now
+ALTER SYSTEM SET bgwriter_lru_multiplier = 5;  -- ok
+ALTER SYSTEM RESET bgwriter_lru_multiplier;  -- ok
+-- PGC_SIGHUP / RESOURCES_MEM
+SET autovacuum_work_mem = 50;  -- fail, requires reload
+ERROR:  parameter "autovacuum_work_mem" cannot be changed now
+RESET autovacuum_work_mem;  -- fail, requires reload
+ERROR:  parameter "autovacuum_work_mem" cannot be changed now
+ALTER SYSTEM SET autovacuum_work_mem = 50;  -- ok
+ALTER SYSTEM RESET autovacuum_work_mem;  -- ok
+-- PGC_SIGHUP / STATS_COLLECTOR
+SET stats_temp_directory = 'pg_stat_tmp';  -- fail, requires reload
+ERROR:  parameter "stats_temp_directory" cannot be changed now
+RESET stats_temp_directory;  -- fail, requires reload
+ERROR:  parameter "stats_temp_directory" cannot be changed now
+ALTER SYSTEM SET stats_temp_directory = 'pg_stat_tmp';  -- ok
+ALTER SYSTEM RESET stats_temp_directory;  -- ok
+-- PGC_SIGHUP / WAL_ARCHIVE_RECOVERY
+SET archive_cleanup_command = '/bin/cleanup my stuff';  -- fail, requires reload
+ERROR:  parameter "archive_cleanup_command" cannot be changed now
+RESET archive_cleanup_command;  -- fail, requires reload
+ERROR:  parameter "archive_cleanup_command" cannot be changed now
+ALTER SYSTEM SET archive_cleanup_command = '/bin/cleanup my stuff';  -- ok
+ALTER SYSTEM RESET archive_cleanup_command;  -- ok
+SET recovery_end_command = '/bin/recover my stuff';  -- fail, requires reload
+ERROR:  parameter "recovery_end_command" cannot be changed now
+RESET recovery_end_command;  -- fail, requires reload
+ERROR:  parameter "recovery_end_command" cannot be changed now
+ALTER SYSTEM SET recovery_end_command = '/bin/recover my stuff';  -- ok
+ALTER SYSTEM RESET recovery_end_command;  -- ok
+SET restore_command = '/bin/restore my stuff';  -- fail, requires reload
+ERROR:  parameter "restore_command" cannot be changed now
+RESET restore_command;  -- fail, requires reload
+ERROR:  parameter "restore_command" cannot be changed now
+ALTER SYSTEM SET restore_command = '/bin/restore my stuff';  -- ok
+ALTER SYSTEM RESET restore_command;  -- ok
+-- PGC_SIGHUP / WAL_ARCHIVING
+SET archive_command = '/bin/archive my stuff';  -- fail, requires reload
+ERROR:  parameter "archive_command" cannot be changed now
+RESET archive_command;  -- fail, requires reload
+ERROR:  parameter "archive_command" cannot be changed now
+ALTER SYSTEM SET archive_command = '/bin/archive my stuff';  -- ok
+ALTER SYSTEM RESET archive_command;  -- ok
+SET archive_timeout = 50;  -- fail, requires reload
+ERROR:  parameter "archive_timeout" cannot be changed now
+RESET archive_timeout;  -- fail, requires reload
+ERROR:  parameter "archive_timeout" cannot be changed now
+ALTER SYSTEM SET archive_timeout = 50;  -- ok
+ALTER SYSTEM RESET archive_timeout;  -- ok
+-- PGC_SIGHUP / WAL_CHECKPOINTS
+SET checkpoint_completion_target = 0;  -- fail, requires reload
+ERROR:  parameter "checkpoint_completion_target" cannot be changed now
+RESET checkpoint_completion_target;  -- fail, requires reload
+ERROR:  parameter "checkpoint_completion_target" cannot be changed now
+ALTER SYSTEM SET checkpoint_completion_target = 0;  -- ok
+ALTER SYSTEM RESET checkpoint_completion_target;  -- ok
+SET checkpoint_flush_after = 50;  -- fail, requires reload
+ERROR:  parameter "checkpoint_flush_after" cannot be changed now
+RESET checkpoint_flush_after;  -- fail, requires reload
+ERROR:  parameter "checkpoint_flush_after" cannot be changed now
+ALTER SYSTEM SET checkpoint_flush_after = 50;  -- ok
+ALTER SYSTEM RESET checkpoint_flush_after;  -- ok
+SET checkpoint_timeout = 50;  -- fail, requires reload
+ERROR:  parameter "checkpoint_timeout" cannot be changed now
+RESET checkpoint_timeout;  -- fail, requires reload
+ERROR:  parameter "checkpoint_timeout" cannot be changed now
+ALTER SYSTEM SET checkpoint_timeout = 50;  -- ok
+ALTER SYSTEM RESET checkpoint_timeout;  -- ok
+SET checkpoint_warning = 50;  -- fail, requires reload
+ERROR:  parameter "checkpoint_warning" cannot be changed now
+RESET checkpoint_warning;  -- fail, requires reload
+ERROR:  parameter "checkpoint_warning" cannot be changed now
+ALTER SYSTEM SET checkpoint_warning = 50;  -- ok
+ALTER SYSTEM RESET checkpoint_warning;  -- ok
+SET max_wal_size = 50;  -- fail, requires reload
+ERROR:  parameter "max_wal_size" cannot be changed now
+RESET max_wal_size;  -- fail, requires reload
+ERROR:  parameter "max_wal_size" cannot be changed now
+ALTER SYSTEM SET max_wal_size = 50;  -- ok
+ALTER SYSTEM RESET max_wal_size;  -- ok
+SET min_wal_size = 50;  -- fail, requires reload
+ERROR:  parameter "min_wal_size" cannot be changed now
+RESET min_wal_size;  -- fail, requires reload
+ERROR:  parameter "min_wal_size" cannot be changed now
+ALTER SYSTEM SET min_wal_size = 50;  -- ok
+ALTER SYSTEM RESET min_wal_size;  -- ok
+-- PGC_SIGHUP / WAL_SETTINGS
+SET fsync = OFF;  -- fail, requires reload
+ERROR:  parameter "fsync" cannot be changed now
+RESET fsync;  -- fail, requires reload
+ERROR:  parameter "fsync" cannot be changed now
+ALTER SYSTEM SET fsync = OFF;  -- ok
+ALTER SYSTEM RESET fsync;  -- ok
+SET full_page_writes = OFF;  -- fail, requires reload
+ERROR:  parameter "full_page_writes" cannot be changed now
+RESET full_page_writes;  -- fail, requires reload
+ERROR:  parameter "full_page_writes" cannot be changed now
+ALTER SYSTEM SET full_page_writes = OFF;  -- ok
+ALTER SYSTEM RESET full_page_writes;  -- ok
+SET wal_sync_method = 'open_datasync';  -- fail, requires reload
+ERROR:  parameter "wal_sync_method" cannot be changed now
+RESET wal_sync_method;  -- fail, requires reload
+ERROR:  parameter "wal_sync_method" cannot be changed now
+ALTER SYSTEM SET wal_sync_method = 'open_datasync';  -- ok
+ALTER SYSTEM RESET wal_sync_method;  -- ok
+SET wal_writer_delay = 50;  -- fail, requires reload
+ERROR:  parameter "wal_writer_delay" cannot be changed now
+RESET wal_writer_delay;  -- fail, requires reload
+ERROR:  parameter "wal_writer_delay" cannot be changed now
+ALTER SYSTEM SET wal_writer_delay = 50;  -- ok
+ALTER SYSTEM RESET wal_writer_delay;  -- ok
+SET wal_writer_flush_after = 50;  -- fail, requires reload
+ERROR:  parameter "wal_writer_flush_after" cannot be changed now
+RESET wal_writer_flush_after;  -- fail, requires reload
+ERROR:  parameter "wal_writer_flush_after" cannot be changed now
+ALTER SYSTEM SET wal_writer_flush_after = 50;  -- ok
+ALTER SYSTEM RESET wal_writer_flush_after;  -- ok
+-- PGC_SUSET / CLIENT_CONN_LOCALE
+SET lc_messages = 'en_US.UTF-8';  -- ok
+RESET lc_messages;  -- ok
+ALTER SYSTEM SET lc_messages = 'en_US.UTF-8';  -- ok
+ALTER SYSTEM RESET lc_messages;  -- ok
+-- PGC_SUSET / CLIENT_CONN_OTHER
+SET dynamic_library_path = '$libdir';  -- ok
+RESET dynamic_library_path;  -- ok
+ALTER SYSTEM SET dynamic_library_path = '$libdir';  -- ok
+ALTER SYSTEM RESET dynamic_library_path;  -- ok
+-- PGC_SUSET / CLIENT_CONN_PRELOAD
+SET session_preload_libraries = 'gssapi_krb5';  -- ok
+RESET session_preload_libraries;  -- ok
+ALTER SYSTEM SET session_preload_libraries = 'gssapi_krb5';  -- ok
+ALTER SYSTEM RESET session_preload_libraries;  -- ok
+-- PGC_SUSET / CLIENT_CONN_STATEMENT
+SET session_replication_role = 'origin';  -- ok
+RESET session_replication_role;  -- ok
+ALTER SYSTEM SET session_replication_role = 'origin';  -- ok
+ALTER SYSTEM RESET session_replication_role;  -- ok
+-- PGC_SUSET / COMPAT_OPTIONS_PREVIOUS
+SET lo_compat_privileges = OFF;  -- ok
+RESET lo_compat_privileges;  -- ok
+ALTER SYSTEM SET lo_compat_privileges = OFF;  -- ok
+ALTER SYSTEM RESET lo_compat_privileges;  -- ok
+-- PGC_SUSET / DEVELOPER_OPTIONS
+SET allow_system_table_mods = OFF;  -- ok
+RESET allow_system_table_mods;  -- ok
+ALTER SYSTEM SET allow_system_table_mods = OFF;  -- ok
+ALTER SYSTEM RESET allow_system_table_mods;  -- ok
+SET backtrace_functions = 'partition_list_bsearch,partition_range_datum_bsearch,partition_hash_bsearch';  -- ok
+RESET backtrace_functions;  -- ok
+ALTER SYSTEM SET backtrace_functions = 'partition_list_bsearch,partition_range_datum_bsearch,partition_hash_bsearch';  -- ok
+ALTER SYSTEM RESET backtrace_functions;  -- ok
+SET debug_discard_caches = 2;  -- ok
+RESET debug_discard_caches;  -- ok
+ALTER SYSTEM SET debug_discard_caches = 2;  -- ok
+ALTER SYSTEM RESET debug_discard_caches;  -- ok
+SET ignore_checksum_failure = OFF;  -- ok
+RESET ignore_checksum_failure;  -- ok
+ALTER SYSTEM SET ignore_checksum_failure = OFF;  -- ok
+ALTER SYSTEM RESET ignore_checksum_failure;  -- ok
+SET jit_dump_bitcode = OFF;  -- ok
+RESET jit_dump_bitcode;  -- ok
+ALTER SYSTEM SET jit_dump_bitcode = OFF;  -- ok
+ALTER SYSTEM RESET jit_dump_bitcode;  -- ok
+SET wal_consistency_checking = 'heap, heap2, btree, hash, gin, gist, sequence, spgist, brin, generic';  -- ok
+RESET wal_consistency_checking;  -- ok
+ALTER SYSTEM SET wal_consistency_checking = 'heap, heap2, btree, hash, gin, gist, sequence, spgist, brin, generic';  -- ok
+ALTER SYSTEM RESET wal_consistency_checking;  -- ok
+SET zero_damaged_pages = OFF;  -- ok
+RESET zero_damaged_pages;  -- ok
+ALTER SYSTEM SET zero_damaged_pages = OFF;  -- ok
+ALTER SYSTEM RESET zero_damaged_pages;  -- ok
+-- PGC_SUSET / LOCK_MANAGEMENT
+SET deadlock_timeout = 1073741824;  -- ok
+RESET deadlock_timeout;  -- ok
+ALTER SYSTEM SET deadlock_timeout = 1073741824;  -- ok
+ALTER SYSTEM RESET deadlock_timeout;  -- ok
+-- PGC_SUSET / LOGGING_WHAT
+SET log_duration = OFF;  -- ok
+RESET log_duration;  -- ok
+ALTER SYSTEM SET log_duration = OFF;  -- ok
+ALTER SYSTEM RESET log_duration;  -- ok
+SET log_error_verbosity = 'default';  -- ok
+RESET log_error_verbosity;  -- ok
+ALTER SYSTEM SET log_error_verbosity = 'default';  -- ok
+ALTER SYSTEM RESET log_error_verbosity;  -- ok
+SET log_lock_waits = OFF;  -- ok
+RESET log_lock_waits;  -- ok
+ALTER SYSTEM SET log_lock_waits = OFF;  -- ok
+ALTER SYSTEM RESET log_lock_waits;  -- ok
+SET log_parameter_max_length = 50;  -- ok
+RESET log_parameter_max_length;  -- ok
+ALTER SYSTEM SET log_parameter_max_length = 50;  -- ok
+ALTER SYSTEM RESET log_parameter_max_length;  -- ok
+SET log_replication_commands = OFF;  -- ok
+RESET log_replication_commands;  -- ok
+ALTER SYSTEM SET log_replication_commands = OFF;  -- ok
+ALTER SYSTEM RESET log_replication_commands;  -- ok
+SET log_statement = 'none';  -- ok
+RESET log_statement;  -- ok
+ALTER SYSTEM SET log_statement = 'none';  -- ok
+ALTER SYSTEM RESET log_statement;  -- ok
+SET log_temp_files = 50;  -- ok
+RESET log_temp_files;  -- ok
+ALTER SYSTEM SET log_temp_files = 50;  -- ok
+ALTER SYSTEM RESET log_temp_files;  -- ok
+-- PGC_SUSET / LOGGING_WHEN
+SET log_min_duration_sample = 50;  -- ok
+RESET log_min_duration_sample;  -- ok
+ALTER SYSTEM SET log_min_duration_sample = 50;  -- ok
+ALTER SYSTEM RESET log_min_duration_sample;  -- ok
+SET log_min_duration_statement = 50;  -- ok
+RESET log_min_duration_statement;  -- ok
+ALTER SYSTEM SET log_min_duration_statement = 50;  -- ok
+ALTER SYSTEM RESET log_min_duration_statement;  -- ok
+SET log_min_error_statement = 'error';  -- ok
+RESET log_min_error_statement;  -- ok
+ALTER SYSTEM SET log_min_error_statement = 'error';  -- ok
+ALTER SYSTEM RESET log_min_error_statement;  -- ok
+SET log_min_messages = 'warning';  -- ok
+RESET log_min_messages;  -- ok
+ALTER SYSTEM SET log_min_messages = 'warning';  -- ok
+ALTER SYSTEM RESET log_min_messages;  -- ok
+SET log_statement_sample_rate = 0;  -- ok
+RESET log_statement_sample_rate;  -- ok
+ALTER SYSTEM SET log_statement_sample_rate = 0;  -- ok
+ALTER SYSTEM RESET log_statement_sample_rate;  -- ok
+SET log_transaction_sample_rate = 0;  -- ok
+RESET log_transaction_sample_rate;  -- ok
+ALTER SYSTEM SET log_transaction_sample_rate = 0;  -- ok
+ALTER SYSTEM RESET log_transaction_sample_rate;  -- ok
+-- PGC_SUSET / PROCESS_TITLE
+SET update_process_title = OFF;  -- ok
+RESET update_process_title;  -- ok
+ALTER SYSTEM SET update_process_title = OFF;  -- ok
+ALTER SYSTEM RESET update_process_title;  -- ok
+-- PGC_SUSET / RESOURCES_DISK
+SET temp_file_limit = 50;  -- ok
+RESET temp_file_limit;  -- ok
+ALTER SYSTEM SET temp_file_limit = 50;  -- ok
+ALTER SYSTEM RESET temp_file_limit;  -- ok
+-- PGC_SUSET / RESOURCES_MEM
+SET max_stack_depth = 3890;  -- ok
+RESET max_stack_depth;  -- ok
+ALTER SYSTEM SET max_stack_depth = 3890;  -- ok
+ALTER SYSTEM RESET max_stack_depth;  -- ok
+-- PGC_SUSET / STATS_COLLECTOR
+SET track_activities = OFF;  -- ok
+RESET track_activities;  -- ok
+ALTER SYSTEM SET track_activities = OFF;  -- ok
+ALTER SYSTEM RESET track_activities;  -- ok
+SET track_counts = OFF;  -- ok
+RESET track_counts;  -- ok
+ALTER SYSTEM SET track_counts = OFF;  -- ok
+ALTER SYSTEM RESET track_counts;  -- ok
+SET track_functions = 'none';  -- ok
+RESET track_functions;  -- ok
+ALTER SYSTEM SET track_functions = 'none';  -- ok
+ALTER SYSTEM RESET track_functions;  -- ok
+SET track_io_timing = OFF;  -- ok
+RESET track_io_timing;  -- ok
+ALTER SYSTEM SET track_io_timing = OFF;  -- ok
+ALTER SYSTEM RESET track_io_timing;  -- ok
+SET track_wal_io_timing = OFF;  -- ok
+RESET track_wal_io_timing;  -- ok
+ALTER SYSTEM SET track_wal_io_timing = OFF;  -- ok
+ALTER SYSTEM RESET track_wal_io_timing;  -- ok
+-- PGC_SUSET / STATS_MONITORING
+SET compute_query_id = 'auto';  -- ok
+RESET compute_query_id;  -- ok
+ALTER SYSTEM SET compute_query_id = 'auto';  -- ok
+ALTER SYSTEM RESET compute_query_id;  -- ok
+SET log_executor_stats = OFF;  -- ok
+RESET log_executor_stats;  -- ok
+ALTER SYSTEM SET log_executor_stats = OFF;  -- ok
+ALTER SYSTEM RESET log_executor_stats;  -- ok
+SET log_parser_stats = OFF;  -- ok
+RESET log_parser_stats;  -- ok
+ALTER SYSTEM SET log_parser_stats = OFF;  -- ok
+ALTER SYSTEM RESET log_parser_stats;  -- ok
+SET log_planner_stats = OFF;  -- ok
+RESET log_planner_stats;  -- ok
+ALTER SYSTEM SET log_planner_stats = OFF;  -- ok
+ALTER SYSTEM RESET log_planner_stats;  -- ok
+SET log_statement_stats = OFF;  -- ok
+RESET log_statement_stats;  -- ok
+ALTER SYSTEM SET log_statement_stats = OFF;  -- ok
+ALTER SYSTEM RESET log_statement_stats;  -- ok
+-- PGC_SUSET / WAL_SETTINGS
+SET commit_delay = 50;  -- ok
+RESET commit_delay;  -- ok
+ALTER SYSTEM SET commit_delay = 50;  -- ok
+ALTER SYSTEM RESET commit_delay;  -- ok
+SET wal_compression = 'pglz';  -- ok
+RESET wal_compression;  -- ok
+ALTER SYSTEM SET wal_compression = 'pglz';  -- ok
+ALTER SYSTEM RESET wal_compression;  -- ok
+SET wal_init_zero = OFF;  -- ok
+RESET wal_init_zero;  -- ok
+ALTER SYSTEM SET wal_init_zero = OFF;  -- ok
+ALTER SYSTEM RESET wal_init_zero;  -- ok
+SET wal_recycle = OFF;  -- ok
+RESET wal_recycle;  -- ok
+ALTER SYSTEM SET wal_recycle = OFF;  -- ok
+ALTER SYSTEM RESET wal_recycle;  -- ok
+-- PGC_SU_BACKEND / DEVELOPER_OPTIONS
+SET jit_debugging_support = OFF;  -- fail, cannot be set after connection start
+ERROR:  parameter "jit_debugging_support" cannot be set after connection start
+RESET jit_debugging_support;  -- fail, cannot be set after connection start
+ERROR:  parameter "jit_debugging_support" cannot be set after connection start
+ALTER SYSTEM SET jit_debugging_support = OFF;  -- ok
+ALTER SYSTEM RESET jit_debugging_support;  -- ok
+SET jit_profiling_support = OFF;  -- fail, cannot be set after connection start
+ERROR:  parameter "jit_profiling_support" cannot be set after connection start
+RESET jit_profiling_support;  -- fail, cannot be set after connection start
+ERROR:  parameter "jit_profiling_support" cannot be set after connection start
+ALTER SYSTEM SET jit_profiling_support = OFF;  -- ok
+ALTER SYSTEM RESET jit_profiling_support;  -- ok
+-- PGC_SU_BACKEND / LOGGING_WHAT
+SET log_connections = OFF;  -- fail, cannot be set after connection start
+ERROR:  parameter "log_connections" cannot be set after connection start
+RESET log_connections;  -- fail, cannot be set after connection start
+ERROR:  parameter "log_connections" cannot be set after connection start
+ALTER SYSTEM SET log_connections = OFF;  -- ok
+ALTER SYSTEM RESET log_connections;  -- ok
+SET log_disconnections = OFF;  -- fail, cannot be set after connection start
+ERROR:  parameter "log_disconnections" cannot be set after connection start
+RESET log_disconnections;  -- fail, cannot be set after connection start
+ERROR:  parameter "log_disconnections" cannot be set after connection start
+ALTER SYSTEM SET log_disconnections = OFF;  -- ok
+ALTER SYSTEM RESET log_disconnections;  -- ok
+-- PGC_USERSET / CLIENT_CONN_LOCALE
+SET DateStyle = 'ISO, MDY';  -- ok
+RESET DateStyle;  -- ok
+ALTER SYSTEM SET DateStyle = 'ISO, MDY';  -- ok
+ALTER SYSTEM RESET DateStyle;  -- ok
+SET IntervalStyle = 'postgres';  -- ok
+RESET IntervalStyle;  -- ok
+ALTER SYSTEM SET IntervalStyle = 'postgres';  -- ok
+ALTER SYSTEM RESET IntervalStyle;  -- ok
+SET TimeZone = 'Europe/Helsinki';  -- ok
+RESET TimeZone;  -- ok
+ALTER SYSTEM SET TimeZone = 'Europe/Helsinki';  -- ok
+ALTER SYSTEM RESET TimeZone;  -- ok
+SET client_encoding = 'UTF8';  -- ok
+RESET client_encoding;  -- ok
+ALTER SYSTEM SET client_encoding = 'UTF8';  -- ok
+ALTER SYSTEM RESET client_encoding;  -- ok
+SET default_text_search_config = 'pg_catalog.english';  -- ok
+RESET default_text_search_config;  -- ok
+ALTER SYSTEM SET default_text_search_config = 'pg_catalog.english';  -- ok
+ALTER SYSTEM RESET default_text_search_config;  -- ok
+SET extra_float_digits = -6;  -- ok
+RESET extra_float_digits;  -- ok
+ALTER SYSTEM SET extra_float_digits = -6;  -- ok
+ALTER SYSTEM RESET extra_float_digits;  -- ok
+SET lc_monetary = 'en_US.UTF-8';  -- ok
+RESET lc_monetary;  -- ok
+ALTER SYSTEM SET lc_monetary = 'en_US.UTF-8';  -- ok
+ALTER SYSTEM RESET lc_monetary;  -- ok
+SET lc_numeric = 'en_US.UTF-8';  -- ok
+RESET lc_numeric;  -- ok
+ALTER SYSTEM SET lc_numeric = 'en_US.UTF-8';  -- ok
+ALTER SYSTEM RESET lc_numeric;  -- ok
+SET lc_time = 'en_US.UTF-8';  -- ok
+RESET lc_time;  -- ok
+ALTER SYSTEM SET lc_time = 'en_US.UTF-8';  -- ok
+ALTER SYSTEM RESET lc_time;  -- ok
+SET timezone_abbreviations = 'Default';  -- ok
+RESET timezone_abbreviations;  -- ok
+ALTER SYSTEM SET timezone_abbreviations = 'Default';  -- ok
+ALTER SYSTEM RESET timezone_abbreviations;  -- ok
+-- PGC_USERSET / CLIENT_CONN_OTHER
+SET gin_fuzzy_search_limit = 50;  -- ok
+RESET gin_fuzzy_search_limit;  -- ok
+ALTER SYSTEM SET gin_fuzzy_search_limit = 50;  -- ok
+ALTER SYSTEM RESET gin_fuzzy_search_limit;  -- ok
+-- PGC_USERSET / CLIENT_CONN_PRELOAD
+SET local_preload_libraries = 'gssapi_krb5';  -- ok
+RESET local_preload_libraries;  -- ok
+ALTER SYSTEM SET local_preload_libraries = 'gssapi_krb5';  -- ok
+ALTER SYSTEM RESET local_preload_libraries;  -- ok
+-- PGC_USERSET / CLIENT_CONN_STATEMENT
+SET bytea_output = 'hex';  -- ok
+RESET bytea_output;  -- ok
+ALTER SYSTEM SET bytea_output = 'hex';  -- ok
+ALTER SYSTEM RESET bytea_output;  -- ok
+SET check_function_bodies = OFF;  -- ok
+RESET check_function_bodies;  -- ok
+ALTER SYSTEM SET check_function_bodies = OFF;  -- ok
+ALTER SYSTEM RESET check_function_bodies;  -- ok
+SET client_min_messages = 'notice';  -- ok
+RESET client_min_messages;  -- ok
+ALTER SYSTEM SET client_min_messages = 'notice';  -- ok
+ALTER SYSTEM RESET client_min_messages;  -- ok
+SET default_table_access_method = 'heap';  -- ok
+RESET default_table_access_method;  -- ok
+ALTER SYSTEM SET default_table_access_method = 'heap';  -- ok
+ALTER SYSTEM RESET default_table_access_method;  -- ok
+SET default_toast_compression = 'pglz';  -- ok
+RESET default_toast_compression;  -- ok
+ALTER SYSTEM SET default_toast_compression = 'pglz';  -- ok
+ALTER SYSTEM RESET default_toast_compression;  -- ok
+SET default_transaction_deferrable = OFF;  -- ok
+RESET default_transaction_deferrable;  -- ok
+ALTER SYSTEM SET default_transaction_deferrable = OFF;  -- ok
+ALTER SYSTEM RESET default_transaction_deferrable;  -- ok
+SET default_transaction_isolation = 'read committed';  -- ok
+RESET default_transaction_isolation;  -- ok
+ALTER SYSTEM SET default_transaction_isolation = 'read committed';  -- ok
+ALTER SYSTEM RESET default_transaction_isolation;  -- ok
+SET default_transaction_read_only = OFF;  -- ok
+RESET default_transaction_read_only;  -- ok
+ALTER SYSTEM SET default_transaction_read_only = OFF;  -- ok
+ALTER SYSTEM RESET default_transaction_read_only;  -- ok
+SET gin_pending_list_limit = 1073741855;  -- ok
+RESET gin_pending_list_limit;  -- ok
+ALTER SYSTEM SET gin_pending_list_limit = 1073741855;  -- ok
+ALTER SYSTEM RESET gin_pending_list_limit;  -- ok
+SET idle_in_transaction_session_timeout = 50;  -- ok
+RESET idle_in_transaction_session_timeout;  -- ok
+ALTER SYSTEM SET idle_in_transaction_session_timeout = 50;  -- ok
+ALTER SYSTEM RESET idle_in_transaction_session_timeout;  -- ok
+SET idle_session_timeout = 50;  -- ok
+RESET idle_session_timeout;  -- ok
+ALTER SYSTEM SET idle_session_timeout = 50;  -- ok
+ALTER SYSTEM RESET idle_session_timeout;  -- ok
+SET lock_timeout = 50;  -- ok
+RESET lock_timeout;  -- ok
+ALTER SYSTEM SET lock_timeout = 50;  -- ok
+ALTER SYSTEM RESET lock_timeout;  -- ok
+SET row_security = OFF;  -- ok
+RESET row_security;  -- ok
+ALTER SYSTEM SET row_security = OFF;  -- ok
+ALTER SYSTEM RESET row_security;  -- ok
+SET search_path = '"$user", public';  -- ok
+RESET search_path;  -- ok
+ALTER SYSTEM SET search_path = '"$user", public';  -- ok
+ALTER SYSTEM RESET search_path;  -- ok
+SET statement_timeout = 5250;  -- ok
+RESET statement_timeout;  -- ok
+ALTER SYSTEM SET statement_timeout = 5250;  -- ok
+ALTER SYSTEM RESET statement_timeout;  -- ok
+SET transaction_deferrable = OFF;  -- ok
+RESET transaction_deferrable;  -- ok
+ALTER SYSTEM SET transaction_deferrable = OFF;  -- fail, cannot be changed
+ERROR:  parameter "transaction_deferrable" cannot be changed
+ALTER SYSTEM RESET transaction_deferrable;  -- fail, cannot be changed
+ERROR:  parameter "transaction_deferrable" cannot be changed
+SET transaction_read_only = OFF;  -- ok
+RESET transaction_read_only;  -- ok
+ALTER SYSTEM SET transaction_read_only = OFF;  -- fail, cannot be changed
+ERROR:  parameter "transaction_read_only" cannot be changed
+ALTER SYSTEM RESET transaction_read_only;  -- fail, cannot be changed
+ERROR:  parameter "transaction_read_only" cannot be changed
+SET vacuum_failsafe_age = 50;  -- ok
+RESET vacuum_failsafe_age;  -- ok
+ALTER SYSTEM SET vacuum_failsafe_age = 50;  -- ok
+ALTER SYSTEM RESET vacuum_failsafe_age;  -- ok
+SET vacuum_freeze_min_age = 50;  -- ok
+RESET vacuum_freeze_min_age;  -- ok
+ALTER SYSTEM SET vacuum_freeze_min_age = 50;  -- ok
+ALTER SYSTEM RESET vacuum_freeze_min_age;  -- ok
+SET vacuum_freeze_table_age = 50;  -- ok
+RESET vacuum_freeze_table_age;  -- ok
+ALTER SYSTEM SET vacuum_freeze_table_age = 50;  -- ok
+ALTER SYSTEM RESET vacuum_freeze_table_age;  -- ok
+SET vacuum_multixact_failsafe_age = 50;  -- ok
+RESET vacuum_multixact_failsafe_age;  -- ok
+ALTER SYSTEM SET vacuum_multixact_failsafe_age = 50;  -- ok
+ALTER SYSTEM RESET vacuum_multixact_failsafe_age;  -- ok
+SET vacuum_multixact_freeze_min_age = 50;  -- ok
+RESET vacuum_multixact_freeze_min_age;  -- ok
+ALTER SYSTEM SET vacuum_multixact_freeze_min_age = 50;  -- ok
+ALTER SYSTEM RESET vacuum_multixact_freeze_min_age;  -- ok
+SET vacuum_multixact_freeze_table_age = 50;  -- ok
+RESET vacuum_multixact_freeze_table_age;  -- ok
+ALTER SYSTEM SET vacuum_multixact_freeze_table_age = 50;  -- ok
+ALTER SYSTEM RESET vacuum_multixact_freeze_table_age;  -- ok
+SET xmlbinary = 'base64';  -- ok
+RESET xmlbinary;  -- ok
+ALTER SYSTEM SET xmlbinary = 'base64';  -- ok
+ALTER SYSTEM RESET xmlbinary;  -- ok
+SET xmloption = 'content';  -- ok
+RESET xmloption;  -- ok
+ALTER SYSTEM SET xmloption = 'content';  -- ok
+ALTER SYSTEM RESET xmloption;  -- ok
+-- PGC_USERSET / COMPAT_OPTIONS_PREVIOUS
+SET array_nulls = OFF;  -- ok
+RESET array_nulls;  -- ok
+ALTER SYSTEM SET array_nulls = OFF;  -- ok
+ALTER SYSTEM RESET array_nulls;  -- ok
+SET escape_string_warning = OFF;  -- ok
+RESET escape_string_warning;  -- ok
+ALTER SYSTEM SET escape_string_warning = OFF;  -- ok
+ALTER SYSTEM RESET escape_string_warning;  -- ok
+SET quote_all_identifiers = OFF;  -- ok
+RESET quote_all_identifiers;  -- ok
+ALTER SYSTEM SET quote_all_identifiers = OFF;  -- ok
+ALTER SYSTEM RESET quote_all_identifiers;  -- ok
+SET standard_conforming_strings = OFF;  -- ok
+RESET standard_conforming_strings;  -- ok
+ALTER SYSTEM SET standard_conforming_strings = OFF;  -- ok
+ALTER SYSTEM RESET standard_conforming_strings;  -- ok
+SET synchronize_seqscans = OFF;  -- ok
+RESET synchronize_seqscans;  -- ok
+ALTER SYSTEM SET synchronize_seqscans = OFF;  -- ok
+ALTER SYSTEM RESET synchronize_seqscans;  -- ok
+-- PGC_USERSET / CONN_AUTH_AUTH
+SET password_encryption = 'scram-sha-256';  -- ok
+RESET password_encryption;  -- ok
+ALTER SYSTEM SET password_encryption = 'scram-sha-256';  -- ok
+ALTER SYSTEM RESET password_encryption;  -- ok
+-- PGC_USERSET / CONN_AUTH_SETTINGS
+SET client_connection_check_interval = 0;  -- ok
+RESET client_connection_check_interval;  -- ok
+ALTER SYSTEM SET client_connection_check_interval = 0;  -- ok
+ALTER SYSTEM RESET client_connection_check_interval;  -- ok
+SET tcp_keepalives_count = 50;  -- ok
+RESET tcp_keepalives_count;  -- ok
+ALTER SYSTEM SET tcp_keepalives_count = 50;  -- ok
+ALTER SYSTEM RESET tcp_keepalives_count;  -- ok
+SET tcp_keepalives_idle = 50;  -- ok
+RESET tcp_keepalives_idle;  -- ok
+ALTER SYSTEM SET tcp_keepalives_idle = 50;  -- ok
+ALTER SYSTEM RESET tcp_keepalives_idle;  -- ok
+SET tcp_keepalives_interval = 50;  -- ok
+RESET tcp_keepalives_interval;  -- ok
+ALTER SYSTEM SET tcp_keepalives_interval = 50;  -- ok
+ALTER SYSTEM RESET tcp_keepalives_interval;  -- ok
+SET tcp_user_timeout = 50;  -- ok
+RESET tcp_user_timeout;  -- ok
+ALTER SYSTEM SET tcp_user_timeout = 50;  -- ok
+ALTER SYSTEM RESET tcp_user_timeout;  -- ok
+-- PGC_USERSET / CONN_AUTH_SSL
+SET ssl_renegotiation_limit = 0;  -- ok
+RESET ssl_renegotiation_limit;  -- ok
+ALTER SYSTEM SET ssl_renegotiation_limit = 0;  -- fail, cannot be changed
+ERROR:  parameter "ssl_renegotiation_limit" cannot be changed
+ALTER SYSTEM RESET ssl_renegotiation_limit;  -- fail, cannot be changed
+ERROR:  parameter "ssl_renegotiation_limit" cannot be changed
+-- PGC_USERSET / DEVELOPER_OPTIONS
+SET force_parallel_mode = 'off';  -- ok
+RESET force_parallel_mode;  -- ok
+ALTER SYSTEM SET force_parallel_mode = 'off';  -- ok
+ALTER SYSTEM RESET force_parallel_mode;  -- ok
+SET jit_expressions = OFF;  -- ok
+RESET jit_expressions;  -- ok
+ALTER SYSTEM SET jit_expressions = OFF;  -- ok
+ALTER SYSTEM RESET jit_expressions;  -- ok
+SET jit_tuple_deforming = OFF;  -- ok
+RESET jit_tuple_deforming;  -- ok
+ALTER SYSTEM SET jit_tuple_deforming = OFF;  -- ok
+ALTER SYSTEM RESET jit_tuple_deforming;  -- ok
+SET trace_notify = OFF;  -- ok
+RESET trace_notify;  -- ok
+ALTER SYSTEM SET trace_notify = OFF;  -- ok
+ALTER SYSTEM RESET trace_notify;  -- ok
+SET trace_sort = OFF;  -- ok
+RESET trace_sort;  -- ok
+ALTER SYSTEM SET trace_sort = OFF;  -- ok
+ALTER SYSTEM RESET trace_sort;  -- ok
+-- PGC_USERSET / ERROR_HANDLING_OPTIONS
+SET exit_on_error = OFF;  -- ok
+RESET exit_on_error;  -- ok
+ALTER SYSTEM SET exit_on_error = OFF;  -- ok
+ALTER SYSTEM RESET exit_on_error;  -- ok
+-- PGC_USERSET / LOGGING_WHAT
+SET application_name = 'psql';  -- ok
+RESET application_name;  -- ok
+ALTER SYSTEM SET application_name = 'psql';  -- ok
+ALTER SYSTEM RESET application_name;  -- ok
+SET debug_pretty_print = OFF;  -- ok
+RESET debug_pretty_print;  -- ok
+ALTER SYSTEM SET debug_pretty_print = OFF;  -- ok
+ALTER SYSTEM RESET debug_pretty_print;  -- ok
+SET debug_print_parse = OFF;  -- ok
+RESET debug_print_parse;  -- ok
+ALTER SYSTEM SET debug_print_parse = OFF;  -- ok
+ALTER SYSTEM RESET debug_print_parse;  -- ok
+SET debug_print_plan = OFF;  -- ok
+RESET debug_print_plan;  -- ok
+ALTER SYSTEM SET debug_print_plan = OFF;  -- ok
+ALTER SYSTEM RESET debug_print_plan;  -- ok
+SET debug_print_rewritten = OFF;  -- ok
+RESET debug_print_rewritten;  -- ok
+ALTER SYSTEM SET debug_print_rewritten = OFF;  -- ok
+ALTER SYSTEM RESET debug_print_rewritten;  -- ok
+SET log_parameter_max_length_on_error = 50;  -- ok
+RESET log_parameter_max_length_on_error;  -- ok
+ALTER SYSTEM SET log_parameter_max_length_on_error = 50;  -- ok
+ALTER SYSTEM RESET log_parameter_max_length_on_error;  -- ok
+-- PGC_USERSET / QUERY_TUNING_COST
+SET cpu_index_tuple_cost = 50;  -- ok
+RESET cpu_index_tuple_cost;  -- ok
+ALTER SYSTEM SET cpu_index_tuple_cost = 50;  -- ok
+ALTER SYSTEM RESET cpu_index_tuple_cost;  -- ok
+SET cpu_operator_cost = 50;  -- ok
+RESET cpu_operator_cost;  -- ok
+ALTER SYSTEM SET cpu_operator_cost = 50;  -- ok
+ALTER SYSTEM RESET cpu_operator_cost;  -- ok
+SET cpu_tuple_cost = 50;  -- ok
+RESET cpu_tuple_cost;  -- ok
+ALTER SYSTEM SET cpu_tuple_cost = 50;  -- ok
+ALTER SYSTEM RESET cpu_tuple_cost;  -- ok
+SET effective_cache_size = 1073741824;  -- ok
+RESET effective_cache_size;  -- ok
+ALTER SYSTEM SET effective_cache_size = 1073741824;  -- ok
+ALTER SYSTEM RESET effective_cache_size;  -- ok
+SET jit_above_cost = 50;  -- ok
+RESET jit_above_cost;  -- ok
+ALTER SYSTEM SET jit_above_cost = 50;  -- ok
+ALTER SYSTEM RESET jit_above_cost;  -- ok
+SET jit_inline_above_cost = 50;  -- ok
+RESET jit_inline_above_cost;  -- ok
+ALTER SYSTEM SET jit_inline_above_cost = 50;  -- ok
+ALTER SYSTEM RESET jit_inline_above_cost;  -- ok
+SET jit_optimize_above_cost = 50;  -- ok
+RESET jit_optimize_above_cost;  -- ok
+ALTER SYSTEM SET jit_optimize_above_cost = 50;  -- ok
+ALTER SYSTEM RESET jit_optimize_above_cost;  -- ok
+SET min_parallel_index_scan_size = 50;  -- ok
+RESET min_parallel_index_scan_size;  -- ok
+ALTER SYSTEM SET min_parallel_index_scan_size = 50;  -- ok
+ALTER SYSTEM RESET min_parallel_index_scan_size;  -- ok
+SET min_parallel_table_scan_size = 50;  -- ok
+RESET min_parallel_table_scan_size;  -- ok
+ALTER SYSTEM SET min_parallel_table_scan_size = 50;  -- ok
+ALTER SYSTEM RESET min_parallel_table_scan_size;  -- ok
+SET parallel_setup_cost = 50;  -- ok
+RESET parallel_setup_cost;  -- ok
+ALTER SYSTEM SET parallel_setup_cost = 50;  -- ok
+ALTER SYSTEM RESET parallel_setup_cost;  -- ok
+SET parallel_tuple_cost = 50;  -- ok
+RESET parallel_tuple_cost;  -- ok
+ALTER SYSTEM SET parallel_tuple_cost = 50;  -- ok
+ALTER SYSTEM RESET parallel_tuple_cost;  -- ok
+SET random_page_cost = 50;  -- ok
+RESET random_page_cost;  -- ok
+ALTER SYSTEM SET random_page_cost = 50;  -- ok
+ALTER SYSTEM RESET random_page_cost;  -- ok
+SET seq_page_cost = 50;  -- ok
+RESET seq_page_cost;  -- ok
+ALTER SYSTEM SET seq_page_cost = 50;  -- ok
+ALTER SYSTEM RESET seq_page_cost;  -- ok
+-- PGC_USERSET / QUERY_TUNING_GEQO
+SET geqo = OFF;  -- ok
+RESET geqo;  -- ok
+ALTER SYSTEM SET geqo = OFF;  -- ok
+ALTER SYSTEM RESET geqo;  -- ok
+SET geqo_effort = 5;  -- ok
+RESET geqo_effort;  -- ok
+ALTER SYSTEM SET geqo_effort = 5;  -- ok
+ALTER SYSTEM RESET geqo_effort;  -- ok
+SET geqo_generations = 50;  -- ok
+RESET geqo_generations;  -- ok
+ALTER SYSTEM SET geqo_generations = 50;  -- ok
+ALTER SYSTEM RESET geqo_generations;  -- ok
+SET geqo_pool_size = 50;  -- ok
+RESET geqo_pool_size;  -- ok
+ALTER SYSTEM SET geqo_pool_size = 50;  -- ok
+ALTER SYSTEM RESET geqo_pool_size;  -- ok
+SET geqo_seed = 0;  -- ok
+RESET geqo_seed;  -- ok
+ALTER SYSTEM SET geqo_seed = 0;  -- ok
+ALTER SYSTEM RESET geqo_seed;  -- ok
+SET geqo_selection_bias = 2;  -- ok
+RESET geqo_selection_bias;  -- ok
+ALTER SYSTEM SET geqo_selection_bias = 2;  -- ok
+ALTER SYSTEM RESET geqo_selection_bias;  -- ok
+SET geqo_threshold = 1073741824;  -- ok
+RESET geqo_threshold;  -- ok
+ALTER SYSTEM SET geqo_threshold = 1073741824;  -- ok
+ALTER SYSTEM RESET geqo_threshold;  -- ok
+-- PGC_USERSET / QUERY_TUNING_METHOD
+SET enable_async_append = OFF;  -- ok
+RESET enable_async_append;  -- ok
+ALTER SYSTEM SET enable_async_append = OFF;  -- ok
+ALTER SYSTEM RESET enable_async_append;  -- ok
+SET enable_bitmapscan = OFF;  -- ok
+RESET enable_bitmapscan;  -- ok
+ALTER SYSTEM SET enable_bitmapscan = OFF;  -- ok
+ALTER SYSTEM RESET enable_bitmapscan;  -- ok
+SET enable_gathermerge = OFF;  -- ok
+RESET enable_gathermerge;  -- ok
+ALTER SYSTEM SET enable_gathermerge = OFF;  -- ok
+ALTER SYSTEM RESET enable_gathermerge;  -- ok
+SET enable_hashagg = OFF;  -- ok
+RESET enable_hashagg;  -- ok
+ALTER SYSTEM SET enable_hashagg = OFF;  -- ok
+ALTER SYSTEM RESET enable_hashagg;  -- ok
+SET enable_hashjoin = OFF;  -- ok
+RESET enable_hashjoin;  -- ok
+ALTER SYSTEM SET enable_hashjoin = OFF;  -- ok
+ALTER SYSTEM RESET enable_hashjoin;  -- ok
+SET enable_incremental_sort = OFF;  -- ok
+RESET enable_incremental_sort;  -- ok
+ALTER SYSTEM SET enable_incremental_sort = OFF;  -- ok
+ALTER SYSTEM RESET enable_incremental_sort;  -- ok
+SET enable_indexonlyscan = OFF;  -- ok
+RESET enable_indexonlyscan;  -- ok
+ALTER SYSTEM SET enable_indexonlyscan = OFF;  -- ok
+ALTER SYSTEM RESET enable_indexonlyscan;  -- ok
+SET enable_indexscan = OFF;  -- ok
+RESET enable_indexscan;  -- ok
+ALTER SYSTEM SET enable_indexscan = OFF;  -- ok
+ALTER SYSTEM RESET enable_indexscan;  -- ok
+SET enable_material = OFF;  -- ok
+RESET enable_material;  -- ok
+ALTER SYSTEM SET enable_material = OFF;  -- ok
+ALTER SYSTEM RESET enable_material;  -- ok
+SET enable_memoize = OFF;  -- ok
+RESET enable_memoize;  -- ok
+ALTER SYSTEM SET enable_memoize = OFF;  -- ok
+ALTER SYSTEM RESET enable_memoize;  -- ok
+SET enable_mergejoin = OFF;  -- ok
+RESET enable_mergejoin;  -- ok
+ALTER SYSTEM SET enable_mergejoin = OFF;  -- ok
+ALTER SYSTEM RESET enable_mergejoin;  -- ok
+SET enable_nestloop = OFF;  -- ok
+RESET enable_nestloop;  -- ok
+ALTER SYSTEM SET enable_nestloop = OFF;  -- ok
+ALTER SYSTEM RESET enable_nestloop;  -- ok
+SET enable_parallel_append = OFF;  -- ok
+RESET enable_parallel_append;  -- ok
+ALTER SYSTEM SET enable_parallel_append = OFF;  -- ok
+ALTER SYSTEM RESET enable_parallel_append;  -- ok
+SET enable_parallel_hash = OFF;  -- ok
+RESET enable_parallel_hash;  -- ok
+ALTER SYSTEM SET enable_parallel_hash = OFF;  -- ok
+ALTER SYSTEM RESET enable_parallel_hash;  -- ok
+SET enable_partition_pruning = OFF;  -- ok
+RESET enable_partition_pruning;  -- ok
+ALTER SYSTEM SET enable_partition_pruning = OFF;  -- ok
+ALTER SYSTEM RESET enable_partition_pruning;  -- ok
+SET enable_partitionwise_aggregate = OFF;  -- ok
+RESET enable_partitionwise_aggregate;  -- ok
+ALTER SYSTEM SET enable_partitionwise_aggregate = OFF;  -- ok
+ALTER SYSTEM RESET enable_partitionwise_aggregate;  -- ok
+SET enable_partitionwise_join = OFF;  -- ok
+RESET enable_partitionwise_join;  -- ok
+ALTER SYSTEM SET enable_partitionwise_join = OFF;  -- ok
+ALTER SYSTEM RESET enable_partitionwise_join;  -- ok
+SET enable_seqscan = OFF;  -- ok
+RESET enable_seqscan;  -- ok
+ALTER SYSTEM SET enable_seqscan = OFF;  -- ok
+ALTER SYSTEM RESET enable_seqscan;  -- ok
+SET enable_sort = OFF;  -- ok
+RESET enable_sort;  -- ok
+ALTER SYSTEM SET enable_sort = OFF;  -- ok
+ALTER SYSTEM RESET enable_sort;  -- ok
+SET enable_tidscan = OFF;  -- ok
+RESET enable_tidscan;  -- ok
+ALTER SYSTEM SET enable_tidscan = OFF;  -- ok
+ALTER SYSTEM RESET enable_tidscan;  -- ok
+-- PGC_USERSET / QUERY_TUNING_OTHER
+SET constraint_exclusion = 'partition';  -- ok
+RESET constraint_exclusion;  -- ok
+ALTER SYSTEM SET constraint_exclusion = 'partition';  -- ok
+ALTER SYSTEM RESET constraint_exclusion;  -- ok
+SET cursor_tuple_fraction = 0;  -- ok
+RESET cursor_tuple_fraction;  -- ok
+ALTER SYSTEM SET cursor_tuple_fraction = 0;  -- ok
+ALTER SYSTEM RESET cursor_tuple_fraction;  -- ok
+SET default_statistics_target = 5000;  -- ok
+RESET default_statistics_target;  -- ok
+ALTER SYSTEM SET default_statistics_target = 5000;  -- ok
+ALTER SYSTEM RESET default_statistics_target;  -- ok
+SET from_collapse_limit = 1073741824;  -- ok
+RESET from_collapse_limit;  -- ok
+ALTER SYSTEM SET from_collapse_limit = 1073741824;  -- ok
+ALTER SYSTEM RESET from_collapse_limit;  -- ok
+SET jit = OFF;  -- ok
+RESET jit;  -- ok
+ALTER SYSTEM SET jit = OFF;  -- ok
+ALTER SYSTEM RESET jit;  -- ok
+SET join_collapse_limit = 1073741824;  -- ok
+RESET join_collapse_limit;  -- ok
+ALTER SYSTEM SET join_collapse_limit = 1073741824;  -- ok
+ALTER SYSTEM RESET join_collapse_limit;  -- ok
+SET plan_cache_mode = 'force_generic_plan';  -- ok
+RESET plan_cache_mode;  -- ok
+ALTER SYSTEM SET plan_cache_mode = 'force_generic_plan';  -- ok
+ALTER SYSTEM RESET plan_cache_mode;  -- ok
+-- PGC_USERSET / REPLICATION_SENDING
+SET wal_sender_timeout = 50;  -- ok
+RESET wal_sender_timeout;  -- ok
+ALTER SYSTEM SET wal_sender_timeout = 50;  -- ok
+ALTER SYSTEM RESET wal_sender_timeout;  -- ok
+-- PGC_USERSET / RESOURCES_ASYNCHRONOUS
+SET backend_flush_after = 128;  -- ok
+RESET backend_flush_after;  -- ok
+ALTER SYSTEM SET backend_flush_after = 128;  -- ok
+ALTER SYSTEM RESET backend_flush_after;  -- ok
+SET effective_io_concurrency = 0;  -- ok
+RESET effective_io_concurrency;  -- ok
+ALTER SYSTEM SET effective_io_concurrency = 0;  -- ok
+ALTER SYSTEM RESET effective_io_concurrency;  -- ok
+SET maintenance_io_concurrency = 0;  -- ok
+RESET maintenance_io_concurrency;  -- ok
+ALTER SYSTEM SET maintenance_io_concurrency = 0;  -- ok
+ALTER SYSTEM RESET maintenance_io_concurrency;  -- ok
+SET max_parallel_maintenance_workers = 50;  -- ok
+RESET max_parallel_maintenance_workers;  -- ok
+ALTER SYSTEM SET max_parallel_maintenance_workers = 50;  -- ok
+ALTER SYSTEM RESET max_parallel_maintenance_workers;  -- ok
+SET max_parallel_workers = 50;  -- ok
+RESET max_parallel_workers;  -- ok
+ALTER SYSTEM SET max_parallel_workers = 50;  -- ok
+ALTER SYSTEM RESET max_parallel_workers;  -- ok
+SET max_parallel_workers_per_gather = 50;  -- ok
+RESET max_parallel_workers_per_gather;  -- ok
+ALTER SYSTEM SET max_parallel_workers_per_gather = 50;  -- ok
+ALTER SYSTEM RESET max_parallel_workers_per_gather;  -- ok
+SET parallel_leader_participation = OFF;  -- ok
+RESET parallel_leader_participation;  -- ok
+ALTER SYSTEM SET parallel_leader_participation = OFF;  -- ok
+ALTER SYSTEM RESET parallel_leader_participation;  -- ok
+-- PGC_USERSET / RESOURCES_MEM
+SET hash_mem_multiplier = 500;  -- ok
+RESET hash_mem_multiplier;  -- ok
+ALTER SYSTEM SET hash_mem_multiplier = 500;  -- ok
+ALTER SYSTEM RESET hash_mem_multiplier;  -- ok
+SET logical_decoding_work_mem = 1073741855;  -- ok
+RESET logical_decoding_work_mem;  -- ok
+ALTER SYSTEM SET logical_decoding_work_mem = 1073741855;  -- ok
+ALTER SYSTEM RESET logical_decoding_work_mem;  -- ok
+SET maintenance_work_mem = 1073742335;  -- ok
+RESET maintenance_work_mem;  -- ok
+ALTER SYSTEM SET maintenance_work_mem = 1073742335;  -- ok
+ALTER SYSTEM RESET maintenance_work_mem;  -- ok
+SET temp_buffers = 536870961;  -- ok
+RESET temp_buffers;  -- ok
+ALTER SYSTEM SET temp_buffers = 536870961;  -- ok
+ALTER SYSTEM RESET temp_buffers;  -- ok
+SET work_mem = 1073741855;  -- ok
+RESET work_mem;  -- ok
+ALTER SYSTEM SET work_mem = 1073741855;  -- ok
+ALTER SYSTEM RESET work_mem;  -- ok
+-- PGC_USERSET / RESOURCES_VACUUM_DELAY
+SET vacuum_cost_delay = 50;  -- ok
+RESET vacuum_cost_delay;  -- ok
+ALTER SYSTEM SET vacuum_cost_delay = 50;  -- ok
+ALTER SYSTEM RESET vacuum_cost_delay;  -- ok
+SET vacuum_cost_limit = 5000;  -- ok
+RESET vacuum_cost_limit;  -- ok
+ALTER SYSTEM SET vacuum_cost_limit = 5000;  -- ok
+ALTER SYSTEM RESET vacuum_cost_limit;  -- ok
+SET vacuum_cost_page_dirty = 50;  -- ok
+RESET vacuum_cost_page_dirty;  -- ok
+ALTER SYSTEM SET vacuum_cost_page_dirty = 50;  -- ok
+ALTER SYSTEM RESET vacuum_cost_page_dirty;  -- ok
+SET vacuum_cost_page_hit = 50;  -- ok
+RESET vacuum_cost_page_hit;  -- ok
+ALTER SYSTEM SET vacuum_cost_page_hit = 50;  -- ok
+ALTER SYSTEM RESET vacuum_cost_page_hit;  -- ok
+SET vacuum_cost_page_miss = 50;  -- ok
+RESET vacuum_cost_page_miss;  -- ok
+ALTER SYSTEM SET vacuum_cost_page_miss = 50;  -- ok
+ALTER SYSTEM RESET vacuum_cost_page_miss;  -- ok
+-- PGC_USERSET / UNGROUPED
+SET seed = 0;  -- ok
+RESET seed;  -- ok
+ALTER SYSTEM SET seed = 0;  -- fail, cannot be changed
+ERROR:  parameter "seed" cannot be changed
+ALTER SYSTEM RESET seed;  -- fail, cannot be changed
+ERROR:  parameter "seed" cannot be changed
+-- PGC_USERSET / WAL_SETTINGS
+SET commit_siblings = 50;  -- ok
+RESET commit_siblings;  -- ok
+ALTER SYSTEM SET commit_siblings = 50;  -- ok
+ALTER SYSTEM RESET commit_siblings;  -- ok
+SET synchronous_commit = 'remote_write';  -- ok
+RESET synchronous_commit;  -- ok
+ALTER SYSTEM SET synchronous_commit = 'remote_write';  -- ok
+ALTER SYSTEM RESET synchronous_commit;  -- ok
+SET wal_skip_threshold = 50;  -- ok
+RESET wal_skip_threshold;  -- ok
+ALTER SYSTEM SET wal_skip_threshold = 50;  -- ok
+ALTER SYSTEM RESET wal_skip_threshold;  -- ok
+RESET statement_timeout;
+RESET SESSION AUTHORIZATION;
+DROP ROLE admin;
diff --git a/src/test/regress/parallel_schedule b/src/test/regress/parallel_schedule
index 7be89178f0..40b5ea3940 100644
--- a/src/test/regress/parallel_schedule
+++ b/src/test/regress/parallel_schedule
@@ -86,7 +86,7 @@ test: brin_bloom brin_multi
 # ----------
 # Another group of parallel tests
 # ----------
-test: create_table_like alter_generic alter_operator misc async dbsize misc_functions sysviews tsrf tid tidscan tidrangescan collate.icu.utf8 incremental_sort
+test: create_table_like alter_generic alter_operator misc async dbsize misc_functions sysviews tsrf tid tidscan tidrangescan collate.icu.utf8 incremental_sort guc_priv_admin
 
 # rules cannot run concurrently with any test that creates
 # a view or rule in the public schema
diff --git a/src/test/regress/sql/guc_priv_admin.sql b/src/test/regress/sql/guc_priv_admin.sql
new file mode 100644
index 0000000000..7bb2ed0e2b
--- /dev/null
+++ b/src/test/regress/sql/guc_priv_admin.sql
@@ -0,0 +1,1422 @@
+-- Superuser DBA
+CREATE ROLE admin SUPERUSER;
+-- Perform all operations as user 'admin' --
+SET SESSION AUTHORIZATION admin;
+-- PGC_BACKEND / DEVELOPER_OPTIONS
+SET ignore_system_indexes = OFF;  -- fail, cannot be set after connection start
+RESET ignore_system_indexes;  -- fail, cannot be set after connection start
+ALTER SYSTEM SET ignore_system_indexes = OFF;  -- ok
+ALTER SYSTEM RESET ignore_system_indexes;  -- ok
+SET post_auth_delay = 50;  -- fail, cannot be set after connection start
+RESET post_auth_delay;  -- fail, cannot be set after connection start
+ALTER SYSTEM SET post_auth_delay = 50;  -- ok
+ALTER SYSTEM RESET post_auth_delay;  -- ok
+-- PGC_INTERNAL / PRESET_OPTIONS
+SET block_size = 50;  -- fail, cannot be changed
+RESET block_size;  -- fail, cannot be changed
+ALTER SYSTEM SET block_size = 50;  -- fail, cannot be changed
+ALTER SYSTEM RESET block_size;  -- fail, cannot be changed
+SET data_checksums = OFF;  -- fail, cannot be changed
+RESET data_checksums;  -- fail, cannot be changed
+ALTER SYSTEM SET data_checksums = OFF;  -- fail, cannot be changed
+ALTER SYSTEM RESET data_checksums;  -- fail, cannot be changed
+SET data_directory_mode = 50;  -- fail, cannot be changed
+RESET data_directory_mode;  -- fail, cannot be changed
+ALTER SYSTEM SET data_directory_mode = 50;  -- fail, cannot be changed
+ALTER SYSTEM RESET data_directory_mode;  -- fail, cannot be changed
+SET debug_assertions = OFF;  -- fail, cannot be changed
+RESET debug_assertions;  -- fail, cannot be changed
+ALTER SYSTEM SET debug_assertions = OFF;  -- fail, cannot be changed
+ALTER SYSTEM RESET debug_assertions;  -- fail, cannot be changed
+SET in_hot_standby = OFF;  -- fail, cannot be changed
+RESET in_hot_standby;  -- fail, cannot be changed
+ALTER SYSTEM SET in_hot_standby = OFF;  -- fail, cannot be changed
+ALTER SYSTEM RESET in_hot_standby;  -- fail, cannot be changed
+SET integer_datetimes = OFF;  -- fail, cannot be changed
+RESET integer_datetimes;  -- fail, cannot be changed
+ALTER SYSTEM SET integer_datetimes = OFF;  -- fail, cannot be changed
+ALTER SYSTEM RESET integer_datetimes;  -- fail, cannot be changed
+SET lc_collate = 'en_US.UTF-8';  -- fail, cannot be changed
+RESET lc_collate;  -- fail, cannot be changed
+ALTER SYSTEM SET lc_collate = 'en_US.UTF-8';  -- fail, cannot be changed
+ALTER SYSTEM RESET lc_collate;  -- fail, cannot be changed
+SET lc_ctype = 'en_US.UTF-8';  -- fail, cannot be changed
+RESET lc_ctype;  -- fail, cannot be changed
+ALTER SYSTEM SET lc_ctype = 'en_US.UTF-8';  -- fail, cannot be changed
+ALTER SYSTEM RESET lc_ctype;  -- fail, cannot be changed
+SET max_function_args = 50;  -- fail, cannot be changed
+RESET max_function_args;  -- fail, cannot be changed
+ALTER SYSTEM SET max_function_args = 50;  -- fail, cannot be changed
+ALTER SYSTEM RESET max_function_args;  -- fail, cannot be changed
+SET max_identifier_length = 50;  -- fail, cannot be changed
+RESET max_identifier_length;  -- fail, cannot be changed
+ALTER SYSTEM SET max_identifier_length = 50;  -- fail, cannot be changed
+ALTER SYSTEM RESET max_identifier_length;  -- fail, cannot be changed
+SET max_index_keys = 50;  -- fail, cannot be changed
+RESET max_index_keys;  -- fail, cannot be changed
+ALTER SYSTEM SET max_index_keys = 50;  -- fail, cannot be changed
+ALTER SYSTEM RESET max_index_keys;  -- fail, cannot be changed
+SET segment_size = 50;  -- fail, cannot be changed
+RESET segment_size;  -- fail, cannot be changed
+ALTER SYSTEM SET segment_size = 50;  -- fail, cannot be changed
+ALTER SYSTEM RESET segment_size;  -- fail, cannot be changed
+SET server_encoding = 'UTF8';  -- fail, cannot be changed
+RESET server_encoding;  -- fail, cannot be changed
+ALTER SYSTEM SET server_encoding = 'UTF8';  -- fail, cannot be changed
+ALTER SYSTEM RESET server_encoding;  -- fail, cannot be changed
+SET server_version = '9.1';  -- fail, cannot be changed
+RESET server_version;  -- fail, cannot be changed
+ALTER SYSTEM SET server_version = '9.1';  -- fail, cannot be changed
+ALTER SYSTEM RESET server_version;  -- fail, cannot be changed
+SET server_version_num = 50;  -- fail, cannot be changed
+RESET server_version_num;  -- fail, cannot be changed
+ALTER SYSTEM SET server_version_num = 50;  -- fail, cannot be changed
+ALTER SYSTEM RESET server_version_num;  -- fail, cannot be changed
+SET ssl_library = 'OpenSSL';  -- fail, cannot be changed
+RESET ssl_library;  -- fail, cannot be changed
+ALTER SYSTEM SET ssl_library = 'OpenSSL';  -- fail, cannot be changed
+ALTER SYSTEM RESET ssl_library;  -- fail, cannot be changed
+SET wal_block_size = 50;  -- fail, cannot be changed
+RESET wal_block_size;  -- fail, cannot be changed
+ALTER SYSTEM SET wal_block_size = 50;  -- fail, cannot be changed
+ALTER SYSTEM RESET wal_block_size;  -- fail, cannot be changed
+SET wal_segment_size = 50;  -- fail, cannot be changed
+RESET wal_segment_size;  -- fail, cannot be changed
+ALTER SYSTEM SET wal_segment_size = 50;  -- fail, cannot be changed
+ALTER SYSTEM RESET wal_segment_size;  -- fail, cannot be changed
+-- PGC_INTERNAL / UNGROUPED
+SET is_superuser = OFF;  -- fail, cannot be changed
+RESET is_superuser;  -- fail, cannot be changed
+ALTER SYSTEM SET is_superuser = OFF;  -- fail, cannot be changed
+ALTER SYSTEM RESET is_superuser;  -- fail, cannot be changed
+-- PGC_POSTMASTER / AUTOVACUUM
+SET autovacuum_freeze_max_age = 1000050000;  -- fail, requires restart
+RESET autovacuum_freeze_max_age;  -- fail, requires restart
+ALTER SYSTEM SET autovacuum_freeze_max_age = 1000050000;  -- ok
+ALTER SYSTEM RESET autovacuum_freeze_max_age;  -- ok
+SET autovacuum_max_workers = 50;  -- fail, requires restart
+RESET autovacuum_max_workers;  -- fail, requires restart
+ALTER SYSTEM SET autovacuum_max_workers = 50;  -- ok
+ALTER SYSTEM RESET autovacuum_max_workers;  -- ok
+SET autovacuum_multixact_freeze_max_age = 1000005000;  -- fail, requires restart
+RESET autovacuum_multixact_freeze_max_age;  -- fail, requires restart
+ALTER SYSTEM SET autovacuum_multixact_freeze_max_age = 1000005000;  -- ok
+ALTER SYSTEM RESET autovacuum_multixact_freeze_max_age;  -- ok
+-- PGC_POSTMASTER / CLIENT_CONN_PRELOAD
+SET jit_provider = 'llvmjit';  -- fail, requires restart
+RESET jit_provider;  -- fail, requires restart
+ALTER SYSTEM SET jit_provider = 'llvmjit';  -- ok
+ALTER SYSTEM RESET jit_provider;  -- ok
+SET shared_preload_libraries = 'iconv, pcre';  -- fail, requires restart
+RESET shared_preload_libraries;  -- fail, requires restart
+ALTER SYSTEM SET shared_preload_libraries = 'iconv, pcre';  -- ok
+ALTER SYSTEM RESET shared_preload_libraries;  -- ok
+-- PGC_POSTMASTER / CONN_AUTH_SETTINGS
+SET bonjour = OFF;  -- fail, requires restart
+RESET bonjour;  -- fail, requires restart
+ALTER SYSTEM SET bonjour = OFF;  -- ok
+ALTER SYSTEM RESET bonjour;  -- ok
+SET bonjour_name = 'BonneNuit';  -- fail, requires restart
+RESET bonjour_name;  -- fail, requires restart
+ALTER SYSTEM SET bonjour_name = 'BonneNuit';  -- ok
+ALTER SYSTEM RESET bonjour_name;  -- ok
+SET listen_addresses = 'localhost';  -- fail, requires restart
+RESET listen_addresses;  -- fail, requires restart
+ALTER SYSTEM SET listen_addresses = 'localhost';  -- ok
+ALTER SYSTEM RESET listen_addresses;  -- ok
+SET max_connections = 50;  -- fail, requires restart
+RESET max_connections;  -- fail, requires restart
+ALTER SYSTEM SET max_connections = 50;  -- ok
+ALTER SYSTEM RESET max_connections;  -- ok
+SET port = 50;  -- fail, requires restart
+RESET port;  -- fail, requires restart
+ALTER SYSTEM SET port = 50;  -- ok
+ALTER SYSTEM RESET port;  -- ok
+SET superuser_reserved_connections = 50;  -- fail, requires restart
+RESET superuser_reserved_connections;  -- fail, requires restart
+ALTER SYSTEM SET superuser_reserved_connections = 50;  -- ok
+ALTER SYSTEM RESET superuser_reserved_connections;  -- ok
+SET unix_socket_directories = '/tmp';  -- fail, requires restart
+RESET unix_socket_directories;  -- fail, requires restart
+ALTER SYSTEM SET unix_socket_directories = '/tmp';  -- ok
+ALTER SYSTEM RESET unix_socket_directories;  -- ok
+SET unix_socket_group = 'tenant';  -- fail, requires restart
+RESET unix_socket_group;  -- fail, requires restart
+ALTER SYSTEM SET unix_socket_group = 'tenant';  -- ok
+ALTER SYSTEM RESET unix_socket_group;  -- ok
+SET unix_socket_permissions = 50;  -- fail, requires restart
+RESET unix_socket_permissions;  -- fail, requires restart
+ALTER SYSTEM SET unix_socket_permissions = 50;  -- ok
+ALTER SYSTEM RESET unix_socket_permissions;  -- ok
+-- PGC_POSTMASTER / DEVELOPER_OPTIONS
+SET ignore_invalid_pages = OFF;  -- fail, requires restart
+RESET ignore_invalid_pages;  -- fail, requires restart
+ALTER SYSTEM SET ignore_invalid_pages = OFF;  -- ok
+ALTER SYSTEM RESET ignore_invalid_pages;  -- ok
+-- PGC_POSTMASTER / ERROR_HANDLING_OPTIONS
+SET data_sync_retry = OFF;  -- fail, requires restart
+RESET data_sync_retry;  -- fail, requires restart
+ALTER SYSTEM SET data_sync_retry = OFF;  -- ok
+ALTER SYSTEM RESET data_sync_retry;  -- ok
+-- PGC_POSTMASTER / FILE_LOCATIONS
+SET config_file = '/usr/local/data/postgresql.conf';  -- fail, requires restart
+RESET config_file;  -- fail, requires restart
+ALTER SYSTEM SET config_file = '/usr/local/data/postgresql.conf';  -- fail, cannot be changed
+ALTER SYSTEM RESET config_file;  -- fail, cannot be changed
+SET data_directory = '/usr/local/data';  -- fail, requires restart
+RESET data_directory;  -- fail, requires restart
+ALTER SYSTEM SET data_directory = '/usr/local/data';  -- fail, cannot be changed
+ALTER SYSTEM RESET data_directory;  -- fail, cannot be changed
+SET external_pid_file = '/var/postgres/master.pid';  -- fail, requires restart
+RESET external_pid_file;  -- fail, requires restart
+ALTER SYSTEM SET external_pid_file = '/var/postgres/master.pid';  -- ok
+ALTER SYSTEM RESET external_pid_file;  -- ok
+-- PGC_POSTMASTER / LOCK_MANAGEMENT
+SET max_locks_per_transaction = 50;  -- fail, requires restart
+RESET max_locks_per_transaction;  -- fail, requires restart
+ALTER SYSTEM SET max_locks_per_transaction = 50;  -- ok
+ALTER SYSTEM RESET max_locks_per_transaction;  -- ok
+SET max_pred_locks_per_transaction = 50;  -- fail, requires restart
+RESET max_pred_locks_per_transaction;  -- fail, requires restart
+ALTER SYSTEM SET max_pred_locks_per_transaction = 50;  -- ok
+ALTER SYSTEM RESET max_pred_locks_per_transaction;  -- ok
+-- PGC_POSTMASTER / LOGGING_WHERE
+SET event_source = 'PostgreSQL';  -- fail, requires restart
+RESET event_source;  -- fail, requires restart
+ALTER SYSTEM SET event_source = 'PostgreSQL';  -- ok
+ALTER SYSTEM RESET event_source;  -- ok
+SET logging_collector = OFF;  -- fail, requires restart
+RESET logging_collector;  -- fail, requires restart
+ALTER SYSTEM SET logging_collector = OFF;  -- ok
+ALTER SYSTEM RESET logging_collector;  -- ok
+-- PGC_POSTMASTER / PROCESS_TITLE
+SET cluster_name = 'BonCluster';  -- fail, requires restart
+RESET cluster_name;  -- fail, requires restart
+ALTER SYSTEM SET cluster_name = 'BonCluster';  -- ok
+ALTER SYSTEM RESET cluster_name;  -- ok
+-- PGC_POSTMASTER / REPLICATION_SENDING
+SET max_replication_slots = 50;  -- fail, requires restart
+RESET max_replication_slots;  -- fail, requires restart
+ALTER SYSTEM SET max_replication_slots = 50;  -- ok
+ALTER SYSTEM RESET max_replication_slots;  -- ok
+SET max_wal_senders = 50;  -- fail, requires restart
+RESET max_wal_senders;  -- fail, requires restart
+ALTER SYSTEM SET max_wal_senders = 50;  -- ok
+ALTER SYSTEM RESET max_wal_senders;  -- ok
+SET track_commit_timestamp = OFF;  -- fail, requires restart
+RESET track_commit_timestamp;  -- fail, requires restart
+ALTER SYSTEM SET track_commit_timestamp = OFF;  -- ok
+ALTER SYSTEM RESET track_commit_timestamp;  -- ok
+-- PGC_POSTMASTER / REPLICATION_STANDBY
+SET hot_standby = OFF;  -- fail, requires restart
+RESET hot_standby;  -- fail, requires restart
+ALTER SYSTEM SET hot_standby = OFF;  -- ok
+ALTER SYSTEM RESET hot_standby;  -- ok
+-- PGC_POSTMASTER / REPLICATION_SUBSCRIBERS
+SET max_logical_replication_workers = 50;  -- fail, requires restart
+RESET max_logical_replication_workers;  -- fail, requires restart
+ALTER SYSTEM SET max_logical_replication_workers = 50;  -- ok
+ALTER SYSTEM RESET max_logical_replication_workers;  -- ok
+-- PGC_POSTMASTER / RESOURCES_ASYNCHRONOUS
+SET max_worker_processes = 50;  -- fail, requires restart
+RESET max_worker_processes;  -- fail, requires restart
+ALTER SYSTEM SET max_worker_processes = 50;  -- ok
+ALTER SYSTEM RESET max_worker_processes;  -- ok
+SET old_snapshot_threshold = 50;  -- fail, requires restart
+RESET old_snapshot_threshold;  -- fail, requires restart
+ALTER SYSTEM SET old_snapshot_threshold = 50;  -- ok
+ALTER SYSTEM RESET old_snapshot_threshold;  -- ok
+-- PGC_POSTMASTER / RESOURCES_KERNEL
+SET max_files_per_process = 1073741855;  -- fail, requires restart
+RESET max_files_per_process;  -- fail, requires restart
+ALTER SYSTEM SET max_files_per_process = 1073741855;  -- ok
+ALTER SYSTEM RESET max_files_per_process;  -- ok
+-- PGC_POSTMASTER / RESOURCES_MEM
+SET dynamic_shared_memory_type = 'posix';  -- fail, requires restart
+RESET dynamic_shared_memory_type;  -- fail, requires restart
+ALTER SYSTEM SET dynamic_shared_memory_type = 'posix';  -- ok
+ALTER SYSTEM RESET dynamic_shared_memory_type;  -- ok
+SET huge_pages = 'try';  -- fail, requires restart
+RESET huge_pages;  -- fail, requires restart
+ALTER SYSTEM SET huge_pages = 'try';  -- ok
+ALTER SYSTEM RESET huge_pages;  -- ok
+SET max_prepared_transactions = 50;  -- fail, requires restart
+RESET max_prepared_transactions;  -- fail, requires restart
+ALTER SYSTEM SET max_prepared_transactions = 50;  -- ok
+ALTER SYSTEM RESET max_prepared_transactions;  -- ok
+SET min_dynamic_shared_memory = 50;  -- fail, requires restart
+RESET min_dynamic_shared_memory;  -- fail, requires restart
+ALTER SYSTEM SET min_dynamic_shared_memory = 50;  -- ok
+ALTER SYSTEM RESET min_dynamic_shared_memory;  -- ok
+SET shared_buffers = 50;  -- fail, requires restart
+RESET shared_buffers;  -- fail, requires restart
+ALTER SYSTEM SET shared_buffers = 50;  -- ok
+ALTER SYSTEM RESET shared_buffers;  -- ok
+SET shared_memory_type = 'mmap';  -- fail, requires restart
+RESET shared_memory_type;  -- fail, requires restart
+ALTER SYSTEM SET shared_memory_type = 'mmap';  -- ok
+ALTER SYSTEM RESET shared_memory_type;  -- ok
+-- PGC_POSTMASTER / STATS_COLLECTOR
+SET track_activity_query_size = 524338;  -- fail, requires restart
+RESET track_activity_query_size;  -- fail, requires restart
+ALTER SYSTEM SET track_activity_query_size = 524338;  -- ok
+ALTER SYSTEM RESET track_activity_query_size;  -- ok
+-- PGC_POSTMASTER / WAL_ARCHIVING
+SET archive_mode = 'off';  -- fail, requires restart
+RESET archive_mode;  -- fail, requires restart
+ALTER SYSTEM SET archive_mode = 'off';  -- ok
+ALTER SYSTEM RESET archive_mode;  -- ok
+-- PGC_POSTMASTER / WAL_RECOVERY_TARGET
+SET recovery_target_action = 'pause';  -- fail, requires restart
+RESET recovery_target_action;  -- fail, requires restart
+ALTER SYSTEM SET recovery_target_action = 'pause';  -- ok
+ALTER SYSTEM RESET recovery_target_action;  -- ok
+SET recovery_target_inclusive = OFF;  -- fail, requires restart
+RESET recovery_target_inclusive;  -- fail, requires restart
+ALTER SYSTEM SET recovery_target_inclusive = OFF;  -- ok
+ALTER SYSTEM RESET recovery_target_inclusive;  -- ok
+SET recovery_target_lsn = '16/B374D848';  -- fail, requires restart
+RESET recovery_target_lsn;  -- fail, requires restart
+ALTER SYSTEM SET recovery_target_lsn = '16/B374D848';  -- ok
+ALTER SYSTEM RESET recovery_target_lsn;  -- ok
+SET recovery_target_name = 'BonPoint';  -- fail, requires restart
+RESET recovery_target_name;  -- fail, requires restart
+ALTER SYSTEM SET recovery_target_name = 'BonPoint';  -- ok
+ALTER SYSTEM RESET recovery_target_name;  -- ok
+SET recovery_target_time = '2001-02-03 04:05:06.789 Europe/Helsinki';  -- fail, requires restart
+RESET recovery_target_time;  -- fail, requires restart
+ALTER SYSTEM SET recovery_target_time = '2001-02-03 04:05:06.789 Europe/Helsinki';  -- ok
+ALTER SYSTEM RESET recovery_target_time;  -- ok
+SET recovery_target_timeline = 'latest';  -- fail, requires restart
+RESET recovery_target_timeline;  -- fail, requires restart
+ALTER SYSTEM SET recovery_target_timeline = 'latest';  -- ok
+ALTER SYSTEM RESET recovery_target_timeline;  -- ok
+SET recovery_target_xid = '12345678';  -- fail, requires restart
+RESET recovery_target_xid;  -- fail, requires restart
+ALTER SYSTEM SET recovery_target_xid = '12345678';  -- ok
+ALTER SYSTEM RESET recovery_target_xid;  -- ok
+-- PGC_POSTMASTER / WAL_SETTINGS
+SET wal_buffers = 50;  -- fail, requires restart
+RESET wal_buffers;  -- fail, requires restart
+ALTER SYSTEM SET wal_buffers = 50;  -- ok
+ALTER SYSTEM RESET wal_buffers;  -- ok
+SET wal_level = 'replica';  -- fail, requires restart
+RESET wal_level;  -- fail, requires restart
+ALTER SYSTEM SET wal_level = 'replica';  -- ok
+ALTER SYSTEM RESET wal_level;  -- ok
+SET wal_log_hints = OFF;  -- fail, requires restart
+RESET wal_log_hints;  -- fail, requires restart
+ALTER SYSTEM SET wal_log_hints = OFF;  -- ok
+ALTER SYSTEM RESET wal_log_hints;  -- ok
+-- PGC_SIGHUP / AUTOVACUUM
+SET autovacuum = OFF;  -- fail, requires reload
+RESET autovacuum;  -- fail, requires reload
+ALTER SYSTEM SET autovacuum = OFF;  -- ok
+ALTER SYSTEM RESET autovacuum;  -- ok
+SET autovacuum_analyze_scale_factor = 50;  -- fail, requires reload
+RESET autovacuum_analyze_scale_factor;  -- fail, requires reload
+ALTER SYSTEM SET autovacuum_analyze_scale_factor = 50;  -- ok
+ALTER SYSTEM RESET autovacuum_analyze_scale_factor;  -- ok
+SET autovacuum_analyze_threshold = 50;  -- fail, requires reload
+RESET autovacuum_analyze_threshold;  -- fail, requires reload
+ALTER SYSTEM SET autovacuum_analyze_threshold = 50;  -- ok
+ALTER SYSTEM RESET autovacuum_analyze_threshold;  -- ok
+SET autovacuum_naptime = 50;  -- fail, requires reload
+RESET autovacuum_naptime;  -- fail, requires reload
+ALTER SYSTEM SET autovacuum_naptime = 50;  -- ok
+ALTER SYSTEM RESET autovacuum_naptime;  -- ok
+SET autovacuum_vacuum_cost_delay = 50;  -- fail, requires reload
+RESET autovacuum_vacuum_cost_delay;  -- fail, requires reload
+ALTER SYSTEM SET autovacuum_vacuum_cost_delay = 50;  -- ok
+ALTER SYSTEM RESET autovacuum_vacuum_cost_delay;  -- ok
+SET autovacuum_vacuum_cost_limit = 50;  -- fail, requires reload
+RESET autovacuum_vacuum_cost_limit;  -- fail, requires reload
+ALTER SYSTEM SET autovacuum_vacuum_cost_limit = 50;  -- ok
+ALTER SYSTEM RESET autovacuum_vacuum_cost_limit;  -- ok
+SET autovacuum_vacuum_insert_scale_factor = 50;  -- fail, requires reload
+RESET autovacuum_vacuum_insert_scale_factor;  -- fail, requires reload
+ALTER SYSTEM SET autovacuum_vacuum_insert_scale_factor = 50;  -- ok
+ALTER SYSTEM RESET autovacuum_vacuum_insert_scale_factor;  -- ok
+SET autovacuum_vacuum_insert_threshold = 50;  -- fail, requires reload
+RESET autovacuum_vacuum_insert_threshold;  -- fail, requires reload
+ALTER SYSTEM SET autovacuum_vacuum_insert_threshold = 50;  -- ok
+ALTER SYSTEM RESET autovacuum_vacuum_insert_threshold;  -- ok
+SET autovacuum_vacuum_scale_factor = 50;  -- fail, requires reload
+RESET autovacuum_vacuum_scale_factor;  -- fail, requires reload
+ALTER SYSTEM SET autovacuum_vacuum_scale_factor = 50;  -- ok
+ALTER SYSTEM RESET autovacuum_vacuum_scale_factor;  -- ok
+SET autovacuum_vacuum_threshold = 50;  -- fail, requires reload
+RESET autovacuum_vacuum_threshold;  -- fail, requires reload
+ALTER SYSTEM SET autovacuum_vacuum_threshold = 50;  -- ok
+ALTER SYSTEM RESET autovacuum_vacuum_threshold;  -- ok
+-- PGC_SIGHUP / CONN_AUTH_AUTH
+SET authentication_timeout = 50;  -- fail, requires reload
+RESET authentication_timeout;  -- fail, requires reload
+ALTER SYSTEM SET authentication_timeout = 50;  -- ok
+ALTER SYSTEM RESET authentication_timeout;  -- ok
+SET db_user_namespace = OFF;  -- fail, requires reload
+RESET db_user_namespace;  -- fail, requires reload
+ALTER SYSTEM SET db_user_namespace = OFF;  -- ok
+ALTER SYSTEM RESET db_user_namespace;  -- ok
+SET krb_caseins_users = OFF;  -- fail, requires reload
+RESET krb_caseins_users;  -- fail, requires reload
+ALTER SYSTEM SET krb_caseins_users = OFF;  -- ok
+ALTER SYSTEM RESET krb_caseins_users;  -- ok
+SET krb_server_keyfile = 'krb/server.key';  -- fail, requires reload
+RESET krb_server_keyfile;  -- fail, requires reload
+ALTER SYSTEM SET krb_server_keyfile = 'krb/server.key';  -- ok
+ALTER SYSTEM RESET krb_server_keyfile;  -- ok
+-- PGC_SIGHUP / CONN_AUTH_SSL
+SET ssl_ca_file = 'ca/server.ca';  -- fail, requires reload
+RESET ssl_ca_file;  -- fail, requires reload
+ALTER SYSTEM SET ssl_ca_file = 'ca/server.ca';  -- ok
+ALTER SYSTEM RESET ssl_ca_file;  -- ok
+SET ssl_cert_file = 'crt/server.crt';  -- fail, requires reload
+RESET ssl_cert_file;  -- fail, requires reload
+ALTER SYSTEM SET ssl_cert_file = 'crt/server.crt';  -- ok
+ALTER SYSTEM RESET ssl_cert_file;  -- ok
+SET ssl_ciphers = 'none';  -- fail, requires reload
+RESET ssl_ciphers;  -- fail, requires reload
+ALTER SYSTEM SET ssl_ciphers = 'none';  -- ok
+ALTER SYSTEM RESET ssl_ciphers;  -- ok
+SET ssl_crl_dir = 'crl/';  -- fail, requires reload
+RESET ssl_crl_dir;  -- fail, requires reload
+ALTER SYSTEM SET ssl_crl_dir = 'crl/';  -- ok
+ALTER SYSTEM RESET ssl_crl_dir;  -- ok
+SET ssl_crl_file = 'crl/server.crl';  -- fail, requires reload
+RESET ssl_crl_file;  -- fail, requires reload
+ALTER SYSTEM SET ssl_crl_file = 'crl/server.crl';  -- ok
+ALTER SYSTEM RESET ssl_crl_file;  -- ok
+SET ssl_dh_params_file = 'ssl/params';  -- fail, requires reload
+RESET ssl_dh_params_file;  -- fail, requires reload
+ALTER SYSTEM SET ssl_dh_params_file = 'ssl/params';  -- ok
+ALTER SYSTEM RESET ssl_dh_params_file;  -- ok
+SET ssl_ecdh_curve = 'none';  -- fail, requires reload
+RESET ssl_ecdh_curve;  -- fail, requires reload
+ALTER SYSTEM SET ssl_ecdh_curve = 'none';  -- ok
+ALTER SYSTEM RESET ssl_ecdh_curve;  -- ok
+SET ssl_key_file = 'crl/server.key';  -- fail, requires reload
+RESET ssl_key_file;  -- fail, requires reload
+ALTER SYSTEM SET ssl_key_file = 'crl/server.key';  -- ok
+ALTER SYSTEM RESET ssl_key_file;  -- ok
+SET ssl_min_protocol_version = 'TLSv1.2';  -- fail, requires reload
+RESET ssl_min_protocol_version;  -- fail, requires reload
+ALTER SYSTEM SET ssl_min_protocol_version = 'TLSv1.2';  -- ok
+ALTER SYSTEM RESET ssl_min_protocol_version;  -- ok
+SET ssl_passphrase_command = '/bin/passphrase';  -- fail, requires reload
+RESET ssl_passphrase_command;  -- fail, requires reload
+ALTER SYSTEM SET ssl_passphrase_command = '/bin/passphrase';  -- ok
+ALTER SYSTEM RESET ssl_passphrase_command;  -- ok
+SET ssl_passphrase_command_supports_reload = OFF;  -- fail, requires reload
+RESET ssl_passphrase_command_supports_reload;  -- fail, requires reload
+ALTER SYSTEM SET ssl_passphrase_command_supports_reload = OFF;  -- ok
+ALTER SYSTEM RESET ssl_passphrase_command_supports_reload;  -- ok
+SET ssl_prefer_server_ciphers = OFF;  -- fail, requires reload
+RESET ssl_prefer_server_ciphers;  -- fail, requires reload
+ALTER SYSTEM SET ssl_prefer_server_ciphers = OFF;  -- ok
+ALTER SYSTEM RESET ssl_prefer_server_ciphers;  -- ok
+-- PGC_SIGHUP / DEVELOPER_OPTIONS
+SET pre_auth_delay = 50;  -- fail, requires reload
+RESET pre_auth_delay;  -- fail, requires reload
+ALTER SYSTEM SET pre_auth_delay = 50;  -- ok
+ALTER SYSTEM RESET pre_auth_delay;  -- ok
+SET remove_temp_files_after_crash = OFF;  -- fail, requires reload
+RESET remove_temp_files_after_crash;  -- fail, requires reload
+ALTER SYSTEM SET remove_temp_files_after_crash = OFF;  -- ok
+ALTER SYSTEM RESET remove_temp_files_after_crash;  -- ok
+SET trace_recovery_messages = 'log';  -- fail, requires reload
+RESET trace_recovery_messages;  -- fail, requires reload
+ALTER SYSTEM SET trace_recovery_messages = 'log';  -- ok
+ALTER SYSTEM RESET trace_recovery_messages;  -- ok
+-- PGC_SIGHUP / ERROR_HANDLING_OPTIONS
+SET recovery_init_sync_method = 'fsync';  -- fail, requires reload
+RESET recovery_init_sync_method;  -- fail, requires reload
+ALTER SYSTEM SET recovery_init_sync_method = 'fsync';  -- ok
+ALTER SYSTEM RESET recovery_init_sync_method;  -- ok
+SET restart_after_crash = OFF;  -- fail, requires reload
+RESET restart_after_crash;  -- fail, requires reload
+ALTER SYSTEM SET restart_after_crash = OFF;  -- ok
+ALTER SYSTEM RESET restart_after_crash;  -- ok
+-- PGC_SIGHUP / LOCK_MANAGEMENT
+SET max_pred_locks_per_page = 50;  -- fail, requires reload
+RESET max_pred_locks_per_page;  -- fail, requires reload
+ALTER SYSTEM SET max_pred_locks_per_page = 50;  -- ok
+ALTER SYSTEM RESET max_pred_locks_per_page;  -- ok
+SET max_pred_locks_per_relation = 50;  -- fail, requires reload
+RESET max_pred_locks_per_relation;  -- fail, requires reload
+ALTER SYSTEM SET max_pred_locks_per_relation = 50;  -- ok
+ALTER SYSTEM RESET max_pred_locks_per_relation;  -- ok
+-- PGC_SIGHUP / LOGGING_WHAT
+SET log_autovacuum_min_duration = 50;  -- fail, requires reload
+RESET log_autovacuum_min_duration;  -- fail, requires reload
+ALTER SYSTEM SET log_autovacuum_min_duration = 50;  -- ok
+ALTER SYSTEM RESET log_autovacuum_min_duration;  -- ok
+SET log_checkpoints = OFF;  -- fail, requires reload
+RESET log_checkpoints;  -- fail, requires reload
+ALTER SYSTEM SET log_checkpoints = OFF;  -- ok
+ALTER SYSTEM RESET log_checkpoints;  -- ok
+SET log_hostname = OFF;  -- fail, requires reload
+RESET log_hostname;  -- fail, requires reload
+ALTER SYSTEM SET log_hostname = OFF;  -- ok
+ALTER SYSTEM RESET log_hostname;  -- ok
+SET log_line_prefix = '%m [%p] ';  -- fail, requires reload
+RESET log_line_prefix;  -- fail, requires reload
+ALTER SYSTEM SET log_line_prefix = '%m [%p] ';  -- ok
+ALTER SYSTEM RESET log_line_prefix;  -- ok
+SET log_recovery_conflict_waits = OFF;  -- fail, requires reload
+RESET log_recovery_conflict_waits;  -- fail, requires reload
+ALTER SYSTEM SET log_recovery_conflict_waits = OFF;  -- ok
+ALTER SYSTEM RESET log_recovery_conflict_waits;  -- ok
+SET log_timezone = 'Europe/Helsinki';  -- fail, requires reload
+RESET log_timezone;  -- fail, requires reload
+ALTER SYSTEM SET log_timezone = 'Europe/Helsinki';  -- ok
+ALTER SYSTEM RESET log_timezone;  -- ok
+-- PGC_SIGHUP / LOGGING_WHERE
+SET log_directory = 'log';  -- fail, requires reload
+RESET log_directory;  -- fail, requires reload
+ALTER SYSTEM SET log_directory = 'log';  -- ok
+ALTER SYSTEM RESET log_directory;  -- ok
+SET log_file_mode = 50;  -- fail, requires reload
+RESET log_file_mode;  -- fail, requires reload
+ALTER SYSTEM SET log_file_mode = 50;  -- ok
+ALTER SYSTEM RESET log_file_mode;  -- ok
+SET log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log';  -- fail, requires reload
+RESET log_filename;  -- fail, requires reload
+ALTER SYSTEM SET log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log';  -- ok
+ALTER SYSTEM RESET log_filename;  -- ok
+SET log_rotation_age = 50;  -- fail, requires reload
+RESET log_rotation_age;  -- fail, requires reload
+ALTER SYSTEM SET log_rotation_age = 50;  -- ok
+ALTER SYSTEM RESET log_rotation_age;  -- ok
+SET log_rotation_size = 50;  -- fail, requires reload
+RESET log_rotation_size;  -- fail, requires reload
+ALTER SYSTEM SET log_rotation_size = 50;  -- ok
+ALTER SYSTEM RESET log_rotation_size;  -- ok
+SET log_truncate_on_rotation = OFF;  -- fail, requires reload
+RESET log_truncate_on_rotation;  -- fail, requires reload
+ALTER SYSTEM SET log_truncate_on_rotation = OFF;  -- ok
+ALTER SYSTEM RESET log_truncate_on_rotation;  -- ok
+SET syslog_ident = 'postgres';  -- fail, requires reload
+RESET syslog_ident;  -- fail, requires reload
+ALTER SYSTEM SET syslog_ident = 'postgres';  -- ok
+ALTER SYSTEM RESET syslog_ident;  -- ok
+SET syslog_sequence_numbers = OFF;  -- fail, requires reload
+RESET syslog_sequence_numbers;  -- fail, requires reload
+ALTER SYSTEM SET syslog_sequence_numbers = OFF;  -- ok
+ALTER SYSTEM RESET syslog_sequence_numbers;  -- ok
+SET syslog_split_messages = OFF;  -- fail, requires reload
+RESET syslog_split_messages;  -- fail, requires reload
+ALTER SYSTEM SET syslog_split_messages = OFF;  -- ok
+ALTER SYSTEM RESET syslog_split_messages;  -- ok
+-- PGC_SIGHUP / REPLICATION_PRIMARY
+SET synchronous_standby_names = 'fee, fi, fo, fum';  -- fail, requires reload
+RESET synchronous_standby_names;  -- fail, requires reload
+ALTER SYSTEM SET synchronous_standby_names = 'fee, fi, fo, fum';  -- ok
+ALTER SYSTEM RESET synchronous_standby_names;  -- ok
+SET vacuum_defer_cleanup_age = 50;  -- fail, requires reload
+RESET vacuum_defer_cleanup_age;  -- fail, requires reload
+ALTER SYSTEM SET vacuum_defer_cleanup_age = 50;  -- ok
+ALTER SYSTEM RESET vacuum_defer_cleanup_age;  -- ok
+-- PGC_SIGHUP / REPLICATION_SENDING
+SET max_slot_wal_keep_size = 50;  -- fail, requires reload
+RESET max_slot_wal_keep_size;  -- fail, requires reload
+ALTER SYSTEM SET max_slot_wal_keep_size = 50;  -- ok
+ALTER SYSTEM RESET max_slot_wal_keep_size;  -- ok
+SET wal_keep_size = 50;  -- fail, requires reload
+RESET wal_keep_size;  -- fail, requires reload
+ALTER SYSTEM SET wal_keep_size = 50;  -- ok
+ALTER SYSTEM RESET wal_keep_size;  -- ok
+-- PGC_SIGHUP / REPLICATION_STANDBY
+SET hot_standby_feedback = OFF;  -- fail, requires reload
+RESET hot_standby_feedback;  -- fail, requires reload
+ALTER SYSTEM SET hot_standby_feedback = OFF;  -- ok
+ALTER SYSTEM RESET hot_standby_feedback;  -- ok
+SET max_standby_archive_delay = 50;  -- fail, requires reload
+RESET max_standby_archive_delay;  -- fail, requires reload
+ALTER SYSTEM SET max_standby_archive_delay = 50;  -- ok
+ALTER SYSTEM RESET max_standby_archive_delay;  -- ok
+SET max_standby_streaming_delay = 50;  -- fail, requires reload
+RESET max_standby_streaming_delay;  -- fail, requires reload
+ALTER SYSTEM SET max_standby_streaming_delay = 50;  -- ok
+ALTER SYSTEM RESET max_standby_streaming_delay;  -- ok
+SET primary_conninfo = 'postgresql://other@localhost/otherdb?connect_timeout=10&application_name=myapp';  -- fail, requires reload
+RESET primary_conninfo;  -- fail, requires reload
+ALTER SYSTEM SET primary_conninfo = 'postgresql://other@localhost/otherdb?connect_timeout=10&application_name=myapp';  -- ok
+ALTER SYSTEM RESET primary_conninfo;  -- ok
+SET primary_slot_name = 'bonne_fente';  -- fail, requires reload
+RESET primary_slot_name;  -- fail, requires reload
+ALTER SYSTEM SET primary_slot_name = 'bonne_fente';  -- ok
+ALTER SYSTEM RESET primary_slot_name;  -- ok
+SET promote_trigger_file = 'promote.trigger';  -- fail, requires reload
+RESET promote_trigger_file;  -- fail, requires reload
+ALTER SYSTEM SET promote_trigger_file = 'promote.trigger';  -- ok
+ALTER SYSTEM RESET promote_trigger_file;  -- ok
+SET recovery_min_apply_delay = 50;  -- fail, requires reload
+RESET recovery_min_apply_delay;  -- fail, requires reload
+ALTER SYSTEM SET recovery_min_apply_delay = 50;  -- ok
+ALTER SYSTEM RESET recovery_min_apply_delay;  -- ok
+SET wal_receiver_create_temp_slot = OFF;  -- fail, requires reload
+RESET wal_receiver_create_temp_slot;  -- fail, requires reload
+ALTER SYSTEM SET wal_receiver_create_temp_slot = OFF;  -- ok
+ALTER SYSTEM RESET wal_receiver_create_temp_slot;  -- ok
+SET wal_receiver_status_interval = 50;  -- fail, requires reload
+RESET wal_receiver_status_interval;  -- fail, requires reload
+ALTER SYSTEM SET wal_receiver_status_interval = 50;  -- ok
+ALTER SYSTEM RESET wal_receiver_status_interval;  -- ok
+SET wal_receiver_timeout = 50;  -- fail, requires reload
+RESET wal_receiver_timeout;  -- fail, requires reload
+ALTER SYSTEM SET wal_receiver_timeout = 50;  -- ok
+ALTER SYSTEM RESET wal_receiver_timeout;  -- ok
+SET wal_retrieve_retry_interval = 50;  -- fail, requires reload
+RESET wal_retrieve_retry_interval;  -- fail, requires reload
+ALTER SYSTEM SET wal_retrieve_retry_interval = 50;  -- ok
+ALTER SYSTEM RESET wal_retrieve_retry_interval;  -- ok
+-- PGC_SIGHUP / REPLICATION_SUBSCRIBERS
+SET max_sync_workers_per_subscription = 50;  -- fail, requires reload
+RESET max_sync_workers_per_subscription;  -- fail, requires reload
+ALTER SYSTEM SET max_sync_workers_per_subscription = 50;  -- ok
+ALTER SYSTEM RESET max_sync_workers_per_subscription;  -- ok
+-- PGC_SIGHUP / RESOURCES_BGWRITER
+SET bgwriter_delay = 50;  -- fail, requires reload
+RESET bgwriter_delay;  -- fail, requires reload
+ALTER SYSTEM SET bgwriter_delay = 50;  -- ok
+ALTER SYSTEM RESET bgwriter_delay;  -- ok
+SET bgwriter_flush_after = 50;  -- fail, requires reload
+RESET bgwriter_flush_after;  -- fail, requires reload
+ALTER SYSTEM SET bgwriter_flush_after = 50;  -- ok
+ALTER SYSTEM RESET bgwriter_flush_after;  -- ok
+SET bgwriter_lru_maxpages = 50;  -- fail, requires reload
+RESET bgwriter_lru_maxpages;  -- fail, requires reload
+ALTER SYSTEM SET bgwriter_lru_maxpages = 50;  -- ok
+ALTER SYSTEM RESET bgwriter_lru_maxpages;  -- ok
+SET bgwriter_lru_multiplier = 5;  -- fail, requires reload
+RESET bgwriter_lru_multiplier;  -- fail, requires reload
+ALTER SYSTEM SET bgwriter_lru_multiplier = 5;  -- ok
+ALTER SYSTEM RESET bgwriter_lru_multiplier;  -- ok
+-- PGC_SIGHUP / RESOURCES_MEM
+SET autovacuum_work_mem = 50;  -- fail, requires reload
+RESET autovacuum_work_mem;  -- fail, requires reload
+ALTER SYSTEM SET autovacuum_work_mem = 50;  -- ok
+ALTER SYSTEM RESET autovacuum_work_mem;  -- ok
+-- PGC_SIGHUP / STATS_COLLECTOR
+SET stats_temp_directory = 'pg_stat_tmp';  -- fail, requires reload
+RESET stats_temp_directory;  -- fail, requires reload
+ALTER SYSTEM SET stats_temp_directory = 'pg_stat_tmp';  -- ok
+ALTER SYSTEM RESET stats_temp_directory;  -- ok
+-- PGC_SIGHUP / WAL_ARCHIVE_RECOVERY
+SET archive_cleanup_command = '/bin/cleanup my stuff';  -- fail, requires reload
+RESET archive_cleanup_command;  -- fail, requires reload
+ALTER SYSTEM SET archive_cleanup_command = '/bin/cleanup my stuff';  -- ok
+ALTER SYSTEM RESET archive_cleanup_command;  -- ok
+SET recovery_end_command = '/bin/recover my stuff';  -- fail, requires reload
+RESET recovery_end_command;  -- fail, requires reload
+ALTER SYSTEM SET recovery_end_command = '/bin/recover my stuff';  -- ok
+ALTER SYSTEM RESET recovery_end_command;  -- ok
+SET restore_command = '/bin/restore my stuff';  -- fail, requires reload
+RESET restore_command;  -- fail, requires reload
+ALTER SYSTEM SET restore_command = '/bin/restore my stuff';  -- ok
+ALTER SYSTEM RESET restore_command;  -- ok
+-- PGC_SIGHUP / WAL_ARCHIVING
+SET archive_command = '/bin/archive my stuff';  -- fail, requires reload
+RESET archive_command;  -- fail, requires reload
+ALTER SYSTEM SET archive_command = '/bin/archive my stuff';  -- ok
+ALTER SYSTEM RESET archive_command;  -- ok
+SET archive_timeout = 50;  -- fail, requires reload
+RESET archive_timeout;  -- fail, requires reload
+ALTER SYSTEM SET archive_timeout = 50;  -- ok
+ALTER SYSTEM RESET archive_timeout;  -- ok
+-- PGC_SIGHUP / WAL_CHECKPOINTS
+SET checkpoint_completion_target = 0;  -- fail, requires reload
+RESET checkpoint_completion_target;  -- fail, requires reload
+ALTER SYSTEM SET checkpoint_completion_target = 0;  -- ok
+ALTER SYSTEM RESET checkpoint_completion_target;  -- ok
+SET checkpoint_flush_after = 50;  -- fail, requires reload
+RESET checkpoint_flush_after;  -- fail, requires reload
+ALTER SYSTEM SET checkpoint_flush_after = 50;  -- ok
+ALTER SYSTEM RESET checkpoint_flush_after;  -- ok
+SET checkpoint_timeout = 50;  -- fail, requires reload
+RESET checkpoint_timeout;  -- fail, requires reload
+ALTER SYSTEM SET checkpoint_timeout = 50;  -- ok
+ALTER SYSTEM RESET checkpoint_timeout;  -- ok
+SET checkpoint_warning = 50;  -- fail, requires reload
+RESET checkpoint_warning;  -- fail, requires reload
+ALTER SYSTEM SET checkpoint_warning = 50;  -- ok
+ALTER SYSTEM RESET checkpoint_warning;  -- ok
+SET max_wal_size = 50;  -- fail, requires reload
+RESET max_wal_size;  -- fail, requires reload
+ALTER SYSTEM SET max_wal_size = 50;  -- ok
+ALTER SYSTEM RESET max_wal_size;  -- ok
+SET min_wal_size = 50;  -- fail, requires reload
+RESET min_wal_size;  -- fail, requires reload
+ALTER SYSTEM SET min_wal_size = 50;  -- ok
+ALTER SYSTEM RESET min_wal_size;  -- ok
+-- PGC_SIGHUP / WAL_SETTINGS
+SET fsync = OFF;  -- fail, requires reload
+RESET fsync;  -- fail, requires reload
+ALTER SYSTEM SET fsync = OFF;  -- ok
+ALTER SYSTEM RESET fsync;  -- ok
+SET full_page_writes = OFF;  -- fail, requires reload
+RESET full_page_writes;  -- fail, requires reload
+ALTER SYSTEM SET full_page_writes = OFF;  -- ok
+ALTER SYSTEM RESET full_page_writes;  -- ok
+SET wal_sync_method = 'open_datasync';  -- fail, requires reload
+RESET wal_sync_method;  -- fail, requires reload
+ALTER SYSTEM SET wal_sync_method = 'open_datasync';  -- ok
+ALTER SYSTEM RESET wal_sync_method;  -- ok
+SET wal_writer_delay = 50;  -- fail, requires reload
+RESET wal_writer_delay;  -- fail, requires reload
+ALTER SYSTEM SET wal_writer_delay = 50;  -- ok
+ALTER SYSTEM RESET wal_writer_delay;  -- ok
+SET wal_writer_flush_after = 50;  -- fail, requires reload
+RESET wal_writer_flush_after;  -- fail, requires reload
+ALTER SYSTEM SET wal_writer_flush_after = 50;  -- ok
+ALTER SYSTEM RESET wal_writer_flush_after;  -- ok
+-- PGC_SUSET / CLIENT_CONN_LOCALE
+SET lc_messages = 'en_US.UTF-8';  -- ok
+RESET lc_messages;  -- ok
+ALTER SYSTEM SET lc_messages = 'en_US.UTF-8';  -- ok
+ALTER SYSTEM RESET lc_messages;  -- ok
+-- PGC_SUSET / CLIENT_CONN_OTHER
+SET dynamic_library_path = '$libdir';  -- ok
+RESET dynamic_library_path;  -- ok
+ALTER SYSTEM SET dynamic_library_path = '$libdir';  -- ok
+ALTER SYSTEM RESET dynamic_library_path;  -- ok
+-- PGC_SUSET / CLIENT_CONN_PRELOAD
+SET session_preload_libraries = 'gssapi_krb5';  -- ok
+RESET session_preload_libraries;  -- ok
+ALTER SYSTEM SET session_preload_libraries = 'gssapi_krb5';  -- ok
+ALTER SYSTEM RESET session_preload_libraries;  -- ok
+-- PGC_SUSET / CLIENT_CONN_STATEMENT
+SET session_replication_role = 'origin';  -- ok
+RESET session_replication_role;  -- ok
+ALTER SYSTEM SET session_replication_role = 'origin';  -- ok
+ALTER SYSTEM RESET session_replication_role;  -- ok
+-- PGC_SUSET / COMPAT_OPTIONS_PREVIOUS
+SET lo_compat_privileges = OFF;  -- ok
+RESET lo_compat_privileges;  -- ok
+ALTER SYSTEM SET lo_compat_privileges = OFF;  -- ok
+ALTER SYSTEM RESET lo_compat_privileges;  -- ok
+-- PGC_SUSET / DEVELOPER_OPTIONS
+SET allow_system_table_mods = OFF;  -- ok
+RESET allow_system_table_mods;  -- ok
+ALTER SYSTEM SET allow_system_table_mods = OFF;  -- ok
+ALTER SYSTEM RESET allow_system_table_mods;  -- ok
+SET backtrace_functions = 'partition_list_bsearch,partition_range_datum_bsearch,partition_hash_bsearch';  -- ok
+RESET backtrace_functions;  -- ok
+ALTER SYSTEM SET backtrace_functions = 'partition_list_bsearch,partition_range_datum_bsearch,partition_hash_bsearch';  -- ok
+ALTER SYSTEM RESET backtrace_functions;  -- ok
+SET debug_discard_caches = 2;  -- ok
+RESET debug_discard_caches;  -- ok
+ALTER SYSTEM SET debug_discard_caches = 2;  -- ok
+ALTER SYSTEM RESET debug_discard_caches;  -- ok
+SET ignore_checksum_failure = OFF;  -- ok
+RESET ignore_checksum_failure;  -- ok
+ALTER SYSTEM SET ignore_checksum_failure = OFF;  -- ok
+ALTER SYSTEM RESET ignore_checksum_failure;  -- ok
+SET jit_dump_bitcode = OFF;  -- ok
+RESET jit_dump_bitcode;  -- ok
+ALTER SYSTEM SET jit_dump_bitcode = OFF;  -- ok
+ALTER SYSTEM RESET jit_dump_bitcode;  -- ok
+SET wal_consistency_checking = 'heap, heap2, btree, hash, gin, gist, sequence, spgist, brin, generic';  -- ok
+RESET wal_consistency_checking;  -- ok
+ALTER SYSTEM SET wal_consistency_checking = 'heap, heap2, btree, hash, gin, gist, sequence, spgist, brin, generic';  -- ok
+ALTER SYSTEM RESET wal_consistency_checking;  -- ok
+SET zero_damaged_pages = OFF;  -- ok
+RESET zero_damaged_pages;  -- ok
+ALTER SYSTEM SET zero_damaged_pages = OFF;  -- ok
+ALTER SYSTEM RESET zero_damaged_pages;  -- ok
+-- PGC_SUSET / LOCK_MANAGEMENT
+SET deadlock_timeout = 1073741824;  -- ok
+RESET deadlock_timeout;  -- ok
+ALTER SYSTEM SET deadlock_timeout = 1073741824;  -- ok
+ALTER SYSTEM RESET deadlock_timeout;  -- ok
+-- PGC_SUSET / LOGGING_WHAT
+SET log_duration = OFF;  -- ok
+RESET log_duration;  -- ok
+ALTER SYSTEM SET log_duration = OFF;  -- ok
+ALTER SYSTEM RESET log_duration;  -- ok
+SET log_error_verbosity = 'default';  -- ok
+RESET log_error_verbosity;  -- ok
+ALTER SYSTEM SET log_error_verbosity = 'default';  -- ok
+ALTER SYSTEM RESET log_error_verbosity;  -- ok
+SET log_lock_waits = OFF;  -- ok
+RESET log_lock_waits;  -- ok
+ALTER SYSTEM SET log_lock_waits = OFF;  -- ok
+ALTER SYSTEM RESET log_lock_waits;  -- ok
+SET log_parameter_max_length = 50;  -- ok
+RESET log_parameter_max_length;  -- ok
+ALTER SYSTEM SET log_parameter_max_length = 50;  -- ok
+ALTER SYSTEM RESET log_parameter_max_length;  -- ok
+SET log_replication_commands = OFF;  -- ok
+RESET log_replication_commands;  -- ok
+ALTER SYSTEM SET log_replication_commands = OFF;  -- ok
+ALTER SYSTEM RESET log_replication_commands;  -- ok
+SET log_statement = 'none';  -- ok
+RESET log_statement;  -- ok
+ALTER SYSTEM SET log_statement = 'none';  -- ok
+ALTER SYSTEM RESET log_statement;  -- ok
+SET log_temp_files = 50;  -- ok
+RESET log_temp_files;  -- ok
+ALTER SYSTEM SET log_temp_files = 50;  -- ok
+ALTER SYSTEM RESET log_temp_files;  -- ok
+-- PGC_SUSET / LOGGING_WHEN
+SET log_min_duration_sample = 50;  -- ok
+RESET log_min_duration_sample;  -- ok
+ALTER SYSTEM SET log_min_duration_sample = 50;  -- ok
+ALTER SYSTEM RESET log_min_duration_sample;  -- ok
+SET log_min_duration_statement = 50;  -- ok
+RESET log_min_duration_statement;  -- ok
+ALTER SYSTEM SET log_min_duration_statement = 50;  -- ok
+ALTER SYSTEM RESET log_min_duration_statement;  -- ok
+SET log_min_error_statement = 'error';  -- ok
+RESET log_min_error_statement;  -- ok
+ALTER SYSTEM SET log_min_error_statement = 'error';  -- ok
+ALTER SYSTEM RESET log_min_error_statement;  -- ok
+SET log_min_messages = 'warning';  -- ok
+RESET log_min_messages;  -- ok
+ALTER SYSTEM SET log_min_messages = 'warning';  -- ok
+ALTER SYSTEM RESET log_min_messages;  -- ok
+SET log_statement_sample_rate = 0;  -- ok
+RESET log_statement_sample_rate;  -- ok
+ALTER SYSTEM SET log_statement_sample_rate = 0;  -- ok
+ALTER SYSTEM RESET log_statement_sample_rate;  -- ok
+SET log_transaction_sample_rate = 0;  -- ok
+RESET log_transaction_sample_rate;  -- ok
+ALTER SYSTEM SET log_transaction_sample_rate = 0;  -- ok
+ALTER SYSTEM RESET log_transaction_sample_rate;  -- ok
+-- PGC_SUSET / PROCESS_TITLE
+SET update_process_title = OFF;  -- ok
+RESET update_process_title;  -- ok
+ALTER SYSTEM SET update_process_title = OFF;  -- ok
+ALTER SYSTEM RESET update_process_title;  -- ok
+-- PGC_SUSET / RESOURCES_DISK
+SET temp_file_limit = 50;  -- ok
+RESET temp_file_limit;  -- ok
+ALTER SYSTEM SET temp_file_limit = 50;  -- ok
+ALTER SYSTEM RESET temp_file_limit;  -- ok
+-- PGC_SUSET / RESOURCES_MEM
+SET max_stack_depth = 3890;  -- ok
+RESET max_stack_depth;  -- ok
+ALTER SYSTEM SET max_stack_depth = 3890;  -- ok
+ALTER SYSTEM RESET max_stack_depth;  -- ok
+-- PGC_SUSET / STATS_COLLECTOR
+SET track_activities = OFF;  -- ok
+RESET track_activities;  -- ok
+ALTER SYSTEM SET track_activities = OFF;  -- ok
+ALTER SYSTEM RESET track_activities;  -- ok
+SET track_counts = OFF;  -- ok
+RESET track_counts;  -- ok
+ALTER SYSTEM SET track_counts = OFF;  -- ok
+ALTER SYSTEM RESET track_counts;  -- ok
+SET track_functions = 'none';  -- ok
+RESET track_functions;  -- ok
+ALTER SYSTEM SET track_functions = 'none';  -- ok
+ALTER SYSTEM RESET track_functions;  -- ok
+SET track_io_timing = OFF;  -- ok
+RESET track_io_timing;  -- ok
+ALTER SYSTEM SET track_io_timing = OFF;  -- ok
+ALTER SYSTEM RESET track_io_timing;  -- ok
+SET track_wal_io_timing = OFF;  -- ok
+RESET track_wal_io_timing;  -- ok
+ALTER SYSTEM SET track_wal_io_timing = OFF;  -- ok
+ALTER SYSTEM RESET track_wal_io_timing;  -- ok
+-- PGC_SUSET / STATS_MONITORING
+SET compute_query_id = 'auto';  -- ok
+RESET compute_query_id;  -- ok
+ALTER SYSTEM SET compute_query_id = 'auto';  -- ok
+ALTER SYSTEM RESET compute_query_id;  -- ok
+SET log_executor_stats = OFF;  -- ok
+RESET log_executor_stats;  -- ok
+ALTER SYSTEM SET log_executor_stats = OFF;  -- ok
+ALTER SYSTEM RESET log_executor_stats;  -- ok
+SET log_parser_stats = OFF;  -- ok
+RESET log_parser_stats;  -- ok
+ALTER SYSTEM SET log_parser_stats = OFF;  -- ok
+ALTER SYSTEM RESET log_parser_stats;  -- ok
+SET log_planner_stats = OFF;  -- ok
+RESET log_planner_stats;  -- ok
+ALTER SYSTEM SET log_planner_stats = OFF;  -- ok
+ALTER SYSTEM RESET log_planner_stats;  -- ok
+SET log_statement_stats = OFF;  -- ok
+RESET log_statement_stats;  -- ok
+ALTER SYSTEM SET log_statement_stats = OFF;  -- ok
+ALTER SYSTEM RESET log_statement_stats;  -- ok
+-- PGC_SUSET / WAL_SETTINGS
+SET commit_delay = 50;  -- ok
+RESET commit_delay;  -- ok
+ALTER SYSTEM SET commit_delay = 50;  -- ok
+ALTER SYSTEM RESET commit_delay;  -- ok
+SET wal_compression = 'pglz';  -- ok
+RESET wal_compression;  -- ok
+ALTER SYSTEM SET wal_compression = 'pglz';  -- ok
+ALTER SYSTEM RESET wal_compression;  -- ok
+SET wal_init_zero = OFF;  -- ok
+RESET wal_init_zero;  -- ok
+ALTER SYSTEM SET wal_init_zero = OFF;  -- ok
+ALTER SYSTEM RESET wal_init_zero;  -- ok
+SET wal_recycle = OFF;  -- ok
+RESET wal_recycle;  -- ok
+ALTER SYSTEM SET wal_recycle = OFF;  -- ok
+ALTER SYSTEM RESET wal_recycle;  -- ok
+-- PGC_SU_BACKEND / DEVELOPER_OPTIONS
+SET jit_debugging_support = OFF;  -- fail, cannot be set after connection start
+RESET jit_debugging_support;  -- fail, cannot be set after connection start
+ALTER SYSTEM SET jit_debugging_support = OFF;  -- ok
+ALTER SYSTEM RESET jit_debugging_support;  -- ok
+SET jit_profiling_support = OFF;  -- fail, cannot be set after connection start
+RESET jit_profiling_support;  -- fail, cannot be set after connection start
+ALTER SYSTEM SET jit_profiling_support = OFF;  -- ok
+ALTER SYSTEM RESET jit_profiling_support;  -- ok
+-- PGC_SU_BACKEND / LOGGING_WHAT
+SET log_connections = OFF;  -- fail, cannot be set after connection start
+RESET log_connections;  -- fail, cannot be set after connection start
+ALTER SYSTEM SET log_connections = OFF;  -- ok
+ALTER SYSTEM RESET log_connections;  -- ok
+SET log_disconnections = OFF;  -- fail, cannot be set after connection start
+RESET log_disconnections;  -- fail, cannot be set after connection start
+ALTER SYSTEM SET log_disconnections = OFF;  -- ok
+ALTER SYSTEM RESET log_disconnections;  -- ok
+-- PGC_USERSET / CLIENT_CONN_LOCALE
+SET DateStyle = 'ISO, MDY';  -- ok
+RESET DateStyle;  -- ok
+ALTER SYSTEM SET DateStyle = 'ISO, MDY';  -- ok
+ALTER SYSTEM RESET DateStyle;  -- ok
+SET IntervalStyle = 'postgres';  -- ok
+RESET IntervalStyle;  -- ok
+ALTER SYSTEM SET IntervalStyle = 'postgres';  -- ok
+ALTER SYSTEM RESET IntervalStyle;  -- ok
+SET TimeZone = 'Europe/Helsinki';  -- ok
+RESET TimeZone;  -- ok
+ALTER SYSTEM SET TimeZone = 'Europe/Helsinki';  -- ok
+ALTER SYSTEM RESET TimeZone;  -- ok
+SET client_encoding = 'UTF8';  -- ok
+RESET client_encoding;  -- ok
+ALTER SYSTEM SET client_encoding = 'UTF8';  -- ok
+ALTER SYSTEM RESET client_encoding;  -- ok
+SET default_text_search_config = 'pg_catalog.english';  -- ok
+RESET default_text_search_config;  -- ok
+ALTER SYSTEM SET default_text_search_config = 'pg_catalog.english';  -- ok
+ALTER SYSTEM RESET default_text_search_config;  -- ok
+SET extra_float_digits = -6;  -- ok
+RESET extra_float_digits;  -- ok
+ALTER SYSTEM SET extra_float_digits = -6;  -- ok
+ALTER SYSTEM RESET extra_float_digits;  -- ok
+SET lc_monetary = 'en_US.UTF-8';  -- ok
+RESET lc_monetary;  -- ok
+ALTER SYSTEM SET lc_monetary = 'en_US.UTF-8';  -- ok
+ALTER SYSTEM RESET lc_monetary;  -- ok
+SET lc_numeric = 'en_US.UTF-8';  -- ok
+RESET lc_numeric;  -- ok
+ALTER SYSTEM SET lc_numeric = 'en_US.UTF-8';  -- ok
+ALTER SYSTEM RESET lc_numeric;  -- ok
+SET lc_time = 'en_US.UTF-8';  -- ok
+RESET lc_time;  -- ok
+ALTER SYSTEM SET lc_time = 'en_US.UTF-8';  -- ok
+ALTER SYSTEM RESET lc_time;  -- ok
+SET timezone_abbreviations = 'Default';  -- ok
+RESET timezone_abbreviations;  -- ok
+ALTER SYSTEM SET timezone_abbreviations = 'Default';  -- ok
+ALTER SYSTEM RESET timezone_abbreviations;  -- ok
+-- PGC_USERSET / CLIENT_CONN_OTHER
+SET gin_fuzzy_search_limit = 50;  -- ok
+RESET gin_fuzzy_search_limit;  -- ok
+ALTER SYSTEM SET gin_fuzzy_search_limit = 50;  -- ok
+ALTER SYSTEM RESET gin_fuzzy_search_limit;  -- ok
+-- PGC_USERSET / CLIENT_CONN_PRELOAD
+SET local_preload_libraries = 'gssapi_krb5';  -- ok
+RESET local_preload_libraries;  -- ok
+ALTER SYSTEM SET local_preload_libraries = 'gssapi_krb5';  -- ok
+ALTER SYSTEM RESET local_preload_libraries;  -- ok
+-- PGC_USERSET / CLIENT_CONN_STATEMENT
+SET bytea_output = 'hex';  -- ok
+RESET bytea_output;  -- ok
+ALTER SYSTEM SET bytea_output = 'hex';  -- ok
+ALTER SYSTEM RESET bytea_output;  -- ok
+SET check_function_bodies = OFF;  -- ok
+RESET check_function_bodies;  -- ok
+ALTER SYSTEM SET check_function_bodies = OFF;  -- ok
+ALTER SYSTEM RESET check_function_bodies;  -- ok
+SET client_min_messages = 'notice';  -- ok
+RESET client_min_messages;  -- ok
+ALTER SYSTEM SET client_min_messages = 'notice';  -- ok
+ALTER SYSTEM RESET client_min_messages;  -- ok
+SET default_table_access_method = 'heap';  -- ok
+RESET default_table_access_method;  -- ok
+ALTER SYSTEM SET default_table_access_method = 'heap';  -- ok
+ALTER SYSTEM RESET default_table_access_method;  -- ok
+SET default_toast_compression = 'pglz';  -- ok
+RESET default_toast_compression;  -- ok
+ALTER SYSTEM SET default_toast_compression = 'pglz';  -- ok
+ALTER SYSTEM RESET default_toast_compression;  -- ok
+SET default_transaction_deferrable = OFF;  -- ok
+RESET default_transaction_deferrable;  -- ok
+ALTER SYSTEM SET default_transaction_deferrable = OFF;  -- ok
+ALTER SYSTEM RESET default_transaction_deferrable;  -- ok
+SET default_transaction_isolation = 'read committed';  -- ok
+RESET default_transaction_isolation;  -- ok
+ALTER SYSTEM SET default_transaction_isolation = 'read committed';  -- ok
+ALTER SYSTEM RESET default_transaction_isolation;  -- ok
+SET default_transaction_read_only = OFF;  -- ok
+RESET default_transaction_read_only;  -- ok
+ALTER SYSTEM SET default_transaction_read_only = OFF;  -- ok
+ALTER SYSTEM RESET default_transaction_read_only;  -- ok
+SET gin_pending_list_limit = 1073741855;  -- ok
+RESET gin_pending_list_limit;  -- ok
+ALTER SYSTEM SET gin_pending_list_limit = 1073741855;  -- ok
+ALTER SYSTEM RESET gin_pending_list_limit;  -- ok
+SET idle_in_transaction_session_timeout = 50;  -- ok
+RESET idle_in_transaction_session_timeout;  -- ok
+ALTER SYSTEM SET idle_in_transaction_session_timeout = 50;  -- ok
+ALTER SYSTEM RESET idle_in_transaction_session_timeout;  -- ok
+SET idle_session_timeout = 50;  -- ok
+RESET idle_session_timeout;  -- ok
+ALTER SYSTEM SET idle_session_timeout = 50;  -- ok
+ALTER SYSTEM RESET idle_session_timeout;  -- ok
+SET lock_timeout = 50;  -- ok
+RESET lock_timeout;  -- ok
+ALTER SYSTEM SET lock_timeout = 50;  -- ok
+ALTER SYSTEM RESET lock_timeout;  -- ok
+SET row_security = OFF;  -- ok
+RESET row_security;  -- ok
+ALTER SYSTEM SET row_security = OFF;  -- ok
+ALTER SYSTEM RESET row_security;  -- ok
+SET search_path = '"$user", public';  -- ok
+RESET search_path;  -- ok
+ALTER SYSTEM SET search_path = '"$user", public';  -- ok
+ALTER SYSTEM RESET search_path;  -- ok
+SET statement_timeout = 5250;  -- ok
+RESET statement_timeout;  -- ok
+ALTER SYSTEM SET statement_timeout = 5250;  -- ok
+ALTER SYSTEM RESET statement_timeout;  -- ok
+SET transaction_deferrable = OFF;  -- ok
+RESET transaction_deferrable;  -- ok
+ALTER SYSTEM SET transaction_deferrable = OFF;  -- fail, cannot be changed
+ALTER SYSTEM RESET transaction_deferrable;  -- fail, cannot be changed
+SET transaction_read_only = OFF;  -- ok
+RESET transaction_read_only;  -- ok
+ALTER SYSTEM SET transaction_read_only = OFF;  -- fail, cannot be changed
+ALTER SYSTEM RESET transaction_read_only;  -- fail, cannot be changed
+SET vacuum_failsafe_age = 50;  -- ok
+RESET vacuum_failsafe_age;  -- ok
+ALTER SYSTEM SET vacuum_failsafe_age = 50;  -- ok
+ALTER SYSTEM RESET vacuum_failsafe_age;  -- ok
+SET vacuum_freeze_min_age = 50;  -- ok
+RESET vacuum_freeze_min_age;  -- ok
+ALTER SYSTEM SET vacuum_freeze_min_age = 50;  -- ok
+ALTER SYSTEM RESET vacuum_freeze_min_age;  -- ok
+SET vacuum_freeze_table_age = 50;  -- ok
+RESET vacuum_freeze_table_age;  -- ok
+ALTER SYSTEM SET vacuum_freeze_table_age = 50;  -- ok
+ALTER SYSTEM RESET vacuum_freeze_table_age;  -- ok
+SET vacuum_multixact_failsafe_age = 50;  -- ok
+RESET vacuum_multixact_failsafe_age;  -- ok
+ALTER SYSTEM SET vacuum_multixact_failsafe_age = 50;  -- ok
+ALTER SYSTEM RESET vacuum_multixact_failsafe_age;  -- ok
+SET vacuum_multixact_freeze_min_age = 50;  -- ok
+RESET vacuum_multixact_freeze_min_age;  -- ok
+ALTER SYSTEM SET vacuum_multixact_freeze_min_age = 50;  -- ok
+ALTER SYSTEM RESET vacuum_multixact_freeze_min_age;  -- ok
+SET vacuum_multixact_freeze_table_age = 50;  -- ok
+RESET vacuum_multixact_freeze_table_age;  -- ok
+ALTER SYSTEM SET vacuum_multixact_freeze_table_age = 50;  -- ok
+ALTER SYSTEM RESET vacuum_multixact_freeze_table_age;  -- ok
+SET xmlbinary = 'base64';  -- ok
+RESET xmlbinary;  -- ok
+ALTER SYSTEM SET xmlbinary = 'base64';  -- ok
+ALTER SYSTEM RESET xmlbinary;  -- ok
+SET xmloption = 'content';  -- ok
+RESET xmloption;  -- ok
+ALTER SYSTEM SET xmloption = 'content';  -- ok
+ALTER SYSTEM RESET xmloption;  -- ok
+-- PGC_USERSET / COMPAT_OPTIONS_PREVIOUS
+SET array_nulls = OFF;  -- ok
+RESET array_nulls;  -- ok
+ALTER SYSTEM SET array_nulls = OFF;  -- ok
+ALTER SYSTEM RESET array_nulls;  -- ok
+SET escape_string_warning = OFF;  -- ok
+RESET escape_string_warning;  -- ok
+ALTER SYSTEM SET escape_string_warning = OFF;  -- ok
+ALTER SYSTEM RESET escape_string_warning;  -- ok
+SET quote_all_identifiers = OFF;  -- ok
+RESET quote_all_identifiers;  -- ok
+ALTER SYSTEM SET quote_all_identifiers = OFF;  -- ok
+ALTER SYSTEM RESET quote_all_identifiers;  -- ok
+SET standard_conforming_strings = OFF;  -- ok
+RESET standard_conforming_strings;  -- ok
+ALTER SYSTEM SET standard_conforming_strings = OFF;  -- ok
+ALTER SYSTEM RESET standard_conforming_strings;  -- ok
+SET synchronize_seqscans = OFF;  -- ok
+RESET synchronize_seqscans;  -- ok
+ALTER SYSTEM SET synchronize_seqscans = OFF;  -- ok
+ALTER SYSTEM RESET synchronize_seqscans;  -- ok
+-- PGC_USERSET / CONN_AUTH_AUTH
+SET password_encryption = 'scram-sha-256';  -- ok
+RESET password_encryption;  -- ok
+ALTER SYSTEM SET password_encryption = 'scram-sha-256';  -- ok
+ALTER SYSTEM RESET password_encryption;  -- ok
+-- PGC_USERSET / CONN_AUTH_SETTINGS
+SET client_connection_check_interval = 0;  -- ok
+RESET client_connection_check_interval;  -- ok
+ALTER SYSTEM SET client_connection_check_interval = 0;  -- ok
+ALTER SYSTEM RESET client_connection_check_interval;  -- ok
+SET tcp_keepalives_count = 50;  -- ok
+RESET tcp_keepalives_count;  -- ok
+ALTER SYSTEM SET tcp_keepalives_count = 50;  -- ok
+ALTER SYSTEM RESET tcp_keepalives_count;  -- ok
+SET tcp_keepalives_idle = 50;  -- ok
+RESET tcp_keepalives_idle;  -- ok
+ALTER SYSTEM SET tcp_keepalives_idle = 50;  -- ok
+ALTER SYSTEM RESET tcp_keepalives_idle;  -- ok
+SET tcp_keepalives_interval = 50;  -- ok
+RESET tcp_keepalives_interval;  -- ok
+ALTER SYSTEM SET tcp_keepalives_interval = 50;  -- ok
+ALTER SYSTEM RESET tcp_keepalives_interval;  -- ok
+SET tcp_user_timeout = 50;  -- ok
+RESET tcp_user_timeout;  -- ok
+ALTER SYSTEM SET tcp_user_timeout = 50;  -- ok
+ALTER SYSTEM RESET tcp_user_timeout;  -- ok
+-- PGC_USERSET / CONN_AUTH_SSL
+SET ssl_renegotiation_limit = 0;  -- ok
+RESET ssl_renegotiation_limit;  -- ok
+ALTER SYSTEM SET ssl_renegotiation_limit = 0;  -- fail, cannot be changed
+ALTER SYSTEM RESET ssl_renegotiation_limit;  -- fail, cannot be changed
+-- PGC_USERSET / DEVELOPER_OPTIONS
+SET force_parallel_mode = 'off';  -- ok
+RESET force_parallel_mode;  -- ok
+ALTER SYSTEM SET force_parallel_mode = 'off';  -- ok
+ALTER SYSTEM RESET force_parallel_mode;  -- ok
+SET jit_expressions = OFF;  -- ok
+RESET jit_expressions;  -- ok
+ALTER SYSTEM SET jit_expressions = OFF;  -- ok
+ALTER SYSTEM RESET jit_expressions;  -- ok
+SET jit_tuple_deforming = OFF;  -- ok
+RESET jit_tuple_deforming;  -- ok
+ALTER SYSTEM SET jit_tuple_deforming = OFF;  -- ok
+ALTER SYSTEM RESET jit_tuple_deforming;  -- ok
+SET trace_notify = OFF;  -- ok
+RESET trace_notify;  -- ok
+ALTER SYSTEM SET trace_notify = OFF;  -- ok
+ALTER SYSTEM RESET trace_notify;  -- ok
+SET trace_sort = OFF;  -- ok
+RESET trace_sort;  -- ok
+ALTER SYSTEM SET trace_sort = OFF;  -- ok
+ALTER SYSTEM RESET trace_sort;  -- ok
+-- PGC_USERSET / ERROR_HANDLING_OPTIONS
+SET exit_on_error = OFF;  -- ok
+RESET exit_on_error;  -- ok
+ALTER SYSTEM SET exit_on_error = OFF;  -- ok
+ALTER SYSTEM RESET exit_on_error;  -- ok
+-- PGC_USERSET / LOGGING_WHAT
+SET application_name = 'psql';  -- ok
+RESET application_name;  -- ok
+ALTER SYSTEM SET application_name = 'psql';  -- ok
+ALTER SYSTEM RESET application_name;  -- ok
+SET debug_pretty_print = OFF;  -- ok
+RESET debug_pretty_print;  -- ok
+ALTER SYSTEM SET debug_pretty_print = OFF;  -- ok
+ALTER SYSTEM RESET debug_pretty_print;  -- ok
+SET debug_print_parse = OFF;  -- ok
+RESET debug_print_parse;  -- ok
+ALTER SYSTEM SET debug_print_parse = OFF;  -- ok
+ALTER SYSTEM RESET debug_print_parse;  -- ok
+SET debug_print_plan = OFF;  -- ok
+RESET debug_print_plan;  -- ok
+ALTER SYSTEM SET debug_print_plan = OFF;  -- ok
+ALTER SYSTEM RESET debug_print_plan;  -- ok
+SET debug_print_rewritten = OFF;  -- ok
+RESET debug_print_rewritten;  -- ok
+ALTER SYSTEM SET debug_print_rewritten = OFF;  -- ok
+ALTER SYSTEM RESET debug_print_rewritten;  -- ok
+SET log_parameter_max_length_on_error = 50;  -- ok
+RESET log_parameter_max_length_on_error;  -- ok
+ALTER SYSTEM SET log_parameter_max_length_on_error = 50;  -- ok
+ALTER SYSTEM RESET log_parameter_max_length_on_error;  -- ok
+-- PGC_USERSET / QUERY_TUNING_COST
+SET cpu_index_tuple_cost = 50;  -- ok
+RESET cpu_index_tuple_cost;  -- ok
+ALTER SYSTEM SET cpu_index_tuple_cost = 50;  -- ok
+ALTER SYSTEM RESET cpu_index_tuple_cost;  -- ok
+SET cpu_operator_cost = 50;  -- ok
+RESET cpu_operator_cost;  -- ok
+ALTER SYSTEM SET cpu_operator_cost = 50;  -- ok
+ALTER SYSTEM RESET cpu_operator_cost;  -- ok
+SET cpu_tuple_cost = 50;  -- ok
+RESET cpu_tuple_cost;  -- ok
+ALTER SYSTEM SET cpu_tuple_cost = 50;  -- ok
+ALTER SYSTEM RESET cpu_tuple_cost;  -- ok
+SET effective_cache_size = 1073741824;  -- ok
+RESET effective_cache_size;  -- ok
+ALTER SYSTEM SET effective_cache_size = 1073741824;  -- ok
+ALTER SYSTEM RESET effective_cache_size;  -- ok
+SET jit_above_cost = 50;  -- ok
+RESET jit_above_cost;  -- ok
+ALTER SYSTEM SET jit_above_cost = 50;  -- ok
+ALTER SYSTEM RESET jit_above_cost;  -- ok
+SET jit_inline_above_cost = 50;  -- ok
+RESET jit_inline_above_cost;  -- ok
+ALTER SYSTEM SET jit_inline_above_cost = 50;  -- ok
+ALTER SYSTEM RESET jit_inline_above_cost;  -- ok
+SET jit_optimize_above_cost = 50;  -- ok
+RESET jit_optimize_above_cost;  -- ok
+ALTER SYSTEM SET jit_optimize_above_cost = 50;  -- ok
+ALTER SYSTEM RESET jit_optimize_above_cost;  -- ok
+SET min_parallel_index_scan_size = 50;  -- ok
+RESET min_parallel_index_scan_size;  -- ok
+ALTER SYSTEM SET min_parallel_index_scan_size = 50;  -- ok
+ALTER SYSTEM RESET min_parallel_index_scan_size;  -- ok
+SET min_parallel_table_scan_size = 50;  -- ok
+RESET min_parallel_table_scan_size;  -- ok
+ALTER SYSTEM SET min_parallel_table_scan_size = 50;  -- ok
+ALTER SYSTEM RESET min_parallel_table_scan_size;  -- ok
+SET parallel_setup_cost = 50;  -- ok
+RESET parallel_setup_cost;  -- ok
+ALTER SYSTEM SET parallel_setup_cost = 50;  -- ok
+ALTER SYSTEM RESET parallel_setup_cost;  -- ok
+SET parallel_tuple_cost = 50;  -- ok
+RESET parallel_tuple_cost;  -- ok
+ALTER SYSTEM SET parallel_tuple_cost = 50;  -- ok
+ALTER SYSTEM RESET parallel_tuple_cost;  -- ok
+SET random_page_cost = 50;  -- ok
+RESET random_page_cost;  -- ok
+ALTER SYSTEM SET random_page_cost = 50;  -- ok
+ALTER SYSTEM RESET random_page_cost;  -- ok
+SET seq_page_cost = 50;  -- ok
+RESET seq_page_cost;  -- ok
+ALTER SYSTEM SET seq_page_cost = 50;  -- ok
+ALTER SYSTEM RESET seq_page_cost;  -- ok
+-- PGC_USERSET / QUERY_TUNING_GEQO
+SET geqo = OFF;  -- ok
+RESET geqo;  -- ok
+ALTER SYSTEM SET geqo = OFF;  -- ok
+ALTER SYSTEM RESET geqo;  -- ok
+SET geqo_effort = 5;  -- ok
+RESET geqo_effort;  -- ok
+ALTER SYSTEM SET geqo_effort = 5;  -- ok
+ALTER SYSTEM RESET geqo_effort;  -- ok
+SET geqo_generations = 50;  -- ok
+RESET geqo_generations;  -- ok
+ALTER SYSTEM SET geqo_generations = 50;  -- ok
+ALTER SYSTEM RESET geqo_generations;  -- ok
+SET geqo_pool_size = 50;  -- ok
+RESET geqo_pool_size;  -- ok
+ALTER SYSTEM SET geqo_pool_size = 50;  -- ok
+ALTER SYSTEM RESET geqo_pool_size;  -- ok
+SET geqo_seed = 0;  -- ok
+RESET geqo_seed;  -- ok
+ALTER SYSTEM SET geqo_seed = 0;  -- ok
+ALTER SYSTEM RESET geqo_seed;  -- ok
+SET geqo_selection_bias = 2;  -- ok
+RESET geqo_selection_bias;  -- ok
+ALTER SYSTEM SET geqo_selection_bias = 2;  -- ok
+ALTER SYSTEM RESET geqo_selection_bias;  -- ok
+SET geqo_threshold = 1073741824;  -- ok
+RESET geqo_threshold;  -- ok
+ALTER SYSTEM SET geqo_threshold = 1073741824;  -- ok
+ALTER SYSTEM RESET geqo_threshold;  -- ok
+-- PGC_USERSET / QUERY_TUNING_METHOD
+SET enable_async_append = OFF;  -- ok
+RESET enable_async_append;  -- ok
+ALTER SYSTEM SET enable_async_append = OFF;  -- ok
+ALTER SYSTEM RESET enable_async_append;  -- ok
+SET enable_bitmapscan = OFF;  -- ok
+RESET enable_bitmapscan;  -- ok
+ALTER SYSTEM SET enable_bitmapscan = OFF;  -- ok
+ALTER SYSTEM RESET enable_bitmapscan;  -- ok
+SET enable_gathermerge = OFF;  -- ok
+RESET enable_gathermerge;  -- ok
+ALTER SYSTEM SET enable_gathermerge = OFF;  -- ok
+ALTER SYSTEM RESET enable_gathermerge;  -- ok
+SET enable_hashagg = OFF;  -- ok
+RESET enable_hashagg;  -- ok
+ALTER SYSTEM SET enable_hashagg = OFF;  -- ok
+ALTER SYSTEM RESET enable_hashagg;  -- ok
+SET enable_hashjoin = OFF;  -- ok
+RESET enable_hashjoin;  -- ok
+ALTER SYSTEM SET enable_hashjoin = OFF;  -- ok
+ALTER SYSTEM RESET enable_hashjoin;  -- ok
+SET enable_incremental_sort = OFF;  -- ok
+RESET enable_incremental_sort;  -- ok
+ALTER SYSTEM SET enable_incremental_sort = OFF;  -- ok
+ALTER SYSTEM RESET enable_incremental_sort;  -- ok
+SET enable_indexonlyscan = OFF;  -- ok
+RESET enable_indexonlyscan;  -- ok
+ALTER SYSTEM SET enable_indexonlyscan = OFF;  -- ok
+ALTER SYSTEM RESET enable_indexonlyscan;  -- ok
+SET enable_indexscan = OFF;  -- ok
+RESET enable_indexscan;  -- ok
+ALTER SYSTEM SET enable_indexscan = OFF;  -- ok
+ALTER SYSTEM RESET enable_indexscan;  -- ok
+SET enable_material = OFF;  -- ok
+RESET enable_material;  -- ok
+ALTER SYSTEM SET enable_material = OFF;  -- ok
+ALTER SYSTEM RESET enable_material;  -- ok
+SET enable_memoize = OFF;  -- ok
+RESET enable_memoize;  -- ok
+ALTER SYSTEM SET enable_memoize = OFF;  -- ok
+ALTER SYSTEM RESET enable_memoize;  -- ok
+SET enable_mergejoin = OFF;  -- ok
+RESET enable_mergejoin;  -- ok
+ALTER SYSTEM SET enable_mergejoin = OFF;  -- ok
+ALTER SYSTEM RESET enable_mergejoin;  -- ok
+SET enable_nestloop = OFF;  -- ok
+RESET enable_nestloop;  -- ok
+ALTER SYSTEM SET enable_nestloop = OFF;  -- ok
+ALTER SYSTEM RESET enable_nestloop;  -- ok
+SET enable_parallel_append = OFF;  -- ok
+RESET enable_parallel_append;  -- ok
+ALTER SYSTEM SET enable_parallel_append = OFF;  -- ok
+ALTER SYSTEM RESET enable_parallel_append;  -- ok
+SET enable_parallel_hash = OFF;  -- ok
+RESET enable_parallel_hash;  -- ok
+ALTER SYSTEM SET enable_parallel_hash = OFF;  -- ok
+ALTER SYSTEM RESET enable_parallel_hash;  -- ok
+SET enable_partition_pruning = OFF;  -- ok
+RESET enable_partition_pruning;  -- ok
+ALTER SYSTEM SET enable_partition_pruning = OFF;  -- ok
+ALTER SYSTEM RESET enable_partition_pruning;  -- ok
+SET enable_partitionwise_aggregate = OFF;  -- ok
+RESET enable_partitionwise_aggregate;  -- ok
+ALTER SYSTEM SET enable_partitionwise_aggregate = OFF;  -- ok
+ALTER SYSTEM RESET enable_partitionwise_aggregate;  -- ok
+SET enable_partitionwise_join = OFF;  -- ok
+RESET enable_partitionwise_join;  -- ok
+ALTER SYSTEM SET enable_partitionwise_join = OFF;  -- ok
+ALTER SYSTEM RESET enable_partitionwise_join;  -- ok
+SET enable_seqscan = OFF;  -- ok
+RESET enable_seqscan;  -- ok
+ALTER SYSTEM SET enable_seqscan = OFF;  -- ok
+ALTER SYSTEM RESET enable_seqscan;  -- ok
+SET enable_sort = OFF;  -- ok
+RESET enable_sort;  -- ok
+ALTER SYSTEM SET enable_sort = OFF;  -- ok
+ALTER SYSTEM RESET enable_sort;  -- ok
+SET enable_tidscan = OFF;  -- ok
+RESET enable_tidscan;  -- ok
+ALTER SYSTEM SET enable_tidscan = OFF;  -- ok
+ALTER SYSTEM RESET enable_tidscan;  -- ok
+-- PGC_USERSET / QUERY_TUNING_OTHER
+SET constraint_exclusion = 'partition';  -- ok
+RESET constraint_exclusion;  -- ok
+ALTER SYSTEM SET constraint_exclusion = 'partition';  -- ok
+ALTER SYSTEM RESET constraint_exclusion;  -- ok
+SET cursor_tuple_fraction = 0;  -- ok
+RESET cursor_tuple_fraction;  -- ok
+ALTER SYSTEM SET cursor_tuple_fraction = 0;  -- ok
+ALTER SYSTEM RESET cursor_tuple_fraction;  -- ok
+SET default_statistics_target = 5000;  -- ok
+RESET default_statistics_target;  -- ok
+ALTER SYSTEM SET default_statistics_target = 5000;  -- ok
+ALTER SYSTEM RESET default_statistics_target;  -- ok
+SET from_collapse_limit = 1073741824;  -- ok
+RESET from_collapse_limit;  -- ok
+ALTER SYSTEM SET from_collapse_limit = 1073741824;  -- ok
+ALTER SYSTEM RESET from_collapse_limit;  -- ok
+SET jit = OFF;  -- ok
+RESET jit;  -- ok
+ALTER SYSTEM SET jit = OFF;  -- ok
+ALTER SYSTEM RESET jit;  -- ok
+SET join_collapse_limit = 1073741824;  -- ok
+RESET join_collapse_limit;  -- ok
+ALTER SYSTEM SET join_collapse_limit = 1073741824;  -- ok
+ALTER SYSTEM RESET join_collapse_limit;  -- ok
+SET plan_cache_mode = 'force_generic_plan';  -- ok
+RESET plan_cache_mode;  -- ok
+ALTER SYSTEM SET plan_cache_mode = 'force_generic_plan';  -- ok
+ALTER SYSTEM RESET plan_cache_mode;  -- ok
+-- PGC_USERSET / REPLICATION_SENDING
+SET wal_sender_timeout = 50;  -- ok
+RESET wal_sender_timeout;  -- ok
+ALTER SYSTEM SET wal_sender_timeout = 50;  -- ok
+ALTER SYSTEM RESET wal_sender_timeout;  -- ok
+-- PGC_USERSET / RESOURCES_ASYNCHRONOUS
+SET backend_flush_after = 128;  -- ok
+RESET backend_flush_after;  -- ok
+ALTER SYSTEM SET backend_flush_after = 128;  -- ok
+ALTER SYSTEM RESET backend_flush_after;  -- ok
+SET effective_io_concurrency = 0;  -- ok
+RESET effective_io_concurrency;  -- ok
+ALTER SYSTEM SET effective_io_concurrency = 0;  -- ok
+ALTER SYSTEM RESET effective_io_concurrency;  -- ok
+SET maintenance_io_concurrency = 0;  -- ok
+RESET maintenance_io_concurrency;  -- ok
+ALTER SYSTEM SET maintenance_io_concurrency = 0;  -- ok
+ALTER SYSTEM RESET maintenance_io_concurrency;  -- ok
+SET max_parallel_maintenance_workers = 50;  -- ok
+RESET max_parallel_maintenance_workers;  -- ok
+ALTER SYSTEM SET max_parallel_maintenance_workers = 50;  -- ok
+ALTER SYSTEM RESET max_parallel_maintenance_workers;  -- ok
+SET max_parallel_workers = 50;  -- ok
+RESET max_parallel_workers;  -- ok
+ALTER SYSTEM SET max_parallel_workers = 50;  -- ok
+ALTER SYSTEM RESET max_parallel_workers;  -- ok
+SET max_parallel_workers_per_gather = 50;  -- ok
+RESET max_parallel_workers_per_gather;  -- ok
+ALTER SYSTEM SET max_parallel_workers_per_gather = 50;  -- ok
+ALTER SYSTEM RESET max_parallel_workers_per_gather;  -- ok
+SET parallel_leader_participation = OFF;  -- ok
+RESET parallel_leader_participation;  -- ok
+ALTER SYSTEM SET parallel_leader_participation = OFF;  -- ok
+ALTER SYSTEM RESET parallel_leader_participation;  -- ok
+-- PGC_USERSET / RESOURCES_MEM
+SET hash_mem_multiplier = 500;  -- ok
+RESET hash_mem_multiplier;  -- ok
+ALTER SYSTEM SET hash_mem_multiplier = 500;  -- ok
+ALTER SYSTEM RESET hash_mem_multiplier;  -- ok
+SET logical_decoding_work_mem = 1073741855;  -- ok
+RESET logical_decoding_work_mem;  -- ok
+ALTER SYSTEM SET logical_decoding_work_mem = 1073741855;  -- ok
+ALTER SYSTEM RESET logical_decoding_work_mem;  -- ok
+SET maintenance_work_mem = 1073742335;  -- ok
+RESET maintenance_work_mem;  -- ok
+ALTER SYSTEM SET maintenance_work_mem = 1073742335;  -- ok
+ALTER SYSTEM RESET maintenance_work_mem;  -- ok
+SET temp_buffers = 536870961;  -- ok
+RESET temp_buffers;  -- ok
+ALTER SYSTEM SET temp_buffers = 536870961;  -- ok
+ALTER SYSTEM RESET temp_buffers;  -- ok
+SET work_mem = 1073741855;  -- ok
+RESET work_mem;  -- ok
+ALTER SYSTEM SET work_mem = 1073741855;  -- ok
+ALTER SYSTEM RESET work_mem;  -- ok
+-- PGC_USERSET / RESOURCES_VACUUM_DELAY
+SET vacuum_cost_delay = 50;  -- ok
+RESET vacuum_cost_delay;  -- ok
+ALTER SYSTEM SET vacuum_cost_delay = 50;  -- ok
+ALTER SYSTEM RESET vacuum_cost_delay;  -- ok
+SET vacuum_cost_limit = 5000;  -- ok
+RESET vacuum_cost_limit;  -- ok
+ALTER SYSTEM SET vacuum_cost_limit = 5000;  -- ok
+ALTER SYSTEM RESET vacuum_cost_limit;  -- ok
+SET vacuum_cost_page_dirty = 50;  -- ok
+RESET vacuum_cost_page_dirty;  -- ok
+ALTER SYSTEM SET vacuum_cost_page_dirty = 50;  -- ok
+ALTER SYSTEM RESET vacuum_cost_page_dirty;  -- ok
+SET vacuum_cost_page_hit = 50;  -- ok
+RESET vacuum_cost_page_hit;  -- ok
+ALTER SYSTEM SET vacuum_cost_page_hit = 50;  -- ok
+ALTER SYSTEM RESET vacuum_cost_page_hit;  -- ok
+SET vacuum_cost_page_miss = 50;  -- ok
+RESET vacuum_cost_page_miss;  -- ok
+ALTER SYSTEM SET vacuum_cost_page_miss = 50;  -- ok
+ALTER SYSTEM RESET vacuum_cost_page_miss;  -- ok
+-- PGC_USERSET / UNGROUPED
+SET seed = 0;  -- ok
+RESET seed;  -- ok
+ALTER SYSTEM SET seed = 0;  -- fail, cannot be changed
+ALTER SYSTEM RESET seed;  -- fail, cannot be changed
+-- PGC_USERSET / WAL_SETTINGS
+SET commit_siblings = 50;  -- ok
+RESET commit_siblings;  -- ok
+ALTER SYSTEM SET commit_siblings = 50;  -- ok
+ALTER SYSTEM RESET commit_siblings;  -- ok
+SET synchronous_commit = 'remote_write';  -- ok
+RESET synchronous_commit;  -- ok
+ALTER SYSTEM SET synchronous_commit = 'remote_write';  -- ok
+ALTER SYSTEM RESET synchronous_commit;  -- ok
+SET wal_skip_threshold = 50;  -- ok
+RESET wal_skip_threshold;  -- ok
+ALTER SYSTEM SET wal_skip_threshold = 50;  -- ok
+ALTER SYSTEM RESET wal_skip_threshold;  -- ok
+RESET statement_timeout;
+RESET SESSION AUTHORIZATION;
+DROP ROLE admin;
-- 
2.21.1 (Apple Git-122.3)

