PostgreSQL Source Code  git master
guc_tables.c
Go to the documentation of this file.
1 /*--------------------------------------------------------------------
2  *
3  * guc_tables.c
4  *
5  * Static tables for the Grand Unified Configuration scheme.
6  *
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.
11  *
12  *
13  * Copyright (c) 2000-2024, PostgreSQL Global Development Group
14  * Written by Peter Eisentraut <peter_e@gmx.net>.
15  *
16  * IDENTIFICATION
17  * src/backend/utils/misc/guc_tables.c
18  *
19  *--------------------------------------------------------------------
20  */
21 #include "postgres.h"
22 
23 #include <float.h>
24 #include <limits.h>
25 #ifdef HAVE_SYSLOG
26 #include <syslog.h>
27 #endif
28 
29 #include "access/commit_ts.h"
30 #include "access/gin.h"
31 #include "access/slru.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"
49 #include "jit/jit.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"
61 #include "pgstat.h"
62 #include "postmaster/autovacuum.h"
64 #include "postmaster/bgwriter.h"
65 #include "postmaster/postmaster.h"
66 #include "postmaster/startup.h"
67 #include "postmaster/syslogger.h"
69 #include "postmaster/walwriter.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"
95 
96 #ifdef TRACE_SYNCSCAN
97 #include "access/syncscan.h"
98 #endif
99 
100 /* This value is normally passed in from the Makefile */
101 #ifndef PG_KRB_SRVTAB
102 #define PG_KRB_SRVTAB ""
103 #endif
104 
105 /*
106  * Options for enum values defined in this module.
107  *
108  * NOTE! Option values may not contain double quotes!
109  */
110 
111 static const struct config_enum_entry bytea_output_options[] = {
112  {"escape", BYTEA_OUTPUT_ESCAPE, false},
113  {"hex", BYTEA_OUTPUT_HEX, false},
114  {NULL, 0, false}
115 };
116 
118  "array length mismatch");
119 
120 /*
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.
124  */
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},
132  {"log", LOG, false},
133  {"info", INFO, true},
134  {"notice", NOTICE, false},
135  {"warning", WARNING, false},
136  {"error", ERROR, false},
137  {NULL, 0, false}
138 };
139 
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},
151  {"log", LOG, false},
152  {"fatal", FATAL, false},
153  {"panic", PANIC, false},
154  {NULL, 0, false}
155 };
156 
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},
162  {NULL, 0, false}
163 };
164 
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},
173  {"log", LOG, false},
174  {"info", INFO, true},
175  {"notice", NOTICE, false},
176  {"warning", WARNING, false},
177  {"error", ERROR, false},
178  {NULL, 0, false}
179 };
180 
182  "array length mismatch");
183 
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},
188  {NULL, 0, false}
189 };
190 
192  "array length mismatch");
193 
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},
199  {NULL, 0, false}
200 };
201 
203  "array length mismatch");
204 
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},
210  {NULL, 0}
211 };
212 
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},
217  {NULL, 0, false}
218 };
219 
221  "array length mismatch");
222 
223 static const struct config_enum_entry syslog_facility_options[] = {
224 #ifdef HAVE_SYSLOG
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},
233 #else
234  {"none", 0, false},
235 #endif
236  {NULL, 0}
237 };
238 
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},
243  {NULL, 0, false}
244 };
245 
247  "array length mismatch");
248 
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},
253  {NULL, 0, false}
254 };
255 
257  "array length mismatch");
258 
259 static const struct config_enum_entry xmlbinary_options[] = {
260  {"base64", XMLBINARY_BASE64, false},
261  {"hex", XMLBINARY_HEX, false},
262  {NULL, 0, false}
263 };
264 
266  "array length mismatch");
267 
268 static const struct config_enum_entry xmloption_options[] = {
269  {"content", XMLOPTION_CONTENT, false},
270  {"document", XMLOPTION_DOCUMENT, false},
271  {NULL, 0, false}
272 };
273 
275  "array length mismatch");
276 
277 /*
278  * Although only "on", "off", and "safe_encoding" are documented, we
279  * accept all the likely variants of "on" and "off".
280  */
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},
291  {NULL, 0, false}
292 };
293 
294 /*
295  * Although only "on", "off", and "auto" are documented, we accept
296  * all the likely variants of "on" and "off".
297  */
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},
309  {NULL, 0, false}
310 };
311 
312 /*
313  * Although only "on", "off", and "partition" are documented, we
314  * accept all the likely variants of "on" and "off".
315  */
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},
326  {NULL, 0, false}
327 };
328 
329 /*
330  * Although only "on", "off", "remote_apply", "remote_write", and "local" are
331  * documented, we accept all the likely variants of "on" and "off".
332  */
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},
345  {NULL, 0, false}
346 };
347 
348 /*
349  * Although only "on", "off", "try" are documented, we accept all the likely
350  * variants of "on" and "off".
351  */
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},
362  {NULL, 0, false}
363 };
364 
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},
369  {NULL, 0, false}
370 };
371 
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},
382  {NULL, 0, false}
383 };
384 
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},
395  {NULL, 0, false}
396 };
397 
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},
402  {NULL, 0, false}
403 };
404 
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},
408  {NULL, 0, false}
409 };
410 
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},
417  {NULL, 0, false}
418 };
419 
421  {"buffered", DEBUG_LOGICAL_REP_STREAMING_BUFFERED, false},
422  {"immediate", DEBUG_LOGICAL_REP_STREAMING_IMMEDIATE, false},
423  {NULL, 0, false}
424 };
425 
427  "array length mismatch");
428 
430  {"fsync", DATA_DIR_SYNC_METHOD_FSYNC, false},
431 #ifdef HAVE_SYNCFS
432  {"syncfs", DATA_DIR_SYNC_METHOD_SYNCFS, false},
433 #endif
434  {NULL, 0, false}
435 };
436 
437 static const struct config_enum_entry shared_memory_options[] = {
438 #ifndef WIN32
439  {"sysv", SHMEM_TYPE_SYSV, false},
440 #endif
441 #ifndef EXEC_BACKEND
442  {"mmap", SHMEM_TYPE_MMAP, false},
443 #endif
444 #ifdef WIN32
445  {"windows", SHMEM_TYPE_WINDOWS, false},
446 #endif
447  {NULL, 0, false}
448 };
449 
451  {"pglz", TOAST_PGLZ_COMPRESSION, false},
452 #ifdef USE_LZ4
453  {"lz4", TOAST_LZ4_COMPRESSION, false},
454 #endif
455  {NULL, 0, false}
456 };
457 
458 static const struct config_enum_entry wal_compression_options[] = {
459  {"pglz", WAL_COMPRESSION_PGLZ, false},
460 #ifdef USE_LZ4
461  {"lz4", WAL_COMPRESSION_LZ4, false},
462 #endif
463 #ifdef USE_ZSTD
464  {"zstd", WAL_COMPRESSION_ZSTD, false},
465 #endif
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},
474  {NULL, 0, false}
475 };
476 
477 /*
478  * Options for enum values stored in other modules
479  */
480 extern const struct config_enum_entry wal_level_options[];
481 extern const struct config_enum_entry archive_mode_options[];
483 extern const struct config_enum_entry wal_sync_method_options[];
485 
486 /*
487  * GUC option variables that are exported from this module
488  */
489 bool AllowAlterSystem = true;
490 bool log_duration = false;
491 bool Debug_print_plan = false;
492 bool Debug_print_parse = false;
494 bool Debug_pretty_print = true;
495 
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;
500 #endif
501 
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
506  * together */
509 
512 
513 /*
514  * This GUC exists solely for backward compatibility, check its definition for
515  * details.
516  */
517 static bool default_with_oids = false;
518 
520 
528 int log_temp_files = -1;
532 
534 
535 int num_temp_buffers = 1024;
536 
537 char *cluster_name = "";
542 
544 
549 
550 /*
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.
555  */
557 
558 /*
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.
561  */
565 
566 /*
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.
570  */
571 static char *syslog_ident_str;
572 static double phony_random_seed;
574 static char *datestyle_string;
580 
581 #ifdef HAVE_SYSLOG
582 #define DEFAULT_SYSLOG_FACILITY LOG_LOCAL0
583 #else
584 #define DEFAULT_SYSLOG_FACILITY 0
585 #endif
587 
588 static char *timezone_string;
589 static char *log_timezone_string;
591 static char *data_directory;
593 static int max_function_args;
594 static int max_index_keys;
596 static int block_size;
597 static int segment_size;
600 static int wal_block_size;
601 static int num_os_semaphores;
602 static bool data_checksums;
603 static bool integer_datetimes;
604 
605 #ifdef USE_ASSERT_CHECKING
606 #define DEFAULT_ASSERT_ENABLED true
607 #else
608 #define DEFAULT_ASSERT_ENABLED false
609 #endif
611 
617 
618 /* should be static, but commands/variable.c needs to get at this */
620 
621 /* should be static, but guc.c needs to get at this */
623 
624 
625 /*
626  * Displayable names for context types (enum GucContext)
627  *
628  * Note: these strings are deliberately not localized.
629  */
630 const char *const GucContext_Names[] =
631 {
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",
639 };
640 
642  "array length mismatch");
643 
644 /*
645  * Displayable names for source types (enum GucSource)
646  *
647  * Note: these strings are deliberately not localized.
648  */
649 const char *const GucSource_Names[] =
650 {
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",
665 };
666 
668  "array length mismatch");
669 
670 /*
671  * Displayable names for the groupings defined in enum config_group
672  */
673 const char *const config_group_names[] =
674 {
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_VACUUM_DELAY] = gettext_noop("Resource Usage / Cost-Based Vacuum Delay"),
685  [RESOURCES_BGWRITER] = gettext_noop("Resource Usage / Background Writer"),
686  [RESOURCES_ASYNCHRONOUS] = gettext_noop("Resource Usage / Asynchronous Behavior"),
687  [WAL_SETTINGS] = gettext_noop("Write-Ahead Log / Settings"),
688  [WAL_CHECKPOINTS] = gettext_noop("Write-Ahead Log / Checkpoints"),
689  [WAL_ARCHIVING] = gettext_noop("Write-Ahead Log / Archiving"),
690  [WAL_RECOVERY] = gettext_noop("Write-Ahead Log / Recovery"),
691  [WAL_ARCHIVE_RECOVERY] = gettext_noop("Write-Ahead Log / Archive Recovery"),
692  [WAL_RECOVERY_TARGET] = gettext_noop("Write-Ahead Log / Recovery Target"),
693  [WAL_SUMMARIZATION] = gettext_noop("Write-Ahead Log / Summarization"),
694  [REPLICATION_SENDING] = gettext_noop("Replication / Sending Servers"),
695  [REPLICATION_PRIMARY] = gettext_noop("Replication / Primary Server"),
696  [REPLICATION_STANDBY] = gettext_noop("Replication / Standby Servers"),
697  [REPLICATION_SUBSCRIBERS] = gettext_noop("Replication / Subscribers"),
698  [QUERY_TUNING_METHOD] = gettext_noop("Query Tuning / Planner Method Configuration"),
699  [QUERY_TUNING_COST] = gettext_noop("Query Tuning / Planner Cost Constants"),
700  [QUERY_TUNING_GEQO] = gettext_noop("Query Tuning / Genetic Query Optimizer"),
701  [QUERY_TUNING_OTHER] = gettext_noop("Query Tuning / Other Planner Options"),
702  [LOGGING_WHERE] = gettext_noop("Reporting and Logging / Where to Log"),
703  [LOGGING_WHEN] = gettext_noop("Reporting and Logging / When to Log"),
704  [LOGGING_WHAT] = gettext_noop("Reporting and Logging / What to Log"),
705  [PROCESS_TITLE] = gettext_noop("Reporting and Logging / Process Title"),
706  [STATS_MONITORING] = gettext_noop("Statistics / Monitoring"),
707  [STATS_CUMULATIVE] = gettext_noop("Statistics / Cumulative Query and Index Statistics"),
708  [AUTOVACUUM] = gettext_noop("Autovacuum"),
709  [CLIENT_CONN_STATEMENT] = gettext_noop("Client Connection Defaults / Statement Behavior"),
710  [CLIENT_CONN_LOCALE] = gettext_noop("Client Connection Defaults / Locale and Formatting"),
711  [CLIENT_CONN_PRELOAD] = gettext_noop("Client Connection Defaults / Shared Library Preloading"),
712  [CLIENT_CONN_OTHER] = gettext_noop("Client Connection Defaults / Other Defaults"),
713  [LOCK_MANAGEMENT] = gettext_noop("Lock Management"),
714  [COMPAT_OPTIONS_PREVIOUS] = gettext_noop("Version and Platform Compatibility / Previous PostgreSQL Versions"),
715  [COMPAT_OPTIONS_OTHER] = gettext_noop("Version and Platform Compatibility / Other Platforms and Clients"),
716  [ERROR_HANDLING_OPTIONS] = gettext_noop("Error Handling"),
717  [PRESET_OPTIONS] = gettext_noop("Preset Options"),
718  [CUSTOM_OPTIONS] = gettext_noop("Customized Options"),
719  [DEVELOPER_OPTIONS] = gettext_noop("Developer Options"),
720 };
721 
723  "array length mismatch");
724 
725 /*
726  * Displayable names for GUC variable types (enum config_type)
727  *
728  * Note: these strings are deliberately not localized.
729  */
730 const char *const config_type_names[] =
731 {
732  [PGC_BOOL] = "bool",
733  [PGC_INT] = "integer",
734  [PGC_REAL] = "real",
735  [PGC_STRING] = "string",
736  [PGC_ENUM] = "enum",
737 };
738 
740  "array length mismatch");
741 
742 
743 /*
744  * Contents of GUC tables
745  *
746  * See src/backend/utils/misc/README for design notes.
747  *
748  * TO ADD AN OPTION:
749  *
750  * 1. Declare a global variable of type bool, int, double, or char*
751  * and make use of it.
752  *
753  * 2. Decide at what times it's safe to set the option. See guc.h for
754  * details.
755  *
756  * 3. Decide on a name, a default value, upper and lower bounds (if
757  * applicable), etc.
758  *
759  * 4. Add a record below.
760  *
761  * 5. Add it to src/backend/utils/misc/postgresql.conf.sample, if
762  * appropriate.
763  *
764  * 6. Don't forget to document the option (at least in config.sgml).
765  *
766  * 7. If it's a new GUC_LIST_QUOTE option, you must add it to
767  * variable_is_guc_list_quote() in src/bin/pg_dump/dumputils.c.
768  */
769 
771 {
772  {
773  {"enable_seqscan", PGC_USERSET, QUERY_TUNING_METHOD,
774  gettext_noop("Enables the planner's use of sequential-scan plans."),
775  NULL,
777  },
779  true,
780  NULL, NULL, NULL
781  },
782  {
783  {"enable_indexscan", PGC_USERSET, QUERY_TUNING_METHOD,
784  gettext_noop("Enables the planner's use of index-scan plans."),
785  NULL,
787  },
789  true,
790  NULL, NULL, NULL
791  },
792  {
793  {"enable_indexonlyscan", PGC_USERSET, QUERY_TUNING_METHOD,
794  gettext_noop("Enables the planner's use of index-only-scan plans."),
795  NULL,
797  },
799  true,
800  NULL, NULL, NULL
801  },
802  {
803  {"enable_bitmapscan", PGC_USERSET, QUERY_TUNING_METHOD,
804  gettext_noop("Enables the planner's use of bitmap-scan plans."),
805  NULL,
807  },
809  true,
810  NULL, NULL, NULL
811  },
812  {
813  {"enable_tidscan", PGC_USERSET, QUERY_TUNING_METHOD,
814  gettext_noop("Enables the planner's use of TID scan plans."),
815  NULL,
817  },
819  true,
820  NULL, NULL, NULL
821  },
822  {
823  {"enable_sort", PGC_USERSET, QUERY_TUNING_METHOD,
824  gettext_noop("Enables the planner's use of explicit sort steps."),
825  NULL,
827  },
828  &enable_sort,
829  true,
830  NULL, NULL, NULL
831  },
832  {
833  {"enable_incremental_sort", PGC_USERSET, QUERY_TUNING_METHOD,
834  gettext_noop("Enables the planner's use of incremental sort steps."),
835  NULL,
837  },
839  true,
840  NULL, NULL, NULL
841  },
842  {
843  {"enable_hashagg", PGC_USERSET, QUERY_TUNING_METHOD,
844  gettext_noop("Enables the planner's use of hashed aggregation plans."),
845  NULL,
847  },
849  true,
850  NULL, NULL, NULL
851  },
852  {
853  {"enable_material", PGC_USERSET, QUERY_TUNING_METHOD,
854  gettext_noop("Enables the planner's use of materialization."),
855  NULL,
857  },
859  true,
860  NULL, NULL, NULL
861  },
862  {
863  {"enable_memoize", PGC_USERSET, QUERY_TUNING_METHOD,
864  gettext_noop("Enables the planner's use of memoization."),
865  NULL,
867  },
869  true,
870  NULL, NULL, NULL
871  },
872  {
873  {"enable_nestloop", PGC_USERSET, QUERY_TUNING_METHOD,
874  gettext_noop("Enables the planner's use of nested-loop join plans."),
875  NULL,
877  },
879  true,
880  NULL, NULL, NULL
881  },
882  {
883  {"enable_mergejoin", PGC_USERSET, QUERY_TUNING_METHOD,
884  gettext_noop("Enables the planner's use of merge join plans."),
885  NULL,
887  },
889  true,
890  NULL, NULL, NULL
891  },
892  {
893  {"enable_hashjoin", PGC_USERSET, QUERY_TUNING_METHOD,
894  gettext_noop("Enables the planner's use of hash join plans."),
895  NULL,
897  },
899  true,
900  NULL, NULL, NULL
901  },
902  {
903  {"enable_gathermerge", PGC_USERSET, QUERY_TUNING_METHOD,
904  gettext_noop("Enables the planner's use of gather merge plans."),
905  NULL,
907  },
909  true,
910  NULL, NULL, NULL
911  },
912  {
913  {"enable_partitionwise_join", PGC_USERSET, QUERY_TUNING_METHOD,
914  gettext_noop("Enables partitionwise join."),
915  NULL,
917  },
919  false,
920  NULL, NULL, NULL
921  },
922  {
923  {"enable_partitionwise_aggregate", PGC_USERSET, QUERY_TUNING_METHOD,
924  gettext_noop("Enables partitionwise aggregation and grouping."),
925  NULL,
927  },
929  false,
930  NULL, NULL, NULL
931  },
932  {
933  {"enable_parallel_append", PGC_USERSET, QUERY_TUNING_METHOD,
934  gettext_noop("Enables the planner's use of parallel append plans."),
935  NULL,
937  },
939  true,
940  NULL, NULL, NULL
941  },
942  {
943  {"enable_parallel_hash", PGC_USERSET, QUERY_TUNING_METHOD,
944  gettext_noop("Enables the planner's use of parallel hash plans."),
945  NULL,
947  },
949  true,
950  NULL, NULL, NULL
951  },
952  {
953  {"enable_partition_pruning", PGC_USERSET, QUERY_TUNING_METHOD,
954  gettext_noop("Enables plan-time and execution-time partition pruning."),
955  gettext_noop("Allows the query planner and executor to compare partition "
956  "bounds to conditions in the query to determine which "
957  "partitions must be scanned."),
959  },
961  true,
962  NULL, NULL, NULL
963  },
964  {
965  {"enable_presorted_aggregate", PGC_USERSET, QUERY_TUNING_METHOD,
966  gettext_noop("Enables the planner's ability to produce plans that "
967  "provide presorted input for ORDER BY / DISTINCT aggregate "
968  "functions."),
969  gettext_noop("Allows the query planner to build plans that provide "
970  "presorted input for aggregate functions with an ORDER BY / "
971  "DISTINCT clause. When disabled, implicit sorts are always "
972  "performed during execution."),
974  },
976  true,
977  NULL, NULL, NULL
978  },
979  {
980  {"enable_async_append", PGC_USERSET, QUERY_TUNING_METHOD,
981  gettext_noop("Enables the planner's use of async append plans."),
982  NULL,
984  },
986  true,
987  NULL, NULL, NULL
988  },
989  {
990  {"enable_group_by_reordering", PGC_USERSET, QUERY_TUNING_METHOD,
991  gettext_noop("Enables reordering of GROUP BY keys."),
992  NULL,
994  },
996  true,
997  NULL, NULL, NULL
998  },
999  {
1000  {"enable_distinct_reordering", PGC_USERSET, QUERY_TUNING_METHOD,
1001  gettext_noop("Enables reordering of DISTINCT pathkeys."),
1002  NULL,
1003  GUC_EXPLAIN
1004  },
1006  true,
1007  NULL, NULL, NULL
1008  },
1009  {
1010  {"geqo", PGC_USERSET, QUERY_TUNING_GEQO,
1011  gettext_noop("Enables genetic query optimization."),
1012  gettext_noop("This algorithm attempts to do planning without "
1013  "exhaustive searching."),
1014  GUC_EXPLAIN
1015  },
1016  &enable_geqo,
1017  true,
1018  NULL, NULL, NULL
1019  },
1020  {
1021  /*
1022  * Not for general use --- used by SET SESSION AUTHORIZATION and SET
1023  * ROLE
1024  */
1025  {"is_superuser", PGC_INTERNAL, UNGROUPED,
1026  gettext_noop("Shows whether the current user is a superuser."),
1027  NULL,
1029  },
1031  false,
1032  NULL, NULL, NULL
1033  },
1034  {
1035  /*
1036  * This setting itself cannot be set by ALTER SYSTEM to avoid an
1037  * operator turning this setting off by using ALTER SYSTEM, without a
1038  * way to turn it back on.
1039  */
1040  {"allow_alter_system", PGC_SIGHUP, COMPAT_OPTIONS_OTHER,
1041  gettext_noop("Allows running the ALTER SYSTEM command."),
1042  gettext_noop("Can be set to off for environments where global configuration "
1043  "changes should be made using a different method."),
1045  },
1047  true,
1048  NULL, NULL, NULL
1049  },
1050  {
1051  {"bonjour", PGC_POSTMASTER, CONN_AUTH_SETTINGS,
1052  gettext_noop("Enables advertising the server via Bonjour."),
1053  NULL
1054  },
1055  &enable_bonjour,
1056  false,
1057  check_bonjour, NULL, NULL
1058  },
1059  {
1060  {"track_commit_timestamp", PGC_POSTMASTER, REPLICATION_SENDING,
1061  gettext_noop("Collects transaction commit time."),
1062  NULL
1063  },
1065  false,
1066  NULL, NULL, NULL
1067  },
1068  {
1069  {"ssl", PGC_SIGHUP, CONN_AUTH_SSL,
1070  gettext_noop("Enables SSL connections."),
1071  NULL
1072  },
1073  &EnableSSL,
1074  false,
1075  check_ssl, NULL, NULL
1076  },
1077  {
1078  {"ssl_passphrase_command_supports_reload", PGC_SIGHUP, CONN_AUTH_SSL,
1079  gettext_noop("Controls whether \"ssl_passphrase_command\" is called during server reload."),
1080  NULL
1081  },
1083  false,
1084  NULL, NULL, NULL
1085  },
1086  {
1087  {"ssl_prefer_server_ciphers", PGC_SIGHUP, CONN_AUTH_SSL,
1088  gettext_noop("Give priority to server ciphersuite order."),
1089  NULL
1090  },
1092  true,
1093  NULL, NULL, NULL
1094  },
1095  {
1096  {"fsync", PGC_SIGHUP, WAL_SETTINGS,
1097  gettext_noop("Forces synchronization of updates to disk."),
1098  gettext_noop("The server will use the fsync() system call in several places to make "
1099  "sure that updates are physically written to disk. This ensures "
1100  "that a database cluster will recover to a consistent state after "
1101  "an operating system or hardware crash.")
1102  },
1103  &enableFsync,
1104  true,
1105  NULL, NULL, NULL
1106  },
1107  {
1108  {"ignore_checksum_failure", PGC_SUSET, DEVELOPER_OPTIONS,
1109  gettext_noop("Continues processing after a checksum failure."),
1110  gettext_noop("Detection of a checksum failure normally causes PostgreSQL to "
1111  "report an error, aborting the current transaction. Setting "
1112  "ignore_checksum_failure to true causes the system to ignore the failure "
1113  "(but still report a warning), and continue processing. This "
1114  "behavior could cause crashes or other serious problems. Only "
1115  "has an effect if checksums are enabled."),
1117  },
1119  false,
1120  NULL, NULL, NULL
1121  },
1122  {
1123  {"zero_damaged_pages", PGC_SUSET, DEVELOPER_OPTIONS,
1124  gettext_noop("Continues processing past damaged page headers."),
1125  gettext_noop("Detection of a damaged page header normally causes PostgreSQL to "
1126  "report an error, aborting the current transaction. Setting "
1127  "\"zero_damaged_pages\" to true causes the system to instead report a "
1128  "warning, zero out the damaged page, and continue processing. This "
1129  "behavior will destroy data, namely all the rows on the damaged page."),
1131  },
1133  false,
1134  NULL, NULL, NULL
1135  },
1136  {
1137  {"ignore_invalid_pages", PGC_POSTMASTER, DEVELOPER_OPTIONS,
1138  gettext_noop("Continues recovery after an invalid pages failure."),
1139  gettext_noop("Detection of WAL records having references to "
1140  "invalid pages during recovery causes PostgreSQL to "
1141  "raise a PANIC-level error, aborting the recovery. "
1142  "Setting \"ignore_invalid_pages\" to true causes "
1143  "the system to ignore invalid page references "
1144  "in WAL records (but still report a warning), "
1145  "and continue recovery. This behavior may cause "
1146  "crashes, data loss, propagate or hide corruption, "
1147  "or other serious problems. Only has an effect "
1148  "during recovery or in standby mode."),
1150  },
1152  false,
1153  NULL, NULL, NULL
1154  },
1155  {
1156  {"full_page_writes", PGC_SIGHUP, WAL_SETTINGS,
1157  gettext_noop("Writes full pages to WAL when first modified after a checkpoint."),
1158  gettext_noop("A page write in process during an operating system crash might be "
1159  "only partially written to disk. During recovery, the row changes "
1160  "stored in WAL are not enough to recover. This option writes "
1161  "pages when first modified after a checkpoint to WAL so full recovery "
1162  "is possible.")
1163  },
1164  &fullPageWrites,
1165  true,
1166  NULL, NULL, NULL
1167  },
1168 
1169  {
1170  {"wal_log_hints", PGC_POSTMASTER, WAL_SETTINGS,
1171  gettext_noop("Writes full pages to WAL when first modified after a checkpoint, even for a non-critical modification."),
1172  NULL
1173  },
1174  &wal_log_hints,
1175  false,
1176  NULL, NULL, NULL
1177  },
1178 
1179  {
1180  {"wal_init_zero", PGC_SUSET, WAL_SETTINGS,
1181  gettext_noop("Writes zeroes to new WAL files before first use."),
1182  NULL
1183  },
1184  &wal_init_zero,
1185  true,
1186  NULL, NULL, NULL
1187  },
1188 
1189  {
1190  {"wal_recycle", PGC_SUSET, WAL_SETTINGS,
1191  gettext_noop("Recycles WAL files by renaming them."),
1192  NULL
1193  },
1194  &wal_recycle,
1195  true,
1196  NULL, NULL, NULL
1197  },
1198 
1199  {
1200  {"log_checkpoints", PGC_SIGHUP, LOGGING_WHAT,
1201  gettext_noop("Logs each checkpoint."),
1202  NULL
1203  },
1204  &log_checkpoints,
1205  true,
1206  NULL, NULL, NULL
1207  },
1208  {
1209  {"log_connections", PGC_SU_BACKEND, LOGGING_WHAT,
1210  gettext_noop("Logs each successful connection."),
1211  NULL
1212  },
1213  &Log_connections,
1214  false,
1215  NULL, NULL, NULL
1216  },
1217  {
1218  {"trace_connection_negotiation", PGC_POSTMASTER, DEVELOPER_OPTIONS,
1219  gettext_noop("Logs details of pre-authentication connection handshake."),
1220  NULL,
1222  },
1224  false,
1225  NULL, NULL, NULL
1226  },
1227  {
1228  {"log_disconnections", PGC_SU_BACKEND, LOGGING_WHAT,
1229  gettext_noop("Logs end of a session, including duration."),
1230  NULL
1231  },
1233  false,
1234  NULL, NULL, NULL
1235  },
1236  {
1237  {"log_replication_commands", PGC_SUSET, LOGGING_WHAT,
1238  gettext_noop("Logs each replication command."),
1239  NULL
1240  },
1242  false,
1243  NULL, NULL, NULL
1244  },
1245  {
1246  {"debug_assertions", PGC_INTERNAL, PRESET_OPTIONS,
1247  gettext_noop("Shows whether the running server has assertion checks enabled."),
1248  NULL,
1250  },
1251  &assert_enabled,
1253  NULL, NULL, NULL
1254  },
1255 
1256  {
1257  {"exit_on_error", PGC_USERSET, ERROR_HANDLING_OPTIONS,
1258  gettext_noop("Terminate session on any error."),
1259  NULL
1260  },
1261  &ExitOnAnyError,
1262  false,
1263  NULL, NULL, NULL
1264  },
1265  {
1266  {"restart_after_crash", PGC_SIGHUP, ERROR_HANDLING_OPTIONS,
1267  gettext_noop("Reinitialize server after backend crash."),
1268  NULL
1269  },
1271  true,
1272  NULL, NULL, NULL
1273  },
1274  {
1275  {"remove_temp_files_after_crash", PGC_SIGHUP, DEVELOPER_OPTIONS,
1276  gettext_noop("Remove temporary files after backend crash."),
1277  NULL,
1279  },
1281  true,
1282  NULL, NULL, NULL
1283  },
1284  {
1285  {"send_abort_for_crash", PGC_SIGHUP, DEVELOPER_OPTIONS,
1286  gettext_noop("Send SIGABRT not SIGQUIT to child processes after backend crash."),
1287  NULL,
1289  },
1291  false,
1292  NULL, NULL, NULL
1293  },
1294  {
1295  {"send_abort_for_kill", PGC_SIGHUP, DEVELOPER_OPTIONS,
1296  gettext_noop("Send SIGABRT not SIGKILL to stuck child processes."),
1297  NULL,
1299  },
1301  false,
1302  NULL, NULL, NULL
1303  },
1304 
1305  {
1306  {"log_duration", PGC_SUSET, LOGGING_WHAT,
1307  gettext_noop("Logs the duration of each completed SQL statement."),
1308  NULL
1309  },
1310  &log_duration,
1311  false,
1312  NULL, NULL, NULL
1313  },
1314 #ifdef DEBUG_NODE_TESTS_ENABLED
1315  {
1316  {"debug_copy_parse_plan_trees", PGC_SUSET, DEVELOPER_OPTIONS,
1317  gettext_noop("Set this to force all parse and plan trees to be passed through "
1318  "copyObject(), to facilitate catching errors and omissions in "
1319  "copyObject()."),
1320  NULL,
1322  },
1323  &Debug_copy_parse_plan_trees,
1324 /* support for legacy compile-time setting */
1325 #ifdef COPY_PARSE_PLAN_TREES
1326  true,
1327 #else
1328  false,
1329 #endif
1330  NULL, NULL, NULL
1331  },
1332  {
1333  {"debug_write_read_parse_plan_trees", PGC_SUSET, DEVELOPER_OPTIONS,
1334  gettext_noop("Set this to force all parse and plan trees to be passed through "
1335  "outfuncs.c/readfuncs.c, to facilitate catching errors and omissions in "
1336  "those modules."),
1337  NULL,
1339  },
1340  &Debug_write_read_parse_plan_trees,
1341 /* support for legacy compile-time setting */
1342 #ifdef WRITE_READ_PARSE_PLAN_TREES
1343  true,
1344 #else
1345  false,
1346 #endif
1347  NULL, NULL, NULL
1348  },
1349  {
1350  {"debug_raw_expression_coverage_test", PGC_SUSET, DEVELOPER_OPTIONS,
1351  gettext_noop("Set this to force all raw parse trees for DML statements to be scanned "
1352  "by raw_expression_tree_walker(), to facilitate catching errors and "
1353  "omissions in that function."),
1354  NULL,
1356  },
1357  &Debug_raw_expression_coverage_test,
1358 /* support for legacy compile-time setting */
1359 #ifdef RAW_EXPRESSION_COVERAGE_TEST
1360  true,
1361 #else
1362  false,
1363 #endif
1364  NULL, NULL, NULL
1365  },
1366 #endif /* DEBUG_NODE_TESTS_ENABLED */
1367  {
1368  {"debug_print_parse", PGC_USERSET, LOGGING_WHAT,
1369  gettext_noop("Logs each query's parse tree."),
1370  NULL
1371  },
1373  false,
1374  NULL, NULL, NULL
1375  },
1376  {
1377  {"debug_print_rewritten", PGC_USERSET, LOGGING_WHAT,
1378  gettext_noop("Logs each query's rewritten parse tree."),
1379  NULL
1380  },
1382  false,
1383  NULL, NULL, NULL
1384  },
1385  {
1386  {"debug_print_plan", PGC_USERSET, LOGGING_WHAT,
1387  gettext_noop("Logs each query's execution plan."),
1388  NULL
1389  },
1391  false,
1392  NULL, NULL, NULL
1393  },
1394  {
1395  {"debug_pretty_print", PGC_USERSET, LOGGING_WHAT,
1396  gettext_noop("Indents parse and plan tree displays."),
1397  NULL
1398  },
1400  true,
1401  NULL, NULL, NULL
1402  },
1403  {
1404  {"log_parser_stats", PGC_SUSET, STATS_MONITORING,
1405  gettext_noop("Writes parser performance statistics to the server log."),
1406  NULL
1407  },
1409  false,
1410  check_stage_log_stats, NULL, NULL
1411  },
1412  {
1413  {"log_planner_stats", PGC_SUSET, STATS_MONITORING,
1414  gettext_noop("Writes planner performance statistics to the server log."),
1415  NULL
1416  },
1418  false,
1419  check_stage_log_stats, NULL, NULL
1420  },
1421  {
1422  {"log_executor_stats", PGC_SUSET, STATS_MONITORING,
1423  gettext_noop("Writes executor performance statistics to the server log."),
1424  NULL
1425  },
1427  false,
1428  check_stage_log_stats, NULL, NULL
1429  },
1430  {
1431  {"log_statement_stats", PGC_SUSET, STATS_MONITORING,
1432  gettext_noop("Writes cumulative performance statistics to the server log."),
1433  NULL
1434  },
1436  false,
1437  check_log_stats, NULL, NULL
1438  },
1439 #ifdef BTREE_BUILD_STATS
1440  {
1441  {"log_btree_build_stats", PGC_SUSET, DEVELOPER_OPTIONS,
1442  gettext_noop("Logs system resource usage statistics (memory and CPU) on various B-tree operations."),
1443  NULL,
1445  },
1447  false,
1448  NULL, NULL, NULL
1449  },
1450 #endif
1451 
1452  {
1453  {"track_activities", PGC_SUSET, STATS_CUMULATIVE,
1454  gettext_noop("Collects information about executing commands."),
1455  gettext_noop("Enables the collection of information on the currently "
1456  "executing command of each session, along with "
1457  "the time at which that command began execution.")
1458  },
1460  true,
1461  NULL, NULL, NULL
1462  },
1463  {
1464  {"track_counts", PGC_SUSET, STATS_CUMULATIVE,
1465  gettext_noop("Collects statistics on database activity."),
1466  NULL
1467  },
1469  true,
1470  NULL, NULL, NULL
1471  },
1472  {
1473  {"track_io_timing", PGC_SUSET, STATS_CUMULATIVE,
1474  gettext_noop("Collects timing statistics for database I/O activity."),
1475  NULL
1476  },
1477  &track_io_timing,
1478  false,
1479  NULL, NULL, NULL
1480  },
1481  {
1482  {"track_wal_io_timing", PGC_SUSET, STATS_CUMULATIVE,
1483  gettext_noop("Collects timing statistics for WAL I/O activity."),
1484  NULL
1485  },
1487  false,
1488  NULL, NULL, NULL
1489  },
1490 
1491  {
1492  {"update_process_title", PGC_SUSET, PROCESS_TITLE,
1493  gettext_noop("Updates the process title to show the active SQL command."),
1494  gettext_noop("Enables updating of the process title every time a new SQL command is received by the server.")
1495  },
1498  NULL, NULL, NULL
1499  },
1500 
1501  {
1502  {"autovacuum", PGC_SIGHUP, AUTOVACUUM,
1503  gettext_noop("Starts the autovacuum subprocess."),
1504  NULL
1505  },
1507  true,
1508  NULL, NULL, NULL
1509  },
1510 
1511  {
1512  {"trace_notify", PGC_USERSET, DEVELOPER_OPTIONS,
1513  gettext_noop("Generates debugging output for LISTEN and NOTIFY."),
1514  NULL,
1516  },
1517  &Trace_notify,
1518  false,
1519  NULL, NULL, NULL
1520  },
1521 
1522 #ifdef LOCK_DEBUG
1523  {
1524  {"trace_locks", PGC_SUSET, DEVELOPER_OPTIONS,
1525  gettext_noop("Emits information about lock usage."),
1526  NULL,
1528  },
1529  &Trace_locks,
1530  false,
1531  NULL, NULL, NULL
1532  },
1533  {
1534  {"trace_userlocks", PGC_SUSET, DEVELOPER_OPTIONS,
1535  gettext_noop("Emits information about user lock usage."),
1536  NULL,
1538  },
1539  &Trace_userlocks,
1540  false,
1541  NULL, NULL, NULL
1542  },
1543  {
1544  {"trace_lwlocks", PGC_SUSET, DEVELOPER_OPTIONS,
1545  gettext_noop("Emits information about lightweight lock usage."),
1546  NULL,
1548  },
1549  &Trace_lwlocks,
1550  false,
1551  NULL, NULL, NULL
1552  },
1553  {
1554  {"debug_deadlocks", PGC_SUSET, DEVELOPER_OPTIONS,
1555  gettext_noop("Dumps information about all current locks when a deadlock timeout occurs."),
1556  NULL,
1558  },
1559  &Debug_deadlocks,
1560  false,
1561  NULL, NULL, NULL
1562  },
1563 #endif
1564 
1565  {
1566  {"log_lock_waits", PGC_SUSET, LOGGING_WHAT,
1567  gettext_noop("Logs long lock waits."),
1568  NULL
1569  },
1570  &log_lock_waits,
1571  false,
1572  NULL, NULL, NULL
1573  },
1574  {
1575  {"log_recovery_conflict_waits", PGC_SIGHUP, LOGGING_WHAT,
1576  gettext_noop("Logs standby recovery conflict waits."),
1577  NULL
1578  },
1580  false,
1581  NULL, NULL, NULL
1582  },
1583  {
1584  {"log_hostname", PGC_SIGHUP, LOGGING_WHAT,
1585  gettext_noop("Logs the host name in the connection logs."),
1586  gettext_noop("By default, connection logs only show the IP address "
1587  "of the connecting host. If you want them to show the host name you "
1588  "can turn this on, but depending on your host name resolution "
1589  "setup it might impose a non-negligible performance penalty.")
1590  },
1591  &log_hostname,
1592  false,
1593  NULL, NULL, NULL
1594  },
1595  {
1596  {"transform_null_equals", PGC_USERSET, COMPAT_OPTIONS_OTHER,
1597  gettext_noop("Treats \"expr=NULL\" as \"expr IS NULL\"."),
1598  gettext_noop("When turned on, expressions of the form expr = NULL "
1599  "(or NULL = expr) are treated as expr IS NULL, that is, they "
1600  "return true if expr evaluates to the null value, and false "
1601  "otherwise. The correct behavior of expr = NULL is to always "
1602  "return null (unknown).")
1603  },
1605  false,
1606  NULL, NULL, NULL
1607  },
1608  {
1609  {"default_transaction_read_only", PGC_USERSET, CLIENT_CONN_STATEMENT,
1610  gettext_noop("Sets the default read-only status of new transactions."),
1611  NULL,
1612  GUC_REPORT
1613  },
1615  false,
1616  NULL, NULL, NULL
1617  },
1618  {
1619  {"transaction_read_only", PGC_USERSET, CLIENT_CONN_STATEMENT,
1620  gettext_noop("Sets the current transaction's read-only status."),
1621  NULL,
1623  },
1624  &XactReadOnly,
1625  false,
1626  check_transaction_read_only, NULL, NULL
1627  },
1628  {
1629  {"default_transaction_deferrable", PGC_USERSET, CLIENT_CONN_STATEMENT,
1630  gettext_noop("Sets the default deferrable status of new transactions."),
1631  NULL
1632  },
1634  false,
1635  NULL, NULL, NULL
1636  },
1637  {
1638  {"transaction_deferrable", PGC_USERSET, CLIENT_CONN_STATEMENT,
1639  gettext_noop("Whether to defer a read-only serializable transaction until it can be executed with no possible serialization failures."),
1640  NULL,
1642  },
1643  &XactDeferrable,
1644  false,
1645  check_transaction_deferrable, NULL, NULL
1646  },
1647  {
1648  {"row_security", PGC_USERSET, CLIENT_CONN_STATEMENT,
1649  gettext_noop("Enable row security."),
1650  gettext_noop("When enabled, row security will be applied to all users.")
1651  },
1652  &row_security,
1653  true,
1654  NULL, NULL, NULL
1655  },
1656  {
1657  {"check_function_bodies", PGC_USERSET, CLIENT_CONN_STATEMENT,
1658  gettext_noop("Check routine bodies during CREATE FUNCTION and CREATE PROCEDURE."),
1659  NULL
1660  },
1662  true,
1663  NULL, NULL, NULL
1664  },
1665  {
1666  {"array_nulls", PGC_USERSET, COMPAT_OPTIONS_PREVIOUS,
1667  gettext_noop("Enable input of NULL elements in arrays."),
1668  gettext_noop("When turned on, unquoted NULL in an array input "
1669  "value means a null value; "
1670  "otherwise it is taken literally.")
1671  },
1672  &Array_nulls,
1673  true,
1674  NULL, NULL, NULL
1675  },
1676 
1677  /*
1678  * WITH OIDS support, and consequently default_with_oids, was removed in
1679  * PostgreSQL 12, but we tolerate the parameter being set to false to
1680  * avoid unnecessarily breaking older dump files.
1681  */
1682  {
1683  {"default_with_oids", PGC_USERSET, COMPAT_OPTIONS_PREVIOUS,
1684  gettext_noop("WITH OIDS is no longer supported; this can only be false."),
1685  NULL,
1687  },
1689  false,
1690  check_default_with_oids, NULL, NULL
1691  },
1692  {
1693  {"logging_collector", PGC_POSTMASTER, LOGGING_WHERE,
1694  gettext_noop("Start a subprocess to capture stderr output and/or csvlogs into log files."),
1695  NULL
1696  },
1698  false,
1699  NULL, NULL, NULL
1700  },
1701  {
1702  {"log_truncate_on_rotation", PGC_SIGHUP, LOGGING_WHERE,
1703  gettext_noop("Truncate existing log files of same name during log rotation."),
1704  NULL
1705  },
1707  false,
1708  NULL, NULL, NULL
1709  },
1710 
1711  {
1712  {"trace_sort", PGC_USERSET, DEVELOPER_OPTIONS,
1713  gettext_noop("Emit information about resource usage in sorting."),
1714  NULL,
1716  },
1717  &trace_sort,
1718  false,
1719  NULL, NULL, NULL
1720  },
1721 
1722 #ifdef TRACE_SYNCSCAN
1723  /* this is undocumented because not exposed in a standard build */
1724  {
1725  {"trace_syncscan", PGC_USERSET, DEVELOPER_OPTIONS,
1726  gettext_noop("Generate debugging output for synchronized scanning."),
1727  NULL,
1729  },
1730  &trace_syncscan,
1731  false,
1732  NULL, NULL, NULL
1733  },
1734 #endif
1735 
1736 #ifdef DEBUG_BOUNDED_SORT
1737  /* this is undocumented because not exposed in a standard build */
1738  {
1739  {
1740  "optimize_bounded_sort", PGC_USERSET, QUERY_TUNING_METHOD,
1741  gettext_noop("Enable bounded sorting using heap sort."),
1742  NULL,
1744  },
1745  &optimize_bounded_sort,
1746  true,
1747  NULL, NULL, NULL
1748  },
1749 #endif
1750 
1751 #ifdef WAL_DEBUG
1752  {
1753  {"wal_debug", PGC_SUSET, DEVELOPER_OPTIONS,
1754  gettext_noop("Emit WAL-related debugging output."),
1755  NULL,
1757  },
1758  &XLOG_DEBUG,
1759  false,
1760  NULL, NULL, NULL
1761  },
1762 #endif
1763 
1764  {
1765  {"integer_datetimes", PGC_INTERNAL, PRESET_OPTIONS,
1766  gettext_noop("Shows whether datetimes are integer based."),
1767  NULL,
1769  },
1771  true,
1772  NULL, NULL, NULL
1773  },
1774 
1775  {
1776  {"krb_caseins_users", PGC_SIGHUP, CONN_AUTH_AUTH,
1777  gettext_noop("Sets whether Kerberos and GSSAPI user names should be treated as case-insensitive."),
1778  NULL
1779  },
1781  false,
1782  NULL, NULL, NULL
1783  },
1784 
1785  {
1786  {"gss_accept_delegation", PGC_SIGHUP, CONN_AUTH_AUTH,
1787  gettext_noop("Sets whether GSSAPI delegation should be accepted from the client."),
1788  NULL
1789  },
1791  false,
1792  NULL, NULL, NULL
1793  },
1794 
1795  {
1796  {"escape_string_warning", PGC_USERSET, COMPAT_OPTIONS_PREVIOUS,
1797  gettext_noop("Warn about backslash escapes in ordinary string literals."),
1798  NULL
1799  },
1801  true,
1802  NULL, NULL, NULL
1803  },
1804 
1805  {
1806  {"standard_conforming_strings", PGC_USERSET, COMPAT_OPTIONS_PREVIOUS,
1807  gettext_noop("Causes '...' strings to treat backslashes literally."),
1808  NULL,
1809  GUC_REPORT
1810  },
1812  true,
1813  NULL, NULL, NULL
1814  },
1815 
1816  {
1817  {"synchronize_seqscans", PGC_USERSET, COMPAT_OPTIONS_PREVIOUS,
1818  gettext_noop("Enable synchronized sequential scans."),
1819  NULL
1820  },
1822  true,
1823  NULL, NULL, NULL
1824  },
1825 
1826  {
1827  {"recovery_target_inclusive", PGC_POSTMASTER, WAL_RECOVERY_TARGET,
1828  gettext_noop("Sets whether to include or exclude transaction with recovery target."),
1829  NULL
1830  },
1832  true,
1833  NULL, NULL, NULL
1834  },
1835 
1836  {
1837  {"summarize_wal", PGC_SIGHUP, WAL_SUMMARIZATION,
1838  gettext_noop("Starts the WAL summarizer process to enable incremental backup."),
1839  NULL
1840  },
1841  &summarize_wal,
1842  false,
1843  NULL, NULL, NULL
1844  },
1845 
1846  {
1847  {"hot_standby", PGC_POSTMASTER, REPLICATION_STANDBY,
1848  gettext_noop("Allows connections and queries during recovery."),
1849  NULL
1850  },
1852  true,
1853  NULL, NULL, NULL
1854  },
1855 
1856  {
1857  {"hot_standby_feedback", PGC_SIGHUP, REPLICATION_STANDBY,
1858  gettext_noop("Allows feedback from a hot standby to the primary that will avoid query conflicts."),
1859  NULL
1860  },
1862  false,
1863  NULL, NULL, NULL
1864  },
1865 
1866  {
1867  {"in_hot_standby", PGC_INTERNAL, PRESET_OPTIONS,
1868  gettext_noop("Shows whether hot standby is currently active."),
1869  NULL,
1871  },
1873  false,
1874  NULL, NULL, show_in_hot_standby
1875  },
1876 
1877  {
1878  {"allow_system_table_mods", PGC_SUSET, DEVELOPER_OPTIONS,
1879  gettext_noop("Allows modifications of the structure of system tables."),
1880  NULL,
1882  },
1884  false,
1885  NULL, NULL, NULL
1886  },
1887 
1888  {
1889  {"ignore_system_indexes", PGC_BACKEND, DEVELOPER_OPTIONS,
1890  gettext_noop("Disables reading from system indexes."),
1891  gettext_noop("It does not prevent updating the indexes, so it is safe "
1892  "to use. The worst consequence is slowness."),
1894  },
1896  false,
1897  NULL, NULL, NULL
1898  },
1899 
1900  {
1901  {"allow_in_place_tablespaces", PGC_SUSET, DEVELOPER_OPTIONS,
1902  gettext_noop("Allows tablespaces directly inside pg_tblspc, for testing."),
1903  NULL,
1905  },
1907  false,
1908  NULL, NULL, NULL
1909  },
1910 
1911  {
1912  {"lo_compat_privileges", PGC_SUSET, COMPAT_OPTIONS_PREVIOUS,
1913  gettext_noop("Enables backward compatibility mode for privilege checks on large objects."),
1914  gettext_noop("Skips privilege checks when reading or modifying large objects, "
1915  "for compatibility with PostgreSQL releases prior to 9.0.")
1916  },
1918  false,
1919  NULL, NULL, NULL
1920  },
1921 
1922  {
1923  {"quote_all_identifiers", PGC_USERSET, COMPAT_OPTIONS_PREVIOUS,
1924  gettext_noop("When generating SQL fragments, quote all identifiers."),
1925  NULL,
1926  },
1928  false,
1929  NULL, NULL, NULL
1930  },
1931 
1932  {
1933  {"data_checksums", PGC_INTERNAL, PRESET_OPTIONS,
1934  gettext_noop("Shows whether data checksums are turned on for this cluster."),
1935  NULL,
1937  },
1938  &data_checksums,
1939  false,
1940  NULL, NULL, NULL
1941  },
1942 
1943  {
1944  {"syslog_sequence_numbers", PGC_SIGHUP, LOGGING_WHERE,
1945  gettext_noop("Add sequence number to syslog messages to avoid duplicate suppression."),
1946  NULL
1947  },
1949  true,
1950  NULL, NULL, NULL
1951  },
1952 
1953  {
1954  {"syslog_split_messages", PGC_SIGHUP, LOGGING_WHERE,
1955  gettext_noop("Split messages sent to syslog by lines and to fit into 1024 bytes."),
1956  NULL
1957  },
1959  true,
1960  NULL, NULL, NULL
1961  },
1962 
1963  {
1964  {"parallel_leader_participation", PGC_USERSET, RESOURCES_ASYNCHRONOUS,
1965  gettext_noop("Controls whether Gather and Gather Merge also run subplans."),
1966  gettext_noop("Should gather nodes also run subplans or just gather tuples?"),
1967  GUC_EXPLAIN
1968  },
1970  true,
1971  NULL, NULL, NULL
1972  },
1973 
1974  {
1976  gettext_noop("Allow JIT compilation."),
1977  NULL,
1978  GUC_EXPLAIN
1979  },
1980  &jit_enabled,
1981  true,
1982  NULL, NULL, NULL
1983  },
1984 
1985  {
1986  {"jit_debugging_support", PGC_SU_BACKEND, DEVELOPER_OPTIONS,
1987  gettext_noop("Register JIT-compiled functions with debugger."),
1988  NULL,
1990  },
1992  false,
1993 
1994  /*
1995  * This is not guaranteed to be available, but given it's a developer
1996  * oriented option, it doesn't seem worth adding code checking
1997  * availability.
1998  */
1999  NULL, NULL, NULL
2000  },
2001 
2002  {
2003  {"jit_dump_bitcode", PGC_SUSET, DEVELOPER_OPTIONS,
2004  gettext_noop("Write out LLVM bitcode to facilitate JIT debugging."),
2005  NULL,
2007  },
2009  false,
2010  NULL, NULL, NULL
2011  },
2012 
2013  {
2014  {"jit_expressions", PGC_USERSET, DEVELOPER_OPTIONS,
2015  gettext_noop("Allow JIT compilation of expressions."),
2016  NULL,
2018  },
2019  &jit_expressions,
2020  true,
2021  NULL, NULL, NULL
2022  },
2023 
2024  {
2025  {"jit_profiling_support", PGC_SU_BACKEND, DEVELOPER_OPTIONS,
2026  gettext_noop("Register JIT-compiled functions with perf profiler."),
2027  NULL,
2029  },
2031  false,
2032 
2033  /*
2034  * This is not guaranteed to be available, but given it's a developer
2035  * oriented option, it doesn't seem worth adding code checking
2036  * availability.
2037  */
2038  NULL, NULL, NULL
2039  },
2040 
2041  {
2042  {"jit_tuple_deforming", PGC_USERSET, DEVELOPER_OPTIONS,
2043  gettext_noop("Allow JIT compilation of tuple deforming."),
2044  NULL,
2046  },
2048  true,
2049  NULL, NULL, NULL
2050  },
2051 
2052  {
2053  {"data_sync_retry", PGC_POSTMASTER, ERROR_HANDLING_OPTIONS,
2054  gettext_noop("Whether to continue running after a failure to sync data files."),
2055  },
2056  &data_sync_retry,
2057  false,
2058  NULL, NULL, NULL
2059  },
2060 
2061  {
2062  {"wal_receiver_create_temp_slot", PGC_SIGHUP, REPLICATION_STANDBY,
2063  gettext_noop("Sets whether a WAL receiver should create a temporary replication slot if no permanent slot is configured."),
2064  },
2066  false,
2067  NULL, NULL, NULL
2068  },
2069 
2070  {
2071  {"event_triggers", PGC_SUSET, CLIENT_CONN_STATEMENT,
2072  gettext_noop("Enables event triggers."),
2073  gettext_noop("When enabled, event triggers will fire for all applicable statements."),
2074  },
2075  &event_triggers,
2076  true,
2077  NULL, NULL, NULL
2078  },
2079 
2080  {
2081  {"sync_replication_slots", PGC_SIGHUP, REPLICATION_STANDBY,
2082  gettext_noop("Enables a physical standby to synchronize logical failover replication slots from the primary server."),
2083  },
2085  false,
2086  NULL, NULL, NULL
2087  },
2088 
2089  /* End-of-list marker */
2090  {
2091  {NULL, 0, 0, NULL, NULL}, NULL, false, NULL, NULL, NULL
2092  }
2093 };
2094 
2095 
2096 struct config_int ConfigureNamesInt[] =
2097 {
2098  {
2099  {"archive_timeout", PGC_SIGHUP, WAL_ARCHIVING,
2100  gettext_noop("Sets the amount of time to wait before forcing a "
2101  "switch to the next WAL file."),
2102  NULL,
2103  GUC_UNIT_S
2104  },
2106  0, 0, INT_MAX / 2,
2107  NULL, NULL, NULL
2108  },
2109  {
2110  {"post_auth_delay", PGC_BACKEND, DEVELOPER_OPTIONS,
2111  gettext_noop("Sets the amount of time to wait after "
2112  "authentication on connection startup."),
2113  gettext_noop("This allows attaching a debugger to the process."),
2115  },
2116  &PostAuthDelay,
2117  0, 0, INT_MAX / 1000000,
2118  NULL, NULL, NULL
2119  },
2120  {
2121  {"default_statistics_target", PGC_USERSET, QUERY_TUNING_OTHER,
2122  gettext_noop("Sets the default statistics target."),
2123  gettext_noop("This applies to table columns that have not had a "
2124  "column-specific target set via ALTER TABLE SET STATISTICS.")
2125  },
2127  100, 1, MAX_STATISTICS_TARGET,
2128  NULL, NULL, NULL
2129  },
2130  {
2131  {"from_collapse_limit", PGC_USERSET, QUERY_TUNING_OTHER,
2132  gettext_noop("Sets the FROM-list size beyond which subqueries "
2133  "are not collapsed."),
2134  gettext_noop("The planner will merge subqueries into upper "
2135  "queries if the resulting FROM list would have no more than "
2136  "this many items."),
2137  GUC_EXPLAIN
2138  },
2140  8, 1, INT_MAX,
2141  NULL, NULL, NULL
2142  },
2143  {
2144  {"join_collapse_limit", PGC_USERSET, QUERY_TUNING_OTHER,
2145  gettext_noop("Sets the FROM-list size beyond which JOIN "
2146  "constructs are not flattened."),
2147  gettext_noop("The planner will flatten explicit JOIN "
2148  "constructs into lists of FROM items whenever a "
2149  "list of no more than this many items would result."),
2150  GUC_EXPLAIN
2151  },
2153  8, 1, INT_MAX,
2154  NULL, NULL, NULL
2155  },
2156  {
2157  {"geqo_threshold", PGC_USERSET, QUERY_TUNING_GEQO,
2158  gettext_noop("Sets the threshold of FROM items beyond which GEQO is used."),
2159  NULL,
2160  GUC_EXPLAIN
2161  },
2162  &geqo_threshold,
2163  12, 2, INT_MAX,
2164  NULL, NULL, NULL
2165  },
2166  {
2167  {"geqo_effort", PGC_USERSET, QUERY_TUNING_GEQO,
2168  gettext_noop("GEQO: effort is used to set the default for other GEQO parameters."),
2169  NULL,
2170  GUC_EXPLAIN
2171  },
2172  &Geqo_effort,
2174  NULL, NULL, NULL
2175  },
2176  {
2177  {"geqo_pool_size", PGC_USERSET, QUERY_TUNING_GEQO,
2178  gettext_noop("GEQO: number of individuals in the population."),
2179  gettext_noop("Zero selects a suitable default value."),
2180  GUC_EXPLAIN
2181  },
2182  &Geqo_pool_size,
2183  0, 0, INT_MAX,
2184  NULL, NULL, NULL
2185  },
2186  {
2187  {"geqo_generations", PGC_USERSET, QUERY_TUNING_GEQO,
2188  gettext_noop("GEQO: number of iterations of the algorithm."),
2189  gettext_noop("Zero selects a suitable default value."),
2190  GUC_EXPLAIN
2191  },
2193  0, 0, INT_MAX,
2194  NULL, NULL, NULL
2195  },
2196 
2197  {
2198  /* This is PGC_SUSET to prevent hiding from log_lock_waits. */
2199  {"deadlock_timeout", PGC_SUSET, LOCK_MANAGEMENT,
2200  gettext_noop("Sets the time to wait on a lock before checking for deadlock."),
2201  NULL,
2202  GUC_UNIT_MS
2203  },
2204  &DeadlockTimeout,
2205  1000, 1, INT_MAX,
2206  NULL, NULL, NULL
2207  },
2208 
2209  {
2210  {"max_standby_archive_delay", PGC_SIGHUP, REPLICATION_STANDBY,
2211  gettext_noop("Sets the maximum delay before canceling queries when a hot standby server is processing archived WAL data."),
2212  NULL,
2213  GUC_UNIT_MS
2214  },
2216  30 * 1000, -1, INT_MAX,
2217  NULL, NULL, NULL
2218  },
2219 
2220  {
2221  {"max_standby_streaming_delay", PGC_SIGHUP, REPLICATION_STANDBY,
2222  gettext_noop("Sets the maximum delay before canceling queries when a hot standby server is processing streamed WAL data."),
2223  NULL,
2224  GUC_UNIT_MS
2225  },
2227  30 * 1000, -1, INT_MAX,
2228  NULL, NULL, NULL
2229  },
2230 
2231  {
2232  {"recovery_min_apply_delay", PGC_SIGHUP, REPLICATION_STANDBY,
2233  gettext_noop("Sets the minimum delay for applying changes during recovery."),
2234  NULL,
2235  GUC_UNIT_MS
2236  },
2238  0, 0, INT_MAX,
2239  NULL, NULL, NULL
2240  },
2241 
2242  {
2243  {"wal_receiver_status_interval", PGC_SIGHUP, REPLICATION_STANDBY,
2244  gettext_noop("Sets the maximum interval between WAL receiver status reports to the sending server."),
2245  NULL,
2246  GUC_UNIT_S
2247  },
2249  10, 0, INT_MAX / 1000,
2250  NULL, NULL, NULL
2251  },
2252 
2253  {
2254  {"wal_receiver_timeout", PGC_SIGHUP, REPLICATION_STANDBY,
2255  gettext_noop("Sets the maximum wait time to receive data from the sending server."),
2256  NULL,
2257  GUC_UNIT_MS
2258  },
2260  60 * 1000, 0, INT_MAX,
2261  NULL, NULL, NULL
2262  },
2263 
2264  {
2265  {"max_connections", PGC_POSTMASTER, CONN_AUTH_SETTINGS,
2266  gettext_noop("Sets the maximum number of concurrent connections."),
2267  NULL
2268  },
2269  &MaxConnections,
2270  100, 1, MAX_BACKENDS,
2271  NULL, NULL, NULL
2272  },
2273 
2274  {
2275  /* see max_connections */
2276  {"superuser_reserved_connections", PGC_POSTMASTER, CONN_AUTH_SETTINGS,
2277  gettext_noop("Sets the number of connection slots reserved for superusers."),
2278  NULL
2279  },
2281  3, 0, MAX_BACKENDS,
2282  NULL, NULL, NULL
2283  },
2284 
2285  {
2286  {"reserved_connections", PGC_POSTMASTER, CONN_AUTH_SETTINGS,
2287  gettext_noop("Sets the number of connection slots reserved for roles "
2288  "with privileges of pg_use_reserved_connections."),
2289  NULL
2290  },
2292  0, 0, MAX_BACKENDS,
2293  NULL, NULL, NULL
2294  },
2295 
2296  {
2297  {"min_dynamic_shared_memory", PGC_POSTMASTER, RESOURCES_MEM,
2298  gettext_noop("Amount of dynamic shared memory reserved at startup."),
2299  NULL,
2300  GUC_UNIT_MB
2301  },
2303  0, 0, (int) Min((size_t) INT_MAX, SIZE_MAX / (1024 * 1024)),
2304  NULL, NULL, NULL
2305  },
2306 
2307  /*
2308  * We sometimes multiply the number of shared buffers by two without
2309  * checking for overflow, so we mustn't allow more than INT_MAX / 2.
2310  */
2311  {
2312  {"shared_buffers", PGC_POSTMASTER, RESOURCES_MEM,
2313  gettext_noop("Sets the number of shared memory buffers used by the server."),
2314  NULL,
2316  },
2317  &NBuffers,
2318  16384, 16, INT_MAX / 2,
2319  NULL, NULL, NULL
2320  },
2321 
2322  {
2323  {"vacuum_buffer_usage_limit", PGC_USERSET, RESOURCES_MEM,
2324  gettext_noop("Sets the buffer pool size for VACUUM, ANALYZE, and autovacuum."),
2325  NULL,
2326  GUC_UNIT_KB
2327  },
2329  2048, 0, MAX_BAS_VAC_RING_SIZE_KB,
2331  },
2332 
2333  {
2334  {"shared_memory_size", PGC_INTERNAL, PRESET_OPTIONS,
2335  gettext_noop("Shows the size of the server's main shared memory area (rounded up to the nearest MB)."),
2336  NULL,
2338  },
2340  0, 0, INT_MAX,
2341  NULL, NULL, NULL
2342  },
2343 
2344  {
2345  {"shared_memory_size_in_huge_pages", PGC_INTERNAL, PRESET_OPTIONS,
2346  gettext_noop("Shows the number of huge pages needed for the main shared memory area."),
2347  gettext_noop("-1 indicates that the value could not be determined."),
2349  },
2351  -1, -1, INT_MAX,
2352  NULL, NULL, NULL
2353  },
2354 
2355  {
2356  {"num_os_semaphores", PGC_INTERNAL, PRESET_OPTIONS,
2357  gettext_noop("Shows the number of semaphores required for the server."),
2358  NULL,
2360  },
2362  0, 0, INT_MAX,
2363  NULL, NULL, NULL
2364  },
2365 
2366  {
2367  {"commit_timestamp_buffers", PGC_POSTMASTER, RESOURCES_MEM,
2368  gettext_noop("Sets the size of the dedicated buffer pool used for the commit timestamp cache."),
2369  gettext_noop("Specify 0 to have this value determined as a fraction of \"shared_buffers\"."),
2371  },
2374  check_commit_ts_buffers, NULL, NULL
2375  },
2376 
2377  {
2378  {"multixact_member_buffers", PGC_POSTMASTER, RESOURCES_MEM,
2379  gettext_noop("Sets the size of the dedicated buffer pool used for the MultiXact member cache."),
2380  NULL,
2382  },
2384  32, 16, SLRU_MAX_ALLOWED_BUFFERS,
2385  check_multixact_member_buffers, NULL, NULL
2386  },
2387 
2388  {
2389  {"multixact_offset_buffers", PGC_POSTMASTER, RESOURCES_MEM,
2390  gettext_noop("Sets the size of the dedicated buffer pool used for the MultiXact offset cache."),
2391  NULL,
2393  },
2395  16, 16, SLRU_MAX_ALLOWED_BUFFERS,
2396  check_multixact_offset_buffers, NULL, NULL
2397  },
2398 
2399  {
2400  {"notify_buffers", PGC_POSTMASTER, RESOURCES_MEM,
2401  gettext_noop("Sets the size of the dedicated buffer pool used for the LISTEN/NOTIFY message cache."),
2402  NULL,
2404  },
2405  &notify_buffers,
2406  16, 16, SLRU_MAX_ALLOWED_BUFFERS,
2407  check_notify_buffers, NULL, NULL
2408  },
2409 
2410  {
2411  {"serializable_buffers", PGC_POSTMASTER, RESOURCES_MEM,
2412  gettext_noop("Sets the size of the dedicated buffer pool used for the serializable transaction cache."),
2413  NULL,
2415  },
2417  32, 16, SLRU_MAX_ALLOWED_BUFFERS,
2418  check_serial_buffers, NULL, NULL
2419  },
2420 
2421  {
2422  {"subtransaction_buffers", PGC_POSTMASTER, RESOURCES_MEM,
2423  gettext_noop("Sets the size of the dedicated buffer pool used for the subtransaction cache."),
2424  gettext_noop("Specify 0 to have this value determined as a fraction of \"shared_buffers\"."),
2426  },
2429  check_subtrans_buffers, NULL, NULL
2430  },
2431 
2432  {
2433  {"transaction_buffers", PGC_POSTMASTER, RESOURCES_MEM,
2434  gettext_noop("Sets the size of the dedicated buffer pool used for the transaction status cache."),
2435  gettext_noop("Specify 0 to have this value determined as a fraction of \"shared_buffers\"."),
2437  },
2440  check_transaction_buffers, NULL, NULL
2441  },
2442 
2443  {
2444  {"temp_buffers", PGC_USERSET, RESOURCES_MEM,
2445  gettext_noop("Sets the maximum number of temporary buffers used by each session."),
2446  NULL,
2448  },
2450  1024, 100, INT_MAX / 2,
2451  check_temp_buffers, NULL, NULL
2452  },
2453 
2454  {
2456  gettext_noop("Sets the TCP port the server listens on."),
2457  NULL
2458  },
2459  &PostPortNumber,
2460  DEF_PGPORT, 1, 65535,
2461  NULL, NULL, NULL
2462  },
2463 
2464  {
2465  {"unix_socket_permissions", PGC_POSTMASTER, CONN_AUTH_SETTINGS,
2466  gettext_noop("Sets the access permissions of the Unix-domain socket."),
2467  gettext_noop("Unix-domain sockets use the usual Unix file system "
2468  "permission set. The parameter value is expected "
2469  "to be a numeric mode specification in the form "
2470  "accepted by the chmod and umask system calls. "
2471  "(To use the customary octal format the number must "
2472  "start with a 0 (zero).)")
2473  },
2475  0777, 0000, 0777,
2476  NULL, NULL, show_unix_socket_permissions
2477  },
2478 
2479  {
2480  {"log_file_mode", PGC_SIGHUP, LOGGING_WHERE,
2481  gettext_noop("Sets the file permissions for log files."),
2482  gettext_noop("The parameter value is expected "
2483  "to be a numeric mode specification in the form "
2484  "accepted by the chmod and umask system calls. "
2485  "(To use the customary octal format the number must "
2486  "start with a 0 (zero).)")
2487  },
2488  &Log_file_mode,
2489  0600, 0000, 0777,
2490  NULL, NULL, show_log_file_mode
2491  },
2492 
2493 
2494  {
2495  {"data_directory_mode", PGC_INTERNAL, PRESET_OPTIONS,
2496  gettext_noop("Shows the mode of the data directory."),
2497  gettext_noop("The parameter value is a numeric mode specification "
2498  "in the form accepted by the chmod and umask system "
2499  "calls. (To use the customary octal format the number "
2500  "must start with a 0 (zero).)"),
2502  },
2504  0700, 0000, 0777,
2505  NULL, NULL, show_data_directory_mode
2506  },
2507 
2508  {
2509  {"work_mem", PGC_USERSET, RESOURCES_MEM,
2510  gettext_noop("Sets the maximum memory to be used for query workspaces."),
2511  gettext_noop("This much memory can be used by each internal "
2512  "sort operation and hash table before switching to "
2513  "temporary disk files."),
2515  },
2516  &work_mem,
2517  4096, 64, MAX_KILOBYTES,
2518  NULL, NULL, NULL
2519  },
2520 
2521  /*
2522  * Dynamic shared memory has a higher overhead than local memory contexts,
2523  * so when testing low-memory scenarios that could use shared memory, the
2524  * recommended minimum is 1MB.
2525  */
2526  {
2527  {"maintenance_work_mem", PGC_USERSET, RESOURCES_MEM,
2528  gettext_noop("Sets the maximum memory to be used for maintenance operations."),
2529  gettext_noop("This includes operations such as VACUUM and CREATE INDEX."),
2530  GUC_UNIT_KB
2531  },
2533  65536, 64, MAX_KILOBYTES,
2534  NULL, NULL, NULL
2535  },
2536 
2537  {
2538  {"logical_decoding_work_mem", PGC_USERSET, RESOURCES_MEM,
2539  gettext_noop("Sets the maximum memory to be used for logical decoding."),
2540  gettext_noop("This much memory can be used by each internal "
2541  "reorder buffer before spilling to disk."),
2542  GUC_UNIT_KB
2543  },
2545  65536, 64, MAX_KILOBYTES,
2546  NULL, NULL, NULL
2547  },
2548 
2549  /*
2550  * We use the hopefully-safely-small value of 100kB as the compiled-in
2551  * default for max_stack_depth. InitializeGUCOptions will increase it if
2552  * possible, depending on the actual platform-specific stack limit.
2553  */
2554  {
2555  {"max_stack_depth", PGC_SUSET, RESOURCES_MEM,
2556  gettext_noop("Sets the maximum stack depth, in kilobytes."),
2557  NULL,
2558  GUC_UNIT_KB
2559  },
2560  &max_stack_depth,
2561  100, 100, MAX_KILOBYTES,
2563  },
2564 
2565  {
2566  {"temp_file_limit", PGC_SUSET, RESOURCES_DISK,
2567  gettext_noop("Limits the total size of all temporary files used by each process."),
2568  gettext_noop("-1 means no limit."),
2569  GUC_UNIT_KB
2570  },
2571  &temp_file_limit,
2572  -1, -1, INT_MAX,
2573  NULL, NULL, NULL
2574  },
2575 
2576  {
2577  {"vacuum_cost_page_hit", PGC_USERSET, RESOURCES_VACUUM_DELAY,
2578  gettext_noop("Vacuum cost for a page found in the buffer cache."),
2579  NULL
2580  },
2582  1, 0, 10000,
2583  NULL, NULL, NULL
2584  },
2585 
2586  {
2587  {"vacuum_cost_page_miss", PGC_USERSET, RESOURCES_VACUUM_DELAY,
2588  gettext_noop("Vacuum cost for a page not found in the buffer cache."),
2589  NULL
2590  },
2592  2, 0, 10000,
2593  NULL, NULL, NULL
2594  },
2595 
2596  {
2597  {"vacuum_cost_page_dirty", PGC_USERSET, RESOURCES_VACUUM_DELAY,
2598  gettext_noop("Vacuum cost for a page dirtied by vacuum."),
2599  NULL
2600  },
2602  20, 0, 10000,
2603  NULL, NULL, NULL
2604  },
2605 
2606  {
2607  {"vacuum_cost_limit", PGC_USERSET, RESOURCES_VACUUM_DELAY,
2608  gettext_noop("Vacuum cost amount available before napping."),
2609  NULL
2610  },
2611  &VacuumCostLimit,
2612  200, 1, 10000,
2613  NULL, NULL, NULL
2614  },
2615 
2616  {
2617  {"autovacuum_vacuum_cost_limit", PGC_SIGHUP, AUTOVACUUM,
2618  gettext_noop("Vacuum cost amount available before napping, for autovacuum."),
2619  NULL
2620  },
2622  -1, -1, 10000,
2623  NULL, NULL, NULL
2624  },
2625 
2626  {
2627  {"max_files_per_process", PGC_POSTMASTER, RESOURCES_KERNEL,
2628  gettext_noop("Sets the maximum number of simultaneously open files for each server process."),
2629  NULL
2630  },
2632  1000, 64, INT_MAX,
2633  NULL, NULL, NULL
2634  },
2635 
2636  /*
2637  * See also CheckRequiredParameterValues() if this parameter changes
2638  */
2639  {
2640  {"max_prepared_transactions", PGC_POSTMASTER, RESOURCES_MEM,
2641  gettext_noop("Sets the maximum number of simultaneously prepared transactions."),
2642  NULL
2643  },
2645  0, 0, MAX_BACKENDS,
2646  NULL, NULL, NULL
2647  },
2648 
2649 #ifdef LOCK_DEBUG
2650  {
2651  {"trace_lock_oidmin", PGC_SUSET, DEVELOPER_OPTIONS,
2652  gettext_noop("Sets the minimum OID of tables for tracking locks."),
2653  gettext_noop("Is used to avoid output on system tables."),
2655  },
2656  &Trace_lock_oidmin,
2657  FirstNormalObjectId, 0, INT_MAX,
2658  NULL, NULL, NULL
2659  },
2660  {
2661  {"trace_lock_table", PGC_SUSET, DEVELOPER_OPTIONS,
2662  gettext_noop("Sets the OID of the table with unconditionally lock tracing."),
2663  NULL,
2665  },
2666  &Trace_lock_table,
2667  0, 0, INT_MAX,
2668  NULL, NULL, NULL
2669  },
2670 #endif
2671 
2672  {
2673  {"statement_timeout", PGC_USERSET, CLIENT_CONN_STATEMENT,
2674  gettext_noop("Sets the maximum allowed duration of any statement."),
2675  gettext_noop("A value of 0 turns off the timeout."),
2676  GUC_UNIT_MS
2677  },
2679  0, 0, INT_MAX,
2680  NULL, NULL, NULL
2681  },
2682 
2683  {
2684  {"lock_timeout", PGC_USERSET, CLIENT_CONN_STATEMENT,
2685  gettext_noop("Sets the maximum allowed duration of any wait for a lock."),
2686  gettext_noop("A value of 0 turns off the timeout."),
2687  GUC_UNIT_MS
2688  },
2689  &LockTimeout,
2690  0, 0, INT_MAX,
2691  NULL, NULL, NULL
2692  },
2693 
2694  {
2695  {"idle_in_transaction_session_timeout", PGC_USERSET, CLIENT_CONN_STATEMENT,
2696  gettext_noop("Sets the maximum allowed idle time between queries, when in a transaction."),
2697  gettext_noop("A value of 0 turns off the timeout."),
2698  GUC_UNIT_MS
2699  },
2701  0, 0, INT_MAX,
2702  NULL, NULL, NULL
2703  },
2704 
2705  {
2706  {"transaction_timeout", PGC_USERSET, CLIENT_CONN_STATEMENT,
2707  gettext_noop("Sets the maximum allowed duration of any transaction within a session (not a prepared transaction)."),
2708  gettext_noop("A value of 0 turns off the timeout."),
2709  GUC_UNIT_MS
2710  },
2712  0, 0, INT_MAX,
2713  NULL, assign_transaction_timeout, NULL
2714  },
2715 
2716  {
2717  {"idle_session_timeout", PGC_USERSET, CLIENT_CONN_STATEMENT,
2718  gettext_noop("Sets the maximum allowed idle time between queries, when not in a transaction."),
2719  gettext_noop("A value of 0 turns off the timeout."),
2720  GUC_UNIT_MS
2721  },
2723  0, 0, INT_MAX,
2724  NULL, NULL, NULL
2725  },
2726 
2727  {
2728  {"vacuum_freeze_min_age", PGC_USERSET, CLIENT_CONN_STATEMENT,
2729  gettext_noop("Minimum age at which VACUUM should freeze a table row."),
2730  NULL
2731  },
2733  50000000, 0, 1000000000,
2734  NULL, NULL, NULL
2735  },
2736 
2737  {
2738  {"vacuum_freeze_table_age", PGC_USERSET, CLIENT_CONN_STATEMENT,
2739  gettext_noop("Age at which VACUUM should scan whole table to freeze tuples."),
2740  NULL
2741  },
2743  150000000, 0, 2000000000,
2744  NULL, NULL, NULL
2745  },
2746 
2747  {
2748  {"vacuum_multixact_freeze_min_age", PGC_USERSET, CLIENT_CONN_STATEMENT,
2749  gettext_noop("Minimum age at which VACUUM should freeze a MultiXactId in a table row."),
2750  NULL
2751  },
2753  5000000, 0, 1000000000,
2754  NULL, NULL, NULL
2755  },
2756 
2757  {
2758  {"vacuum_multixact_freeze_table_age", PGC_USERSET, CLIENT_CONN_STATEMENT,
2759  gettext_noop("Multixact age at which VACUUM should scan whole table to freeze tuples."),
2760  NULL
2761  },
2763  150000000, 0, 2000000000,
2764  NULL, NULL, NULL
2765  },
2766 
2767  {
2768  {"vacuum_failsafe_age", PGC_USERSET, CLIENT_CONN_STATEMENT,
2769  gettext_noop("Age at which VACUUM should trigger failsafe to avoid a wraparound outage."),
2770  NULL
2771  },
2773  1600000000, 0, 2100000000,
2774  NULL, NULL, NULL
2775  },
2776  {
2777  {"vacuum_multixact_failsafe_age", PGC_USERSET, CLIENT_CONN_STATEMENT,
2778  gettext_noop("Multixact age at which VACUUM should trigger failsafe to avoid a wraparound outage."),
2779  NULL
2780  },
2782  1600000000, 0, 2100000000,
2783  NULL, NULL, NULL
2784  },
2785 
2786  /*
2787  * See also CheckRequiredParameterValues() if this parameter changes
2788  */
2789  {
2790  {"max_locks_per_transaction", PGC_POSTMASTER, LOCK_MANAGEMENT,
2791  gettext_noop("Sets the maximum number of locks per transaction."),
2792  gettext_noop("The shared lock table is sized on the assumption that at most "
2793  "\"max_locks_per_transaction\" objects per server process or prepared "
2794  "transaction will need to be locked at any one time.")
2795  },
2797  64, 10, INT_MAX,
2798  NULL, NULL, NULL
2799  },
2800 
2801  {
2802  {"max_pred_locks_per_transaction", PGC_POSTMASTER, LOCK_MANAGEMENT,
2803  gettext_noop("Sets the maximum number of predicate locks per transaction."),
2804  gettext_noop("The shared predicate lock table is sized on the assumption that "
2805  "at most \"max_pred_locks_per_transaction\" objects per server process "
2806  "or prepared transaction will need to be locked at any one time.")
2807  },
2809  64, 10, INT_MAX,
2810  NULL, NULL, NULL
2811  },
2812 
2813  {
2814  {"max_pred_locks_per_relation", PGC_SIGHUP, LOCK_MANAGEMENT,
2815  gettext_noop("Sets the maximum number of predicate-locked pages and tuples per relation."),
2816  gettext_noop("If more than this total of pages and tuples in the same relation are locked "
2817  "by a connection, those locks are replaced by a relation-level lock.")
2818  },
2820  -2, INT_MIN, INT_MAX,
2821  NULL, NULL, NULL
2822  },
2823 
2824  {
2825  {"max_pred_locks_per_page", PGC_SIGHUP, LOCK_MANAGEMENT,
2826  gettext_noop("Sets the maximum number of predicate-locked tuples per page."),
2827  gettext_noop("If more than this number of tuples on the same page are locked "
2828  "by a connection, those locks are replaced by a page-level lock.")
2829  },
2831  2, 0, INT_MAX,
2832  NULL, NULL, NULL
2833  },
2834 
2835  {
2836  {"authentication_timeout", PGC_SIGHUP, CONN_AUTH_AUTH,
2837  gettext_noop("Sets the maximum allowed time to complete client authentication."),
2838  NULL,
2839  GUC_UNIT_S
2840  },
2842  60, 1, 600,
2843  NULL, NULL, NULL
2844  },
2845 
2846  {
2847  /* Not for general use */
2848  {"pre_auth_delay", PGC_SIGHUP, DEVELOPER_OPTIONS,
2849  gettext_noop("Sets the amount of time to wait before "
2850  "authentication on connection startup."),
2851  gettext_noop("This allows attaching a debugger to the process."),
2853  },
2854  &PreAuthDelay,
2855  0, 0, 60,
2856  NULL, NULL, NULL
2857  },
2858 
2859  {
2860  {"max_notify_queue_pages", PGC_POSTMASTER, RESOURCES_DISK,
2861  gettext_noop("Sets the maximum number of allocated pages for NOTIFY / LISTEN queue."),
2862  NULL,
2863  },
2865  1048576, 64, INT_MAX,
2866  NULL, NULL, NULL
2867  },
2868 
2869  {
2870  {"wal_decode_buffer_size", PGC_POSTMASTER, WAL_RECOVERY,
2871  gettext_noop("Buffer size for reading ahead in the WAL during recovery."),
2872  gettext_noop("Maximum distance to read ahead in the WAL to prefetch referenced data blocks."),
2874  },
2876  512 * 1024, 64 * 1024, MaxAllocSize,
2877  NULL, NULL, NULL
2878  },
2879 
2880  {
2881  {"wal_keep_size", PGC_SIGHUP, REPLICATION_SENDING,
2882  gettext_noop("Sets the size of WAL files held for standby servers."),
2883  NULL,
2884  GUC_UNIT_MB
2885  },
2887  0, 0, MAX_KILOBYTES,
2888  NULL, NULL, NULL
2889  },
2890 
2891  {
2892  {"min_wal_size", PGC_SIGHUP, WAL_CHECKPOINTS,
2893  gettext_noop("Sets the minimum size to shrink the WAL to."),
2894  NULL,
2895  GUC_UNIT_MB
2896  },
2897  &min_wal_size_mb,
2898  DEFAULT_MIN_WAL_SEGS * (DEFAULT_XLOG_SEG_SIZE / (1024 * 1024)),
2899  2, MAX_KILOBYTES,
2900  NULL, NULL, NULL
2901  },
2902 
2903  {
2904  {"max_wal_size", PGC_SIGHUP, WAL_CHECKPOINTS,
2905  gettext_noop("Sets the WAL size that triggers a checkpoint."),
2906  NULL,
2907  GUC_UNIT_MB
2908  },
2909  &max_wal_size_mb,
2910  DEFAULT_MAX_WAL_SEGS * (DEFAULT_XLOG_SEG_SIZE / (1024 * 1024)),
2911  2, MAX_KILOBYTES,
2912  NULL, assign_max_wal_size, NULL
2913  },
2914 
2915  {
2916  {"checkpoint_timeout", PGC_SIGHUP, WAL_CHECKPOINTS,
2917  gettext_noop("Sets the maximum time between automatic WAL checkpoints."),
2918  NULL,
2919  GUC_UNIT_S
2920  },
2922  300, 30, 86400,
2923  NULL, NULL, NULL
2924  },
2925 
2926  {
2927  {"checkpoint_warning", PGC_SIGHUP, WAL_CHECKPOINTS,
2928  gettext_noop("Sets the maximum time before warning if checkpoints "
2929  "triggered by WAL volume happen too frequently."),
2930  gettext_noop("Write a message to the server log if checkpoints "
2931  "caused by the filling of WAL segment files happen more "
2932  "frequently than this amount of time. "
2933  "Zero turns off the warning."),
2934  GUC_UNIT_S
2935  },
2937  30, 0, INT_MAX,
2938  NULL, NULL, NULL
2939  },
2940 
2941  {
2942  {"checkpoint_flush_after", PGC_SIGHUP, WAL_CHECKPOINTS,
2943  gettext_noop("Number of pages after which previously performed writes are flushed to disk."),
2944  NULL,
2946  },
2949  NULL, NULL, NULL
2950  },
2951 
2952  {
2953  {"wal_buffers", PGC_POSTMASTER, WAL_SETTINGS,
2954  gettext_noop("Sets the number of disk-page buffers in shared memory for WAL."),
2955  gettext_noop("Specify -1 to have this value determined as a fraction of \"shared_buffers\"."),
2957  },
2958  &XLOGbuffers,
2959  -1, -1, (INT_MAX / XLOG_BLCKSZ),
2960  check_wal_buffers, NULL, NULL
2961  },
2962 
2963  {
2964  {"wal_writer_delay", PGC_SIGHUP, WAL_SETTINGS,
2965  gettext_noop("Time between WAL flushes performed in the WAL writer."),
2966  NULL,
2967  GUC_UNIT_MS
2968  },
2969  &WalWriterDelay,
2970  200, 1, 10000,
2971  NULL, NULL, NULL
2972  },
2973 
2974  {
2975  {"wal_writer_flush_after", PGC_SIGHUP, WAL_SETTINGS,
2976  gettext_noop("Amount of WAL written out by WAL writer that triggers a flush."),
2977  NULL,
2979  },
2981  DEFAULT_WAL_WRITER_FLUSH_AFTER, 0, INT_MAX,
2982  NULL, NULL, NULL
2983  },
2984 
2985  {
2986  {"wal_skip_threshold", PGC_USERSET, WAL_SETTINGS,
2987  gettext_noop("Minimum size of new file to fsync instead of writing WAL."),
2988  NULL,
2989  GUC_UNIT_KB
2990  },
2992  2048, 0, MAX_KILOBYTES,
2993  NULL, NULL, NULL
2994  },
2995 
2996  {
2997  {"max_wal_senders", PGC_POSTMASTER, REPLICATION_SENDING,
2998  gettext_noop("Sets the maximum number of simultaneously running WAL sender processes."),
2999  NULL
3000  },
3001  &max_wal_senders,
3002  10, 0, MAX_BACKENDS,
3003  NULL, NULL, NULL
3004  },
3005 
3006  {
3007  /* see max_wal_senders */
3008  {"max_replication_slots", PGC_POSTMASTER, REPLICATION_SENDING,
3009  gettext_noop("Sets the maximum number of simultaneously defined replication slots."),
3010  NULL
3011  },
3013  10, 0, MAX_BACKENDS /* XXX? */ ,
3014  NULL, NULL, NULL
3015  },
3016 
3017  {
3018  {"max_slot_wal_keep_size", PGC_SIGHUP, REPLICATION_SENDING,
3019  gettext_noop("Sets the maximum WAL size that can be reserved by replication slots."),
3020  gettext_noop("Replication slots will be marked as failed, and segments released "
3021  "for deletion or recycling, if this much space is occupied by WAL "
3022  "on disk."),
3023  GUC_UNIT_MB
3024  },
3026  -1, -1, MAX_KILOBYTES,
3027  check_max_slot_wal_keep_size, NULL, NULL
3028  },
3029 
3030  {
3031  {"wal_sender_timeout", PGC_USERSET, REPLICATION_SENDING,
3032  gettext_noop("Sets the maximum time to wait for WAL replication."),
3033  NULL,
3034  GUC_UNIT_MS
3035  },
3037  60 * 1000, 0, INT_MAX,
3038  NULL, NULL, NULL
3039  },
3040 
3041  {
3042  {"commit_delay", PGC_SUSET, WAL_SETTINGS,
3043  gettext_noop("Sets the delay in microseconds between transaction commit and "
3044  "flushing WAL to disk."),
3045  NULL
3046  /* we have no microseconds designation, so can't supply units here */
3047  },
3048  &CommitDelay,
3049  0, 0, 100000,
3050  NULL, NULL, NULL
3051  },
3052 
3053  {
3054  {"commit_siblings", PGC_USERSET, WAL_SETTINGS,
3055  gettext_noop("Sets the minimum number of concurrent open transactions "
3056  "required before performing \"commit_delay\"."),
3057  NULL
3058  },
3059  &CommitSiblings,
3060  5, 0, 1000,
3061  NULL, NULL, NULL
3062  },
3063 
3064  {
3065  {"extra_float_digits", PGC_USERSET, CLIENT_CONN_LOCALE,
3066  gettext_noop("Sets the number of digits displayed for floating-point values."),
3067  gettext_noop("This affects real, double precision, and geometric data types. "
3068  "A zero or negative parameter value is added to the standard "
3069  "number of digits (FLT_DIG or DBL_DIG as appropriate). "
3070  "Any value greater than zero selects precise output mode.")
3071  },
3073  1, -15, 3,
3074  NULL, NULL, NULL
3075  },
3076 
3077  {
3078  {"log_min_duration_sample", PGC_SUSET, LOGGING_WHEN,
3079  gettext_noop("Sets the minimum execution time above which "
3080  "a sample of statements will be logged."
3081  " Sampling is determined by \"log_statement_sample_rate\"."),
3082  gettext_noop("Zero logs a sample of all queries. -1 turns this feature off."),
3083  GUC_UNIT_MS
3084  },
3086  -1, -1, INT_MAX,
3087  NULL, NULL, NULL
3088  },
3089 
3090  {
3091  {"log_min_duration_statement", PGC_SUSET, LOGGING_WHEN,
3092  gettext_noop("Sets the minimum execution time above which "
3093  "all statements will be logged."),
3094  gettext_noop("Zero prints all queries. -1 turns this feature off."),
3095  GUC_UNIT_MS
3096  },
3098  -1, -1, INT_MAX,
3099  NULL, NULL, NULL
3100  },
3101 
3102  {
3103  {"log_autovacuum_min_duration", PGC_SIGHUP, LOGGING_WHAT,
3104  gettext_noop("Sets the minimum execution time above which "
3105  "autovacuum actions will be logged."),
3106  gettext_noop("Zero prints all actions. -1 turns autovacuum logging off."),
3107  GUC_UNIT_MS
3108  },
3110  600000, -1, INT_MAX,
3111  NULL, NULL, NULL
3112  },
3113 
3114  {
3115  {"log_parameter_max_length", PGC_SUSET, LOGGING_WHAT,
3116  gettext_noop("Sets the maximum length in bytes of data logged for bind "
3117  "parameter values when logging statements."),
3118  gettext_noop("-1 to print values in full."),
3120  },
3122  -1, -1, INT_MAX / 2,
3123  NULL, NULL, NULL
3124  },
3125 
3126  {
3127  {"log_parameter_max_length_on_error", PGC_USERSET, LOGGING_WHAT,
3128  gettext_noop("Sets the maximum length in bytes of data logged for bind "
3129  "parameter values when logging statements, on error."),
3130  gettext_noop("-1 to print values in full."),
3132  },
3134  0, -1, INT_MAX / 2,
3135  NULL, NULL, NULL
3136  },
3137 
3138  {
3139  {"bgwriter_delay", PGC_SIGHUP, RESOURCES_BGWRITER,
3140  gettext_noop("Background writer sleep time between rounds."),
3141  NULL,
3142  GUC_UNIT_MS
3143  },
3144  &BgWriterDelay,
3145  200, 10, 10000,
3146  NULL, NULL, NULL
3147  },
3148 
3149  {
3150  {"bgwriter_lru_maxpages", PGC_SIGHUP, RESOURCES_BGWRITER,
3151  gettext_noop("Background writer maximum number of LRU pages to flush per round."),
3152  NULL
3153  },
3155  100, 0, INT_MAX / 2, /* Same upper limit as shared_buffers */
3156  NULL, NULL, NULL
3157  },
3158 
3159  {
3160  {"bgwriter_flush_after", PGC_SIGHUP, RESOURCES_BGWRITER,
3161  gettext_noop("Number of pages after which previously performed writes are flushed to disk."),
3162  NULL,
3164  },
3167  NULL, NULL, NULL
3168  },
3169 
3170  {
3171  {"effective_io_concurrency",
3172  PGC_USERSET,
3174  gettext_noop("Number of simultaneous requests that can be handled efficiently by the disk subsystem."),
3175  NULL,
3176  GUC_EXPLAIN
3177  },
3180  0, MAX_IO_CONCURRENCY,
3181  check_effective_io_concurrency, NULL, NULL
3182  },
3183 
3184  {
3185  {"maintenance_io_concurrency",
3186  PGC_USERSET,
3188  gettext_noop("A variant of \"effective_io_concurrency\" that is used for maintenance work."),
3189  NULL,
3190  GUC_EXPLAIN
3191  },
3194  0, MAX_IO_CONCURRENCY,
3196  NULL
3197  },
3198 
3199  {
3200  {"io_combine_limit",
3201  PGC_USERSET,
3203  gettext_noop("Limit on the size of data reads and writes."),
3204  NULL,
3206  },
3210  NULL, NULL, NULL
3211  },
3212 
3213  {
3214  {"backend_flush_after", PGC_USERSET, RESOURCES_ASYNCHRONOUS,
3215  gettext_noop("Number of pages after which previously performed writes are flushed to disk."),
3216  NULL,
3218  },
3221  NULL, NULL, NULL
3222  },
3223 
3224  {
3225  {"max_worker_processes",
3228  gettext_noop("Maximum number of concurrent worker processes."),
3229  NULL,
3230  },
3232  8, 0, MAX_BACKENDS,
3233  NULL, NULL, NULL
3234  },
3235 
3236  {
3237  {"max_logical_replication_workers",
3240  gettext_noop("Maximum number of logical replication worker processes."),
3241  NULL,
3242  },
3244  4, 0, MAX_BACKENDS,
3245  NULL, NULL, NULL
3246  },
3247 
3248  {
3249  {"max_sync_workers_per_subscription",
3250  PGC_SIGHUP,
3252  gettext_noop("Maximum number of table synchronization workers per subscription."),
3253  NULL,
3254  },
3256  2, 0, MAX_BACKENDS,
3257  NULL, NULL, NULL
3258  },
3259 
3260  {
3261  {"max_parallel_apply_workers_per_subscription",
3262  PGC_SIGHUP,
3264  gettext_noop("Maximum number of parallel apply workers per subscription."),
3265  NULL,
3266  },
3269  NULL, NULL, NULL
3270  },
3271 
3272  {
3273  {"log_rotation_age", PGC_SIGHUP, LOGGING_WHERE,
3274  gettext_noop("Sets the amount of time to wait before forcing "
3275  "log file rotation."),
3276  NULL,
3277  GUC_UNIT_MIN
3278  },
3279  &Log_RotationAge,
3281  NULL, NULL, NULL
3282  },
3283 
3284  {
3285  {"log_rotation_size", PGC_SIGHUP, LOGGING_WHERE,
3286  gettext_noop("Sets the maximum size a log file can reach before "
3287  "being rotated."),
3288  NULL,
3289  GUC_UNIT_KB
3290  },
3292  10 * 1024, 0, INT_MAX / 1024,
3293  NULL, NULL, NULL
3294  },
3295 
3296  {
3297  {"max_function_args", PGC_INTERNAL, PRESET_OPTIONS,
3298  gettext_noop("Shows the maximum number of function arguments."),
3299  NULL,
3301  },
3304  NULL, NULL, NULL
3305  },
3306 
3307  {
3308  {"max_index_keys", PGC_INTERNAL, PRESET_OPTIONS,
3309  gettext_noop("Shows the maximum number of index keys."),
3310  NULL,
3312  },
3313  &max_index_keys,
3315  NULL, NULL, NULL
3316  },
3317 
3318  {
3319  {"max_identifier_length", PGC_INTERNAL, PRESET_OPTIONS,
3320  gettext_noop("Shows the maximum identifier length."),
3321  NULL,
3323  },
3325  NAMEDATALEN - 1, NAMEDATALEN - 1, NAMEDATALEN - 1,
3326  NULL, NULL, NULL
3327  },
3328 
3329  {
3330  {"block_size", PGC_INTERNAL, PRESET_OPTIONS,
3331  gettext_noop("Shows the size of a disk block."),
3332  NULL,
3334  },
3335  &block_size,
3336  BLCKSZ, BLCKSZ, BLCKSZ,
3337  NULL, NULL, NULL
3338  },
3339 
3340  {
3341  {"segment_size", PGC_INTERNAL, PRESET_OPTIONS,
3342  gettext_noop("Shows the number of pages per disk file."),
3343  NULL,
3345  },
3346  &segment_size,
3347  RELSEG_SIZE, RELSEG_SIZE, RELSEG_SIZE,
3348  NULL, NULL, NULL
3349  },
3350 
3351  {
3352  {"wal_block_size", PGC_INTERNAL, PRESET_OPTIONS,
3353  gettext_noop("Shows the block size in the write ahead log."),
3354  NULL,
3356  },
3357  &wal_block_size,
3358  XLOG_BLCKSZ, XLOG_BLCKSZ, XLOG_BLCKSZ,
3359  NULL, NULL, NULL
3360  },
3361 
3362  {
3363  {"wal_retrieve_retry_interval", PGC_SIGHUP, REPLICATION_STANDBY,
3364  gettext_noop("Sets the time to wait before retrying to retrieve WAL "
3365  "after a failed attempt."),
3366  NULL,
3367  GUC_UNIT_MS
3368  },
3370  5000, 1, INT_MAX,
3371  NULL, NULL, NULL
3372  },
3373 
3374  {
3375  {"wal_segment_size", PGC_INTERNAL, PRESET_OPTIONS,
3376  gettext_noop("Shows the size of write ahead log segments."),
3377  NULL,
3379  },
3382  WalSegMinSize,
3383  WalSegMaxSize,
3384  check_wal_segment_size, NULL, NULL
3385  },
3386 
3387  {
3388  {"wal_summary_keep_time", PGC_SIGHUP, WAL_SUMMARIZATION,
3389  gettext_noop("Time for which WAL summary files should be kept."),
3390  NULL,
3391  GUC_UNIT_MIN,
3392  },
3394  10 * HOURS_PER_DAY * MINS_PER_HOUR, /* 10 days */
3395  0,
3396  INT_MAX / SECS_PER_MINUTE,
3397  NULL, NULL, NULL
3398  },
3399 
3400  {
3401  {"autovacuum_naptime", PGC_SIGHUP, AUTOVACUUM,
3402  gettext_noop("Time to sleep between autovacuum runs."),
3403  NULL,
3404  GUC_UNIT_S
3405  },
3407  60, 1, INT_MAX / 1000,
3408  NULL, NULL, NULL
3409  },
3410  {
3411  {"autovacuum_vacuum_threshold", PGC_SIGHUP, AUTOVACUUM,
3412  gettext_noop("Minimum number of tuple updates or deletes prior to vacuum."),
3413  NULL
3414  },
3416  50, 0, INT_MAX,
3417  NULL, NULL, NULL
3418  },
3419  {
3420  {"autovacuum_vacuum_insert_threshold", PGC_SIGHUP, AUTOVACUUM,
3421  gettext_noop("Minimum number of tuple inserts prior to vacuum, or -1 to disable insert vacuums."),
3422  NULL
3423  },
3425  1000, -1, INT_MAX,
3426  NULL, NULL, NULL
3427  },
3428  {
3429  {"autovacuum_analyze_threshold", PGC_SIGHUP, AUTOVACUUM,
3430  gettext_noop("Minimum number of tuple inserts, updates, or deletes prior to analyze."),
3431  NULL
3432  },
3434  50, 0, INT_MAX,
3435  NULL, NULL, NULL
3436  },
3437  {
3438  /* see varsup.c for why this is PGC_POSTMASTER not PGC_SIGHUP */
3439  {"autovacuum_freeze_max_age", PGC_POSTMASTER, AUTOVACUUM,
3440  gettext_noop("Age at which to autovacuum a table to prevent transaction ID wraparound."),
3441  NULL
3442  },
3444 
3445  /* see vacuum_failsafe_age if you change the upper-limit value. */
3446  200000000, 100000, 2000000000,
3447  NULL, NULL, NULL
3448  },
3449  {
3450  /* see multixact.c for why this is PGC_POSTMASTER not PGC_SIGHUP */
3451  {"autovacuum_multixact_freeze_max_age", PGC_POSTMASTER, AUTOVACUUM,
3452  gettext_noop("Multixact age at which to autovacuum a table to prevent multixact wraparound."),
3453  NULL
3454  },
3456  400000000, 10000, 2000000000,
3457  NULL, NULL, NULL
3458  },
3459  {
3460  /* see max_connections */
3461  {"autovacuum_max_workers", PGC_POSTMASTER, AUTOVACUUM,
3462  gettext_noop("Sets the maximum number of simultaneously running autovacuum worker processes."),
3463  NULL
3464  },
3466  3, 1, MAX_BACKENDS,
3467  NULL, NULL, NULL
3468  },
3469 
3470  {
3471  {"max_parallel_maintenance_workers", PGC_USERSET, RESOURCES_ASYNCHRONOUS,
3472  gettext_noop("Sets the maximum number of parallel processes per maintenance operation."),
3473  NULL
3474  },
3477  NULL, NULL, NULL
3478  },
3479 
3480  {
3481  {"max_parallel_workers_per_gather", PGC_USERSET, RESOURCES_ASYNCHRONOUS,
3482  gettext_noop("Sets the maximum number of parallel processes per executor node."),
3483  NULL,
3484  GUC_EXPLAIN
3485  },
3488  NULL, NULL, NULL
3489  },
3490 
3491  {
3492  {"max_parallel_workers", PGC_USERSET, RESOURCES_ASYNCHRONOUS,
3493  gettext_noop("Sets the maximum number of parallel workers that can be active at one time."),
3494  NULL,
3495  GUC_EXPLAIN
3496  },
3499  NULL, NULL, NULL
3500  },
3501 
3502  {
3503  {"autovacuum_work_mem", PGC_SIGHUP, RESOURCES_MEM,
3504  gettext_noop("Sets the maximum memory to be used by each autovacuum worker process."),
3505  NULL,
3506  GUC_UNIT_KB
3507  },
3509  -1, -1, MAX_KILOBYTES,
3510  check_autovacuum_work_mem, NULL, NULL
3511  },
3512 
3513  {
3514  {"tcp_keepalives_idle", PGC_USERSET, CONN_AUTH_TCP,
3515  gettext_noop("Time between issuing TCP keepalives."),
3516  gettext_noop("A value of 0 uses the system default."),
3517  GUC_UNIT_S
3518  },
3520  0, 0, INT_MAX,
3522  },
3523 
3524  {
3525  {"tcp_keepalives_interval", PGC_USERSET, CONN_AUTH_TCP,
3526  gettext_noop("Time between TCP keepalive retransmits."),
3527  gettext_noop("A value of 0 uses the system default."),
3528  GUC_UNIT_S
3529  },
3531  0, 0, INT_MAX,
3533  },
3534 
3535  {
3536  {"ssl_renegotiation_limit", PGC_USERSET, COMPAT_OPTIONS_PREVIOUS,
3537  gettext_noop("SSL renegotiation is no longer supported; this can only be 0."),
3538  NULL,
3540  },
3542  0, 0, 0,
3543  NULL, NULL, NULL
3544  },
3545 
3546  {
3547  {"tcp_keepalives_count", PGC_USERSET, CONN_AUTH_TCP,
3548  gettext_noop("Maximum number of TCP keepalive retransmits."),
3549  gettext_noop("Number of consecutive keepalive retransmits that can be "
3550  "lost before a connection is considered dead. A value of 0 uses the "
3551  "system default."),
3552  },
3554  0, 0, INT_MAX,
3556  },
3557 
3558  {
3559  {"gin_fuzzy_search_limit", PGC_USERSET, CLIENT_CONN_OTHER,
3560  gettext_noop("Sets the maximum allowed result for exact search by GIN."),
3561  NULL,
3562  0
3563  },
3565  0, 0, INT_MAX,
3566  NULL, NULL, NULL
3567  },
3568 
3569  {
3570  {"effective_cache_size", PGC_USERSET, QUERY_TUNING_COST,
3571  gettext_noop("Sets the planner's assumption about the total size of the data caches."),
3572  gettext_noop("That is, the total size of the caches (kernel cache and shared buffers) used for PostgreSQL data files. "
3573  "This is measured in disk pages, which are normally 8 kB each."),
3575  },
3577  DEFAULT_EFFECTIVE_CACHE_SIZE, 1, INT_MAX,
3578  NULL, NULL, NULL
3579  },
3580 
3581  {
3582  {"min_parallel_table_scan_size", PGC_USERSET, QUERY_TUNING_COST,
3583  gettext_noop("Sets the minimum amount of table data for a parallel scan."),
3584  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."),
3586  },
3588  (8 * 1024 * 1024) / BLCKSZ, 0, INT_MAX / 3,
3589  NULL, NULL, NULL
3590  },
3591 
3592  {
3593  {"min_parallel_index_scan_size", PGC_USERSET, QUERY_TUNING_COST,
3594  gettext_noop("Sets the minimum amount of index data for a parallel scan."),
3595  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."),
3597  },
3599  (512 * 1024) / BLCKSZ, 0, INT_MAX / 3,
3600  NULL, NULL, NULL
3601  },
3602 
3603  {
3604  /* Can't be set in postgresql.conf */
3605  {"server_version_num", PGC_INTERNAL, PRESET_OPTIONS,
3606  gettext_noop("Shows the server version as an integer."),
3607  NULL,
3609  },
3611  PG_VERSION_NUM, PG_VERSION_NUM, PG_VERSION_NUM,
3612  NULL, NULL, NULL
3613  },
3614 
3615  {
3616  {"log_temp_files", PGC_SUSET, LOGGING_WHAT,
3617  gettext_noop("Log the use of temporary files larger than this number of kilobytes."),
3618  gettext_noop("Zero logs all files. The default is -1 (turning this feature off)."),
3619  GUC_UNIT_KB
3620  },
3621  &log_temp_files,
3622  -1, -1, INT_MAX,
3623  NULL, NULL, NULL
3624  },
3625 
3626  {
3627  {"track_activity_query_size", PGC_POSTMASTER, STATS_CUMULATIVE,
3628  gettext_noop("Sets the size reserved for pg_stat_activity.query, in bytes."),
3629  NULL,
3631  },
3633  1024, 100, 1048576,
3634  NULL, NULL, NULL
3635  },
3636 
3637  {
3638  {"gin_pending_list_limit", PGC_USERSET, CLIENT_CONN_STATEMENT,
3639  gettext_noop("Sets the maximum size of the pending list for GIN index."),
3640  NULL,
3641  GUC_UNIT_KB
3642  },
3644  4096, 64, MAX_KILOBYTES,
3645  NULL, NULL, NULL
3646  },
3647 
3648  {
3649  {"tcp_user_timeout", PGC_USERSET, CONN_AUTH_TCP,
3650  gettext_noop("TCP user timeout."),
3651  gettext_noop("A value of 0 uses the system default."),
3652  GUC_UNIT_MS
3653  },
3655  0, 0, INT_MAX,
3657  },
3658 
3659  {
3660  {"huge_page_size", PGC_POSTMASTER, RESOURCES_MEM,
3661  gettext_noop("The size of huge page that should be requested."),
3662  NULL,
3663  GUC_UNIT_KB
3664  },
3665  &huge_page_size,
3666  0, 0, INT_MAX,
3667  check_huge_page_size, NULL, NULL
3668  },
3669 
3670  {
3671  {"debug_discard_caches", PGC_SUSET, DEVELOPER_OPTIONS,
3672  gettext_noop("Aggressively flush system caches for debugging purposes."),
3673  NULL,
3675  },
3677 #ifdef DISCARD_CACHES_ENABLED
3678  /* Set default based on older compile-time-only cache clobber macros */
3679 #if defined(CLOBBER_CACHE_RECURSIVELY)
3680  3,
3681 #elif defined(CLOBBER_CACHE_ALWAYS)
3682  1,
3683 #else
3684  0,
3685 #endif
3686  0, 5,
3687 #else /* not DISCARD_CACHES_ENABLED */
3688  0, 0, 0,
3689 #endif /* not DISCARD_CACHES_ENABLED */
3690  NULL, NULL, NULL
3691  },
3692 
3693  {
3694  {"client_connection_check_interval", PGC_USERSET, CONN_AUTH_TCP,
3695  gettext_noop("Sets the time interval between checks for disconnection while running queries."),
3696  NULL,
3697  GUC_UNIT_MS
3698  },
3700  0, 0, INT_MAX,
3702  },
3703 
3704  {
3705  {"log_startup_progress_interval", PGC_SIGHUP, LOGGING_WHEN,
3706  gettext_noop("Time between progress updates for "
3707  "long-running startup operations."),
3708  gettext_noop("0 turns this feature off."),
3709  GUC_UNIT_MS,
3710  },
3712  10000, 0, INT_MAX,
3713  NULL, NULL, NULL
3714  },
3715 
3716  {
3717  {"scram_iterations", PGC_USERSET, CONN_AUTH_AUTH,
3718  gettext_noop("Sets the iteration count for SCRAM secret generation."),
3719  NULL,
3720  GUC_REPORT
3721  },
3724  NULL, NULL, NULL
3725  },
3726 
3727  /* End-of-list marker */
3728  {
3729  {NULL, 0, 0, NULL, NULL}, NULL, 0, 0, 0, NULL, NULL, NULL
3730  }
3731 };
3732 
3733 
3735 {
3736  {
3737  {"seq_page_cost", PGC_USERSET, QUERY_TUNING_COST,
3738  gettext_noop("Sets the planner's estimate of the cost of a "
3739  "sequentially fetched disk page."),
3740  NULL,
3741  GUC_EXPLAIN
3742  },
3743  &seq_page_cost,
3744  DEFAULT_SEQ_PAGE_COST, 0, DBL_MAX,
3745  NULL, NULL, NULL
3746  },
3747  {
3748  {"random_page_cost", PGC_USERSET, QUERY_TUNING_COST,
3749  gettext_noop("Sets the planner's estimate of the cost of a "
3750  "nonsequentially fetched disk page."),
3751  NULL,
3752  GUC_EXPLAIN
3753  },
3755  DEFAULT_RANDOM_PAGE_COST, 0, DBL_MAX,
3756  NULL, NULL, NULL
3757  },
3758  {
3759  {"cpu_tuple_cost", PGC_USERSET, QUERY_TUNING_COST,
3760  gettext_noop("Sets the planner's estimate of the cost of "
3761  "processing each tuple (row)."),
3762  NULL,
3763  GUC_EXPLAIN
3764  },
3765  &cpu_tuple_cost,
3766  DEFAULT_CPU_TUPLE_COST, 0, DBL_MAX,
3767  NULL, NULL, NULL
3768  },
3769  {
3770  {"cpu_index_tuple_cost", PGC_USERSET, QUERY_TUNING_COST,
3771  gettext_noop("Sets the planner's estimate of the cost of "
3772  "processing each index entry during an index scan."),
3773  NULL,
3774  GUC_EXPLAIN
3775  },
3777  DEFAULT_CPU_INDEX_TUPLE_COST, 0, DBL_MAX,
3778  NULL, NULL, NULL
3779  },
3780  {
3781  {"cpu_operator_cost", PGC_USERSET, QUERY_TUNING_COST,
3782  gettext_noop("Sets the planner's estimate of the cost of "
3783  "processing each operator or function call."),
3784  NULL,
3785  GUC_EXPLAIN
3786  },
3788  DEFAULT_CPU_OPERATOR_COST, 0, DBL_MAX,
3789  NULL, NULL, NULL
3790  },
3791  {
3792  {"parallel_tuple_cost", PGC_USERSET, QUERY_TUNING_COST,
3793  gettext_noop("Sets the planner's estimate of the cost of "
3794  "passing each tuple (row) from worker to leader backend."),
3795  NULL,
3796  GUC_EXPLAIN
3797  },
3799  DEFAULT_PARALLEL_TUPLE_COST, 0, DBL_MAX,
3800  NULL, NULL, NULL
3801  },
3802  {
3803  {"parallel_setup_cost", PGC_USERSET, QUERY_TUNING_COST,
3804  gettext_noop("Sets the planner's estimate of the cost of "
3805  "starting up worker processes for parallel query."),
3806  NULL,
3807  GUC_EXPLAIN
3808  },
3810  DEFAULT_PARALLEL_SETUP_COST, 0, DBL_MAX,
3811  NULL, NULL, NULL
3812  },
3813 
3814  {
3815  {"jit_above_cost", PGC_USERSET, QUERY_TUNING_COST,
3816  gettext_noop("Perform JIT compilation if query is more expensive."),
3817  gettext_noop("-1 disables JIT compilation."),
3818  GUC_EXPLAIN
3819  },
3820  &jit_above_cost,
3821  100000, -1, DBL_MAX,
3822  NULL, NULL, NULL
3823  },
3824 
3825  {
3826  {"jit_optimize_above_cost", PGC_USERSET, QUERY_TUNING_COST,
3827  gettext_noop("Optimize JIT-compiled functions if query is more expensive."),
3828  gettext_noop("-1 disables optimization."),
3829  GUC_EXPLAIN
3830  },
3832  500000, -1, DBL_MAX,
3833  NULL, NULL, NULL
3834  },
3835 
3836  {
3837  {"jit_inline_above_cost", PGC_USERSET, QUERY_TUNING_COST,
3838  gettext_noop("Perform JIT inlining if query is more expensive."),
3839  gettext_noop("-1 disables inlining."),
3840  GUC_EXPLAIN
3841  },
3843  500000, -1, DBL_MAX,
3844  NULL, NULL, NULL
3845  },
3846 
3847  {
3848  {"cursor_tuple_fraction", PGC_USERSET, QUERY_TUNING_OTHER,
3849  gettext_noop("Sets the planner's estimate of the fraction of "
3850  "a cursor's rows that will be retrieved."),
3851  NULL,
3852  GUC_EXPLAIN
3853  },
3856  NULL, NULL, NULL
3857  },
3858 
3859  {
3860  {"recursive_worktable_factor", PGC_USERSET, QUERY_TUNING_OTHER,
3861  gettext_noop("Sets the planner's estimate of the average size "
3862  "of a recursive query's working table."),
3863  NULL,
3864  GUC_EXPLAIN
3865  },
3867  DEFAULT_RECURSIVE_WORKTABLE_FACTOR, 0.001, 1000000.0,
3868  NULL, NULL, NULL
3869  },
3870 
3871  {
3872  {"geqo_selection_bias", PGC_USERSET, QUERY_TUNING_GEQO,
3873  gettext_noop("GEQO: selective pressure within the population."),
3874  NULL,
3875  GUC_EXPLAIN
3876  },
3880  NULL, NULL, NULL
3881  },
3882  {
3883  {"geqo_seed", PGC_USERSET, QUERY_TUNING_GEQO,
3884  gettext_noop("GEQO: seed for random path selection."),
3885  NULL,
3886  GUC_EXPLAIN
3887  },
3888  &Geqo_seed,
3889  0.0, 0.0, 1.0,
3890  NULL, NULL, NULL
3891  },
3892 
3893  {
3894  {"hash_mem_multiplier", PGC_USERSET, RESOURCES_MEM,
3895  gettext_noop("Multiple of \"work_mem\" to use for hash tables."),
3896  NULL,
3897  GUC_EXPLAIN
3898  },
3900  2.0, 1.0, 1000.0,
3901  NULL, NULL, NULL
3902  },
3903 
3904  {
3905  {"bgwriter_lru_multiplier", PGC_SIGHUP, RESOURCES_BGWRITER,
3906  gettext_noop("Multiple of the average buffer usage to free per round."),
3907  NULL
3908  },
3910  2.0, 0.0, 10.0,
3911  NULL, NULL, NULL
3912  },
3913 
3914  {
3915  {"seed", PGC_USERSET, UNGROUPED,
3916  gettext_noop("Sets the seed for random-number generation."),
3917  NULL,
3919  },
3921  0.0, -1.0, 1.0,
3923  },
3924 
3925  {
3926  {"vacuum_cost_delay", PGC_USERSET, RESOURCES_VACUUM_DELAY,
3927  gettext_noop("Vacuum cost delay in milliseconds."),
3928  NULL,
3929  GUC_UNIT_MS
3930  },
3931  &VacuumCostDelay,
3932  0, 0, 100,
3933  NULL, NULL, NULL
3934  },
3935 
3936  {
3937  {"autovacuum_vacuum_cost_delay", PGC_SIGHUP, AUTOVACUUM,
3938  gettext_noop("Vacuum cost delay in milliseconds, for autovacuum."),
3939  NULL,
3940  GUC_UNIT_MS
3941  },
3943  2, -1, 100,
3944  NULL, NULL, NULL
3945  },
3946 
3947  {
3948  {"autovacuum_vacuum_scale_factor", PGC_SIGHUP, AUTOVACUUM,
3949  gettext_noop("Number of tuple updates or deletes prior to vacuum as a fraction of reltuples."),
3950  NULL
3951  },
3953  0.2, 0.0, 100.0,
3954  NULL, NULL, NULL
3955  },
3956 
3957  {
3958  {"autovacuum_vacuum_insert_scale_factor", PGC_SIGHUP, AUTOVACUUM,
3959  gettext_noop("Number of tuple inserts prior to vacuum as a fraction of reltuples."),
3960  NULL
3961  },
3963  0.2, 0.0, 100.0,
3964  NULL, NULL, NULL
3965  },
3966 
3967  {
3968  {"autovacuum_analyze_scale_factor", PGC_SIGHUP, AUTOVACUUM,
3969  gettext_noop("Number of tuple inserts, updates, or deletes prior to analyze as a fraction of reltuples."),
3970  NULL
3971  },
3973  0.1, 0.0, 100.0,
3974  NULL, NULL, NULL
3975  },
3976 
3977  {
3978  {"checkpoint_completion_target", PGC_SIGHUP, WAL_CHECKPOINTS,
3979  gettext_noop("Time spent flushing dirty buffers during checkpoint, as fraction of checkpoint interval."),
3980  NULL
3981  },
3983  0.9, 0.0, 1.0,
3985  },
3986 
3987  {
3988  {"log_statement_sample_rate", PGC_SUSET, LOGGING_WHEN,
3989  gettext_noop("Fraction of statements exceeding \"log_min_duration_sample\" to be logged."),
3990  gettext_noop("Use a value between 0.0 (never log) and 1.0 (always log).")
3991  },
3993  1.0, 0.0, 1.0,
3994  NULL, NULL, NULL
3995  },
3996 
3997  {
3998  {"log_transaction_sample_rate", PGC_SUSET, LOGGING_WHEN,
3999  gettext_noop("Sets the fraction of transactions from which to log all statements."),
4000  gettext_noop("Use a value between 0.0 (never log) and 1.0 (log all "
4001  "statements for all transactions).")
4002  },
4004  0.0, 0.0, 1.0,
4005  NULL, NULL, NULL
4006  },
4007 
4008  /* End-of-list marker */
4009  {
4010  {NULL, 0, 0, NULL, NULL}, NULL, 0.0, 0.0, 0.0, NULL, NULL, NULL
4011  }
4012 };
4013 
4014 
4016 {
4017  {
4018  {"archive_command", PGC_SIGHUP, WAL_ARCHIVING,
4019  gettext_noop("Sets the shell command that will be called to archive a WAL file."),
4020  gettext_noop("This is used only if \"archive_library\" is not set.")
4021  },
4023  "",
4024  NULL, NULL, show_archive_command
4025  },
4026 
4027  {
4028  {"archive_library", PGC_SIGHUP, WAL_ARCHIVING,
4029  gettext_noop("Sets the library that will be called to archive a WAL file."),
4030  gettext_noop("An empty string indicates that \"archive_command\" should be used.")
4031  },
4033  "",
4034  NULL, NULL, NULL
4035  },
4036 
4037  {
4038  {"restore_command", PGC_SIGHUP, WAL_ARCHIVE_RECOVERY,
4039  gettext_noop("Sets the shell command that will be called to retrieve an archived WAL file."),
4040  NULL
4041  },
4043  "",
4044  NULL, NULL, NULL
4045  },
4046 
4047  {
4048  {"archive_cleanup_command", PGC_SIGHUP, WAL_ARCHIVE_RECOVERY,
4049  gettext_noop("Sets the shell command that will be executed at every restart point."),
4050  NULL
4051  },
4053  "",
4054  NULL, NULL, NULL
4055  },
4056 
4057  {
4058  {"recovery_end_command", PGC_SIGHUP, WAL_ARCHIVE_RECOVERY,
4059  gettext_noop("Sets the shell command that will be executed once at the end of recovery."),
4060  NULL
4061  },
4063  "",
4064  NULL, NULL, NULL
4065  },
4066 
4067  {
4068  {"recovery_target_timeline", PGC_POSTMASTER, WAL_RECOVERY_TARGET,
4069  gettext_noop("Specifies the timeline to recover into."),
4070  NULL
4071  },
4073  "latest",
4075  },
4076 
4077  {
4078  {"recovery_target", PGC_POSTMASTER, WAL_RECOVERY_TARGET,
4079  gettext_noop("Set to \"immediate\" to end recovery as soon as a consistent state is reached."),
4080  NULL
4081  },
4083  "",
4085  },
4086  {
4087  {"recovery_target_xid", PGC_POSTMASTER, WAL_RECOVERY_TARGET,
4088  gettext_noop("Sets the transaction ID up to which recovery will proceed."),
4089  NULL
4090  },
4092  "",
4094  },
4095  {
4096  {"recovery_target_time", PGC_POSTMASTER, WAL_RECOVERY_TARGET,
4097  gettext_noop("Sets the time stamp up to which recovery will proceed."),
4098  NULL
4099  },
4101  "",
4103  },
4104  {
4105  {"recovery_target_name", PGC_POSTMASTER, WAL_RECOVERY_TARGET,
4106  gettext_noop("Sets the named restore point up to which recovery will proceed."),
4107  NULL
4108  },
4110  "",
4112  },
4113  {
4114  {"recovery_target_lsn", PGC_POSTMASTER, WAL_RECOVERY_TARGET,
4115  gettext_noop("Sets the LSN of the write-ahead log location up to which recovery will proceed."),
4116  NULL
4117  },
4119  "",
4121  },
4122 
4123  {
4124  {"primary_conninfo", PGC_SIGHUP, REPLICATION_STANDBY,
4125  gettext_noop("Sets the connection string to be used to connect to the sending server."),
4126  NULL,
4128  },
4129  &PrimaryConnInfo,
4130  "",
4131  NULL, NULL, NULL
4132  },
4133 
4134  {
4135  {"primary_slot_name", PGC_SIGHUP, REPLICATION_STANDBY,
4136  gettext_noop("Sets the name of the replication slot to use on the sending server."),
4137  NULL
4138  },
4139  &PrimarySlotName,
4140  "",
4141  check_primary_slot_name, NULL, NULL
4142  },
4143 
4144  {
4145  {"client_encoding", PGC_USERSET, CLIENT_CONN_LOCALE,
4146  gettext_noop("Sets the client's character set encoding."),
4147  NULL,
4149  },
4151  "SQL_ASCII",
4153  },
4154 
4155  {
4156  {"log_line_prefix", PGC_SIGHUP, LOGGING_WHAT,
4157  gettext_noop("Controls information prefixed to each log line."),
4158  gettext_noop("If blank, no prefix is used.")
4159  },
4160  &Log_line_prefix,
4161  "%m [%p] ",
4162  NULL, NULL, NULL
4163  },
4164 
4165  {
4166  {"log_timezone", PGC_SIGHUP, LOGGING_WHAT,
4167  gettext_noop("Sets the time zone to use in log messages."),
4168  NULL
4169  },
4171  "GMT",
4173  },
4174 
4175  {
4176  {"DateStyle", PGC_USERSET, CLIENT_CONN_LOCALE,
4177  gettext_noop("Sets the display format for date and time values."),
4178  gettext_noop("Also controls interpretation of ambiguous "
4179  "date inputs."),
4181  },
4183  "ISO, MDY",
4185  },
4186 
4187  {
4188  {"default_table_access_method", PGC_USERSET, CLIENT_CONN_STATEMENT,
4189  gettext_noop("Sets the default table access method for new tables."),
4190  NULL,
4191  GUC_IS_NAME
4192  },
4196  },
4197 
4198  {
4199  {"default_tablespace", PGC_USERSET, CLIENT_CONN_STATEMENT,
4200  gettext_noop("Sets the default tablespace to create tables and indexes in."),
4201  gettext_noop("An empty string selects the database's default tablespace."),
4202  GUC_IS_NAME
4203  },
4205  "",
4206  check_default_tablespace, NULL, NULL
4207  },
4208 
4209  {
4210  {"temp_tablespaces", PGC_USERSET, CLIENT_CONN_STATEMENT,
4211  gettext_noop("Sets the tablespace(s) to use for temporary tables and sort files."),
4212  NULL,
4214  },
4216  "",
4218  },
4219 
4220  {
4221  {"createrole_self_grant", PGC_USERSET, CLIENT_CONN_STATEMENT,
4222  gettext_noop("Sets whether a CREATEROLE user automatically grants "
4223  "the role to themselves, and with which options."),
4224  NULL,
4226  },
4228  "",
4230  },
4231 
4232  {
4233  {"dynamic_library_path", PGC_SUSET, CLIENT_CONN_OTHER,
4234  gettext_noop("Sets the path for dynamically loadable modules."),
4235  gettext_noop("If a dynamically loadable module needs to be opened and "
4236  "the specified name does not have a directory component (i.e., the "
4237  "name does not contain a slash), the system will search this path for "
4238  "the specified file."),
4240  },
4242  "$libdir",
4243  NULL, NULL, NULL
4244  },
4245 
4246  {
4247  {"krb_server_keyfile", PGC_SIGHUP, CONN_AUTH_AUTH,
4248  gettext_noop("Sets the location of the Kerberos server key file."),
4249  NULL,
4251  },
4253  PG_KRB_SRVTAB,
4254  NULL, NULL, NULL
4255  },
4256 
4257  {
4258  {"bonjour_name", PGC_POSTMASTER, CONN_AUTH_SETTINGS,
4259  gettext_noop("Sets the Bonjour service name."),
4260  NULL
4261  },
4262  &bonjour_name,
4263  "",
4264  NULL, NULL, NULL
4265  },
4266 
4267  {
4268  {"lc_messages", PGC_SUSET, CLIENT_CONN_LOCALE,
4269  gettext_noop("Sets the language in which messages are displayed."),
4270  NULL
4271  },
4272  &locale_messages,
4273  "",
4275  },
4276 
4277  {
4278  {"lc_monetary", PGC_USERSET, CLIENT_CONN_LOCALE,
4279  gettext_noop("Sets the locale for formatting monetary amounts."),
4280  NULL
4281  },
4282  &locale_monetary,
4283  "C",
4285  },
4286 
4287  {
4288  {"lc_numeric", PGC_USERSET, CLIENT_CONN_LOCALE,
4289  gettext_noop("Sets the locale for formatting numbers."),
4290  NULL
4291  },
4292  &locale_numeric,
4293  "C",
4295  },
4296 
4297  {
4298  {"lc_time", PGC_USERSET, CLIENT_CONN_LOCALE,
4299  gettext_noop("Sets the locale for formatting date and time values."),
4300  NULL
4301  },
4302  &locale_time,
4303  "C",
4305  },
4306 
4307  {
4308  {"session_preload_libraries", PGC_SUSET, CLIENT_CONN_PRELOAD,
4309  gettext_noop("Lists shared libraries to preload into each backend."),
4310  NULL,
4312  },
4314  "",
4315  NULL, NULL, NULL
4316  },
4317 
4318  {
4319  {"shared_preload_libraries", PGC_POSTMASTER, CLIENT_CONN_PRELOAD,
4320  gettext_noop("Lists shared libraries to preload into server."),
4321  NULL,
4323  },
4325  "",
4326  NULL, NULL, NULL
4327  },
4328 
4329  {
4330  {"local_preload_libraries", PGC_USERSET, CLIENT_CONN_PRELOAD,
4331  gettext_noop("Lists unprivileged shared libraries to preload into each backend."),
4332  NULL,
4334  },
4336  "",
4337  NULL, NULL, NULL
4338  },
4339 
4340  {
4341  {"search_path", PGC_USERSET, CLIENT_CONN_STATEMENT,
4342  gettext_noop("Sets the schema search order for names that are not schema-qualified."),
4343  NULL,
4345  },
4347  "\"$user\", public",
4349  },
4350 
4351  {
4352  /* Can't be set in postgresql.conf */
4353  {"server_encoding", PGC_INTERNAL, PRESET_OPTIONS,
4354  gettext_noop("Shows the server (database) character set encoding."),
4355  NULL,
4357  },
4359  "SQL_ASCII",
4360  NULL, NULL, NULL
4361  },
4362 
4363  {
4364  /* Can't be set in postgresql.conf */
4365  {"server_version", PGC_INTERNAL, PRESET_OPTIONS,
4366  gettext_noop("Shows the server version."),
4367  NULL,
4369  },
4371  PG_VERSION,
4372  NULL, NULL, NULL
4373  },
4374 
4375  {
4376  /* Not for general use --- used by SET ROLE */
4377  {"role", PGC_USERSET, UNGROUPED,
4378  gettext_noop("Sets the current role."),
4379  NULL,
4381  },
4382  &role_string,
4383  "none",
4385  },
4386 
4387  {
4388  /* Not for general use --- used by SET SESSION AUTHORIZATION */
4389  {"session_authorization", PGC_USERSET, UNGROUPED,
4390  gettext_noop("Sets the session user name."),
4391  NULL,
4393  },
4395  NULL,
4397  },
4398 
4399  {
4400  {"log_destination", PGC_SIGHUP, LOGGING_WHERE,
4401  gettext_noop("Sets the destination for server log output."),
4402  gettext_noop("Valid values are combinations of \"stderr\", "
4403  "\"syslog\", \"csvlog\", \"jsonlog\", and \"eventlog\", "
4404  "depending on the platform."),
4406  },
4408  "stderr",
4410  },
4411  {
4412  {"log_directory", PGC_SIGHUP, LOGGING_WHERE,
4413  gettext_noop("Sets the destination directory for log files."),
4414  gettext_noop("Can be specified as relative to the data directory "
4415  "or as absolute path."),
4417  },
4418  &Log_directory,
4419  "log",
4420  check_canonical_path, NULL, NULL
4421  },
4422  {
4423  {"log_filename", PGC_SIGHUP, LOGGING_WHERE,
4424  gettext_noop("Sets the file name pattern for log files."),
4425  NULL,
4427  },
4428  &Log_filename,
4429  "postgresql-%Y-%m-%d_%H%M%S.log",
4430  NULL, NULL, NULL
4431  },
4432 
4433  {
4434  {"syslog_ident", PGC_SIGHUP, LOGGING_WHERE,
4435  gettext_noop("Sets the program name used to identify PostgreSQL "
4436  "messages in syslog."),
4437  NULL
4438  },
4440  "postgres",
4441  NULL, assign_syslog_ident, NULL
4442  },
4443 
4444  {
4445  {"event_source", PGC_POSTMASTER, LOGGING_WHERE,
4446  gettext_noop("Sets the application name used to identify "
4447  "PostgreSQL messages in the event log."),
4448  NULL
4449  },
4450  &event_source,
4452  NULL, NULL, NULL
4453  },
4454 
4455  {
4456  {"TimeZone", PGC_USERSET, CLIENT_CONN_LOCALE,
4457  gettext_noop("Sets the time zone for displaying and interpreting time stamps."),
4458  NULL,
4459  GUC_REPORT
4460  },
4461  &timezone_string,
4462  "GMT",
4464  },
4465  {
4466  {"timezone_abbreviations", PGC_USERSET, CLIENT_CONN_LOCALE,
4467  gettext_noop("Selects a file of time zone abbreviations."),
4468  NULL
4469  },
4471  NULL,
4473  },
4474 
4475  {
4476  {"unix_socket_group", PGC_POSTMASTER, CONN_AUTH_SETTINGS,
4477  gettext_noop("Sets the owning group of the Unix-domain socket."),
4478  gettext_noop("The owning user of the socket is always the user "
4479  "that starts the server.")
4480  },
4482  "",
4483  NULL, NULL, NULL
4484  },
4485 
4486  {
4487  {"unix_socket_directories", PGC_POSTMASTER, CONN_AUTH_SETTINGS,
4488  gettext_noop("Sets the directories where Unix-domain sockets will be created."),
4489  NULL,
4491  },
4494  NULL, NULL, NULL
4495  },
4496 
4497  {
4498  {"listen_addresses", PGC_POSTMASTER, CONN_AUTH_SETTINGS,
4499  gettext_noop("Sets the host name or IP address(es) to listen to."),
4500  NULL,
4502  },
4503  &ListenAddresses,
4504  "localhost",
4505  NULL, NULL, NULL
4506  },
4507 
4508  {
4509  /*
4510  * Can't be set by ALTER SYSTEM as it can lead to recursive definition
4511  * of data_directory.
4512  */
4513  {"data_directory", PGC_POSTMASTER, FILE_LOCATIONS,
4514  gettext_noop("Sets the server's data directory."),
4515  NULL,
4517  },
4518  &data_directory,
4519  NULL,
4520  NULL, NULL, NULL
4521  },
4522 
4523  {
4524  {"config_file", PGC_POSTMASTER, FILE_LOCATIONS,
4525  gettext_noop("Sets the server's main configuration file."),
4526  NULL,
4528  },
4529  &ConfigFileName,
4530  NULL,
4531  NULL, NULL, NULL
4532  },
4533 
4534  {
4535  {"hba_file", PGC_POSTMASTER, FILE_LOCATIONS,
4536  gettext_noop("Sets the server's \"hba\" configuration file."),
4537  NULL,
4539  },
4540  &HbaFileName,
4541  NULL,
4542  NULL, NULL, NULL
4543  },
4544 
4545  {
4546  {"ident_file", PGC_POSTMASTER, FILE_LOCATIONS,
4547  gettext_noop("Sets the server's \"ident\" configuration file."),
4548  NULL,
4550  },
4551  &IdentFileName,
4552  NULL,
4553  NULL, NULL, NULL
4554  },
4555 
4556  {
4557  {"external_pid_file", PGC_POSTMASTER, FILE_LOCATIONS,
4558  gettext_noop("Writes the postmaster PID to the specified file."),
4559  NULL,
4561  },
4563  NULL,
4564  check_canonical_path, NULL, NULL
4565  },
4566 
4567  {
4568  {"ssl_library", PGC_INTERNAL, PRESET_OPTIONS,
4569  gettext_noop("Shows the name of the SSL library."),
4570  NULL,
4572  },
4573  &ssl_library,
4574 #ifdef USE_SSL
4575  "OpenSSL",
4576 #else
4577  "",
4578 #endif
4579  NULL, NULL, NULL
4580  },
4581 
4582  {
4583  {"ssl_cert_file", PGC_SIGHUP, CONN_AUTH_SSL,
4584  gettext_noop("Location of the SSL server certificate file."),
4585  NULL
4586  },
4587  &ssl_cert_file,
4588  "server.crt",
4589  NULL, NULL, NULL
4590  },
4591 
4592  {
4593  {"ssl_key_file", PGC_SIGHUP, CONN_AUTH_SSL,
4594  gettext_noop("Location of the SSL server private key file."),
4595  NULL
4596  },
4597  &ssl_key_file,
4598  "server.key",
4599  NULL, NULL, NULL
4600  },
4601 
4602  {
4603  {"ssl_ca_file", PGC_SIGHUP, CONN_AUTH_SSL,
4604  gettext_noop("Location of the SSL certificate authority file."),
4605  NULL
4606  },
4607  &ssl_ca_file,
4608  "",
4609  NULL, NULL, NULL
4610  },
4611 
4612  {
4613  {"ssl_crl_file", PGC_SIGHUP, CONN_AUTH_SSL,
4614  gettext_noop("Location of the SSL certificate revocation list file."),
4615  NULL
4616  },
4617  &ssl_crl_file,
4618  "",
4619  NULL, NULL, NULL
4620  },
4621 
4622  {
4623  {"ssl_crl_dir", PGC_SIGHUP, CONN_AUTH_SSL,
4624  gettext_noop("Location of the SSL certificate revocation list directory."),
4625  NULL
4626  },
4627  &ssl_crl_dir,
4628  "",
4629  NULL, NULL, NULL
4630  },
4631 
4632  {
4633  {"synchronous_standby_names", PGC_SIGHUP, REPLICATION_PRIMARY,
4634  gettext_noop("Number of synchronous standbys and list of names of potential synchronous ones."),
4635  NULL,
4637  },
4639  "",
4641  },
4642 
4643  {
4644  {"default_text_search_config", PGC_USERSET, CLIENT_CONN_LOCALE,
4645  gettext_noop("Sets default text search configuration."),
4646  NULL
4647  },
4648  &TSCurrentConfig,
4649  "pg_catalog.simple",
4651  },
4652 
4653  {
4654  {"ssl_tls13_ciphers", PGC_SIGHUP, CONN_AUTH_SSL,
4655  gettext_noop("Sets the list of allowed TLSv1.3 cipher suites (leave blank for default)."),
4656  NULL,
4658  },
4659  &SSLCipherSuites,
4660  "",
4661  NULL, NULL, NULL
4662  },
4663 
4664  {
4665  {"ssl_ciphers", PGC_SIGHUP, CONN_AUTH_SSL,
4666  gettext_noop("Sets the list of allowed TLSv1.2 (and lower) ciphers."),
4667  NULL,
4669  },
4670  &SSLCipherList,
4671 #ifdef USE_OPENSSL
4672  "HIGH:MEDIUM:+3DES:!aNULL",
4673 #else
4674  "none",
4675 #endif
4676  NULL, NULL, NULL
4677  },
4678 
4679  {
4680  {"ssl_groups", PGC_SIGHUP, CONN_AUTH_SSL,
4681  gettext_noop("Sets the group(s) to use for Diffie-Hellman key exchange."),
4682  gettext_noop("Multiple groups can be specified using colon-separated list."),
4684  },
4685  &SSLECDHCurve,
4686 #ifdef USE_SSL
4687  "prime256v1",
4688 #else
4689  "none",
4690 #endif
4691  NULL, NULL, NULL
4692  },
4693 
4694  {
4695  {"ssl_dh_params_file", PGC_SIGHUP, CONN_AUTH_SSL,
4696  gettext_noop("Location of the SSL DH parameters file."),
4697  NULL,
4699  },
4701  "",
4702  NULL, NULL, NULL
4703  },
4704 
4705  {
4706  {"ssl_passphrase_command", PGC_SIGHUP, CONN_AUTH_SSL,
4707  gettext_noop("Command to obtain passphrases for SSL."),
4708  NULL,
4710  },
4712  "",
4713  NULL, NULL, NULL
4714  },
4715 
4716  {
4717  {"application_name", PGC_USERSET, LOGGING_WHAT,
4718  gettext_noop("Sets the application name to be reported in statistics and logs."),
4719  NULL,
4721  },
4723  "",
4725  },
4726 
4727  {
4728  {"cluster_name", PGC_POSTMASTER, PROCESS_TITLE,
4729  gettext_noop("Sets the name of the cluster, which is included in the process title."),
4730  NULL,
4731  GUC_IS_NAME
4732  },
4733  &cluster_name,
4734  "",
4735  check_cluster_name, NULL, NULL
4736  },
4737 
4738  {
4739  {"wal_consistency_checking", PGC_SUSET, DEVELOPER_OPTIONS,
4740  gettext_noop("Sets the WAL resource managers for which WAL consistency checks are done."),
4741  gettext_noop("Full-page images will be logged for all data blocks and cross-checked against the results of WAL replay."),
4743  },
4745  "",
4747  },
4748 
4749  {
4750  {"jit_provider", PGC_POSTMASTER, CLIENT_CONN_PRELOAD,
4751  gettext_noop("JIT provider to use."),
4752  NULL,
4754  },
4755  &jit_provider,
4756  "llvmjit",
4757  NULL, NULL, NULL
4758  },
4759 
4760  {
4761  {"backtrace_functions", PGC_SUSET, DEVELOPER_OPTIONS,
4762  gettext_noop("Log backtrace for errors in these functions."),
4763  NULL,
4765  },
4767  "",
4769  },
4770 
4771  {
4772  {"debug_io_direct", PGC_POSTMASTER, DEVELOPER_OPTIONS,
4773  gettext_noop("Use direct I/O for file access."),
4774  NULL,
4776  },
4778  "",
4780  },
4781 
4782  {
4783  {"synchronized_standby_slots", PGC_SIGHUP, REPLICATION_PRIMARY,
4784  gettext_noop("Lists streaming replication standby server replication slot "
4785  "names that logical WAL sender processes will wait for."),
4786  gettext_noop("Logical WAL sender processes will send decoded "
4787  "changes to output plugins only after the specified "
4788  "replication slots have confirmed receiving WAL."),
4790  },
4792  "",
4794  },
4795 
4796  {
4797  {"restrict_nonsystem_relation_kind", PGC_USERSET, CLIENT_CONN_STATEMENT,
4798  gettext_noop("Prohibits access to non-system relations of specified kinds."),
4799  NULL,
4801  },
4803  "",
4805  },
4806 
4807  /* End-of-list marker */
4808  {
4809  {NULL, 0, 0, NULL, NULL}, NULL, NULL, NULL, NULL, NULL
4810  }
4811 };
4812 
4813 
4815 {
4816  {
4817  {"backslash_quote", PGC_USERSET, COMPAT_OPTIONS_PREVIOUS,
4818  gettext_noop("Sets whether \"\\'\" is allowed in string literals."),
4819  NULL
4820  },
4821  &backslash_quote,
4823  NULL, NULL, NULL
4824  },
4825 
4826  {
4827  {"bytea_output", PGC_USERSET, CLIENT_CONN_STATEMENT,
4828  gettext_noop("Sets the output format for bytea."),
4829  NULL
4830  },
4831  &bytea_output,
4833  NULL, NULL, NULL
4834  },
4835 
4836  {
4837  {"client_min_messages", PGC_USERSET, CLIENT_CONN_STATEMENT,
4838  gettext_noop("Sets the message levels that are sent to the client."),
4839  gettext_noop("Each level includes all the levels that follow it. The later"
4840  " the level, the fewer messages are sent.")
4841  },
4844  NULL, NULL, NULL
4845  },
4846 
4847  {
4848  {"compute_query_id", PGC_SUSET, STATS_MONITORING,
4849  gettext_noop("Enables in-core computation of query identifiers."),
4850  NULL
4851  },
4854  NULL, NULL, NULL
4855  },
4856 
4857  {
4858  {"constraint_exclusion", PGC_USERSET, QUERY_TUNING_OTHER,
4859  gettext_noop("Enables the planner to use constraints to optimize queries."),
4860  gettext_noop("Table scans will be skipped if their constraints"
4861  " guarantee that no rows match the query."),
4862  GUC_EXPLAIN
4863  },
4866  NULL, NULL, NULL
4867  },
4868 
4869  {
4870  {"default_toast_compression", PGC_USERSET, CLIENT_CONN_STATEMENT,
4871  gettext_noop("Sets the default compression method for compressible values."),
4872  NULL
4873  },
4877  NULL, NULL, NULL
4878  },
4879 
4880  {
4881  {"default_transaction_isolation", PGC_USERSET, CLIENT_CONN_STATEMENT,
4882  gettext_noop("Sets the transaction isolation level of each new transaction."),
4883  NULL
4884  },
4887  NULL, NULL, NULL
4888  },
4889 
4890  {
4891  {"transaction_isolation", PGC_USERSET, CLIENT_CONN_STATEMENT,
4892  gettext_noop("Sets the current transaction's isolation level."),
4893  NULL,
4895  },
4896  &XactIsoLevel,
4898  check_transaction_isolation, NULL, NULL
4899  },
4900 
4901  {
4902  {"IntervalStyle", PGC_USERSET, CLIENT_CONN_LOCALE,
4903  gettext_noop("Sets the display format for interval values."),
4904  NULL,
4905  GUC_REPORT
4906  },
4907  &IntervalStyle,
4909  NULL, NULL, NULL
4910  },
4911 
4912  {
4913  {"icu_validation_level", PGC_USERSET, CLIENT_CONN_LOCALE,
4914  gettext_noop("Log level for reporting invalid ICU locale strings."),
4915  NULL
4916  },
4919  NULL, NULL, NULL
4920  },
4921 
4922  {
4923  {"log_error_verbosity", PGC_SUSET, LOGGING_WHAT,
4924  gettext_noop("Sets the verbosity of logged messages."),
4925  NULL
4926  },
4929  NULL, NULL, NULL
4930  },
4931 
4932  {
4933  {"log_min_messages", PGC_SUSET, LOGGING_WHEN,
4934  gettext_noop("Sets the message levels that are logged."),
4935  gettext_noop("Each level includes all the levels that follow it. The later"
4936  " the level, the fewer messages are sent.")
4937  },
4940  NULL, NULL, NULL
4941  },
4942 
4943  {
4944  {"log_min_error_statement", PGC_SUSET, LOGGING_WHEN,
4945  gettext_noop("Causes all statements generating error at or above this level to be logged."),
4946  gettext_noop("Each level includes all the levels that follow it. The later"
4947  " the level, the fewer messages are sent.")
4948  },
4951  NULL, NULL, NULL
4952  },
4953 
4954  {
4955  {"log_statement", PGC_SUSET, LOGGING_WHAT,
4956  gettext_noop("Sets the type of statements logged."),
4957  NULL
4958  },
4959  &log_statement,
4961  NULL, NULL, NULL
4962  },
4963 
4964  {
4965  {"syslog_facility", PGC_SIGHUP, LOGGING_WHERE,
4966  gettext_noop("Sets the syslog \"facility\" to be used when syslog enabled."),
4967  NULL
4968  },
4969  &syslog_facility,
4972  NULL, assign_syslog_facility, NULL
4973  },
4974 
4975  {
4976  {"session_replication_role", PGC_SUSET, CLIENT_CONN_STATEMENT,
4977  gettext_noop("Sets the session's behavior for triggers and rewrite rules."),
4978  NULL
4979  },
4983  },
4984 
4985  {
4986  {"synchronous_commit", PGC_USERSET, WAL_SETTINGS,
4987  gettext_noop("Sets the current transaction's synchronization level."),
4988  NULL
4989  },
4992  NULL, assign_synchronous_commit, NULL
4993  },
4994 
4995  {
4996  {"archive_mode", PGC_POSTMASTER, WAL_ARCHIVING,
4997  gettext_noop("Allows archiving of WAL files using \"archive_command\"."),
4998  NULL
4999  },
5000  &XLogArchiveMode,
5002  NULL, NULL, NULL
5003  },
5004 
5005  {
5006  {"recovery_target_action", PGC_POSTMASTER, WAL_RECOVERY_TARGET,
5007  gettext_noop("Sets the action to perform upon reaching the recovery target."),
5008  NULL
5009  },
5012  NULL, NULL, NULL
5013  },
5014 
5015  {
5016  {"track_functions", PGC_SUSET, STATS_CUMULATIVE,
5017  gettext_noop("Collects function-level statistics on database activity."),
5018  NULL
5019  },
5022  NULL, NULL, NULL
5023  },
5024 
5025 
5026  {
5027  {"stats_fetch_consistency", PGC_USERSET, STATS_CUMULATIVE,
5028  gettext_noop("Sets the consistency of accesses to statistics data."),
5029  NULL
5030  },
5033  NULL, assign_stats_fetch_consistency, NULL
5034  },
5035 
5036  {
5037  {"wal_compression", PGC_SUSET, WAL_SETTINGS,
5038  gettext_noop("Compresses full-page writes written in WAL file with specified method."),
5039  NULL
5040  },
5041  &wal_compression,
5043  NULL, NULL, NULL
5044  },
5045 
5046  {
5047  {"wal_level", PGC_POSTMASTER, WAL_SETTINGS,
5048  gettext_noop("Sets the level of information written to the WAL."),
5049  NULL
5050  },
5051  &wal_level,
5053  NULL, NULL, NULL
5054  },
5055 
5056  {
5057  {"dynamic_shared_memory_type", PGC_POSTMASTER, RESOURCES_MEM,
5058  gettext_noop("Selects the dynamic shared memory implementation used."),
5059  NULL
5060  },
5063  NULL, NULL, NULL
5064  },
5065 
5066  {
5067  {"shared_memory_type", PGC_POSTMASTER, RESOURCES_MEM,
5068  gettext_noop("Selects the shared memory implementation used for the main shared memory region."),
5069  NULL
5070  },
5073  NULL, NULL, NULL
5074  },
5075 
5076  {
5077  {"wal_sync_method", PGC_SIGHUP, WAL_SETTINGS,
5078  gettext_noop("Selects the method used for forcing WAL updates to disk."),
5079  NULL
5080  },
5081  &wal_sync_method,
5083  NULL, assign_wal_sync_method, NULL
5084  },
5085 
5086  {
5087  {"xmlbinary", PGC_USERSET, CLIENT_CONN_STATEMENT,
5088  gettext_noop("Sets how binary values are to be encoded in XML."),
5089  NULL
5090  },
5091  &xmlbinary,
5093  NULL, NULL, NULL
5094  },
5095 
5096  {
5097  {"xmloption", PGC_USERSET, CLIENT_CONN_STATEMENT,
5098  gettext_noop("Sets whether XML data in implicit parsing and serialization "
5099  "operations is to be considered as documents or content fragments."),
5100  NULL
5101  },
5102  &xmloption,
5104  NULL, NULL, NULL
5105  },
5106 
5107  {
5108  {"huge_pages", PGC_POSTMASTER, RESOURCES_MEM,
5109  gettext_noop("Use of huge pages on Linux or Windows."),
5110  NULL
5111  },
5112  &huge_pages,
5114  NULL, NULL, NULL
5115  },
5116 
5117  {
5118  {"huge_pages_status", PGC_INTERNAL, PRESET_OPTIONS,
5119  gettext_noop("Indicates the status of huge pages."),
5120  NULL,
5122  },
5125  NULL, NULL, NULL
5126  },
5127 
5128  {
5129  {"recovery_prefetch", PGC_SIGHUP, WAL_RECOVERY,
5130  gettext_noop("Prefetch referenced blocks during recovery."),
5131  gettext_noop("Look ahead in the WAL to find references to uncached data.")
5132  },
5136  },
5137 
5138  {
5139  {"debug_parallel_query", PGC_USERSET, DEVELOPER_OPTIONS,
5140  gettext_noop("Forces the planner's use parallel query nodes."),
5141  gettext_noop("This can be useful for testing the parallel query infrastructure "
5142  "by forcing the planner to generate plans that contain nodes "
5143  "that perform tuple communication between workers and the main process."),
5145  },
5148  NULL, NULL, NULL
5149  },
5150 
5151  {
5152  {"password_encryption", PGC_USERSET, CONN_AUTH_AUTH,
5153  gettext_noop("Chooses the algorithm for encrypting passwords."),
5154  NULL
5155  },
5158  NULL, NULL, NULL
5159  },
5160 
5161  {
5162  {"plan_cache_mode", PGC_USERSET, QUERY_TUNING_OTHER,
5163  gettext_noop("Controls the planner's selection of custom or generic plan."),
5164  gettext_noop("Prepared statements can have custom and generic plans, and the planner "
5165  "will attempt to choose which is better. This can be set to override "
5166  "the default behavior."),
5167  GUC_EXPLAIN
5168  },
5169  &plan_cache_mode,
5171  NULL, NULL, NULL
5172  },
5173 
5174  {
5175  {"ssl_min_protocol_version", PGC_SIGHUP, CONN_AUTH_SSL,
5176  gettext_noop("Sets the minimum SSL/TLS protocol version to use."),
5177  NULL,
5179  },
5182  ssl_protocol_versions_info + 1, /* don't allow PG_TLS_ANY */
5183  NULL, NULL, NULL
5184  },
5185 
5186  {
5187  {"ssl_max_protocol_version", PGC_SIGHUP, CONN_AUTH_SSL,
5188  gettext_noop("Sets the maximum SSL/TLS protocol version to use."),
5189  NULL,
5191  },
5193  PG_TLS_ANY,
5195  NULL, NULL, NULL
5196  },
5197 
5198  {
5199  {"recovery_init_sync_method", PGC_SIGHUP, ERROR_HANDLING_OPTIONS,
5200  gettext_noop("Sets the method for synchronizing the data directory before crash recovery."),
5201  },
5204  NULL, NULL, NULL
5205  },
5206 
5207  {
5208  {"debug_logical_replication_streaming", PGC_USERSET, DEVELOPER_OPTIONS,
5209  gettext_noop("Forces immediate streaming or serialization of changes in large transactions."),
5210  gettext_noop("On the publisher, it allows streaming or serializing each change in logical decoding. "
5211  "On the subscriber, it allows serialization of all changes to files and notifies the "
5212  "parallel apply workers to read and apply them at the end of the transaction."),
5214  },
5217  NULL, NULL, NULL
5218  },
5219 
5220  /* End-of-list marker */
5221  {
5222  {NULL, 0, 0, NULL, NULL}, NULL, 0, NULL, NULL, NULL, NULL
5223  }
5224 };
int geqo_threshold
Definition: allpaths.c:80
bool enable_geqo
Definition: allpaths.c:79
int min_parallel_index_scan_size
Definition: allpaths.c:82
int min_parallel_table_scan_size
Definition: allpaths.c:81
bool Array_nulls
Definition: arrayfuncs.c:43
int max_notify_queue_pages
Definition: async.c:428
bool Trace_notify
Definition: async.c:425
bool check_notify_buffers(int *newval, void **extra, GucSource source)
Definition: async.c:2394
int scram_sha_256_iterations
Definition: auth-scram.c:194
char * pg_krb_server_keyfile
Definition: auth.c:164
bool pg_krb_caseins_users
Definition: auth.c:165
bool pg_gss_accept_delegation
Definition: auth.c:166
int autovacuum_multixact_freeze_max_age
Definition: autovacuum.c:128
int autovacuum_naptime
Definition: autovacuum.c:120
double autovacuum_vac_scale
Definition: autovacuum.c:122
int Log_autovacuum_min_duration
Definition: autovacuum.c:133
int autovacuum_anl_thresh
Definition: autovacuum.c:125
bool check_autovacuum_work_mem(int *newval, void **extra, GucSource source)
Definition: autovacuum.c:3331
int autovacuum_vac_cost_limit
Definition: autovacuum.c:131
int autovacuum_max_workers
Definition: autovacuum.c:118
int autovacuum_freeze_max_age
Definition: autovacuum.c:127
double autovacuum_vac_cost_delay
Definition: autovacuum.c:130
int autovacuum_vac_thresh
Definition: autovacuum.c:121
int autovacuum_work_mem
Definition: autovacuum.c:119
double autovacuum_anl_scale
Definition: autovacuum.c:126
int autovacuum_vac_ins_thresh
Definition: autovacuum.c:123
bool autovacuum_start_daemon
Definition: autovacuum.c:117
double autovacuum_vac_ins_scale
Definition: autovacuum.c:124
bool check_default_tablespace(char **newval, void **extra, GucSource source)
Definition: tablespace.c:1091
char * temp_tablespaces
Definition: tablespace.c:84
void assign_temp_tablespaces(const char *newval, void *extra)
Definition: tablespace.c:1306
bool check_temp_tablespaces(char **newval, void **extra, GucSource source)
Definition: tablespace.c:1198
char * default_tablespace
Definition: tablespace.c:83
bool allow_in_place_tablespaces
Definition: tablespace.c:85
const char * show_unix_socket_permissions(void)
Definition: variable.c:1186
void assign_application_name(const char *newval, void *extra)
Definition: variable.c:1104
bool check_bonjour(bool *newval, void **extra, GucSource source)
Definition: variable.c:1201
bool check_maintenance_io_concurrency(int *newval, void **extra, GucSource source)
Definition: variable.c:1243
void assign_session_authorization(const char *newval, void *extra)
Definition: variable.c:910
bool check_transaction_deferrable(bool *newval, void **extra, GucSource source)
Definition: variable.c:622
bool check_canonical_path(char **newval, void **extra, GucSource source)
Definition: variable.c:1057
const char * show_timezone(void)
Definition: variable.c:390
bool check_transaction_isolation(int *newval, void **extra, GucSource source)
Definition: variable.c:584
bool check_default_with_oids(bool *newval, void **extra, GucSource source)
Definition: variable.c:1214
void assign_timezone_abbreviations(const char *newval, void *extra)
Definition: variable.c:517
bool check_effective_io_concurrency(int *newval, void **extra, GucSource source)
Definition: variable.c:1229
bool check_application_name(char **newval, void **extra, GucSource source)
Definition: variable.c:1078
void assign_timezone(const char *newval, void *extra)
Definition: variable.c:381
bool check_role(char **newval, void **extra, GucSource source)
Definition: variable.c:931
bool check_cluster_name(char **newval, void **extra, GucSource source)
Definition: variable.c:1114
const char * show_log_timezone(void)
Definition: variable.c:463
bool check_session_authorization(char **newval, void **extra, GucSource source)
Definition: variable.c:813
bool check_transaction_read_only(bool *newval, void **extra, GucSource source)
Definition: variable.c:544
void assign_maintenance_io_concurrency(int newval, void *extra)
Definition: variable.c:1140
bool check_timezone_abbreviations(char **newval, void **extra, GucSource source)
Definition: variable.c:485
void assign_client_encoding(const char *newval, void *extra)
Definition: variable.c:784
void assign_role(const char *newval, void *extra)
Definition: variable.c:1024
bool check_timezone(char **newval, void **extra, GucSource source)
Definition: variable.c:261
const char * show_random_seed(void)
Definition: variable.c:675
bool check_ssl(bool *newval, void **extra, GucSource source)
Definition: variable.c:1257
void assign_datestyle(const char *newval, void *extra)
Definition: variable.c:244
void assign_random_seed(double newval, void *extra)
Definition: variable.c:666
bool check_log_timezone(char **newval, void **extra, GucSource source)
Definition: variable.c:416
bool check_random_seed(double *newval, void **extra, GucSource source)
Definition: variable.c:654
const char * show_role(void)
Definition: variable.c:1032
bool check_datestyle(char **newval, void **extra, GucSource source)
Definition: variable.c:52
bool check_client_encoding(char **newval, void **extra, GucSource source)
Definition: variable.c:686
const char * show_log_file_mode(void)
Definition: variable.c:1174
const char * show_data_directory_mode(void)
Definition: variable.c:1162
void assign_log_timezone(const char *newval, void *extra)
Definition: variable.c:454
int log_startup_progress_interval
Definition: startup.c:76
bool Trace_connection_negotiation
bool pgstat_track_activities
int pgstat_track_activity_query_size
char * ssl_crl_dir
Definition: be-secure.c:41
char * ssl_dh_params_file
Definition: be-secure.c:42
int ssl_min_protocol_version
Definition: be-secure.c:60
char * ssl_cert_file
Definition: be-secure.c:37
bool SSLPreferServerCiphers
Definition: be-secure.c:58
char * ssl_library
Definition: be-secure.c:36
int ssl_max_protocol_version
Definition: be-secure.c:61
char * ssl_passphrase_command
Definition: be-secure.c:43
bool ssl_passphrase_command_supports_reload
Definition: be-secure.c:44
char * SSLCipherSuites
Definition: be-secure.c:51
char * SSLECDHCurve
Definition: be-secure.c:55
char * SSLCipherList
Definition: be-secure.c:52
char * ssl_key_file
Definition: be-secure.c:38
char * ssl_crl_file
Definition: be-secure.c:40
char * ssl_ca_file
Definition: be-secure.c:39
#define MAX_PARALLEL_WORKER_LIMIT
int BgWriterDelay
Definition: bgwriter.c:57
bool track_io_timing
Definition: bufmgr.c:143
bool zero_damaged_pages
Definition: bufmgr.c:140
int bgwriter_flush_after
Definition: bufmgr.c:172
int checkpoint_flush_after
Definition: bufmgr.c:171
double bgwriter_lru_multiplier
Definition: bufmgr.c:142
int backend_flush_after
Definition: bufmgr.c:173
int maintenance_io_concurrency
Definition: bufmgr.c:158
int effective_io_concurrency
Definition: bufmgr.c:151
int io_combine_limit
Definition: bufmgr.c:165
int bgwriter_lru_maxpages
Definition: bufmgr.c:141
#define DEFAULT_IO_COMBINE_LIMIT
Definition: bufmgr.h:165
#define MAX_IO_COMBINE_LIMIT
Definition: bufmgr.h:164
#define MAX_IO_CONCURRENCY
Definition: bufmgr.h:181
#define DEFAULT_EFFECTIVE_IO_CONCURRENCY
Definition: bufmgr.h:158
#define DEFAULT_MAINTENANCE_IO_CONCURRENCY
Definition: bufmgr.h:159
bool ignore_checksum_failure
Definition: bufpage.c:27
@ BYTEA_OUTPUT_HEX
Definition: bytea.h:22
@ BYTEA_OUTPUT_ESCAPE
Definition: bytea.h:21
#define Min(x, y)
Definition: c.h:983
#define gettext_noop(x)
Definition: c.h:1175
#define lengthof(array)
Definition: c.h:767
double CheckPointCompletionTarget
Definition: checkpointer.c:138
int CheckPointWarning
Definition: checkpointer.c:137
int CheckPointTimeout
Definition: checkpointer.c:136
bool check_transaction_buffers(int *newval, void **extra, GucSource source)
Definition: clog.c:821
int default_statistics_target
Definition: analyze.c:71
bool track_commit_timestamp
Definition: commit_ts.c:109
bool check_commit_ts_buffers(int *newval, void **extra, GucSource source)
Definition: commit_ts.c:584
#define DEFAULT_PARALLEL_TUPLE_COST
Definition: cost.h:29
#define DEFAULT_PARALLEL_SETUP_COST
Definition: cost.h:30
@ CONSTRAINT_EXCLUSION_OFF
Definition: cost.h:38
@ CONSTRAINT_EXCLUSION_PARTITION
Definition: cost.h:40
@ CONSTRAINT_EXCLUSION_ON
Definition: cost.h:39
#define DEFAULT_CPU_INDEX_TUPLE_COST
Definition: cost.h:27
#define DEFAULT_CPU_TUPLE_COST
Definition: cost.h:26
#define DEFAULT_RANDOM_PAGE_COST
Definition: cost.h:25
#define DEFAULT_RECURSIVE_WORKTABLE_FACTOR
Definition: cost.h:33
#define DEFAULT_EFFECTIVE_CACHE_SIZE
Definition: cost.h:34
#define DEFAULT_SEQ_PAGE_COST
Definition: cost.h:24
#define DEFAULT_CPU_OPERATOR_COST
Definition: cost.h:28
double random_page_cost
Definition: costsize.c:131
double cpu_operator_cost
Definition: costsize.c:134
bool enable_partitionwise_aggregate
Definition: costsize.c:160
bool enable_seqscan
Definition: costsize.c:145
int max_parallel_workers_per_gather
Definition: costsize.c:143
bool enable_memoize
Definition: costsize.c:155
double parallel_setup_cost
Definition: costsize.c:136
double recursive_worktable_factor
Definition: costsize.c:137
bool enable_gathermerge
Definition: costsize.c:158
double parallel_tuple_cost
Definition: costsize.c:135
bool enable_indexonlyscan
Definition: costsize.c:147
bool enable_tidscan
Definition: costsize.c:149
double cpu_tuple_cost
Definition: costsize.c:132
bool enable_material
Definition: costsize.c:154
bool enable_hashjoin
Definition: costsize.c:157
bool enable_mergejoin
Definition: costsize.c:156
bool enable_presorted_aggregate
Definition: costsize.c:164
bool enable_parallel_hash
Definition: costsize.c:162
bool enable_partitionwise_join
Definition: costsize.c:159
bool enable_async_append
Definition: costsize.c:165
double seq_page_cost
Definition: costsize.c:130
bool enable_parallel_append
Definition: costsize.c:161
bool enable_nestloop
Definition: costsize.c:153
bool enable_bitmapscan
Definition: costsize.c:148
bool enable_hashagg
Definition: costsize.c:152
bool enable_partition_pruning
Definition: costsize.c:163
bool enable_sort
Definition: costsize.c:150
int effective_cache_size
Definition: costsize.c:139
double cpu_index_tuple_cost
Definition: costsize.c:133
bool enable_indexscan
Definition: costsize.c:146
bool enable_incremental_sort
Definition: costsize.c:151
@ PASSWORD_TYPE_SCRAM_SHA_256
Definition: crypt.h:41
@ PASSWORD_TYPE_MD5
Definition: crypt.h:40
#define MINS_PER_HOUR
Definition: timestamp.h:129
#define SECS_PER_MINUTE
Definition: timestamp.h:128
#define HOURS_PER_DAY
Definition: timestamp.h:118
char * Dynamic_library_path
Definition: dfmgr.c:67
int min_dynamic_shared_memory
Definition: dsm_impl.c:115
int dynamic_shared_memory_type
Definition: dsm_impl.c:112
#define DEFAULT_DYNAMIC_SHARED_MEMORY_TYPE
Definition: dsm_impl.h:36
void assign_syslog_facility(int newval, void *extra)
Definition: elog.c:2338
void assign_syslog_ident(const char *newval, void *extra)
Definition: elog.c:2306
bool syslog_split_messages
Definition: elog.c:113
void assign_backtrace_functions(const char *newval, void *extra)
Definition: elog.c:2226
int Log_error_verbosity
Definition: elog.c:108
bool check_backtrace_functions(char **newval, void **extra, GucSource source)
Definition: elog.c:2167
bool check_log_destination(char **newval, void **extra, GucSource source)
Definition: elog.c:2235
bool syslog_sequence_numbers
Definition: elog.c:112
char * Log_destination_string
Definition: elog.c:111
char * Log_line_prefix
Definition: elog.c:109
void assign_log_destination(const char *newval, void *extra)
Definition: elog.c:2297
@ PGERROR_VERBOSE
Definition: elog.h:482
@ PGERROR_DEFAULT
Definition: elog.h:481
@ PGERROR_TERSE
Definition: elog.h:480
#define LOG
Definition: elog.h:31
#define DEBUG3
Definition: elog.h:28
#define FATAL
Definition: elog.h:41
#define WARNING
Definition: elog.h:36
#define DEBUG2
Definition: elog.h:29
#define PANIC
Definition: elog.h:42
#define DEBUG1
Definition: elog.h:30
#define ERROR
Definition: elog.h:39
#define NOTICE
Definition: elog.h:35
#define INFO
Definition: elog.h:34
#define DEBUG5
Definition: elog.h:26
#define DEBUG4
Definition: elog.h:27
bool event_triggers
Definition: event_trigger.c:84
int max_files_per_process
Definition: fd.c:145
int recovery_init_sync_method
Definition: fd.c:164
void assign_debug_io_direct(const char *newval, void *extra)
Definition: fd.c:4050
bool data_sync_retry
Definition: fd.c:161
bool check_debug_io_direct(char **newval, void **extra, GucSource source)
Definition: fd.c:3965
#define MaxAllocSize
Definition: fe_memutils.h:22
@ DATA_DIR_SYNC_METHOD_SYNCFS
Definition: file_utils.h:30
@ DATA_DIR_SYNC_METHOD_FSYNC
Definition: file_utils.h:29
int extra_float_digits
Definition: float.c:40
#define DEFAULT_GEQO_EFFORT
Definition: geqo.h:55
#define MAX_GEQO_EFFORT
Definition: geqo.h:57
#define MAX_GEQO_SELECTION_BIAS
Definition: geqo.h:67
#define MIN_GEQO_EFFORT
Definition: geqo.h:56
#define DEFAULT_GEQO_SELECTION_BIAS
Definition: geqo.h:65
#define MIN_GEQO_SELECTION_BIAS
Definition: geqo.h:66
int Geqo_pool_size
Definition: geqo_main.c:45
double Geqo_seed
Definition: geqo_main.c:48
int Geqo_generations
Definition: geqo_main.c:46
int Geqo_effort
Definition: geqo_main.c:44
double Geqo_selection_bias
Definition: geqo_main.c:47
int gin_pending_list_limit
Definition: ginfast.c:39
int GinFuzzySearchLimit
Definition: ginget.c:27
int multixact_offset_buffers
Definition: globals.c:162
double hash_mem_multiplier
Definition: globals.c:131
int VacuumCostLimit
Definition: globals.c:153
int max_parallel_maintenance_workers
Definition: globals.c:133
int NBuffers
Definition: globals.c:141
int transaction_buffers
Definition: globals.c:166
bool enableFsync
Definition: globals.c:128
int VacuumCostPageMiss
Definition: globals.c:151
int MaxConnections
Definition: globals.c:142
int multixact_member_buffers
Definition: globals.c:161
int data_directory_mode
Definition: globals.c:76
bool allowSystemTableMods
Definition: globals.c:129
int maintenance_work_mem
Definition: globals.c:132
int max_parallel_workers
Definition: globals.c:144
int VacuumCostPageDirty
Definition: globals.c:152
bool ExitOnAnyError
Definition: globals.c:122
int IntervalStyle
Definition: globals.c:126
int notify_buffers
Definition: globals.