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-2025, 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/slru.h"
32 #include "access/toast_compression.h"
33 #include "access/twophase.h"
34 #include "access/xlog_internal.h"
35 #include "access/xlogprefetcher.h"
36 #include "access/xlogrecovery.h"
37 #include "access/xlogutils.h"
38 #include "archive/archive_module.h"
39 #include "catalog/namespace.h"
40 #include "catalog/storage.h"
41 #include "commands/async.h"
42 #include "commands/event_trigger.h"
43 #include "commands/tablespace.h"
44 #include "commands/trigger.h"
45 #include "commands/user.h"
46 #include "commands/vacuum.h"
47 #include "common/file_utils.h"
48 #include "common/scram-common.h"
50 #include "libpq/auth.h"
51 #include "libpq/libpq.h"
52 #include "libpq/scram.h"
53 #include "nodes/queryjumble.h"
54 #include "optimizer/cost.h"
55 #include "optimizer/geqo.h"
56 #include "optimizer/optimizer.h"
57 #include "optimizer/paths.h"
58 #include "optimizer/planmain.h"
59 #include "parser/parse_expr.h"
60 #include "parser/parser.h"
62 #include "postmaster/autovacuum.h"
63 #include "postmaster/bgworker_internals.h"
64 #include "postmaster/bgwriter.h"
65 #include "postmaster/postmaster.h"
66 #include "postmaster/startup.h"
67 #include "postmaster/syslogger.h"
68 #include "postmaster/walsummarizer.h"
69 #include "postmaster/walwriter.h"
70 #include "replication/logicallauncher.h"
71 #include "replication/slot.h"
72 #include "replication/slotsync.h"
73 #include "replication/syncrep.h"
74 #include "storage/bufmgr.h"
75 #include "storage/bufpage.h"
76 #include "storage/large_object.h"
77 #include "storage/pg_shmem.h"
78 #include "storage/predicate.h"
79 #include "storage/standby.h"
80 #include "tcop/backend_startup.h"
81 #include "tcop/tcopprot.h"
82 #include "tsearch/ts_cache.h"
83 #include "utils/builtins.h"
84 #include "utils/bytea.h"
85 #include "utils/float.h"
86 #include "utils/guc_hooks.h"
87 #include "utils/guc_tables.h"
88 #include "utils/inval.h"
89 #include "utils/memutils.h"
90 #include "utils/pg_locale.h"
91 #include "utils/plancache.h"
92 #include "utils/ps_status.h"
93 #include "utils/rls.h"
94 #include "utils/xml.h"
97 #include "access/syncscan.h"
100 /* This value is normally passed in from the Makefile */
101 #ifndef PG_KRB_SRVTAB
102 #define PG_KRB_SRVTAB ""
106 * Options for enum values defined in this module.
108 * NOTE! Option values may not contain double quotes!
111 static const struct config_enum_entry bytea_output_options
[] = {
112 {"escape", BYTEA_OUTPUT_ESCAPE
, false},
113 {"hex", BYTEA_OUTPUT_HEX
, false},
117 StaticAssertDecl(lengthof(bytea_output_options
) == (BYTEA_OUTPUT_HEX
+ 2),
118 "array length mismatch");
121 * We have different sets for client and server message level options because
122 * they sort slightly different (see "log" level), and because "fatal"/"panic"
123 * aren't sensible for client_min_messages.
125 static const struct config_enum_entry client_message_level_options
[] = {
126 {"debug5", DEBUG5
, false},
127 {"debug4", DEBUG4
, false},
128 {"debug3", DEBUG3
, false},
129 {"debug2", DEBUG2
, false},
130 {"debug1", DEBUG1
, false},
131 {"debug", DEBUG2
, true},
133 {"info", INFO
, true},
134 {"notice", NOTICE
, false},
135 {"warning", WARNING
, false},
136 {"error", ERROR
, false},
140 static const struct config_enum_entry server_message_level_options
[] = {
141 {"debug5", DEBUG5
, false},
142 {"debug4", DEBUG4
, false},
143 {"debug3", DEBUG3
, false},
144 {"debug2", DEBUG2
, false},
145 {"debug1", DEBUG1
, false},
146 {"debug", DEBUG2
, true},
147 {"info", INFO
, false},
148 {"notice", NOTICE
, false},
149 {"warning", WARNING
, false},
150 {"error", ERROR
, false},
152 {"fatal", FATAL
, false},
153 {"panic", PANIC
, false},
157 static const struct config_enum_entry intervalstyle_options
[] = {
158 {"postgres", INTSTYLE_POSTGRES
, false},
159 {"postgres_verbose", INTSTYLE_POSTGRES_VERBOSE
, false},
160 {"sql_standard", INTSTYLE_SQL_STANDARD
, false},
161 {"iso_8601", INTSTYLE_ISO_8601
, false},
165 static const struct config_enum_entry icu_validation_level_options
[] = {
166 {"disabled", -1, false},
167 {"debug5", DEBUG5
, false},
168 {"debug4", DEBUG4
, false},
169 {"debug3", DEBUG3
, false},
170 {"debug2", DEBUG2
, false},
171 {"debug1", DEBUG1
, false},
172 {"debug", DEBUG2
, true},
174 {"info", INFO
, true},
175 {"notice", NOTICE
, false},
176 {"warning", WARNING
, false},
177 {"error", ERROR
, false},
181 StaticAssertDecl(lengthof(intervalstyle_options
) == (INTSTYLE_ISO_8601
+ 2),
182 "array length mismatch");
184 static const struct config_enum_entry log_error_verbosity_options
[] = {
185 {"terse", PGERROR_TERSE
, false},
186 {"default", PGERROR_DEFAULT
, false},
187 {"verbose", PGERROR_VERBOSE
, false},
191 StaticAssertDecl(lengthof(log_error_verbosity_options
) == (PGERROR_VERBOSE
+ 2),
192 "array length mismatch");
194 static const struct config_enum_entry log_statement_options
[] = {
195 {"none", LOGSTMT_NONE
, false},
196 {"ddl", LOGSTMT_DDL
, false},
197 {"mod", LOGSTMT_MOD
, false},
198 {"all", LOGSTMT_ALL
, false},
202 StaticAssertDecl(lengthof(log_statement_options
) == (LOGSTMT_ALL
+ 2),
203 "array length mismatch");
205 static const struct config_enum_entry isolation_level_options
[] = {
206 {"serializable", XACT_SERIALIZABLE
, false},
207 {"repeatable read", XACT_REPEATABLE_READ
, false},
208 {"read committed", XACT_READ_COMMITTED
, false},
209 {"read uncommitted", XACT_READ_UNCOMMITTED
, false},
213 static const struct config_enum_entry session_replication_role_options
[] = {
214 {"origin", SESSION_REPLICATION_ROLE_ORIGIN
, false},
215 {"replica", SESSION_REPLICATION_ROLE_REPLICA
, false},
216 {"local", SESSION_REPLICATION_ROLE_LOCAL
, false},
220 StaticAssertDecl(lengthof(session_replication_role_options
) == (SESSION_REPLICATION_ROLE_LOCAL
+ 2),
221 "array length mismatch");
223 static const struct config_enum_entry syslog_facility_options
[] = {
225 {"local0", LOG_LOCAL0
, false},
226 {"local1", LOG_LOCAL1
, false},
227 {"local2", LOG_LOCAL2
, false},
228 {"local3", LOG_LOCAL3
, false},
229 {"local4", LOG_LOCAL4
, false},
230 {"local5", LOG_LOCAL5
, false},
231 {"local6", LOG_LOCAL6
, false},
232 {"local7", LOG_LOCAL7
, false},
239 static const struct config_enum_entry track_function_options
[] = {
240 {"none", TRACK_FUNC_OFF
, false},
241 {"pl", TRACK_FUNC_PL
, false},
242 {"all", TRACK_FUNC_ALL
, false},
246 StaticAssertDecl(lengthof(track_function_options
) == (TRACK_FUNC_ALL
+ 2),
247 "array length mismatch");
249 static const struct config_enum_entry stats_fetch_consistency
[] = {
250 {"none", PGSTAT_FETCH_CONSISTENCY_NONE
, false},
251 {"cache", PGSTAT_FETCH_CONSISTENCY_CACHE
, false},
252 {"snapshot", PGSTAT_FETCH_CONSISTENCY_SNAPSHOT
, false},
256 StaticAssertDecl(lengthof(stats_fetch_consistency
) == (PGSTAT_FETCH_CONSISTENCY_SNAPSHOT
+ 2),
257 "array length mismatch");
259 static const struct config_enum_entry xmlbinary_options
[] = {
260 {"base64", XMLBINARY_BASE64
, false},
261 {"hex", XMLBINARY_HEX
, false},
265 StaticAssertDecl(lengthof(xmlbinary_options
) == (XMLBINARY_HEX
+ 2),
266 "array length mismatch");
268 static const struct config_enum_entry xmloption_options
[] = {
269 {"content", XMLOPTION_CONTENT
, false},
270 {"document", XMLOPTION_DOCUMENT
, false},
274 StaticAssertDecl(lengthof(xmloption_options
) == (XMLOPTION_CONTENT
+ 2),
275 "array length mismatch");
278 * Although only "on", "off", and "safe_encoding" are documented, we
279 * accept all the likely variants of "on" and "off".
281 static const struct config_enum_entry backslash_quote_options
[] = {
282 {"safe_encoding", BACKSLASH_QUOTE_SAFE_ENCODING
, false},
283 {"on", BACKSLASH_QUOTE_ON
, false},
284 {"off", BACKSLASH_QUOTE_OFF
, false},
285 {"true", BACKSLASH_QUOTE_ON
, true},
286 {"false", BACKSLASH_QUOTE_OFF
, true},
287 {"yes", BACKSLASH_QUOTE_ON
, true},
288 {"no", BACKSLASH_QUOTE_OFF
, true},
289 {"1", BACKSLASH_QUOTE_ON
, true},
290 {"0", BACKSLASH_QUOTE_OFF
, true},
295 * Although only "on", "off", and "auto" are documented, we accept
296 * all the likely variants of "on" and "off".
298 static const struct config_enum_entry compute_query_id_options
[] = {
299 {"auto", COMPUTE_QUERY_ID_AUTO
, false},
300 {"regress", COMPUTE_QUERY_ID_REGRESS
, false},
301 {"on", COMPUTE_QUERY_ID_ON
, false},
302 {"off", COMPUTE_QUERY_ID_OFF
, false},
303 {"true", COMPUTE_QUERY_ID_ON
, true},
304 {"false", COMPUTE_QUERY_ID_OFF
, true},
305 {"yes", COMPUTE_QUERY_ID_ON
, true},
306 {"no", COMPUTE_QUERY_ID_OFF
, true},
307 {"1", COMPUTE_QUERY_ID_ON
, true},
308 {"0", COMPUTE_QUERY_ID_OFF
, true},
313 * Although only "on", "off", and "partition" are documented, we
314 * accept all the likely variants of "on" and "off".
316 static const struct config_enum_entry constraint_exclusion_options
[] = {
317 {"partition", CONSTRAINT_EXCLUSION_PARTITION
, false},
318 {"on", CONSTRAINT_EXCLUSION_ON
, false},
319 {"off", CONSTRAINT_EXCLUSION_OFF
, false},
320 {"true", CONSTRAINT_EXCLUSION_ON
, true},
321 {"false", CONSTRAINT_EXCLUSION_OFF
, true},
322 {"yes", CONSTRAINT_EXCLUSION_ON
, true},
323 {"no", CONSTRAINT_EXCLUSION_OFF
, true},
324 {"1", CONSTRAINT_EXCLUSION_ON
, true},
325 {"0", CONSTRAINT_EXCLUSION_OFF
, true},
330 * Although only "on", "off", "remote_apply", "remote_write", and "local" are
331 * documented, we accept all the likely variants of "on" and "off".
333 static const struct config_enum_entry synchronous_commit_options
[] = {
334 {"local", SYNCHRONOUS_COMMIT_LOCAL_FLUSH
, false},
335 {"remote_write", SYNCHRONOUS_COMMIT_REMOTE_WRITE
, false},
336 {"remote_apply", SYNCHRONOUS_COMMIT_REMOTE_APPLY
, false},
337 {"on", SYNCHRONOUS_COMMIT_ON
, false},
338 {"off", SYNCHRONOUS_COMMIT_OFF
, false},
339 {"true", SYNCHRONOUS_COMMIT_ON
, true},
340 {"false", SYNCHRONOUS_COMMIT_OFF
, true},
341 {"yes", SYNCHRONOUS_COMMIT_ON
, true},
342 {"no", SYNCHRONOUS_COMMIT_OFF
, true},
343 {"1", SYNCHRONOUS_COMMIT_ON
, true},
344 {"0", SYNCHRONOUS_COMMIT_OFF
, true},
349 * Although only "on", "off", "try" are documented, we accept all the likely
350 * variants of "on" and "off".
352 static const struct config_enum_entry huge_pages_options
[] = {
353 {"off", HUGE_PAGES_OFF
, false},
354 {"on", HUGE_PAGES_ON
, false},
355 {"try", HUGE_PAGES_TRY
, false},
356 {"true", HUGE_PAGES_ON
, true},
357 {"false", HUGE_PAGES_OFF
, true},
358 {"yes", HUGE_PAGES_ON
, true},
359 {"no", HUGE_PAGES_OFF
, true},
360 {"1", HUGE_PAGES_ON
, true},
361 {"0", HUGE_PAGES_OFF
, true},
365 static const struct config_enum_entry huge_pages_status_options
[] = {
366 {"off", HUGE_PAGES_OFF
, false},
367 {"on", HUGE_PAGES_ON
, false},
368 {"unknown", HUGE_PAGES_UNKNOWN
, false},
372 static const struct config_enum_entry recovery_prefetch_options
[] = {
373 {"off", RECOVERY_PREFETCH_OFF
, false},
374 {"on", RECOVERY_PREFETCH_ON
, false},
375 {"try", RECOVERY_PREFETCH_TRY
, false},
376 {"true", RECOVERY_PREFETCH_ON
, true},
377 {"false", RECOVERY_PREFETCH_OFF
, true},
378 {"yes", RECOVERY_PREFETCH_ON
, true},
379 {"no", RECOVERY_PREFETCH_OFF
, true},
380 {"1", RECOVERY_PREFETCH_ON
, true},
381 {"0", RECOVERY_PREFETCH_OFF
, true},
385 static const struct config_enum_entry debug_parallel_query_options
[] = {
386 {"off", DEBUG_PARALLEL_OFF
, false},
387 {"on", DEBUG_PARALLEL_ON
, false},
388 {"regress", DEBUG_PARALLEL_REGRESS
, false},
389 {"true", DEBUG_PARALLEL_ON
, true},
390 {"false", DEBUG_PARALLEL_OFF
, true},
391 {"yes", DEBUG_PARALLEL_ON
, true},
392 {"no", DEBUG_PARALLEL_OFF
, true},
393 {"1", DEBUG_PARALLEL_ON
, true},
394 {"0", DEBUG_PARALLEL_OFF
, true},
398 static const struct config_enum_entry plan_cache_mode_options
[] = {
399 {"auto", PLAN_CACHE_MODE_AUTO
, false},
400 {"force_generic_plan", PLAN_CACHE_MODE_FORCE_GENERIC_PLAN
, false},
401 {"force_custom_plan", PLAN_CACHE_MODE_FORCE_CUSTOM_PLAN
, false},
405 static const struct config_enum_entry password_encryption_options
[] = {
406 {"md5", PASSWORD_TYPE_MD5
, false},
407 {"scram-sha-256", PASSWORD_TYPE_SCRAM_SHA_256
, false},
411 static const struct config_enum_entry ssl_protocol_versions_info
[] = {
412 {"", PG_TLS_ANY
, false},
413 {"TLSv1", PG_TLS1_VERSION
, false},
414 {"TLSv1.1", PG_TLS1_1_VERSION
, false},
415 {"TLSv1.2", PG_TLS1_2_VERSION
, false},
416 {"TLSv1.3", PG_TLS1_3_VERSION
, false},
420 static const struct config_enum_entry debug_logical_replication_streaming_options
[] = {
421 {"buffered", DEBUG_LOGICAL_REP_STREAMING_BUFFERED
, false},
422 {"immediate", DEBUG_LOGICAL_REP_STREAMING_IMMEDIATE
, false},
426 StaticAssertDecl(lengthof(ssl_protocol_versions_info
) == (PG_TLS1_3_VERSION
+ 2),
427 "array length mismatch");
429 static const struct config_enum_entry recovery_init_sync_method_options
[] = {
430 {"fsync", DATA_DIR_SYNC_METHOD_FSYNC
, false},
432 {"syncfs", DATA_DIR_SYNC_METHOD_SYNCFS
, false},
437 static const struct config_enum_entry shared_memory_options
[] = {
439 {"sysv", SHMEM_TYPE_SYSV
, false},
442 {"mmap", SHMEM_TYPE_MMAP
, false},
445 {"windows", SHMEM_TYPE_WINDOWS
, false},
450 static const struct config_enum_entry default_toast_compression_options
[] = {
451 {"pglz", TOAST_PGLZ_COMPRESSION
, false},
453 {"lz4", TOAST_LZ4_COMPRESSION
, false},
458 static const struct config_enum_entry wal_compression_options
[] = {
459 {"pglz", WAL_COMPRESSION_PGLZ
, false},
461 {"lz4", WAL_COMPRESSION_LZ4
, false},
464 {"zstd", WAL_COMPRESSION_ZSTD
, false},
466 {"on", WAL_COMPRESSION_PGLZ
, false},
467 {"off", WAL_COMPRESSION_NONE
, false},
468 {"true", WAL_COMPRESSION_PGLZ
, true},
469 {"false", WAL_COMPRESSION_NONE
, true},
470 {"yes", WAL_COMPRESSION_PGLZ
, true},
471 {"no", WAL_COMPRESSION_NONE
, true},
472 {"1", WAL_COMPRESSION_PGLZ
, true},
473 {"0", WAL_COMPRESSION_NONE
, true},
478 * Options for enum values stored in other modules
480 extern const struct config_enum_entry wal_level_options
[];
481 extern const struct config_enum_entry archive_mode_options
[];
482 extern const struct config_enum_entry recovery_target_action_options
[];
483 extern const struct config_enum_entry wal_sync_method_options
[];
484 extern const struct config_enum_entry dynamic_shared_memory_options
[];
487 * GUC option variables that are exported from this module
489 bool AllowAlterSystem
= true;
490 bool log_duration
= false;
491 bool Debug_print_plan
= false;
492 bool Debug_print_parse
= false;
493 bool Debug_print_rewritten
= false;
494 bool Debug_pretty_print
= true;
496 #ifdef DEBUG_NODE_TESTS_ENABLED
497 bool Debug_copy_parse_plan_trees
;
498 bool Debug_write_read_parse_plan_trees
;
499 bool Debug_raw_expression_coverage_test
;
502 bool log_parser_stats
= false;
503 bool log_planner_stats
= false;
504 bool log_executor_stats
= false;
505 bool log_statement_stats
= false; /* this is sort of all three above
507 bool log_btree_build_stats
= false;
511 bool check_function_bodies
= true;
514 * This GUC exists solely for backward compatibility, check its definition for
517 static bool default_with_oids
= false;
519 bool current_role_is_superuser
;
521 int log_min_error_statement
= ERROR
;
522 int log_min_messages
= WARNING
;
523 int client_min_messages
= NOTICE
;
524 int log_min_duration_sample
= -1;
525 int log_min_duration_statement
= -1;
526 int log_parameter_max_length
= -1;
527 int log_parameter_max_length_on_error
= 0;
528 int log_temp_files
= -1;
529 double log_statement_sample_rate
= 1.0;
530 double log_xact_sample_rate
= 0;
531 char *backtrace_functions
;
533 int temp_file_limit
= -1;
535 int num_temp_buffers
= 1024;
537 char *cluster_name
= "";
538 char *ConfigFileName
;
541 char *external_pid_file
;
543 char *application_name
;
545 int tcp_keepalives_idle
;
546 int tcp_keepalives_interval
;
547 int tcp_keepalives_count
;
548 int tcp_user_timeout
;
551 * SSL renegotiation was been removed in PostgreSQL 9.5, but we tolerate it
552 * being set to zero (meaning never renegotiate) for backward compatibility.
553 * This avoids breaking compatibility with clients that have never supported
554 * renegotiation and therefore always try to zero it.
556 static int ssl_renegotiation_limit
;
559 * This really belongs in pg_shmem.c, but is defined here so that it doesn't
560 * need to be duplicated in all the different implementations of pg_shmem.c.
562 int huge_pages
= HUGE_PAGES_TRY
;
564 static int huge_pages_status
= HUGE_PAGES_UNKNOWN
;
567 * These variables are all dummies that don't do anything, except in some
568 * cases provide the value for SHOW to display. The real state is elsewhere
569 * and is kept in sync by assign_hooks.
571 static char *syslog_ident_str
;
572 static double phony_random_seed
;
573 static char *client_encoding_string
;
574 static char *datestyle_string
;
575 static char *server_encoding_string
;
576 static char *server_version_string
;
577 static int server_version_num
;
578 static char *debug_io_direct_string
;
579 static char *restrict_nonsystem_relation_kind_string
;
582 #define DEFAULT_SYSLOG_FACILITY LOG_LOCAL0
584 #define DEFAULT_SYSLOG_FACILITY 0
586 static int syslog_facility
= DEFAULT_SYSLOG_FACILITY
;
588 static char *timezone_string
;
589 static char *log_timezone_string
;
590 static char *timezone_abbreviations_string
;
591 static char *data_directory
;
592 static char *session_authorization_string
;
593 static int max_function_args
;
594 static int max_index_keys
;
595 static int max_identifier_length
;
596 static int block_size
;
597 static int segment_size
;
598 static int shared_memory_size_mb
;
599 static int shared_memory_size_in_huge_pages
;
600 static int wal_block_size
;
601 static int num_os_semaphores
;
602 static bool data_checksums
;
603 static bool integer_datetimes
;
605 #ifdef USE_ASSERT_CHECKING
606 #define DEFAULT_ASSERT_ENABLED true
608 #define DEFAULT_ASSERT_ENABLED false
610 static bool assert_enabled
= DEFAULT_ASSERT_ENABLED
;
612 static char *recovery_target_timeline_string
;
613 static char *recovery_target_string
;
614 static char *recovery_target_xid_string
;
615 static char *recovery_target_name_string
;
616 static char *recovery_target_lsn_string
;
618 /* should be static, but commands/variable.c needs to get at this */
621 /* should be static, but guc.c needs to get at this */
622 bool in_hot_standby_guc
;
626 * Displayable names for context types (enum GucContext)
628 * Note: these strings are deliberately not localized.
630 const char *const GucContext_Names
[] =
632 [PGC_INTERNAL
] = "internal",
633 [PGC_POSTMASTER
] = "postmaster",
634 [PGC_SIGHUP
] = "sighup",
635 [PGC_SU_BACKEND
] = "superuser-backend",
636 [PGC_BACKEND
] = "backend",
637 [PGC_SUSET
] = "superuser",
638 [PGC_USERSET
] = "user",
641 StaticAssertDecl(lengthof(GucContext_Names
) == (PGC_USERSET
+ 1),
642 "array length mismatch");
645 * Displayable names for source types (enum GucSource)
647 * Note: these strings are deliberately not localized.
649 const char *const GucSource_Names
[] =
651 [PGC_S_DEFAULT
] = "default",
652 [PGC_S_DYNAMIC_DEFAULT
] = "default",
653 [PGC_S_ENV_VAR
] = "environment variable",
654 [PGC_S_FILE
] = "configuration file",
655 [PGC_S_ARGV
] = "command line",
656 [PGC_S_GLOBAL
] = "global",
657 [PGC_S_DATABASE
] = "database",
658 [PGC_S_USER
] = "user",
659 [PGC_S_DATABASE_USER
] = "database user",
660 [PGC_S_CLIENT
] = "client",
661 [PGC_S_OVERRIDE
] = "override",
662 [PGC_S_INTERACTIVE
] = "interactive",
663 [PGC_S_TEST
] = "test",
664 [PGC_S_SESSION
] = "session",
667 StaticAssertDecl(lengthof(GucSource_Names
) == (PGC_S_SESSION
+ 1),
668 "array length mismatch");
671 * Displayable names for the groupings defined in enum config_group
673 const char *const config_group_names
[] =
675 [UNGROUPED
] = gettext_noop("Ungrouped"),
676 [FILE_LOCATIONS
] = gettext_noop("File Locations"),
677 [CONN_AUTH_SETTINGS
] = gettext_noop("Connections and Authentication / Connection Settings"),
678 [CONN_AUTH_TCP
] = gettext_noop("Connections and Authentication / TCP Settings"),
679 [CONN_AUTH_AUTH
] = gettext_noop("Connections and Authentication / Authentication"),
680 [CONN_AUTH_SSL
] = gettext_noop("Connections and Authentication / SSL"),
681 [RESOURCES_MEM
] = gettext_noop("Resource Usage / Memory"),
682 [RESOURCES_DISK
] = gettext_noop("Resource Usage / Disk"),
683 [RESOURCES_KERNEL
] = gettext_noop("Resource Usage / Kernel Resources"),
684 [RESOURCES_BGWRITER
] = gettext_noop("Resource Usage / Background Writer"),
685 [RESOURCES_ASYNCHRONOUS
] = gettext_noop("Resource Usage / Asynchronous Behavior"),
686 [WAL_SETTINGS
] = gettext_noop("Write-Ahead Log / Settings"),
687 [WAL_CHECKPOINTS
] = gettext_noop("Write-Ahead Log / Checkpoints"),
688 [WAL_ARCHIVING
] = gettext_noop("Write-Ahead Log / Archiving"),
689 [WAL_RECOVERY
] = gettext_noop("Write-Ahead Log / Recovery"),
690 [WAL_ARCHIVE_RECOVERY
] = gettext_noop("Write-Ahead Log / Archive Recovery"),
691 [WAL_RECOVERY_TARGET
] = gettext_noop("Write-Ahead Log / Recovery Target"),
692 [WAL_SUMMARIZATION
] = gettext_noop("Write-Ahead Log / Summarization"),
693 [REPLICATION_SENDING
] = gettext_noop("Replication / Sending Servers"),
694 [REPLICATION_PRIMARY
] = gettext_noop("Replication / Primary Server"),
695 [REPLICATION_STANDBY
] = gettext_noop("Replication / Standby Servers"),
696 [REPLICATION_SUBSCRIBERS
] = gettext_noop("Replication / Subscribers"),
697 [QUERY_TUNING_METHOD
] = gettext_noop("Query Tuning / Planner Method Configuration"),
698 [QUERY_TUNING_COST
] = gettext_noop("Query Tuning / Planner Cost Constants"),
699 [QUERY_TUNING_GEQO
] = gettext_noop("Query Tuning / Genetic Query Optimizer"),
700 [QUERY_TUNING_OTHER
] = gettext_noop("Query Tuning / Other Planner Options"),
701 [LOGGING_WHERE
] = gettext_noop("Reporting and Logging / Where to Log"),
702 [LOGGING_WHEN
] = gettext_noop("Reporting and Logging / When to Log"),
703 [LOGGING_WHAT
] = gettext_noop("Reporting and Logging / What to Log"),
704 [PROCESS_TITLE
] = gettext_noop("Reporting and Logging / Process Title"),
705 [STATS_MONITORING
] = gettext_noop("Statistics / Monitoring"),
706 [STATS_CUMULATIVE
] = gettext_noop("Statistics / Cumulative Query and Index Statistics"),
707 [VACUUM_AUTOVACUUM
] = gettext_noop("Vacuuming / Automatic Vacuuming"),
708 [VACUUM_COST_DELAY
] = gettext_noop("Vacuuming / Cost-Based Vacuum Delay"),
709 [VACUUM_FREEZING
] = gettext_noop("Vacuuming / Freezing"),
710 [CLIENT_CONN_STATEMENT
] = gettext_noop("Client Connection Defaults / Statement Behavior"),
711 [CLIENT_CONN_LOCALE
] = gettext_noop("Client Connection Defaults / Locale and Formatting"),
712 [CLIENT_CONN_PRELOAD
] = gettext_noop("Client Connection Defaults / Shared Library Preloading"),
713 [CLIENT_CONN_OTHER
] = gettext_noop("Client Connection Defaults / Other Defaults"),
714 [LOCK_MANAGEMENT
] = gettext_noop("Lock Management"),
715 [COMPAT_OPTIONS_PREVIOUS
] = gettext_noop("Version and Platform Compatibility / Previous PostgreSQL Versions"),
716 [COMPAT_OPTIONS_OTHER
] = gettext_noop("Version and Platform Compatibility / Other Platforms and Clients"),
717 [ERROR_HANDLING_OPTIONS
] = gettext_noop("Error Handling"),
718 [PRESET_OPTIONS
] = gettext_noop("Preset Options"),
719 [CUSTOM_OPTIONS
] = gettext_noop("Customized Options"),
720 [DEVELOPER_OPTIONS
] = gettext_noop("Developer Options"),
723 StaticAssertDecl(lengthof(config_group_names
) == (DEVELOPER_OPTIONS
+ 1),
724 "array length mismatch");
727 * Displayable names for GUC variable types (enum config_type)
729 * Note: these strings are deliberately not localized.
731 const char *const config_type_names
[] =
734 [PGC_INT
] = "integer",
736 [PGC_STRING
] = "string",
740 StaticAssertDecl(lengthof(config_type_names
) == (PGC_ENUM
+ 1),
741 "array length mismatch");
745 * Contents of GUC tables
747 * See src/backend/utils/misc/README for design notes.
751 * 1. Declare a global variable of type bool, int, double, or char*
752 * and make use of it.
754 * 2. Decide at what times it's safe to set the option. See guc.h for
757 * 3. Decide on a name, a default value, upper and lower bounds (if
760 * 4. Add a record below.
762 * 5. Add it to src/backend/utils/misc/postgresql.conf.sample, if
765 * 6. Don't forget to document the option (at least in config.sgml).
767 * 7. If it's a new GUC_LIST_QUOTE option, you must add it to
768 * variable_is_guc_list_quote() in src/bin/pg_dump/dumputils.c.
771 struct config_bool ConfigureNamesBool
[] =
774 {"enable_seqscan", PGC_USERSET
, QUERY_TUNING_METHOD
,
775 gettext_noop("Enables the planner's use of sequential-scan plans."),
784 {"enable_indexscan", PGC_USERSET
, QUERY_TUNING_METHOD
,
785 gettext_noop("Enables the planner's use of index-scan plans."),
794 {"enable_indexonlyscan", PGC_USERSET
, QUERY_TUNING_METHOD
,
795 gettext_noop("Enables the planner's use of index-only-scan plans."),
799 &enable_indexonlyscan
,
804 {"enable_bitmapscan", PGC_USERSET
, QUERY_TUNING_METHOD
,
805 gettext_noop("Enables the planner's use of bitmap-scan plans."),
814 {"enable_tidscan", PGC_USERSET
, QUERY_TUNING_METHOD
,
815 gettext_noop("Enables the planner's use of TID scan plans."),
824 {"enable_sort", PGC_USERSET
, QUERY_TUNING_METHOD
,
825 gettext_noop("Enables the planner's use of explicit sort steps."),
834 {"enable_incremental_sort", PGC_USERSET
, QUERY_TUNING_METHOD
,
835 gettext_noop("Enables the planner's use of incremental sort steps."),
839 &enable_incremental_sort
,
844 {"enable_hashagg", PGC_USERSET
, QUERY_TUNING_METHOD
,
845 gettext_noop("Enables the planner's use of hashed aggregation plans."),
854 {"enable_material", PGC_USERSET
, QUERY_TUNING_METHOD
,
855 gettext_noop("Enables the planner's use of materialization."),
864 {"enable_memoize", PGC_USERSET
, QUERY_TUNING_METHOD
,
865 gettext_noop("Enables the planner's use of memoization."),
874 {"enable_nestloop", PGC_USERSET
, QUERY_TUNING_METHOD
,
875 gettext_noop("Enables the planner's use of nested-loop join plans."),
884 {"enable_mergejoin", PGC_USERSET
, QUERY_TUNING_METHOD
,
885 gettext_noop("Enables the planner's use of merge join plans."),
894 {"enable_hashjoin", PGC_USERSET
, QUERY_TUNING_METHOD
,
895 gettext_noop("Enables the planner's use of hash join plans."),
904 {"enable_gathermerge", PGC_USERSET
, QUERY_TUNING_METHOD
,
905 gettext_noop("Enables the planner's use of gather merge plans."),
914 {"enable_partitionwise_join", PGC_USERSET
, QUERY_TUNING_METHOD
,
915 gettext_noop("Enables partitionwise join."),
919 &enable_partitionwise_join
,
924 {"enable_partitionwise_aggregate", PGC_USERSET
, QUERY_TUNING_METHOD
,
925 gettext_noop("Enables partitionwise aggregation and grouping."),
929 &enable_partitionwise_aggregate
,
934 {"enable_parallel_append", PGC_USERSET
, QUERY_TUNING_METHOD
,
935 gettext_noop("Enables the planner's use of parallel append plans."),
939 &enable_parallel_append
,
944 {"enable_parallel_hash", PGC_USERSET
, QUERY_TUNING_METHOD
,
945 gettext_noop("Enables the planner's use of parallel hash plans."),
949 &enable_parallel_hash
,
954 {"enable_partition_pruning", PGC_USERSET
, QUERY_TUNING_METHOD
,
955 gettext_noop("Enables plan-time and execution-time partition pruning."),
956 gettext_noop("Allows the query planner and executor to compare partition "
957 "bounds to conditions in the query to determine which "
958 "partitions must be scanned."),
961 &enable_partition_pruning
,
966 {"enable_presorted_aggregate", PGC_USERSET
, QUERY_TUNING_METHOD
,
967 gettext_noop("Enables the planner's ability to produce plans that "
968 "provide presorted input for ORDER BY / DISTINCT aggregate "
970 gettext_noop("Allows the query planner to build plans that provide "
971 "presorted input for aggregate functions with an ORDER BY / "
972 "DISTINCT clause. When disabled, implicit sorts are always "
973 "performed during execution."),
976 &enable_presorted_aggregate
,
981 {"enable_async_append", PGC_USERSET
, QUERY_TUNING_METHOD
,
982 gettext_noop("Enables the planner's use of async append plans."),
986 &enable_async_append
,
991 {"enable_group_by_reordering", PGC_USERSET
, QUERY_TUNING_METHOD
,
992 gettext_noop("Enables reordering of GROUP BY keys."),
996 &enable_group_by_reordering
,
1001 {"enable_distinct_reordering", PGC_USERSET
, QUERY_TUNING_METHOD
,
1002 gettext_noop("Enables reordering of DISTINCT pathkeys."),
1006 &enable_distinct_reordering
,
1011 {"geqo", PGC_USERSET
, QUERY_TUNING_GEQO
,
1012 gettext_noop("Enables genetic query optimization."),
1013 gettext_noop("This algorithm attempts to do planning without "
1014 "exhaustive searching."),
1023 * Not for general use --- used by SET SESSION AUTHORIZATION and SET
1026 {"is_superuser", PGC_INTERNAL
, UNGROUPED
,
1027 gettext_noop("Shows whether the current user is a superuser."),
1029 GUC_REPORT
| GUC_NO_SHOW_ALL
| GUC_NO_RESET_ALL
| GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
| GUC_ALLOW_IN_PARALLEL
1031 ¤t_role_is_superuser
,
1037 * This setting itself cannot be set by ALTER SYSTEM to avoid an
1038 * operator turning this setting off by using ALTER SYSTEM, without a
1039 * way to turn it back on.
1041 {"allow_alter_system", PGC_SIGHUP
, COMPAT_OPTIONS_OTHER
,
1042 gettext_noop("Allows running the ALTER SYSTEM command."),
1043 gettext_noop("Can be set to off for environments where global configuration "
1044 "changes should be made using a different method."),
1045 GUC_DISALLOW_IN_AUTO_FILE
1052 {"bonjour", PGC_POSTMASTER
, CONN_AUTH_SETTINGS
,
1053 gettext_noop("Enables advertising the server via Bonjour."),
1058 check_bonjour
, NULL
, NULL
1061 {"track_commit_timestamp", PGC_POSTMASTER
, REPLICATION_SENDING
,
1062 gettext_noop("Collects transaction commit time."),
1065 &track_commit_timestamp
,
1070 {"ssl", PGC_SIGHUP
, CONN_AUTH_SSL
,
1071 gettext_noop("Enables SSL connections."),
1076 check_ssl
, NULL
, NULL
1079 {"ssl_passphrase_command_supports_reload", PGC_SIGHUP
, CONN_AUTH_SSL
,
1080 gettext_noop("Controls whether \"ssl_passphrase_command\" is called during server reload."),
1083 &ssl_passphrase_command_supports_reload
,
1088 {"ssl_prefer_server_ciphers", PGC_SIGHUP
, CONN_AUTH_SSL
,
1089 gettext_noop("Give priority to server ciphersuite order."),
1092 &SSLPreferServerCiphers
,
1097 {"fsync", PGC_SIGHUP
, WAL_SETTINGS
,
1098 gettext_noop("Forces synchronization of updates to disk."),
1099 gettext_noop("The server will use the fsync() system call in several places to make "
1100 "sure that updates are physically written to disk. This ensures "
1101 "that a database cluster will recover to a consistent state after "
1102 "an operating system or hardware crash.")
1109 {"ignore_checksum_failure", PGC_SUSET
, DEVELOPER_OPTIONS
,
1110 gettext_noop("Continues processing after a checksum failure."),
1111 gettext_noop("Detection of a checksum failure normally causes PostgreSQL to "
1112 "report an error, aborting the current transaction. Setting "
1113 "ignore_checksum_failure to true causes the system to ignore the failure "
1114 "(but still report a warning), and continue processing. This "
1115 "behavior could cause crashes or other serious problems. Only "
1116 "has an effect if checksums are enabled."),
1119 &ignore_checksum_failure
,
1124 {"zero_damaged_pages", PGC_SUSET
, DEVELOPER_OPTIONS
,
1125 gettext_noop("Continues processing past damaged page headers."),
1126 gettext_noop("Detection of a damaged page header normally causes PostgreSQL to "
1127 "report an error, aborting the current transaction. Setting "
1128 "\"zero_damaged_pages\" to true causes the system to instead report a "
1129 "warning, zero out the damaged page, and continue processing. This "
1130 "behavior will destroy data, namely all the rows on the damaged page."),
1133 &zero_damaged_pages
,
1138 {"ignore_invalid_pages", PGC_POSTMASTER
, DEVELOPER_OPTIONS
,
1139 gettext_noop("Continues recovery after an invalid pages failure."),
1140 gettext_noop("Detection of WAL records having references to "
1141 "invalid pages during recovery causes PostgreSQL to "
1142 "raise a PANIC-level error, aborting the recovery. "
1143 "Setting \"ignore_invalid_pages\" to true causes "
1144 "the system to ignore invalid page references "
1145 "in WAL records (but still report a warning), "
1146 "and continue recovery. This behavior may cause "
1147 "crashes, data loss, propagate or hide corruption, "
1148 "or other serious problems. Only has an effect "
1149 "during recovery or in standby mode."),
1152 &ignore_invalid_pages
,
1157 {"full_page_writes", PGC_SIGHUP
, WAL_SETTINGS
,
1158 gettext_noop("Writes full pages to WAL when first modified after a checkpoint."),
1159 gettext_noop("A page write in process during an operating system crash might be "
1160 "only partially written to disk. During recovery, the row changes "
1161 "stored in WAL are not enough to recover. This option writes "
1162 "pages when first modified after a checkpoint to WAL so full recovery "
1171 {"wal_log_hints", PGC_POSTMASTER
, WAL_SETTINGS
,
1172 gettext_noop("Writes full pages to WAL when first modified after a checkpoint, even for a non-critical modification."),
1181 {"wal_init_zero", PGC_SUSET
, WAL_SETTINGS
,
1182 gettext_noop("Writes zeroes to new WAL files before first use."),
1191 {"wal_recycle", PGC_SUSET
, WAL_SETTINGS
,
1192 gettext_noop("Recycles WAL files by renaming them."),
1201 {"log_checkpoints", PGC_SIGHUP
, LOGGING_WHAT
,
1202 gettext_noop("Logs each checkpoint."),
1210 {"log_connections", PGC_SU_BACKEND
, LOGGING_WHAT
,
1211 gettext_noop("Logs each successful connection."),
1219 {"trace_connection_negotiation", PGC_POSTMASTER
, DEVELOPER_OPTIONS
,
1220 gettext_noop("Logs details of pre-authentication connection handshake."),
1224 &Trace_connection_negotiation
,
1229 {"log_disconnections", PGC_SU_BACKEND
, LOGGING_WHAT
,
1230 gettext_noop("Logs end of a session, including duration."),
1233 &Log_disconnections
,
1238 {"log_replication_commands", PGC_SUSET
, LOGGING_WHAT
,
1239 gettext_noop("Logs each replication command."),
1242 &log_replication_commands
,
1247 {"debug_assertions", PGC_INTERNAL
, PRESET_OPTIONS
,
1248 gettext_noop("Shows whether the running server has assertion checks enabled."),
1250 GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
1253 DEFAULT_ASSERT_ENABLED
,
1258 {"exit_on_error", PGC_USERSET
, ERROR_HANDLING_OPTIONS
,
1259 gettext_noop("Terminate session on any error."),
1267 {"restart_after_crash", PGC_SIGHUP
, ERROR_HANDLING_OPTIONS
,
1268 gettext_noop("Reinitialize server after backend crash."),
1271 &restart_after_crash
,
1276 {"remove_temp_files_after_crash", PGC_SIGHUP
, DEVELOPER_OPTIONS
,
1277 gettext_noop("Remove temporary files after backend crash."),
1281 &remove_temp_files_after_crash
,
1286 {"send_abort_for_crash", PGC_SIGHUP
, DEVELOPER_OPTIONS
,
1287 gettext_noop("Send SIGABRT not SIGQUIT to child processes after backend crash."),
1291 &send_abort_for_crash
,
1296 {"send_abort_for_kill", PGC_SIGHUP
, DEVELOPER_OPTIONS
,
1297 gettext_noop("Send SIGABRT not SIGKILL to stuck child processes."),
1301 &send_abort_for_kill
,
1307 {"log_duration", PGC_SUSET
, LOGGING_WHAT
,
1308 gettext_noop("Logs the duration of each completed SQL statement."),
1315 #ifdef DEBUG_NODE_TESTS_ENABLED
1317 {"debug_copy_parse_plan_trees", PGC_SUSET
, DEVELOPER_OPTIONS
,
1318 gettext_noop("Set this to force all parse and plan trees to be passed through "
1319 "copyObject(), to facilitate catching errors and omissions in "
1324 &Debug_copy_parse_plan_trees
,
1325 /* support for legacy compile-time setting */
1326 #ifdef COPY_PARSE_PLAN_TREES
1334 {"debug_write_read_parse_plan_trees", PGC_SUSET
, DEVELOPER_OPTIONS
,
1335 gettext_noop("Set this to force all parse and plan trees to be passed through "
1336 "outfuncs.c/readfuncs.c, to facilitate catching errors and omissions in "
1341 &Debug_write_read_parse_plan_trees
,
1342 /* support for legacy compile-time setting */
1343 #ifdef WRITE_READ_PARSE_PLAN_TREES
1351 {"debug_raw_expression_coverage_test", PGC_SUSET
, DEVELOPER_OPTIONS
,
1352 gettext_noop("Set this to force all raw parse trees for DML statements to be scanned "
1353 "by raw_expression_tree_walker(), to facilitate catching errors and "
1354 "omissions in that function."),
1358 &Debug_raw_expression_coverage_test
,
1359 /* support for legacy compile-time setting */
1360 #ifdef RAW_EXPRESSION_COVERAGE_TEST
1367 #endif /* DEBUG_NODE_TESTS_ENABLED */
1369 {"debug_print_parse", PGC_USERSET
, LOGGING_WHAT
,
1370 gettext_noop("Logs each query's parse tree."),
1378 {"debug_print_rewritten", PGC_USERSET
, LOGGING_WHAT
,
1379 gettext_noop("Logs each query's rewritten parse tree."),
1382 &Debug_print_rewritten
,
1387 {"debug_print_plan", PGC_USERSET
, LOGGING_WHAT
,
1388 gettext_noop("Logs each query's execution plan."),
1396 {"debug_pretty_print", PGC_USERSET
, LOGGING_WHAT
,
1397 gettext_noop("Indents parse and plan tree displays."),
1400 &Debug_pretty_print
,
1405 {"log_parser_stats", PGC_SUSET
, STATS_MONITORING
,
1406 gettext_noop("Writes parser performance statistics to the server log."),
1411 check_stage_log_stats
, NULL
, NULL
1414 {"log_planner_stats", PGC_SUSET
, STATS_MONITORING
,
1415 gettext_noop("Writes planner performance statistics to the server log."),
1420 check_stage_log_stats
, NULL
, NULL
1423 {"log_executor_stats", PGC_SUSET
, STATS_MONITORING
,
1424 gettext_noop("Writes executor performance statistics to the server log."),
1427 &log_executor_stats
,
1429 check_stage_log_stats
, NULL
, NULL
1432 {"log_statement_stats", PGC_SUSET
, STATS_MONITORING
,
1433 gettext_noop("Writes cumulative performance statistics to the server log."),
1436 &log_statement_stats
,
1438 check_log_stats
, NULL
, NULL
1440 #ifdef BTREE_BUILD_STATS
1442 {"log_btree_build_stats", PGC_SUSET
, DEVELOPER_OPTIONS
,
1443 gettext_noop("Logs system resource usage statistics (memory and CPU) on various B-tree operations."),
1447 &log_btree_build_stats
,
1454 {"track_activities", PGC_SUSET
, STATS_CUMULATIVE
,
1455 gettext_noop("Collects information about executing commands."),
1456 gettext_noop("Enables the collection of information on the currently "
1457 "executing command of each session, along with "
1458 "the time at which that command began execution.")
1460 &pgstat_track_activities
,
1465 {"track_counts", PGC_SUSET
, STATS_CUMULATIVE
,
1466 gettext_noop("Collects statistics on database activity."),
1469 &pgstat_track_counts
,
1474 {"track_io_timing", PGC_SUSET
, STATS_CUMULATIVE
,
1475 gettext_noop("Collects timing statistics for database I/O activity."),
1483 {"track_wal_io_timing", PGC_SUSET
, STATS_CUMULATIVE
,
1484 gettext_noop("Collects timing statistics for WAL I/O activity."),
1487 &track_wal_io_timing
,
1493 {"update_process_title", PGC_SUSET
, PROCESS_TITLE
,
1494 gettext_noop("Updates the process title to show the active SQL command."),
1495 gettext_noop("Enables updating of the process title every time a new SQL command is received by the server.")
1497 &update_process_title
,
1498 DEFAULT_UPDATE_PROCESS_TITLE
,
1503 {"autovacuum", PGC_SIGHUP
, VACUUM_AUTOVACUUM
,
1504 gettext_noop("Starts the autovacuum subprocess."),
1507 &autovacuum_start_daemon
,
1513 {"trace_notify", PGC_USERSET
, DEVELOPER_OPTIONS
,
1514 gettext_noop("Generates debugging output for LISTEN and NOTIFY."),
1525 {"trace_locks", PGC_SUSET
, DEVELOPER_OPTIONS
,
1526 gettext_noop("Emits information about lock usage."),
1535 {"trace_userlocks", PGC_SUSET
, DEVELOPER_OPTIONS
,
1536 gettext_noop("Emits information about user lock usage."),
1545 {"trace_lwlocks", PGC_SUSET
, DEVELOPER_OPTIONS
,
1546 gettext_noop("Emits information about lightweight lock usage."),
1555 {"debug_deadlocks", PGC_SUSET
, DEVELOPER_OPTIONS
,
1556 gettext_noop("Dumps information about all current locks when a deadlock timeout occurs."),
1567 {"log_lock_waits", PGC_SUSET
, LOGGING_WHAT
,
1568 gettext_noop("Logs long lock waits."),
1576 {"log_recovery_conflict_waits", PGC_SIGHUP
, LOGGING_WHAT
,
1577 gettext_noop("Logs standby recovery conflict waits."),
1580 &log_recovery_conflict_waits
,
1585 {"log_hostname", PGC_SIGHUP
, LOGGING_WHAT
,
1586 gettext_noop("Logs the host name in the connection logs."),
1587 gettext_noop("By default, connection logs only show the IP address "
1588 "of the connecting host. If you want them to show the host name you "
1589 "can turn this on, but depending on your host name resolution "
1590 "setup it might impose a non-negligible performance penalty.")
1597 {"transform_null_equals", PGC_USERSET
, COMPAT_OPTIONS_OTHER
,
1598 gettext_noop("Treats \"expr=NULL\" as \"expr IS NULL\"."),
1599 gettext_noop("When turned on, expressions of the form expr = NULL "
1600 "(or NULL = expr) are treated as expr IS NULL, that is, they "
1601 "return true if expr evaluates to the null value, and false "
1602 "otherwise. The correct behavior of expr = NULL is to always "
1603 "return null (unknown).")
1605 &Transform_null_equals
,
1610 {"default_transaction_read_only", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
1611 gettext_noop("Sets the default read-only status of new transactions."),
1615 &DefaultXactReadOnly
,
1620 {"transaction_read_only", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
1621 gettext_noop("Sets the current transaction's read-only status."),
1623 GUC_NO_RESET
| GUC_NO_RESET_ALL
| GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
1627 check_transaction_read_only
, NULL
, NULL
1630 {"default_transaction_deferrable", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
1631 gettext_noop("Sets the default deferrable status of new transactions."),
1634 &DefaultXactDeferrable
,
1639 {"transaction_deferrable", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
1640 gettext_noop("Whether to defer a read-only serializable transaction until it can be executed with no possible serialization failures."),
1642 GUC_NO_RESET
| GUC_NO_RESET_ALL
| GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
1646 check_transaction_deferrable
, NULL
, NULL
1649 {"row_security", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
1650 gettext_noop("Enable row security."),
1651 gettext_noop("When enabled, row security will be applied to all users.")
1658 {"check_function_bodies", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
1659 gettext_noop("Check routine bodies during CREATE FUNCTION and CREATE PROCEDURE."),
1662 &check_function_bodies
,
1667 {"array_nulls", PGC_USERSET
, COMPAT_OPTIONS_PREVIOUS
,
1668 gettext_noop("Enable input of NULL elements in arrays."),
1669 gettext_noop("When turned on, unquoted NULL in an array input "
1670 "value means a null value; "
1671 "otherwise it is taken literally.")
1679 * WITH OIDS support, and consequently default_with_oids, was removed in
1680 * PostgreSQL 12, but we tolerate the parameter being set to false to
1681 * avoid unnecessarily breaking older dump files.
1684 {"default_with_oids", PGC_USERSET
, COMPAT_OPTIONS_PREVIOUS
,
1685 gettext_noop("WITH OIDS is no longer supported; this can only be false."),
1687 GUC_NO_SHOW_ALL
| GUC_NOT_IN_SAMPLE
1691 check_default_with_oids
, NULL
, NULL
1694 {"logging_collector", PGC_POSTMASTER
, LOGGING_WHERE
,
1695 gettext_noop("Start a subprocess to capture stderr output and/or csvlogs into log files."),
1703 {"log_truncate_on_rotation", PGC_SIGHUP
, LOGGING_WHERE
,
1704 gettext_noop("Truncate existing log files of same name during log rotation."),
1707 &Log_truncate_on_rotation
,
1713 {"trace_sort", PGC_USERSET
, DEVELOPER_OPTIONS
,
1714 gettext_noop("Emit information about resource usage in sorting."),
1723 #ifdef TRACE_SYNCSCAN
1724 /* this is undocumented because not exposed in a standard build */
1726 {"trace_syncscan", PGC_USERSET
, DEVELOPER_OPTIONS
,
1727 gettext_noop("Generate debugging output for synchronized scanning."),
1737 #ifdef DEBUG_BOUNDED_SORT
1738 /* this is undocumented because not exposed in a standard build */
1741 "optimize_bounded_sort", PGC_USERSET
, QUERY_TUNING_METHOD
,
1742 gettext_noop("Enable bounded sorting using heap sort."),
1744 GUC_NOT_IN_SAMPLE
| GUC_EXPLAIN
1746 &optimize_bounded_sort
,
1754 {"wal_debug", PGC_SUSET
, DEVELOPER_OPTIONS
,
1755 gettext_noop("Emit WAL-related debugging output."),
1766 {"integer_datetimes", PGC_INTERNAL
, PRESET_OPTIONS
,
1767 gettext_noop("Shows whether datetimes are integer based."),
1769 GUC_REPORT
| GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
1777 {"krb_caseins_users", PGC_SIGHUP
, CONN_AUTH_AUTH
,
1778 gettext_noop("Sets whether Kerberos and GSSAPI user names should be treated as case-insensitive."),
1781 &pg_krb_caseins_users
,
1787 {"gss_accept_delegation", PGC_SIGHUP
, CONN_AUTH_AUTH
,
1788 gettext_noop("Sets whether GSSAPI delegation should be accepted from the client."),
1791 &pg_gss_accept_delegation
,
1797 {"escape_string_warning", PGC_USERSET
, COMPAT_OPTIONS_PREVIOUS
,
1798 gettext_noop("Warn about backslash escapes in ordinary string literals."),
1801 &escape_string_warning
,
1807 {"standard_conforming_strings", PGC_USERSET
, COMPAT_OPTIONS_PREVIOUS
,
1808 gettext_noop("Causes '...' strings to treat backslashes literally."),
1812 &standard_conforming_strings
,
1818 {"synchronize_seqscans", PGC_USERSET
, COMPAT_OPTIONS_PREVIOUS
,
1819 gettext_noop("Enable synchronized sequential scans."),
1822 &synchronize_seqscans
,
1828 {"recovery_target_inclusive", PGC_POSTMASTER
, WAL_RECOVERY_TARGET
,
1829 gettext_noop("Sets whether to include or exclude transaction with recovery target."),
1832 &recoveryTargetInclusive
,
1838 {"summarize_wal", PGC_SIGHUP
, WAL_SUMMARIZATION
,
1839 gettext_noop("Starts the WAL summarizer process to enable incremental backup."),
1848 {"hot_standby", PGC_POSTMASTER
, REPLICATION_STANDBY
,
1849 gettext_noop("Allows connections and queries during recovery."),
1858 {"hot_standby_feedback", PGC_SIGHUP
, REPLICATION_STANDBY
,
1859 gettext_noop("Allows feedback from a hot standby to the primary that will avoid query conflicts."),
1862 &hot_standby_feedback
,
1868 {"in_hot_standby", PGC_INTERNAL
, PRESET_OPTIONS
,
1869 gettext_noop("Shows whether hot standby is currently active."),
1871 GUC_REPORT
| GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
1873 &in_hot_standby_guc
,
1875 NULL
, NULL
, show_in_hot_standby
1879 {"allow_system_table_mods", PGC_SUSET
, DEVELOPER_OPTIONS
,
1880 gettext_noop("Allows modifications of the structure of system tables."),
1884 &allowSystemTableMods
,
1890 {"ignore_system_indexes", PGC_BACKEND
, DEVELOPER_OPTIONS
,
1891 gettext_noop("Disables reading from system indexes."),
1892 gettext_noop("It does not prevent updating the indexes, so it is safe "
1893 "to use. The worst consequence is slowness."),
1896 &IgnoreSystemIndexes
,
1902 {"allow_in_place_tablespaces", PGC_SUSET
, DEVELOPER_OPTIONS
,
1903 gettext_noop("Allows tablespaces directly inside pg_tblspc, for testing."),
1907 &allow_in_place_tablespaces
,
1913 {"lo_compat_privileges", PGC_SUSET
, COMPAT_OPTIONS_PREVIOUS
,
1914 gettext_noop("Enables backward compatibility mode for privilege checks on large objects."),
1915 gettext_noop("Skips privilege checks when reading or modifying large objects, "
1916 "for compatibility with PostgreSQL releases prior to 9.0.")
1918 &lo_compat_privileges
,
1924 {"quote_all_identifiers", PGC_USERSET
, COMPAT_OPTIONS_PREVIOUS
,
1925 gettext_noop("When generating SQL fragments, quote all identifiers."),
1928 "e_all_identifiers
,
1934 {"data_checksums", PGC_INTERNAL
, PRESET_OPTIONS
,
1935 gettext_noop("Shows whether data checksums are turned on for this cluster."),
1937 GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
| GUC_RUNTIME_COMPUTED
1945 {"syslog_sequence_numbers", PGC_SIGHUP
, LOGGING_WHERE
,
1946 gettext_noop("Add sequence number to syslog messages to avoid duplicate suppression."),
1949 &syslog_sequence_numbers
,
1955 {"syslog_split_messages", PGC_SIGHUP
, LOGGING_WHERE
,
1956 gettext_noop("Split messages sent to syslog by lines and to fit into 1024 bytes."),
1959 &syslog_split_messages
,
1965 {"parallel_leader_participation", PGC_USERSET
, RESOURCES_ASYNCHRONOUS
,
1966 gettext_noop("Controls whether Gather and Gather Merge also run subplans."),
1967 gettext_noop("Should gather nodes also run subplans or just gather tuples?"),
1970 ¶llel_leader_participation
,
1976 {"jit", PGC_USERSET
, QUERY_TUNING_OTHER
,
1977 gettext_noop("Allow JIT compilation."),
1987 {"jit_debugging_support", PGC_SU_BACKEND
, DEVELOPER_OPTIONS
,
1988 gettext_noop("Register JIT-compiled functions with debugger."),
1992 &jit_debugging_support
,
1996 * This is not guaranteed to be available, but given it's a developer
1997 * oriented option, it doesn't seem worth adding code checking
2004 {"jit_dump_bitcode", PGC_SUSET
, DEVELOPER_OPTIONS
,
2005 gettext_noop("Write out LLVM bitcode to facilitate JIT debugging."),
2015 {"jit_expressions", PGC_USERSET
, DEVELOPER_OPTIONS
,
2016 gettext_noop("Allow JIT compilation of expressions."),
2026 {"jit_profiling_support", PGC_SU_BACKEND
, DEVELOPER_OPTIONS
,
2027 gettext_noop("Register JIT-compiled functions with perf profiler."),
2031 &jit_profiling_support
,
2035 * This is not guaranteed to be available, but given it's a developer
2036 * oriented option, it doesn't seem worth adding code checking
2043 {"jit_tuple_deforming", PGC_USERSET
, DEVELOPER_OPTIONS
,
2044 gettext_noop("Allow JIT compilation of tuple deforming."),
2048 &jit_tuple_deforming
,
2054 {"data_sync_retry", PGC_POSTMASTER
, ERROR_HANDLING_OPTIONS
,
2055 gettext_noop("Whether to continue running after a failure to sync data files."),
2063 {"wal_receiver_create_temp_slot", PGC_SIGHUP
, REPLICATION_STANDBY
,
2064 gettext_noop("Sets whether a WAL receiver should create a temporary replication slot if no permanent slot is configured."),
2066 &wal_receiver_create_temp_slot
,
2072 {"event_triggers", PGC_SUSET
, CLIENT_CONN_STATEMENT
,
2073 gettext_noop("Enables event triggers."),
2074 gettext_noop("When enabled, event triggers will fire for all applicable statements."),
2082 {"sync_replication_slots", PGC_SIGHUP
, REPLICATION_STANDBY
,
2083 gettext_noop("Enables a physical standby to synchronize logical failover replication slots from the primary server."),
2085 &sync_replication_slots
,
2091 {"md5_password_warnings", PGC_USERSET
, CONN_AUTH_AUTH
,
2092 gettext_noop("Enables deprecation warnings for MD5 passwords."),
2094 &md5_password_warnings
,
2099 /* End-of-list marker */
2101 {NULL
, 0, 0, NULL
, NULL
}, NULL
, false, NULL
, NULL
, NULL
2106 struct config_int ConfigureNamesInt
[] =
2109 {"archive_timeout", PGC_SIGHUP
, WAL_ARCHIVING
,
2110 gettext_noop("Sets the amount of time to wait before forcing a "
2111 "switch to the next WAL file."),
2115 &XLogArchiveTimeout
,
2120 {"post_auth_delay", PGC_BACKEND
, DEVELOPER_OPTIONS
,
2121 gettext_noop("Sets the amount of time to wait after "
2122 "authentication on connection startup."),
2123 gettext_noop("This allows attaching a debugger to the process."),
2124 GUC_NOT_IN_SAMPLE
| GUC_UNIT_S
2127 0, 0, INT_MAX
/ 1000000,
2131 {"default_statistics_target", PGC_USERSET
, QUERY_TUNING_OTHER
,
2132 gettext_noop("Sets the default statistics target."),
2133 gettext_noop("This applies to table columns that have not had a "
2134 "column-specific target set via ALTER TABLE SET STATISTICS.")
2136 &default_statistics_target
,
2137 100, 1, MAX_STATISTICS_TARGET
,
2141 {"from_collapse_limit", PGC_USERSET
, QUERY_TUNING_OTHER
,
2142 gettext_noop("Sets the FROM-list size beyond which subqueries "
2143 "are not collapsed."),
2144 gettext_noop("The planner will merge subqueries into upper "
2145 "queries if the resulting FROM list would have no more than "
2146 "this many items."),
2149 &from_collapse_limit
,
2154 {"join_collapse_limit", PGC_USERSET
, QUERY_TUNING_OTHER
,
2155 gettext_noop("Sets the FROM-list size beyond which JOIN "
2156 "constructs are not flattened."),
2157 gettext_noop("The planner will flatten explicit JOIN "
2158 "constructs into lists of FROM items whenever a "
2159 "list of no more than this many items would result."),
2162 &join_collapse_limit
,
2167 {"geqo_threshold", PGC_USERSET
, QUERY_TUNING_GEQO
,
2168 gettext_noop("Sets the threshold of FROM items beyond which GEQO is used."),
2177 {"geqo_effort", PGC_USERSET
, QUERY_TUNING_GEQO
,
2178 gettext_noop("GEQO: effort is used to set the default for other GEQO parameters."),
2183 DEFAULT_GEQO_EFFORT
, MIN_GEQO_EFFORT
, MAX_GEQO_EFFORT
,
2187 {"geqo_pool_size", PGC_USERSET
, QUERY_TUNING_GEQO
,
2188 gettext_noop("GEQO: number of individuals in the population."),
2189 gettext_noop("Zero selects a suitable default value."),
2197 {"geqo_generations", PGC_USERSET
, QUERY_TUNING_GEQO
,
2198 gettext_noop("GEQO: number of iterations of the algorithm."),
2199 gettext_noop("Zero selects a suitable default value."),
2208 /* This is PGC_SUSET to prevent hiding from log_lock_waits. */
2209 {"deadlock_timeout", PGC_SUSET
, LOCK_MANAGEMENT
,
2210 gettext_noop("Sets the time to wait on a lock before checking for deadlock."),
2220 {"max_standby_archive_delay", PGC_SIGHUP
, REPLICATION_STANDBY
,
2221 gettext_noop("Sets the maximum delay before canceling queries when a hot standby server is processing archived WAL data."),
2225 &max_standby_archive_delay
,
2226 30 * 1000, -1, INT_MAX
,
2231 {"max_standby_streaming_delay", PGC_SIGHUP
, REPLICATION_STANDBY
,
2232 gettext_noop("Sets the maximum delay before canceling queries when a hot standby server is processing streamed WAL data."),
2236 &max_standby_streaming_delay
,
2237 30 * 1000, -1, INT_MAX
,
2242 {"recovery_min_apply_delay", PGC_SIGHUP
, REPLICATION_STANDBY
,
2243 gettext_noop("Sets the minimum delay for applying changes during recovery."),
2247 &recovery_min_apply_delay
,
2253 {"wal_receiver_status_interval", PGC_SIGHUP
, REPLICATION_STANDBY
,
2254 gettext_noop("Sets the maximum interval between WAL receiver status reports to the sending server."),
2258 &wal_receiver_status_interval
,
2259 10, 0, INT_MAX
/ 1000,
2264 {"wal_receiver_timeout", PGC_SIGHUP
, REPLICATION_STANDBY
,
2265 gettext_noop("Sets the maximum wait time to receive data from the sending server."),
2269 &wal_receiver_timeout
,
2270 60 * 1000, 0, INT_MAX
,
2275 {"max_connections", PGC_POSTMASTER
, CONN_AUTH_SETTINGS
,
2276 gettext_noop("Sets the maximum number of concurrent connections."),
2280 100, 1, MAX_BACKENDS
,
2285 /* see max_connections */
2286 {"superuser_reserved_connections", PGC_POSTMASTER
, CONN_AUTH_SETTINGS
,
2287 gettext_noop("Sets the number of connection slots reserved for superusers."),
2290 &SuperuserReservedConnections
,
2296 {"reserved_connections", PGC_POSTMASTER
, CONN_AUTH_SETTINGS
,
2297 gettext_noop("Sets the number of connection slots reserved for roles "
2298 "with privileges of pg_use_reserved_connections."),
2301 &ReservedConnections
,
2307 {"min_dynamic_shared_memory", PGC_POSTMASTER
, RESOURCES_MEM
,
2308 gettext_noop("Amount of dynamic shared memory reserved at startup."),
2312 &min_dynamic_shared_memory
,
2313 0, 0, (int) Min((size_t) INT_MAX
, SIZE_MAX
/ (1024 * 1024)),
2318 * We sometimes multiply the number of shared buffers by two without
2319 * checking for overflow, so we mustn't allow more than INT_MAX / 2.
2322 {"shared_buffers", PGC_POSTMASTER
, RESOURCES_MEM
,
2323 gettext_noop("Sets the number of shared memory buffers used by the server."),
2328 16384, 16, INT_MAX
/ 2,
2333 {"vacuum_buffer_usage_limit", PGC_USERSET
, RESOURCES_MEM
,
2334 gettext_noop("Sets the buffer pool size for VACUUM, ANALYZE, and autovacuum."),
2338 &VacuumBufferUsageLimit
,
2339 2048, 0, MAX_BAS_VAC_RING_SIZE_KB
,
2340 check_vacuum_buffer_usage_limit
, NULL
, NULL
2344 {"shared_memory_size", PGC_INTERNAL
, PRESET_OPTIONS
,
2345 gettext_noop("Shows the size of the server's main shared memory area (rounded up to the nearest MB)."),
2347 GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
| GUC_UNIT_MB
| GUC_RUNTIME_COMPUTED
2349 &shared_memory_size_mb
,
2355 {"shared_memory_size_in_huge_pages", PGC_INTERNAL
, PRESET_OPTIONS
,
2356 gettext_noop("Shows the number of huge pages needed for the main shared memory area."),
2357 gettext_noop("-1 indicates that the value could not be determined."),
2358 GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
| GUC_RUNTIME_COMPUTED
2360 &shared_memory_size_in_huge_pages
,
2366 {"num_os_semaphores", PGC_INTERNAL
, PRESET_OPTIONS
,
2367 gettext_noop("Shows the number of semaphores required for the server."),
2369 GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
| GUC_RUNTIME_COMPUTED
2377 {"commit_timestamp_buffers", PGC_POSTMASTER
, RESOURCES_MEM
,
2378 gettext_noop("Sets the size of the dedicated buffer pool used for the commit timestamp cache."),
2379 gettext_noop("Specify 0 to have this value determined as a fraction of \"shared_buffers\"."),
2382 &commit_timestamp_buffers
,
2383 0, 0, SLRU_MAX_ALLOWED_BUFFERS
,
2384 check_commit_ts_buffers
, NULL
, NULL
2388 {"multixact_member_buffers", PGC_POSTMASTER
, RESOURCES_MEM
,
2389 gettext_noop("Sets the size of the dedicated buffer pool used for the MultiXact member cache."),
2393 &multixact_member_buffers
,
2394 32, 16, SLRU_MAX_ALLOWED_BUFFERS
,
2395 check_multixact_member_buffers
, NULL
, NULL
2399 {"multixact_offset_buffers", PGC_POSTMASTER
, RESOURCES_MEM
,
2400 gettext_noop("Sets the size of the dedicated buffer pool used for the MultiXact offset cache."),
2404 &multixact_offset_buffers
,
2405 16, 16, SLRU_MAX_ALLOWED_BUFFERS
,
2406 check_multixact_offset_buffers
, NULL
, NULL
2410 {"notify_buffers", PGC_POSTMASTER
, RESOURCES_MEM
,
2411 gettext_noop("Sets the size of the dedicated buffer pool used for the LISTEN/NOTIFY message cache."),
2416 16, 16, SLRU_MAX_ALLOWED_BUFFERS
,
2417 check_notify_buffers
, NULL
, NULL
2421 {"serializable_buffers", PGC_POSTMASTER
, RESOURCES_MEM
,
2422 gettext_noop("Sets the size of the dedicated buffer pool used for the serializable transaction cache."),
2426 &serializable_buffers
,
2427 32, 16, SLRU_MAX_ALLOWED_BUFFERS
,
2428 check_serial_buffers
, NULL
, NULL
2432 {"subtransaction_buffers", PGC_POSTMASTER
, RESOURCES_MEM
,
2433 gettext_noop("Sets the size of the dedicated buffer pool used for the subtransaction cache."),
2434 gettext_noop("Specify 0 to have this value determined as a fraction of \"shared_buffers\"."),
2437 &subtransaction_buffers
,
2438 0, 0, SLRU_MAX_ALLOWED_BUFFERS
,
2439 check_subtrans_buffers
, NULL
, NULL
2443 {"transaction_buffers", PGC_POSTMASTER
, RESOURCES_MEM
,
2444 gettext_noop("Sets the size of the dedicated buffer pool used for the transaction status cache."),
2445 gettext_noop("Specify 0 to have this value determined as a fraction of \"shared_buffers\"."),
2448 &transaction_buffers
,
2449 0, 0, SLRU_MAX_ALLOWED_BUFFERS
,
2450 check_transaction_buffers
, NULL
, NULL
2454 {"temp_buffers", PGC_USERSET
, RESOURCES_MEM
,
2455 gettext_noop("Sets the maximum number of temporary buffers used by each session."),
2457 GUC_UNIT_BLOCKS
| GUC_EXPLAIN
2460 1024, 100, INT_MAX
/ 2,
2461 check_temp_buffers
, NULL
, NULL
2465 {"port", PGC_POSTMASTER
, CONN_AUTH_SETTINGS
,
2466 gettext_noop("Sets the TCP port the server listens on."),
2470 DEF_PGPORT
, 1, 65535,
2475 {"unix_socket_permissions", PGC_POSTMASTER
, CONN_AUTH_SETTINGS
,
2476 gettext_noop("Sets the access permissions of the Unix-domain socket."),
2477 gettext_noop("Unix-domain sockets use the usual Unix file system "
2478 "permission set. The parameter value is expected "
2479 "to be a numeric mode specification in the form "
2480 "accepted by the chmod and umask system calls. "
2481 "(To use the customary octal format the number must "
2482 "start with a 0 (zero).)")
2484 &Unix_socket_permissions
,
2486 NULL
, NULL
, show_unix_socket_permissions
2490 {"log_file_mode", PGC_SIGHUP
, LOGGING_WHERE
,
2491 gettext_noop("Sets the file permissions for log files."),
2492 gettext_noop("The parameter value is expected "
2493 "to be a numeric mode specification in the form "
2494 "accepted by the chmod and umask system calls. "
2495 "(To use the customary octal format the number must "
2496 "start with a 0 (zero).)")
2500 NULL
, NULL
, show_log_file_mode
2505 {"data_directory_mode", PGC_INTERNAL
, PRESET_OPTIONS
,
2506 gettext_noop("Shows the mode of the data directory."),
2507 gettext_noop("The parameter value is a numeric mode specification "
2508 "in the form accepted by the chmod and umask system "
2509 "calls. (To use the customary octal format the number "
2510 "must start with a 0 (zero).)"),
2511 GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
| GUC_RUNTIME_COMPUTED
2513 &data_directory_mode
,
2515 NULL
, NULL
, show_data_directory_mode
2519 {"work_mem", PGC_USERSET
, RESOURCES_MEM
,
2520 gettext_noop("Sets the maximum memory to be used for query workspaces."),
2521 gettext_noop("This much memory can be used by each internal "
2522 "sort operation and hash table before switching to "
2523 "temporary disk files."),
2524 GUC_UNIT_KB
| GUC_EXPLAIN
2527 4096, 64, MAX_KILOBYTES
,
2532 * Dynamic shared memory has a higher overhead than local memory contexts,
2533 * so when testing low-memory scenarios that could use shared memory, the
2534 * recommended minimum is 1MB.
2537 {"maintenance_work_mem", PGC_USERSET
, RESOURCES_MEM
,
2538 gettext_noop("Sets the maximum memory to be used for maintenance operations."),
2539 gettext_noop("This includes operations such as VACUUM and CREATE INDEX."),
2542 &maintenance_work_mem
,
2543 65536, 64, MAX_KILOBYTES
,
2548 {"logical_decoding_work_mem", PGC_USERSET
, RESOURCES_MEM
,
2549 gettext_noop("Sets the maximum memory to be used for logical decoding."),
2550 gettext_noop("This much memory can be used by each internal "
2551 "reorder buffer before spilling to disk."),
2554 &logical_decoding_work_mem
,
2555 65536, 64, MAX_KILOBYTES
,
2560 * We use the hopefully-safely-small value of 100kB as the compiled-in
2561 * default for max_stack_depth. InitializeGUCOptions will increase it if
2562 * possible, depending on the actual platform-specific stack limit.
2565 {"max_stack_depth", PGC_SUSET
, RESOURCES_MEM
,
2566 gettext_noop("Sets the maximum stack depth, in kilobytes."),
2571 100, 100, MAX_KILOBYTES
,
2572 check_max_stack_depth
, assign_max_stack_depth
, NULL
2576 {"temp_file_limit", PGC_SUSET
, RESOURCES_DISK
,
2577 gettext_noop("Limits the total size of all temporary files used by each process."),
2578 gettext_noop("-1 means no limit."),
2587 {"vacuum_cost_page_hit", PGC_USERSET
, VACUUM_COST_DELAY
,
2588 gettext_noop("Vacuum cost for a page found in the buffer cache."),
2597 {"vacuum_cost_page_miss", PGC_USERSET
, VACUUM_COST_DELAY
,
2598 gettext_noop("Vacuum cost for a page not found in the buffer cache."),
2601 &VacuumCostPageMiss
,
2607 {"vacuum_cost_page_dirty", PGC_USERSET
, VACUUM_COST_DELAY
,
2608 gettext_noop("Vacuum cost for a page dirtied by vacuum."),
2611 &VacuumCostPageDirty
,
2617 {"vacuum_cost_limit", PGC_USERSET
, VACUUM_COST_DELAY
,
2618 gettext_noop("Vacuum cost amount available before napping."),
2627 {"autovacuum_vacuum_cost_limit", PGC_SIGHUP
, VACUUM_AUTOVACUUM
,
2628 gettext_noop("Vacuum cost amount available before napping, for autovacuum."),
2631 &autovacuum_vac_cost_limit
,
2637 {"max_files_per_process", PGC_POSTMASTER
, RESOURCES_KERNEL
,
2638 gettext_noop("Sets the maximum number of simultaneously open files for each server process."),
2641 &max_files_per_process
,
2647 * See also CheckRequiredParameterValues() if this parameter changes
2650 {"max_prepared_transactions", PGC_POSTMASTER
, RESOURCES_MEM
,
2651 gettext_noop("Sets the maximum number of simultaneously prepared transactions."),
2654 &max_prepared_xacts
,
2661 {"trace_lock_oidmin", PGC_SUSET
, DEVELOPER_OPTIONS
,
2662 gettext_noop("Sets the minimum OID of tables for tracking locks."),
2663 gettext_noop("Is used to avoid output on system tables."),
2667 FirstNormalObjectId
, 0, INT_MAX
,
2671 {"trace_lock_table", PGC_SUSET
, DEVELOPER_OPTIONS
,
2672 gettext_noop("Sets the OID of the table with unconditionally lock tracing."),
2683 {"statement_timeout", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
2684 gettext_noop("Sets the maximum allowed duration of any statement."),
2685 gettext_noop("A value of 0 turns off the timeout."),
2694 {"lock_timeout", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
2695 gettext_noop("Sets the maximum allowed duration of any wait for a lock."),
2696 gettext_noop("A value of 0 turns off the timeout."),
2705 {"idle_in_transaction_session_timeout", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
2706 gettext_noop("Sets the maximum allowed idle time between queries, when in a transaction."),
2707 gettext_noop("A value of 0 turns off the timeout."),
2710 &IdleInTransactionSessionTimeout
,
2716 {"transaction_timeout", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
2717 gettext_noop("Sets the maximum allowed duration of any transaction within a session (not a prepared transaction)."),
2718 gettext_noop("A value of 0 turns off the timeout."),
2721 &TransactionTimeout
,
2723 NULL
, assign_transaction_timeout
, NULL
2727 {"idle_session_timeout", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
2728 gettext_noop("Sets the maximum allowed idle time between queries, when not in a transaction."),
2729 gettext_noop("A value of 0 turns off the timeout."),
2732 &IdleSessionTimeout
,
2738 {"vacuum_freeze_min_age", PGC_USERSET
, VACUUM_FREEZING
,
2739 gettext_noop("Minimum age at which VACUUM should freeze a table row."),
2742 &vacuum_freeze_min_age
,
2743 50000000, 0, 1000000000,
2748 {"vacuum_freeze_table_age", PGC_USERSET
, VACUUM_FREEZING
,
2749 gettext_noop("Age at which VACUUM should scan whole table to freeze tuples."),
2752 &vacuum_freeze_table_age
,
2753 150000000, 0, 2000000000,
2758 {"vacuum_multixact_freeze_min_age", PGC_USERSET
, VACUUM_FREEZING
,
2759 gettext_noop("Minimum age at which VACUUM should freeze a MultiXactId in a table row."),
2762 &vacuum_multixact_freeze_min_age
,
2763 5000000, 0, 1000000000,
2768 {"vacuum_multixact_freeze_table_age", PGC_USERSET
, VACUUM_FREEZING
,
2769 gettext_noop("Multixact age at which VACUUM should scan whole table to freeze tuples."),
2772 &vacuum_multixact_freeze_table_age
,
2773 150000000, 0, 2000000000,
2778 {"vacuum_failsafe_age", PGC_USERSET
, VACUUM_FREEZING
,
2779 gettext_noop("Age at which VACUUM should trigger failsafe to avoid a wraparound outage."),
2782 &vacuum_failsafe_age
,
2783 1600000000, 0, 2100000000,
2787 {"vacuum_multixact_failsafe_age", PGC_USERSET
, VACUUM_FREEZING
,
2788 gettext_noop("Multixact age at which VACUUM should trigger failsafe to avoid a wraparound outage."),
2791 &vacuum_multixact_failsafe_age
,
2792 1600000000, 0, 2100000000,
2797 * See also CheckRequiredParameterValues() if this parameter changes
2800 {"max_locks_per_transaction", PGC_POSTMASTER
, LOCK_MANAGEMENT
,
2801 gettext_noop("Sets the maximum number of locks per transaction."),
2802 gettext_noop("The shared lock table is sized on the assumption that at most "
2803 "\"max_locks_per_transaction\" objects per server process or prepared "
2804 "transaction will need to be locked at any one time.")
2806 &max_locks_per_xact
,
2812 {"max_pred_locks_per_transaction", PGC_POSTMASTER
, LOCK_MANAGEMENT
,
2813 gettext_noop("Sets the maximum number of predicate locks per transaction."),
2814 gettext_noop("The shared predicate lock table is sized on the assumption that "
2815 "at most \"max_pred_locks_per_transaction\" objects per server process "
2816 "or prepared transaction will need to be locked at any one time.")
2818 &max_predicate_locks_per_xact
,
2824 {"max_pred_locks_per_relation", PGC_SIGHUP
, LOCK_MANAGEMENT
,
2825 gettext_noop("Sets the maximum number of predicate-locked pages and tuples per relation."),
2826 gettext_noop("If more than this total of pages and tuples in the same relation are locked "
2827 "by a connection, those locks are replaced by a relation-level lock.")
2829 &max_predicate_locks_per_relation
,
2830 -2, INT_MIN
, INT_MAX
,
2835 {"max_pred_locks_per_page", PGC_SIGHUP
, LOCK_MANAGEMENT
,
2836 gettext_noop("Sets the maximum number of predicate-locked tuples per page."),
2837 gettext_noop("If more than this number of tuples on the same page are locked "
2838 "by a connection, those locks are replaced by a page-level lock.")
2840 &max_predicate_locks_per_page
,
2846 {"authentication_timeout", PGC_SIGHUP
, CONN_AUTH_AUTH
,
2847 gettext_noop("Sets the maximum allowed time to complete client authentication."),
2851 &AuthenticationTimeout
,
2857 /* Not for general use */
2858 {"pre_auth_delay", PGC_SIGHUP
, DEVELOPER_OPTIONS
,
2859 gettext_noop("Sets the amount of time to wait before "
2860 "authentication on connection startup."),
2861 gettext_noop("This allows attaching a debugger to the process."),
2862 GUC_NOT_IN_SAMPLE
| GUC_UNIT_S
2870 {"max_notify_queue_pages", PGC_POSTMASTER
, RESOURCES_DISK
,
2871 gettext_noop("Sets the maximum number of allocated pages for NOTIFY / LISTEN queue."),
2874 &max_notify_queue_pages
,
2875 1048576, 64, INT_MAX
,
2880 {"wal_decode_buffer_size", PGC_POSTMASTER
, WAL_RECOVERY
,
2881 gettext_noop("Buffer size for reading ahead in the WAL during recovery."),
2882 gettext_noop("Maximum distance to read ahead in the WAL to prefetch referenced data blocks."),
2885 &wal_decode_buffer_size
,
2886 512 * 1024, 64 * 1024, MaxAllocSize
,
2891 {"wal_keep_size", PGC_SIGHUP
, REPLICATION_SENDING
,
2892 gettext_noop("Sets the size of WAL files held for standby servers."),
2897 0, 0, MAX_KILOBYTES
,
2902 {"min_wal_size", PGC_SIGHUP
, WAL_CHECKPOINTS
,
2903 gettext_noop("Sets the minimum size to shrink the WAL to."),
2908 DEFAULT_MIN_WAL_SEGS
* (DEFAULT_XLOG_SEG_SIZE
/ (1024 * 1024)),
2914 {"max_wal_size", PGC_SIGHUP
, WAL_CHECKPOINTS
,
2915 gettext_noop("Sets the WAL size that triggers a checkpoint."),
2920 DEFAULT_MAX_WAL_SEGS
* (DEFAULT_XLOG_SEG_SIZE
/ (1024 * 1024)),
2922 NULL
, assign_max_wal_size
, NULL
2926 {"checkpoint_timeout", PGC_SIGHUP
, WAL_CHECKPOINTS
,
2927 gettext_noop("Sets the maximum time between automatic WAL checkpoints."),
2937 {"checkpoint_warning", PGC_SIGHUP
, WAL_CHECKPOINTS
,
2938 gettext_noop("Sets the maximum time before warning if checkpoints "
2939 "triggered by WAL volume happen too frequently."),
2940 gettext_noop("Write a message to the server log if checkpoints "
2941 "caused by the filling of WAL segment files happen more "
2942 "frequently than this amount of time. "
2943 "Zero turns off the warning."),
2952 {"checkpoint_flush_after", PGC_SIGHUP
, WAL_CHECKPOINTS
,
2953 gettext_noop("Number of pages after which previously performed writes are flushed to disk."),
2957 &checkpoint_flush_after
,
2958 DEFAULT_CHECKPOINT_FLUSH_AFTER
, 0, WRITEBACK_MAX_PENDING_FLUSHES
,
2963 {"wal_buffers", PGC_POSTMASTER
, WAL_SETTINGS
,
2964 gettext_noop("Sets the number of disk-page buffers in shared memory for WAL."),
2965 gettext_noop("Specify -1 to have this value determined as a fraction of \"shared_buffers\"."),
2969 -1, -1, (INT_MAX
/ XLOG_BLCKSZ
),
2970 check_wal_buffers
, NULL
, NULL
2974 {"wal_writer_delay", PGC_SIGHUP
, WAL_SETTINGS
,
2975 gettext_noop("Time between WAL flushes performed in the WAL writer."),
2985 {"wal_writer_flush_after", PGC_SIGHUP
, WAL_SETTINGS
,
2986 gettext_noop("Amount of WAL written out by WAL writer that triggers a flush."),
2990 &WalWriterFlushAfter
,
2991 DEFAULT_WAL_WRITER_FLUSH_AFTER
, 0, INT_MAX
,
2996 {"wal_skip_threshold", PGC_USERSET
, WAL_SETTINGS
,
2997 gettext_noop("Minimum size of new file to fsync instead of writing WAL."),
3001 &wal_skip_threshold
,
3002 2048, 0, MAX_KILOBYTES
,
3007 {"max_wal_senders", PGC_POSTMASTER
, REPLICATION_SENDING
,
3008 gettext_noop("Sets the maximum number of simultaneously running WAL sender processes."),
3012 10, 0, MAX_BACKENDS
,
3017 /* see max_wal_senders */
3018 {"max_replication_slots", PGC_POSTMASTER
, REPLICATION_SENDING
,
3019 gettext_noop("Sets the maximum number of simultaneously defined replication slots."),
3022 &max_replication_slots
,
3023 10, 0, MAX_BACKENDS
/* XXX? */ ,
3028 {"max_slot_wal_keep_size", PGC_SIGHUP
, REPLICATION_SENDING
,
3029 gettext_noop("Sets the maximum WAL size that can be reserved by replication slots."),
3030 gettext_noop("Replication slots will be marked as failed, and segments released "
3031 "for deletion or recycling, if this much space is occupied by WAL "
3035 &max_slot_wal_keep_size_mb
,
3036 -1, -1, MAX_KILOBYTES
,
3037 check_max_slot_wal_keep_size
, NULL
, NULL
3041 {"wal_sender_timeout", PGC_USERSET
, REPLICATION_SENDING
,
3042 gettext_noop("Sets the maximum time to wait for WAL replication."),
3046 &wal_sender_timeout
,
3047 60 * 1000, 0, INT_MAX
,
3052 {"commit_delay", PGC_SUSET
, WAL_SETTINGS
,
3053 gettext_noop("Sets the delay in microseconds between transaction commit and "
3054 "flushing WAL to disk."),
3056 /* we have no microseconds designation, so can't supply units here */
3064 {"commit_siblings", PGC_USERSET
, WAL_SETTINGS
,
3065 gettext_noop("Sets the minimum number of concurrent open transactions "
3066 "required before performing \"commit_delay\"."),
3075 {"extra_float_digits", PGC_USERSET
, CLIENT_CONN_LOCALE
,
3076 gettext_noop("Sets the number of digits displayed for floating-point values."),
3077 gettext_noop("This affects real, double precision, and geometric data types. "
3078 "A zero or negative parameter value is added to the standard "
3079 "number of digits (FLT_DIG or DBL_DIG as appropriate). "
3080 "Any value greater than zero selects precise output mode.")
3082 &extra_float_digits
,
3088 {"log_min_duration_sample", PGC_SUSET
, LOGGING_WHEN
,
3089 gettext_noop("Sets the minimum execution time above which "
3090 "a sample of statements will be logged."
3091 " Sampling is determined by \"log_statement_sample_rate\"."),
3092 gettext_noop("Zero logs a sample of all queries. -1 turns this feature off."),
3095 &log_min_duration_sample
,
3101 {"log_min_duration_statement", PGC_SUSET
, LOGGING_WHEN
,
3102 gettext_noop("Sets the minimum execution time above which "
3103 "all statements will be logged."),
3104 gettext_noop("Zero prints all queries. -1 turns this feature off."),
3107 &log_min_duration_statement
,
3113 {"log_autovacuum_min_duration", PGC_SIGHUP
, LOGGING_WHAT
,
3114 gettext_noop("Sets the minimum execution time above which "
3115 "autovacuum actions will be logged."),
3116 gettext_noop("Zero prints all actions. -1 turns autovacuum logging off."),
3119 &Log_autovacuum_min_duration
,
3120 600000, -1, INT_MAX
,
3125 {"log_parameter_max_length", PGC_SUSET
, LOGGING_WHAT
,
3126 gettext_noop("Sets the maximum length in bytes of data logged for bind "
3127 "parameter values when logging statements."),
3128 gettext_noop("-1 to print values in full."),
3131 &log_parameter_max_length
,
3132 -1, -1, INT_MAX
/ 2,
3137 {"log_parameter_max_length_on_error", PGC_USERSET
, LOGGING_WHAT
,
3138 gettext_noop("Sets the maximum length in bytes of data logged for bind "
3139 "parameter values when logging statements, on error."),
3140 gettext_noop("-1 to print values in full."),
3143 &log_parameter_max_length_on_error
,
3149 {"bgwriter_delay", PGC_SIGHUP
, RESOURCES_BGWRITER
,
3150 gettext_noop("Background writer sleep time between rounds."),
3160 {"bgwriter_lru_maxpages", PGC_SIGHUP
, RESOURCES_BGWRITER
,
3161 gettext_noop("Background writer maximum number of LRU pages to flush per round."),
3164 &bgwriter_lru_maxpages
,
3165 100, 0, INT_MAX
/ 2, /* Same upper limit as shared_buffers */
3170 {"bgwriter_flush_after", PGC_SIGHUP
, RESOURCES_BGWRITER
,
3171 gettext_noop("Number of pages after which previously performed writes are flushed to disk."),
3175 &bgwriter_flush_after
,
3176 DEFAULT_BGWRITER_FLUSH_AFTER
, 0, WRITEBACK_MAX_PENDING_FLUSHES
,
3181 {"effective_io_concurrency",
3183 RESOURCES_ASYNCHRONOUS
,
3184 gettext_noop("Number of simultaneous requests that can be handled efficiently by the disk subsystem."),
3188 &effective_io_concurrency
,
3189 DEFAULT_EFFECTIVE_IO_CONCURRENCY
,
3190 0, MAX_IO_CONCURRENCY
,
3191 check_effective_io_concurrency
, NULL
, NULL
3195 {"maintenance_io_concurrency",
3197 RESOURCES_ASYNCHRONOUS
,
3198 gettext_noop("A variant of \"effective_io_concurrency\" that is used for maintenance work."),
3202 &maintenance_io_concurrency
,
3203 DEFAULT_MAINTENANCE_IO_CONCURRENCY
,
3204 0, MAX_IO_CONCURRENCY
,
3205 check_maintenance_io_concurrency
, assign_maintenance_io_concurrency
,
3210 {"io_combine_limit",
3212 RESOURCES_ASYNCHRONOUS
,
3213 gettext_noop("Limit on the size of data reads and writes."),
3218 DEFAULT_IO_COMBINE_LIMIT
,
3219 1, MAX_IO_COMBINE_LIMIT
,
3224 {"backend_flush_after", PGC_USERSET
, RESOURCES_ASYNCHRONOUS
,
3225 gettext_noop("Number of pages after which previously performed writes are flushed to disk."),
3229 &backend_flush_after
,
3230 DEFAULT_BACKEND_FLUSH_AFTER
, 0, WRITEBACK_MAX_PENDING_FLUSHES
,
3235 {"max_worker_processes",
3237 RESOURCES_ASYNCHRONOUS
,
3238 gettext_noop("Maximum number of concurrent worker processes."),
3241 &max_worker_processes
,
3247 {"max_logical_replication_workers",
3249 REPLICATION_SUBSCRIBERS
,
3250 gettext_noop("Maximum number of logical replication worker processes."),
3253 &max_logical_replication_workers
,
3259 {"max_sync_workers_per_subscription",
3261 REPLICATION_SUBSCRIBERS
,
3262 gettext_noop("Maximum number of table synchronization workers per subscription."),
3265 &max_sync_workers_per_subscription
,
3271 {"max_parallel_apply_workers_per_subscription",
3273 REPLICATION_SUBSCRIBERS
,
3274 gettext_noop("Maximum number of parallel apply workers per subscription."),
3277 &max_parallel_apply_workers_per_subscription
,
3278 2, 0, MAX_PARALLEL_WORKER_LIMIT
,
3283 {"log_rotation_age", PGC_SIGHUP
, LOGGING_WHERE
,
3284 gettext_noop("Sets the amount of time to wait before forcing "
3285 "log file rotation."),
3290 HOURS_PER_DAY
* MINS_PER_HOUR
, 0, INT_MAX
/ SECS_PER_MINUTE
,
3295 {"log_rotation_size", PGC_SIGHUP
, LOGGING_WHERE
,
3296 gettext_noop("Sets the maximum size a log file can reach before "
3302 10 * 1024, 0, INT_MAX
/ 1024,
3307 {"max_function_args", PGC_INTERNAL
, PRESET_OPTIONS
,
3308 gettext_noop("Shows the maximum number of function arguments."),
3310 GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
3313 FUNC_MAX_ARGS
, FUNC_MAX_ARGS
, FUNC_MAX_ARGS
,
3318 {"max_index_keys", PGC_INTERNAL
, PRESET_OPTIONS
,
3319 gettext_noop("Shows the maximum number of index keys."),
3321 GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
3324 INDEX_MAX_KEYS
, INDEX_MAX_KEYS
, INDEX_MAX_KEYS
,
3329 {"max_identifier_length", PGC_INTERNAL
, PRESET_OPTIONS
,
3330 gettext_noop("Shows the maximum identifier length."),
3332 GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
3334 &max_identifier_length
,
3335 NAMEDATALEN
- 1, NAMEDATALEN
- 1, NAMEDATALEN
- 1,
3340 {"block_size", PGC_INTERNAL
, PRESET_OPTIONS
,
3341 gettext_noop("Shows the size of a disk block."),
3343 GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
3346 BLCKSZ
, BLCKSZ
, BLCKSZ
,
3351 {"segment_size", PGC_INTERNAL
, PRESET_OPTIONS
,
3352 gettext_noop("Shows the number of pages per disk file."),
3354 GUC_UNIT_BLOCKS
| GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
3357 RELSEG_SIZE
, RELSEG_SIZE
, RELSEG_SIZE
,
3362 {"wal_block_size", PGC_INTERNAL
, PRESET_OPTIONS
,
3363 gettext_noop("Shows the block size in the write ahead log."),
3365 GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
3368 XLOG_BLCKSZ
, XLOG_BLCKSZ
, XLOG_BLCKSZ
,
3373 {"wal_retrieve_retry_interval", PGC_SIGHUP
, REPLICATION_STANDBY
,
3374 gettext_noop("Sets the time to wait before retrying to retrieve WAL "
3375 "after a failed attempt."),
3379 &wal_retrieve_retry_interval
,
3385 {"wal_segment_size", PGC_INTERNAL
, PRESET_OPTIONS
,
3386 gettext_noop("Shows the size of write ahead log segments."),
3388 GUC_UNIT_BYTE
| GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
| GUC_RUNTIME_COMPUTED
3391 DEFAULT_XLOG_SEG_SIZE
,
3394 check_wal_segment_size
, NULL
, NULL
3398 {"wal_summary_keep_time", PGC_SIGHUP
, WAL_SUMMARIZATION
,
3399 gettext_noop("Time for which WAL summary files should be kept."),
3403 &wal_summary_keep_time
,
3404 10 * HOURS_PER_DAY
* MINS_PER_HOUR
, /* 10 days */
3406 INT_MAX
/ SECS_PER_MINUTE
,
3411 {"autovacuum_naptime", PGC_SIGHUP
, VACUUM_AUTOVACUUM
,
3412 gettext_noop("Time to sleep between autovacuum runs."),
3416 &autovacuum_naptime
,
3417 60, 1, INT_MAX
/ 1000,
3421 {"autovacuum_vacuum_threshold", PGC_SIGHUP
, VACUUM_AUTOVACUUM
,
3422 gettext_noop("Minimum number of tuple updates or deletes prior to vacuum."),
3425 &autovacuum_vac_thresh
,
3430 {"autovacuum_vacuum_insert_threshold", PGC_SIGHUP
, VACUUM_AUTOVACUUM
,
3431 gettext_noop("Minimum number of tuple inserts prior to vacuum, or -1 to disable insert vacuums."),
3434 &autovacuum_vac_ins_thresh
,
3439 {"autovacuum_analyze_threshold", PGC_SIGHUP
, VACUUM_AUTOVACUUM
,
3440 gettext_noop("Minimum number of tuple inserts, updates, or deletes prior to analyze."),
3443 &autovacuum_anl_thresh
,
3448 /* see varsup.c for why this is PGC_POSTMASTER not PGC_SIGHUP */
3449 {"autovacuum_freeze_max_age", PGC_POSTMASTER
, VACUUM_AUTOVACUUM
,
3450 gettext_noop("Age at which to autovacuum a table to prevent transaction ID wraparound."),
3453 &autovacuum_freeze_max_age
,
3455 /* see vacuum_failsafe_age if you change the upper-limit value. */
3456 200000000, 100000, 2000000000,
3460 /* see multixact.c for why this is PGC_POSTMASTER not PGC_SIGHUP */
3461 {"autovacuum_multixact_freeze_max_age", PGC_POSTMASTER
, VACUUM_AUTOVACUUM
,
3462 gettext_noop("Multixact age at which to autovacuum a table to prevent multixact wraparound."),
3465 &autovacuum_multixact_freeze_max_age
,
3466 400000000, 10000, 2000000000,
3470 /* see max_connections */
3471 {"autovacuum_worker_slots", PGC_POSTMASTER
, VACUUM_AUTOVACUUM
,
3472 gettext_noop("Sets the number of backend slots to allocate for autovacuum workers."),
3475 &autovacuum_worker_slots
,
3476 16, 1, MAX_BACKENDS
,
3480 {"autovacuum_max_workers", PGC_SIGHUP
, VACUUM_AUTOVACUUM
,
3481 gettext_noop("Sets the maximum number of simultaneously running autovacuum worker processes."),
3484 &autovacuum_max_workers
,
3490 {"max_parallel_maintenance_workers", PGC_USERSET
, RESOURCES_ASYNCHRONOUS
,
3491 gettext_noop("Sets the maximum number of parallel processes per maintenance operation."),
3494 &max_parallel_maintenance_workers
,
3495 2, 0, MAX_PARALLEL_WORKER_LIMIT
,
3500 {"max_parallel_workers_per_gather", PGC_USERSET
, RESOURCES_ASYNCHRONOUS
,
3501 gettext_noop("Sets the maximum number of parallel processes per executor node."),
3505 &max_parallel_workers_per_gather
,
3506 2, 0, MAX_PARALLEL_WORKER_LIMIT
,
3511 {"max_parallel_workers", PGC_USERSET
, RESOURCES_ASYNCHRONOUS
,
3512 gettext_noop("Sets the maximum number of parallel workers that can be active at one time."),
3516 &max_parallel_workers
,
3517 8, 0, MAX_PARALLEL_WORKER_LIMIT
,
3522 {"autovacuum_work_mem", PGC_SIGHUP
, RESOURCES_MEM
,
3523 gettext_noop("Sets the maximum memory to be used by each autovacuum worker process."),
3527 &autovacuum_work_mem
,
3528 -1, -1, MAX_KILOBYTES
,
3529 check_autovacuum_work_mem
, NULL
, NULL
3533 {"tcp_keepalives_idle", PGC_USERSET
, CONN_AUTH_TCP
,
3534 gettext_noop("Time between issuing TCP keepalives."),
3535 gettext_noop("A value of 0 uses the system default."),
3538 &tcp_keepalives_idle
,
3540 NULL
, assign_tcp_keepalives_idle
, show_tcp_keepalives_idle
3544 {"tcp_keepalives_interval", PGC_USERSET
, CONN_AUTH_TCP
,
3545 gettext_noop("Time between TCP keepalive retransmits."),
3546 gettext_noop("A value of 0 uses the system default."),
3549 &tcp_keepalives_interval
,
3551 NULL
, assign_tcp_keepalives_interval
, show_tcp_keepalives_interval
3555 {"ssl_renegotiation_limit", PGC_USERSET
, COMPAT_OPTIONS_PREVIOUS
,
3556 gettext_noop("SSL renegotiation is no longer supported; this can only be 0."),
3558 GUC_NO_SHOW_ALL
| GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
,
3560 &ssl_renegotiation_limit
,
3566 {"tcp_keepalives_count", PGC_USERSET
, CONN_AUTH_TCP
,
3567 gettext_noop("Maximum number of TCP keepalive retransmits."),
3568 gettext_noop("Number of consecutive keepalive retransmits that can be "
3569 "lost before a connection is considered dead. A value of 0 uses the "
3572 &tcp_keepalives_count
,
3574 NULL
, assign_tcp_keepalives_count
, show_tcp_keepalives_count
3578 {"gin_fuzzy_search_limit", PGC_USERSET
, CLIENT_CONN_OTHER
,
3579 gettext_noop("Sets the maximum allowed result for exact search by GIN."),
3583 &GinFuzzySearchLimit
,
3589 {"effective_cache_size", PGC_USERSET
, QUERY_TUNING_COST
,
3590 gettext_noop("Sets the planner's assumption about the total size of the data caches."),
3591 gettext_noop("That is, the total size of the caches (kernel cache and shared buffers) used for PostgreSQL data files. "
3592 "This is measured in disk pages, which are normally 8 kB each."),
3593 GUC_UNIT_BLOCKS
| GUC_EXPLAIN
,
3595 &effective_cache_size
,
3596 DEFAULT_EFFECTIVE_CACHE_SIZE
, 1, INT_MAX
,
3601 {"min_parallel_table_scan_size", PGC_USERSET
, QUERY_TUNING_COST
,
3602 gettext_noop("Sets the minimum amount of table data for a parallel scan."),
3603 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."),
3604 GUC_UNIT_BLOCKS
| GUC_EXPLAIN
,
3606 &min_parallel_table_scan_size
,
3607 (8 * 1024 * 1024) / BLCKSZ
, 0, INT_MAX
/ 3,
3612 {"min_parallel_index_scan_size", PGC_USERSET
, QUERY_TUNING_COST
,
3613 gettext_noop("Sets the minimum amount of index data for a parallel scan."),
3614 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."),
3615 GUC_UNIT_BLOCKS
| GUC_EXPLAIN
,
3617 &min_parallel_index_scan_size
,
3618 (512 * 1024) / BLCKSZ
, 0, INT_MAX
/ 3,
3623 /* Can't be set in postgresql.conf */
3624 {"server_version_num", PGC_INTERNAL
, PRESET_OPTIONS
,
3625 gettext_noop("Shows the server version as an integer."),
3627 GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
3629 &server_version_num
,
3630 PG_VERSION_NUM
, PG_VERSION_NUM
, PG_VERSION_NUM
,
3635 {"log_temp_files", PGC_SUSET
, LOGGING_WHAT
,
3636 gettext_noop("Log the use of temporary files larger than this number of kilobytes."),
3637 gettext_noop("Zero logs all files. The default is -1 (turning this feature off)."),
3646 {"track_activity_query_size", PGC_POSTMASTER
, STATS_CUMULATIVE
,
3647 gettext_noop("Sets the size reserved for pg_stat_activity.query, in bytes."),
3651 &pgstat_track_activity_query_size
,
3657 {"gin_pending_list_limit", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
3658 gettext_noop("Sets the maximum size of the pending list for GIN index."),
3662 &gin_pending_list_limit
,
3663 4096, 64, MAX_KILOBYTES
,
3668 {"tcp_user_timeout", PGC_USERSET
, CONN_AUTH_TCP
,
3669 gettext_noop("TCP user timeout."),
3670 gettext_noop("A value of 0 uses the system default."),
3675 NULL
, assign_tcp_user_timeout
, show_tcp_user_timeout
3679 {"huge_page_size", PGC_POSTMASTER
, RESOURCES_MEM
,
3680 gettext_noop("The size of huge page that should be requested."),
3686 check_huge_page_size
, NULL
, NULL
3690 {"debug_discard_caches", PGC_SUSET
, DEVELOPER_OPTIONS
,
3691 gettext_noop("Aggressively flush system caches for debugging purposes."),
3695 &debug_discard_caches
,
3696 #ifdef DISCARD_CACHES_ENABLED
3697 /* Set default based on older compile-time-only cache clobber macros */
3698 #if defined(CLOBBER_CACHE_RECURSIVELY)
3700 #elif defined(CLOBBER_CACHE_ALWAYS)
3706 #else /* not DISCARD_CACHES_ENABLED */
3708 #endif /* not DISCARD_CACHES_ENABLED */
3713 {"client_connection_check_interval", PGC_USERSET
, CONN_AUTH_TCP
,
3714 gettext_noop("Sets the time interval between checks for disconnection while running queries."),
3718 &client_connection_check_interval
,
3720 check_client_connection_check_interval
, NULL
, NULL
3724 {"log_startup_progress_interval", PGC_SIGHUP
, LOGGING_WHEN
,
3725 gettext_noop("Time between progress updates for "
3726 "long-running startup operations."),
3727 gettext_noop("0 turns this feature off."),
3730 &log_startup_progress_interval
,
3736 {"scram_iterations", PGC_USERSET
, CONN_AUTH_AUTH
,
3737 gettext_noop("Sets the iteration count for SCRAM secret generation."),
3741 &scram_sha_256_iterations
,
3742 SCRAM_SHA_256_DEFAULT_ITERATIONS
, 1, INT_MAX
,
3746 /* End-of-list marker */
3748 {NULL
, 0, 0, NULL
, NULL
}, NULL
, 0, 0, 0, NULL
, NULL
, NULL
3753 struct config_real ConfigureNamesReal
[] =
3756 {"seq_page_cost", PGC_USERSET
, QUERY_TUNING_COST
,
3757 gettext_noop("Sets the planner's estimate of the cost of a "
3758 "sequentially fetched disk page."),
3763 DEFAULT_SEQ_PAGE_COST
, 0, DBL_MAX
,
3767 {"random_page_cost", PGC_USERSET
, QUERY_TUNING_COST
,
3768 gettext_noop("Sets the planner's estimate of the cost of a "
3769 "nonsequentially fetched disk page."),
3774 DEFAULT_RANDOM_PAGE_COST
, 0, DBL_MAX
,
3778 {"cpu_tuple_cost", PGC_USERSET
, QUERY_TUNING_COST
,
3779 gettext_noop("Sets the planner's estimate of the cost of "
3780 "processing each tuple (row)."),
3785 DEFAULT_CPU_TUPLE_COST
, 0, DBL_MAX
,
3789 {"cpu_index_tuple_cost", PGC_USERSET
, QUERY_TUNING_COST
,
3790 gettext_noop("Sets the planner's estimate of the cost of "
3791 "processing each index entry during an index scan."),
3795 &cpu_index_tuple_cost
,
3796 DEFAULT_CPU_INDEX_TUPLE_COST
, 0, DBL_MAX
,
3800 {"cpu_operator_cost", PGC_USERSET
, QUERY_TUNING_COST
,
3801 gettext_noop("Sets the planner's estimate of the cost of "
3802 "processing each operator or function call."),
3807 DEFAULT_CPU_OPERATOR_COST
, 0, DBL_MAX
,
3811 {"parallel_tuple_cost", PGC_USERSET
, QUERY_TUNING_COST
,
3812 gettext_noop("Sets the planner's estimate of the cost of "
3813 "passing each tuple (row) from worker to leader backend."),
3817 ¶llel_tuple_cost
,
3818 DEFAULT_PARALLEL_TUPLE_COST
, 0, DBL_MAX
,
3822 {"parallel_setup_cost", PGC_USERSET
, QUERY_TUNING_COST
,
3823 gettext_noop("Sets the planner's estimate of the cost of "
3824 "starting up worker processes for parallel query."),
3828 ¶llel_setup_cost
,
3829 DEFAULT_PARALLEL_SETUP_COST
, 0, DBL_MAX
,
3834 {"jit_above_cost", PGC_USERSET
, QUERY_TUNING_COST
,
3835 gettext_noop("Perform JIT compilation if query is more expensive."),
3836 gettext_noop("-1 disables JIT compilation."),
3840 100000, -1, DBL_MAX
,
3845 {"jit_optimize_above_cost", PGC_USERSET
, QUERY_TUNING_COST
,
3846 gettext_noop("Optimize JIT-compiled functions if query is more expensive."),
3847 gettext_noop("-1 disables optimization."),
3850 &jit_optimize_above_cost
,
3851 500000, -1, DBL_MAX
,
3856 {"jit_inline_above_cost", PGC_USERSET
, QUERY_TUNING_COST
,
3857 gettext_noop("Perform JIT inlining if query is more expensive."),
3858 gettext_noop("-1 disables inlining."),
3861 &jit_inline_above_cost
,
3862 500000, -1, DBL_MAX
,
3867 {"cursor_tuple_fraction", PGC_USERSET
, QUERY_TUNING_OTHER
,
3868 gettext_noop("Sets the planner's estimate of the fraction of "
3869 "a cursor's rows that will be retrieved."),
3873 &cursor_tuple_fraction
,
3874 DEFAULT_CURSOR_TUPLE_FRACTION
, 0.0, 1.0,
3879 {"recursive_worktable_factor", PGC_USERSET
, QUERY_TUNING_OTHER
,
3880 gettext_noop("Sets the planner's estimate of the average size "
3881 "of a recursive query's working table."),
3885 &recursive_worktable_factor
,
3886 DEFAULT_RECURSIVE_WORKTABLE_FACTOR
, 0.001, 1000000.0,
3891 {"geqo_selection_bias", PGC_USERSET
, QUERY_TUNING_GEQO
,
3892 gettext_noop("GEQO: selective pressure within the population."),
3896 &Geqo_selection_bias
,
3897 DEFAULT_GEQO_SELECTION_BIAS
,
3898 MIN_GEQO_SELECTION_BIAS
, MAX_GEQO_SELECTION_BIAS
,
3902 {"geqo_seed", PGC_USERSET
, QUERY_TUNING_GEQO
,
3903 gettext_noop("GEQO: seed for random path selection."),
3913 {"hash_mem_multiplier", PGC_USERSET
, RESOURCES_MEM
,
3914 gettext_noop("Multiple of \"work_mem\" to use for hash tables."),
3918 &hash_mem_multiplier
,
3924 {"bgwriter_lru_multiplier", PGC_SIGHUP
, RESOURCES_BGWRITER
,
3925 gettext_noop("Multiple of the average buffer usage to free per round."),
3928 &bgwriter_lru_multiplier
,
3934 {"seed", PGC_USERSET
, UNGROUPED
,
3935 gettext_noop("Sets the seed for random-number generation."),
3937 GUC_NO_SHOW_ALL
| GUC_NO_RESET
| GUC_NO_RESET_ALL
| GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
3941 check_random_seed
, assign_random_seed
, show_random_seed
3945 {"vacuum_cost_delay", PGC_USERSET
, VACUUM_COST_DELAY
,
3946 gettext_noop("Vacuum cost delay in milliseconds."),
3956 {"autovacuum_vacuum_cost_delay", PGC_SIGHUP
, VACUUM_AUTOVACUUM
,
3957 gettext_noop("Vacuum cost delay in milliseconds, for autovacuum."),
3961 &autovacuum_vac_cost_delay
,
3967 {"autovacuum_vacuum_scale_factor", PGC_SIGHUP
, VACUUM_AUTOVACUUM
,
3968 gettext_noop("Number of tuple updates or deletes prior to vacuum as a fraction of reltuples."),
3971 &autovacuum_vac_scale
,
3977 {"autovacuum_vacuum_insert_scale_factor", PGC_SIGHUP
, VACUUM_AUTOVACUUM
,
3978 gettext_noop("Number of tuple inserts prior to vacuum as a fraction of reltuples."),
3981 &autovacuum_vac_ins_scale
,
3987 {"autovacuum_analyze_scale_factor", PGC_SIGHUP
, VACUUM_AUTOVACUUM
,
3988 gettext_noop("Number of tuple inserts, updates, or deletes prior to analyze as a fraction of reltuples."),
3991 &autovacuum_anl_scale
,
3997 {"checkpoint_completion_target", PGC_SIGHUP
, WAL_CHECKPOINTS
,
3998 gettext_noop("Time spent flushing dirty buffers during checkpoint, as fraction of checkpoint interval."),
4001 &CheckPointCompletionTarget
,
4003 NULL
, assign_checkpoint_completion_target
, NULL
4007 {"log_statement_sample_rate", PGC_SUSET
, LOGGING_WHEN
,
4008 gettext_noop("Fraction of statements exceeding \"log_min_duration_sample\" to be logged."),
4009 gettext_noop("Use a value between 0.0 (never log) and 1.0 (always log).")
4011 &log_statement_sample_rate
,
4017 {"log_transaction_sample_rate", PGC_SUSET
, LOGGING_WHEN
,
4018 gettext_noop("Sets the fraction of transactions from which to log all statements."),
4019 gettext_noop("Use a value between 0.0 (never log) and 1.0 (log all "
4020 "statements for all transactions).")
4022 &log_xact_sample_rate
,
4027 /* End-of-list marker */
4029 {NULL
, 0, 0, NULL
, NULL
}, NULL
, 0.0, 0.0, 0.0, NULL
, NULL
, NULL
4034 struct config_string ConfigureNamesString
[] =
4037 {"archive_command", PGC_SIGHUP
, WAL_ARCHIVING
,
4038 gettext_noop("Sets the shell command that will be called to archive a WAL file."),
4039 gettext_noop("This is used only if \"archive_library\" is not set.")
4041 &XLogArchiveCommand
,
4043 NULL
, NULL
, show_archive_command
4047 {"archive_library", PGC_SIGHUP
, WAL_ARCHIVING
,
4048 gettext_noop("Sets the library that will be called to archive a WAL file."),
4049 gettext_noop("An empty string indicates that \"archive_command\" should be used.")
4051 &XLogArchiveLibrary
,
4057 {"restore_command", PGC_SIGHUP
, WAL_ARCHIVE_RECOVERY
,
4058 gettext_noop("Sets the shell command that will be called to retrieve an archived WAL file."),
4061 &recoveryRestoreCommand
,
4067 {"archive_cleanup_command", PGC_SIGHUP
, WAL_ARCHIVE_RECOVERY
,
4068 gettext_noop("Sets the shell command that will be executed at every restart point."),
4071 &archiveCleanupCommand
,
4077 {"recovery_end_command", PGC_SIGHUP
, WAL_ARCHIVE_RECOVERY
,
4078 gettext_noop("Sets the shell command that will be executed once at the end of recovery."),
4081 &recoveryEndCommand
,
4087 {"recovery_target_timeline", PGC_POSTMASTER
, WAL_RECOVERY_TARGET
,
4088 gettext_noop("Specifies the timeline to recover into."),
4091 &recovery_target_timeline_string
,
4093 check_recovery_target_timeline
, assign_recovery_target_timeline
, NULL
4097 {"recovery_target", PGC_POSTMASTER
, WAL_RECOVERY_TARGET
,
4098 gettext_noop("Set to \"immediate\" to end recovery as soon as a consistent state is reached."),
4101 &recovery_target_string
,
4103 check_recovery_target
, assign_recovery_target
, NULL
4106 {"recovery_target_xid", PGC_POSTMASTER
, WAL_RECOVERY_TARGET
,
4107 gettext_noop("Sets the transaction ID up to which recovery will proceed."),
4110 &recovery_target_xid_string
,
4112 check_recovery_target_xid
, assign_recovery_target_xid
, NULL
4115 {"recovery_target_time", PGC_POSTMASTER
, WAL_RECOVERY_TARGET
,
4116 gettext_noop("Sets the time stamp up to which recovery will proceed."),
4119 &recovery_target_time_string
,
4121 check_recovery_target_time
, assign_recovery_target_time
, NULL
4124 {"recovery_target_name", PGC_POSTMASTER
, WAL_RECOVERY_TARGET
,
4125 gettext_noop("Sets the named restore point up to which recovery will proceed."),
4128 &recovery_target_name_string
,
4130 check_recovery_target_name
, assign_recovery_target_name
, NULL
4133 {"recovery_target_lsn", PGC_POSTMASTER
, WAL_RECOVERY_TARGET
,
4134 gettext_noop("Sets the LSN of the write-ahead log location up to which recovery will proceed."),
4137 &recovery_target_lsn_string
,
4139 check_recovery_target_lsn
, assign_recovery_target_lsn
, NULL
4143 {"primary_conninfo", PGC_SIGHUP
, REPLICATION_STANDBY
,
4144 gettext_noop("Sets the connection string to be used to connect to the sending server."),
4154 {"primary_slot_name", PGC_SIGHUP
, REPLICATION_STANDBY
,
4155 gettext_noop("Sets the name of the replication slot to use on the sending server."),
4160 check_primary_slot_name
, NULL
, NULL
4164 {"client_encoding", PGC_USERSET
, CLIENT_CONN_LOCALE
,
4165 gettext_noop("Sets the client's character set encoding."),
4167 GUC_IS_NAME
| GUC_REPORT
4169 &client_encoding_string
,
4171 check_client_encoding
, assign_client_encoding
, NULL
4175 {"log_line_prefix", PGC_SIGHUP
, LOGGING_WHAT
,
4176 gettext_noop("Controls information prefixed to each log line."),
4177 gettext_noop("If blank, no prefix is used.")
4185 {"log_timezone", PGC_SIGHUP
, LOGGING_WHAT
,
4186 gettext_noop("Sets the time zone to use in log messages."),
4189 &log_timezone_string
,
4191 check_log_timezone
, assign_log_timezone
, show_log_timezone
4195 {"DateStyle", PGC_USERSET
, CLIENT_CONN_LOCALE
,
4196 gettext_noop("Sets the display format for date and time values."),
4197 gettext_noop("Also controls interpretation of ambiguous "
4199 GUC_LIST_INPUT
| GUC_REPORT
4203 check_datestyle
, assign_datestyle
, NULL
4207 {"default_table_access_method", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
4208 gettext_noop("Sets the default table access method for new tables."),
4212 &default_table_access_method
,
4213 DEFAULT_TABLE_ACCESS_METHOD
,
4214 check_default_table_access_method
, NULL
, NULL
4218 {"default_tablespace", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
4219 gettext_noop("Sets the default tablespace to create tables and indexes in."),
4220 gettext_noop("An empty string selects the database's default tablespace."),
4223 &default_tablespace
,
4225 check_default_tablespace
, NULL
, NULL
4229 {"temp_tablespaces", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
4230 gettext_noop("Sets the tablespace(s) to use for temporary tables and sort files."),
4232 GUC_LIST_INPUT
| GUC_LIST_QUOTE
4236 check_temp_tablespaces
, assign_temp_tablespaces
, NULL
4240 {"createrole_self_grant", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
4241 gettext_noop("Sets whether a CREATEROLE user automatically grants "
4242 "the role to themselves, and with which options."),
4246 &createrole_self_grant
,
4248 check_createrole_self_grant
, assign_createrole_self_grant
, NULL
4252 {"dynamic_library_path", PGC_SUSET
, CLIENT_CONN_OTHER
,
4253 gettext_noop("Sets the path for dynamically loadable modules."),
4254 gettext_noop("If a dynamically loadable module needs to be opened and "
4255 "the specified name does not have a directory component (i.e., the "
4256 "name does not contain a slash), the system will search this path for "
4257 "the specified file."),
4260 &Dynamic_library_path
,
4266 {"krb_server_keyfile", PGC_SIGHUP
, CONN_AUTH_AUTH
,
4267 gettext_noop("Sets the location of the Kerberos server key file."),
4271 &pg_krb_server_keyfile
,
4277 {"bonjour_name", PGC_POSTMASTER
, CONN_AUTH_SETTINGS
,
4278 gettext_noop("Sets the Bonjour service name."),
4287 {"lc_messages", PGC_SUSET
, CLIENT_CONN_LOCALE
,
4288 gettext_noop("Sets the language in which messages are displayed."),
4293 check_locale_messages
, assign_locale_messages
, NULL
4297 {"lc_monetary", PGC_USERSET
, CLIENT_CONN_LOCALE
,
4298 gettext_noop("Sets the locale for formatting monetary amounts."),
4303 check_locale_monetary
, assign_locale_monetary
, NULL
4307 {"lc_numeric", PGC_USERSET
, CLIENT_CONN_LOCALE
,
4308 gettext_noop("Sets the locale for formatting numbers."),
4313 check_locale_numeric
, assign_locale_numeric
, NULL
4317 {"lc_time", PGC_USERSET
, CLIENT_CONN_LOCALE
,
4318 gettext_noop("Sets the locale for formatting date and time values."),
4323 check_locale_time
, assign_locale_time
, NULL
4327 {"session_preload_libraries", PGC_SUSET
, CLIENT_CONN_PRELOAD
,
4328 gettext_noop("Lists shared libraries to preload into each backend."),
4330 GUC_LIST_INPUT
| GUC_LIST_QUOTE
| GUC_SUPERUSER_ONLY
4332 &session_preload_libraries_string
,
4338 {"shared_preload_libraries", PGC_POSTMASTER
, CLIENT_CONN_PRELOAD
,
4339 gettext_noop("Lists shared libraries to preload into server."),
4341 GUC_LIST_INPUT
| GUC_LIST_QUOTE
| GUC_SUPERUSER_ONLY
4343 &shared_preload_libraries_string
,
4349 {"local_preload_libraries", PGC_USERSET
, CLIENT_CONN_PRELOAD
,
4350 gettext_noop("Lists unprivileged shared libraries to preload into each backend."),
4352 GUC_LIST_INPUT
| GUC_LIST_QUOTE
4354 &local_preload_libraries_string
,
4360 {"search_path", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
4361 gettext_noop("Sets the schema search order for names that are not schema-qualified."),
4363 GUC_LIST_INPUT
| GUC_LIST_QUOTE
| GUC_EXPLAIN
| GUC_REPORT
4365 &namespace_search_path
,
4366 "\"$user\", public",
4367 check_search_path
, assign_search_path
, NULL
4371 /* Can't be set in postgresql.conf */
4372 {"server_encoding", PGC_INTERNAL
, PRESET_OPTIONS
,
4373 gettext_noop("Shows the server (database) character set encoding."),
4375 GUC_IS_NAME
| GUC_REPORT
| GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
4377 &server_encoding_string
,
4383 /* Can't be set in postgresql.conf */
4384 {"server_version", PGC_INTERNAL
, PRESET_OPTIONS
,
4385 gettext_noop("Shows the server version."),
4387 GUC_REPORT
| GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
4389 &server_version_string
,
4395 /* Not for general use --- used by SET ROLE */
4396 {"role", PGC_USERSET
, UNGROUPED
,
4397 gettext_noop("Sets the current role."),
4399 GUC_IS_NAME
| GUC_NO_SHOW_ALL
| GUC_NO_RESET_ALL
| GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
| GUC_NOT_WHILE_SEC_REST
4403 check_role
, assign_role
, show_role
4407 /* Not for general use --- used by SET SESSION AUTHORIZATION */
4408 {"session_authorization", PGC_USERSET
, UNGROUPED
,
4409 gettext_noop("Sets the session user name."),
4411 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
4413 &session_authorization_string
,
4415 check_session_authorization
, assign_session_authorization
, NULL
4419 {"log_destination", PGC_SIGHUP
, LOGGING_WHERE
,
4420 gettext_noop("Sets the destination for server log output."),
4421 gettext_noop("Valid values are combinations of \"stderr\", "
4422 "\"syslog\", \"csvlog\", \"jsonlog\", and \"eventlog\", "
4423 "depending on the platform."),
4426 &Log_destination_string
,
4428 check_log_destination
, assign_log_destination
, NULL
4431 {"log_directory", PGC_SIGHUP
, LOGGING_WHERE
,
4432 gettext_noop("Sets the destination directory for log files."),
4433 gettext_noop("Can be specified as relative to the data directory "
4434 "or as absolute path."),
4439 check_canonical_path
, NULL
, NULL
4442 {"log_filename", PGC_SIGHUP
, LOGGING_WHERE
,
4443 gettext_noop("Sets the file name pattern for log files."),
4448 "postgresql-%Y-%m-%d_%H%M%S.log",
4453 {"syslog_ident", PGC_SIGHUP
, LOGGING_WHERE
,
4454 gettext_noop("Sets the program name used to identify PostgreSQL "
4455 "messages in syslog."),
4460 NULL
, assign_syslog_ident
, NULL
4464 {"event_source", PGC_POSTMASTER
, LOGGING_WHERE
,
4465 gettext_noop("Sets the application name used to identify "
4466 "PostgreSQL messages in the event log."),
4470 DEFAULT_EVENT_SOURCE
,
4475 {"TimeZone", PGC_USERSET
, CLIENT_CONN_LOCALE
,
4476 gettext_noop("Sets the time zone for displaying and interpreting time stamps."),
4482 check_timezone
, assign_timezone
, show_timezone
4485 {"timezone_abbreviations", PGC_USERSET
, CLIENT_CONN_LOCALE
,
4486 gettext_noop("Selects a file of time zone abbreviations."),
4489 &timezone_abbreviations_string
,
4491 check_timezone_abbreviations
, assign_timezone_abbreviations
, NULL
4495 {"unix_socket_group", PGC_POSTMASTER
, CONN_AUTH_SETTINGS
,
4496 gettext_noop("Sets the owning group of the Unix-domain socket."),
4497 gettext_noop("The owning user of the socket is always the user "
4498 "that starts the server.")
4506 {"unix_socket_directories", PGC_POSTMASTER
, CONN_AUTH_SETTINGS
,
4507 gettext_noop("Sets the directories where Unix-domain sockets will be created."),
4509 GUC_LIST_INPUT
| GUC_LIST_QUOTE
| GUC_SUPERUSER_ONLY
4511 &Unix_socket_directories
,
4512 DEFAULT_PGSOCKET_DIR
,
4517 {"listen_addresses", PGC_POSTMASTER
, CONN_AUTH_SETTINGS
,
4518 gettext_noop("Sets the host name or IP address(es) to listen to."),
4529 * Can't be set by ALTER SYSTEM as it can lead to recursive definition
4530 * of data_directory.
4532 {"data_directory", PGC_POSTMASTER
, FILE_LOCATIONS
,
4533 gettext_noop("Sets the server's data directory."),
4535 GUC_SUPERUSER_ONLY
| GUC_DISALLOW_IN_AUTO_FILE
4543 {"config_file", PGC_POSTMASTER
, FILE_LOCATIONS
,
4544 gettext_noop("Sets the server's main configuration file."),
4546 GUC_DISALLOW_IN_FILE
| GUC_SUPERUSER_ONLY
4554 {"hba_file", PGC_POSTMASTER
, FILE_LOCATIONS
,
4555 gettext_noop("Sets the server's \"hba\" configuration file."),
4565 {"ident_file", PGC_POSTMASTER
, FILE_LOCATIONS
,
4566 gettext_noop("Sets the server's \"ident\" configuration file."),
4576 {"external_pid_file", PGC_POSTMASTER
, FILE_LOCATIONS
,
4577 gettext_noop("Writes the postmaster PID to the specified file."),
4583 check_canonical_path
, NULL
, NULL
4587 {"ssl_library", PGC_INTERNAL
, PRESET_OPTIONS
,
4588 gettext_noop("Shows the name of the SSL library."),
4590 GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
4602 {"ssl_cert_file", PGC_SIGHUP
, CONN_AUTH_SSL
,
4603 gettext_noop("Location of the SSL server certificate file."),
4612 {"ssl_key_file", PGC_SIGHUP
, CONN_AUTH_SSL
,
4613 gettext_noop("Location of the SSL server private key file."),
4622 {"ssl_ca_file", PGC_SIGHUP
, CONN_AUTH_SSL
,
4623 gettext_noop("Location of the SSL certificate authority file."),
4632 {"ssl_crl_file", PGC_SIGHUP
, CONN_AUTH_SSL
,
4633 gettext_noop("Location of the SSL certificate revocation list file."),
4642 {"ssl_crl_dir", PGC_SIGHUP
, CONN_AUTH_SSL
,
4643 gettext_noop("Location of the SSL certificate revocation list directory."),
4652 {"synchronous_standby_names", PGC_SIGHUP
, REPLICATION_PRIMARY
,
4653 gettext_noop("Number of synchronous standbys and list of names of potential synchronous ones."),
4657 &SyncRepStandbyNames
,
4659 check_synchronous_standby_names
, assign_synchronous_standby_names
, NULL
4663 {"default_text_search_config", PGC_USERSET
, CLIENT_CONN_LOCALE
,
4664 gettext_noop("Sets default text search configuration."),
4668 "pg_catalog.simple",
4669 check_default_text_search_config
, assign_default_text_search_config
, NULL
4673 {"ssl_tls13_ciphers", PGC_SIGHUP
, CONN_AUTH_SSL
,
4674 gettext_noop("Sets the list of allowed TLSv1.3 cipher suites (leave blank for default)."),
4684 {"ssl_ciphers", PGC_SIGHUP
, CONN_AUTH_SSL
,
4685 gettext_noop("Sets the list of allowed TLSv1.2 (and lower) ciphers."),
4691 "HIGH:MEDIUM:+3DES:!aNULL",
4699 {"ssl_groups", PGC_SIGHUP
, CONN_AUTH_SSL
,
4700 gettext_noop("Sets the group(s) to use for Diffie-Hellman key exchange."),
4701 gettext_noop("Multiple groups can be specified using colon-separated list."),
4714 {"ssl_dh_params_file", PGC_SIGHUP
, CONN_AUTH_SSL
,
4715 gettext_noop("Location of the SSL DH parameters file."),
4719 &ssl_dh_params_file
,
4725 {"ssl_passphrase_command", PGC_SIGHUP
, CONN_AUTH_SSL
,
4726 gettext_noop("Command to obtain passphrases for SSL."),
4730 &ssl_passphrase_command
,
4736 {"application_name", PGC_USERSET
, LOGGING_WHAT
,
4737 gettext_noop("Sets the application name to be reported in statistics and logs."),
4739 GUC_IS_NAME
| GUC_REPORT
| GUC_NOT_IN_SAMPLE
4743 check_application_name
, assign_application_name
, NULL
4747 {"cluster_name", PGC_POSTMASTER
, PROCESS_TITLE
,
4748 gettext_noop("Sets the name of the cluster, which is included in the process title."),
4754 check_cluster_name
, NULL
, NULL
4758 {"wal_consistency_checking", PGC_SUSET
, DEVELOPER_OPTIONS
,
4759 gettext_noop("Sets the WAL resource managers for which WAL consistency checks are done."),
4760 gettext_noop("Full-page images will be logged for all data blocks and cross-checked against the results of WAL replay."),
4761 GUC_LIST_INPUT
| GUC_NOT_IN_SAMPLE
4763 &wal_consistency_checking_string
,
4765 check_wal_consistency_checking
, assign_wal_consistency_checking
, NULL
4769 {"jit_provider", PGC_POSTMASTER
, CLIENT_CONN_PRELOAD
,
4770 gettext_noop("JIT provider to use."),
4780 {"backtrace_functions", PGC_SUSET
, DEVELOPER_OPTIONS
,
4781 gettext_noop("Log backtrace for errors in these functions."),
4785 &backtrace_functions
,
4787 check_backtrace_functions
, assign_backtrace_functions
, NULL
4791 {"debug_io_direct", PGC_POSTMASTER
, DEVELOPER_OPTIONS
,
4792 gettext_noop("Use direct I/O for file access."),
4794 GUC_LIST_INPUT
| GUC_NOT_IN_SAMPLE
4796 &debug_io_direct_string
,
4798 check_debug_io_direct
, assign_debug_io_direct
, NULL
4802 {"synchronized_standby_slots", PGC_SIGHUP
, REPLICATION_PRIMARY
,
4803 gettext_noop("Lists streaming replication standby server replication slot "
4804 "names that logical WAL sender processes will wait for."),
4805 gettext_noop("Logical WAL sender processes will send decoded "
4806 "changes to output plugins only after the specified "
4807 "replication slots have confirmed receiving WAL."),
4810 &synchronized_standby_slots
,
4812 check_synchronized_standby_slots
, assign_synchronized_standby_slots
, NULL
4816 {"restrict_nonsystem_relation_kind", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
4817 gettext_noop("Prohibits access to non-system relations of specified kinds."),
4819 GUC_LIST_INPUT
| GUC_NOT_IN_SAMPLE
4821 &restrict_nonsystem_relation_kind_string
,
4823 check_restrict_nonsystem_relation_kind
, assign_restrict_nonsystem_relation_kind
, NULL
4826 /* End-of-list marker */
4828 {NULL
, 0, 0, NULL
, NULL
}, NULL
, NULL
, NULL
, NULL
, NULL
4833 struct config_enum ConfigureNamesEnum
[] =
4836 {"backslash_quote", PGC_USERSET
, COMPAT_OPTIONS_PREVIOUS
,
4837 gettext_noop("Sets whether \"\\'\" is allowed in string literals."),
4841 BACKSLASH_QUOTE_SAFE_ENCODING
, backslash_quote_options
,
4846 {"bytea_output", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
4847 gettext_noop("Sets the output format for bytea."),
4851 BYTEA_OUTPUT_HEX
, bytea_output_options
,
4856 {"client_min_messages", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
4857 gettext_noop("Sets the message levels that are sent to the client."),
4858 gettext_noop("Each level includes all the levels that follow it. The later"
4859 " the level, the fewer messages are sent.")
4861 &client_min_messages
,
4862 NOTICE
, client_message_level_options
,
4867 {"compute_query_id", PGC_SUSET
, STATS_MONITORING
,
4868 gettext_noop("Enables in-core computation of query identifiers."),
4872 COMPUTE_QUERY_ID_AUTO
, compute_query_id_options
,
4877 {"constraint_exclusion", PGC_USERSET
, QUERY_TUNING_OTHER
,
4878 gettext_noop("Enables the planner to use constraints to optimize queries."),
4879 gettext_noop("Table scans will be skipped if their constraints"
4880 " guarantee that no rows match the query."),
4883 &constraint_exclusion
,
4884 CONSTRAINT_EXCLUSION_PARTITION
, constraint_exclusion_options
,
4889 {"default_toast_compression", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
4890 gettext_noop("Sets the default compression method for compressible values."),
4893 &default_toast_compression
,
4894 TOAST_PGLZ_COMPRESSION
,
4895 default_toast_compression_options
,
4900 {"default_transaction_isolation", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
4901 gettext_noop("Sets the transaction isolation level of each new transaction."),
4904 &DefaultXactIsoLevel
,
4905 XACT_READ_COMMITTED
, isolation_level_options
,
4910 {"transaction_isolation", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
4911 gettext_noop("Sets the current transaction's isolation level."),
4913 GUC_NO_RESET
| GUC_NO_RESET_ALL
| GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
4916 XACT_READ_COMMITTED
, isolation_level_options
,
4917 check_transaction_isolation
, NULL
, NULL
4921 {"IntervalStyle", PGC_USERSET
, CLIENT_CONN_LOCALE
,
4922 gettext_noop("Sets the display format for interval values."),
4927 INTSTYLE_POSTGRES
, intervalstyle_options
,
4932 {"icu_validation_level", PGC_USERSET
, CLIENT_CONN_LOCALE
,
4933 gettext_noop("Log level for reporting invalid ICU locale strings."),
4936 &icu_validation_level
,
4937 WARNING
, icu_validation_level_options
,
4942 {"log_error_verbosity", PGC_SUSET
, LOGGING_WHAT
,
4943 gettext_noop("Sets the verbosity of logged messages."),
4946 &Log_error_verbosity
,
4947 PGERROR_DEFAULT
, log_error_verbosity_options
,
4952 {"log_min_messages", PGC_SUSET
, LOGGING_WHEN
,
4953 gettext_noop("Sets the message levels that are logged."),
4954 gettext_noop("Each level includes all the levels that follow it. The later"
4955 " the level, the fewer messages are sent.")
4958 WARNING
, server_message_level_options
,
4963 {"log_min_error_statement", PGC_SUSET
, LOGGING_WHEN
,
4964 gettext_noop("Causes all statements generating error at or above this level to be logged."),
4965 gettext_noop("Each level includes all the levels that follow it. The later"
4966 " the level, the fewer messages are sent.")
4968 &log_min_error_statement
,
4969 ERROR
, server_message_level_options
,
4974 {"log_statement", PGC_SUSET
, LOGGING_WHAT
,
4975 gettext_noop("Sets the type of statements logged."),
4979 LOGSTMT_NONE
, log_statement_options
,
4984 {"syslog_facility", PGC_SIGHUP
, LOGGING_WHERE
,
4985 gettext_noop("Sets the syslog \"facility\" to be used when syslog enabled."),
4989 DEFAULT_SYSLOG_FACILITY
,
4990 syslog_facility_options
,
4991 NULL
, assign_syslog_facility
, NULL
4995 {"session_replication_role", PGC_SUSET
, CLIENT_CONN_STATEMENT
,
4996 gettext_noop("Sets the session's behavior for triggers and rewrite rules."),
4999 &SessionReplicationRole
,
5000 SESSION_REPLICATION_ROLE_ORIGIN
, session_replication_role_options
,
5001 NULL
, assign_session_replication_role
, NULL
5005 {"synchronous_commit", PGC_USERSET
, WAL_SETTINGS
,
5006 gettext_noop("Sets the current transaction's synchronization level."),
5009 &synchronous_commit
,
5010 SYNCHRONOUS_COMMIT_ON
, synchronous_commit_options
,
5011 NULL
, assign_synchronous_commit
, NULL
5015 {"archive_mode", PGC_POSTMASTER
, WAL_ARCHIVING
,
5016 gettext_noop("Allows archiving of WAL files using \"archive_command\"."),
5020 ARCHIVE_MODE_OFF
, archive_mode_options
,
5025 {"recovery_target_action", PGC_POSTMASTER
, WAL_RECOVERY_TARGET
,
5026 gettext_noop("Sets the action to perform upon reaching the recovery target."),
5029 &recoveryTargetAction
,
5030 RECOVERY_TARGET_ACTION_PAUSE
, recovery_target_action_options
,
5035 {"track_functions", PGC_SUSET
, STATS_CUMULATIVE
,
5036 gettext_noop("Collects function-level statistics on database activity."),
5039 &pgstat_track_functions
,
5040 TRACK_FUNC_OFF
, track_function_options
,
5046 {"stats_fetch_consistency", PGC_USERSET
, STATS_CUMULATIVE
,
5047 gettext_noop("Sets the consistency of accesses to statistics data."),
5050 &pgstat_fetch_consistency
,
5051 PGSTAT_FETCH_CONSISTENCY_CACHE
, stats_fetch_consistency
,
5052 NULL
, assign_stats_fetch_consistency
, NULL
5056 {"wal_compression", PGC_SUSET
, WAL_SETTINGS
,
5057 gettext_noop("Compresses full-page writes written in WAL file with specified method."),
5061 WAL_COMPRESSION_NONE
, wal_compression_options
,
5066 {"wal_level", PGC_POSTMASTER
, WAL_SETTINGS
,
5067 gettext_noop("Sets the level of information written to the WAL."),
5071 WAL_LEVEL_REPLICA
, wal_level_options
,
5076 {"dynamic_shared_memory_type", PGC_POSTMASTER
, RESOURCES_MEM
,
5077 gettext_noop("Selects the dynamic shared memory implementation used."),
5080 &dynamic_shared_memory_type
,
5081 DEFAULT_DYNAMIC_SHARED_MEMORY_TYPE
, dynamic_shared_memory_options
,
5086 {"shared_memory_type", PGC_POSTMASTER
, RESOURCES_MEM
,
5087 gettext_noop("Selects the shared memory implementation used for the main shared memory region."),
5090 &shared_memory_type
,
5091 DEFAULT_SHARED_MEMORY_TYPE
, shared_memory_options
,
5096 {"wal_sync_method", PGC_SIGHUP
, WAL_SETTINGS
,
5097 gettext_noop("Selects the method used for forcing WAL updates to disk."),
5101 DEFAULT_WAL_SYNC_METHOD
, wal_sync_method_options
,
5102 NULL
, assign_wal_sync_method
, NULL
5106 {"xmlbinary", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
5107 gettext_noop("Sets how binary values are to be encoded in XML."),
5111 XMLBINARY_BASE64
, xmlbinary_options
,
5116 {"xmloption", PGC_USERSET
, CLIENT_CONN_STATEMENT
,
5117 gettext_noop("Sets whether XML data in implicit parsing and serialization "
5118 "operations is to be considered as documents or content fragments."),
5122 XMLOPTION_CONTENT
, xmloption_options
,
5127 {"huge_pages", PGC_POSTMASTER
, RESOURCES_MEM
,
5128 gettext_noop("Use of huge pages on Linux or Windows."),
5132 HUGE_PAGES_TRY
, huge_pages_options
,
5137 {"huge_pages_status", PGC_INTERNAL
, PRESET_OPTIONS
,
5138 gettext_noop("Indicates the status of huge pages."),
5140 GUC_NOT_IN_SAMPLE
| GUC_DISALLOW_IN_FILE
5143 HUGE_PAGES_UNKNOWN
, huge_pages_status_options
,
5148 {"recovery_prefetch", PGC_SIGHUP
, WAL_RECOVERY
,
5149 gettext_noop("Prefetch referenced blocks during recovery."),
5150 gettext_noop("Look ahead in the WAL to find references to uncached data.")
5153 RECOVERY_PREFETCH_TRY
, recovery_prefetch_options
,
5154 check_recovery_prefetch
, assign_recovery_prefetch
, NULL
5158 {"debug_parallel_query", PGC_USERSET
, DEVELOPER_OPTIONS
,
5159 gettext_noop("Forces the planner's use parallel query nodes."),
5160 gettext_noop("This can be useful for testing the parallel query infrastructure "
5161 "by forcing the planner to generate plans that contain nodes "
5162 "that perform tuple communication between workers and the main process."),
5163 GUC_NOT_IN_SAMPLE
| GUC_EXPLAIN
5165 &debug_parallel_query
,
5166 DEBUG_PARALLEL_OFF
, debug_parallel_query_options
,
5171 {"password_encryption", PGC_USERSET
, CONN_AUTH_AUTH
,
5172 gettext_noop("Chooses the algorithm for encrypting passwords."),
5175 &Password_encryption
,
5176 PASSWORD_TYPE_SCRAM_SHA_256
, password_encryption_options
,
5181 {"plan_cache_mode", PGC_USERSET
, QUERY_TUNING_OTHER
,
5182 gettext_noop("Controls the planner's selection of custom or generic plan."),
5183 gettext_noop("Prepared statements can have custom and generic plans, and the planner "
5184 "will attempt to choose which is better. This can be set to override "
5185 "the default behavior."),
5189 PLAN_CACHE_MODE_AUTO
, plan_cache_mode_options
,
5194 {"ssl_min_protocol_version", PGC_SIGHUP
, CONN_AUTH_SSL
,
5195 gettext_noop("Sets the minimum SSL/TLS protocol version to use."),
5199 &ssl_min_protocol_version
,
5201 ssl_protocol_versions_info
+ 1, /* don't allow PG_TLS_ANY */
5206 {"ssl_max_protocol_version", PGC_SIGHUP
, CONN_AUTH_SSL
,
5207 gettext_noop("Sets the maximum SSL/TLS protocol version to use."),
5211 &ssl_max_protocol_version
,
5213 ssl_protocol_versions_info
,
5218 {"recovery_init_sync_method", PGC_SIGHUP
, ERROR_HANDLING_OPTIONS
,
5219 gettext_noop("Sets the method for synchronizing the data directory before crash recovery."),
5221 &recovery_init_sync_method
,
5222 DATA_DIR_SYNC_METHOD_FSYNC
, recovery_init_sync_method_options
,
5227 {"debug_logical_replication_streaming", PGC_USERSET
, DEVELOPER_OPTIONS
,
5228 gettext_noop("Forces immediate streaming or serialization of changes in large transactions."),
5229 gettext_noop("On the publisher, it allows streaming or serializing each change in logical decoding. "
5230 "On the subscriber, it allows serialization of all changes to files and notifies the "
5231 "parallel apply workers to read and apply them at the end of the transaction."),
5234 &debug_logical_replication_streaming
,
5235 DEBUG_LOGICAL_REP_STREAMING_BUFFERED
, debug_logical_replication_streaming_options
,
5239 /* End-of-list marker */
5241 {NULL
, 0, 0, NULL
, NULL
}, NULL
, 0, NULL
, NULL
, NULL
, NULL