1 /*--------------------------------------------------------------------
5 * Static tables for the Grand Unified Configuration scheme.
7 * Many of these tables are const. However, ConfigureNamesBool[]
8 * and so on are not, because the structs in those arrays are actually
9 * the live per-variable state data that guc.c manipulates. While many of
10 * their fields are intended to be constant, some fields change at runtime.
13 * Copyright (c) 2000-2023, PostgreSQL Global Development Group
14 * Written by Peter Eisentraut <peter_e@gmx.net>.
17 * src/backend/utils/misc/guc_tables.c
19 *--------------------------------------------------------------------
29 #include "access/commit_ts.h"
30 #include "access/gin.h"
31 #include "access/toast_compression.h"
32 #include "access/twophase.h"
33 #include "access/xlog_internal.h"
34 #include "access/xlogprefetcher.h"
35 #include "access/xlogrecovery.h"
36 #include "archive/archive_module.h"
37 #include "catalog/namespace.h"
38 #include "catalog/storage.h"
39 #include "commands/async.h"
40 #include "commands/event_trigger.h"
41 #include "commands/tablespace.h"
42 #include "commands/trigger.h"
43 #include "commands/user.h"
44 #include "commands/vacuum.h"
45 #include "common/file_utils.h"
46 #include "common/scram-common.h"
48 #include "libpq/auth.h"
49 #include "libpq/libpq.h"
50 #include "libpq/scram.h"
51 #include "nodes/queryjumble.h"
52 #include "optimizer/cost.h"
53 #include "optimizer/geqo.h"
54 #include "optimizer/optimizer.h"
55 #include "optimizer/paths.h"
56 #include "optimizer/planmain.h"
57 #include "parser/parse_expr.h"
58 #include "parser/parser.h"
60 #include "postmaster/autovacuum.h"
61 #include "postmaster/bgworker_internals.h"
62 #include "postmaster/bgwriter.h"
63 #include "postmaster/postmaster.h"
64 #include "postmaster/startup.h"
65 #include "postmaster/syslogger.h"
66 #include "postmaster/walwriter.h"
67 #include "replication/logicallauncher.h"
68 #include "replication/slot.h"
69 #include "replication/syncrep.h"
70 #include "storage/bufmgr.h"
71 #include "storage/large_object.h"
72 #include "storage/pg_shmem.h"
73 #include "storage/predicate.h"
74 #include "storage/standby.h"
75 #include "tcop/tcopprot.h"
76 #include "tsearch/ts_cache.h"
77 #include "utils/builtins.h"
78 #include "utils/bytea.h"
79 #include "utils/float.h"
80 #include "utils/guc_hooks.h"
81 #include "utils/guc_tables.h"
82 #include "utils/memutils.h"
83 #include "utils/pg_locale.h"
84 #include "utils/portal.h"
85 #include "utils/ps_status.h"
86 #include "utils/inval.h"
87 #include "utils/xml.h"
89 /* This value is normally passed in from the Makefile */
91 #define PG_KRB_SRVTAB ""
94 /* XXX these should appear in other modules' header files */
95 extern bool Log_disconnections
;
96 extern int CommitDelay
;
97 extern int CommitSiblings
;
98 extern char *default_tablespace
;
99 extern char *temp_tablespaces
;
100 extern bool ignore_checksum_failure
;
101 extern bool ignore_invalid_pages
;
103 #ifdef TRACE_SYNCSCAN
104 extern bool trace_syncscan
;
106 #ifdef DEBUG_BOUNDED_SORT
107 extern bool optimize_bounded_sort
;
111 * Options for enum values defined in this module.
113 * NOTE! Option values may not contain double quotes!
116 static const struct config_enum_entry bytea_output_options
[] = {
117 {"escape", BYTEA_OUTPUT_ESCAPE
, false},
118 {"hex", BYTEA_OUTPUT_HEX
, false},
122 StaticAssertDecl(lengthof(bytea_output_options
) == (BYTEA_OUTPUT_HEX
+ 2),
123 "array length mismatch");
126 * We have different sets for client and server message level options because
127 * they sort slightly different (see "log" level), and because "fatal"/"panic"
128 * aren't sensible for client_min_messages.
130 static const struct config_enum_entry client_message_level_options
[] = {
131 {"debug5", DEBUG5
, false},
132 {"debug4", DEBUG4
, false},
133 {"debug3", DEBUG3
, false},
134 {"debug2", DEBUG2
, false},
135 {"debug1", DEBUG1
, false},
136 {"debug", DEBUG2
, true},
138 {"info", INFO
, true},
139 {"notice", NOTICE
, false},
140 {"warning", WARNING
, false},
141 {"error", ERROR
, false},
145 static const struct config_enum_entry server_message_level_options
[] = {
146 {"debug5", DEBUG5
, false},
147 {"debug4", DEBUG4
, false},
148 {"debug3", DEBUG3
, false},
149 {"debug2", DEBUG2
, false},
150 {"debug1", DEBUG1
, false},
151 {"debug", DEBUG2
, true},
152 {"info", INFO
, false},
153 {"notice", NOTICE
, false},
154 {"warning", WARNING
, false},
155 {"error", ERROR
, false},
157 {"fatal", FATAL
, false},
158 {"panic", PANIC
, false},
162 static const struct config_enum_entry intervalstyle_options
[] = {
163 {"postgres", INTSTYLE_POSTGRES
, false},
164 {"postgres_verbose", INTSTYLE_POSTGRES_VERBOSE
, false},
165 {"sql_standard", INTSTYLE_SQL_STANDARD
, false},
166 {"iso_8601", INTSTYLE_ISO_8601
, false},
170 static const struct config_enum_entry icu_validation_level_options
[] = {
171 {"disabled", -1, false},
172 {"debug5", DEBUG5
, false},
173 {"debug4", DEBUG4
, false},
174 {"debug3", DEBUG3
, false},
175 {"debug2", DEBUG2
, false},
176 {"debug1", DEBUG1
, false},
177 {"debug", DEBUG2
, true},
179 {"info", INFO
, true},
180 {"notice", NOTICE
, false},
181 {"warning", WARNING
, false},
182 {"error", ERROR
, false},
186 StaticAssertDecl(lengthof(intervalstyle_options
) == (INTSTYLE_ISO_8601
+ 2),
187 "array length mismatch");
189 static const struct config_enum_entry log_error_verbosity_options
[] = {
190 {"terse", PGERROR_TERSE
, false},
191 {"default", PGERROR_DEFAULT
, false},
192 {"verbose", PGERROR_VERBOSE
, false},
196 StaticAssertDecl(lengthof(log_error_verbosity_options
) == (PGERROR_VERBOSE
+ 2),
197 "array length mismatch");
199 static const struct config_enum_entry log_statement_options
[] = {
200 {"none", LOGSTMT_NONE
, false},
201 {"ddl", LOGSTMT_DDL
, false},
202 {"mod", LOGSTMT_MOD
, false},
203 {"all", LOGSTMT_ALL
, false},
207 StaticAssertDecl(lengthof(log_statement_options
) == (LOGSTMT_ALL
+ 2),
208 "array length mismatch");
210 static const struct config_enum_entry isolation_level_options
[] = {
211 {"serializable", XACT_SERIALIZABLE
, false},
212 {"repeatable read", XACT_REPEATABLE_READ
, false},
213 {"read committed", XACT_READ_COMMITTED
, false},
214 {"read uncommitted", XACT_READ_UNCOMMITTED
, false},
218 static const struct config_enum_entry session_replication_role_options
[] = {
219 {"origin", SESSION_REPLICATION_ROLE_ORIGIN
, false},
220 {"replica", SESSION_REPLICATION_ROLE_REPLICA
, false},
221 {"local", SESSION_REPLICATION_ROLE_LOCAL
, false},
225 StaticAssertDecl(lengthof(session_replication_role_options
) == (SESSION_REPLICATION_ROLE_LOCAL
+ 2),
226 "array length mismatch");
228 static const struct config_enum_entry syslog_facility_options
[] = {
230 {"local0", LOG_LOCAL0
, false},
231 {"local1", LOG_LOCAL1
, false},
232 {"local2", LOG_LOCAL2
, false},
233 {"local3", LOG_LOCAL3
, false},
234 {"local4", LOG_LOCAL4
, false},
235 {"local5", LOG_LOCAL5
, false},
236 {"local6", LOG_LOCAL6
, false},
237 {"local7", LOG_LOCAL7
, false},
244 static const struct config_enum_entry track_function_options
[] = {
245 {"none", TRACK_FUNC_OFF
, false},
246 {"pl", TRACK_FUNC_PL
, false},
247 {"all", TRACK_FUNC_ALL
, false},
251 StaticAssertDecl(lengthof(track_function_options
) == (TRACK_FUNC_ALL
+ 2),
252 "array length mismatch");
254 static const struct config_enum_entry stats_fetch_consistency
[] = {
255 {"none", PGSTAT_FETCH_CONSISTENCY_NONE
, false},
256 {"cache", PGSTAT_FETCH_CONSISTENCY_CACHE
, false},
257 {"snapshot", PGSTAT_FETCH_CONSISTENCY_SNAPSHOT
, false},
261 StaticAssertDecl(lengthof(stats_fetch_consistency
) == (PGSTAT_FETCH_CONSISTENCY_SNAPSHOT
+ 2),
262 "array length mismatch");
264 static const struct config_enum_entry xmlbinary_options
[] = {
265 {"base64", XMLBINARY_BASE64
, false},
266 {"hex", XMLBINARY_HEX
, false},
270 StaticAssertDecl(lengthof(xmlbinary_options
) == (XMLBINARY_HEX
+ 2),
271 "array length mismatch");
273 static const struct config_enum_entry xmloption_options
[] = {
274 {"content", XMLOPTION_CONTENT
, false},
275 {"document", XMLOPTION_DOCUMENT
, false},
279 StaticAssertDecl(lengthof(xmloption_options
) == (XMLOPTION_CONTENT
+ 2),
280 "array length mismatch");
283 * Although only "on", "off", and "safe_encoding" are documented, we
284 * accept all the likely variants of "on" and "off".
286 static const struct config_enum_entry backslash_quote_options
[] = {
287 {"safe_encoding", BACKSLASH_QUOTE_SAFE_ENCODING
, false},
288 {"on", BACKSLASH_QUOTE_ON
, false},
289 {"off", BACKSLASH_QUOTE_OFF
, false},
290 {"true", BACKSLASH_QUOTE_ON
, true},
291 {"false", BACKSLASH_QUOTE_OFF
, true},
292 {"yes", BACKSLASH_QUOTE_ON
, true},
293 {"no", BACKSLASH_QUOTE_OFF
, true},
294 {"1", BACKSLASH_QUOTE_ON
, true},
295 {"0", BACKSLASH_QUOTE_OFF
, true},
300 * Although only "on", "off", and "auto" are documented, we accept
301 * all the likely variants of "on" and "off".
303 static const struct config_enum_entry compute_query_id_options
[] = {
304 {"auto", COMPUTE_QUERY_ID_AUTO
, false},
305 {"regress", COMPUTE_QUERY_ID_REGRESS
, false},
306 {"on", COMPUTE_QUERY_ID_ON
, false},
307 {"off", COMPUTE_QUERY_ID_OFF
, false},
308 {"true", COMPUTE_QUERY_ID_ON
, true},
309 {"false", COMPUTE_QUERY_ID_OFF
, true},
310 {"yes", COMPUTE_QUERY_ID_ON
, true},
311 {"no", COMPUTE_QUERY_ID_OFF
, true},
312 {"1", COMPUTE_QUERY_ID_ON
, true},
313 {"0", COMPUTE_QUERY_ID_OFF
, true},
318 * Although only "on", "off", and "partition" are documented, we
319 * accept all the likely variants of "on" and "off".
321 static const struct config_enum_entry constraint_exclusion_options
[] = {
322 {"partition", CONSTRAINT_EXCLUSION_PARTITION
, false},
323 {"on", CONSTRAINT_EXCLUSION_ON
, false},
324 {"off", CONSTRAINT_EXCLUSION_OFF
, false},
325 {"true", CONSTRAINT_EXCLUSION_ON
, true},
326 {"false", CONSTRAINT_EXCLUSION_OFF
, true},
327 {"yes", CONSTRAINT_EXCLUSION_ON
, true},
328 {"no", CONSTRAINT_EXCLUSION_OFF
, true},
329 {"1", CONSTRAINT_EXCLUSION_ON
, true},
330 {"0", CONSTRAINT_EXCLUSION_OFF
, true},
335 * Although only "on", "off", "remote_apply", "remote_write", and "local" are
336 * documented, we accept all the likely variants of "on" and "off".
338 static const struct config_enum_entry synchronous_commit_options
[] = {
339 {"local", SYNCHRONOUS_COMMIT_LOCAL_FLUSH
, false},
340 {"remote_write", SYNCHRONOUS_COMMIT_REMOTE_WRITE
, false},
341 {"remote_apply", SYNCHRONOUS_COMMIT_REMOTE_APPLY
, false},
342 {"on", SYNCHRONOUS_COMMIT_ON
, false},
343 {"off", SYNCHRONOUS_COMMIT_OFF
, false},
344 {"true", SYNCHRONOUS_COMMIT_ON
, true},
345 {"false", SYNCHRONOUS_COMMIT_OFF
, true},
346 {"yes", SYNCHRONOUS_COMMIT_ON
, true},
347 {"no", SYNCHRONOUS_COMMIT_OFF
, true},
348 {"1", SYNCHRONOUS_COMMIT_ON
, true},
349 {"0", SYNCHRONOUS_COMMIT_OFF
, true},
354 * Although only "on", "off", "try" are documented, we accept all the likely
355 * variants of "on" and "off".
357 static const struct config_enum_entry huge_pages_options
[] = {
358 {"off", HUGE_PAGES_OFF
, false},
359 {"on", HUGE_PAGES_ON
, false},
360 {"try", HUGE_PAGES_TRY
, false},
361 {"true", HUGE_PAGES_ON
, true},
362 {"false", HUGE_PAGES_OFF
, true},
363 {"yes", HUGE_PAGES_ON
, true},
364 {"no", HUGE_PAGES_OFF
, true},
365 {"1", HUGE_PAGES_ON
, true},
366 {"0", HUGE_PAGES_OFF
, true},
370 static const struct config_enum_entry huge_pages_status_options
[] = {
371 {"off", HUGE_PAGES_OFF
, false},
372 {"on", HUGE_PAGES_ON
, false},
373 {"unknown", HUGE_PAGES_UNKNOWN
, false},
377 static const struct config_enum_entry recovery_prefetch_options
[] = {
378 {"off", RECOVERY_PREFETCH_OFF
, false},
379 {"on", RECOVERY_PREFETCH_ON
, false},
380 {"try", RECOVERY_PREFETCH_TRY
, false},
381 {"true", RECOVERY_PREFETCH_ON
, true},
382 {"false", RECOVERY_PREFETCH_OFF
, true},
383 {"yes", RECOVERY_PREFETCH_ON
, true},
384 {"no", RECOVERY_PREFETCH_OFF
, true},
385 {"1", RECOVERY_PREFETCH_ON
, true},
386 {"0", RECOVERY_PREFETCH_OFF
, true},
390 static const struct config_enum_entry debug_parallel_query_options
[] = {
391 {"off", DEBUG_PARALLEL_OFF
, false},
392 {"on", DEBUG_PARALLEL_ON
, false},
393 {"regress", DEBUG_PARALLEL_REGRESS
, false},
394 {"true", DEBUG_PARALLEL_ON
, true},
395 {"false", DEBUG_PARALLEL_OFF
, true},
396 {"yes", DEBUG_PARALLEL_ON
, true},
397 {"no", DEBUG_PARALLEL_OFF
, true},
398 {"1", DEBUG_PARALLEL_ON
, true},
399 {"0", DEBUG_PARALLEL_OFF
, true},
403 static const struct config_enum_entry plan_cache_mode_options
[] = {
404 {"auto", PLAN_CACHE_MODE_AUTO
, false},
405 {"force_generic_plan", PLAN_CACHE_MODE_FORCE_GENERIC_PLAN
, false},
406 {"force_custom_plan", PLAN_CACHE_MODE_FORCE_CUSTOM_PLAN
, false},
410 static const struct config_enum_entry password_encryption_options
[] = {
411 {"md5", PASSWORD_TYPE_MD5
, false},
412 {"scram-sha-256", PASSWORD_TYPE_SCRAM_SHA_256
, false},
416 static const struct config_enum_entry ssl_protocol_versions_info
[] = {
417 {"", PG_TLS_ANY
, false},
418 {"TLSv1", PG_TLS1_VERSION
, false},
419 {"TLSv1.1", PG_TLS1_1_VERSION
, false},
420 {"TLSv1.2", PG_TLS1_2_VERSION
, false},
421 {"TLSv1.3", PG_TLS1_3_VERSION
, false},
425 static const struct config_enum_entry debug_logical_replication_streaming_options
[] = {
426 {"buffered", DEBUG_LOGICAL_REP_STREAMING_BUFFERED
, false},
427 {"immediate", DEBUG_LOGICAL_REP_STREAMING_IMMEDIATE
, false},
431 StaticAssertDecl(lengthof(ssl_protocol_versions_info
) == (PG_TLS1_3_VERSION
+ 2),
432 "array length mismatch");
434 static const struct config_enum_entry recovery_init_sync_method_options
[] = {
435 {"fsync", DATA_DIR_SYNC_METHOD_FSYNC
, false},
437 {"syncfs", DATA_DIR_SYNC_METHOD_SYNCFS
, false},
442 static const struct config_enum_entry shared_memory_options
[] = {
444 {"sysv", SHMEM_TYPE_SYSV
, false},
447 {"mmap", SHMEM_TYPE_MMAP
, false},
450 {"windows", SHMEM_TYPE_WINDOWS
, false},
455 static const struct config_enum_entry default_toast_compression_options
[] = {
456 {"pglz", TOAST_PGLZ_COMPRESSION
, false},
458 {"lz4", TOAST_LZ4_COMPRESSION
, false},
463 static const struct config_enum_entry wal_compression_options
[] = {
464 {"pglz", WAL_COMPRESSION_PGLZ
, false},
466 {"lz4", WAL_COMPRESSION_LZ4
, false},
469 {"zstd", WAL_COMPRESSION_ZSTD
, false},
471 {"on", WAL_COMPRESSION_PGLZ
, false},
472 {"off", WAL_COMPRESSION_NONE
, false},
473 {"true", WAL_COMPRESSION_PGLZ
, true},
474 {"false", WAL_COMPRESSION_NONE
, true},
475 {"yes", WAL_COMPRESSION_PGLZ
, true},
476 {"no", WAL_COMPRESSION_NONE
, true},
477 {"1", WAL_COMPRESSION_PGLZ
, true},
478 {"0", WAL_COMPRESSION_NONE
, true},
483 * Options for enum values stored in other modules
485 extern const struct config_enum_entry wal_level_options
[];
486 extern const struct config_enum_entry archive_mode_options
[];
487 extern const struct config_enum_entry recovery_target_action_options
[];
488 extern const struct config_enum_entry wal_sync_method_options
[];
489 extern const struct config_enum_entry dynamic_shared_memory_options
[];
492 * GUC option variables that are exported from this module
494 bool log_duration
= false;
495 bool Debug_print_plan
= false;
496 bool Debug_print_parse
= false;
497 bool Debug_print_rewritten
= false;
498 bool Debug_pretty_print
= true;
500 bool log_parser_stats
= false;
501 bool log_planner_stats
= false;
502 bool log_executor_stats
= false;
503 bool log_statement_stats
= false; /* this is sort of all three above
505 bool log_btree_build_stats
= false;
509 bool check_function_bodies
= true;
512 * This GUC exists solely for backward compatibility, check its definition for
515 bool default_with_oids
= false;
516 bool current_role_is_superuser
;
518 int log_min_error_statement
= ERROR
;
519 int log_min_messages
= WARNING
;
520 int client_min_messages
= NOTICE
;
521 int log_min_duration_sample
= -1;
522 int log_min_duration_statement
= -1;
523 int log_parameter_max_length
= -1;
524 int log_parameter_max_length_on_error
= 0;
525 int log_temp_files
= -1;
526 double log_statement_sample_rate
= 1.0;
527 double log_xact_sample_rate
= 0;
528 int trace_recovery_messages
= LOG
;
529 char *backtrace_functions
;
531 int temp_file_limit
= -1;
533 int num_temp_buffers
= 1024;
535 char *cluster_name
= "";
536 char *ConfigFileName
;
539 char *external_pid_file
;
541 char *application_name
;
543 int tcp_keepalives_idle
;
544 int tcp_keepalives_interval
;
545 int tcp_keepalives_count
;
546 int tcp_user_timeout
;
549 * SSL renegotiation was been removed in PostgreSQL 9.5, but we tolerate it
550 * being set to zero (meaning never renegotiate) for backward compatibility.
551 * This avoids breaking compatibility with clients that have never supported
552 * renegotiation and therefore always try to zero it.
554 int ssl_renegotiation_limit
;
557 * This really belongs in pg_shmem.c, but is defined here so that it doesn't
558 * need to be duplicated in all the different implementations of pg_shmem.c.
560 int huge_pages
= HUGE_PAGES_TRY
;
562 int huge_pages_status
= HUGE_PAGES_UNKNOWN
;
565 * These variables are all dummies that don't do anything, except in some
566 * cases provide the value for SHOW to display. The real state is elsewhere
567 * and is kept in sync by assign_hooks.
569 static char *syslog_ident_str
;
570 static double phony_random_seed
;
571 static char *client_encoding_string
;
572 static char *datestyle_string
;
573 static char *server_encoding_string
;
574 static char *server_version_string
;
575 static int server_version_num
;
576 static char *debug_io_direct_string
;
579 #define DEFAULT_SYSLOG_FACILITY LOG_LOCAL0
581 #define DEFAULT_SYSLOG_FACILITY 0
583 static int syslog_facility
= DEFAULT_SYSLOG_FACILITY
;
585 static char *timezone_string
;
586 static char *log_timezone_string
;
587 static char *timezone_abbreviations_string
;
588 static char *data_directory
;
589 static char *session_authorization_string
;
590 static int max_function_args
;
591 static int max_index_keys
;
592 static int max_identifier_length
;
593 static int block_size
;
594 static int segment_size
;
595 static int shared_memory_size_mb
;
596 static int shared_memory_size_in_huge_pages
;
597 static int wal_block_size
;
598 static bool data_checksums
;
599 static bool integer_datetimes
;
601 #ifdef USE_ASSERT_CHECKING
602 #define DEFAULT_ASSERT_ENABLED true
604 #define DEFAULT_ASSERT_ENABLED false
606 static bool assert_enabled
= DEFAULT_ASSERT_ENABLED
;
608 static char *recovery_target_timeline_string
;
609 static char *recovery_target_string
;
610 static char *recovery_target_xid_string
;
611 static char *recovery_target_name_string
;
612 static char *recovery_target_lsn_string
;
614 /* should be static, but commands/variable.c needs to get at this */
617 /* should be static, but guc.c needs to get at this */
618 bool in_hot_standby_guc
;
622 * Displayable names for context types (enum GucContext)
624 * Note: these strings are deliberately not localized.
626 const char *const GucContext_Names
[] =
628 /* PGC_INTERNAL */ "internal",
629 /* PGC_POSTMASTER */ "postmaster",
630 /* PGC_SIGHUP */ "sighup",
631 /* PGC_SU_BACKEND */ "superuser-backend",
632 /* PGC_BACKEND */ "backend",
633 /* PGC_SUSET */ "superuser",
634 /* PGC_USERSET */ "user"
637 StaticAssertDecl(lengthof(GucContext_Names
) == (PGC_USERSET
+ 1),
638 "array length mismatch");
641 * Displayable names for source types (enum GucSource)
643 * Note: these strings are deliberately not localized.
645 const char *const GucSource_Names
[] =
647 /* PGC_S_DEFAULT */ "default",
648 /* PGC_S_DYNAMIC_DEFAULT */ "default",
649 /* PGC_S_ENV_VAR */ "environment variable",
650 /* PGC_S_FILE */ "configuration file",
651 /* PGC_S_ARGV */ "command line",
652 /* PGC_S_GLOBAL */ "global",
653 /* PGC_S_DATABASE */ "database",
654 /* PGC_S_USER */ "user",
655 /* PGC_S_DATABASE_USER */ "database user",
656 /* PGC_S_CLIENT */ "client",
657 /* PGC_S_OVERRIDE */ "override",
658 /* PGC_S_INTERACTIVE */ "interactive",
659 /* PGC_S_TEST */ "test",
660 /* PGC_S_SESSION */ "session"
663 StaticAssertDecl(lengthof(GucSource_Names
) == (PGC_S_SESSION
+ 1),
664 "array length mismatch");
667 * Displayable names for the groupings defined in enum config_group
669 const char *const config_group_names
[] =
672 gettext_noop("Ungrouped"),
674 gettext_noop("File Locations"),
675 /* CONN_AUTH_SETTINGS */
676 gettext_noop("Connections and Authentication / Connection Settings"),
678 gettext_noop("Connections and Authentication / TCP Settings"),
680 gettext_noop("Connections and Authentication / Authentication"),
682 gettext_noop("Connections and Authentication / SSL"),
684 gettext_noop("Resource Usage / Memory"),
686 gettext_noop("Resource Usage / Disk"),
687 /* RESOURCES_KERNEL */
688 gettext_noop("Resource Usage / Kernel Resources"),
689 /* RESOURCES_VACUUM_DELAY */
690 gettext_noop("Resource Usage / Cost-Based Vacuum Delay"),
691 /* RESOURCES_BGWRITER */
692 gettext_noop("Resource Usage / Background Writer"),
693 /* RESOURCES_ASYNCHRONOUS */
694 gettext_noop("Resource Usage / Asynchronous Behavior"),
696 gettext_noop("Write-Ahead Log / Settings"),
697 /* WAL_CHECKPOINTS */
698 gettext_noop("Write-Ahead Log / Checkpoints"),
700 gettext_noop("Write-Ahead Log / Archiving"),
702 gettext_noop("Write-Ahead Log / Recovery"),
703 /* WAL_ARCHIVE_RECOVERY */
704 gettext_noop("Write-Ahead Log / Archive Recovery"),
705 /* WAL_RECOVERY_TARGET */
706 gettext_noop("Write-Ahead Log / Recovery Target"),
707 /* REPLICATION_SENDING */
708 gettext_noop("Replication / Sending Servers"),
709 /* REPLICATION_PRIMARY */
710 gettext_noop("Replication / Primary Server"),
711 /* REPLICATION_STANDBY */
712 gettext_noop("Replication / Standby Servers"),
713 /* REPLICATION_SUBSCRIBERS */
714 gettext_noop("Replication / Subscribers"),
715 /* QUERY_TUNING_METHOD */
716 gettext_noop("Query Tuning / Planner Method Configuration"),
717 /* QUERY_TUNING_COST */
718 gettext_noop("Query Tuning / Planner Cost Constants"),
719 /* QUERY_TUNING_GEQO */
720 gettext_noop("Query Tuning / Genetic Query Optimizer"),
721 /* QUERY_TUNING_OTHER */
722 gettext_noop("Query Tuning / Other Planner Options"),
724 gettext_noop("Reporting and Logging / Where to Log"),
726 gettext_noop("Reporting and Logging / When to Log"),
728 gettext_noop("Reporting and Logging / What to Log"),
730 gettext_noop("Reporting and Logging / Process Title"),
731 /* STATS_MONITORING */
732 gettext_noop("Statistics / Monitoring"),
733 /* STATS_CUMULATIVE */
734 gettext_noop("Statistics / Cumulative Query and Index Statistics"),
736 gettext_noop("Autovacuum"),
737 /* CLIENT_CONN_STATEMENT */
738 gettext_noop("Client Connection Defaults / Statement Behavior"),
739 /* CLIENT_CONN_LOCALE */
740 gettext_noop("Client Connection Defaults / Locale and Formatting"),
741 /* CLIENT_CONN_PRELOAD */
742 gettext_noop("Client Connection Defaults / Shared Library Preloading"),
743 /* CLIENT_CONN_OTHER */
744 gettext_noop("Client Connection Defaults / Other Defaults"),
745 /* LOCK_MANAGEMENT */
746 gettext_noop("Lock Management"),
747 /* COMPAT_OPTIONS_PREVIOUS */
748 gettext_noop("Version and Platform Compatibility / Previous PostgreSQL Versions"),
749 /* COMPAT_OPTIONS_CLIENT */
750 gettext_noop("Version and Platform Compatibility / Other Platforms and Clients"),
751 /* ERROR_HANDLING_OPTIONS */
752 gettext_noop("Error Handling"),
754 gettext_noop("Preset Options"),
756 gettext_noop("Customized Options"),
757 /* DEVELOPER_OPTIONS */
758 gettext_noop("Developer Options"),
759 /* help_config wants this array to be null-terminated */
763 StaticAssertDecl(lengthof(config_group_names
) == (DEVELOPER_OPTIONS
+ 2),
764 "array length mismatch");
767 * Displayable names for GUC variable types (enum config_type)
769 * Note: these strings are deliberately not localized.
771 const char *const config_type_names
[] =
773 /* PGC_BOOL */ "bool",
774 /* PGC_INT */ "integer",
775 /* PGC_REAL */ "real",
776 /* PGC_STRING */ "string",
777 /* PGC_ENUM */ "enum"
780 StaticAssertDecl(lengthof(config_type_names
) == (PGC_ENUM
+ 1),
781 "array length mismatch");
785 * Contents of GUC tables
787 * See src/backend/utils/misc/README for design notes.
791 * 1. Declare a global variable of type bool, int, double, or char*
792 * and make use of it.
794 * 2. Decide at what times it's safe to set the option. See guc.h for
797 * 3. Decide on a name, a default value, upper and lower bounds (if
800 * 4. Add a record below.
802 * 5. Add it to src/backend/utils/misc/postgresql.conf.sample, if
805 * 6. Don't forget to document the option (at least in config.sgml).
807 * 7. If it's a new GUC_LIST_QUOTE option, you must add it to
808 * variable_is_guc_list_quote() in src/bin/pg_dump/dumputils.c.
811 struct config_bool ConfigureNamesBool
[] =
814 {"enable_seqscan", PGC_USERSET
, QUERY_TUNING_METHOD
,
815 gettext_noop("Enables the planner's use of sequential-scan plans."),
824 {"enable_indexscan", PGC_USERSET
, QUERY_TUNING_METHOD
,
825 gettext_noop("Enables the planner's use of index-scan plans."),
834 {"enable_indexonlyscan", PGC_USERSET
, QUERY_TUNING_METHOD
,
835 gettext_noop("Enables the planner's use of index-only-scan plans."),
839 &enable_indexonlyscan
,
844 {"enable_bitmapscan", PGC_USERSET
, QUERY_TUNING_METHOD
,
845 gettext_noop("Enables the planner's use of bitmap-scan plans."),
854 {"enable_tidscan", PGC_USERSET
, QUERY_TUNING_METHOD
,
855 gettext_noop("Enables the planner's use of TID scan plans."),
864 {"enable_sort", PGC_USERSET
, QUERY_TUNING_METHOD
,
865 gettext_noop("Enables the planner's use of explicit sort steps."),
874 {"enable_incremental_sort", PGC_USERSET
, QUERY_TUNING_METHOD
,
875 gettext_noop("Enables the planner's use of incremental sort steps."),
879 &enable_incremental_sort
,
884 {"enable_hashagg", PGC_USERSET
, QUERY_TUNING_METHOD
,
885 gettext_noop("Enables the planner's use of hashed aggregation plans."),
894 {"enable_material", PGC_USERSET
, QUERY_TUNING_METHOD
,
895 gettext_noop("Enables the planner's use of materialization."),
904 {"enable_memoize", PGC_USERSET
, QUERY_TUNING_METHOD
,
905 gettext_noop("Enables the planner's use of memoization."),
914 {"enable_nestloop", PGC_USERSET
, QUERY_TUNING_METHOD
,
915 gettext_noop("Enables the planner's use of nested-loop join plans."),
924 {"enable_mergejoin", PGC_USERSET
, QUERY_TUNING_METHOD
,
925 gettext_noop("Enables the planner's use of merge join plans."),
934 {"enable_hashjoin", PGC_USERSET
, QUERY_TUNING_METHOD
,
935 gettext_noop("Enables the planner's use of hash join plans."),
944 {"enable_gathermerge", PGC_USERSET
, QUERY_TUNING_METHOD
,
945 gettext_noop("Enables the planner's use of gather merge plans."),
954 {"enable_partitionwise_join", PGC_USERSET
, QUERY_TUNING_METHOD
,
955 gettext_noop("Enables partitionwise join."),
959 &enable_partitionwise_join
,
964 {"enable_partitionwise_aggregate", PGC_USERSET
, QUERY_TUNING_METHOD
,
965 gettext_noop("Enables partitionwise aggregation and grouping."),
969 &enable_partitionwise_aggregate
,
974 {"enable_parallel_append", PGC_USERSET
, QUERY_TUNING_METHOD
,
975 gettext_noop("Enables the planner's use of parallel append plans."),
979 &enable_parallel_append
,
984 {"enable_parallel_hash", PGC_USERSET
, QUERY_TUNING_METHOD
,
985 gettext_noop("Enables the planner's use of parallel hash plans."),
989 &enable_parallel_hash
,
994 {"enable_partition_pruning", PGC_USERSET
, QUERY_TUNING_METHOD
,
995 gettext_noop("Enables plan-time and execution-time partition pruning."),
996 gettext_noop("Allows the query planner and executor to compare partition "
997 "bounds to conditions in the query to determine which "
998 "partitions must be scanned."),
1001 &enable_partition_pruning
,
1006 {"enable_presorted_aggregate", PGC_USERSET
, QUERY_TUNING_METHOD
,
1007 gettext_noop("Enables the planner's ability to produce plans that "
1008 "provide presorted input for ORDER BY / DISTINCT aggregate "
1010 gettext_noop("Allows the query planner to build plans that provide "
1011 "presorted input for aggregate functions with an ORDER BY / "
1012 "DISTINCT clause. When disabled, implicit sorts are always "
1013 "performed during execution."),
1016 &enable_presorted_aggregate
,
1021 {"enable_async_append", PGC_USERSET
, QUERY_TUNING_METHOD
,
1022 gettext_noop("Enables the planner's use of async append plans."),
1026 &enable_async_append
,
1031 {"geqo", PGC_USERSET
, QUERY_TUNING_GEQO
,
1032 gettext_noop("Enables genetic query optimization."),
1033 gettext_noop("This algorithm attempts to do planning without "
1034 "exhaustive searching."),
1043 * Not for general use --- used by SET SESSION AUTHORIZATION and SET
1046 {"is_superuser", PGC_INTERNAL
, UNGROUPED
,
1047 gettext_noop("Shows whether the current user is a superuser."),
1049 GUC_REPORT
| GUC_NO_SHOW_ALL
| GUC_NO_RESET_ALL
| GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
1051 ¤t_role_is_superuser
,
1056 {"bonjour", PGC_POSTMASTER
, CONN_AUTH_SETTINGS
,
1057 gettext_noop("Enables advertising the server via Bonjour."),
1062 check_bonjour
, NULL
, NULL
1065 {"track_commit_timestamp", PGC_POSTMASTER
, REPLICATION_SENDING
,
1066 gettext_noop("Collects transaction commit time."),
1069 &track_commit_timestamp
,
1074 {"ssl", PGC_SIGHUP
, CONN_AUTH_SSL
,
1075 gettext_noop("Enables SSL connections."),
1080 check_ssl
, NULL
, NULL
1083 {"ssl_passphrase_command_supports_reload", PGC_SIGHUP
, CONN_AUTH_SSL
,
1084 gettext_noop("Controls whether ssl_passphrase_command is called during server reload."),
1087 &ssl_passphrase_command_supports_reload
,
1092 {"ssl_prefer_server_ciphers", PGC_SIGHUP
, CONN_AUTH_SSL
,
1093 gettext_noop("Give priority to server ciphersuite order."),
1096 &SSLPreferServerCiphers
,
1101 {"fsync", PGC_SIGHUP
, WAL_SETTINGS
,
1102 gettext_noop("Forces synchronization of updates to disk."),
1103 gettext_noop("The server will use the fsync() system call in several places to make "
1104 "sure that updates are physically written to disk. This insures "
1105 "that a database cluster will recover to a consistent state after "
1106 "an operating system or hardware crash.")
1113 {"ignore_checksum_failure", PGC_SUSET
, DEVELOPER_OPTIONS
,
1114 gettext_noop("Continues processing after a checksum failure."),
1115 gettext_noop("Detection of a checksum failure normally causes PostgreSQL to "
1116 "report an error, aborting the current transaction. Setting "
1117 "ignore_checksum_failure to true causes the system to ignore the failure "
1118 "(but still report a warning), and continue processing. This "
1119 "behavior could cause crashes or other serious problems. Only "
1120 "has an effect if checksums are enabled."),
1123 &ignore_checksum_failure
,
1128 {"zero_damaged_pages", PGC_SUSET
, DEVELOPER_OPTIONS
,
1129 gettext_noop("Continues processing past damaged page headers."),
1130 gettext_noop("Detection of a damaged page header normally causes PostgreSQL to "
1131 "report an error, aborting the current transaction. Setting "
1132 "zero_damaged_pages to true causes the system to instead report a "
1133 "warning, zero out the damaged page, and continue processing. This "
1134 "behavior will destroy data, namely all the rows on the damaged page."),
1137 &zero_damaged_pages
,
1142 {"ignore_invalid_pages", PGC_POSTMASTER
, DEVELOPER_OPTIONS
,
1143 gettext_noop("Continues recovery after an invalid pages failure."),
1144 gettext_noop("Detection of WAL records having references to "
1145 "invalid pages during recovery causes PostgreSQL to "
1146 "raise a PANIC-level error, aborting the recovery. "
1147 "Setting ignore_invalid_pages to true causes "
1148 "the system to ignore invalid page references "
1149 "in WAL records (but still report a warning), "
1150 "and continue recovery. This behavior may cause "
1151 "crashes, data loss, propagate or hide corruption, "
1152 "or other serious problems. Only has an effect "
1153 "during recovery or in standby mode."),
1156 &ignore_invalid_pages
,
1161 {"full_page_writes", PGC_SIGHUP
, WAL_SETTINGS
,
1162 gettext_noop("Writes full pages to WAL when first modified after a checkpoint."),
1163 gettext_noop("A page write in process during an operating system crash might be "
1164 "only partially written to disk. During recovery, the row changes "
1165 "stored in WAL are not enough to recover. This option writes "
1166 "pages when first modified after a checkpoint to WAL so full recovery "
1175 {"wal_log_hints", PGC_POSTMASTER
, WAL_SETTINGS
,
1176 gettext_noop("Writes full pages to WAL when first modified after a checkpoint, even for a non-critical modification."),
1185 {"wal_init_zero", PGC_SUSET
, WAL_SETTINGS
,
1186 gettext_noop("Writes zeroes to new WAL files before first use."),
1195 {"wal_recycle", PGC_SUSET
, WAL_SETTINGS
,
1196 gettext_noop("Recycles WAL files by renaming them."),
1205 {"log_checkpoints", PGC_SIGHUP
, LOGGING_WHAT
,
1206 gettext_noop("Logs each checkpoint."),
1214 {"log_connections", PGC_SU_BACKEND
, LOGGING_WHAT
,
1215 gettext_noop("Logs each successful connection."),
1223 {"log_disconnections", PGC_SU_BACKEND
, LOGGING_WHAT
,
1224 gettext_noop("Logs end of a session, including duration."),
1227 &Log_disconnections
,
1232 {"log_replication_commands", PGC_SUSET
, LOGGING_WHAT
,
1233 gettext_noop("Logs each replication command."),
1236 &log_replication_commands
,
1241 {"debug_assertions", PGC_INTERNAL
, PRESET_OPTIONS
,
1242 gettext_noop("Shows whether the running server has assertion checks enabled."),
1244 GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
1247 DEFAULT_ASSERT_ENABLED
,
1252 {"exit_on_error", PGC_USERSET
, ERROR_HANDLING_OPTIONS
,
1253 gettext_noop("Terminate session on any error."),
1261 {"restart_after_crash", PGC_SIGHUP
, ERROR_HANDLING_OPTIONS
,
1262 gettext_noop("Reinitialize server after backend crash."),
1265 &restart_after_crash
,
1270 {"remove_temp_files_after_crash", PGC_SIGHUP
, DEVELOPER_OPTIONS
,
1271 gettext_noop("Remove temporary files after backend crash."),
1275 &remove_temp_files_after_crash
,
1280 {"send_abort_for_crash", PGC_SIGHUP
, DEVELOPER_OPTIONS
,
1281 gettext_noop("Send SIGABRT not SIGQUIT to child processes after backend crash."),
1285 &send_abort_for_crash
,
1290 {"send_abort_for_kill", PGC_SIGHUP
, DEVELOPER_OPTIONS
,
1291 gettext_noop("Send SIGABRT not SIGKILL to stuck child processes."),
1295 &send_abort_for_kill
,
1301 {"log_duration", PGC_SUSET
, LOGGING_WHAT
,
1302 gettext_noop("Logs the duration of each completed SQL statement."),
1310 {"debug_print_parse", PGC_USERSET
, LOGGING_WHAT
,
1311 gettext_noop("Logs each query's parse tree."),
1319 {"debug_print_rewritten", PGC_USERSET
, LOGGING_WHAT
,
1320 gettext_noop("Logs each query's rewritten parse tree."),
1323 &Debug_print_rewritten
,
1328 {"debug_print_plan", PGC_USERSET
, LOGGING_WHAT
,
1329 gettext_noop("Logs each query's execution plan."),
1337 {"debug_pretty_print", PGC_USERSET
, LOGGING_WHAT
,
1338 gettext_noop("Indents parse and plan tree displays."),
1341 &Debug_pretty_print
,
1346 {"log_parser_stats", PGC_SUSET
, STATS_MONITORING
,
1347 gettext_noop("Writes parser performance statistics to the server log."),
1352 check_stage_log_stats
, NULL
, NULL
1355 {"log_planner_stats", PGC_SUSET
, STATS_MONITORING
,
1356 gettext_noop("Writes planner performance statistics to the server log."),
1361 check_stage_log_stats
, NULL
, NULL
1364 {"log_executor_stats", PGC_SUSET
, STATS_MONITORING
,
1365 gettext_noop("Writes executor performance statistics to the server log."),
1368 &log_executor_stats
,
1370 check_stage_log_stats
, NULL
, NULL
1373 {"log_statement_stats", PGC_SUSET
, STATS_MONITORING
,
1374 gettext_noop("Writes cumulative performance statistics to the server log."),
1377 &log_statement_stats
,
1379 check_log_stats
, NULL
, NULL
1381 #ifdef BTREE_BUILD_STATS
1383 {"log_btree_build_stats", PGC_SUSET
, DEVELOPER_OPTIONS
,
1384 gettext_noop("Logs system resource usage statistics (memory and CPU) on various B-tree operations."),
1388 &log_btree_build_stats
,
1395 {"track_activities", PGC_SUSET
, STATS_CUMULATIVE
,
1396 gettext_noop("Collects information about executing commands."),
1397 gettext_noop("Enables the collection of information on the currently "
1398 "executing command of each session, along with "
1399 "the time at which that command began execution.")
1401 &pgstat_track_activities
,
1406 {"track_counts", PGC_SUSET
, STATS_CUMULATIVE
,
1407 gettext_noop("Collects statistics on database activity."),
1410 &pgstat_track_counts
,
1415 {"track_io_timing", PGC_SUSET
, STATS_CUMULATIVE
,
1416 gettext_noop("Collects timing statistics for database I/O activity."),
1424 {"track_wal_io_timing", PGC_SUSET
, STATS_CUMULATIVE
,
1425 gettext_noop("Collects timing statistics for WAL I/O activity."),
1428 &track_wal_io_timing
,
1434 {"update_process_title", PGC_SUSET
, PROCESS_TITLE
,
1435 gettext_noop("Updates the process title to show the active SQL command."),
1436 gettext_noop("Enables updating of the process title every time a new SQL command is received by the server.")
1438 &update_process_title
,
1439 DEFAULT_UPDATE_PROCESS_TITLE
,
1444 {"autovacuum", PGC_SIGHUP
, AUTOVACUUM
,
1445 gettext_noop("Starts the autovacuum subprocess."),
1448 &autovacuum_start_daemon
,
1454 {"trace_notify", PGC_USERSET
, DEVELOPER_OPTIONS
,
1455 gettext_noop("Generates debugging output for LISTEN and NOTIFY."),
1466 {"trace_locks", PGC_SUSET
, DEVELOPER_OPTIONS
,
1467 gettext_noop("Emits information about lock usage."),
1476 {"trace_userlocks", PGC_SUSET
, DEVELOPER_OPTIONS
,
1477 gettext_noop("Emits information about user lock usage."),
1486 {"trace_lwlocks", PGC_SUSET
, DEVELOPER_OPTIONS
,
1487 gettext_noop("Emits information about lightweight lock usage."),
1496 {"debug_deadlocks", PGC_SUSET
, DEVELOPER_OPTIONS
,
1497 gettext_noop("Dumps information about all current locks when a deadlock timeout occurs."),
1508 {"log_lock_waits", PGC_SUSET
, LOGGING_WHAT
,
1509 gettext_noop("Logs long lock waits."),
1517 {"log_recovery_conflict_waits", PGC_SIGHUP
, LOGGING_WHAT
,
1518 gettext_noop("Logs standby recovery conflict waits."),
1521 &log_recovery_conflict_waits
,
1526 {"log_hostname", PGC_SIGHUP
, LOGGING_WHAT
,
1527 gettext_noop("Logs the host name in the connection logs."),
1528 gettext_noop("By default, connection logs only show the IP address "
1529 "of the connecting host. If you want them to show the host name you "
1530 "can turn this on, but depending on your host name resolution "
1531 "setup it might impose a non-negligible performance penalty.")
1538 {"transform_null_equals", PGC_USERSET
, COMPAT_OPTIONS_CLIENT
,
1539 gettext_noop("Treats \"expr=NULL\" as \"expr IS NULL\"."),
1540 gettext_noop("When turned on, expressions of the form expr = NULL "
1541 "(or NULL = expr) are treated as expr IS NULL, that is, they "
1542 "return true if expr evaluates to the null value, and false "
1543 "otherwise. The correct behavior of expr = NULL is to always "
1544 "return null (unknown).")
1546 &Transform_null_equals
,
1551 {"default_transaction_read_only", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
1552 gettext_noop("Sets the default read-only status of new transactions."),
1556 &DefaultXactReadOnly
,
1561 {"transaction_read_only", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
1562 gettext_noop("Sets the current transaction's read-only status."),
1564 GUC_NO_RESET
| GUC_NO_RESET_ALL
| GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
1568 check_transaction_read_only
, NULL
, NULL
1571 {"default_transaction_deferrable", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
1572 gettext_noop("Sets the default deferrable status of new transactions."),
1575 &DefaultXactDeferrable
,
1580 {"transaction_deferrable", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
1581 gettext_noop("Whether to defer a read-only serializable transaction until it can be executed with no possible serialization failures."),
1583 GUC_NO_RESET
| GUC_NO_RESET_ALL
| GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
1587 check_transaction_deferrable
, NULL
, NULL
1590 {"row_security", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
1591 gettext_noop("Enable row security."),
1592 gettext_noop("When enabled, row security will be applied to all users.")
1599 {"check_function_bodies", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
1600 gettext_noop("Check routine bodies during CREATE FUNCTION and CREATE PROCEDURE."),
1603 &check_function_bodies
,
1608 {"array_nulls", PGC_USERSET
, COMPAT_OPTIONS_PREVIOUS
,
1609 gettext_noop("Enable input of NULL elements in arrays."),
1610 gettext_noop("When turned on, unquoted NULL in an array input "
1611 "value means a null value; "
1612 "otherwise it is taken literally.")
1620 * WITH OIDS support, and consequently default_with_oids, was removed in
1621 * PostgreSQL 12, but we tolerate the parameter being set to false to
1622 * avoid unnecessarily breaking older dump files.
1625 {"default_with_oids", PGC_USERSET
, COMPAT_OPTIONS_PREVIOUS
,
1626 gettext_noop("WITH OIDS is no longer supported; this can only be false."),
1628 GUC_NO_SHOW_ALL
| GUC_NOT_IN_SAMPLE
1632 check_default_with_oids
, NULL
, NULL
1635 {"logging_collector", PGC_POSTMASTER
, LOGGING_WHERE
,
1636 gettext_noop("Start a subprocess to capture stderr output and/or csvlogs into log files."),
1644 {"log_truncate_on_rotation", PGC_SIGHUP
, LOGGING_WHERE
,
1645 gettext_noop("Truncate existing log files of same name during log rotation."),
1648 &Log_truncate_on_rotation
,
1655 {"trace_sort", PGC_USERSET
, DEVELOPER_OPTIONS
,
1656 gettext_noop("Emit information about resource usage in sorting."),
1666 #ifdef TRACE_SYNCSCAN
1667 /* this is undocumented because not exposed in a standard build */
1669 {"trace_syncscan", PGC_USERSET
, DEVELOPER_OPTIONS
,
1670 gettext_noop("Generate debugging output for synchronized scanning."),
1680 #ifdef DEBUG_BOUNDED_SORT
1681 /* this is undocumented because not exposed in a standard build */
1684 "optimize_bounded_sort", PGC_USERSET
, QUERY_TUNING_METHOD
,
1685 gettext_noop("Enable bounded sorting using heap sort."),
1687 GUC_NOT_IN_SAMPLE
| GUC_EXPLAIN
1689 &optimize_bounded_sort
,
1697 {"wal_debug", PGC_SUSET
, DEVELOPER_OPTIONS
,
1698 gettext_noop("Emit WAL-related debugging output."),
1709 {"integer_datetimes", PGC_INTERNAL
, PRESET_OPTIONS
,
1710 gettext_noop("Shows whether datetimes are integer based."),
1712 GUC_REPORT
| GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
1720 {"krb_caseins_users", PGC_SIGHUP
, CONN_AUTH_AUTH
,
1721 gettext_noop("Sets whether Kerberos and GSSAPI user names should be treated as case-insensitive."),
1724 &pg_krb_caseins_users
,
1730 {"gss_accept_delegation", PGC_SIGHUP
, CONN_AUTH_AUTH
,
1731 gettext_noop("Sets whether GSSAPI delegation should be accepted from the client."),
1734 &pg_gss_accept_delegation
,
1740 {"escape_string_warning", PGC_USERSET
, COMPAT_OPTIONS_PREVIOUS
,
1741 gettext_noop("Warn about backslash escapes in ordinary string literals."),
1744 &escape_string_warning
,
1750 {"standard_conforming_strings", PGC_USERSET
, COMPAT_OPTIONS_PREVIOUS
,
1751 gettext_noop("Causes '...' strings to treat backslashes literally."),
1755 &standard_conforming_strings
,
1761 {"synchronize_seqscans", PGC_USERSET
, COMPAT_OPTIONS_PREVIOUS
,
1762 gettext_noop("Enable synchronized sequential scans."),
1765 &synchronize_seqscans
,
1771 {"recovery_target_inclusive", PGC_POSTMASTER
, WAL_RECOVERY_TARGET
,
1772 gettext_noop("Sets whether to include or exclude transaction with recovery target."),
1775 &recoveryTargetInclusive
,
1781 {"hot_standby", PGC_POSTMASTER
, REPLICATION_STANDBY
,
1782 gettext_noop("Allows connections and queries during recovery."),
1791 {"hot_standby_feedback", PGC_SIGHUP
, REPLICATION_STANDBY
,
1792 gettext_noop("Allows feedback from a hot standby to the primary that will avoid query conflicts."),
1795 &hot_standby_feedback
,
1801 {"in_hot_standby", PGC_INTERNAL
, PRESET_OPTIONS
,
1802 gettext_noop("Shows whether hot standby is currently active."),
1804 GUC_REPORT
| GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
1806 &in_hot_standby_guc
,
1808 NULL
, NULL
, show_in_hot_standby
1812 {"allow_system_table_mods", PGC_SUSET
, DEVELOPER_OPTIONS
,
1813 gettext_noop("Allows modifications of the structure of system tables."),
1817 &allowSystemTableMods
,
1823 {"ignore_system_indexes", PGC_BACKEND
, DEVELOPER_OPTIONS
,
1824 gettext_noop("Disables reading from system indexes."),
1825 gettext_noop("It does not prevent updating the indexes, so it is safe "
1826 "to use. The worst consequence is slowness."),
1829 &IgnoreSystemIndexes
,
1835 {"allow_in_place_tablespaces", PGC_SUSET
, DEVELOPER_OPTIONS
,
1836 gettext_noop("Allows tablespaces directly inside pg_tblspc, for testing."),
1840 &allow_in_place_tablespaces
,
1846 {"lo_compat_privileges", PGC_SUSET
, COMPAT_OPTIONS_PREVIOUS
,
1847 gettext_noop("Enables backward compatibility mode for privilege checks on large objects."),
1848 gettext_noop("Skips privilege checks when reading or modifying large objects, "
1849 "for compatibility with PostgreSQL releases prior to 9.0.")
1851 &lo_compat_privileges
,
1857 {"quote_all_identifiers", PGC_USERSET
, COMPAT_OPTIONS_PREVIOUS
,
1858 gettext_noop("When generating SQL fragments, quote all identifiers."),
1861 "e_all_identifiers
,
1867 {"data_checksums", PGC_INTERNAL
, PRESET_OPTIONS
,
1868 gettext_noop("Shows whether data checksums are turned on for this cluster."),
1870 GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
| GUC_RUNTIME_COMPUTED
1878 {"syslog_sequence_numbers", PGC_SIGHUP
, LOGGING_WHERE
,
1879 gettext_noop("Add sequence number to syslog messages to avoid duplicate suppression."),
1882 &syslog_sequence_numbers
,
1888 {"syslog_split_messages", PGC_SIGHUP
, LOGGING_WHERE
,
1889 gettext_noop("Split messages sent to syslog by lines and to fit into 1024 bytes."),
1892 &syslog_split_messages
,
1898 {"parallel_leader_participation", PGC_USERSET
, RESOURCES_ASYNCHRONOUS
,
1899 gettext_noop("Controls whether Gather and Gather Merge also run subplans."),
1900 gettext_noop("Should gather nodes also run subplans or just gather tuples?"),
1903 ¶llel_leader_participation
,
1909 {"jit", PGC_USERSET
, QUERY_TUNING_OTHER
,
1910 gettext_noop("Allow JIT compilation."),
1920 {"jit_debugging_support", PGC_SU_BACKEND
, DEVELOPER_OPTIONS
,
1921 gettext_noop("Register JIT-compiled functions with debugger."),
1925 &jit_debugging_support
,
1929 * This is not guaranteed to be available, but given it's a developer
1930 * oriented option, it doesn't seem worth adding code checking
1937 {"jit_dump_bitcode", PGC_SUSET
, DEVELOPER_OPTIONS
,
1938 gettext_noop("Write out LLVM bitcode to facilitate JIT debugging."),
1948 {"jit_expressions", PGC_USERSET
, DEVELOPER_OPTIONS
,
1949 gettext_noop("Allow JIT compilation of expressions."),
1959 {"jit_profiling_support", PGC_SU_BACKEND
, DEVELOPER_OPTIONS
,
1960 gettext_noop("Register JIT-compiled functions with perf profiler."),
1964 &jit_profiling_support
,
1968 * This is not guaranteed to be available, but given it's a developer
1969 * oriented option, it doesn't seem worth adding code checking
1976 {"jit_tuple_deforming", PGC_USERSET
, DEVELOPER_OPTIONS
,
1977 gettext_noop("Allow JIT compilation of tuple deforming."),
1981 &jit_tuple_deforming
,
1987 {"data_sync_retry", PGC_POSTMASTER
, ERROR_HANDLING_OPTIONS
,
1988 gettext_noop("Whether to continue running after a failure to sync data files."),
1996 {"wal_receiver_create_temp_slot", PGC_SIGHUP
, REPLICATION_STANDBY
,
1997 gettext_noop("Sets whether a WAL receiver should create a temporary replication slot if no permanent slot is configured."),
1999 &wal_receiver_create_temp_slot
,
2005 {"event_triggers", PGC_SUSET
, CLIENT_CONN_STATEMENT
,
2006 gettext_noop("Enables event triggers."),
2007 gettext_noop("When enabled, event triggers will fire for all applicable statements."),
2014 /* End-of-list marker */
2016 {NULL
, 0, 0, NULL
, NULL
}, NULL
, false, NULL
, NULL
, NULL
2021 struct config_int ConfigureNamesInt
[] =
2024 {"archive_timeout", PGC_SIGHUP
, WAL_ARCHIVING
,
2025 gettext_noop("Sets the amount of time to wait before forcing a "
2026 "switch to the next WAL file."),
2030 &XLogArchiveTimeout
,
2035 {"post_auth_delay", PGC_BACKEND
, DEVELOPER_OPTIONS
,
2036 gettext_noop("Sets the amount of time to wait after "
2037 "authentication on connection startup."),
2038 gettext_noop("This allows attaching a debugger to the process."),
2039 GUC_NOT_IN_SAMPLE
| GUC_UNIT_S
2042 0, 0, INT_MAX
/ 1000000,
2046 {"default_statistics_target", PGC_USERSET
, QUERY_TUNING_OTHER
,
2047 gettext_noop("Sets the default statistics target."),
2048 gettext_noop("This applies to table columns that have not had a "
2049 "column-specific target set via ALTER TABLE SET STATISTICS.")
2051 &default_statistics_target
,
2052 100, 1, MAX_STATISTICS_TARGET
,
2056 {"from_collapse_limit", PGC_USERSET
, QUERY_TUNING_OTHER
,
2057 gettext_noop("Sets the FROM-list size beyond which subqueries "
2058 "are not collapsed."),
2059 gettext_noop("The planner will merge subqueries into upper "
2060 "queries if the resulting FROM list would have no more than "
2061 "this many items."),
2064 &from_collapse_limit
,
2069 {"join_collapse_limit", PGC_USERSET
, QUERY_TUNING_OTHER
,
2070 gettext_noop("Sets the FROM-list size beyond which JOIN "
2071 "constructs are not flattened."),
2072 gettext_noop("The planner will flatten explicit JOIN "
2073 "constructs into lists of FROM items whenever a "
2074 "list of no more than this many items would result."),
2077 &join_collapse_limit
,
2082 {"geqo_threshold", PGC_USERSET
, QUERY_TUNING_GEQO
,
2083 gettext_noop("Sets the threshold of FROM items beyond which GEQO is used."),
2092 {"geqo_effort", PGC_USERSET
, QUERY_TUNING_GEQO
,
2093 gettext_noop("GEQO: effort is used to set the default for other GEQO parameters."),
2098 DEFAULT_GEQO_EFFORT
, MIN_GEQO_EFFORT
, MAX_GEQO_EFFORT
,
2102 {"geqo_pool_size", PGC_USERSET
, QUERY_TUNING_GEQO
,
2103 gettext_noop("GEQO: number of individuals in the population."),
2104 gettext_noop("Zero selects a suitable default value."),
2112 {"geqo_generations", PGC_USERSET
, QUERY_TUNING_GEQO
,
2113 gettext_noop("GEQO: number of iterations of the algorithm."),
2114 gettext_noop("Zero selects a suitable default value."),
2123 /* This is PGC_SUSET to prevent hiding from log_lock_waits. */
2124 {"deadlock_timeout", PGC_SUSET
, LOCK_MANAGEMENT
,
2125 gettext_noop("Sets the time to wait on a lock before checking for deadlock."),
2135 {"max_standby_archive_delay", PGC_SIGHUP
, REPLICATION_STANDBY
,
2136 gettext_noop("Sets the maximum delay before canceling queries when a hot standby server is processing archived WAL data."),
2140 &max_standby_archive_delay
,
2141 30 * 1000, -1, INT_MAX
,
2146 {"max_standby_streaming_delay", PGC_SIGHUP
, REPLICATION_STANDBY
,
2147 gettext_noop("Sets the maximum delay before canceling queries when a hot standby server is processing streamed WAL data."),
2151 &max_standby_streaming_delay
,
2152 30 * 1000, -1, INT_MAX
,
2157 {"recovery_min_apply_delay", PGC_SIGHUP
, REPLICATION_STANDBY
,
2158 gettext_noop("Sets the minimum delay for applying changes during recovery."),
2162 &recovery_min_apply_delay
,
2168 {"wal_receiver_status_interval", PGC_SIGHUP
, REPLICATION_STANDBY
,
2169 gettext_noop("Sets the maximum interval between WAL receiver status reports to the sending server."),
2173 &wal_receiver_status_interval
,
2174 10, 0, INT_MAX
/ 1000,
2179 {"wal_receiver_timeout", PGC_SIGHUP
, REPLICATION_STANDBY
,
2180 gettext_noop("Sets the maximum wait time to receive data from the sending server."),
2184 &wal_receiver_timeout
,
2185 60 * 1000, 0, INT_MAX
,
2190 {"max_connections", PGC_POSTMASTER
, CONN_AUTH_SETTINGS
,
2191 gettext_noop("Sets the maximum number of concurrent connections."),
2195 100, 1, MAX_BACKENDS
,
2196 check_max_connections
, NULL
, NULL
2200 /* see max_connections */
2201 {"superuser_reserved_connections", PGC_POSTMASTER
, CONN_AUTH_SETTINGS
,
2202 gettext_noop("Sets the number of connection slots reserved for superusers."),
2205 &SuperuserReservedConnections
,
2211 {"reserved_connections", PGC_POSTMASTER
, CONN_AUTH_SETTINGS
,
2212 gettext_noop("Sets the number of connection slots reserved for roles "
2213 "with privileges of pg_use_reserved_connections."),
2216 &ReservedConnections
,
2222 {"min_dynamic_shared_memory", PGC_POSTMASTER
, RESOURCES_MEM
,
2223 gettext_noop("Amount of dynamic shared memory reserved at startup."),
2227 &min_dynamic_shared_memory
,
2228 0, 0, (int) Min((size_t) INT_MAX
, SIZE_MAX
/ (1024 * 1024)),
2233 * We sometimes multiply the number of shared buffers by two without
2234 * checking for overflow, so we mustn't allow more than INT_MAX / 2.
2237 {"shared_buffers", PGC_POSTMASTER
, RESOURCES_MEM
,
2238 gettext_noop("Sets the number of shared memory buffers used by the server."),
2243 16384, 16, INT_MAX
/ 2,
2248 {"vacuum_buffer_usage_limit", PGC_USERSET
, RESOURCES_MEM
,
2249 gettext_noop("Sets the buffer pool size for VACUUM, ANALYZE, and autovacuum."),
2253 &VacuumBufferUsageLimit
,
2254 256, 0, MAX_BAS_VAC_RING_SIZE_KB
,
2255 check_vacuum_buffer_usage_limit
, NULL
, NULL
2259 {"shared_memory_size", PGC_INTERNAL
, PRESET_OPTIONS
,
2260 gettext_noop("Shows the size of the server's main shared memory area (rounded up to the nearest MB)."),
2262 GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
| GUC_UNIT_MB
| GUC_RUNTIME_COMPUTED
2264 &shared_memory_size_mb
,
2270 {"shared_memory_size_in_huge_pages", PGC_INTERNAL
, PRESET_OPTIONS
,
2271 gettext_noop("Shows the number of huge pages needed for the main shared memory area."),
2272 gettext_noop("-1 indicates that the value could not be determined."),
2273 GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
| GUC_RUNTIME_COMPUTED
2275 &shared_memory_size_in_huge_pages
,
2281 {"temp_buffers", PGC_USERSET
, RESOURCES_MEM
,
2282 gettext_noop("Sets the maximum number of temporary buffers used by each session."),
2284 GUC_UNIT_BLOCKS
| GUC_EXPLAIN
2287 1024, 100, INT_MAX
/ 2,
2288 check_temp_buffers
, NULL
, NULL
2292 {"port", PGC_POSTMASTER
, CONN_AUTH_SETTINGS
,
2293 gettext_noop("Sets the TCP port the server listens on."),
2297 DEF_PGPORT
, 1, 65535,
2302 {"unix_socket_permissions", PGC_POSTMASTER
, CONN_AUTH_SETTINGS
,
2303 gettext_noop("Sets the access permissions of the Unix-domain socket."),
2304 gettext_noop("Unix-domain sockets use the usual Unix file system "
2305 "permission set. The parameter value is expected "
2306 "to be a numeric mode specification in the form "
2307 "accepted by the chmod and umask system calls. "
2308 "(To use the customary octal format the number must "
2309 "start with a 0 (zero).)")
2311 &Unix_socket_permissions
,
2313 NULL
, NULL
, show_unix_socket_permissions
2317 {"log_file_mode", PGC_SIGHUP
, LOGGING_WHERE
,
2318 gettext_noop("Sets the file permissions for log files."),
2319 gettext_noop("The parameter value is expected "
2320 "to be a numeric mode specification in the form "
2321 "accepted by the chmod and umask system calls. "
2322 "(To use the customary octal format the number must "
2323 "start with a 0 (zero).)")
2327 NULL
, NULL
, show_log_file_mode
2332 {"data_directory_mode", PGC_INTERNAL
, PRESET_OPTIONS
,
2333 gettext_noop("Shows the mode of the data directory."),
2334 gettext_noop("The parameter value is a numeric mode specification "
2335 "in the form accepted by the chmod and umask system "
2336 "calls. (To use the customary octal format the number "
2337 "must start with a 0 (zero).)"),
2338 GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
| GUC_RUNTIME_COMPUTED
2340 &data_directory_mode
,
2342 NULL
, NULL
, show_data_directory_mode
2346 {"work_mem", PGC_USERSET
, RESOURCES_MEM
,
2347 gettext_noop("Sets the maximum memory to be used for query workspaces."),
2348 gettext_noop("This much memory can be used by each internal "
2349 "sort operation and hash table before switching to "
2350 "temporary disk files."),
2351 GUC_UNIT_KB
| GUC_EXPLAIN
2354 4096, 64, MAX_KILOBYTES
,
2359 {"maintenance_work_mem", PGC_USERSET
, RESOURCES_MEM
,
2360 gettext_noop("Sets the maximum memory to be used for maintenance operations."),
2361 gettext_noop("This includes operations such as VACUUM and CREATE INDEX."),
2364 &maintenance_work_mem
,
2365 65536, 1024, MAX_KILOBYTES
,
2370 {"logical_decoding_work_mem", PGC_USERSET
, RESOURCES_MEM
,
2371 gettext_noop("Sets the maximum memory to be used for logical decoding."),
2372 gettext_noop("This much memory can be used by each internal "
2373 "reorder buffer before spilling to disk."),
2376 &logical_decoding_work_mem
,
2377 65536, 64, MAX_KILOBYTES
,
2382 * We use the hopefully-safely-small value of 100kB as the compiled-in
2383 * default for max_stack_depth. InitializeGUCOptions will increase it if
2384 * possible, depending on the actual platform-specific stack limit.
2387 {"max_stack_depth", PGC_SUSET
, RESOURCES_MEM
,
2388 gettext_noop("Sets the maximum stack depth, in kilobytes."),
2393 100, 100, MAX_KILOBYTES
,
2394 check_max_stack_depth
, assign_max_stack_depth
, NULL
2398 {"temp_file_limit", PGC_SUSET
, RESOURCES_DISK
,
2399 gettext_noop("Limits the total size of all temporary files used by each process."),
2400 gettext_noop("-1 means no limit."),
2409 {"vacuum_cost_page_hit", PGC_USERSET
, RESOURCES_VACUUM_DELAY
,
2410 gettext_noop("Vacuum cost for a page found in the buffer cache."),
2419 {"vacuum_cost_page_miss", PGC_USERSET
, RESOURCES_VACUUM_DELAY
,
2420 gettext_noop("Vacuum cost for a page not found in the buffer cache."),
2423 &VacuumCostPageMiss
,
2429 {"vacuum_cost_page_dirty", PGC_USERSET
, RESOURCES_VACUUM_DELAY
,
2430 gettext_noop("Vacuum cost for a page dirtied by vacuum."),
2433 &VacuumCostPageDirty
,
2439 {"vacuum_cost_limit", PGC_USERSET
, RESOURCES_VACUUM_DELAY
,
2440 gettext_noop("Vacuum cost amount available before napping."),
2449 {"autovacuum_vacuum_cost_limit", PGC_SIGHUP
, AUTOVACUUM
,
2450 gettext_noop("Vacuum cost amount available before napping, for autovacuum."),
2453 &autovacuum_vac_cost_limit
,
2459 {"max_files_per_process", PGC_POSTMASTER
, RESOURCES_KERNEL
,
2460 gettext_noop("Sets the maximum number of simultaneously open files for each server process."),
2463 &max_files_per_process
,
2469 * See also CheckRequiredParameterValues() if this parameter changes
2472 {"max_prepared_transactions", PGC_POSTMASTER
, RESOURCES_MEM
,
2473 gettext_noop("Sets the maximum number of simultaneously prepared transactions."),
2476 &max_prepared_xacts
,
2483 {"trace_lock_oidmin", PGC_SUSET
, DEVELOPER_OPTIONS
,
2484 gettext_noop("Sets the minimum OID of tables for tracking locks."),
2485 gettext_noop("Is used to avoid output on system tables."),
2489 FirstNormalObjectId
, 0, INT_MAX
,
2493 {"trace_lock_table", PGC_SUSET
, DEVELOPER_OPTIONS
,
2494 gettext_noop("Sets the OID of the table with unconditionally lock tracing."),
2505 {"statement_timeout", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
2506 gettext_noop("Sets the maximum allowed duration of any statement."),
2507 gettext_noop("A value of 0 turns off the timeout."),
2516 {"lock_timeout", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
2517 gettext_noop("Sets the maximum allowed duration of any wait for a lock."),
2518 gettext_noop("A value of 0 turns off the timeout."),
2527 {"idle_in_transaction_session_timeout", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
2528 gettext_noop("Sets the maximum allowed idle time between queries, when in a transaction."),
2529 gettext_noop("A value of 0 turns off the timeout."),
2532 &IdleInTransactionSessionTimeout
,
2538 {"idle_session_timeout", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
2539 gettext_noop("Sets the maximum allowed idle time between queries, when not in a transaction."),
2540 gettext_noop("A value of 0 turns off the timeout."),
2543 &IdleSessionTimeout
,
2549 {"vacuum_freeze_min_age", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
2550 gettext_noop("Minimum age at which VACUUM should freeze a table row."),
2553 &vacuum_freeze_min_age
,
2554 50000000, 0, 1000000000,
2559 {"vacuum_freeze_table_age", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
2560 gettext_noop("Age at which VACUUM should scan whole table to freeze tuples."),
2563 &vacuum_freeze_table_age
,
2564 150000000, 0, 2000000000,
2569 {"vacuum_multixact_freeze_min_age", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
2570 gettext_noop("Minimum age at which VACUUM should freeze a MultiXactId in a table row."),
2573 &vacuum_multixact_freeze_min_age
,
2574 5000000, 0, 1000000000,
2579 {"vacuum_multixact_freeze_table_age", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
2580 gettext_noop("Multixact age at which VACUUM should scan whole table to freeze tuples."),
2583 &vacuum_multixact_freeze_table_age
,
2584 150000000, 0, 2000000000,
2589 {"vacuum_failsafe_age", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
2590 gettext_noop("Age at which VACUUM should trigger failsafe to avoid a wraparound outage."),
2593 &vacuum_failsafe_age
,
2594 1600000000, 0, 2100000000,
2598 {"vacuum_multixact_failsafe_age", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
2599 gettext_noop("Multixact age at which VACUUM should trigger failsafe to avoid a wraparound outage."),
2602 &vacuum_multixact_failsafe_age
,
2603 1600000000, 0, 2100000000,
2608 * See also CheckRequiredParameterValues() if this parameter changes
2611 {"max_locks_per_transaction", PGC_POSTMASTER
, LOCK_MANAGEMENT
,
2612 gettext_noop("Sets the maximum number of locks per transaction."),
2613 gettext_noop("The shared lock table is sized on the assumption that at most "
2614 "max_locks_per_transaction objects per server process or prepared "
2615 "transaction will need to be locked at any one time.")
2617 &max_locks_per_xact
,
2623 {"max_pred_locks_per_transaction", PGC_POSTMASTER
, LOCK_MANAGEMENT
,
2624 gettext_noop("Sets the maximum number of predicate locks per transaction."),
2625 gettext_noop("The shared predicate lock table is sized on the assumption that "
2626 "at most max_pred_locks_per_transaction objects per server process "
2627 "or prepared transaction will need to be locked at any one time.")
2629 &max_predicate_locks_per_xact
,
2635 {"max_pred_locks_per_relation", PGC_SIGHUP
, LOCK_MANAGEMENT
,
2636 gettext_noop("Sets the maximum number of predicate-locked pages and tuples per relation."),
2637 gettext_noop("If more than this total of pages and tuples in the same relation are locked "
2638 "by a connection, those locks are replaced by a relation-level lock.")
2640 &max_predicate_locks_per_relation
,
2641 -2, INT_MIN
, INT_MAX
,
2646 {"max_pred_locks_per_page", PGC_SIGHUP
, LOCK_MANAGEMENT
,
2647 gettext_noop("Sets the maximum number of predicate-locked tuples per page."),
2648 gettext_noop("If more than this number of tuples on the same page are locked "
2649 "by a connection, those locks are replaced by a page-level lock.")
2651 &max_predicate_locks_per_page
,
2657 {"authentication_timeout", PGC_SIGHUP
, CONN_AUTH_AUTH
,
2658 gettext_noop("Sets the maximum allowed time to complete client authentication."),
2662 &AuthenticationTimeout
,
2668 /* Not for general use */
2669 {"pre_auth_delay", PGC_SIGHUP
, DEVELOPER_OPTIONS
,
2670 gettext_noop("Sets the amount of time to wait before "
2671 "authentication on connection startup."),
2672 gettext_noop("This allows attaching a debugger to the process."),
2673 GUC_NOT_IN_SAMPLE
| GUC_UNIT_S
2681 {"wal_decode_buffer_size", PGC_POSTMASTER
, WAL_RECOVERY
,
2682 gettext_noop("Buffer size for reading ahead in the WAL during recovery."),
2683 gettext_noop("Maximum distance to read ahead in the WAL to prefetch referenced data blocks."),
2686 &wal_decode_buffer_size
,
2687 512 * 1024, 64 * 1024, MaxAllocSize
,
2692 {"wal_keep_size", PGC_SIGHUP
, REPLICATION_SENDING
,
2693 gettext_noop("Sets the size of WAL files held for standby servers."),
2698 0, 0, MAX_KILOBYTES
,
2703 {"min_wal_size", PGC_SIGHUP
, WAL_CHECKPOINTS
,
2704 gettext_noop("Sets the minimum size to shrink the WAL to."),
2709 DEFAULT_MIN_WAL_SEGS
* (DEFAULT_XLOG_SEG_SIZE
/ (1024 * 1024)),
2715 {"max_wal_size", PGC_SIGHUP
, WAL_CHECKPOINTS
,
2716 gettext_noop("Sets the WAL size that triggers a checkpoint."),
2721 DEFAULT_MAX_WAL_SEGS
* (DEFAULT_XLOG_SEG_SIZE
/ (1024 * 1024)),
2723 NULL
, assign_max_wal_size
, NULL
2727 {"checkpoint_timeout", PGC_SIGHUP
, WAL_CHECKPOINTS
,
2728 gettext_noop("Sets the maximum time between automatic WAL checkpoints."),
2738 {"checkpoint_warning", PGC_SIGHUP
, WAL_CHECKPOINTS
,
2739 gettext_noop("Sets the maximum time before warning if checkpoints "
2740 "triggered by WAL volume happen too frequently."),
2741 gettext_noop("Write a message to the server log if checkpoints "
2742 "caused by the filling of WAL segment files happen more "
2743 "frequently than this amount of time. "
2744 "Zero turns off the warning."),
2753 {"checkpoint_flush_after", PGC_SIGHUP
, WAL_CHECKPOINTS
,
2754 gettext_noop("Number of pages after which previously performed writes are flushed to disk."),
2758 &checkpoint_flush_after
,
2759 DEFAULT_CHECKPOINT_FLUSH_AFTER
, 0, WRITEBACK_MAX_PENDING_FLUSHES
,
2764 {"wal_buffers", PGC_POSTMASTER
, WAL_SETTINGS
,
2765 gettext_noop("Sets the number of disk-page buffers in shared memory for WAL."),
2770 -1, -1, (INT_MAX
/ XLOG_BLCKSZ
),
2771 check_wal_buffers
, NULL
, NULL
2775 {"wal_writer_delay", PGC_SIGHUP
, WAL_SETTINGS
,
2776 gettext_noop("Time between WAL flushes performed in the WAL writer."),
2786 {"wal_writer_flush_after", PGC_SIGHUP
, WAL_SETTINGS
,
2787 gettext_noop("Amount of WAL written out by WAL writer that triggers a flush."),
2791 &WalWriterFlushAfter
,
2792 DEFAULT_WAL_WRITER_FLUSH_AFTER
, 0, INT_MAX
,
2797 {"wal_skip_threshold", PGC_USERSET
, WAL_SETTINGS
,
2798 gettext_noop("Minimum size of new file to fsync instead of writing WAL."),
2802 &wal_skip_threshold
,
2803 2048, 0, MAX_KILOBYTES
,
2808 {"max_wal_senders", PGC_POSTMASTER
, REPLICATION_SENDING
,
2809 gettext_noop("Sets the maximum number of simultaneously running WAL sender processes."),
2813 10, 0, MAX_BACKENDS
,
2814 check_max_wal_senders
, NULL
, NULL
2818 /* see max_wal_senders */
2819 {"max_replication_slots", PGC_POSTMASTER
, REPLICATION_SENDING
,
2820 gettext_noop("Sets the maximum number of simultaneously defined replication slots."),
2823 &max_replication_slots
,
2824 10, 0, MAX_BACKENDS
/* XXX? */ ,
2829 {"max_slot_wal_keep_size", PGC_SIGHUP
, REPLICATION_SENDING
,
2830 gettext_noop("Sets the maximum WAL size that can be reserved by replication slots."),
2831 gettext_noop("Replication slots will be marked as failed, and segments released "
2832 "for deletion or recycling, if this much space is occupied by WAL "
2836 &max_slot_wal_keep_size_mb
,
2837 -1, -1, MAX_KILOBYTES
,
2842 {"wal_sender_timeout", PGC_USERSET
, REPLICATION_SENDING
,
2843 gettext_noop("Sets the maximum time to wait for WAL replication."),
2847 &wal_sender_timeout
,
2848 60 * 1000, 0, INT_MAX
,
2853 {"commit_delay", PGC_SUSET
, WAL_SETTINGS
,
2854 gettext_noop("Sets the delay in microseconds between transaction commit and "
2855 "flushing WAL to disk."),
2857 /* we have no microseconds designation, so can't supply units here */
2865 {"commit_siblings", PGC_USERSET
, WAL_SETTINGS
,
2866 gettext_noop("Sets the minimum number of concurrent open transactions "
2867 "required before performing commit_delay."),
2876 {"extra_float_digits", PGC_USERSET
, CLIENT_CONN_LOCALE
,
2877 gettext_noop("Sets the number of digits displayed for floating-point values."),
2878 gettext_noop("This affects real, double precision, and geometric data types. "
2879 "A zero or negative parameter value is added to the standard "
2880 "number of digits (FLT_DIG or DBL_DIG as appropriate). "
2881 "Any value greater than zero selects precise output mode.")
2883 &extra_float_digits
,
2889 {"log_min_duration_sample", PGC_SUSET
, LOGGING_WHEN
,
2890 gettext_noop("Sets the minimum execution time above which "
2891 "a sample of statements will be logged."
2892 " Sampling is determined by log_statement_sample_rate."),
2893 gettext_noop("Zero logs a sample of all queries. -1 turns this feature off."),
2896 &log_min_duration_sample
,
2902 {"log_min_duration_statement", PGC_SUSET
, LOGGING_WHEN
,
2903 gettext_noop("Sets the minimum execution time above which "
2904 "all statements will be logged."),
2905 gettext_noop("Zero prints all queries. -1 turns this feature off."),
2908 &log_min_duration_statement
,
2914 {"log_autovacuum_min_duration", PGC_SIGHUP
, LOGGING_WHAT
,
2915 gettext_noop("Sets the minimum execution time above which "
2916 "autovacuum actions will be logged."),
2917 gettext_noop("Zero prints all actions. -1 turns autovacuum logging off."),
2920 &Log_autovacuum_min_duration
,
2921 600000, -1, INT_MAX
,
2926 {"log_parameter_max_length", PGC_SUSET
, LOGGING_WHAT
,
2927 gettext_noop("Sets the maximum length in bytes of data logged for bind "
2928 "parameter values when logging statements."),
2929 gettext_noop("-1 to print values in full."),
2932 &log_parameter_max_length
,
2933 -1, -1, INT_MAX
/ 2,
2938 {"log_parameter_max_length_on_error", PGC_USERSET
, LOGGING_WHAT
,
2939 gettext_noop("Sets the maximum length in bytes of data logged for bind "
2940 "parameter values when logging statements, on error."),
2941 gettext_noop("-1 to print values in full."),
2944 &log_parameter_max_length_on_error
,
2950 {"bgwriter_delay", PGC_SIGHUP
, RESOURCES_BGWRITER
,
2951 gettext_noop("Background writer sleep time between rounds."),
2961 {"bgwriter_lru_maxpages", PGC_SIGHUP
, RESOURCES_BGWRITER
,
2962 gettext_noop("Background writer maximum number of LRU pages to flush per round."),
2965 &bgwriter_lru_maxpages
,
2966 100, 0, INT_MAX
/ 2, /* Same upper limit as shared_buffers */
2971 {"bgwriter_flush_after", PGC_SIGHUP
, RESOURCES_BGWRITER
,
2972 gettext_noop("Number of pages after which previously performed writes are flushed to disk."),
2976 &bgwriter_flush_after
,
2977 DEFAULT_BGWRITER_FLUSH_AFTER
, 0, WRITEBACK_MAX_PENDING_FLUSHES
,
2982 {"effective_io_concurrency",
2984 RESOURCES_ASYNCHRONOUS
,
2985 gettext_noop("Number of simultaneous requests that can be handled efficiently by the disk subsystem."),
2989 &effective_io_concurrency
,
2990 DEFAULT_EFFECTIVE_IO_CONCURRENCY
,
2991 0, MAX_IO_CONCURRENCY
,
2992 check_effective_io_concurrency
, NULL
, NULL
2996 {"maintenance_io_concurrency",
2998 RESOURCES_ASYNCHRONOUS
,
2999 gettext_noop("A variant of effective_io_concurrency that is used for maintenance work."),
3003 &maintenance_io_concurrency
,
3004 DEFAULT_MAINTENANCE_IO_CONCURRENCY
,
3005 0, MAX_IO_CONCURRENCY
,
3006 check_maintenance_io_concurrency
, assign_maintenance_io_concurrency
,
3011 {"backend_flush_after", PGC_USERSET
, RESOURCES_ASYNCHRONOUS
,
3012 gettext_noop("Number of pages after which previously performed writes are flushed to disk."),
3016 &backend_flush_after
,
3017 DEFAULT_BACKEND_FLUSH_AFTER
, 0, WRITEBACK_MAX_PENDING_FLUSHES
,
3022 {"max_worker_processes",
3024 RESOURCES_ASYNCHRONOUS
,
3025 gettext_noop("Maximum number of concurrent worker processes."),
3028 &max_worker_processes
,
3030 check_max_worker_processes
, NULL
, NULL
3034 {"max_logical_replication_workers",
3036 REPLICATION_SUBSCRIBERS
,
3037 gettext_noop("Maximum number of logical replication worker processes."),
3040 &max_logical_replication_workers
,
3046 {"max_sync_workers_per_subscription",
3048 REPLICATION_SUBSCRIBERS
,
3049 gettext_noop("Maximum number of table synchronization workers per subscription."),
3052 &max_sync_workers_per_subscription
,
3058 {"max_parallel_apply_workers_per_subscription",
3060 REPLICATION_SUBSCRIBERS
,
3061 gettext_noop("Maximum number of parallel apply workers per subscription."),
3064 &max_parallel_apply_workers_per_subscription
,
3065 2, 0, MAX_PARALLEL_WORKER_LIMIT
,
3070 {"log_rotation_age", PGC_SIGHUP
, LOGGING_WHERE
,
3071 gettext_noop("Sets the amount of time to wait before forcing "
3072 "log file rotation."),
3077 HOURS_PER_DAY
* MINS_PER_HOUR
, 0, INT_MAX
/ SECS_PER_MINUTE
,
3082 {"log_rotation_size", PGC_SIGHUP
, LOGGING_WHERE
,
3083 gettext_noop("Sets the maximum size a log file can reach before "
3089 10 * 1024, 0, INT_MAX
/ 1024,
3094 {"max_function_args", PGC_INTERNAL
, PRESET_OPTIONS
,
3095 gettext_noop("Shows the maximum number of function arguments."),
3097 GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
3100 FUNC_MAX_ARGS
, FUNC_MAX_ARGS
, FUNC_MAX_ARGS
,
3105 {"max_index_keys", PGC_INTERNAL
, PRESET_OPTIONS
,
3106 gettext_noop("Shows the maximum number of index keys."),
3108 GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
3111 INDEX_MAX_KEYS
, INDEX_MAX_KEYS
, INDEX_MAX_KEYS
,
3116 {"max_identifier_length", PGC_INTERNAL
, PRESET_OPTIONS
,
3117 gettext_noop("Shows the maximum identifier length."),
3119 GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
3121 &max_identifier_length
,
3122 NAMEDATALEN
- 1, NAMEDATALEN
- 1, NAMEDATALEN
- 1,
3127 {"block_size", PGC_INTERNAL
, PRESET_OPTIONS
,
3128 gettext_noop("Shows the size of a disk block."),
3130 GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
3133 BLCKSZ
, BLCKSZ
, BLCKSZ
,
3138 {"segment_size", PGC_INTERNAL
, PRESET_OPTIONS
,
3139 gettext_noop("Shows the number of pages per disk file."),
3141 GUC_UNIT_BLOCKS
| GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
3144 RELSEG_SIZE
, RELSEG_SIZE
, RELSEG_SIZE
,
3149 {"wal_block_size", PGC_INTERNAL
, PRESET_OPTIONS
,
3150 gettext_noop("Shows the block size in the write ahead log."),
3152 GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
3155 XLOG_BLCKSZ
, XLOG_BLCKSZ
, XLOG_BLCKSZ
,
3160 {"wal_retrieve_retry_interval", PGC_SIGHUP
, REPLICATION_STANDBY
,
3161 gettext_noop("Sets the time to wait before retrying to retrieve WAL "
3162 "after a failed attempt."),
3166 &wal_retrieve_retry_interval
,
3172 {"wal_segment_size", PGC_INTERNAL
, PRESET_OPTIONS
,
3173 gettext_noop("Shows the size of write ahead log segments."),
3175 GUC_UNIT_BYTE
| GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
| GUC_RUNTIME_COMPUTED
3178 DEFAULT_XLOG_SEG_SIZE
,
3181 check_wal_segment_size
, NULL
, NULL
3185 {"autovacuum_naptime", PGC_SIGHUP
, AUTOVACUUM
,
3186 gettext_noop("Time to sleep between autovacuum runs."),
3190 &autovacuum_naptime
,
3191 60, 1, INT_MAX
/ 1000,
3195 {"autovacuum_vacuum_threshold", PGC_SIGHUP
, AUTOVACUUM
,
3196 gettext_noop("Minimum number of tuple updates or deletes prior to vacuum."),
3199 &autovacuum_vac_thresh
,
3204 {"autovacuum_vacuum_insert_threshold", PGC_SIGHUP
, AUTOVACUUM
,
3205 gettext_noop("Minimum number of tuple inserts prior to vacuum, or -1 to disable insert vacuums."),
3208 &autovacuum_vac_ins_thresh
,
3213 {"autovacuum_analyze_threshold", PGC_SIGHUP
, AUTOVACUUM
,
3214 gettext_noop("Minimum number of tuple inserts, updates, or deletes prior to analyze."),
3217 &autovacuum_anl_thresh
,
3222 /* see varsup.c for why this is PGC_POSTMASTER not PGC_SIGHUP */
3223 {"autovacuum_freeze_max_age", PGC_POSTMASTER
, AUTOVACUUM
,
3224 gettext_noop("Age at which to autovacuum a table to prevent transaction ID wraparound."),
3227 &autovacuum_freeze_max_age
,
3229 /* see vacuum_failsafe_age if you change the upper-limit value. */
3230 200000000, 100000, 2000000000,
3234 /* see multixact.c for why this is PGC_POSTMASTER not PGC_SIGHUP */
3235 {"autovacuum_multixact_freeze_max_age", PGC_POSTMASTER
, AUTOVACUUM
,
3236 gettext_noop("Multixact age at which to autovacuum a table to prevent multixact wraparound."),
3239 &autovacuum_multixact_freeze_max_age
,
3240 400000000, 10000, 2000000000,
3244 /* see max_connections */
3245 {"autovacuum_max_workers", PGC_POSTMASTER
, AUTOVACUUM
,
3246 gettext_noop("Sets the maximum number of simultaneously running autovacuum worker processes."),
3249 &autovacuum_max_workers
,
3251 check_autovacuum_max_workers
, NULL
, NULL
3255 {"max_parallel_maintenance_workers", PGC_USERSET
, RESOURCES_ASYNCHRONOUS
,
3256 gettext_noop("Sets the maximum number of parallel processes per maintenance operation."),
3259 &max_parallel_maintenance_workers
,
3265 {"max_parallel_workers_per_gather", PGC_USERSET
, RESOURCES_ASYNCHRONOUS
,
3266 gettext_noop("Sets the maximum number of parallel processes per executor node."),
3270 &max_parallel_workers_per_gather
,
3271 2, 0, MAX_PARALLEL_WORKER_LIMIT
,
3276 {"max_parallel_workers", PGC_USERSET
, RESOURCES_ASYNCHRONOUS
,
3277 gettext_noop("Sets the maximum number of parallel workers that can be active at one time."),
3281 &max_parallel_workers
,
3282 8, 0, MAX_PARALLEL_WORKER_LIMIT
,
3287 {"autovacuum_work_mem", PGC_SIGHUP
, RESOURCES_MEM
,
3288 gettext_noop("Sets the maximum memory to be used by each autovacuum worker process."),
3292 &autovacuum_work_mem
,
3293 -1, -1, MAX_KILOBYTES
,
3294 check_autovacuum_work_mem
, NULL
, NULL
3298 {"tcp_keepalives_idle", PGC_USERSET
, CONN_AUTH_TCP
,
3299 gettext_noop("Time between issuing TCP keepalives."),
3300 gettext_noop("A value of 0 uses the system default."),
3303 &tcp_keepalives_idle
,
3305 NULL
, assign_tcp_keepalives_idle
, show_tcp_keepalives_idle
3309 {"tcp_keepalives_interval", PGC_USERSET
, CONN_AUTH_TCP
,
3310 gettext_noop("Time between TCP keepalive retransmits."),
3311 gettext_noop("A value of 0 uses the system default."),
3314 &tcp_keepalives_interval
,
3316 NULL
, assign_tcp_keepalives_interval
, show_tcp_keepalives_interval
3320 {"ssl_renegotiation_limit", PGC_USERSET
, COMPAT_OPTIONS_PREVIOUS
,
3321 gettext_noop("SSL renegotiation is no longer supported; this can only be 0."),
3323 GUC_NO_SHOW_ALL
| GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
,
3325 &ssl_renegotiation_limit
,
3331 {"tcp_keepalives_count", PGC_USERSET
, CONN_AUTH_TCP
,
3332 gettext_noop("Maximum number of TCP keepalive retransmits."),
3333 gettext_noop("Number of consecutive keepalive retransmits that can be "
3334 "lost before a connection is considered dead. A value of 0 uses the "
3337 &tcp_keepalives_count
,
3339 NULL
, assign_tcp_keepalives_count
, show_tcp_keepalives_count
3343 {"gin_fuzzy_search_limit", PGC_USERSET
, CLIENT_CONN_OTHER
,
3344 gettext_noop("Sets the maximum allowed result for exact search by GIN."),
3348 &GinFuzzySearchLimit
,
3354 {"effective_cache_size", PGC_USERSET
, QUERY_TUNING_COST
,
3355 gettext_noop("Sets the planner's assumption about the total size of the data caches."),
3356 gettext_noop("That is, the total size of the caches (kernel cache and shared buffers) used for PostgreSQL data files. "
3357 "This is measured in disk pages, which are normally 8 kB each."),
3358 GUC_UNIT_BLOCKS
| GUC_EXPLAIN
,
3360 &effective_cache_size
,
3361 DEFAULT_EFFECTIVE_CACHE_SIZE
, 1, INT_MAX
,
3366 {"min_parallel_table_scan_size", PGC_USERSET
, QUERY_TUNING_COST
,
3367 gettext_noop("Sets the minimum amount of table data for a parallel scan."),
3368 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."),
3369 GUC_UNIT_BLOCKS
| GUC_EXPLAIN
,
3371 &min_parallel_table_scan_size
,
3372 (8 * 1024 * 1024) / BLCKSZ
, 0, INT_MAX
/ 3,
3377 {"min_parallel_index_scan_size", PGC_USERSET
, QUERY_TUNING_COST
,
3378 gettext_noop("Sets the minimum amount of index data for a parallel scan."),
3379 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."),
3380 GUC_UNIT_BLOCKS
| GUC_EXPLAIN
,
3382 &min_parallel_index_scan_size
,
3383 (512 * 1024) / BLCKSZ
, 0, INT_MAX
/ 3,
3388 /* Can't be set in postgresql.conf */
3389 {"server_version_num", PGC_INTERNAL
, PRESET_OPTIONS
,
3390 gettext_noop("Shows the server version as an integer."),
3392 GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
3394 &server_version_num
,
3395 PG_VERSION_NUM
, PG_VERSION_NUM
, PG_VERSION_NUM
,
3400 {"log_temp_files", PGC_SUSET
, LOGGING_WHAT
,
3401 gettext_noop("Log the use of temporary files larger than this number of kilobytes."),
3402 gettext_noop("Zero logs all files. The default is -1 (turning this feature off)."),
3411 {"track_activity_query_size", PGC_POSTMASTER
, STATS_CUMULATIVE
,
3412 gettext_noop("Sets the size reserved for pg_stat_activity.query, in bytes."),
3416 &pgstat_track_activity_query_size
,
3422 {"gin_pending_list_limit", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
3423 gettext_noop("Sets the maximum size of the pending list for GIN index."),
3427 &gin_pending_list_limit
,
3428 4096, 64, MAX_KILOBYTES
,
3433 {"tcp_user_timeout", PGC_USERSET
, CONN_AUTH_TCP
,
3434 gettext_noop("TCP user timeout."),
3435 gettext_noop("A value of 0 uses the system default."),
3440 NULL
, assign_tcp_user_timeout
, show_tcp_user_timeout
3444 {"huge_page_size", PGC_POSTMASTER
, RESOURCES_MEM
,
3445 gettext_noop("The size of huge page that should be requested."),
3451 check_huge_page_size
, NULL
, NULL
3455 {"debug_discard_caches", PGC_SUSET
, DEVELOPER_OPTIONS
,
3456 gettext_noop("Aggressively flush system caches for debugging purposes."),
3460 &debug_discard_caches
,
3461 #ifdef DISCARD_CACHES_ENABLED
3462 /* Set default based on older compile-time-only cache clobber macros */
3463 #if defined(CLOBBER_CACHE_RECURSIVELY)
3465 #elif defined(CLOBBER_CACHE_ALWAYS)
3471 #else /* not DISCARD_CACHES_ENABLED */
3473 #endif /* not DISCARD_CACHES_ENABLED */
3478 {"client_connection_check_interval", PGC_USERSET
, CONN_AUTH_TCP
,
3479 gettext_noop("Sets the time interval between checks for disconnection while running queries."),
3483 &client_connection_check_interval
,
3485 check_client_connection_check_interval
, NULL
, NULL
3489 {"log_startup_progress_interval", PGC_SIGHUP
, LOGGING_WHEN
,
3490 gettext_noop("Time between progress updates for "
3491 "long-running startup operations."),
3492 gettext_noop("0 turns this feature off."),
3495 &log_startup_progress_interval
,
3501 {"scram_iterations", PGC_USERSET
, CONN_AUTH_AUTH
,
3502 gettext_noop("Sets the iteration count for SCRAM secret generation."),
3506 &scram_sha_256_iterations
,
3507 SCRAM_SHA_256_DEFAULT_ITERATIONS
, 1, INT_MAX
,
3511 /* End-of-list marker */
3513 {NULL
, 0, 0, NULL
, NULL
}, NULL
, 0, 0, 0, NULL
, NULL
, NULL
3518 struct config_real ConfigureNamesReal
[] =
3521 {"seq_page_cost", PGC_USERSET
, QUERY_TUNING_COST
,
3522 gettext_noop("Sets the planner's estimate of the cost of a "
3523 "sequentially fetched disk page."),
3528 DEFAULT_SEQ_PAGE_COST
, 0, DBL_MAX
,
3532 {"random_page_cost", PGC_USERSET
, QUERY_TUNING_COST
,
3533 gettext_noop("Sets the planner's estimate of the cost of a "
3534 "nonsequentially fetched disk page."),
3539 DEFAULT_RANDOM_PAGE_COST
, 0, DBL_MAX
,
3543 {"cpu_tuple_cost", PGC_USERSET
, QUERY_TUNING_COST
,
3544 gettext_noop("Sets the planner's estimate of the cost of "
3545 "processing each tuple (row)."),
3550 DEFAULT_CPU_TUPLE_COST
, 0, DBL_MAX
,
3554 {"cpu_index_tuple_cost", PGC_USERSET
, QUERY_TUNING_COST
,
3555 gettext_noop("Sets the planner's estimate of the cost of "
3556 "processing each index entry during an index scan."),
3560 &cpu_index_tuple_cost
,
3561 DEFAULT_CPU_INDEX_TUPLE_COST
, 0, DBL_MAX
,
3565 {"cpu_operator_cost", PGC_USERSET
, QUERY_TUNING_COST
,
3566 gettext_noop("Sets the planner's estimate of the cost of "
3567 "processing each operator or function call."),
3572 DEFAULT_CPU_OPERATOR_COST
, 0, DBL_MAX
,
3576 {"parallel_tuple_cost", PGC_USERSET
, QUERY_TUNING_COST
,
3577 gettext_noop("Sets the planner's estimate of the cost of "
3578 "passing each tuple (row) from worker to leader backend."),
3582 ¶llel_tuple_cost
,
3583 DEFAULT_PARALLEL_TUPLE_COST
, 0, DBL_MAX
,
3587 {"parallel_setup_cost", PGC_USERSET
, QUERY_TUNING_COST
,
3588 gettext_noop("Sets the planner's estimate of the cost of "
3589 "starting up worker processes for parallel query."),
3593 ¶llel_setup_cost
,
3594 DEFAULT_PARALLEL_SETUP_COST
, 0, DBL_MAX
,
3599 {"jit_above_cost", PGC_USERSET
, QUERY_TUNING_COST
,
3600 gettext_noop("Perform JIT compilation if query is more expensive."),
3601 gettext_noop("-1 disables JIT compilation."),
3605 100000, -1, DBL_MAX
,
3610 {"jit_optimize_above_cost", PGC_USERSET
, QUERY_TUNING_COST
,
3611 gettext_noop("Optimize JIT-compiled functions if query is more expensive."),
3612 gettext_noop("-1 disables optimization."),
3615 &jit_optimize_above_cost
,
3616 500000, -1, DBL_MAX
,
3621 {"jit_inline_above_cost", PGC_USERSET
, QUERY_TUNING_COST
,
3622 gettext_noop("Perform JIT inlining if query is more expensive."),
3623 gettext_noop("-1 disables inlining."),
3626 &jit_inline_above_cost
,
3627 500000, -1, DBL_MAX
,
3632 {"cursor_tuple_fraction", PGC_USERSET
, QUERY_TUNING_OTHER
,
3633 gettext_noop("Sets the planner's estimate of the fraction of "
3634 "a cursor's rows that will be retrieved."),
3638 &cursor_tuple_fraction
,
3639 DEFAULT_CURSOR_TUPLE_FRACTION
, 0.0, 1.0,
3644 {"recursive_worktable_factor", PGC_USERSET
, QUERY_TUNING_OTHER
,
3645 gettext_noop("Sets the planner's estimate of the average size "
3646 "of a recursive query's working table."),
3650 &recursive_worktable_factor
,
3651 DEFAULT_RECURSIVE_WORKTABLE_FACTOR
, 0.001, 1000000.0,
3656 {"geqo_selection_bias", PGC_USERSET
, QUERY_TUNING_GEQO
,
3657 gettext_noop("GEQO: selective pressure within the population."),
3661 &Geqo_selection_bias
,
3662 DEFAULT_GEQO_SELECTION_BIAS
,
3663 MIN_GEQO_SELECTION_BIAS
, MAX_GEQO_SELECTION_BIAS
,
3667 {"geqo_seed", PGC_USERSET
, QUERY_TUNING_GEQO
,
3668 gettext_noop("GEQO: seed for random path selection."),
3678 {"hash_mem_multiplier", PGC_USERSET
, RESOURCES_MEM
,
3679 gettext_noop("Multiple of work_mem to use for hash tables."),
3683 &hash_mem_multiplier
,
3689 {"bgwriter_lru_multiplier", PGC_SIGHUP
, RESOURCES_BGWRITER
,
3690 gettext_noop("Multiple of the average buffer usage to free per round."),
3693 &bgwriter_lru_multiplier
,
3699 {"seed", PGC_USERSET
, UNGROUPED
,
3700 gettext_noop("Sets the seed for random-number generation."),
3702 GUC_NO_SHOW_ALL
| GUC_NO_RESET
| GUC_NO_RESET_ALL
| GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
3706 check_random_seed
, assign_random_seed
, show_random_seed
3710 {"vacuum_cost_delay", PGC_USERSET
, RESOURCES_VACUUM_DELAY
,
3711 gettext_noop("Vacuum cost delay in milliseconds."),
3721 {"autovacuum_vacuum_cost_delay", PGC_SIGHUP
, AUTOVACUUM
,
3722 gettext_noop("Vacuum cost delay in milliseconds, for autovacuum."),
3726 &autovacuum_vac_cost_delay
,
3732 {"autovacuum_vacuum_scale_factor", PGC_SIGHUP
, AUTOVACUUM
,
3733 gettext_noop("Number of tuple updates or deletes prior to vacuum as a fraction of reltuples."),
3736 &autovacuum_vac_scale
,
3742 {"autovacuum_vacuum_insert_scale_factor", PGC_SIGHUP
, AUTOVACUUM
,
3743 gettext_noop("Number of tuple inserts prior to vacuum as a fraction of reltuples."),
3746 &autovacuum_vac_ins_scale
,
3752 {"autovacuum_analyze_scale_factor", PGC_SIGHUP
, AUTOVACUUM
,
3753 gettext_noop("Number of tuple inserts, updates, or deletes prior to analyze as a fraction of reltuples."),
3756 &autovacuum_anl_scale
,
3762 {"checkpoint_completion_target", PGC_SIGHUP
, WAL_CHECKPOINTS
,
3763 gettext_noop("Time spent flushing dirty buffers during checkpoint, as fraction of checkpoint interval."),
3766 &CheckPointCompletionTarget
,
3768 NULL
, assign_checkpoint_completion_target
, NULL
3772 {"log_statement_sample_rate", PGC_SUSET
, LOGGING_WHEN
,
3773 gettext_noop("Fraction of statements exceeding log_min_duration_sample to be logged."),
3774 gettext_noop("Use a value between 0.0 (never log) and 1.0 (always log).")
3776 &log_statement_sample_rate
,
3782 {"log_transaction_sample_rate", PGC_SUSET
, LOGGING_WHEN
,
3783 gettext_noop("Sets the fraction of transactions from which to log all statements."),
3784 gettext_noop("Use a value between 0.0 (never log) and 1.0 (log all "
3785 "statements for all transactions).")
3787 &log_xact_sample_rate
,
3792 /* End-of-list marker */
3794 {NULL
, 0, 0, NULL
, NULL
}, NULL
, 0.0, 0.0, 0.0, NULL
, NULL
, NULL
3799 struct config_string ConfigureNamesString
[] =
3802 {"archive_command", PGC_SIGHUP
, WAL_ARCHIVING
,
3803 gettext_noop("Sets the shell command that will be called to archive a WAL file."),
3804 gettext_noop("This is used only if \"archive_library\" is not set.")
3806 &XLogArchiveCommand
,
3808 NULL
, NULL
, show_archive_command
3812 {"archive_library", PGC_SIGHUP
, WAL_ARCHIVING
,
3813 gettext_noop("Sets the library that will be called to archive a WAL file."),
3814 gettext_noop("An empty string indicates that \"archive_command\" should be used.")
3816 &XLogArchiveLibrary
,
3822 {"restore_command", PGC_SIGHUP
, WAL_ARCHIVE_RECOVERY
,
3823 gettext_noop("Sets the shell command that will be called to retrieve an archived WAL file."),
3826 &recoveryRestoreCommand
,
3832 {"archive_cleanup_command", PGC_SIGHUP
, WAL_ARCHIVE_RECOVERY
,
3833 gettext_noop("Sets the shell command that will be executed at every restart point."),
3836 &archiveCleanupCommand
,
3842 {"recovery_end_command", PGC_SIGHUP
, WAL_ARCHIVE_RECOVERY
,
3843 gettext_noop("Sets the shell command that will be executed once at the end of recovery."),
3846 &recoveryEndCommand
,
3852 {"recovery_target_timeline", PGC_POSTMASTER
, WAL_RECOVERY_TARGET
,
3853 gettext_noop("Specifies the timeline to recover into."),
3856 &recovery_target_timeline_string
,
3858 check_recovery_target_timeline
, assign_recovery_target_timeline
, NULL
3862 {"recovery_target", PGC_POSTMASTER
, WAL_RECOVERY_TARGET
,
3863 gettext_noop("Set to \"immediate\" to end recovery as soon as a consistent state is reached."),
3866 &recovery_target_string
,
3868 check_recovery_target
, assign_recovery_target
, NULL
3871 {"recovery_target_xid", PGC_POSTMASTER
, WAL_RECOVERY_TARGET
,
3872 gettext_noop("Sets the transaction ID up to which recovery will proceed."),
3875 &recovery_target_xid_string
,
3877 check_recovery_target_xid
, assign_recovery_target_xid
, NULL
3880 {"recovery_target_time", PGC_POSTMASTER
, WAL_RECOVERY_TARGET
,
3881 gettext_noop("Sets the time stamp up to which recovery will proceed."),
3884 &recovery_target_time_string
,
3886 check_recovery_target_time
, assign_recovery_target_time
, NULL
3889 {"recovery_target_name", PGC_POSTMASTER
, WAL_RECOVERY_TARGET
,
3890 gettext_noop("Sets the named restore point up to which recovery will proceed."),
3893 &recovery_target_name_string
,
3895 check_recovery_target_name
, assign_recovery_target_name
, NULL
3898 {"recovery_target_lsn", PGC_POSTMASTER
, WAL_RECOVERY_TARGET
,
3899 gettext_noop("Sets the LSN of the write-ahead log location up to which recovery will proceed."),
3902 &recovery_target_lsn_string
,
3904 check_recovery_target_lsn
, assign_recovery_target_lsn
, NULL
3908 {"primary_conninfo", PGC_SIGHUP
, REPLICATION_STANDBY
,
3909 gettext_noop("Sets the connection string to be used to connect to the sending server."),
3919 {"primary_slot_name", PGC_SIGHUP
, REPLICATION_STANDBY
,
3920 gettext_noop("Sets the name of the replication slot to use on the sending server."),
3925 check_primary_slot_name
, NULL
, NULL
3929 {"client_encoding", PGC_USERSET
, CLIENT_CONN_LOCALE
,
3930 gettext_noop("Sets the client's character set encoding."),
3932 GUC_IS_NAME
| GUC_REPORT
3934 &client_encoding_string
,
3936 check_client_encoding
, assign_client_encoding
, NULL
3940 {"log_line_prefix", PGC_SIGHUP
, LOGGING_WHAT
,
3941 gettext_noop("Controls information prefixed to each log line."),
3942 gettext_noop("If blank, no prefix is used.")
3950 {"log_timezone", PGC_SIGHUP
, LOGGING_WHAT
,
3951 gettext_noop("Sets the time zone to use in log messages."),
3954 &log_timezone_string
,
3956 check_log_timezone
, assign_log_timezone
, show_log_timezone
3960 {"DateStyle", PGC_USERSET
, CLIENT_CONN_LOCALE
,
3961 gettext_noop("Sets the display format for date and time values."),
3962 gettext_noop("Also controls interpretation of ambiguous "
3964 GUC_LIST_INPUT
| GUC_REPORT
3968 check_datestyle
, assign_datestyle
, NULL
3972 {"default_table_access_method", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
3973 gettext_noop("Sets the default table access method for new tables."),
3977 &default_table_access_method
,
3978 DEFAULT_TABLE_ACCESS_METHOD
,
3979 check_default_table_access_method
, NULL
, NULL
3983 {"default_tablespace", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
3984 gettext_noop("Sets the default tablespace to create tables and indexes in."),
3985 gettext_noop("An empty string selects the database's default tablespace."),
3988 &default_tablespace
,
3990 check_default_tablespace
, NULL
, NULL
3994 {"temp_tablespaces", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
3995 gettext_noop("Sets the tablespace(s) to use for temporary tables and sort files."),
3997 GUC_LIST_INPUT
| GUC_LIST_QUOTE
4001 check_temp_tablespaces
, assign_temp_tablespaces
, NULL
4005 {"createrole_self_grant", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
4006 gettext_noop("Sets whether a CREATEROLE user automatically grants "
4007 "the role to themselves, and with which options."),
4011 &createrole_self_grant
,
4013 check_createrole_self_grant
, assign_createrole_self_grant
, NULL
4017 {"dynamic_library_path", PGC_SUSET
, CLIENT_CONN_OTHER
,
4018 gettext_noop("Sets the path for dynamically loadable modules."),
4019 gettext_noop("If a dynamically loadable module needs to be opened and "
4020 "the specified name does not have a directory component (i.e., the "
4021 "name does not contain a slash), the system will search this path for "
4022 "the specified file."),
4025 &Dynamic_library_path
,
4031 {"krb_server_keyfile", PGC_SIGHUP
, CONN_AUTH_AUTH
,
4032 gettext_noop("Sets the location of the Kerberos server key file."),
4036 &pg_krb_server_keyfile
,
4042 {"bonjour_name", PGC_POSTMASTER
, CONN_AUTH_SETTINGS
,
4043 gettext_noop("Sets the Bonjour service name."),
4052 {"lc_messages", PGC_SUSET
, CLIENT_CONN_LOCALE
,
4053 gettext_noop("Sets the language in which messages are displayed."),
4058 check_locale_messages
, assign_locale_messages
, NULL
4062 {"lc_monetary", PGC_USERSET
, CLIENT_CONN_LOCALE
,
4063 gettext_noop("Sets the locale for formatting monetary amounts."),
4068 check_locale_monetary
, assign_locale_monetary
, NULL
4072 {"lc_numeric", PGC_USERSET
, CLIENT_CONN_LOCALE
,
4073 gettext_noop("Sets the locale for formatting numbers."),
4078 check_locale_numeric
, assign_locale_numeric
, NULL
4082 {"lc_time", PGC_USERSET
, CLIENT_CONN_LOCALE
,
4083 gettext_noop("Sets the locale for formatting date and time values."),
4088 check_locale_time
, assign_locale_time
, NULL
4092 {"session_preload_libraries", PGC_SUSET
, CLIENT_CONN_PRELOAD
,
4093 gettext_noop("Lists shared libraries to preload into each backend."),
4095 GUC_LIST_INPUT
| GUC_LIST_QUOTE
| GUC_SUPERUSER_ONLY
4097 &session_preload_libraries_string
,
4103 {"shared_preload_libraries", PGC_POSTMASTER
, CLIENT_CONN_PRELOAD
,
4104 gettext_noop("Lists shared libraries to preload into server."),
4106 GUC_LIST_INPUT
| GUC_LIST_QUOTE
| GUC_SUPERUSER_ONLY
4108 &shared_preload_libraries_string
,
4114 {"local_preload_libraries", PGC_USERSET
, CLIENT_CONN_PRELOAD
,
4115 gettext_noop("Lists unprivileged shared libraries to preload into each backend."),
4117 GUC_LIST_INPUT
| GUC_LIST_QUOTE
4119 &local_preload_libraries_string
,
4125 {"search_path", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
4126 gettext_noop("Sets the schema search order for names that are not schema-qualified."),
4128 GUC_LIST_INPUT
| GUC_LIST_QUOTE
| GUC_EXPLAIN
4130 &namespace_search_path
,
4131 "\"$user\", public",
4132 check_search_path
, assign_search_path
, NULL
4136 /* Can't be set in postgresql.conf */
4137 {"server_encoding", PGC_INTERNAL
, PRESET_OPTIONS
,
4138 gettext_noop("Shows the server (database) character set encoding."),
4140 GUC_IS_NAME
| GUC_REPORT
| GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
4142 &server_encoding_string
,
4148 /* Can't be set in postgresql.conf */
4149 {"server_version", PGC_INTERNAL
, PRESET_OPTIONS
,
4150 gettext_noop("Shows the server version."),
4152 GUC_REPORT
| GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
4154 &server_version_string
,
4160 /* Not for general use --- used by SET ROLE */
4161 {"role", PGC_USERSET
, UNGROUPED
,
4162 gettext_noop("Sets the current role."),
4164 GUC_IS_NAME
| GUC_NO_SHOW_ALL
| GUC_NO_RESET_ALL
| GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
| GUC_NOT_WHILE_SEC_REST
4168 check_role
, assign_role
, show_role
4172 /* Not for general use --- used by SET SESSION AUTHORIZATION */
4173 {"session_authorization", PGC_USERSET
, UNGROUPED
,
4174 gettext_noop("Sets the session user name."),
4176 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
4178 &session_authorization_string
,
4180 check_session_authorization
, assign_session_authorization
, NULL
4184 {"log_destination", PGC_SIGHUP
, LOGGING_WHERE
,
4185 gettext_noop("Sets the destination for server log output."),
4186 gettext_noop("Valid values are combinations of \"stderr\", "
4187 "\"syslog\", \"csvlog\", \"jsonlog\", and \"eventlog\", "
4188 "depending on the platform."),
4191 &Log_destination_string
,
4193 check_log_destination
, assign_log_destination
, NULL
4196 {"log_directory", PGC_SIGHUP
, LOGGING_WHERE
,
4197 gettext_noop("Sets the destination directory for log files."),
4198 gettext_noop("Can be specified as relative to the data directory "
4199 "or as absolute path."),
4204 check_canonical_path
, NULL
, NULL
4207 {"log_filename", PGC_SIGHUP
, LOGGING_WHERE
,
4208 gettext_noop("Sets the file name pattern for log files."),
4213 "postgresql-%Y-%m-%d_%H%M%S.log",
4218 {"syslog_ident", PGC_SIGHUP
, LOGGING_WHERE
,
4219 gettext_noop("Sets the program name used to identify PostgreSQL "
4220 "messages in syslog."),
4225 NULL
, assign_syslog_ident
, NULL
4229 {"event_source", PGC_POSTMASTER
, LOGGING_WHERE
,
4230 gettext_noop("Sets the application name used to identify "
4231 "PostgreSQL messages in the event log."),
4235 DEFAULT_EVENT_SOURCE
,
4240 {"TimeZone", PGC_USERSET
, CLIENT_CONN_LOCALE
,
4241 gettext_noop("Sets the time zone for displaying and interpreting time stamps."),
4247 check_timezone
, assign_timezone
, show_timezone
4250 {"timezone_abbreviations", PGC_USERSET
, CLIENT_CONN_LOCALE
,
4251 gettext_noop("Selects a file of time zone abbreviations."),
4254 &timezone_abbreviations_string
,
4256 check_timezone_abbreviations
, assign_timezone_abbreviations
, NULL
4260 {"unix_socket_group", PGC_POSTMASTER
, CONN_AUTH_SETTINGS
,
4261 gettext_noop("Sets the owning group of the Unix-domain socket."),
4262 gettext_noop("The owning user of the socket is always the user "
4263 "that starts the server.")
4271 {"unix_socket_directories", PGC_POSTMASTER
, CONN_AUTH_SETTINGS
,
4272 gettext_noop("Sets the directories where Unix-domain sockets will be created."),
4274 GUC_LIST_INPUT
| GUC_LIST_QUOTE
| GUC_SUPERUSER_ONLY
4276 &Unix_socket_directories
,
4277 DEFAULT_PGSOCKET_DIR
,
4282 {"listen_addresses", PGC_POSTMASTER
, CONN_AUTH_SETTINGS
,
4283 gettext_noop("Sets the host name or IP address(es) to listen to."),
4294 * Can't be set by ALTER SYSTEM as it can lead to recursive definition
4295 * of data_directory.
4297 {"data_directory", PGC_POSTMASTER
, FILE_LOCATIONS
,
4298 gettext_noop("Sets the server's data directory."),
4300 GUC_SUPERUSER_ONLY
| GUC_DISALLOW_IN_AUTO_FILE
4308 {"config_file", PGC_POSTMASTER
, FILE_LOCATIONS
,
4309 gettext_noop("Sets the server's main configuration file."),
4311 GUC_DISALLOW_IN_FILE
| GUC_SUPERUSER_ONLY
4319 {"hba_file", PGC_POSTMASTER
, FILE_LOCATIONS
,
4320 gettext_noop("Sets the server's \"hba\" configuration file."),
4330 {"ident_file", PGC_POSTMASTER
, FILE_LOCATIONS
,
4331 gettext_noop("Sets the server's \"ident\" configuration file."),
4341 {"external_pid_file", PGC_POSTMASTER
, FILE_LOCATIONS
,
4342 gettext_noop("Writes the postmaster PID to the specified file."),
4348 check_canonical_path
, NULL
, NULL
4352 {"ssl_library", PGC_INTERNAL
, PRESET_OPTIONS
,
4353 gettext_noop("Shows the name of the SSL library."),
4355 GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
4367 {"ssl_cert_file", PGC_SIGHUP
, CONN_AUTH_SSL
,
4368 gettext_noop("Location of the SSL server certificate file."),
4377 {"ssl_key_file", PGC_SIGHUP
, CONN_AUTH_SSL
,
4378 gettext_noop("Location of the SSL server private key file."),
4387 {"ssl_ca_file", PGC_SIGHUP
, CONN_AUTH_SSL
,
4388 gettext_noop("Location of the SSL certificate authority file."),
4397 {"ssl_crl_file", PGC_SIGHUP
, CONN_AUTH_SSL
,
4398 gettext_noop("Location of the SSL certificate revocation list file."),
4407 {"ssl_crl_dir", PGC_SIGHUP
, CONN_AUTH_SSL
,
4408 gettext_noop("Location of the SSL certificate revocation list directory."),
4417 {"synchronous_standby_names", PGC_SIGHUP
, REPLICATION_PRIMARY
,
4418 gettext_noop("Number of synchronous standbys and list of names of potential synchronous ones."),
4422 &SyncRepStandbyNames
,
4424 check_synchronous_standby_names
, assign_synchronous_standby_names
, NULL
4428 {"default_text_search_config", PGC_USERSET
, CLIENT_CONN_LOCALE
,
4429 gettext_noop("Sets default text search configuration."),
4433 "pg_catalog.simple",
4434 check_default_text_search_config
, assign_default_text_search_config
, NULL
4438 {"ssl_ciphers", PGC_SIGHUP
, CONN_AUTH_SSL
,
4439 gettext_noop("Sets the list of allowed SSL ciphers."),
4445 "HIGH:MEDIUM:+3DES:!aNULL",
4453 {"ssl_ecdh_curve", PGC_SIGHUP
, CONN_AUTH_SSL
,
4454 gettext_noop("Sets the curve to use for ECDH."),
4468 {"ssl_dh_params_file", PGC_SIGHUP
, CONN_AUTH_SSL
,
4469 gettext_noop("Location of the SSL DH parameters file."),
4473 &ssl_dh_params_file
,
4479 {"ssl_passphrase_command", PGC_SIGHUP
, CONN_AUTH_SSL
,
4480 gettext_noop("Command to obtain passphrases for SSL."),
4484 &ssl_passphrase_command
,
4490 {"application_name", PGC_USERSET
, LOGGING_WHAT
,
4491 gettext_noop("Sets the application name to be reported in statistics and logs."),
4493 GUC_IS_NAME
| GUC_REPORT
| GUC_NOT_IN_SAMPLE
4497 check_application_name
, assign_application_name
, NULL
4501 {"cluster_name", PGC_POSTMASTER
, PROCESS_TITLE
,
4502 gettext_noop("Sets the name of the cluster, which is included in the process title."),
4508 check_cluster_name
, NULL
, NULL
4512 {"wal_consistency_checking", PGC_SUSET
, DEVELOPER_OPTIONS
,
4513 gettext_noop("Sets the WAL resource managers for which WAL consistency checks are done."),
4514 gettext_noop("Full-page images will be logged for all data blocks and cross-checked against the results of WAL replay."),
4515 GUC_LIST_INPUT
| GUC_NOT_IN_SAMPLE
4517 &wal_consistency_checking_string
,
4519 check_wal_consistency_checking
, assign_wal_consistency_checking
, NULL
4523 {"jit_provider", PGC_POSTMASTER
, CLIENT_CONN_PRELOAD
,
4524 gettext_noop("JIT provider to use."),
4534 {"backtrace_functions", PGC_SUSET
, DEVELOPER_OPTIONS
,
4535 gettext_noop("Log backtrace for errors in these functions."),
4539 &backtrace_functions
,
4541 check_backtrace_functions
, assign_backtrace_functions
, NULL
4545 {"debug_io_direct", PGC_POSTMASTER
, DEVELOPER_OPTIONS
,
4546 gettext_noop("Use direct I/O for file access."),
4548 GUC_LIST_INPUT
| GUC_NOT_IN_SAMPLE
4550 &debug_io_direct_string
,
4552 check_debug_io_direct
, assign_debug_io_direct
, NULL
4555 /* End-of-list marker */
4557 {NULL
, 0, 0, NULL
, NULL
}, NULL
, NULL
, NULL
, NULL
, NULL
4562 struct config_enum ConfigureNamesEnum
[] =
4565 {"backslash_quote", PGC_USERSET
, COMPAT_OPTIONS_PREVIOUS
,
4566 gettext_noop("Sets whether \"\\'\" is allowed in string literals."),
4570 BACKSLASH_QUOTE_SAFE_ENCODING
, backslash_quote_options
,
4575 {"bytea_output", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
4576 gettext_noop("Sets the output format for bytea."),
4580 BYTEA_OUTPUT_HEX
, bytea_output_options
,
4585 {"client_min_messages", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
4586 gettext_noop("Sets the message levels that are sent to the client."),
4587 gettext_noop("Each level includes all the levels that follow it. The later"
4588 " the level, the fewer messages are sent.")
4590 &client_min_messages
,
4591 NOTICE
, client_message_level_options
,
4596 {"compute_query_id", PGC_SUSET
, STATS_MONITORING
,
4597 gettext_noop("Enables in-core computation of query identifiers."),
4601 COMPUTE_QUERY_ID_AUTO
, compute_query_id_options
,
4606 {"constraint_exclusion", PGC_USERSET
, QUERY_TUNING_OTHER
,
4607 gettext_noop("Enables the planner to use constraints to optimize queries."),
4608 gettext_noop("Table scans will be skipped if their constraints"
4609 " guarantee that no rows match the query."),
4612 &constraint_exclusion
,
4613 CONSTRAINT_EXCLUSION_PARTITION
, constraint_exclusion_options
,
4618 {"default_toast_compression", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
4619 gettext_noop("Sets the default compression method for compressible values."),
4622 &default_toast_compression
,
4623 TOAST_PGLZ_COMPRESSION
,
4624 default_toast_compression_options
,
4629 {"default_transaction_isolation", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
4630 gettext_noop("Sets the transaction isolation level of each new transaction."),
4633 &DefaultXactIsoLevel
,
4634 XACT_READ_COMMITTED
, isolation_level_options
,
4639 {"transaction_isolation", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
4640 gettext_noop("Sets the current transaction's isolation level."),
4642 GUC_NO_RESET
| GUC_NO_RESET_ALL
| GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
4645 XACT_READ_COMMITTED
, isolation_level_options
,
4646 check_transaction_isolation
, NULL
, NULL
4650 {"IntervalStyle", PGC_USERSET
, CLIENT_CONN_LOCALE
,
4651 gettext_noop("Sets the display format for interval values."),
4656 INTSTYLE_POSTGRES
, intervalstyle_options
,
4661 {"icu_validation_level", PGC_USERSET
, CLIENT_CONN_LOCALE
,
4662 gettext_noop("Log level for reporting invalid ICU locale strings."),
4665 &icu_validation_level
,
4666 WARNING
, icu_validation_level_options
,
4671 {"log_error_verbosity", PGC_SUSET
, LOGGING_WHAT
,
4672 gettext_noop("Sets the verbosity of logged messages."),
4675 &Log_error_verbosity
,
4676 PGERROR_DEFAULT
, log_error_verbosity_options
,
4681 {"log_min_messages", PGC_SUSET
, LOGGING_WHEN
,
4682 gettext_noop("Sets the message levels that are logged."),
4683 gettext_noop("Each level includes all the levels that follow it. The later"
4684 " the level, the fewer messages are sent.")
4687 WARNING
, server_message_level_options
,
4692 {"log_min_error_statement", PGC_SUSET
, LOGGING_WHEN
,
4693 gettext_noop("Causes all statements generating error at or above this level to be logged."),
4694 gettext_noop("Each level includes all the levels that follow it. The later"
4695 " the level, the fewer messages are sent.")
4697 &log_min_error_statement
,
4698 ERROR
, server_message_level_options
,
4703 {"log_statement", PGC_SUSET
, LOGGING_WHAT
,
4704 gettext_noop("Sets the type of statements logged."),
4708 LOGSTMT_NONE
, log_statement_options
,
4713 {"syslog_facility", PGC_SIGHUP
, LOGGING_WHERE
,
4714 gettext_noop("Sets the syslog \"facility\" to be used when syslog enabled."),
4718 DEFAULT_SYSLOG_FACILITY
,
4719 syslog_facility_options
,
4720 NULL
, assign_syslog_facility
, NULL
4724 {"session_replication_role", PGC_SUSET
, CLIENT_CONN_STATEMENT
,
4725 gettext_noop("Sets the session's behavior for triggers and rewrite rules."),
4728 &SessionReplicationRole
,
4729 SESSION_REPLICATION_ROLE_ORIGIN
, session_replication_role_options
,
4730 NULL
, assign_session_replication_role
, NULL
4734 {"synchronous_commit", PGC_USERSET
, WAL_SETTINGS
,
4735 gettext_noop("Sets the current transaction's synchronization level."),
4738 &synchronous_commit
,
4739 SYNCHRONOUS_COMMIT_ON
, synchronous_commit_options
,
4740 NULL
, assign_synchronous_commit
, NULL
4744 {"archive_mode", PGC_POSTMASTER
, WAL_ARCHIVING
,
4745 gettext_noop("Allows archiving of WAL files using archive_command."),
4749 ARCHIVE_MODE_OFF
, archive_mode_options
,
4754 {"recovery_target_action", PGC_POSTMASTER
, WAL_RECOVERY_TARGET
,
4755 gettext_noop("Sets the action to perform upon reaching the recovery target."),
4758 &recoveryTargetAction
,
4759 RECOVERY_TARGET_ACTION_PAUSE
, recovery_target_action_options
,
4764 {"trace_recovery_messages", PGC_SIGHUP
, DEVELOPER_OPTIONS
,
4765 gettext_noop("Enables logging of recovery-related debugging information."),
4766 gettext_noop("Each level includes all the levels that follow it. The later"
4767 " the level, the fewer messages are sent."),
4770 &trace_recovery_messages
,
4773 * client_message_level_options allows too many values, really, but
4774 * it's not worth having a separate options array for this.
4776 LOG
, client_message_level_options
,
4781 {"track_functions", PGC_SUSET
, STATS_CUMULATIVE
,
4782 gettext_noop("Collects function-level statistics on database activity."),
4785 &pgstat_track_functions
,
4786 TRACK_FUNC_OFF
, track_function_options
,
4792 {"stats_fetch_consistency", PGC_USERSET
, STATS_CUMULATIVE
,
4793 gettext_noop("Sets the consistency of accesses to statistics data."),
4796 &pgstat_fetch_consistency
,
4797 PGSTAT_FETCH_CONSISTENCY_CACHE
, stats_fetch_consistency
,
4798 NULL
, assign_stats_fetch_consistency
, NULL
4802 {"wal_compression", PGC_SUSET
, WAL_SETTINGS
,
4803 gettext_noop("Compresses full-page writes written in WAL file with specified method."),
4807 WAL_COMPRESSION_NONE
, wal_compression_options
,
4812 {"wal_level", PGC_POSTMASTER
, WAL_SETTINGS
,
4813 gettext_noop("Sets the level of information written to the WAL."),
4817 WAL_LEVEL_REPLICA
, wal_level_options
,
4822 {"dynamic_shared_memory_type", PGC_POSTMASTER
, RESOURCES_MEM
,
4823 gettext_noop("Selects the dynamic shared memory implementation used."),
4826 &dynamic_shared_memory_type
,
4827 DEFAULT_DYNAMIC_SHARED_MEMORY_TYPE
, dynamic_shared_memory_options
,
4832 {"shared_memory_type", PGC_POSTMASTER
, RESOURCES_MEM
,
4833 gettext_noop("Selects the shared memory implementation used for the main shared memory region."),
4836 &shared_memory_type
,
4837 DEFAULT_SHARED_MEMORY_TYPE
, shared_memory_options
,
4842 {"wal_sync_method", PGC_SIGHUP
, WAL_SETTINGS
,
4843 gettext_noop("Selects the method used for forcing WAL updates to disk."),
4847 DEFAULT_WAL_SYNC_METHOD
, wal_sync_method_options
,
4848 NULL
, assign_wal_sync_method
, NULL
4852 {"xmlbinary", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
4853 gettext_noop("Sets how binary values are to be encoded in XML."),
4857 XMLBINARY_BASE64
, xmlbinary_options
,
4862 {"xmloption", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
4863 gettext_noop("Sets whether XML data in implicit parsing and serialization "
4864 "operations is to be considered as documents or content fragments."),
4868 XMLOPTION_CONTENT
, xmloption_options
,
4873 {"huge_pages", PGC_POSTMASTER
, RESOURCES_MEM
,
4874 gettext_noop("Use of huge pages on Linux or Windows."),
4878 HUGE_PAGES_TRY
, huge_pages_options
,
4883 {"huge_pages_status", PGC_INTERNAL
, PRESET_OPTIONS
,
4884 gettext_noop("Indicates the status of huge pages."),
4886 GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
4889 HUGE_PAGES_UNKNOWN
, huge_pages_status_options
,
4894 {"recovery_prefetch", PGC_SIGHUP
, WAL_RECOVERY
,
4895 gettext_noop("Prefetch referenced blocks during recovery."),
4896 gettext_noop("Look ahead in the WAL to find references to uncached data.")
4899 RECOVERY_PREFETCH_TRY
, recovery_prefetch_options
,
4900 check_recovery_prefetch
, assign_recovery_prefetch
, NULL
4904 {"debug_parallel_query", PGC_USERSET
, DEVELOPER_OPTIONS
,
4905 gettext_noop("Forces the planner's use parallel query nodes."),
4906 gettext_noop("This can be useful for testing the parallel query infrastructure "
4907 "by forcing the planner to generate plans that contain nodes "
4908 "that perform tuple communication between workers and the main process."),
4909 GUC_NOT_IN_SAMPLE
| GUC_EXPLAIN
4911 &debug_parallel_query
,
4912 DEBUG_PARALLEL_OFF
, debug_parallel_query_options
,
4917 {"password_encryption", PGC_USERSET
, CONN_AUTH_AUTH
,
4918 gettext_noop("Chooses the algorithm for encrypting passwords."),
4921 &Password_encryption
,
4922 PASSWORD_TYPE_SCRAM_SHA_256
, password_encryption_options
,
4927 {"plan_cache_mode", PGC_USERSET
, QUERY_TUNING_OTHER
,
4928 gettext_noop("Controls the planner's selection of custom or generic plan."),
4929 gettext_noop("Prepared statements can have custom and generic plans, and the planner "
4930 "will attempt to choose which is better. This can be set to override "
4931 "the default behavior."),
4935 PLAN_CACHE_MODE_AUTO
, plan_cache_mode_options
,
4940 {"ssl_min_protocol_version", PGC_SIGHUP
, CONN_AUTH_SSL
,
4941 gettext_noop("Sets the minimum SSL/TLS protocol version to use."),
4945 &ssl_min_protocol_version
,
4947 ssl_protocol_versions_info
+ 1, /* don't allow PG_TLS_ANY */
4952 {"ssl_max_protocol_version", PGC_SIGHUP
, CONN_AUTH_SSL
,
4953 gettext_noop("Sets the maximum SSL/TLS protocol version to use."),
4957 &ssl_max_protocol_version
,
4959 ssl_protocol_versions_info
,
4964 {"recovery_init_sync_method", PGC_SIGHUP
, ERROR_HANDLING_OPTIONS
,
4965 gettext_noop("Sets the method for synchronizing the data directory before crash recovery."),
4967 &recovery_init_sync_method
,
4968 DATA_DIR_SYNC_METHOD_FSYNC
, recovery_init_sync_method_options
,
4973 {"debug_logical_replication_streaming", PGC_USERSET
, DEVELOPER_OPTIONS
,
4974 gettext_noop("Forces immediate streaming or serialization of changes in large transactions."),
4975 gettext_noop("On the publisher, it allows streaming or serializing each change in logical decoding. "
4976 "On the subscriber, it allows serialization of all changes to files and notifies the "
4977 "parallel apply workers to read and apply them at the end of the transaction."),
4980 &debug_logical_replication_streaming
,
4981 DEBUG_LOGICAL_REP_STREAMING_BUFFERED
, debug_logical_replication_streaming_options
,
4985 /* End-of-list marker */
4987 {NULL
, 0, 0, NULL
, NULL
}, NULL
, 0, NULL
, NULL
, NULL
, NULL