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 "archive/archive_module.h"
38 #include "catalog/namespace.h"
39 #include "catalog/storage.h"
40 #include "commands/async.h"
41 #include "commands/event_trigger.h"
42 #include "commands/tablespace.h"
43 #include "commands/trigger.h"
44 #include "commands/user.h"
45 #include "commands/vacuum.h"
46 #include "common/file_utils.h"
47 #include "common/scram-common.h"
48 #include "jit/jit.h"
49 #include "libpq/auth.h"
50 #include "libpq/libpq.h"
51 #include "libpq/scram.h"
52 #include "nodes/queryjumble.h"
53 #include "optimizer/cost.h"
54 #include "optimizer/geqo.h"
55 #include "optimizer/optimizer.h"
56 #include "optimizer/paths.h"
57 #include "optimizer/planmain.h"
58 #include "parser/parse_expr.h"
59 #include "parser/parser.h"
60 #include "pgstat.h"
61 #include "postmaster/autovacuum.h"
63 #include "postmaster/bgwriter.h"
64 #include "postmaster/postmaster.h"
65 #include "postmaster/startup.h"
66 #include "postmaster/syslogger.h"
68 #include "postmaster/walwriter.h"
70 #include "replication/slot.h"
71 #include "replication/slotsync.h"
72 #include "replication/syncrep.h"
73 #include "storage/bufmgr.h"
74 #include "storage/large_object.h"
75 #include "storage/pg_shmem.h"
76 #include "storage/predicate.h"
77 #include "storage/standby.h"
78 #include "tcop/tcopprot.h"
79 #include "tsearch/ts_cache.h"
80 #include "utils/builtins.h"
81 #include "utils/bytea.h"
82 #include "utils/float.h"
83 #include "utils/guc_hooks.h"
84 #include "utils/guc_tables.h"
85 #include "utils/inval.h"
86 #include "utils/memutils.h"
87 #include "utils/pg_locale.h"
88 #include "utils/plancache.h"
89 #include "utils/ps_status.h"
90 #include "utils/xml.h"
91 
92 /* This value is normally passed in from the Makefile */
93 #ifndef PG_KRB_SRVTAB
94 #define PG_KRB_SRVTAB ""
95 #endif
96 
97 /* XXX these should appear in other modules' header files */
98 extern bool Log_disconnections;
100 extern int CommitDelay;
101 extern int CommitSiblings;
102 extern char *default_tablespace;
103 extern char *temp_tablespaces;
104 extern bool ignore_checksum_failure;
106 
107 #ifdef TRACE_SYNCSCAN
108 extern bool trace_syncscan;
109 #endif
110 #ifdef DEBUG_BOUNDED_SORT
111 extern bool optimize_bounded_sort;
112 #endif
113 
114 /*
115  * Options for enum values defined in this module.
116  *
117  * NOTE! Option values may not contain double quotes!
118  */
119 
120 static const struct config_enum_entry bytea_output_options[] = {
121  {"escape", BYTEA_OUTPUT_ESCAPE, false},
122  {"hex", BYTEA_OUTPUT_HEX, false},
123  {NULL, 0, false}
124 };
125 
127  "array length mismatch");
128 
129 /*
130  * We have different sets for client and server message level options because
131  * they sort slightly different (see "log" level), and because "fatal"/"panic"
132  * aren't sensible for client_min_messages.
133  */
134 static const struct config_enum_entry client_message_level_options[] = {
135  {"debug5", DEBUG5, false},
136  {"debug4", DEBUG4, false},
137  {"debug3", DEBUG3, false},
138  {"debug2", DEBUG2, false},
139  {"debug1", DEBUG1, false},
140  {"debug", DEBUG2, true},
141  {"log", LOG, false},
142  {"info", INFO, true},
143  {"notice", NOTICE, false},
144  {"warning", WARNING, false},
145  {"error", ERROR, false},
146  {NULL, 0, false}
147 };
148 
149 static const struct config_enum_entry server_message_level_options[] = {
150  {"debug5", DEBUG5, false},
151  {"debug4", DEBUG4, false},
152  {"debug3", DEBUG3, false},
153  {"debug2", DEBUG2, false},
154  {"debug1", DEBUG1, false},
155  {"debug", DEBUG2, true},
156  {"info", INFO, false},
157  {"notice", NOTICE, false},
158  {"warning", WARNING, false},
159  {"error", ERROR, false},
160  {"log", LOG, false},
161  {"fatal", FATAL, false},
162  {"panic", PANIC, false},
163  {NULL, 0, false}
164 };
165 
166 static const struct config_enum_entry intervalstyle_options[] = {
167  {"postgres", INTSTYLE_POSTGRES, false},
168  {"postgres_verbose", INTSTYLE_POSTGRES_VERBOSE, false},
169  {"sql_standard", INTSTYLE_SQL_STANDARD, false},
170  {"iso_8601", INTSTYLE_ISO_8601, false},
171  {NULL, 0, false}
172 };
173 
174 static const struct config_enum_entry icu_validation_level_options[] = {
175  {"disabled", -1, false},
176  {"debug5", DEBUG5, false},
177  {"debug4", DEBUG4, false},
178  {"debug3", DEBUG3, false},
179  {"debug2", DEBUG2, false},
180  {"debug1", DEBUG1, false},
181  {"debug", DEBUG2, true},
182  {"log", LOG, false},
183  {"info", INFO, true},
184  {"notice", NOTICE, false},
185  {"warning", WARNING, false},
186  {"error", ERROR, false},
187  {NULL, 0, false}
188 };
189 
191  "array length mismatch");
192 
193 static const struct config_enum_entry log_error_verbosity_options[] = {
194  {"terse", PGERROR_TERSE, false},
195  {"default", PGERROR_DEFAULT, false},
196  {"verbose", PGERROR_VERBOSE, false},
197  {NULL, 0, false}
198 };
199 
201  "array length mismatch");
202 
203 static const struct config_enum_entry log_statement_options[] = {
204  {"none", LOGSTMT_NONE, false},
205  {"ddl", LOGSTMT_DDL, false},
206  {"mod", LOGSTMT_MOD, false},
207  {"all", LOGSTMT_ALL, false},
208  {NULL, 0, false}
209 };
210 
212  "array length mismatch");
213 
214 static const struct config_enum_entry isolation_level_options[] = {
215  {"serializable", XACT_SERIALIZABLE, false},
216  {"repeatable read", XACT_REPEATABLE_READ, false},
217  {"read committed", XACT_READ_COMMITTED, false},
218  {"read uncommitted", XACT_READ_UNCOMMITTED, false},
219  {NULL, 0}
220 };
221 
222 static const struct config_enum_entry session_replication_role_options[] = {
223  {"origin", SESSION_REPLICATION_ROLE_ORIGIN, false},
224  {"replica", SESSION_REPLICATION_ROLE_REPLICA, false},
225  {"local", SESSION_REPLICATION_ROLE_LOCAL, false},
226  {NULL, 0, false}
227 };
228 
230  "array length mismatch");
231 
232 static const struct config_enum_entry syslog_facility_options[] = {
233 #ifdef HAVE_SYSLOG
234  {"local0", LOG_LOCAL0, false},
235  {"local1", LOG_LOCAL1, false},
236  {"local2", LOG_LOCAL2, false},
237  {"local3", LOG_LOCAL3, false},
238  {"local4", LOG_LOCAL4, false},
239  {"local5", LOG_LOCAL5, false},
240  {"local6", LOG_LOCAL6, false},
241  {"local7", LOG_LOCAL7, false},
242 #else
243  {"none", 0, false},
244 #endif
245  {NULL, 0}
246 };
247 
248 static const struct config_enum_entry track_function_options[] = {
249  {"none", TRACK_FUNC_OFF, false},
250  {"pl", TRACK_FUNC_PL, false},
251  {"all", TRACK_FUNC_ALL, false},
252  {NULL, 0, false}
253 };
254 
256  "array length mismatch");
257 
258 static const struct config_enum_entry stats_fetch_consistency[] = {
259  {"none", PGSTAT_FETCH_CONSISTENCY_NONE, false},
260  {"cache", PGSTAT_FETCH_CONSISTENCY_CACHE, false},
261  {"snapshot", PGSTAT_FETCH_CONSISTENCY_SNAPSHOT, false},
262  {NULL, 0, false}
263 };
264 
266  "array length mismatch");
267 
268 static const struct config_enum_entry xmlbinary_options[] = {
269  {"base64", XMLBINARY_BASE64, false},
270  {"hex", XMLBINARY_HEX, false},
271  {NULL, 0, false}
272 };
273 
275  "array length mismatch");
276 
277 static const struct config_enum_entry xmloption_options[] = {
278  {"content", XMLOPTION_CONTENT, false},
279  {"document", XMLOPTION_DOCUMENT, false},
280  {NULL, 0, false}
281 };
282 
284  "array length mismatch");
285 
286 /*
287  * Although only "on", "off", and "safe_encoding" are documented, we
288  * accept all the likely variants of "on" and "off".
289  */
290 static const struct config_enum_entry backslash_quote_options[] = {
291  {"safe_encoding", BACKSLASH_QUOTE_SAFE_ENCODING, false},
292  {"on", BACKSLASH_QUOTE_ON, false},
293  {"off", BACKSLASH_QUOTE_OFF, false},
294  {"true", BACKSLASH_QUOTE_ON, true},
295  {"false", BACKSLASH_QUOTE_OFF, true},
296  {"yes", BACKSLASH_QUOTE_ON, true},
297  {"no", BACKSLASH_QUOTE_OFF, true},
298  {"1", BACKSLASH_QUOTE_ON, true},
299  {"0", BACKSLASH_QUOTE_OFF, true},
300  {NULL, 0, false}
301 };
302 
303 /*
304  * Although only "on", "off", and "auto" are documented, we accept
305  * all the likely variants of "on" and "off".
306  */
307 static const struct config_enum_entry compute_query_id_options[] = {
308  {"auto", COMPUTE_QUERY_ID_AUTO, false},
309  {"regress", COMPUTE_QUERY_ID_REGRESS, false},
310  {"on", COMPUTE_QUERY_ID_ON, false},
311  {"off", COMPUTE_QUERY_ID_OFF, false},
312  {"true", COMPUTE_QUERY_ID_ON, true},
313  {"false", COMPUTE_QUERY_ID_OFF, true},
314  {"yes", COMPUTE_QUERY_ID_ON, true},
315  {"no", COMPUTE_QUERY_ID_OFF, true},
316  {"1", COMPUTE_QUERY_ID_ON, true},
317  {"0", COMPUTE_QUERY_ID_OFF, true},
318  {NULL, 0, false}
319 };
320 
321 /*
322  * Although only "on", "off", and "partition" are documented, we
323  * accept all the likely variants of "on" and "off".
324  */
325 static const struct config_enum_entry constraint_exclusion_options[] = {
326  {"partition", CONSTRAINT_EXCLUSION_PARTITION, false},
327  {"on", CONSTRAINT_EXCLUSION_ON, false},
328  {"off", CONSTRAINT_EXCLUSION_OFF, false},
329  {"true", CONSTRAINT_EXCLUSION_ON, true},
330  {"false", CONSTRAINT_EXCLUSION_OFF, true},
331  {"yes", CONSTRAINT_EXCLUSION_ON, true},
332  {"no", CONSTRAINT_EXCLUSION_OFF, true},
333  {"1", CONSTRAINT_EXCLUSION_ON, true},
334  {"0", CONSTRAINT_EXCLUSION_OFF, true},
335  {NULL, 0, false}
336 };
337 
338 /*
339  * Although only "on", "off", "remote_apply", "remote_write", and "local" are
340  * documented, we accept all the likely variants of "on" and "off".
341  */
342 static const struct config_enum_entry synchronous_commit_options[] = {
343  {"local", SYNCHRONOUS_COMMIT_LOCAL_FLUSH, false},
344  {"remote_write", SYNCHRONOUS_COMMIT_REMOTE_WRITE, false},
345  {"remote_apply", SYNCHRONOUS_COMMIT_REMOTE_APPLY, false},
346  {"on", SYNCHRONOUS_COMMIT_ON, false},
347  {"off", SYNCHRONOUS_COMMIT_OFF, false},
348  {"true", SYNCHRONOUS_COMMIT_ON, true},
349  {"false", SYNCHRONOUS_COMMIT_OFF, true},
350  {"yes", SYNCHRONOUS_COMMIT_ON, true},
351  {"no", SYNCHRONOUS_COMMIT_OFF, true},
352  {"1", SYNCHRONOUS_COMMIT_ON, true},
353  {"0", SYNCHRONOUS_COMMIT_OFF, true},
354  {NULL, 0, false}
355 };
356 
357 /*
358  * Although only "on", "off", "try" are documented, we accept all the likely
359  * variants of "on" and "off".
360  */
361 static const struct config_enum_entry huge_pages_options[] = {
362  {"off", HUGE_PAGES_OFF, false},
363  {"on", HUGE_PAGES_ON, false},
364  {"try", HUGE_PAGES_TRY, false},
365  {"true", HUGE_PAGES_ON, true},
366  {"false", HUGE_PAGES_OFF, true},
367  {"yes", HUGE_PAGES_ON, true},
368  {"no", HUGE_PAGES_OFF, true},
369  {"1", HUGE_PAGES_ON, true},
370  {"0", HUGE_PAGES_OFF, true},
371  {NULL, 0, false}
372 };
373 
374 static const struct config_enum_entry huge_pages_status_options[] = {
375  {"off", HUGE_PAGES_OFF, false},
376  {"on", HUGE_PAGES_ON, false},
377  {"unknown", HUGE_PAGES_UNKNOWN, false},
378  {NULL, 0, false}
379 };
380 
381 static const struct config_enum_entry recovery_prefetch_options[] = {
382  {"off", RECOVERY_PREFETCH_OFF, false},
383  {"on", RECOVERY_PREFETCH_ON, false},
384  {"try", RECOVERY_PREFETCH_TRY, false},
385  {"true", RECOVERY_PREFETCH_ON, true},
386  {"false", RECOVERY_PREFETCH_OFF, true},
387  {"yes", RECOVERY_PREFETCH_ON, true},
388  {"no", RECOVERY_PREFETCH_OFF, true},
389  {"1", RECOVERY_PREFETCH_ON, true},
390  {"0", RECOVERY_PREFETCH_OFF, true},
391  {NULL, 0, false}
392 };
393 
394 static const struct config_enum_entry debug_parallel_query_options[] = {
395  {"off", DEBUG_PARALLEL_OFF, false},
396  {"on", DEBUG_PARALLEL_ON, false},
397  {"regress", DEBUG_PARALLEL_REGRESS, false},
398  {"true", DEBUG_PARALLEL_ON, true},
399  {"false", DEBUG_PARALLEL_OFF, true},
400  {"yes", DEBUG_PARALLEL_ON, true},
401  {"no", DEBUG_PARALLEL_OFF, true},
402  {"1", DEBUG_PARALLEL_ON, true},
403  {"0", DEBUG_PARALLEL_OFF, true},
404  {NULL, 0, false}
405 };
406 
407 static const struct config_enum_entry plan_cache_mode_options[] = {
408  {"auto", PLAN_CACHE_MODE_AUTO, false},
409  {"force_generic_plan", PLAN_CACHE_MODE_FORCE_GENERIC_PLAN, false},
410  {"force_custom_plan", PLAN_CACHE_MODE_FORCE_CUSTOM_PLAN, false},
411  {NULL, 0, false}
412 };
413 
414 static const struct config_enum_entry password_encryption_options[] = {
415  {"md5", PASSWORD_TYPE_MD5, false},
416  {"scram-sha-256", PASSWORD_TYPE_SCRAM_SHA_256, false},
417  {NULL, 0, false}
418 };
419 
420 static const struct config_enum_entry ssl_protocol_versions_info[] = {
421  {"", PG_TLS_ANY, false},
422  {"TLSv1", PG_TLS1_VERSION, false},
423  {"TLSv1.1", PG_TLS1_1_VERSION, false},
424  {"TLSv1.2", PG_TLS1_2_VERSION, false},
425  {"TLSv1.3", PG_TLS1_3_VERSION, false},
426  {NULL, 0, false}
427 };
428 
430  {"buffered", DEBUG_LOGICAL_REP_STREAMING_BUFFERED, false},
431  {"immediate", DEBUG_LOGICAL_REP_STREAMING_IMMEDIATE, false},
432  {NULL, 0, false}
433 };
434 
436  "array length mismatch");
437 
439  {"fsync", DATA_DIR_SYNC_METHOD_FSYNC, false},
440 #ifdef HAVE_SYNCFS
441  {"syncfs", DATA_DIR_SYNC_METHOD_SYNCFS, false},
442 #endif
443  {NULL, 0, false}
444 };
445 
446 static const struct config_enum_entry shared_memory_options[] = {
447 #ifndef WIN32
448  {"sysv", SHMEM_TYPE_SYSV, false},
449 #endif
450 #ifndef EXEC_BACKEND
451  {"mmap", SHMEM_TYPE_MMAP, false},
452 #endif
453 #ifdef WIN32
454  {"windows", SHMEM_TYPE_WINDOWS, false},
455 #endif
456  {NULL, 0, false}
457 };
458 
460  {"pglz", TOAST_PGLZ_COMPRESSION, false},
461 #ifdef USE_LZ4
462  {"lz4", TOAST_LZ4_COMPRESSION, false},
463 #endif
464  {NULL, 0, false}
465 };
466 
467 static const struct config_enum_entry wal_compression_options[] = {
468  {"pglz", WAL_COMPRESSION_PGLZ, false},
469 #ifdef USE_LZ4
470  {"lz4", WAL_COMPRESSION_LZ4, false},
471 #endif
472 #ifdef USE_ZSTD
473  {"zstd", WAL_COMPRESSION_ZSTD, false},
474 #endif
475  {"on", WAL_COMPRESSION_PGLZ, false},
476  {"off", WAL_COMPRESSION_NONE, false},
477  {"true", WAL_COMPRESSION_PGLZ, true},
478  {"false", WAL_COMPRESSION_NONE, true},
479  {"yes", WAL_COMPRESSION_PGLZ, true},
480  {"no", WAL_COMPRESSION_NONE, true},
481  {"1", WAL_COMPRESSION_PGLZ, true},
482  {"0", WAL_COMPRESSION_NONE, true},
483  {NULL, 0, false}
484 };
485 
486 /*
487  * Options for enum values stored in other modules
488  */
489 extern const struct config_enum_entry wal_level_options[];
490 extern const struct config_enum_entry archive_mode_options[];
492 extern const struct config_enum_entry wal_sync_method_options[];
494 
495 /*
496  * GUC option variables that are exported from this module
497  */
498 bool AllowAlterSystem = true;
499 bool log_duration = false;
500 bool Debug_print_plan = false;
501 bool Debug_print_parse = false;
503 bool Debug_pretty_print = true;
504 
505 bool log_parser_stats = false;
506 bool log_planner_stats = false;
507 bool log_executor_stats = false;
508 bool log_statement_stats = false; /* this is sort of all three above
509  * together */
512 
515 
516 /*
517  * This GUC exists solely for backward compatibility, check its definition for
518  * details.
519  */
520 bool default_with_oids = false;
522 
530 int log_temp_files = -1;
534 
536 
537 int num_temp_buffers = 1024;
538 
539 char *cluster_name = "";
544 
546 
551 
552 /*
553  * SSL renegotiation was been removed in PostgreSQL 9.5, but we tolerate it
554  * being set to zero (meaning never renegotiate) for backward compatibility.
555  * This avoids breaking compatibility with clients that have never supported
556  * renegotiation and therefore always try to zero it.
557  */
559 
560 /*
561  * This really belongs in pg_shmem.c, but is defined here so that it doesn't
562  * need to be duplicated in all the different implementations of pg_shmem.c.
563  */
567 
568 /*
569  * These variables are all dummies that don't do anything, except in some
570  * cases provide the value for SHOW to display. The real state is elsewhere
571  * and is kept in sync by assign_hooks.
572  */
573 static char *syslog_ident_str;
574 static double phony_random_seed;
576 static char *datestyle_string;
581 
582 #ifdef HAVE_SYSLOG
583 #define DEFAULT_SYSLOG_FACILITY LOG_LOCAL0
584 #else
585 #define DEFAULT_SYSLOG_FACILITY 0
586 #endif
588 
589 static char *timezone_string;
590 static char *log_timezone_string;
592 static char *data_directory;
594 static int max_function_args;
595 static int max_index_keys;
597 static int block_size;
598 static int segment_size;
601 static int wal_block_size;
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  {"geqo", PGC_USERSET, QUERY_TUNING_GEQO,
1001  gettext_noop("Enables genetic query optimization."),
1002  gettext_noop("This algorithm attempts to do planning without "
1003  "exhaustive searching."),
1004  GUC_EXPLAIN
1005  },
1006  &enable_geqo,
1007  true,
1008  NULL, NULL, NULL
1009  },
1010  {
1011  /*
1012  * Not for general use --- used by SET SESSION AUTHORIZATION and SET
1013  * ROLE
1014  */
1015  {"is_superuser", PGC_INTERNAL, UNGROUPED,
1016  gettext_noop("Shows whether the current user is a superuser."),
1017  NULL,
1019  },
1021  false,
1022  NULL, NULL, NULL
1023  },
1024  {
1025  /*
1026  * This setting itself cannot be set by ALTER SYSTEM to avoid an
1027  * operator turning this setting off by using ALTER SYSTEM, without a
1028  * way to turn it back on.
1029  */
1030  {"allow_alter_system", PGC_SIGHUP, COMPAT_OPTIONS_OTHER,
1031  gettext_noop("Allows running the ALTER SYSTEM command."),
1032  gettext_noop("Can be set to off for environments where global configuration "
1033  "changes should be made using a different method."),
1035  },
1037  true,
1038  NULL, NULL, NULL
1039  },
1040  {
1041  {"bonjour", PGC_POSTMASTER, CONN_AUTH_SETTINGS,
1042  gettext_noop("Enables advertising the server via Bonjour."),
1043  NULL
1044  },
1045  &enable_bonjour,
1046  false,
1047  check_bonjour, NULL, NULL
1048  },
1049  {
1050  {"track_commit_timestamp", PGC_POSTMASTER, REPLICATION_SENDING,
1051  gettext_noop("Collects transaction commit time."),
1052  NULL
1053  },
1055  false,
1056  NULL, NULL, NULL
1057  },
1058  {
1059  {"ssl", PGC_SIGHUP, CONN_AUTH_SSL,
1060  gettext_noop("Enables SSL connections."),
1061  NULL
1062  },
1063  &EnableSSL,
1064  false,
1065  check_ssl, NULL, NULL
1066  },
1067  {
1068  {"ssl_passphrase_command_supports_reload", PGC_SIGHUP, CONN_AUTH_SSL,
1069  gettext_noop("Controls whether \"ssl_passphrase_command\" is called during server reload."),
1070  NULL
1071  },
1073  false,
1074  NULL, NULL, NULL
1075  },
1076  {
1077  {"ssl_prefer_server_ciphers", PGC_SIGHUP, CONN_AUTH_SSL,
1078  gettext_noop("Give priority to server ciphersuite order."),
1079  NULL
1080  },
1082  true,
1083  NULL, NULL, NULL
1084  },
1085  {
1086  {"fsync", PGC_SIGHUP, WAL_SETTINGS,
1087  gettext_noop("Forces synchronization of updates to disk."),
1088  gettext_noop("The server will use the fsync() system call in several places to make "
1089  "sure that updates are physically written to disk. This ensures "
1090  "that a database cluster will recover to a consistent state after "
1091  "an operating system or hardware crash.")
1092  },
1093  &enableFsync,
1094  true,
1095  NULL, NULL, NULL
1096  },
1097  {
1098  {"ignore_checksum_failure", PGC_SUSET, DEVELOPER_OPTIONS,
1099  gettext_noop("Continues processing after a checksum failure."),
1100  gettext_noop("Detection of a checksum failure normally causes PostgreSQL to "
1101  "report an error, aborting the current transaction. Setting "
1102  "ignore_checksum_failure to true causes the system to ignore the failure "
1103  "(but still report a warning), and continue processing. This "
1104  "behavior could cause crashes or other serious problems. Only "
1105  "has an effect if checksums are enabled."),
1107  },
1109  false,
1110  NULL, NULL, NULL
1111  },
1112  {
1113  {"zero_damaged_pages", PGC_SUSET, DEVELOPER_OPTIONS,
1114  gettext_noop("Continues processing past damaged page headers."),
1115  gettext_noop("Detection of a damaged page header normally causes PostgreSQL to "
1116  "report an error, aborting the current transaction. Setting "
1117  "\"zero_damaged_pages\" to true causes the system to instead report a "
1118  "warning, zero out the damaged page, and continue processing. This "
1119  "behavior will destroy data, namely all the rows on the damaged page."),
1121  },
1123  false,
1124  NULL, NULL, NULL
1125  },
1126  {
1127  {"ignore_invalid_pages", PGC_POSTMASTER, DEVELOPER_OPTIONS,
1128  gettext_noop("Continues recovery after an invalid pages failure."),
1129  gettext_noop("Detection of WAL records having references to "
1130  "invalid pages during recovery causes PostgreSQL to "
1131  "raise a PANIC-level error, aborting the recovery. "
1132  "Setting \"ignore_invalid_pages\" to true causes "
1133  "the system to ignore invalid page references "
1134  "in WAL records (but still report a warning), "
1135  "and continue recovery. This behavior may cause "
1136  "crashes, data loss, propagate or hide corruption, "
1137  "or other serious problems. Only has an effect "
1138  "during recovery or in standby mode."),
1140  },
1142  false,
1143  NULL, NULL, NULL
1144  },
1145  {
1146  {"full_page_writes", PGC_SIGHUP, WAL_SETTINGS,
1147  gettext_noop("Writes full pages to WAL when first modified after a checkpoint."),
1148  gettext_noop("A page write in process during an operating system crash might be "
1149  "only partially written to disk. During recovery, the row changes "
1150  "stored in WAL are not enough to recover. This option writes "
1151  "pages when first modified after a checkpoint to WAL so full recovery "
1152  "is possible.")
1153  },
1154  &fullPageWrites,
1155  true,
1156  NULL, NULL, NULL
1157  },
1158 
1159  {
1160  {"wal_log_hints", PGC_POSTMASTER, WAL_SETTINGS,
1161  gettext_noop("Writes full pages to WAL when first modified after a checkpoint, even for a non-critical modification."),
1162  NULL
1163  },
1164  &wal_log_hints,
1165  false,
1166  NULL, NULL, NULL
1167  },
1168 
1169  {
1170  {"wal_init_zero", PGC_SUSET, WAL_SETTINGS,
1171  gettext_noop("Writes zeroes to new WAL files before first use."),
1172  NULL
1173  },
1174  &wal_init_zero,
1175  true,
1176  NULL, NULL, NULL
1177  },
1178 
1179  {
1180  {"wal_recycle", PGC_SUSET, WAL_SETTINGS,
1181  gettext_noop("Recycles WAL files by renaming them."),
1182  NULL
1183  },
1184  &wal_recycle,
1185  true,
1186  NULL, NULL, NULL
1187  },
1188 
1189  {
1190  {"log_checkpoints", PGC_SIGHUP, LOGGING_WHAT,
1191  gettext_noop("Logs each checkpoint."),
1192  NULL
1193  },
1194  &log_checkpoints,
1195  true,
1196  NULL, NULL, NULL
1197  },
1198  {
1199  {"log_connections", PGC_SU_BACKEND, LOGGING_WHAT,
1200  gettext_noop("Logs each successful connection."),
1201  NULL
1202  },
1203  &Log_connections,
1204  false,
1205  NULL, NULL, NULL
1206  },
1207  {
1208  {"trace_connection_negotiation", PGC_POSTMASTER, DEVELOPER_OPTIONS,
1209  gettext_noop("Logs details of pre-authentication connection handshake."),
1210  NULL,
1212  },
1214  false,
1215  NULL, NULL, NULL
1216  },
1217  {
1218  {"log_disconnections", PGC_SU_BACKEND, LOGGING_WHAT,
1219  gettext_noop("Logs end of a session, including duration."),
1220  NULL
1221  },
1223  false,
1224  NULL, NULL, NULL
1225  },
1226  {
1227  {"log_replication_commands", PGC_SUSET, LOGGING_WHAT,
1228  gettext_noop("Logs each replication command."),
1229  NULL
1230  },
1232  false,
1233  NULL, NULL, NULL
1234  },
1235  {
1236  {"debug_assertions", PGC_INTERNAL, PRESET_OPTIONS,
1237  gettext_noop("Shows whether the running server has assertion checks enabled."),
1238  NULL,
1240  },
1241  &assert_enabled,
1243  NULL, NULL, NULL
1244  },
1245 
1246  {
1247  {"exit_on_error", PGC_USERSET, ERROR_HANDLING_OPTIONS,
1248  gettext_noop("Terminate session on any error."),
1249  NULL
1250  },
1251  &ExitOnAnyError,
1252  false,
1253  NULL, NULL, NULL
1254  },
1255  {
1256  {"restart_after_crash", PGC_SIGHUP, ERROR_HANDLING_OPTIONS,
1257  gettext_noop("Reinitialize server after backend crash."),
1258  NULL
1259  },
1261  true,
1262  NULL, NULL, NULL
1263  },
1264  {
1265  {"remove_temp_files_after_crash", PGC_SIGHUP, DEVELOPER_OPTIONS,
1266  gettext_noop("Remove temporary files after backend crash."),
1267  NULL,
1269  },
1271  true,
1272  NULL, NULL, NULL
1273  },
1274  {
1275  {"send_abort_for_crash", PGC_SIGHUP, DEVELOPER_OPTIONS,
1276  gettext_noop("Send SIGABRT not SIGQUIT to child processes after backend crash."),
1277  NULL,
1279  },
1281  false,
1282  NULL, NULL, NULL
1283  },
1284  {
1285  {"send_abort_for_kill", PGC_SIGHUP, DEVELOPER_OPTIONS,
1286  gettext_noop("Send SIGABRT not SIGKILL to stuck child processes."),
1287  NULL,
1289  },
1291  false,
1292  NULL, NULL, NULL
1293  },
1294 
1295  {
1296  {"log_duration", PGC_SUSET, LOGGING_WHAT,
1297  gettext_noop("Logs the duration of each completed SQL statement."),
1298  NULL
1299  },
1300  &log_duration,
1301  false,
1302  NULL, NULL, NULL
1303  },
1304  {
1305  {"debug_print_parse", PGC_USERSET, LOGGING_WHAT,
1306  gettext_noop("Logs each query's parse tree."),
1307  NULL
1308  },
1310  false,
1311  NULL, NULL, NULL
1312  },
1313  {
1314  {"debug_print_rewritten", PGC_USERSET, LOGGING_WHAT,
1315  gettext_noop("Logs each query's rewritten parse tree."),
1316  NULL
1317  },
1319  false,
1320  NULL, NULL, NULL
1321  },
1322  {
1323  {"debug_print_plan", PGC_USERSET, LOGGING_WHAT,
1324  gettext_noop("Logs each query's execution plan."),
1325  NULL
1326  },
1328  false,
1329  NULL, NULL, NULL
1330  },
1331  {
1332  {"debug_pretty_print", PGC_USERSET, LOGGING_WHAT,
1333  gettext_noop("Indents parse and plan tree displays."),
1334  NULL
1335  },
1337  true,
1338  NULL, NULL, NULL
1339  },
1340  {
1341  {"log_parser_stats", PGC_SUSET, STATS_MONITORING,
1342  gettext_noop("Writes parser performance statistics to the server log."),
1343  NULL
1344  },
1346  false,
1347  check_stage_log_stats, NULL, NULL
1348  },
1349  {
1350  {"log_planner_stats", PGC_SUSET, STATS_MONITORING,
1351  gettext_noop("Writes planner performance statistics to the server log."),
1352  NULL
1353  },
1355  false,
1356  check_stage_log_stats, NULL, NULL
1357  },
1358  {
1359  {"log_executor_stats", PGC_SUSET, STATS_MONITORING,
1360  gettext_noop("Writes executor performance statistics to the server log."),
1361  NULL
1362  },
1364  false,
1365  check_stage_log_stats, NULL, NULL
1366  },
1367  {
1368  {"log_statement_stats", PGC_SUSET, STATS_MONITORING,
1369  gettext_noop("Writes cumulative performance statistics to the server log."),
1370  NULL
1371  },
1373  false,
1374  check_log_stats, NULL, NULL
1375  },
1376 #ifdef BTREE_BUILD_STATS
1377  {
1378  {"log_btree_build_stats", PGC_SUSET, DEVELOPER_OPTIONS,
1379  gettext_noop("Logs system resource usage statistics (memory and CPU) on various B-tree operations."),
1380  NULL,
1382  },
1384  false,
1385  NULL, NULL, NULL
1386  },
1387 #endif
1388 
1389  {
1390  {"track_activities", PGC_SUSET, STATS_CUMULATIVE,
1391  gettext_noop("Collects information about executing commands."),
1392  gettext_noop("Enables the collection of information on the currently "
1393  "executing command of each session, along with "
1394  "the time at which that command began execution.")
1395  },
1397  true,
1398  NULL, NULL, NULL
1399  },
1400  {
1401  {"track_counts", PGC_SUSET, STATS_CUMULATIVE,
1402  gettext_noop("Collects statistics on database activity."),
1403  NULL
1404  },
1406  true,
1407  NULL, NULL, NULL
1408  },
1409  {
1410  {"track_io_timing", PGC_SUSET, STATS_CUMULATIVE,
1411  gettext_noop("Collects timing statistics for database I/O activity."),
1412  NULL
1413  },
1414  &track_io_timing,
1415  false,
1416  NULL, NULL, NULL
1417  },
1418  {
1419  {"track_wal_io_timing", PGC_SUSET, STATS_CUMULATIVE,
1420  gettext_noop("Collects timing statistics for WAL I/O activity."),
1421  NULL
1422  },
1424  false,
1425  NULL, NULL, NULL
1426  },
1427 
1428  {
1429  {"update_process_title", PGC_SUSET, PROCESS_TITLE,
1430  gettext_noop("Updates the process title to show the active SQL command."),
1431  gettext_noop("Enables updating of the process title every time a new SQL command is received by the server.")
1432  },
1435  NULL, NULL, NULL
1436  },
1437 
1438  {
1439  {"autovacuum", PGC_SIGHUP, AUTOVACUUM,
1440  gettext_noop("Starts the autovacuum subprocess."),
1441  NULL
1442  },
1444  true,
1445  NULL, NULL, NULL
1446  },
1447 
1448  {
1449  {"trace_notify", PGC_USERSET, DEVELOPER_OPTIONS,
1450  gettext_noop("Generates debugging output for LISTEN and NOTIFY."),
1451  NULL,
1453  },
1454  &Trace_notify,
1455  false,
1456  NULL, NULL, NULL
1457  },
1458 
1459 #ifdef LOCK_DEBUG
1460  {
1461  {"trace_locks", PGC_SUSET, DEVELOPER_OPTIONS,
1462  gettext_noop("Emits information about lock usage."),
1463  NULL,
1465  },
1466  &Trace_locks,
1467  false,
1468  NULL, NULL, NULL
1469  },
1470  {
1471  {"trace_userlocks", PGC_SUSET, DEVELOPER_OPTIONS,
1472  gettext_noop("Emits information about user lock usage."),
1473  NULL,
1475  },
1476  &Trace_userlocks,
1477  false,
1478  NULL, NULL, NULL
1479  },
1480  {
1481  {"trace_lwlocks", PGC_SUSET, DEVELOPER_OPTIONS,
1482  gettext_noop("Emits information about lightweight lock usage."),
1483  NULL,
1485  },
1486  &Trace_lwlocks,
1487  false,
1488  NULL, NULL, NULL
1489  },
1490  {
1491  {"debug_deadlocks", PGC_SUSET, DEVELOPER_OPTIONS,
1492  gettext_noop("Dumps information about all current locks when a deadlock timeout occurs."),
1493  NULL,
1495  },
1496  &Debug_deadlocks,
1497  false,
1498  NULL, NULL, NULL
1499  },
1500 #endif
1501 
1502  {
1503  {"log_lock_waits", PGC_SUSET, LOGGING_WHAT,
1504  gettext_noop("Logs long lock waits."),
1505  NULL
1506  },
1507  &log_lock_waits,
1508  false,
1509  NULL, NULL, NULL
1510  },
1511  {
1512  {"log_recovery_conflict_waits", PGC_SIGHUP, LOGGING_WHAT,
1513  gettext_noop("Logs standby recovery conflict waits."),
1514  NULL
1515  },
1517  false,
1518  NULL, NULL, NULL
1519  },
1520  {
1521  {"log_hostname", PGC_SIGHUP, LOGGING_WHAT,
1522  gettext_noop("Logs the host name in the connection logs."),
1523  gettext_noop("By default, connection logs only show the IP address "
1524  "of the connecting host. If you want them to show the host name you "
1525  "can turn this on, but depending on your host name resolution "
1526  "setup it might impose a non-negligible performance penalty.")
1527  },
1528  &log_hostname,
1529  false,
1530  NULL, NULL, NULL
1531  },
1532  {
1533  {"transform_null_equals", PGC_USERSET, COMPAT_OPTIONS_OTHER,
1534  gettext_noop("Treats \"expr=NULL\" as \"expr IS NULL\"."),
1535  gettext_noop("When turned on, expressions of the form expr = NULL "
1536  "(or NULL = expr) are treated as expr IS NULL, that is, they "
1537  "return true if expr evaluates to the null value, and false "
1538  "otherwise. The correct behavior of expr = NULL is to always "
1539  "return null (unknown).")
1540  },
1542  false,
1543  NULL, NULL, NULL
1544  },
1545  {
1546  {"default_transaction_read_only", PGC_USERSET, CLIENT_CONN_STATEMENT,
1547  gettext_noop("Sets the default read-only status of new transactions."),
1548  NULL,
1549  GUC_REPORT
1550  },
1552  false,
1553  NULL, NULL, NULL
1554  },
1555  {
1556  {"transaction_read_only", PGC_USERSET, CLIENT_CONN_STATEMENT,
1557  gettext_noop("Sets the current transaction's read-only status."),
1558  NULL,
1560  },
1561  &XactReadOnly,
1562  false,
1563  check_transaction_read_only, NULL, NULL
1564  },
1565  {
1566  {"default_transaction_deferrable", PGC_USERSET, CLIENT_CONN_STATEMENT,
1567  gettext_noop("Sets the default deferrable status of new transactions."),
1568  NULL
1569  },
1571  false,
1572  NULL, NULL, NULL
1573  },
1574  {
1575  {"transaction_deferrable", PGC_USERSET, CLIENT_CONN_STATEMENT,
1576  gettext_noop("Whether to defer a read-only serializable transaction until it can be executed with no possible serialization failures."),
1577  NULL,
1579  },
1580  &XactDeferrable,
1581  false,
1582  check_transaction_deferrable, NULL, NULL
1583  },
1584  {
1585  {"row_security", PGC_USERSET, CLIENT_CONN_STATEMENT,
1586  gettext_noop("Enable row security."),
1587  gettext_noop("When enabled, row security will be applied to all users.")
1588  },
1589  &row_security,
1590  true,
1591  NULL, NULL, NULL
1592  },
1593  {
1594  {"check_function_bodies", PGC_USERSET, CLIENT_CONN_STATEMENT,
1595  gettext_noop("Check routine bodies during CREATE FUNCTION and CREATE PROCEDURE."),
1596  NULL
1597  },
1599  true,
1600  NULL, NULL, NULL
1601  },
1602  {
1603  {"array_nulls", PGC_USERSET, COMPAT_OPTIONS_PREVIOUS,
1604  gettext_noop("Enable input of NULL elements in arrays."),
1605  gettext_noop("When turned on, unquoted NULL in an array input "
1606  "value means a null value; "
1607  "otherwise it is taken literally.")
1608  },
1609  &Array_nulls,
1610  true,
1611  NULL, NULL, NULL
1612  },
1613 
1614  /*
1615  * WITH OIDS support, and consequently default_with_oids, was removed in
1616  * PostgreSQL 12, but we tolerate the parameter being set to false to
1617  * avoid unnecessarily breaking older dump files.
1618  */
1619  {
1620  {"default_with_oids", PGC_USERSET, COMPAT_OPTIONS_PREVIOUS,
1621  gettext_noop("WITH OIDS is no longer supported; this can only be false."),
1622  NULL,
1624  },
1626  false,
1627  check_default_with_oids, NULL, NULL
1628  },
1629  {
1630  {"logging_collector", PGC_POSTMASTER, LOGGING_WHERE,
1631  gettext_noop("Start a subprocess to capture stderr output and/or csvlogs into log files."),
1632  NULL
1633  },
1635  false,
1636  NULL, NULL, NULL
1637  },
1638  {
1639  {"log_truncate_on_rotation", PGC_SIGHUP, LOGGING_WHERE,
1640  gettext_noop("Truncate existing log files of same name during log rotation."),
1641  NULL
1642  },
1644  false,
1645  NULL, NULL, NULL
1646  },
1647 
1648 #ifdef TRACE_SORT
1649  {
1650  {"trace_sort", PGC_USERSET, DEVELOPER_OPTIONS,
1651  gettext_noop("Emit information about resource usage in sorting."),
1652  NULL,
1654  },
1655  &trace_sort,
1656  false,
1657  NULL, NULL, NULL
1658  },
1659 #endif
1660 
1661 #ifdef TRACE_SYNCSCAN
1662  /* this is undocumented because not exposed in a standard build */
1663  {
1664  {"trace_syncscan", PGC_USERSET, DEVELOPER_OPTIONS,
1665  gettext_noop("Generate debugging output for synchronized scanning."),
1666  NULL,
1668  },
1669  &trace_syncscan,
1670  false,
1671  NULL, NULL, NULL
1672  },
1673 #endif
1674 
1675 #ifdef DEBUG_BOUNDED_SORT
1676  /* this is undocumented because not exposed in a standard build */
1677  {
1678  {
1679  "optimize_bounded_sort", PGC_USERSET, QUERY_TUNING_METHOD,
1680  gettext_noop("Enable bounded sorting using heap sort."),
1681  NULL,
1683  },
1684  &optimize_bounded_sort,
1685  true,
1686  NULL, NULL, NULL
1687  },
1688 #endif
1689 
1690 #ifdef WAL_DEBUG
1691  {
1692  {"wal_debug", PGC_SUSET, DEVELOPER_OPTIONS,
1693  gettext_noop("Emit WAL-related debugging output."),
1694  NULL,
1696  },
1697  &XLOG_DEBUG,
1698  false,
1699  NULL, NULL, NULL
1700  },
1701 #endif
1702 
1703  {
1704  {"integer_datetimes", PGC_INTERNAL, PRESET_OPTIONS,
1705  gettext_noop("Shows whether datetimes are integer based."),
1706  NULL,
1708  },
1710  true,
1711  NULL, NULL, NULL
1712  },
1713 
1714  {
1715  {"krb_caseins_users", PGC_SIGHUP, CONN_AUTH_AUTH,
1716  gettext_noop("Sets whether Kerberos and GSSAPI user names should be treated as case-insensitive."),
1717  NULL
1718  },
1720  false,
1721  NULL, NULL, NULL
1722  },
1723 
1724  {
1725  {"gss_accept_delegation", PGC_SIGHUP, CONN_AUTH_AUTH,
1726  gettext_noop("Sets whether GSSAPI delegation should be accepted from the client."),
1727  NULL
1728  },
1730  false,
1731  NULL, NULL, NULL
1732  },
1733 
1734  {
1735  {"escape_string_warning", PGC_USERSET, COMPAT_OPTIONS_PREVIOUS,
1736  gettext_noop("Warn about backslash escapes in ordinary string literals."),
1737  NULL
1738  },
1740  true,
1741  NULL, NULL, NULL
1742  },
1743 
1744  {
1745  {"standard_conforming_strings", PGC_USERSET, COMPAT_OPTIONS_PREVIOUS,
1746  gettext_noop("Causes '...' strings to treat backslashes literally."),
1747  NULL,
1748  GUC_REPORT
1749  },
1751  true,
1752  NULL, NULL, NULL
1753  },
1754 
1755  {
1756  {"synchronize_seqscans", PGC_USERSET, COMPAT_OPTIONS_PREVIOUS,
1757  gettext_noop("Enable synchronized sequential scans."),
1758  NULL
1759  },
1761  true,
1762  NULL, NULL, NULL
1763  },
1764 
1765  {
1766  {"recovery_target_inclusive", PGC_POSTMASTER, WAL_RECOVERY_TARGET,
1767  gettext_noop("Sets whether to include or exclude transaction with recovery target."),
1768  NULL
1769  },
1771  true,
1772  NULL, NULL, NULL
1773  },
1774 
1775  {
1776  {"summarize_wal", PGC_SIGHUP, WAL_SUMMARIZATION,
1777  gettext_noop("Starts the WAL summarizer process to enable incremental backup."),
1778  NULL
1779  },
1780  &summarize_wal,
1781  false,
1782  NULL, NULL, NULL
1783  },
1784 
1785  {
1786  {"hot_standby", PGC_POSTMASTER, REPLICATION_STANDBY,
1787  gettext_noop("Allows connections and queries during recovery."),
1788  NULL
1789  },
1791  true,
1792  NULL, NULL, NULL
1793  },
1794 
1795  {
1796  {"hot_standby_feedback", PGC_SIGHUP, REPLICATION_STANDBY,
1797  gettext_noop("Allows feedback from a hot standby to the primary that will avoid query conflicts."),
1798  NULL
1799  },
1801  false,
1802  NULL, NULL, NULL
1803  },
1804 
1805  {
1806  {"in_hot_standby", PGC_INTERNAL, PRESET_OPTIONS,
1807  gettext_noop("Shows whether hot standby is currently active."),
1808  NULL,
1810  },
1812  false,
1813  NULL, NULL, show_in_hot_standby
1814  },
1815 
1816  {
1817  {"allow_system_table_mods", PGC_SUSET, DEVELOPER_OPTIONS,
1818  gettext_noop("Allows modifications of the structure of system tables."),
1819  NULL,
1821  },
1823  false,
1824  NULL, NULL, NULL
1825  },
1826 
1827  {
1828  {"ignore_system_indexes", PGC_BACKEND, DEVELOPER_OPTIONS,
1829  gettext_noop("Disables reading from system indexes."),
1830  gettext_noop("It does not prevent updating the indexes, so it is safe "
1831  "to use. The worst consequence is slowness."),
1833  },
1835  false,
1836  NULL, NULL, NULL
1837  },
1838 
1839  {
1840  {"allow_in_place_tablespaces", PGC_SUSET, DEVELOPER_OPTIONS,
1841  gettext_noop("Allows tablespaces directly inside pg_tblspc, for testing."),
1842  NULL,
1844  },
1846  false,
1847  NULL, NULL, NULL
1848  },
1849 
1850  {
1851  {"lo_compat_privileges", PGC_SUSET, COMPAT_OPTIONS_PREVIOUS,
1852  gettext_noop("Enables backward compatibility mode for privilege checks on large objects."),
1853  gettext_noop("Skips privilege checks when reading or modifying large objects, "
1854  "for compatibility with PostgreSQL releases prior to 9.0.")
1855  },
1857  false,
1858  NULL, NULL, NULL
1859  },
1860 
1861  {
1862  {"quote_all_identifiers", PGC_USERSET, COMPAT_OPTIONS_PREVIOUS,
1863  gettext_noop("When generating SQL fragments, quote all identifiers."),
1864  NULL,
1865  },
1867  false,
1868  NULL, NULL, NULL
1869  },
1870 
1871  {
1872  {"data_checksums", PGC_INTERNAL, PRESET_OPTIONS,
1873  gettext_noop("Shows whether data checksums are turned on for this cluster."),
1874  NULL,
1876  },
1877  &data_checksums,
1878  false,
1879  NULL, NULL, NULL
1880  },
1881 
1882  {
1883  {"syslog_sequence_numbers", PGC_SIGHUP, LOGGING_WHERE,
1884  gettext_noop("Add sequence number to syslog messages to avoid duplicate suppression."),
1885  NULL
1886  },
1888  true,
1889  NULL, NULL, NULL
1890  },
1891 
1892  {
1893  {"syslog_split_messages", PGC_SIGHUP, LOGGING_WHERE,
1894  gettext_noop("Split messages sent to syslog by lines and to fit into 1024 bytes."),
1895  NULL
1896  },
1898  true,
1899  NULL, NULL, NULL
1900  },
1901 
1902  {
1903  {"parallel_leader_participation", PGC_USERSET, RESOURCES_ASYNCHRONOUS,
1904  gettext_noop("Controls whether Gather and Gather Merge also run subplans."),
1905  gettext_noop("Should gather nodes also run subplans or just gather tuples?"),
1906  GUC_EXPLAIN
1907  },
1909  true,
1910  NULL, NULL, NULL
1911  },
1912 
1913  {
1915  gettext_noop("Allow JIT compilation."),
1916  NULL,
1917  GUC_EXPLAIN
1918  },
1919  &jit_enabled,
1920  true,
1921  NULL, NULL, NULL
1922  },
1923 
1924  {
1925  {"jit_debugging_support", PGC_SU_BACKEND, DEVELOPER_OPTIONS,
1926  gettext_noop("Register JIT-compiled functions with debugger."),
1927  NULL,
1929  },
1931  false,
1932 
1933  /*
1934  * This is not guaranteed to be available, but given it's a developer
1935  * oriented option, it doesn't seem worth adding code checking
1936  * availability.
1937  */
1938  NULL, NULL, NULL
1939  },
1940 
1941  {
1942  {"jit_dump_bitcode", PGC_SUSET, DEVELOPER_OPTIONS,
1943  gettext_noop("Write out LLVM bitcode to facilitate JIT debugging."),
1944  NULL,
1946  },
1948  false,
1949  NULL, NULL, NULL
1950  },
1951 
1952  {
1953  {"jit_expressions", PGC_USERSET, DEVELOPER_OPTIONS,
1954  gettext_noop("Allow JIT compilation of expressions."),
1955  NULL,
1957  },
1958  &jit_expressions,
1959  true,
1960  NULL, NULL, NULL
1961  },
1962 
1963  {
1964  {"jit_profiling_support", PGC_SU_BACKEND, DEVELOPER_OPTIONS,
1965  gettext_noop("Register JIT-compiled functions with perf profiler."),
1966  NULL,
1968  },
1970  false,
1971 
1972  /*
1973  * This is not guaranteed to be available, but given it's a developer
1974  * oriented option, it doesn't seem worth adding code checking
1975  * availability.
1976  */
1977  NULL, NULL, NULL
1978  },
1979 
1980  {
1981  {"jit_tuple_deforming", PGC_USERSET, DEVELOPER_OPTIONS,
1982  gettext_noop("Allow JIT compilation of tuple deforming."),
1983  NULL,
1985  },
1987  true,
1988  NULL, NULL, NULL
1989  },
1990 
1991  {
1992  {"data_sync_retry", PGC_POSTMASTER, ERROR_HANDLING_OPTIONS,
1993  gettext_noop("Whether to continue running after a failure to sync data files."),
1994  },
1995  &data_sync_retry,
1996  false,
1997  NULL, NULL, NULL
1998  },
1999 
2000  {
2001  {"wal_receiver_create_temp_slot", PGC_SIGHUP, REPLICATION_STANDBY,
2002  gettext_noop("Sets whether a WAL receiver should create a temporary replication slot if no permanent slot is configured."),
2003  },
2005  false,
2006  NULL, NULL, NULL
2007  },
2008 
2009  {
2010  {"event_triggers", PGC_SUSET, CLIENT_CONN_STATEMENT,
2011  gettext_noop("Enables event triggers."),
2012  gettext_noop("When enabled, event triggers will fire for all applicable statements."),
2013  },
2014  &event_triggers,
2015  true,
2016  NULL, NULL, NULL
2017  },
2018 
2019  {
2020  {"sync_replication_slots", PGC_SIGHUP, REPLICATION_STANDBY,
2021  gettext_noop("Enables a physical standby to synchronize logical failover slots from the primary server."),
2022  },
2024  false,
2025  NULL, NULL, NULL
2026  },
2027 
2028  /* End-of-list marker */
2029  {
2030  {NULL, 0, 0, NULL, NULL}, NULL, false, NULL, NULL, NULL
2031  }
2032 };
2033 
2034 
2035 struct config_int ConfigureNamesInt[] =
2036 {
2037  {
2038  {"archive_timeout", PGC_SIGHUP, WAL_ARCHIVING,
2039  gettext_noop("Sets the amount of time to wait before forcing a "
2040  "switch to the next WAL file."),
2041  NULL,
2042  GUC_UNIT_S
2043  },
2045  0, 0, INT_MAX / 2,
2046  NULL, NULL, NULL
2047  },
2048  {
2049  {"post_auth_delay", PGC_BACKEND, DEVELOPER_OPTIONS,
2050  gettext_noop("Sets the amount of time to wait after "
2051  "authentication on connection startup."),
2052  gettext_noop("This allows attaching a debugger to the process."),
2054  },
2055  &PostAuthDelay,
2056  0, 0, INT_MAX / 1000000,
2057  NULL, NULL, NULL
2058  },
2059  {
2060  {"default_statistics_target", PGC_USERSET, QUERY_TUNING_OTHER,
2061  gettext_noop("Sets the default statistics target."),
2062  gettext_noop("This applies to table columns that have not had a "
2063  "column-specific target set via ALTER TABLE SET STATISTICS.")
2064  },
2066  100, 1, MAX_STATISTICS_TARGET,
2067  NULL, NULL, NULL
2068  },
2069  {
2070  {"from_collapse_limit", PGC_USERSET, QUERY_TUNING_OTHER,
2071  gettext_noop("Sets the FROM-list size beyond which subqueries "
2072  "are not collapsed."),
2073  gettext_noop("The planner will merge subqueries into upper "
2074  "queries if the resulting FROM list would have no more than "
2075  "this many items."),
2076  GUC_EXPLAIN
2077  },
2079  8, 1, INT_MAX,
2080  NULL, NULL, NULL
2081  },
2082  {
2083  {"join_collapse_limit", PGC_USERSET, QUERY_TUNING_OTHER,
2084  gettext_noop("Sets the FROM-list size beyond which JOIN "
2085  "constructs are not flattened."),
2086  gettext_noop("The planner will flatten explicit JOIN "
2087  "constructs into lists of FROM items whenever a "
2088  "list of no more than this many items would result."),
2089  GUC_EXPLAIN
2090  },
2092  8, 1, INT_MAX,
2093  NULL, NULL, NULL
2094  },
2095  {
2096  {"geqo_threshold", PGC_USERSET, QUERY_TUNING_GEQO,
2097  gettext_noop("Sets the threshold of FROM items beyond which GEQO is used."),
2098  NULL,
2099  GUC_EXPLAIN
2100  },
2101  &geqo_threshold,
2102  12, 2, INT_MAX,
2103  NULL, NULL, NULL
2104  },
2105  {
2106  {"geqo_effort", PGC_USERSET, QUERY_TUNING_GEQO,
2107  gettext_noop("GEQO: effort is used to set the default for other GEQO parameters."),
2108  NULL,
2109  GUC_EXPLAIN
2110  },
2111  &Geqo_effort,
2113  NULL, NULL, NULL
2114  },
2115  {
2116  {"geqo_pool_size", PGC_USERSET, QUERY_TUNING_GEQO,
2117  gettext_noop("GEQO: number of individuals in the population."),
2118  gettext_noop("Zero selects a suitable default value."),
2119  GUC_EXPLAIN
2120  },
2121  &Geqo_pool_size,
2122  0, 0, INT_MAX,
2123  NULL, NULL, NULL
2124  },
2125  {
2126  {"geqo_generations", PGC_USERSET, QUERY_TUNING_GEQO,
2127  gettext_noop("GEQO: number of iterations of the algorithm."),
2128  gettext_noop("Zero selects a suitable default value."),
2129  GUC_EXPLAIN
2130  },
2132  0, 0, INT_MAX,
2133  NULL, NULL, NULL
2134  },
2135 
2136  {
2137  /* This is PGC_SUSET to prevent hiding from log_lock_waits. */
2138  {"deadlock_timeout", PGC_SUSET, LOCK_MANAGEMENT,
2139  gettext_noop("Sets the time to wait on a lock before checking for deadlock."),
2140  NULL,
2141  GUC_UNIT_MS
2142  },
2143  &DeadlockTimeout,
2144  1000, 1, INT_MAX,
2145  NULL, NULL, NULL
2146  },
2147 
2148  {
2149  {"max_standby_archive_delay", PGC_SIGHUP, REPLICATION_STANDBY,
2150  gettext_noop("Sets the maximum delay before canceling queries when a hot standby server is processing archived WAL data."),
2151  NULL,
2152  GUC_UNIT_MS
2153  },
2155  30 * 1000, -1, INT_MAX,
2156  NULL, NULL, NULL
2157  },
2158 
2159  {
2160  {"max_standby_streaming_delay", PGC_SIGHUP, REPLICATION_STANDBY,
2161  gettext_noop("Sets the maximum delay before canceling queries when a hot standby server is processing streamed WAL data."),
2162  NULL,
2163  GUC_UNIT_MS
2164  },
2166  30 * 1000, -1, INT_MAX,
2167  NULL, NULL, NULL
2168  },
2169 
2170  {
2171  {"recovery_min_apply_delay", PGC_SIGHUP, REPLICATION_STANDBY,
2172  gettext_noop("Sets the minimum delay for applying changes during recovery."),
2173  NULL,
2174  GUC_UNIT_MS
2175  },
2177  0, 0, INT_MAX,
2178  NULL, NULL, NULL
2179  },
2180 
2181  {
2182  {"wal_receiver_status_interval", PGC_SIGHUP, REPLICATION_STANDBY,
2183  gettext_noop("Sets the maximum interval between WAL receiver status reports to the sending server."),
2184  NULL,
2185  GUC_UNIT_S
2186  },
2188  10, 0, INT_MAX / 1000,
2189  NULL, NULL, NULL
2190  },
2191 
2192  {
2193  {"wal_receiver_timeout", PGC_SIGHUP, REPLICATION_STANDBY,
2194  gettext_noop("Sets the maximum wait time to receive data from the sending server."),
2195  NULL,
2196  GUC_UNIT_MS
2197  },
2199  60 * 1000, 0, INT_MAX,
2200  NULL, NULL, NULL
2201  },
2202 
2203  {
2204  {"max_connections", PGC_POSTMASTER, CONN_AUTH_SETTINGS,
2205  gettext_noop("Sets the maximum number of concurrent connections."),
2206  NULL
2207  },
2208  &MaxConnections,
2209  100, 1, MAX_BACKENDS,
2210  check_max_connections, NULL, NULL
2211  },
2212 
2213  {
2214  /* see max_connections */
2215  {"superuser_reserved_connections", PGC_POSTMASTER, CONN_AUTH_SETTINGS,
2216  gettext_noop("Sets the number of connection slots reserved for superusers."),
2217  NULL
2218  },
2220  3, 0, MAX_BACKENDS,
2221  NULL, NULL, NULL
2222  },
2223 
2224  {
2225  {"reserved_connections", PGC_POSTMASTER, CONN_AUTH_SETTINGS,
2226  gettext_noop("Sets the number of connection slots reserved for roles "
2227  "with privileges of pg_use_reserved_connections."),
2228  NULL
2229  },
2231  0, 0, MAX_BACKENDS,
2232  NULL, NULL, NULL
2233  },
2234 
2235  {
2236  {"min_dynamic_shared_memory", PGC_POSTMASTER, RESOURCES_MEM,
2237  gettext_noop("Amount of dynamic shared memory reserved at startup."),
2238  NULL,
2239  GUC_UNIT_MB
2240  },
2242  0, 0, (int) Min((size_t) INT_MAX, SIZE_MAX / (1024 * 1024)),
2243  NULL, NULL, NULL
2244  },
2245 
2246  /*
2247  * We sometimes multiply the number of shared buffers by two without
2248  * checking for overflow, so we mustn't allow more than INT_MAX / 2.
2249  */
2250  {
2251  {"shared_buffers", PGC_POSTMASTER, RESOURCES_MEM,
2252  gettext_noop("Sets the number of shared memory buffers used by the server."),
2253  NULL,
2255  },
2256  &NBuffers,
2257  16384, 16, INT_MAX / 2,
2258  NULL, NULL, NULL
2259  },
2260 
2261  {
2262  {"vacuum_buffer_usage_limit", PGC_USERSET, RESOURCES_MEM,
2263  gettext_noop("Sets the buffer pool size for VACUUM, ANALYZE, and autovacuum."),
2264  NULL,
2265  GUC_UNIT_KB
2266  },
2268  2048, 0, MAX_BAS_VAC_RING_SIZE_KB,
2270  },
2271 
2272  {
2273  {"shared_memory_size", PGC_INTERNAL, PRESET_OPTIONS,
2274  gettext_noop("Shows the size of the server's main shared memory area (rounded up to the nearest MB)."),
2275  NULL,
2277  },
2279  0, 0, INT_MAX,
2280  NULL, NULL, NULL
2281  },
2282 
2283  {
2284  {"shared_memory_size_in_huge_pages", PGC_INTERNAL, PRESET_OPTIONS,
2285  gettext_noop("Shows the number of huge pages needed for the main shared memory area."),
2286  gettext_noop("-1 indicates that the value could not be determined."),
2288  },
2290  -1, -1, INT_MAX,
2291  NULL, NULL, NULL
2292  },
2293 
2294  {
2295  {"commit_timestamp_buffers", PGC_POSTMASTER, RESOURCES_MEM,
2296  gettext_noop("Sets the size of the dedicated buffer pool used for the commit timestamp cache."),
2297  gettext_noop("Specify 0 to have this value determined as a fraction of shared_buffers."),
2299  },
2302  check_commit_ts_buffers, NULL, NULL
2303  },
2304 
2305  {
2306  {"multixact_member_buffers", PGC_POSTMASTER, RESOURCES_MEM,
2307  gettext_noop("Sets the size of the dedicated buffer pool used for the MultiXact member cache."),
2308  NULL,
2310  },
2312  32, 16, SLRU_MAX_ALLOWED_BUFFERS,
2313  check_multixact_member_buffers, NULL, NULL
2314  },
2315 
2316  {
2317  {"multixact_offset_buffers", PGC_POSTMASTER, RESOURCES_MEM,
2318  gettext_noop("Sets the size of the dedicated buffer pool used for the MultiXact offset cache."),
2319  NULL,
2321  },
2323  16, 16, SLRU_MAX_ALLOWED_BUFFERS,
2324  check_multixact_offset_buffers, NULL, NULL
2325  },
2326 
2327  {
2328  {"notify_buffers", PGC_POSTMASTER, RESOURCES_MEM,
2329  gettext_noop("Sets the size of the dedicated buffer pool used for the LISTEN/NOTIFY message cache."),
2330  NULL,
2332  },
2333  &notify_buffers,
2334  16, 16, SLRU_MAX_ALLOWED_BUFFERS,
2335  check_notify_buffers, NULL, NULL
2336  },
2337 
2338  {
2339  {"serializable_buffers", PGC_POSTMASTER, RESOURCES_MEM,
2340  gettext_noop("Sets the size of the dedicated buffer pool used for the serializable transaction cache."),
2341  NULL,
2343  },
2345  32, 16, SLRU_MAX_ALLOWED_BUFFERS,
2346  check_serial_buffers, NULL, NULL
2347  },
2348 
2349  {
2350  {"subtransaction_buffers", PGC_POSTMASTER, RESOURCES_MEM,
2351  gettext_noop("Sets the size of the dedicated buffer pool used for the sub-transaction cache."),
2352  gettext_noop("Specify 0 to have this value determined as a fraction of shared_buffers."),
2354  },
2357  check_subtrans_buffers, NULL, NULL
2358  },
2359 
2360  {
2361  {"transaction_buffers", PGC_POSTMASTER, RESOURCES_MEM,
2362  gettext_noop("Sets the size of the dedicated buffer pool used for the transaction status cache."),
2363  gettext_noop("Specify 0 to have this value determined as a fraction of shared_buffers."),
2365  },
2368  check_transaction_buffers, NULL, NULL
2369  },
2370 
2371  {
2372  {"temp_buffers", PGC_USERSET, RESOURCES_MEM,
2373  gettext_noop("Sets the maximum number of temporary buffers used by each session."),
2374  NULL,
2376  },
2378  1024, 100, INT_MAX / 2,
2379  check_temp_buffers, NULL, NULL
2380  },
2381 
2382  {
2384  gettext_noop("Sets the TCP port the server listens on."),
2385  NULL
2386  },
2387  &PostPortNumber,
2388  DEF_PGPORT, 1, 65535,
2389  NULL, NULL, NULL
2390  },
2391 
2392  {
2393  {"unix_socket_permissions", PGC_POSTMASTER, CONN_AUTH_SETTINGS,
2394  gettext_noop("Sets the access permissions of the Unix-domain socket."),
2395  gettext_noop("Unix-domain sockets use the usual Unix file system "
2396  "permission set. The parameter value is expected "
2397  "to be a numeric mode specification in the form "
2398  "accepted by the chmod and umask system calls. "
2399  "(To use the customary octal format the number must "
2400  "start with a 0 (zero).)")
2401  },
2403  0777, 0000, 0777,
2404  NULL, NULL, show_unix_socket_permissions
2405  },
2406 
2407  {
2408  {"log_file_mode", PGC_SIGHUP, LOGGING_WHERE,
2409  gettext_noop("Sets the file permissions for log files."),
2410  gettext_noop("The parameter value is expected "
2411  "to be a numeric mode specification in the form "
2412  "accepted by the chmod and umask system calls. "
2413  "(To use the customary octal format the number must "
2414  "start with a 0 (zero).)")
2415  },
2416  &Log_file_mode,
2417  0600, 0000, 0777,
2418  NULL, NULL, show_log_file_mode
2419  },
2420 
2421 
2422  {
2423  {"data_directory_mode", PGC_INTERNAL, PRESET_OPTIONS,
2424  gettext_noop("Shows the mode of the data directory."),
2425  gettext_noop("The parameter value is a numeric mode specification "
2426  "in the form accepted by the chmod and umask system "
2427  "calls. (To use the customary octal format the number "
2428  "must start with a 0 (zero).)"),
2430  },
2432  0700, 0000, 0777,
2433  NULL, NULL, show_data_directory_mode
2434  },
2435 
2436  {
2437  {"work_mem", PGC_USERSET, RESOURCES_MEM,
2438  gettext_noop("Sets the maximum memory to be used for query workspaces."),
2439  gettext_noop("This much memory can be used by each internal "
2440  "sort operation and hash table before switching to "
2441  "temporary disk files."),
2443  },
2444  &work_mem,
2445  4096, 64, MAX_KILOBYTES,
2446  NULL, NULL, NULL
2447  },
2448 
2449  {
2450  {"maintenance_work_mem", PGC_USERSET, RESOURCES_MEM,
2451  gettext_noop("Sets the maximum memory to be used for maintenance operations."),
2452  gettext_noop("This includes operations such as VACUUM and CREATE INDEX."),
2453  GUC_UNIT_KB
2454  },
2456  65536, 1024, MAX_KILOBYTES,
2457  NULL, NULL, NULL
2458  },
2459 
2460  {
2461  {"logical_decoding_work_mem", PGC_USERSET, RESOURCES_MEM,
2462  gettext_noop("Sets the maximum memory to be used for logical decoding."),
2463  gettext_noop("This much memory can be used by each internal "
2464  "reorder buffer before spilling to disk."),
2465  GUC_UNIT_KB
2466  },
2468  65536, 64, MAX_KILOBYTES,
2469  NULL, NULL, NULL
2470  },
2471 
2472  /*
2473  * We use the hopefully-safely-small value of 100kB as the compiled-in
2474  * default for max_stack_depth. InitializeGUCOptions will increase it if
2475  * possible, depending on the actual platform-specific stack limit.
2476  */
2477  {
2478  {"max_stack_depth", PGC_SUSET, RESOURCES_MEM,
2479  gettext_noop("Sets the maximum stack depth, in kilobytes."),
2480  NULL,
2481  GUC_UNIT_KB
2482  },
2483  &max_stack_depth,
2484  100, 100, MAX_KILOBYTES,
2486  },
2487 
2488  {
2489  {"temp_file_limit", PGC_SUSET, RESOURCES_DISK,
2490  gettext_noop("Limits the total size of all temporary files used by each process."),
2491  gettext_noop("-1 means no limit."),
2492  GUC_UNIT_KB
2493  },
2494  &temp_file_limit,
2495  -1, -1, INT_MAX,
2496  NULL, NULL, NULL
2497  },
2498 
2499  {
2500  {"vacuum_cost_page_hit", PGC_USERSET, RESOURCES_VACUUM_DELAY,
2501  gettext_noop("Vacuum cost for a page found in the buffer cache."),
2502  NULL
2503  },
2505  1, 0, 10000,
2506  NULL, NULL, NULL
2507  },
2508 
2509  {
2510  {"vacuum_cost_page_miss", PGC_USERSET, RESOURCES_VACUUM_DELAY,
2511  gettext_noop("Vacuum cost for a page not found in the buffer cache."),
2512  NULL
2513  },
2515  2, 0, 10000,
2516  NULL, NULL, NULL
2517  },
2518 
2519  {
2520  {"vacuum_cost_page_dirty", PGC_USERSET, RESOURCES_VACUUM_DELAY,
2521  gettext_noop("Vacuum cost for a page dirtied by vacuum."),
2522  NULL
2523  },
2525  20, 0, 10000,
2526  NULL, NULL, NULL
2527  },
2528 
2529  {
2530  {"vacuum_cost_limit", PGC_USERSET, RESOURCES_VACUUM_DELAY,
2531  gettext_noop("Vacuum cost amount available before napping."),
2532  NULL
2533  },
2534  &VacuumCostLimit,
2535  200, 1, 10000,
2536  NULL, NULL, NULL
2537  },
2538 
2539  {
2540  {"autovacuum_vacuum_cost_limit", PGC_SIGHUP, AUTOVACUUM,
2541  gettext_noop("Vacuum cost amount available before napping, for autovacuum."),
2542  NULL
2543  },
2545  -1, -1, 10000,
2546  NULL, NULL, NULL
2547  },
2548 
2549  {
2550  {"max_files_per_process", PGC_POSTMASTER, RESOURCES_KERNEL,
2551  gettext_noop("Sets the maximum number of simultaneously open files for each server process."),
2552  NULL
2553  },
2555  1000, 64, INT_MAX,
2556  NULL, NULL, NULL
2557  },
2558 
2559  /*
2560  * See also CheckRequiredParameterValues() if this parameter changes
2561  */
2562  {
2563  {"max_prepared_transactions", PGC_POSTMASTER, RESOURCES_MEM,
2564  gettext_noop("Sets the maximum number of simultaneously prepared transactions."),
2565  NULL
2566  },
2568  0, 0, MAX_BACKENDS,
2569  NULL, NULL, NULL
2570  },
2571 
2572 #ifdef LOCK_DEBUG
2573  {
2574  {"trace_lock_oidmin", PGC_SUSET, DEVELOPER_OPTIONS,
2575  gettext_noop("Sets the minimum OID of tables for tracking locks."),
2576  gettext_noop("Is used to avoid output on system tables."),
2578  },
2579  &Trace_lock_oidmin,
2580  FirstNormalObjectId, 0, INT_MAX,
2581  NULL, NULL, NULL
2582  },
2583  {
2584  {"trace_lock_table", PGC_SUSET, DEVELOPER_OPTIONS,
2585  gettext_noop("Sets the OID of the table with unconditionally lock tracing."),
2586  NULL,
2588  },
2589  &Trace_lock_table,
2590  0, 0, INT_MAX,
2591  NULL, NULL, NULL
2592  },
2593 #endif
2594 
2595  {
2596  {"statement_timeout", PGC_USERSET, CLIENT_CONN_STATEMENT,
2597  gettext_noop("Sets the maximum allowed duration of any statement."),
2598  gettext_noop("A value of 0 turns off the timeout."),
2599  GUC_UNIT_MS
2600  },
2602  0, 0, INT_MAX,
2603  NULL, NULL, NULL
2604  },
2605 
2606  {
2607  {"lock_timeout", PGC_USERSET, CLIENT_CONN_STATEMENT,
2608  gettext_noop("Sets the maximum allowed duration of any wait for a lock."),
2609  gettext_noop("A value of 0 turns off the timeout."),
2610  GUC_UNIT_MS
2611  },
2612  &LockTimeout,
2613  0, 0, INT_MAX,
2614  NULL, NULL, NULL
2615  },
2616 
2617  {
2618  {"idle_in_transaction_session_timeout", PGC_USERSET, CLIENT_CONN_STATEMENT,
2619  gettext_noop("Sets the maximum allowed idle time between queries, when in a transaction."),
2620  gettext_noop("A value of 0 turns off the timeout."),
2621  GUC_UNIT_MS
2622  },
2624  0, 0, INT_MAX,
2625  NULL, NULL, NULL
2626  },
2627 
2628  {
2629  {"transaction_timeout", PGC_USERSET, CLIENT_CONN_STATEMENT,
2630  gettext_noop("Sets the maximum allowed duration of any transaction within a session (not a prepared transaction)."),
2631  gettext_noop("A value of 0 turns off the timeout."),
2632  GUC_UNIT_MS
2633  },
2635  0, 0, INT_MAX,
2636  NULL, assign_transaction_timeout, NULL
2637  },
2638 
2639  {
2640  {"idle_session_timeout", PGC_USERSET, CLIENT_CONN_STATEMENT,
2641  gettext_noop("Sets the maximum allowed idle time between queries, when not in a transaction."),
2642  gettext_noop("A value of 0 turns off the timeout."),
2643  GUC_UNIT_MS
2644  },
2646  0, 0, INT_MAX,
2647  NULL, NULL, NULL
2648  },
2649 
2650  {
2651  {"vacuum_freeze_min_age", PGC_USERSET, CLIENT_CONN_STATEMENT,
2652  gettext_noop("Minimum age at which VACUUM should freeze a table row."),
2653  NULL
2654  },
2656  50000000, 0, 1000000000,
2657  NULL, NULL, NULL
2658  },
2659 
2660  {
2661  {"vacuum_freeze_table_age", PGC_USERSET, CLIENT_CONN_STATEMENT,
2662  gettext_noop("Age at which VACUUM should scan whole table to freeze tuples."),
2663  NULL
2664  },
2666  150000000, 0, 2000000000,
2667  NULL, NULL, NULL
2668  },
2669 
2670  {
2671  {"vacuum_multixact_freeze_min_age", PGC_USERSET, CLIENT_CONN_STATEMENT,
2672  gettext_noop("Minimum age at which VACUUM should freeze a MultiXactId in a table row."),
2673  NULL
2674  },
2676  5000000, 0, 1000000000,
2677  NULL, NULL, NULL
2678  },
2679 
2680  {
2681  {"vacuum_multixact_freeze_table_age", PGC_USERSET, CLIENT_CONN_STATEMENT,
2682  gettext_noop("Multixact age at which VACUUM should scan whole table to freeze tuples."),
2683  NULL
2684  },
2686  150000000, 0, 2000000000,
2687  NULL, NULL, NULL
2688  },
2689 
2690  {
2691  {"vacuum_failsafe_age", PGC_USERSET, CLIENT_CONN_STATEMENT,
2692  gettext_noop("Age at which VACUUM should trigger failsafe to avoid a wraparound outage."),
2693  NULL
2694  },
2696  1600000000, 0, 2100000000,
2697  NULL, NULL, NULL
2698  },
2699  {
2700  {"vacuum_multixact_failsafe_age", PGC_USERSET, CLIENT_CONN_STATEMENT,
2701  gettext_noop("Multixact age at which VACUUM should trigger failsafe to avoid a wraparound outage."),
2702  NULL
2703  },
2705  1600000000, 0, 2100000000,
2706  NULL, NULL, NULL
2707  },
2708 
2709  /*
2710  * See also CheckRequiredParameterValues() if this parameter changes
2711  */
2712  {
2713  {"max_locks_per_transaction", PGC_POSTMASTER, LOCK_MANAGEMENT,
2714  gettext_noop("Sets the maximum number of locks per transaction."),
2715  gettext_noop("The shared lock table is sized on the assumption that at most "
2716  "\"max_locks_per_transaction\" objects per server process or prepared "
2717  "transaction will need to be locked at any one time.")
2718  },
2720  64, 10, INT_MAX,
2721  NULL, NULL, NULL
2722  },
2723 
2724  {
2725  {"max_pred_locks_per_transaction", PGC_POSTMASTER, LOCK_MANAGEMENT,
2726  gettext_noop("Sets the maximum number of predicate locks per transaction."),
2727  gettext_noop("The shared predicate lock table is sized on the assumption that "
2728  "at most \"max_pred_locks_per_transaction\" objects per server process "
2729  "or prepared transaction will need to be locked at any one time.")
2730  },
2732  64, 10, INT_MAX,
2733  NULL, NULL, NULL
2734  },
2735 
2736  {
2737  {"max_pred_locks_per_relation", PGC_SIGHUP, LOCK_MANAGEMENT,
2738  gettext_noop("Sets the maximum number of predicate-locked pages and tuples per relation."),
2739  gettext_noop("If more than this total of pages and tuples in the same relation are locked "
2740  "by a connection, those locks are replaced by a relation-level lock.")
2741  },
2743  -2, INT_MIN, INT_MAX,
2744  NULL, NULL, NULL
2745  },
2746 
2747  {
2748  {"max_pred_locks_per_page", PGC_SIGHUP, LOCK_MANAGEMENT,
2749  gettext_noop("Sets the maximum number of predicate-locked tuples per page."),
2750  gettext_noop("If more than this number of tuples on the same page are locked "
2751  "by a connection, those locks are replaced by a page-level lock.")
2752  },
2754  2, 0, INT_MAX,
2755  NULL, NULL, NULL
2756  },
2757 
2758  {
2759  {"authentication_timeout", PGC_SIGHUP, CONN_AUTH_AUTH,
2760  gettext_noop("Sets the maximum allowed time to complete client authentication."),
2761  NULL,
2762  GUC_UNIT_S
2763  },
2765  60, 1, 600,
2766  NULL, NULL, NULL
2767  },
2768 
2769  {
2770  /* Not for general use */
2771  {"pre_auth_delay", PGC_SIGHUP, DEVELOPER_OPTIONS,
2772  gettext_noop("Sets the amount of time to wait before "
2773  "authentication on connection startup."),
2774  gettext_noop("This allows attaching a debugger to the process."),
2776  },
2777  &PreAuthDelay,
2778  0, 0, 60,
2779  NULL, NULL, NULL
2780  },
2781 
2782  {
2783  {"max_notify_queue_pages", PGC_POSTMASTER, RESOURCES_DISK,
2784  gettext_noop("Sets the maximum number of allocated pages for NOTIFY / LISTEN queue."),
2785  NULL,
2786  },
2788  1048576, 64, INT_MAX,
2789  NULL, NULL, NULL
2790  },
2791 
2792  {
2793  {"wal_decode_buffer_size", PGC_POSTMASTER, WAL_RECOVERY,
2794  gettext_noop("Buffer size for reading ahead in the WAL during recovery."),
2795  gettext_noop("Maximum distance to read ahead in the WAL to prefetch referenced data blocks."),
2797  },
2799  512 * 1024, 64 * 1024, MaxAllocSize,
2800  NULL, NULL, NULL
2801  },
2802 
2803  {
2804  {"wal_keep_size", PGC_SIGHUP, REPLICATION_SENDING,
2805  gettext_noop("Sets the size of WAL files held for standby servers."),
2806  NULL,
2807  GUC_UNIT_MB
2808  },
2810  0, 0, MAX_KILOBYTES,
2811  NULL, NULL, NULL
2812  },
2813 
2814  {
2815  {"min_wal_size", PGC_SIGHUP, WAL_CHECKPOINTS,
2816  gettext_noop("Sets the minimum size to shrink the WAL to."),
2817  NULL,
2818  GUC_UNIT_MB
2819  },
2820  &min_wal_size_mb,
2821  DEFAULT_MIN_WAL_SEGS * (DEFAULT_XLOG_SEG_SIZE / (1024 * 1024)),
2822  2, MAX_KILOBYTES,
2823  NULL, NULL, NULL
2824  },
2825 
2826  {
2827  {"max_wal_size", PGC_SIGHUP, WAL_CHECKPOINTS,
2828  gettext_noop("Sets the WAL size that triggers a checkpoint."),
2829  NULL,
2830  GUC_UNIT_MB
2831  },
2832  &max_wal_size_mb,
2833  DEFAULT_MAX_WAL_SEGS * (DEFAULT_XLOG_SEG_SIZE / (1024 * 1024)),
2834  2, MAX_KILOBYTES,
2835  NULL, assign_max_wal_size, NULL
2836  },
2837 
2838  {
2839  {"checkpoint_timeout", PGC_SIGHUP, WAL_CHECKPOINTS,
2840  gettext_noop("Sets the maximum time between automatic WAL checkpoints."),
2841  NULL,
2842  GUC_UNIT_S
2843  },
2845  300, 30, 86400,
2846  NULL, NULL, NULL
2847  },
2848 
2849  {
2850  {"checkpoint_warning", PGC_SIGHUP, WAL_CHECKPOINTS,
2851  gettext_noop("Sets the maximum time before warning if checkpoints "
2852  "triggered by WAL volume happen too frequently."),
2853  gettext_noop("Write a message to the server log if checkpoints "
2854  "caused by the filling of WAL segment files happen more "
2855  "frequently than this amount of time. "
2856  "Zero turns off the warning."),
2857  GUC_UNIT_S
2858  },
2860  30, 0, INT_MAX,
2861  NULL, NULL, NULL
2862  },
2863 
2864  {
2865  {"checkpoint_flush_after", PGC_SIGHUP, WAL_CHECKPOINTS,
2866  gettext_noop("Number of pages after which previously performed writes are flushed to disk."),
2867  NULL,
2869  },
2872  NULL, NULL, NULL
2873  },
2874 
2875  {
2876  {"wal_buffers", PGC_POSTMASTER, WAL_SETTINGS,
2877  gettext_noop("Sets the number of disk-page buffers in shared memory for WAL."),
2878  gettext_noop("Specify -1 to have this value determined as a fraction of shared_buffers."),
2880  },
2881  &XLOGbuffers,
2882  -1, -1, (INT_MAX / XLOG_BLCKSZ),
2883  check_wal_buffers, NULL, NULL
2884  },
2885 
2886  {
2887  {"wal_writer_delay", PGC_SIGHUP, WAL_SETTINGS,
2888  gettext_noop("Time between WAL flushes performed in the WAL writer."),
2889  NULL,
2890  GUC_UNIT_MS
2891  },
2892  &WalWriterDelay,
2893  200, 1, 10000,
2894  NULL, NULL, NULL
2895  },
2896 
2897  {
2898  {"wal_writer_flush_after", PGC_SIGHUP, WAL_SETTINGS,
2899  gettext_noop("Amount of WAL written out by WAL writer that triggers a flush."),
2900  NULL,
2902  },
2904  DEFAULT_WAL_WRITER_FLUSH_AFTER, 0, INT_MAX,
2905  NULL, NULL, NULL
2906  },
2907 
2908  {
2909  {"wal_skip_threshold", PGC_USERSET, WAL_SETTINGS,
2910  gettext_noop("Minimum size of new file to fsync instead of writing WAL."),
2911  NULL,
2912  GUC_UNIT_KB
2913  },
2915  2048, 0, MAX_KILOBYTES,
2916  NULL, NULL, NULL
2917  },
2918 
2919  {
2920  {"max_wal_senders", PGC_POSTMASTER, REPLICATION_SENDING,
2921  gettext_noop("Sets the maximum number of simultaneously running WAL sender processes."),
2922  NULL
2923  },
2924  &max_wal_senders,
2925  10, 0, MAX_BACKENDS,
2926  check_max_wal_senders, NULL, NULL
2927  },
2928 
2929  {
2930  /* see max_wal_senders */
2931  {"max_replication_slots", PGC_POSTMASTER, REPLICATION_SENDING,
2932  gettext_noop("Sets the maximum number of simultaneously defined replication slots."),
2933  NULL
2934  },
2936  10, 0, MAX_BACKENDS /* XXX? */ ,
2937  NULL, NULL, NULL
2938  },
2939 
2940  {
2941  {"max_slot_wal_keep_size", PGC_SIGHUP, REPLICATION_SENDING,
2942  gettext_noop("Sets the maximum WAL size that can be reserved by replication slots."),
2943  gettext_noop("Replication slots will be marked as failed, and segments released "
2944  "for deletion or recycling, if this much space is occupied by WAL "
2945  "on disk."),
2946  GUC_UNIT_MB
2947  },
2949  -1, -1, MAX_KILOBYTES,
2950  check_max_slot_wal_keep_size, NULL, NULL
2951  },
2952 
2953  {
2954  {"wal_sender_timeout", PGC_USERSET, REPLICATION_SENDING,
2955  gettext_noop("Sets the maximum time to wait for WAL replication."),
2956  NULL,
2957  GUC_UNIT_MS
2958  },
2960  60 * 1000, 0, INT_MAX,
2961  NULL, NULL, NULL
2962  },
2963 
2964  {
2965  {"commit_delay", PGC_SUSET, WAL_SETTINGS,
2966  gettext_noop("Sets the delay in microseconds between transaction commit and "
2967  "flushing WAL to disk."),
2968  NULL
2969  /* we have no microseconds designation, so can't supply units here */
2970  },
2971  &CommitDelay,
2972  0, 0, 100000,
2973  NULL, NULL, NULL
2974  },
2975 
2976  {
2977  {"commit_siblings", PGC_USERSET, WAL_SETTINGS,
2978  gettext_noop("Sets the minimum number of concurrent open transactions "
2979  "required before performing \"commit_delay\"."),
2980  NULL
2981  },
2982  &CommitSiblings,
2983  5, 0, 1000,
2984  NULL, NULL, NULL
2985  },
2986 
2987  {
2988  {"extra_float_digits", PGC_USERSET, CLIENT_CONN_LOCALE,
2989  gettext_noop("Sets the number of digits displayed for floating-point values."),
2990  gettext_noop("This affects real, double precision, and geometric data types. "
2991  "A zero or negative parameter value is added to the standard "
2992  "number of digits (FLT_DIG or DBL_DIG as appropriate). "
2993  "Any value greater than zero selects precise output mode.")
2994  },
2996  1, -15, 3,
2997  NULL, NULL, NULL
2998  },
2999 
3000  {
3001  {"log_min_duration_sample", PGC_SUSET, LOGGING_WHEN,
3002  gettext_noop("Sets the minimum execution time above which "
3003  "a sample of statements will be logged."
3004  " Sampling is determined by log_statement_sample_rate."),
3005  gettext_noop("Zero logs a sample of all queries. -1 turns this feature off."),
3006  GUC_UNIT_MS
3007  },
3009  -1, -1, INT_MAX,
3010  NULL, NULL, NULL
3011  },
3012 
3013  {
3014  {"log_min_duration_statement", PGC_SUSET, LOGGING_WHEN,
3015  gettext_noop("Sets the minimum execution time above which "
3016  "all statements will be logged."),
3017  gettext_noop("Zero prints all queries. -1 turns this feature off."),
3018  GUC_UNIT_MS
3019  },
3021  -1, -1, INT_MAX,
3022  NULL, NULL, NULL
3023  },
3024 
3025  {
3026  {"log_autovacuum_min_duration", PGC_SIGHUP, LOGGING_WHAT,
3027  gettext_noop("Sets the minimum execution time above which "
3028  "autovacuum actions will be logged."),
3029  gettext_noop("Zero prints all actions. -1 turns autovacuum logging off."),
3030  GUC_UNIT_MS
3031  },
3033  600000, -1, INT_MAX,
3034  NULL, NULL, NULL
3035  },
3036 
3037  {
3038  {"log_parameter_max_length", PGC_SUSET, LOGGING_WHAT,
3039  gettext_noop("Sets the maximum length in bytes of data logged for bind "
3040  "parameter values when logging statements."),
3041  gettext_noop("-1 to print values in full."),
3043  },
3045  -1, -1, INT_MAX / 2,
3046  NULL, NULL, NULL
3047  },
3048 
3049  {
3050  {"log_parameter_max_length_on_error", PGC_USERSET, LOGGING_WHAT,
3051  gettext_noop("Sets the maximum length in bytes of data logged for bind "
3052  "parameter values when logging statements, on error."),
3053  gettext_noop("-1 to print values in full."),
3055  },
3057  0, -1, INT_MAX / 2,
3058  NULL, NULL, NULL
3059  },
3060 
3061  {
3062  {"bgwriter_delay", PGC_SIGHUP, RESOURCES_BGWRITER,
3063  gettext_noop("Background writer sleep time between rounds."),
3064  NULL,
3065  GUC_UNIT_MS
3066  },
3067  &BgWriterDelay,
3068  200, 10, 10000,
3069  NULL, NULL, NULL
3070  },
3071 
3072  {
3073  {"bgwriter_lru_maxpages", PGC_SIGHUP, RESOURCES_BGWRITER,
3074  gettext_noop("Background writer maximum number of LRU pages to flush per round."),
3075  NULL
3076  },
3078  100, 0, INT_MAX / 2, /* Same upper limit as shared_buffers */
3079  NULL, NULL, NULL
3080  },
3081 
3082  {
3083  {"bgwriter_flush_after", PGC_SIGHUP, RESOURCES_BGWRITER,
3084  gettext_noop("Number of pages after which previously performed writes are flushed to disk."),
3085  NULL,
3087  },
3090  NULL, NULL, NULL
3091  },
3092 
3093  {
3094  {"effective_io_concurrency",
3095  PGC_USERSET,
3097  gettext_noop("Number of simultaneous requests that can be handled efficiently by the disk subsystem."),
3098  NULL,
3099  GUC_EXPLAIN
3100  },
3103  0, MAX_IO_CONCURRENCY,
3104  check_effective_io_concurrency, NULL, NULL
3105  },
3106 
3107  {
3108  {"maintenance_io_concurrency",
3109  PGC_USERSET,
3111  gettext_noop("A variant of \"effective_io_concurrency\" that is used for maintenance work."),
3112  NULL,
3113  GUC_EXPLAIN
3114  },
3117  0, MAX_IO_CONCURRENCY,
3119  NULL
3120  },
3121 
3122  {
3123  {"io_combine_limit",
3124  PGC_USERSET,
3126  gettext_noop("Limit on the size of data reads and writes."),
3127  NULL,
3129  },
3133  NULL, NULL, NULL
3134  },
3135 
3136  {
3137  {"backend_flush_after", PGC_USERSET, RESOURCES_ASYNCHRONOUS,
3138  gettext_noop("Number of pages after which previously performed writes are flushed to disk."),
3139  NULL,
3141  },
3144  NULL, NULL, NULL
3145  },
3146 
3147  {
3148  {"max_worker_processes",
3151  gettext_noop("Maximum number of concurrent worker processes."),
3152  NULL,
3153  },
3155  8, 0, MAX_BACKENDS,
3156  check_max_worker_processes, NULL, NULL
3157  },
3158 
3159  {
3160  {"max_logical_replication_workers",
3163  gettext_noop("Maximum number of logical replication worker processes."),
3164  NULL,
3165  },
3167  4, 0, MAX_BACKENDS,
3168  NULL, NULL, NULL
3169  },
3170 
3171  {
3172  {"max_sync_workers_per_subscription",
3173  PGC_SIGHUP,
3175  gettext_noop("Maximum number of table synchronization workers per subscription."),
3176  NULL,
3177  },
3179  2, 0, MAX_BACKENDS,
3180  NULL, NULL, NULL
3181  },
3182 
3183  {
3184  {"max_parallel_apply_workers_per_subscription",
3185  PGC_SIGHUP,
3187  gettext_noop("Maximum number of parallel apply workers per subscription."),
3188  NULL,
3189  },
3192  NULL, NULL, NULL
3193  },
3194 
3195  {
3196  {"log_rotation_age", PGC_SIGHUP, LOGGING_WHERE,
3197  gettext_noop("Sets the amount of time to wait before forcing "
3198  "log file rotation."),
3199  NULL,
3200  GUC_UNIT_MIN
3201  },
3202  &Log_RotationAge,
3204  NULL, NULL, NULL
3205  },
3206 
3207  {
3208  {"log_rotation_size", PGC_SIGHUP, LOGGING_WHERE,
3209  gettext_noop("Sets the maximum size a log file can reach before "
3210  "being rotated."),
3211  NULL,
3212  GUC_UNIT_KB
3213  },
3215  10 * 1024, 0, INT_MAX / 1024,
3216  NULL, NULL, NULL
3217  },
3218 
3219  {
3220  {"max_function_args", PGC_INTERNAL, PRESET_OPTIONS,
3221  gettext_noop("Shows the maximum number of function arguments."),
3222  NULL,
3224  },
3227  NULL, NULL, NULL
3228  },
3229 
3230  {
3231  {"max_index_keys", PGC_INTERNAL, PRESET_OPTIONS,
3232  gettext_noop("Shows the maximum number of index keys."),
3233  NULL,
3235  },
3236  &max_index_keys,
3238  NULL, NULL, NULL
3239  },
3240 
3241  {
3242  {"max_identifier_length", PGC_INTERNAL, PRESET_OPTIONS,
3243  gettext_noop("Shows the maximum identifier length."),
3244  NULL,
3246  },
3248  NAMEDATALEN - 1, NAMEDATALEN - 1, NAMEDATALEN - 1,
3249  NULL, NULL, NULL
3250  },
3251 
3252  {
3253  {"block_size", PGC_INTERNAL, PRESET_OPTIONS,
3254  gettext_noop("Shows the size of a disk block."),
3255  NULL,
3257  },
3258  &block_size,
3259  BLCKSZ, BLCKSZ, BLCKSZ,
3260  NULL, NULL, NULL
3261  },
3262 
3263  {
3264  {"segment_size", PGC_INTERNAL, PRESET_OPTIONS,
3265  gettext_noop("Shows the number of pages per disk file."),
3266  NULL,
3268  },
3269  &segment_size,
3270  RELSEG_SIZE, RELSEG_SIZE, RELSEG_SIZE,
3271  NULL, NULL, NULL
3272  },
3273 
3274  {
3275  {"wal_block_size", PGC_INTERNAL, PRESET_OPTIONS,
3276  gettext_noop("Shows the block size in the write ahead log."),
3277  NULL,
3279  },
3280  &wal_block_size,
3281  XLOG_BLCKSZ, XLOG_BLCKSZ, XLOG_BLCKSZ,
3282  NULL, NULL, NULL
3283  },
3284 
3285  {
3286  {"wal_retrieve_retry_interval", PGC_SIGHUP, REPLICATION_STANDBY,
3287  gettext_noop("Sets the time to wait before retrying to retrieve WAL "
3288  "after a failed attempt."),
3289  NULL,
3290  GUC_UNIT_MS
3291  },
3293  5000, 1, INT_MAX,
3294  NULL, NULL, NULL
3295  },
3296 
3297  {
3298  {"wal_segment_size", PGC_INTERNAL, PRESET_OPTIONS,
3299  gettext_noop("Shows the size of write ahead log segments."),
3300  NULL,
3302  },
3305  WalSegMinSize,
3306  WalSegMaxSize,
3307  check_wal_segment_size, NULL, NULL
3308  },
3309 
3310  {
3311  {"wal_summary_keep_time", PGC_SIGHUP, WAL_SUMMARIZATION,
3312  gettext_noop("Time for which WAL summary files should be kept."),
3313  NULL,
3314  GUC_UNIT_MIN,
3315  },
3317  10 * HOURS_PER_DAY * MINS_PER_HOUR, /* 10 days */
3318  0,
3319  INT_MAX / SECS_PER_MINUTE,
3320  NULL, NULL, NULL
3321  },
3322 
3323  {
3324  {"autovacuum_naptime", PGC_SIGHUP, AUTOVACUUM,
3325  gettext_noop("Time to sleep between autovacuum runs."),
3326  NULL,
3327  GUC_UNIT_S
3328  },
3330  60, 1, INT_MAX / 1000,
3331  NULL, NULL, NULL
3332  },
3333  {
3334  {"autovacuum_vacuum_threshold", PGC_SIGHUP, AUTOVACUUM,
3335  gettext_noop("Minimum number of tuple updates or deletes prior to vacuum."),
3336  NULL
3337  },
3339  50, 0, INT_MAX,
3340  NULL, NULL, NULL
3341  },
3342  {
3343  {"autovacuum_vacuum_insert_threshold", PGC_SIGHUP, AUTOVACUUM,
3344  gettext_noop("Minimum number of tuple inserts prior to vacuum, or -1 to disable insert vacuums."),
3345  NULL
3346  },
3348  1000, -1, INT_MAX,
3349  NULL, NULL, NULL
3350  },
3351  {
3352  {"autovacuum_analyze_threshold", PGC_SIGHUP, AUTOVACUUM,
3353  gettext_noop("Minimum number of tuple inserts, updates, or deletes prior to analyze."),
3354  NULL
3355  },
3357  50, 0, INT_MAX,
3358  NULL, NULL, NULL
3359  },
3360  {
3361  /* see varsup.c for why this is PGC_POSTMASTER not PGC_SIGHUP */
3362  {"autovacuum_freeze_max_age", PGC_POSTMASTER, AUTOVACUUM,
3363  gettext_noop("Age at which to autovacuum a table to prevent transaction ID wraparound."),
3364  NULL
3365  },
3367 
3368  /* see vacuum_failsafe_age if you change the upper-limit value. */
3369  200000000, 100000, 2000000000,
3370  NULL, NULL, NULL
3371  },
3372  {
3373  /* see multixact.c for why this is PGC_POSTMASTER not PGC_SIGHUP */
3374  {"autovacuum_multixact_freeze_max_age", PGC_POSTMASTER, AUTOVACUUM,
3375  gettext_noop("Multixact age at which to autovacuum a table to prevent multixact wraparound."),
3376  NULL
3377  },
3379  400000000, 10000, 2000000000,
3380  NULL, NULL, NULL
3381  },
3382  {
3383  /* see max_connections */
3384  {"autovacuum_max_workers", PGC_POSTMASTER, AUTOVACUUM,
3385  gettext_noop("Sets the maximum number of simultaneously running autovacuum worker processes."),
3386  NULL
3387  },
3389  3, 1, MAX_BACKENDS,
3390  check_autovacuum_max_workers, NULL, NULL
3391  },
3392 
3393  {
3394  {"max_parallel_maintenance_workers", PGC_USERSET, RESOURCES_ASYNCHRONOUS,
3395  gettext_noop("Sets the maximum number of parallel processes per maintenance operation."),
3396  NULL
3397  },
3399  2, 0, 1024,
3400  NULL, NULL, NULL
3401  },
3402 
3403  {
3404  {"max_parallel_workers_per_gather", PGC_USERSET, RESOURCES_ASYNCHRONOUS,
3405  gettext_noop("Sets the maximum number of parallel processes per executor node."),
3406  NULL,
3407  GUC_EXPLAIN
3408  },
3411  NULL, NULL, NULL
3412  },
3413 
3414  {
3415  {"max_parallel_workers", PGC_USERSET, RESOURCES_ASYNCHRONOUS,
3416  gettext_noop("Sets the maximum number of parallel workers that can be active at one time."),
3417  NULL,
3418  GUC_EXPLAIN
3419  },
3422  NULL, NULL, NULL
3423  },
3424 
3425  {
3426  {"autovacuum_work_mem", PGC_SIGHUP, RESOURCES_MEM,
3427  gettext_noop("Sets the maximum memory to be used by each autovacuum worker process."),
3428  NULL,
3429  GUC_UNIT_KB
3430  },
3432  -1, -1, MAX_KILOBYTES,
3433  check_autovacuum_work_mem, NULL, NULL
3434  },
3435 
3436  {
3437  {"tcp_keepalives_idle", PGC_USERSET, CONN_AUTH_TCP,
3438  gettext_noop("Time between issuing TCP keepalives."),
3439  gettext_noop("A value of 0 uses the system default."),
3440  GUC_UNIT_S
3441  },
3443  0, 0, INT_MAX,
3445  },
3446 
3447  {
3448  {"tcp_keepalives_interval", PGC_USERSET, CONN_AUTH_TCP,
3449  gettext_noop("Time between TCP keepalive retransmits."),
3450  gettext_noop("A value of 0 uses the system default."),
3451  GUC_UNIT_S
3452  },
3454  0, 0, INT_MAX,
3456  },
3457 
3458  {
3459  {"ssl_renegotiation_limit", PGC_USERSET, COMPAT_OPTIONS_PREVIOUS,
3460  gettext_noop("SSL renegotiation is no longer supported; this can only be 0."),
3461  NULL,
3463  },
3465  0, 0, 0,
3466  NULL, NULL, NULL
3467  },
3468 
3469  {
3470  {"tcp_keepalives_count", PGC_USERSET, CONN_AUTH_TCP,
3471  gettext_noop("Maximum number of TCP keepalive retransmits."),
3472  gettext_noop("Number of consecutive keepalive retransmits that can be "
3473  "lost before a connection is considered dead. A value of 0 uses the "
3474  "system default."),
3475  },
3477  0, 0, INT_MAX,
3479  },
3480 
3481  {
3482  {"gin_fuzzy_search_limit", PGC_USERSET, CLIENT_CONN_OTHER,
3483  gettext_noop("Sets the maximum allowed result for exact search by GIN."),
3484  NULL,
3485  0
3486  },
3488  0, 0, INT_MAX,
3489  NULL, NULL, NULL
3490  },
3491 
3492  {
3493  {"effective_cache_size", PGC_USERSET, QUERY_TUNING_COST,
3494  gettext_noop("Sets the planner's assumption about the total size of the data caches."),
3495  gettext_noop("That is, the total size of the caches (kernel cache and shared buffers) used for PostgreSQL data files. "
3496  "This is measured in disk pages, which are normally 8 kB each."),
3498  },
3500  DEFAULT_EFFECTIVE_CACHE_SIZE, 1, INT_MAX,
3501  NULL, NULL, NULL
3502  },
3503 
3504  {
3505  {"min_parallel_table_scan_size", PGC_USERSET, QUERY_TUNING_COST,
3506  gettext_noop("Sets the minimum amount of table data for a parallel scan."),
3507  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."),
3509  },
3511  (8 * 1024 * 1024) / BLCKSZ, 0, INT_MAX / 3,
3512  NULL, NULL, NULL
3513  },
3514 
3515  {
3516  {"min_parallel_index_scan_size", PGC_USERSET, QUERY_TUNING_COST,
3517  gettext_noop("Sets the minimum amount of index data for a parallel scan."),
3518  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."),
3520  },
3522  (512 * 1024) / BLCKSZ, 0, INT_MAX / 3,
3523  NULL, NULL, NULL
3524  },
3525 
3526  {
3527  /* Can't be set in postgresql.conf */
3528  {"server_version_num", PGC_INTERNAL, PRESET_OPTIONS,
3529  gettext_noop("Shows the server version as an integer."),
3530  NULL,
3532  },
3534  PG_VERSION_NUM, PG_VERSION_NUM, PG_VERSION_NUM,
3535  NULL, NULL, NULL
3536  },
3537 
3538  {
3539  {"log_temp_files", PGC_SUSET, LOGGING_WHAT,
3540  gettext_noop("Log the use of temporary files larger than this number of kilobytes."),
3541  gettext_noop("Zero logs all files. The default is -1 (turning this feature off)."),
3542  GUC_UNIT_KB
3543  },
3544  &log_temp_files,
3545  -1, -1, INT_MAX,
3546  NULL, NULL, NULL
3547  },
3548 
3549  {
3550  {"track_activity_query_size", PGC_POSTMASTER, STATS_CUMULATIVE,
3551  gettext_noop("Sets the size reserved for pg_stat_activity.query, in bytes."),
3552  NULL,
3554  },
3556  1024, 100, 1048576,
3557  NULL, NULL, NULL
3558  },
3559 
3560  {
3561  {"gin_pending_list_limit", PGC_USERSET, CLIENT_CONN_STATEMENT,
3562  gettext_noop("Sets the maximum size of the pending list for GIN index."),
3563  NULL,
3564  GUC_UNIT_KB
3565  },
3567  4096, 64, MAX_KILOBYTES,
3568  NULL, NULL, NULL
3569  },
3570 
3571  {
3572  {"tcp_user_timeout", PGC_USERSET, CONN_AUTH_TCP,
3573  gettext_noop("TCP user timeout."),
3574  gettext_noop("A value of 0 uses the system default."),
3575  GUC_UNIT_MS
3576  },
3578  0, 0, INT_MAX,
3580  },
3581 
3582  {
3583  {"huge_page_size", PGC_POSTMASTER, RESOURCES_MEM,
3584  gettext_noop("The size of huge page that should be requested."),
3585  NULL,
3586  GUC_UNIT_KB
3587  },
3588  &huge_page_size,
3589  0, 0, INT_MAX,
3590  check_huge_page_size, NULL, NULL
3591  },
3592 
3593  {
3594  {"debug_discard_caches", PGC_SUSET, DEVELOPER_OPTIONS,
3595  gettext_noop("Aggressively flush system caches for debugging purposes."),
3596  NULL,
3598  },
3600 #ifdef DISCARD_CACHES_ENABLED
3601  /* Set default based on older compile-time-only cache clobber macros */
3602 #if defined(CLOBBER_CACHE_RECURSIVELY)
3603  3,
3604 #elif defined(CLOBBER_CACHE_ALWAYS)
3605  1,
3606 #else
3607  0,
3608 #endif
3609  0, 5,
3610 #else /* not DISCARD_CACHES_ENABLED */
3611  0, 0, 0,
3612 #endif /* not DISCARD_CACHES_ENABLED */
3613  NULL, NULL, NULL
3614  },
3615 
3616  {
3617  {"client_connection_check_interval", PGC_USERSET, CONN_AUTH_TCP,
3618  gettext_noop("Sets the time interval between checks for disconnection while running queries."),
3619  NULL,
3620  GUC_UNIT_MS
3621  },
3623  0, 0, INT_MAX,
3625  },
3626 
3627  {
3628  {"log_startup_progress_interval", PGC_SIGHUP, LOGGING_WHEN,
3629  gettext_noop("Time between progress updates for "
3630  "long-running startup operations."),
3631  gettext_noop("0 turns this feature off."),
3632  GUC_UNIT_MS,
3633  },
3635  10000, 0, INT_MAX,
3636  NULL, NULL, NULL
3637  },
3638 
3639  {
3640  {"scram_iterations", PGC_USERSET, CONN_AUTH_AUTH,
3641  gettext_noop("Sets the iteration count for SCRAM secret generation."),
3642  NULL,
3643  GUC_REPORT
3644  },
3647  NULL, NULL, NULL
3648  },
3649 
3650  /* End-of-list marker */
3651  {
3652  {NULL, 0, 0, NULL, NULL}, NULL, 0, 0, 0, NULL, NULL, NULL
3653  }
3654 };
3655 
3656 
3658 {
3659  {
3660  {"seq_page_cost", PGC_USERSET, QUERY_TUNING_COST,
3661  gettext_noop("Sets the planner's estimate of the cost of a "
3662  "sequentially fetched disk page."),
3663  NULL,
3664  GUC_EXPLAIN
3665  },
3666  &seq_page_cost,
3667  DEFAULT_SEQ_PAGE_COST, 0, DBL_MAX,
3668  NULL, NULL, NULL
3669  },
3670  {
3671  {"random_page_cost", PGC_USERSET, QUERY_TUNING_COST,
3672  gettext_noop("Sets the planner's estimate of the cost of a "
3673  "nonsequentially fetched disk page."),
3674  NULL,
3675  GUC_EXPLAIN
3676  },
3678  DEFAULT_RANDOM_PAGE_COST, 0, DBL_MAX,
3679  NULL, NULL, NULL
3680  },
3681  {
3682  {"cpu_tuple_cost", PGC_USERSET, QUERY_TUNING_COST,
3683  gettext_noop("Sets the planner's estimate of the cost of "
3684  "processing each tuple (row)."),
3685  NULL,
3686  GUC_EXPLAIN
3687  },
3688  &cpu_tuple_cost,
3689  DEFAULT_CPU_TUPLE_COST, 0, DBL_MAX,
3690  NULL, NULL, NULL
3691  },
3692  {
3693  {"cpu_index_tuple_cost", PGC_USERSET, QUERY_TUNING_COST,
3694  gettext_noop("Sets the planner's estimate of the cost of "
3695  "processing each index entry during an index scan."),
3696  NULL,
3697  GUC_EXPLAIN
3698  },
3700  DEFAULT_CPU_INDEX_TUPLE_COST, 0, DBL_MAX,
3701  NULL, NULL, NULL
3702  },
3703  {
3704  {"cpu_operator_cost", PGC_USERSET, QUERY_TUNING_COST,
3705  gettext_noop("Sets the planner's estimate of the cost of "
3706  "processing each operator or function call."),
3707  NULL,
3708  GUC_EXPLAIN
3709  },
3711  DEFAULT_CPU_OPERATOR_COST, 0, DBL_MAX,
3712  NULL, NULL, NULL
3713  },
3714  {
3715  {"parallel_tuple_cost", PGC_USERSET, QUERY_TUNING_COST,
3716  gettext_noop("Sets the planner's estimate of the cost of "
3717  "passing each tuple (row) from worker to leader backend."),
3718  NULL,
3719  GUC_EXPLAIN
3720  },
3722  DEFAULT_PARALLEL_TUPLE_COST, 0, DBL_MAX,
3723  NULL, NULL, NULL
3724  },
3725  {
3726  {"parallel_setup_cost", PGC_USERSET, QUERY_TUNING_COST,
3727  gettext_noop("Sets the planner's estimate of the cost of "
3728  "starting up worker processes for parallel query."),
3729  NULL,
3730  GUC_EXPLAIN
3731  },
3733  DEFAULT_PARALLEL_SETUP_COST, 0, DBL_MAX,
3734  NULL, NULL, NULL
3735  },
3736 
3737  {
3738  {"jit_above_cost", PGC_USERSET, QUERY_TUNING_COST,
3739  gettext_noop("Perform JIT compilation if query is more expensive."),
3740  gettext_noop("-1 disables JIT compilation."),
3741  GUC_EXPLAIN
3742  },
3743  &jit_above_cost,
3744  100000, -1, DBL_MAX,
3745  NULL, NULL, NULL
3746  },
3747 
3748  {
3749  {"jit_optimize_above_cost", PGC_USERSET, QUERY_TUNING_COST,
3750  gettext_noop("Optimize JIT-compiled functions if query is more expensive."),
3751  gettext_noop("-1 disables optimization."),
3752  GUC_EXPLAIN
3753  },
3755  500000, -1, DBL_MAX,
3756  NULL, NULL, NULL
3757  },
3758 
3759  {
3760  {"jit_inline_above_cost", PGC_USERSET, QUERY_TUNING_COST,
3761  gettext_noop("Perform JIT inlining if query is more expensive."),
3762  gettext_noop("-1 disables inlining."),
3763  GUC_EXPLAIN
3764  },
3766  500000, -1, DBL_MAX,
3767  NULL, NULL, NULL
3768  },
3769 
3770  {
3771  {"cursor_tuple_fraction", PGC_USERSET, QUERY_TUNING_OTHER,
3772  gettext_noop("Sets the planner's estimate of the fraction of "
3773  "a cursor's rows that will be retrieved."),
3774  NULL,
3775  GUC_EXPLAIN
3776  },
3779  NULL, NULL, NULL
3780  },
3781 
3782  {
3783  {"recursive_worktable_factor", PGC_USERSET, QUERY_TUNING_OTHER,
3784  gettext_noop("Sets the planner's estimate of the average size "
3785  "of a recursive query's working table."),
3786  NULL,
3787  GUC_EXPLAIN
3788  },
3790  DEFAULT_RECURSIVE_WORKTABLE_FACTOR, 0.001, 1000000.0,
3791  NULL, NULL, NULL
3792  },
3793 
3794  {
3795  {"geqo_selection_bias", PGC_USERSET, QUERY_TUNING_GEQO,
3796  gettext_noop("GEQO: selective pressure within the population."),
3797  NULL,
3798  GUC_EXPLAIN
3799  },
3803  NULL, NULL, NULL
3804  },
3805  {
3806  {"geqo_seed", PGC_USERSET, QUERY_TUNING_GEQO,
3807  gettext_noop("GEQO: seed for random path selection."),
3808  NULL,
3809  GUC_EXPLAIN
3810  },
3811  &Geqo_seed,
3812  0.0, 0.0, 1.0,
3813  NULL, NULL, NULL
3814  },
3815 
3816  {
3817  {"hash_mem_multiplier", PGC_USERSET, RESOURCES_MEM,
3818  gettext_noop("Multiple of \"work_mem\" to use for hash tables."),
3819  NULL,
3820  GUC_EXPLAIN
3821  },
3823  2.0, 1.0, 1000.0,
3824  NULL, NULL, NULL
3825  },
3826 
3827  {
3828  {"bgwriter_lru_multiplier", PGC_SIGHUP, RESOURCES_BGWRITER,
3829  gettext_noop("Multiple of the average buffer usage to free per round."),
3830  NULL
3831  },
3833  2.0, 0.0, 10.0,
3834  NULL, NULL, NULL
3835  },
3836 
3837  {
3838  {"seed", PGC_USERSET, UNGROUPED,
3839  gettext_noop("Sets the seed for random-number generation."),
3840  NULL,
3842  },
3844  0.0, -1.0, 1.0,
3846  },
3847 
3848  {
3849  {"vacuum_cost_delay", PGC_USERSET, RESOURCES_VACUUM_DELAY,
3850  gettext_noop("Vacuum cost delay in milliseconds."),
3851  NULL,
3852  GUC_UNIT_MS
3853  },
3854  &VacuumCostDelay,
3855  0, 0, 100,
3856  NULL, NULL, NULL
3857  },
3858 
3859  {
3860  {"autovacuum_vacuum_cost_delay", PGC_SIGHUP, AUTOVACUUM,
3861  gettext_noop("Vacuum cost delay in milliseconds, for autovacuum."),
3862  NULL,
3863  GUC_UNIT_MS
3864  },
3866  2, -1, 100,
3867  NULL, NULL, NULL
3868  },
3869 
3870  {
3871  {"autovacuum_vacuum_scale_factor", PGC_SIGHUP, AUTOVACUUM,
3872  gettext_noop("Number of tuple updates or deletes prior to vacuum as a fraction of reltuples."),
3873  NULL
3874  },
3876  0.2, 0.0, 100.0,
3877  NULL, NULL, NULL
3878  },
3879 
3880  {
3881  {"autovacuum_vacuum_insert_scale_factor", PGC_SIGHUP, AUTOVACUUM,
3882  gettext_noop("Number of tuple inserts prior to vacuum as a fraction of reltuples."),
3883  NULL
3884  },
3886  0.2, 0.0, 100.0,
3887  NULL, NULL, NULL
3888  },
3889 
3890  {
3891  {"autovacuum_analyze_scale_factor", PGC_SIGHUP, AUTOVACUUM,
3892  gettext_noop("Number of tuple inserts, updates, or deletes prior to analyze as a fraction of reltuples."),
3893  NULL
3894  },
3896  0.1, 0.0, 100.0,
3897  NULL, NULL, NULL
3898  },
3899 
3900  {
3901  {"checkpoint_completion_target", PGC_SIGHUP, WAL_CHECKPOINTS,
3902  gettext_noop("Time spent flushing dirty buffers during checkpoint, as fraction of checkpoint interval."),
3903  NULL
3904  },
3906  0.9, 0.0, 1.0,
3908  },
3909 
3910  {
3911  {"log_statement_sample_rate", PGC_SUSET, LOGGING_WHEN,
3912  gettext_noop("Fraction of statements exceeding \"log_min_duration_sample\" to be logged."),
3913  gettext_noop("Use a value between 0.0 (never log) and 1.0 (always log).")
3914  },
3916  1.0, 0.0, 1.0,
3917  NULL, NULL, NULL
3918  },
3919 
3920  {
3921  {"log_transaction_sample_rate", PGC_SUSET, LOGGING_WHEN,
3922  gettext_noop("Sets the fraction of transactions from which to log all statements."),
3923  gettext_noop("Use a value between 0.0 (never log) and 1.0 (log all "
3924  "statements for all transactions).")
3925  },
3927  0.0, 0.0, 1.0,
3928  NULL, NULL, NULL
3929  },
3930 
3931  /* End-of-list marker */
3932  {
3933  {NULL, 0, 0, NULL, NULL}, NULL, 0.0, 0.0, 0.0, NULL, NULL, NULL
3934  }
3935 };
3936 
3937 
3939 {
3940  {
3941  {"archive_command", PGC_SIGHUP, WAL_ARCHIVING,
3942  gettext_noop("Sets the shell command that will be called to archive a WAL file."),
3943  gettext_noop("This is used only if \"archive_library\" is not set.")
3944  },
3946  "",
3947  NULL, NULL, show_archive_command
3948  },
3949 
3950  {
3951  {"archive_library", PGC_SIGHUP, WAL_ARCHIVING,
3952  gettext_noop("Sets the library that will be called to archive a WAL file."),
3953  gettext_noop("An empty string indicates that \"archive_command\" should be used.")
3954  },
3956  "",
3957  NULL, NULL, NULL
3958  },
3959 
3960  {
3961  {"restore_command", PGC_SIGHUP, WAL_ARCHIVE_RECOVERY,
3962  gettext_noop("Sets the shell command that will be called to retrieve an archived WAL file."),
3963  NULL
3964  },
3966  "",
3967  NULL, NULL, NULL
3968  },
3969 
3970  {
3971  {"archive_cleanup_command", PGC_SIGHUP, WAL_ARCHIVE_RECOVERY,
3972  gettext_noop("Sets the shell command that will be executed at every restart point."),
3973  NULL
3974  },
3976  "",
3977  NULL, NULL, NULL
3978  },
3979 
3980  {
3981  {"recovery_end_command", PGC_SIGHUP, WAL_ARCHIVE_RECOVERY,
3982  gettext_noop("Sets the shell command that will be executed once at the end of recovery."),
3983  NULL
3984  },
3986  "",
3987  NULL, NULL, NULL
3988  },
3989 
3990  {
3991  {"recovery_target_timeline", PGC_POSTMASTER, WAL_RECOVERY_TARGET,
3992  gettext_noop("Specifies the timeline to recover into."),
3993  NULL
3994  },
3996  "latest",
3998  },
3999 
4000  {
4001  {"recovery_target", PGC_POSTMASTER, WAL_RECOVERY_TARGET,
4002  gettext_noop("Set to \"immediate\" to end recovery as soon as a consistent state is reached."),
4003  NULL
4004  },
4006  "",
4008  },
4009  {
4010  {"recovery_target_xid", PGC_POSTMASTER, WAL_RECOVERY_TARGET,
4011  gettext_noop("Sets the transaction ID up to which recovery will proceed."),
4012  NULL
4013  },
4015  "",
4017  },
4018  {
4019  {"recovery_target_time", PGC_POSTMASTER, WAL_RECOVERY_TARGET,
4020  gettext_noop("Sets the time stamp up to which recovery will proceed."),
4021  NULL
4022  },
4024  "",
4026  },
4027  {
4028  {"recovery_target_name", PGC_POSTMASTER, WAL_RECOVERY_TARGET,
4029  gettext_noop("Sets the named restore point up to which recovery will proceed."),
4030  NULL
4031  },
4033  "",
4035  },
4036  {
4037  {"recovery_target_lsn", PGC_POSTMASTER, WAL_RECOVERY_TARGET,
4038  gettext_noop("Sets the LSN of the write-ahead log location up to which recovery will proceed."),
4039  NULL
4040  },
4042  "",
4044  },
4045 
4046  {
4047  {"primary_conninfo", PGC_SIGHUP, REPLICATION_STANDBY,
4048  gettext_noop("Sets the connection string to be used to connect to the sending server."),
4049  NULL,
4051  },
4052  &PrimaryConnInfo,
4053  "",
4054  NULL, NULL, NULL
4055  },
4056 
4057  {
4058  {"primary_slot_name", PGC_SIGHUP, REPLICATION_STANDBY,
4059  gettext_noop("Sets the name of the replication slot to use on the sending server."),
4060  NULL
4061  },
4062  &PrimarySlotName,
4063  "",
4064  check_primary_slot_name, NULL, NULL
4065  },
4066 
4067  {
4068  {"client_encoding", PGC_USERSET, CLIENT_CONN_LOCALE,
4069  gettext_noop("Sets the client's character set encoding."),
4070  NULL,
4072  },
4074  "SQL_ASCII",
4076  },
4077 
4078  {
4079  {"log_line_prefix", PGC_SIGHUP, LOGGING_WHAT,
4080  gettext_noop("Controls information prefixed to each log line."),
4081  gettext_noop("If blank, no prefix is used.")
4082  },
4083  &Log_line_prefix,
4084  "%m [%p] ",
4085  NULL, NULL, NULL
4086  },
4087 
4088  {
4089  {"log_timezone", PGC_SIGHUP, LOGGING_WHAT,
4090  gettext_noop("Sets the time zone to use in log messages."),
4091  NULL
4092  },
4094  "GMT",
4096  },
4097 
4098  {
4099  {"DateStyle", PGC_USERSET, CLIENT_CONN_LOCALE,
4100  gettext_noop("Sets the display format for date and time values."),
4101  gettext_noop("Also controls interpretation of ambiguous "
4102  "date inputs."),
4104  },
4106  "ISO, MDY",
4108  },
4109 
4110  {
4111  {"default_table_access_method", PGC_USERSET, CLIENT_CONN_STATEMENT,
4112  gettext_noop("Sets the default table access method for new tables."),
4113  NULL,
4114  GUC_IS_NAME
4115  },
4119  },
4120 
4121  {
4122  {"default_tablespace", PGC_USERSET, CLIENT_CONN_STATEMENT,
4123  gettext_noop("Sets the default tablespace to create tables and indexes in."),
4124  gettext_noop("An empty string selects the database's default tablespace."),
4125  GUC_IS_NAME
4126  },
4128  "",
4129  check_default_tablespace, NULL, NULL
4130  },
4131 
4132  {
4133  {"temp_tablespaces", PGC_USERSET, CLIENT_CONN_STATEMENT,
4134  gettext_noop("Sets the tablespace(s) to use for temporary tables and sort files."),
4135  NULL,
4137  },
4139  "",
4141  },
4142 
4143  {
4144  {"createrole_self_grant", PGC_USERSET, CLIENT_CONN_STATEMENT,
4145  gettext_noop("Sets whether a CREATEROLE user automatically grants "
4146  "the role to themselves, and with which options."),
4147  NULL,
4149  },
4151  "",
4153  },
4154 
4155  {
4156  {"dynamic_library_path", PGC_SUSET, CLIENT_CONN_OTHER,
4157  gettext_noop("Sets the path for dynamically loadable modules."),
4158  gettext_noop("If a dynamically loadable module needs to be opened and "
4159  "the specified name does not have a directory component (i.e., the "
4160  "name does not contain a slash), the system will search this path for "
4161  "the specified file."),
4163  },
4165  "$libdir",
4166  NULL, NULL, NULL
4167  },
4168 
4169  {
4170  {"krb_server_keyfile", PGC_SIGHUP, CONN_AUTH_AUTH,
4171  gettext_noop("Sets the location of the Kerberos server key file."),
4172  NULL,
4174  },
4176  PG_KRB_SRVTAB,
4177  NULL, NULL, NULL
4178  },
4179 
4180  {
4181  {"bonjour_name", PGC_POSTMASTER, CONN_AUTH_SETTINGS,
4182  gettext_noop("Sets the Bonjour service name."),
4183  NULL
4184  },
4185  &bonjour_name,
4186  "",
4187  NULL, NULL, NULL
4188  },
4189 
4190  {
4191  {"lc_messages", PGC_SUSET, CLIENT_CONN_LOCALE,
4192  gettext_noop("Sets the language in which messages are displayed."),
4193  NULL
4194  },
4195  &locale_messages,
4196  "",
4198  },
4199 
4200  {
4201  {"lc_monetary", PGC_USERSET, CLIENT_CONN_LOCALE,
4202  gettext_noop("Sets the locale for formatting monetary amounts."),
4203  NULL
4204  },
4205  &locale_monetary,
4206  "C",
4208  },
4209 
4210  {
4211  {"lc_numeric", PGC_USERSET, CLIENT_CONN_LOCALE,
4212  gettext_noop("Sets the locale for formatting numbers."),
4213  NULL
4214  },
4215  &locale_numeric,
4216  "C",
4218  },
4219 
4220  {
4221  {"lc_time", PGC_USERSET, CLIENT_CONN_LOCALE,
4222  gettext_noop("Sets the locale for formatting date and time values."),
4223  NULL
4224  },
4225  &locale_time,
4226  "C",
4228  },
4229 
4230  {
4231  {"session_preload_libraries", PGC_SUSET, CLIENT_CONN_PRELOAD,
4232  gettext_noop("Lists shared libraries to preload into each backend."),
4233  NULL,
4235  },
4237  "",
4238  NULL, NULL, NULL
4239  },
4240 
4241  {
4242  {"shared_preload_libraries", PGC_POSTMASTER, CLIENT_CONN_PRELOAD,
4243  gettext_noop("Lists shared libraries to preload into server."),
4244  NULL,
4246  },
4248  "",
4249  NULL, NULL, NULL
4250  },
4251 
4252  {
4253  {"local_preload_libraries", PGC_USERSET, CLIENT_CONN_PRELOAD,
4254  gettext_noop("Lists unprivileged shared libraries to preload into each backend."),
4255  NULL,
4257  },
4259  "",
4260  NULL, NULL, NULL
4261  },
4262 
4263  {
4264  {"search_path", PGC_USERSET, CLIENT_CONN_STATEMENT,
4265  gettext_noop("Sets the schema search order for names that are not schema-qualified."),
4266  NULL,
4268  },
4270  "\"$user\", public",
4272  },
4273 
4274  {
4275  /* Can't be set in postgresql.conf */
4276  {"server_encoding", PGC_INTERNAL, PRESET_OPTIONS,
4277  gettext_noop("Shows the server (database) character set encoding."),
4278  NULL,
4280  },
4282  "SQL_ASCII",
4283  NULL, NULL, NULL
4284  },
4285 
4286  {
4287  /* Can't be set in postgresql.conf */
4288  {"server_version", PGC_INTERNAL, PRESET_OPTIONS,
4289  gettext_noop("Shows the server version."),
4290  NULL,
4292  },
4294  PG_VERSION,
4295  NULL, NULL, NULL
4296  },
4297 
4298  {
4299  /* Not for general use --- used by SET ROLE */
4300  {"role", PGC_USERSET, UNGROUPED,
4301  gettext_noop("Sets the current role."),
4302  NULL,
4304  },
4305  &role_string,
4306  "none",
4308  },
4309 
4310  {
4311  /* Not for general use --- used by SET SESSION AUTHORIZATION */
4312  {"session_authorization", PGC_USERSET, UNGROUPED,
4313  gettext_noop("Sets the session user name."),
4314  NULL,
4316  },
4318  NULL,
4320  },
4321 
4322  {
4323  {"log_destination", PGC_SIGHUP, LOGGING_WHERE,
4324  gettext_noop("Sets the destination for server log output."),
4325  gettext_noop("Valid values are combinations of \"stderr\", "
4326  "\"syslog\", \"csvlog\", \"jsonlog\", and \"eventlog\", "
4327  "depending on the platform."),
4329  },
4331  "stderr",
4333  },
4334  {
4335  {"log_directory", PGC_SIGHUP, LOGGING_WHERE,
4336  gettext_noop("Sets the destination directory for log files."),
4337  gettext_noop("Can be specified as relative to the data directory "
4338  "or as absolute path."),
4340  },
4341  &Log_directory,
4342  "log",
4343  check_canonical_path, NULL, NULL
4344  },
4345  {
4346  {"log_filename", PGC_SIGHUP, LOGGING_WHERE,
4347  gettext_noop("Sets the file name pattern for log files."),
4348  NULL,
4350  },
4351  &Log_filename,
4352  "postgresql-%Y-%m-%d_%H%M%S.log",
4353  NULL, NULL, NULL
4354  },
4355 
4356  {
4357  {"syslog_ident", PGC_SIGHUP, LOGGING_WHERE,
4358  gettext_noop("Sets the program name used to identify PostgreSQL "
4359  "messages in syslog."),
4360  NULL
4361  },
4363  "postgres",
4364  NULL, assign_syslog_ident, NULL
4365  },
4366 
4367  {
4368  {"event_source", PGC_POSTMASTER, LOGGING_WHERE,
4369  gettext_noop("Sets the application name used to identify "
4370  "PostgreSQL messages in the event log."),
4371  NULL
4372  },
4373  &event_source,
4375  NULL, NULL, NULL
4376  },
4377 
4378  {
4379  {"TimeZone", PGC_USERSET, CLIENT_CONN_LOCALE,
4380  gettext_noop("Sets the time zone for displaying and interpreting time stamps."),
4381  NULL,
4382  GUC_REPORT
4383  },
4384  &timezone_string,
4385  "GMT",
4387  },
4388  {
4389  {"timezone_abbreviations", PGC_USERSET, CLIENT_CONN_LOCALE,
4390  gettext_noop("Selects a file of time zone abbreviations."),
4391  NULL
4392  },
4394  NULL,
4396  },
4397 
4398  {
4399  {"unix_socket_group", PGC_POSTMASTER, CONN_AUTH_SETTINGS,
4400  gettext_noop("Sets the owning group of the Unix-domain socket."),
4401  gettext_noop("The owning user of the socket is always the user "
4402  "that starts the server.")
4403  },
4405  "",
4406  NULL, NULL, NULL
4407  },
4408 
4409  {
4410  {"unix_socket_directories", PGC_POSTMASTER, CONN_AUTH_SETTINGS,
4411  gettext_noop("Sets the directories where Unix-domain sockets will be created."),
4412  NULL,
4414  },
4417  NULL, NULL, NULL
4418  },
4419 
4420  {
4421  {"listen_addresses", PGC_POSTMASTER, CONN_AUTH_SETTINGS,
4422  gettext_noop("Sets the host name or IP address(es) to listen to."),
4423  NULL,
4425  },
4426  &ListenAddresses,
4427  "localhost",
4428  NULL, NULL, NULL
4429  },
4430 
4431  {
4432  /*
4433  * Can't be set by ALTER SYSTEM as it can lead to recursive definition
4434  * of data_directory.
4435  */
4436  {"data_directory", PGC_POSTMASTER, FILE_LOCATIONS,
4437  gettext_noop("Sets the server's data directory."),
4438  NULL,
4440  },
4441  &data_directory,
4442  NULL,
4443  NULL, NULL, NULL
4444  },
4445 
4446  {
4447  {"config_file", PGC_POSTMASTER, FILE_LOCATIONS,
4448  gettext_noop("Sets the server's main configuration file."),
4449  NULL,
4451  },
4452  &ConfigFileName,
4453  NULL,
4454  NULL, NULL, NULL
4455  },
4456 
4457  {
4458  {"hba_file", PGC_POSTMASTER, FILE_LOCATIONS,
4459  gettext_noop("Sets the server's \"hba\" configuration file."),
4460  NULL,
4462  },
4463  &HbaFileName,
4464  NULL,
4465  NULL, NULL, NULL
4466  },
4467 
4468  {
4469  {"ident_file", PGC_POSTMASTER, FILE_LOCATIONS,
4470  gettext_noop("Sets the server's \"ident\" configuration file."),
4471  NULL,
4473  },
4474  &IdentFileName,
4475  NULL,
4476  NULL, NULL, NULL
4477  },
4478 
4479  {
4480  {"external_pid_file", PGC_POSTMASTER, FILE_LOCATIONS,
4481  gettext_noop("Writes the postmaster PID to the specified file."),
4482  NULL,
4484  },
4486  NULL,
4487  check_canonical_path, NULL, NULL
4488  },
4489 
4490  {
4491  {"ssl_library", PGC_INTERNAL, PRESET_OPTIONS,
4492  gettext_noop("Shows the name of the SSL library."),
4493  NULL,
4495  },
4496  &ssl_library,
4497 #ifdef USE_SSL
4498  "OpenSSL",
4499 #else
4500  "",
4501 #endif
4502  NULL, NULL, NULL
4503  },
4504 
4505  {
4506  {"ssl_cert_file", PGC_SIGHUP, CONN_AUTH_SSL,
4507  gettext_noop("Location of the SSL server certificate file."),
4508  NULL
4509  },
4510  &ssl_cert_file,
4511  "server.crt",
4512  NULL, NULL, NULL
4513  },
4514 
4515  {
4516  {"ssl_key_file", PGC_SIGHUP, CONN_AUTH_SSL,
4517  gettext_noop("Location of the SSL server private key file."),
4518  NULL
4519  },
4520  &ssl_key_file,
4521  "server.key",
4522  NULL, NULL, NULL
4523  },
4524 
4525  {
4526  {"ssl_ca_file", PGC_SIGHUP, CONN_AUTH_SSL,
4527  gettext_noop("Location of the SSL certificate authority file."),
4528  NULL
4529  },
4530  &ssl_ca_file,
4531  "",
4532  NULL, NULL, NULL
4533  },
4534 
4535  {
4536  {"ssl_crl_file", PGC_SIGHUP, CONN_AUTH_SSL,
4537  gettext_noop("Location of the SSL certificate revocation list file."),
4538  NULL
4539  },
4540  &ssl_crl_file,
4541  "",
4542  NULL, NULL, NULL
4543  },
4544 
4545  {
4546  {"ssl_crl_dir", PGC_SIGHUP, CONN_AUTH_SSL,
4547  gettext_noop("Location of the SSL certificate revocation list directory."),
4548  NULL
4549  },
4550  &ssl_crl_dir,
4551  "",
4552  NULL, NULL, NULL
4553  },
4554 
4555  {
4556  {"synchronous_standby_names", PGC_SIGHUP, REPLICATION_PRIMARY,
4557  gettext_noop("Number of synchronous standbys and list of names of potential synchronous ones."),
4558  NULL,
4560  },
4562  "",
4564  },
4565 
4566  {
4567  {"default_text_search_config", PGC_USERSET, CLIENT_CONN_LOCALE,
4568  gettext_noop("Sets default text search configuration."),
4569  NULL
4570  },
4571  &TSCurrentConfig,
4572  "pg_catalog.simple",
4574  },
4575 
4576  {
4577  {"ssl_ciphers", PGC_SIGHUP, CONN_AUTH_SSL,
4578  gettext_noop("Sets the list of allowed SSL ciphers."),
4579  NULL,
4581  },
4582  &SSLCipherSuites,
4583 #ifdef USE_OPENSSL
4584  "HIGH:MEDIUM:+3DES:!aNULL",
4585 #else
4586  "none",
4587 #endif
4588  NULL, NULL, NULL
4589  },
4590 
4591  {
4592  {"ssl_ecdh_curve", PGC_SIGHUP, CONN_AUTH_SSL,
4593  gettext_noop("Sets the curve to use for ECDH."),
4594  NULL,
4596  },
4597  &SSLECDHCurve,
4598 #ifdef USE_SSL
4599  "prime256v1",
4600 #else
4601  "none",
4602 #endif
4603  NULL, NULL, NULL
4604  },
4605 
4606  {
4607  {"ssl_dh_params_file", PGC_SIGHUP, CONN_AUTH_SSL,
4608  gettext_noop("Location of the SSL DH parameters file."),
4609  NULL,
4611  },
4613  "",
4614  NULL, NULL, NULL
4615  },
4616 
4617  {
4618  {"ssl_passphrase_command", PGC_SIGHUP, CONN_AUTH_SSL,
4619  gettext_noop("Command to obtain passphrases for SSL."),
4620  NULL,
4622  },
4624  "",
4625  NULL, NULL, NULL
4626  },
4627 
4628  {
4629  {"application_name", PGC_USERSET, LOGGING_WHAT,
4630  gettext_noop("Sets the application name to be reported in statistics and logs."),
4631  NULL,
4633  },
4635  "",
4637  },
4638 
4639  {
4640  {"cluster_name", PGC_POSTMASTER, PROCESS_TITLE,
4641  gettext_noop("Sets the name of the cluster, which is included in the process title."),
4642  NULL,
4643  GUC_IS_NAME
4644  },
4645  &cluster_name,
4646  "",
4647  check_cluster_name, NULL, NULL
4648  },
4649 
4650  {
4651  {"wal_consistency_checking", PGC_SUSET, DEVELOPER_OPTIONS,
4652  gettext_noop("Sets the WAL resource managers for which WAL consistency checks are done."),
4653  gettext_noop("Full-page images will be logged for all data blocks and cross-checked against the results of WAL replay."),
4655  },
4657  "",
4659  },
4660 
4661  {
4662  {"jit_provider", PGC_POSTMASTER, CLIENT_CONN_PRELOAD,
4663  gettext_noop("JIT provider to use."),
4664  NULL,
4666  },
4667  &jit_provider,
4668  "llvmjit",
4669  NULL, NULL, NULL
4670  },
4671 
4672  {
4673  {"backtrace_functions", PGC_SUSET, DEVELOPER_OPTIONS,
4674  gettext_noop("Log backtrace for errors in these functions."),
4675  NULL,
4677  },
4679  "",
4681  },
4682 
4683  {
4684  {"debug_io_direct", PGC_POSTMASTER, DEVELOPER_OPTIONS,
4685  gettext_noop("Use direct I/O for file access."),
4686  NULL,
4688  },
4690  "",
4692  },
4693 
4694  {
4695  {"standby_slot_names", PGC_SIGHUP, REPLICATION_PRIMARY,
4696  gettext_noop("Lists streaming replication standby server slot "
4697  "names that logical WAL sender processes will wait for."),
4698  gettext_noop("Logical WAL sender processes will send decoded "
4699  "changes to plugins only after the specified "
4700  "replication slots confirm receiving WAL."),
4702  },
4704  "",
4706  },
4707 
4708  /* End-of-list marker */
4709  {
4710  {NULL, 0, 0, NULL, NULL}, NULL, NULL, NULL, NULL, NULL
4711  }
4712 };
4713 
4714 
4716 {
4717  {
4718  {"backslash_quote", PGC_USERSET, COMPAT_OPTIONS_PREVIOUS,
4719  gettext_noop("Sets whether \"\\'\" is allowed in string literals."),
4720  NULL
4721  },
4722  &backslash_quote,
4724  NULL, NULL, NULL
4725  },
4726 
4727  {
4728  {"bytea_output", PGC_USERSET, CLIENT_CONN_STATEMENT,
4729  gettext_noop("Sets the output format for bytea."),
4730  NULL
4731  },
4732  &bytea_output,
4734  NULL, NULL, NULL
4735  },
4736 
4737  {
4738  {"client_min_messages", PGC_USERSET, CLIENT_CONN_STATEMENT,
4739  gettext_noop("Sets the message levels that are sent to the client."),
4740  gettext_noop("Each level includes all the levels that follow it. The later"
4741  " the level, the fewer messages are sent.")
4742  },
4745  NULL, NULL, NULL
4746  },
4747 
4748  {
4749  {"compute_query_id", PGC_SUSET, STATS_MONITORING,
4750  gettext_noop("Enables in-core computation of query identifiers."),
4751  NULL
4752  },
4755  NULL, NULL, NULL
4756  },
4757 
4758  {
4759  {"constraint_exclusion", PGC_USERSET, QUERY_TUNING_OTHER,
4760  gettext_noop("Enables the planner to use constraints to optimize queries."),
4761  gettext_noop("Table scans will be skipped if their constraints"
4762  " guarantee that no rows match the query."),
4763  GUC_EXPLAIN
4764  },
4767  NULL, NULL, NULL
4768  },
4769 
4770  {
4771  {"default_toast_compression", PGC_USERSET, CLIENT_CONN_STATEMENT,
4772  gettext_noop("Sets the default compression method for compressible values."),
4773  NULL
4774  },
4778  NULL, NULL, NULL
4779  },
4780 
4781  {
4782  {"default_transaction_isolation", PGC_USERSET, CLIENT_CONN_STATEMENT,
4783  gettext_noop("Sets the transaction isolation level of each new transaction."),
4784  NULL
4785  },
4788  NULL, NULL, NULL
4789  },
4790 
4791  {
4792  {"transaction_isolation", PGC_USERSET, CLIENT_CONN_STATEMENT,
4793  gettext_noop("Sets the current transaction's isolation level."),
4794  NULL,
4796  },
4797  &XactIsoLevel,
4799  check_transaction_isolation, NULL, NULL
4800  },
4801 
4802  {
4803  {"IntervalStyle", PGC_USERSET, CLIENT_CONN_LOCALE,
4804  gettext_noop("Sets the display format for interval values."),
4805  NULL,
4806  GUC_REPORT
4807  },
4808  &IntervalStyle,
4810  NULL, NULL, NULL
4811  },
4812 
4813  {
4814  {"icu_validation_level", PGC_USERSET, CLIENT_CONN_LOCALE,
4815  gettext_noop("Log level for reporting invalid ICU locale strings."),
4816  NULL
4817  },
4820  NULL, NULL, NULL
4821  },
4822 
4823  {
4824  {"log_error_verbosity", PGC_SUSET, LOGGING_WHAT,
4825  gettext_noop("Sets the verbosity of logged messages."),
4826  NULL
4827  },
4830  NULL, NULL, NULL
4831  },
4832 
4833  {
4834  {"log_min_messages", PGC_SUSET, LOGGING_WHEN,
4835  gettext_noop("Sets the message levels that are logged."),
4836  gettext_noop("Each level includes all the levels that follow it. The later"
4837  " the level, the fewer messages are sent.")
4838  },
4841  NULL, NULL, NULL
4842  },
4843 
4844  {
4845  {"log_min_error_statement", PGC_SUSET, LOGGING_WHEN,
4846  gettext_noop("Causes all statements generating error at or above this level to be logged."),
4847  gettext_noop("Each level includes all the levels that follow it. The later"
4848  " the level, the fewer messages are sent.")
4849  },
4852  NULL, NULL, NULL
4853  },
4854 
4855  {
4856  {"log_statement", PGC_SUSET, LOGGING_WHAT,
4857  gettext_noop("Sets the type of statements logged."),
4858  NULL
4859  },
4860  &log_statement,
4862  NULL, NULL, NULL
4863  },
4864 
4865  {
4866  {"syslog_facility", PGC_SIGHUP, LOGGING_WHERE,
4867  gettext_noop("Sets the syslog \"facility\" to be used when syslog enabled."),
4868  NULL
4869  },
4870  &syslog_facility,
4873  NULL, assign_syslog_facility, NULL
4874  },
4875 
4876  {
4877  {"session_replication_role", PGC_SUSET, CLIENT_CONN_STATEMENT,
4878  gettext_noop("Sets the session's behavior for triggers and rewrite rules."),
4879  NULL
4880  },
4884  },
4885 
4886  {
4887  {"synchronous_commit", PGC_USERSET, WAL_SETTINGS,
4888  gettext_noop("Sets the current transaction's synchronization level."),
4889  NULL
4890  },
4893  NULL, assign_synchronous_commit, NULL
4894  },
4895 
4896  {
4897  {"archive_mode", PGC_POSTMASTER, WAL_ARCHIVING,
4898  gettext_noop("Allows archiving of WAL files using \"archive_command\"."),
4899  NULL
4900  },
4901  &XLogArchiveMode,
4903  NULL, NULL, NULL
4904  },
4905 
4906  {
4907  {"recovery_target_action", PGC_POSTMASTER, WAL_RECOVERY_TARGET,
4908  gettext_noop("Sets the action to perform upon reaching the recovery target."),
4909  NULL
4910  },
4913  NULL, NULL, NULL
4914  },
4915 
4916  {
4917  {"track_functions", PGC_SUSET, STATS_CUMULATIVE,
4918  gettext_noop("Collects function-level statistics on database activity."),
4919  NULL
4920  },
4923  NULL, NULL, NULL
4924  },
4925 
4926 
4927  {
4928  {"stats_fetch_consistency", PGC_USERSET, STATS_CUMULATIVE,
4929  gettext_noop("Sets the consistency of accesses to statistics data."),
4930  NULL
4931  },
4934  NULL, assign_stats_fetch_consistency, NULL
4935  },
4936 
4937  {
4938  {"wal_compression", PGC_SUSET, WAL_SETTINGS,
4939  gettext_noop("Compresses full-page writes written in WAL file with specified method."),
4940  NULL
4941  },
4942  &wal_compression,
4944  NULL, NULL, NULL
4945  },
4946 
4947  {
4948  {"wal_level", PGC_POSTMASTER, WAL_SETTINGS,
4949  gettext_noop("Sets the level of information written to the WAL."),
4950  NULL
4951  },
4952  &wal_level,
4954  NULL, NULL, NULL
4955  },
4956 
4957  {
4958  {"dynamic_shared_memory_type", PGC_POSTMASTER, RESOURCES_MEM,
4959  gettext_noop("Selects the dynamic shared memory implementation used."),
4960  NULL
4961  },
4964  NULL, NULL, NULL
4965  },
4966 
4967  {
4968  {"shared_memory_type", PGC_POSTMASTER, RESOURCES_MEM,
4969  gettext_noop("Selects the shared memory implementation used for the main shared memory region."),
4970  NULL
4971  },
4974  NULL, NULL, NULL
4975  },
4976 
4977  {
4978  {"wal_sync_method", PGC_SIGHUP, WAL_SETTINGS,
4979  gettext_noop("Selects the method used for forcing WAL updates to disk."),
4980  NULL
4981  },
4982  &wal_sync_method,
4984  NULL, assign_wal_sync_method, NULL
4985  },
4986 
4987  {
4988  {"xmlbinary", PGC_USERSET, CLIENT_CONN_STATEMENT,
4989  gettext_noop("Sets how binary values are to be encoded in XML."),
4990  NULL
4991  },
4992  &xmlbinary,
4994  NULL, NULL, NULL
4995  },
4996 
4997  {
4998  {"xmloption", PGC_USERSET, CLIENT_CONN_STATEMENT,
4999  gettext_noop("Sets whether XML data in implicit parsing and serialization "
5000  "operations is to be considered as documents or content fragments."),
5001  NULL
5002  },
5003  &xmloption,
5005  NULL, NULL, NULL
5006  },
5007 
5008  {
5009  {"huge_pages", PGC_POSTMASTER, RESOURCES_MEM,
5010  gettext_noop("Use of huge pages on Linux or Windows."),
5011  NULL
5012  },
5013  &huge_pages,
5015  NULL, NULL, NULL
5016  },
5017 
5018  {
5019  {"huge_pages_status", PGC_INTERNAL, PRESET_OPTIONS,
5020  gettext_noop("Indicates the status of huge pages."),
5021  NULL,
5023  },
5026  NULL, NULL, NULL
5027  },
5028 
5029  {
5030  {"recovery_prefetch", PGC_SIGHUP, WAL_RECOVERY,
5031  gettext_noop("Prefetch referenced blocks during recovery."),
5032  gettext_noop("Look ahead in the WAL to find references to uncached data.")
5033  },
5037  },
5038 
5039  {
5040  {"debug_parallel_query", PGC_USERSET, DEVELOPER_OPTIONS,
5041  gettext_noop("Forces the planner's use parallel query nodes."),
5042  gettext_noop("This can be useful for testing the parallel query infrastructure "
5043  "by forcing the planner to generate plans that contain nodes "
5044  "that perform tuple communication between workers and the main process."),
5046  },
5049  NULL, NULL, NULL
5050  },
5051 
5052  {
5053  {"password_encryption", PGC_USERSET, CONN_AUTH_AUTH,
5054  gettext_noop("Chooses the algorithm for encrypting passwords."),
5055  NULL
5056  },
5059  NULL, NULL, NULL
5060  },
5061 
5062  {
5063  {"plan_cache_mode", PGC_USERSET, QUERY_TUNING_OTHER,
5064  gettext_noop("Controls the planner's selection of custom or generic plan."),
5065  gettext_noop("Prepared statements can have custom and generic plans, and the planner "
5066  "will attempt to choose which is better. This can be set to override "
5067  "the default behavior."),
5068  GUC_EXPLAIN
5069  },
5070  &plan_cache_mode,
5072  NULL, NULL, NULL
5073  },
5074 
5075  {
5076  {"ssl_min_protocol_version", PGC_SIGHUP, CONN_AUTH_SSL,
5077  gettext_noop("Sets the minimum SSL/TLS protocol version to use."),
5078  NULL,
5080  },
5083  ssl_protocol_versions_info + 1, /* don't allow PG_TLS_ANY */
5084  NULL, NULL, NULL
5085  },
5086 
5087  {
5088  {"ssl_max_protocol_version", PGC_SIGHUP, CONN_AUTH_SSL,
5089  gettext_noop("Sets the maximum SSL/TLS protocol version to use."),
5090  NULL,
5092  },
5094  PG_TLS_ANY,
5096  NULL, NULL, NULL
5097  },
5098 
5099  {
5100  {"recovery_init_sync_method", PGC_SIGHUP, ERROR_HANDLING_OPTIONS,
5101  gettext_noop("Sets the method for synchronizing the data directory before crash recovery."),
5102  },
5105  NULL, NULL, NULL
5106  },
5107 
5108  {
5109  {"debug_logical_replication_streaming", PGC_USERSET, DEVELOPER_OPTIONS,
5110  gettext_noop("Forces immediate streaming or serialization of changes in large transactions."),
5111  gettext_noop("On the publisher, it allows streaming or serializing each change in logical decoding. "
5112  "On the subscriber, it allows serialization of all changes to files and notifies the "
5113  "parallel apply workers to read and apply them at the end of the transaction."),
5115  },
5118  NULL, NULL, NULL
5119  },
5120 
5121  /* End-of-list marker */
5122  {
5123  {NULL, 0, 0, NULL, NULL}, NULL, 0, NULL, NULL, NULL, NULL
5124  }
5125 };
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:192
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:127
int autovacuum_naptime
Definition: autovacuum.c:119
double autovacuum_vac_scale
Definition: autovacuum.c:121
int Log_autovacuum_min_duration
Definition: autovacuum.c:132
int autovacuum_anl_thresh
Definition: autovacuum.c:124
bool check_autovacuum_work_mem(int *newval, void **extra, GucSource source)
Definition: autovacuum.c:3323
int autovacuum_vac_cost_limit
Definition: autovacuum.c:130
int autovacuum_max_workers
Definition: autovacuum.c:117
int autovacuum_freeze_max_age
Definition: autovacuum.c:126
double autovacuum_vac_cost_delay
Definition: autovacuum.c:129
int autovacuum_vac_thresh
Definition: autovacuum.c:120
int autovacuum_work_mem
Definition: autovacuum.c:118
double autovacuum_anl_scale
Definition: autovacuum.c:125
int autovacuum_vac_ins_thresh
Definition: autovacuum.c:122
bool autovacuum_start_daemon
Definition: autovacuum.c:116
double autovacuum_vac_ins_scale
Definition: autovacuum.c:123
bool check_default_tablespace(char **newval, void **extra, GucSource source)
Definition: tablespace.c:1091
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
bool allow_in_place_tablespaces
Definition: tablespace.c:85
int Password_encryption
Definition: user.c:85
bool check_createrole_self_grant(char **newval, void **extra, GucSource source)
Definition: user.c:2515
void assign_createrole_self_grant(const char *newval, void *extra)
Definition: user.c:2566
char * createrole_self_grant
Definition: user.c:86
const char * show_unix_socket_permissions(void)
Definition: variable.c:1157
void assign_application_name(const char *newval, void *extra)
Definition: variable.c:1075
bool check_bonjour(bool *newval, void **extra, GucSource source)
Definition: variable.c:1172
bool check_maintenance_io_concurrency(int *newval, void **extra, GucSource source)
Definition: variable.c:1213
void assign_session_authorization(const char *newval, void *extra)
Definition: variable.c:885
bool check_transaction_deferrable(bool *newval, void **extra, GucSource source)
Definition: variable.c:620
bool check_canonical_path(char **newval, void **extra, GucSource source)
Definition: variable.c:1028
const char * show_timezone(void)
Definition: variable.c:390
bool check_transaction_isolation(int *newval, void **extra, GucSource source)
Definition: variable.c:583
bool check_default_with_oids(bool *newval, void **extra, GucSource source)
Definition: variable.c:1185
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:1200
bool check_application_name(char **newval, void **extra, GucSource source)
Definition: variable.c:1049
void assign_timezone(const char *newval, void *extra)
Definition: variable.c:381
bool check_role(char **newval, void **extra, GucSource source)
Definition: variable.c:907
bool check_cluster_name(char **newval, void **extra, GucSource source)
Definition: variable.c:1085
const char * show_log_timezone(void)
Definition: variable.c:463
bool check_session_authorization(char **newval, void **extra, GucSource source)
Definition: variable.c:802
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:1111
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:756
void assign_role(const char *newval, void *extra)
Definition: variable.c:995
bool check_timezone(char **newval, void **extra, GucSource source)
Definition: variable.c:261
const char * show_random_seed(void)
Definition: variable.c:669
bool check_ssl(bool *newval, void **extra, GucSource source)
Definition: variable.c:1226
void assign_datestyle(const char *newval, void *extra)
Definition: variable.c:244
void assign_random_seed(double newval, void *extra)
Definition: variable.c:660
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:648
const char * show_role(void)
Definition: variable.c:1003
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:680
const char * show_log_file_mode(void)
Definition: variable.c:1145
const char * show_data_directory_mode(void)
Definition: variable.c:1133
void assign_log_timezone(const char *newval, void *extra)
Definition: variable.c:454
int log_startup_progress_interval
Definition: startup.c:76
bool pgstat_track_activities
int pgstat_track_activity_query_size
char * ssl_crl_dir
Definition: be-secure.c:40
char * ssl_dh_params_file
Definition: be-secure.c:41
int ssl_min_protocol_version
Definition: be-secure.c:58
char * ssl_cert_file
Definition: be-secure.c:36
bool SSLPreferServerCiphers
Definition: be-secure.c:56
char * ssl_library
Definition: be-secure.c:35
int ssl_max_protocol_version
Definition: be-secure.c:59
char * ssl_passphrase_command
Definition: be-secure.c:42
bool ssl_passphrase_command_supports_reload
Definition: be-secure.c:43
char * SSLCipherSuites
Definition: be-secure.c:50
char * SSLECDHCurve
Definition: be-secure.c:53
char * ssl_key_file
Definition: be-secure.c:37
char * ssl_crl_file
Definition: be-secure.c:39
char * ssl_ca_file
Definition: be-secure.c:38
#define MAX_PARALLEL_WORKER_LIMIT
int BgWriterDelay
Definition: bgwriter.c:57
bool track_io_timing
Definition: bufmgr.c:142
bool zero_damaged_pages
Definition: bufmgr.c:139
int bgwriter_flush_after
Definition: bufmgr.c:171
int checkpoint_flush_after
Definition: bufmgr.c:170
double bgwriter_lru_multiplier
Definition: bufmgr.c:141
int backend_flush_after
Definition: bufmgr.c:172
int maintenance_io_concurrency
Definition: bufmgr.c:157
int effective_io_concurrency
Definition: bufmgr.c:150
int io_combine_limit
Definition: bufmgr.c:164
int bgwriter_lru_maxpages
Definition: bufmgr.c:140
#define DEFAULT_IO_COMBINE_LIMIT
Definition: bufmgr.h:169
#define MAX_IO_COMBINE_LIMIT
Definition: bufmgr.h:168
#define MAX_IO_CONCURRENCY
Definition: bufmgr.h:185
#define DEFAULT_EFFECTIVE_IO_CONCURRENCY
Definition: bufmgr.h:162
#define DEFAULT_MAINTENANCE_IO_CONCURRENCY
Definition: bufmgr.h:163
@ BYTEA_OUTPUT_HEX
Definition: bytea.h:22
@ BYTEA_OUTPUT_ESCAPE
Definition: bytea.h:21
#define Min(x, y)
Definition: c.h:1004
#define gettext_noop(x)
Definition: c.h:1196
#define lengthof(array)
Definition: c.h:788
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:73
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:120
double cpu_operator_cost
Definition: costsize.c:123
bool enable_partitionwise_aggregate
Definition: costsize.c:149
bool enable_seqscan
Definition: costsize.c:134
int max_parallel_workers_per_gather
Definition: costsize.c:132
bool enable_memoize
Definition: costsize.c:144
double parallel_setup_cost
Definition: costsize.c:125
double recursive_worktable_factor
Definition: costsize.c:126
bool enable_gathermerge
Definition: costsize.c:147
double parallel_tuple_cost
Definition: costsize.c:124
bool enable_indexonlyscan
Definition: costsize.c:136
bool enable_tidscan
Definition: costsize.c:138
double cpu_tuple_cost
Definition: costsize.c:121
bool enable_material
Definition: costsize.c:143
bool enable_hashjoin
Definition: costsize.c:146
bool enable_mergejoin
Definition: costsize.c:145
bool enable_presorted_aggregate
Definition: costsize.c:153
bool enable_parallel_hash
Definition: costsize.c:151
bool enable_partitionwise_join
Definition: costsize.c:148
bool enable_async_append
Definition: costsize.c:154
double seq_page_cost
Definition: costsize.c:119
bool enable_parallel_append
Definition: costsize.c:150
bool enable_nestloop
Definition: costsize.c:142
bool enable_bitmapscan
Definition: costsize.c:137
bool enable_hashagg
Definition: costsize.c:141
bool enable_partition_pruning
Definition: costsize.c:152
bool enable_sort
Definition: costsize.c:139
int effective_cache_size
Definition: costsize.c:128
double cpu_index_tuple_cost
Definition: costsize.c:122
bool enable_indexscan
Definition: costsize.c:135
bool enable_incremental_sort
Definition: costsize.c:140
@ PASSWORD_TYPE_SCRAM_SHA_256
Definition: crypt.h:31
@ PASSWORD_TYPE_MD5
Definition: crypt.h:30
#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:77
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:2302
void assign_syslog_ident(const char *newval, void *extra)
Definition: elog.c:2270
bool syslog_split_messages
Definition: elog.c:115
void assign_backtrace_functions(const char *newval, void *extra)
Definition: elog.c:2190
int Log_error_verbosity
Definition: elog.c:110
bool check_backtrace_functions(char **newval, void **extra, GucSource source)
Definition: elog.c:2131
bool check_log_destination(char **newval, void **extra, GucSource source)
Definition: elog.c:2199
bool syslog_sequence_numbers
Definition: elog.c:114
char * Log_destination_string
Definition: elog.c:113
char * Log_line_prefix
Definition: elog.c:111
void assign_log_destination(const char *newval, void *extra)
Definition: elog.c:2261
@ PGERROR_VERBOSE
Definition: elog.h:481
@ PGERROR_DEFAULT
Definition: elog.h:480
@ PGERROR_TERSE
Definition: elog.h:479
#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:146
int recovery_init_sync_method
Definition: fd.c:165
void assign_debug_io_direct(const char *newval, void *extra)
Definition: fd.c:4024
bool data_sync_retry
Definition: fd.c:162
bool check_debug_io_direct(char **newval, void **extra, GucSource source)
Definition: fd.c:3942
@ 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:41
#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:164
double hash_mem_multiplier
Definition: globals.c:129
int VacuumCostLimit
Definition: globals.c:151
int max_parallel_maintenance_workers
Definition: globals.c:131
int NBuffers
Definition: globals.c:139
int transaction_buffers
Definition: globals.c:168
bool enableFsync
Definition: globals.c:126
int VacuumCostPageMiss
Definition: globals.c:149
int MaxConnections
Definition: globals.c:140
int multixact_member_buffers
Definition: globals.c:163
int data_directory_mode
Definition: globals.c:74
bool allowSystemTableMods
Definition: globals.c:127
int maintenance_work_mem
Definition: globals.c:130
int max_parallel_workers
Definition: globals.c:142
int VacuumCostPageDirty
Definition: globals.c:150
bool ExitOnAnyError
Definition: globals.c:120
int IntervalStyle
Definition: globals.c:124
int notify_buffers
Definition: globals.c:165
int work_mem
Definition: globals.c:128
int VacuumBufferUsageLimit
Definition: globals.c:146
int VacuumCostPageHit
Definition: globals.c:148
int commit_timestamp_buffers
Definition: globals.c:162
double VacuumCostDelay
Definition: globals.c:152
int subtransaction_buffers
Definition: globals.c:167
int max_worker_processes
Definition: globals.c:141
int serializable_buffers
Definition: globals.c:166
#define GUC_UNIT_MB
Definition: guc.h:230
#define GUC_EXPLAIN
Definition: guc.h:215
#define GUC_SUPERUSER_ONLY
Definition: guc.h:220
#define GUC_NO_RESET_ALL
Definition: guc.h:214
#define GUC_NO_RESET
Definition: guc.h:213
#define GUC_LIST_QUOTE
Definition: guc.h:211
#define GUC_UNIT_MS
Definition: guc.h:234
#define GUC_NOT_WHILE_SEC_REST
Definition: guc.h:222
#define GUC_UNIT_BLOCKS
Definition: guc.h:228
#define GUC_UNIT_XBLOCKS
Definition: guc.h:229
#define GUC_IS_NAME
Definition: guc.h:221
#define GUC_DISALLOW_IN_FILE
Definition: guc.h:218
#define GUC_LIST_INPUT
Definition: guc.h:210
#define GUC_RUNTIME_COMPUTED
Definition: guc.h:225
@ PGC_S_DEFAULT
Definition: guc.h:109
@ PGC_S_DYNAMIC_DEFAULT
Definition: guc.h:110
@ PGC_S_FILE
Definition: guc.h:112
@ PGC_S_GLOBAL
Definition: guc.h:114
@ PGC_S_DATABASE
Definition: guc.h:115
@ PGC_S_OVERRIDE
Definition: guc.h:119
@ PGC_S_ARGV
Definition: guc.h:113
@ PGC_S_SESSION
Definition: guc.h:122
@ PGC_S_CLIENT
Definition: guc.h:118
@ PGC_S_DATABASE_USER
Definition: guc.h:117
@ PGC_S_ENV_VAR
Definition: guc.h:111
@ PGC_S_USER
Definition: guc.h:116
@ PGC_S_TEST
Definition: guc.h:121
@ PGC_S_INTERACTIVE
Definition: guc.h:120
#define GUC_NO_SHOW_ALL
Definition: guc.h:212
#define GUC_DISALLOW_IN_AUTO_FILE
Definition: guc.h:223
@ PGC_SUSET
Definition: guc.h:74
@ PGC_INTERNAL
Definition: guc.h:69
@ PGC_USERSET
Definition: guc.h:75
@ PGC_SU_BACKEND
Definition: guc.h:72
@ PGC_POSTMASTER
Definition: guc.h:70
@ PGC_SIGHUP
Definition: guc.h:71
@ PGC_BACKEND
Definition: guc.h:73
#define GUC_UNIT_BYTE
Definition: guc.h:231
#define GUC_NOT_IN_SAMPLE
Definition: guc.h:217
#define GUC_UNIT_S
Definition: guc.h:235
#define GUC_REPORT
Definition: guc.h:216
#define MAX_KILOBYTES
Definition: guc.h:25
#define GUC_UNIT_KB