PostgreSQL Source Code git master
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
guc.h
Go to the documentation of this file.
1/*--------------------------------------------------------------------
2 * guc.h
3 *
4 * External declarations pertaining to Grand Unified Configuration.
5 *
6 * Copyright (c) 2000-2025, PostgreSQL Global Development Group
7 * Written by Peter Eisentraut <peter_e@gmx.net>.
8 *
9 * src/include/utils/guc.h
10 *--------------------------------------------------------------------
11 */
12#ifndef GUC_H
13#define GUC_H
14
15#include "nodes/parsenodes.h"
16#include "tcop/dest.h"
17#include "utils/array.h"
18
19
20/*
21 * Maximum for integer GUC variables that are measured in kilobytes of memory.
22 * This value is chosen to ensure that the corresponding number of bytes fits
23 * into a variable of type size_t or ssize_t. Be sure to compute the number
24 * of bytes like "guc_var * (Size) 1024" to avoid int-width overflow.
25 */
26#if SIZEOF_SIZE_T > 4
27#define MAX_KILOBYTES INT_MAX
28#else
29#define MAX_KILOBYTES (INT_MAX / 1024)
30#endif
31
32/*
33 * Automatic configuration file name for ALTER SYSTEM.
34 * This file will be used to store values of configuration parameters
35 * set by ALTER SYSTEM command.
36 */
37#define PG_AUTOCONF_FILENAME "postgresql.auto.conf"
38
39/*
40 * Certain options can only be set at certain times. The rules are
41 * like this:
42 *
43 * INTERNAL options cannot be set by the user at all, but only through
44 * internal processes ("server_version" is an example). These are GUC
45 * variables only so they can be shown by SHOW, etc.
46 *
47 * POSTMASTER options can only be set when the postmaster starts,
48 * either from the configuration file or the command line.
49 *
50 * SIGHUP options can only be set at postmaster startup or by changing
51 * the configuration file and sending the HUP signal to the postmaster
52 * or a backend process. (Notice that the signal receipt will not be
53 * evaluated immediately. The postmaster and the backend check it at a
54 * certain point in their main loop. It's safer to wait than to read a
55 * file asynchronously.)
56 *
57 * BACKEND and SU_BACKEND options can only be set at postmaster startup,
58 * from the configuration file, or by client request in the connection
59 * startup packet (e.g., from libpq's PGOPTIONS variable). SU_BACKEND
60 * options can be set from the startup packet only when the user is a
61 * superuser. Furthermore, an already-started backend will ignore changes
62 * to such an option in the configuration file. The idea is that these
63 * options are fixed for a given backend once it's started, but they can
64 * vary across backends.
65 *
66 * SUSET options can be set at postmaster startup, with the SIGHUP
67 * mechanism, or from the startup packet or SQL if you're a superuser.
68 *
69 * USERSET options can be set by anyone any time.
70 */
71typedef enum
72{
81
82/*
83 * The following type records the source of the current setting. A
84 * new setting can only take effect if the previous setting had the
85 * same or lower level. (E.g, changing the config file doesn't
86 * override the postmaster command line.) Tracking the source allows us
87 * to process sources in any convenient order without affecting results.
88 * Sources <= PGC_S_OVERRIDE will set the default used by RESET, as well
89 * as the current value.
90 *
91 * PGC_S_INTERACTIVE isn't actually a source value, but is the
92 * dividing line between "interactive" and "non-interactive" sources for
93 * error reporting purposes.
94 *
95 * PGC_S_TEST is used when testing values to be used later. For example,
96 * ALTER DATABASE/ROLE tests proposed per-database or per-user defaults this
97 * way, and CREATE FUNCTION tests proposed function SET clauses this way.
98 * This is an interactive case, but it needs its own source value because
99 * some assign hooks need to make different validity checks in this case.
100 * In particular, references to nonexistent database objects generally
101 * shouldn't throw hard errors in this case, at most NOTICEs, since the
102 * objects might exist by the time the setting is used for real.
103 *
104 * When setting the value of a non-compile-time-constant PGC_INTERNAL option,
105 * source == PGC_S_DYNAMIC_DEFAULT should typically be used so that the value
106 * will show as "default" in pg_settings. If there is a specific reason not
107 * to want that, use source == PGC_S_OVERRIDE.
108 *
109 * NB: see GucSource_Names in guc.c if you change this.
110 */
111typedef enum
112{
113 PGC_S_DEFAULT, /* hard-wired default ("boot_val") */
114 PGC_S_DYNAMIC_DEFAULT, /* default computed during initialization */
115 PGC_S_ENV_VAR, /* postmaster environment variable */
116 PGC_S_FILE, /* postgresql.conf */
117 PGC_S_ARGV, /* postmaster command line */
118 PGC_S_GLOBAL, /* global in-database setting */
119 PGC_S_DATABASE, /* per-database setting */
120 PGC_S_USER, /* per-user setting */
121 PGC_S_DATABASE_USER, /* per-user-and-database setting */
122 PGC_S_CLIENT, /* from client connection request */
123 PGC_S_OVERRIDE, /* special case to forcibly set default */
124 PGC_S_INTERACTIVE, /* dividing line for error reporting */
125 PGC_S_TEST, /* test per-database or per-user setting */
126 PGC_S_SESSION, /* SET command */
127} GucSource;
128
129/*
130 * Parsing the configuration file(s) will return a list of name-value pairs
131 * with source location info. We also abuse this data structure to carry
132 * error reports about the config files. An entry reporting an error will
133 * have errmsg != NULL, and might have NULLs for name, value, and/or filename.
134 *
135 * If "ignore" is true, don't attempt to apply the item (it might be an error
136 * report, or an item we determined to be duplicate). "applied" is set true
137 * if we successfully applied, or could have applied, the setting.
138 */
139typedef struct ConfigVariable
140{
141 char *name;
142 char *value;
143 char *errmsg;
144 char *filename;
146 bool ignore;
150
152
153extern bool ParseConfigFile(const char *config_file, bool strict,
154 const char *calling_file, int calling_lineno,
155 int depth, int elevel,
156 ConfigVariable **head_p, ConfigVariable **tail_p);
157extern bool ParseConfigFp(FILE *fp, const char *config_file,
158 int depth, int elevel,
159 ConfigVariable **head_p, ConfigVariable **tail_p);
160extern bool ParseConfigDirectory(const char *includedir,
161 const char *calling_file, int calling_lineno,
162 int depth, int elevel,
163 ConfigVariable **head_p,
164 ConfigVariable **tail_p);
166extern char *DeescapeQuotedString(const char *s);
167
168/*
169 * The possible values of an enum variable are specified by an array of
170 * name-value pairs. The "hidden" flag means the value is accepted but
171 * won't be displayed when guc.c is asked for a list of acceptable values.
172 */
174{
175 const char *name;
176 int val;
177 bool hidden;
178};
179
180/*
181 * Signatures for per-variable check/assign/show hook functions
182 */
183typedef bool (*GucBoolCheckHook) (bool *newval, void **extra, GucSource source);
184typedef bool (*GucIntCheckHook) (int *newval, void **extra, GucSource source);
185typedef bool (*GucRealCheckHook) (double *newval, void **extra, GucSource source);
186typedef bool (*GucStringCheckHook) (char **newval, void **extra, GucSource source);
187typedef bool (*GucEnumCheckHook) (int *newval, void **extra, GucSource source);
188
189typedef void (*GucBoolAssignHook) (bool newval, void *extra);
190typedef void (*GucIntAssignHook) (int newval, void *extra);
191typedef void (*GucRealAssignHook) (double newval, void *extra);
192typedef void (*GucStringAssignHook) (const char *newval, void *extra);
193typedef void (*GucEnumAssignHook) (int newval, void *extra);
194
195typedef const char *(*GucShowHook) (void);
196
197/*
198 * Miscellaneous
199 */
200typedef enum
201{
202 /* Types of set_config_option actions */
203 GUC_ACTION_SET, /* regular SET command */
204 GUC_ACTION_LOCAL, /* SET LOCAL command */
205 GUC_ACTION_SAVE, /* function SET option, or temp assignment */
206} GucAction;
207
208#define GUC_QUALIFIER_SEPARATOR '.'
209
210/*
211 * Bit values in "flags" of a GUC variable. Note that these don't appear
212 * on disk, so we can reassign their values freely.
213 */
214#define GUC_LIST_INPUT 0x000001 /* input can be list format */
215#define GUC_LIST_QUOTE 0x000002 /* double-quote list elements */
216#define GUC_NO_SHOW_ALL 0x000004 /* exclude from SHOW ALL */
217#define GUC_NO_RESET 0x000008 /* disallow RESET and SAVE */
218#define GUC_NO_RESET_ALL 0x000010 /* exclude from RESET ALL */
219#define GUC_EXPLAIN 0x000020 /* include in EXPLAIN */
220#define GUC_REPORT 0x000040 /* auto-report changes to client */
221#define GUC_NOT_IN_SAMPLE 0x000080 /* not in postgresql.conf.sample */
222#define GUC_DISALLOW_IN_FILE 0x000100 /* can't set in postgresql.conf */
223#define GUC_CUSTOM_PLACEHOLDER 0x000200 /* placeholder for custom variable */
224#define GUC_SUPERUSER_ONLY 0x000400 /* show only to superusers */
225#define GUC_IS_NAME 0x000800 /* limit string to NAMEDATALEN-1 */
226#define GUC_NOT_WHILE_SEC_REST 0x001000 /* can't set if security restricted */
227#define GUC_DISALLOW_IN_AUTO_FILE \
228 0x002000 /* can't set in PG_AUTOCONF_FILENAME */
229#define GUC_RUNTIME_COMPUTED 0x004000 /* delay processing in 'postgres -C' */
230#define GUC_ALLOW_IN_PARALLEL 0x008000 /* allow setting in parallel mode */
231
232#define GUC_UNIT_KB 0x01000000 /* value is in kilobytes */
233#define GUC_UNIT_BLOCKS 0x02000000 /* value is in blocks */
234#define GUC_UNIT_XBLOCKS 0x03000000 /* value is in xlog blocks */
235#define GUC_UNIT_MB 0x04000000 /* value is in megabytes */
236#define GUC_UNIT_BYTE 0x05000000 /* value is in bytes */
237#define GUC_UNIT_MEMORY 0x0F000000 /* mask for size-related units */
238
239#define GUC_UNIT_MS 0x10000000 /* value is in milliseconds */
240#define GUC_UNIT_S 0x20000000 /* value is in seconds */
241#define GUC_UNIT_MIN 0x30000000 /* value is in minutes */
242#define GUC_UNIT_TIME 0x70000000 /* mask for time-related units */
243
244#define GUC_UNIT (GUC_UNIT_MEMORY | GUC_UNIT_TIME)
245
246
247/* GUC vars that are actually defined in guc_tables.c, rather than elsewhere */
248extern PGDLLIMPORT bool Debug_print_plan;
252
253#ifdef DEBUG_NODE_TESTS_ENABLED
254extern PGDLLIMPORT bool Debug_copy_parse_plan_trees;
255extern PGDLLIMPORT bool Debug_write_read_parse_plan_trees;
256extern PGDLLIMPORT bool Debug_raw_expression_coverage_test;
257#endif
258
259extern PGDLLIMPORT bool log_parser_stats;
264extern PGDLLIMPORT char *event_source;
265
268
269extern PGDLLIMPORT bool AllowAlterSystem;
270extern PGDLLIMPORT bool log_duration;
278extern PGDLLIMPORT int log_temp_files;
282
284
286
287extern PGDLLIMPORT char *cluster_name;
288extern PGDLLIMPORT char *ConfigFileName;
289extern PGDLLIMPORT char *HbaFileName;
290extern PGDLLIMPORT char *IdentFileName;
291extern PGDLLIMPORT char *external_pid_file;
292
293extern PGDLLIMPORT char *application_name;
294
299
300extern PGDLLIMPORT char *role_string;
302extern PGDLLIMPORT bool trace_sort;
303
304#ifdef DEBUG_BOUNDED_SORT
305extern PGDLLIMPORT bool optimize_bounded_sort;
306#endif
307
308/*
309 * Declarations for options for enum values
310 *
311 * For most parameters, these are defined statically inside guc_tables.c. But
312 * for some parameters, the definitions require symbols that are not easily
313 * available inside guc_tables.c, so they are instead defined in their home
314 * modules. For those, we keep the extern declarations here. (An alternative
315 * would be to put the extern declarations in the modules' header files, but
316 * that would then require including the definition of struct
317 * config_enum_entry into those header files.)
318 */
325
326/*
327 * Functions exported by guc.c
328 */
329extern void SetConfigOption(const char *name, const char *value,
330 GucContext context, GucSource source);
331
332extern void DefineCustomBoolVariable(const char *name,
333 const char *short_desc,
334 const char *long_desc,
335 bool *valueAddr,
336 bool bootValue,
337 GucContext context,
338 int flags,
339 GucBoolCheckHook check_hook,
340 GucBoolAssignHook assign_hook,
341 GucShowHook show_hook) pg_attribute_nonnull(1, 4);
342
343extern void DefineCustomIntVariable(const char *name,
344 const char *short_desc,
345 const char *long_desc,
346 int *valueAddr,
347 int bootValue,
348 int minValue,
349 int maxValue,
350 GucContext context,
351 int flags,
352 GucIntCheckHook check_hook,
353 GucIntAssignHook assign_hook,
354 GucShowHook show_hook) pg_attribute_nonnull(1, 4);
355
356extern void DefineCustomRealVariable(const char *name,
357 const char *short_desc,
358 const char *long_desc,
359 double *valueAddr,
360 double bootValue,
361 double minValue,
362 double maxValue,
363 GucContext context,
364 int flags,
365 GucRealCheckHook check_hook,
366 GucRealAssignHook assign_hook,
367 GucShowHook show_hook) pg_attribute_nonnull(1, 4);
368
369extern void DefineCustomStringVariable(const char *name,
370 const char *short_desc,
371 const char *long_desc,
372 char **valueAddr,
373 const char *bootValue,
374 GucContext context,
375 int flags,
376 GucStringCheckHook check_hook,
377 GucStringAssignHook assign_hook,
378 GucShowHook show_hook) pg_attribute_nonnull(1, 4);
379
380extern void DefineCustomEnumVariable(const char *name,
381 const char *short_desc,
382 const char *long_desc,
383 int *valueAddr,
384 int bootValue,
385 const struct config_enum_entry *options,
386 GucContext context,
387 int flags,
388 GucEnumCheckHook check_hook,
389 GucEnumAssignHook assign_hook,
390 GucShowHook show_hook) pg_attribute_nonnull(1, 4);
391
392extern void MarkGUCPrefixReserved(const char *className);
393
394/* old name for MarkGUCPrefixReserved, for backwards compatibility: */
395#define EmitWarningsOnPlaceholders(className) MarkGUCPrefixReserved(className)
396
397extern const char *GetConfigOption(const char *name, bool missing_ok,
398 bool restrict_privileged);
399extern const char *GetConfigOptionResetString(const char *name);
400extern int GetConfigOptionFlags(const char *name, bool missing_ok);
401extern void ProcessConfigFile(GucContext context);
402extern char *convert_GUC_name_for_parameter_acl(const char *name);
403extern void check_GUC_name_for_parameter_acl(const char *name);
404extern void InitializeGUCOptions(void);
405extern bool SelectConfigFiles(const char *userDoption, const char *progname);
406extern void ResetAllOptions(void);
407extern void AtStart_GUC(void);
408extern int NewGUCNestLevel(void);
409extern void RestrictSearchPath(void);
410extern void AtEOXact_GUC(bool isCommit, int nestLevel);
411extern void BeginReportingGUCOptions(void);
412extern void ReportChangedGUCOptions(void);
413extern void ParseLongOption(const char *string, char **name, char **value);
414extern const char *get_config_unit_name(int flags);
415extern bool parse_int(const char *value, int *result, int flags,
416 const char **hintmsg);
417extern bool parse_real(const char *value, double *result, int flags,
418 const char **hintmsg);
419extern int set_config_option(const char *name, const char *value,
420 GucContext context, GucSource source,
421 GucAction action, bool changeVal, int elevel,
422 bool is_reload);
423extern int set_config_option_ext(const char *name, const char *value,
424 GucContext context, GucSource source,
425 Oid srole,
426 GucAction action, bool changeVal, int elevel,
427 bool is_reload);
428extern int set_config_with_handle(const char *name, config_handle *handle,
429 const char *value,
430 GucContext context, GucSource source,
431 Oid srole,
432 GucAction action, bool changeVal,
433 int elevel, bool is_reload);
434extern config_handle *get_config_handle(const char *name);
435extern void AlterSystemSetConfigFile(AlterSystemStmt *altersysstmt);
436extern char *GetConfigOptionByName(const char *name, const char **varname,
437 bool missing_ok);
438
439extern void TransformGUCArray(ArrayType *array, List **names,
440 List **values);
441extern void ProcessGUCArray(ArrayType *array,
443extern ArrayType *GUCArrayAdd(ArrayType *array, const char *name, const char *value);
444extern ArrayType *GUCArrayDelete(ArrayType *array, const char *name);
445extern ArrayType *GUCArrayReset(ArrayType *array);
446
447extern void *guc_malloc(int elevel, size_t size);
448pg_nodiscard extern void *guc_realloc(int elevel, void *old, size_t size);
449extern char *guc_strdup(int elevel, const char *src);
450extern void guc_free(void *ptr);
451
452#ifdef EXEC_BACKEND
453extern void write_nondefault_variables(GucContext context);
454extern void read_nondefault_variables(void);
455#endif
456
457/* GUC serialization */
458extern Size EstimateGUCStateSpace(void);
459extern void SerializeGUCState(Size maxsize, char *start_address);
460extern void RestoreGUCState(void *gucstate);
461
462/* Functions exported by guc_funcs.c */
463extern void ExecSetVariableStmt(VariableSetStmt *stmt, bool isTopLevel);
465extern void SetPGVariable(const char *name, List *args, bool is_local);
466extern void GetPGVariable(const char *name, DestReceiver *dest);
467extern TupleDesc GetPGVariableResultDesc(const char *name);
468
469/* Support for messages reported from GUC check hooks */
470
474
475extern void GUC_check_errcode(int sqlerrcode);
476
477#define GUC_check_errmsg \
478 pre_format_elog_string(errno, TEXTDOMAIN), \
479 GUC_check_errmsg_string = format_elog_string
480
481#define GUC_check_errdetail \
482 pre_format_elog_string(errno, TEXTDOMAIN), \
483 GUC_check_errdetail_string = format_elog_string
484
485#define GUC_check_errhint \
486 pre_format_elog_string(errno, TEXTDOMAIN), \
487 GUC_check_errhint_string = format_elog_string
488
489#endif /* GUC_H */
static Datum values[MAXATTR]
Definition: bootstrap.c:151
#define PGDLLIMPORT
Definition: c.h:1291
#define pg_nodiscard
Definition: c.h:145
#define pg_attribute_nonnull(...)
Definition: c.h:201
size_t Size
Definition: c.h:576
#define newval
void BeginReportingGUCOptions(void)
Definition: guc.c:2546
void GUC_check_errcode(int sqlerrcode)
Definition: guc.c:6786
void RestoreGUCState(void *gucstate)
Definition: guc.c:6194
PGDLLIMPORT const struct config_enum_entry archive_mode_options[]
Definition: xlog.c:191
PGDLLIMPORT const struct config_enum_entry recovery_target_action_options[]
Definition: xlogrecovery.c:75
bool(* GucBoolCheckHook)(bool *newval, void **extra, GucSource source)
Definition: guc.h:183
int set_config_option_ext(const char *name, const char *value, GucContext context, GucSource source, Oid srole, GucAction action, bool changeVal, int elevel, bool is_reload)
Definition: guc.c:3382
PGDLLIMPORT bool AllowAlterSystem
Definition: guc_tables.c:506
GucAction
Definition: guc.h:201
@ GUC_ACTION_SAVE
Definition: guc.h:205
@ GUC_ACTION_SET
Definition: guc.h:203
@ GUC_ACTION_LOCAL
Definition: guc.h:204
PGDLLIMPORT int client_min_messages
Definition: guc_tables.c:540
bool parse_int(const char *value, int *result, int flags, const char **hintmsg)
Definition: guc.c:2871
void GetPGVariable(const char *name, DestReceiver *dest)
Definition: guc_funcs.c:382
void FreeConfigVariables(ConfigVariable *list)
Definition: guc-file.l:617
void guc_free(void *ptr)
Definition: guc.c:689
const char * get_config_unit_name(int flags)
Definition: guc.c:2814
PGDLLIMPORT bool trace_sort
Definition: tuplesort.c:124
char * GetConfigOptionByName(const char *name, const char **varname, bool missing_ok)
Definition: guc.c:5433
bool ParseConfigFp(FILE *fp, const char *config_file, int depth, int elevel, ConfigVariable **head_p, ConfigVariable **tail_p)
Definition: guc-file.l:350
bool(* GucRealCheckHook)(double *newval, void **extra, GucSource source)
Definition: guc.h:185
int NewGUCNestLevel(void)
Definition: guc.c:2235
PGDLLIMPORT int temp_file_limit
Definition: guc_tables.c:550
PGDLLIMPORT char * GUC_check_errhint_string
Definition: guc.c:83
ArrayType * GUCArrayAdd(ArrayType *array, const char *name, const char *value)
Definition: guc.c:6489
void ProcessGUCArray(ArrayType *array, GucContext context, GucSource source, GucAction action)
Definition: guc.c:6457
PGDLLIMPORT char * application_name
Definition: guc_tables.c:560
void SetConfigOption(const char *name, const char *value, GucContext context, GucSource source)
Definition: guc.c:4332
void(* GucStringAssignHook)(const char *newval, void *extra)
Definition: guc.h:192
PGDLLIMPORT const struct config_enum_entry dynamic_shared_memory_options[]
Definition: dsm_impl.c:95
void void void void DefineCustomStringVariable(const char *name, const char *short_desc, const char *long_desc, char **valueAddr, const char *bootValue, GucContext context, int flags, GucStringCheckHook check_hook, GucStringAssignHook assign_hook, GucShowHook show_hook) pg_attribute_nonnull(1
PGDLLIMPORT int tcp_keepalives_idle
Definition: guc_tables.c:562
pg_nodiscard void * guc_realloc(int elevel, void *old, size_t size)
Definition: guc.c:652
bool(* GucEnumCheckHook)(int *newval, void **extra, GucSource source)
Definition: guc.h:187
PGDLLIMPORT bool Debug_print_parse
Definition: guc_tables.c:509
void void void DefineCustomRealVariable(const char *name, const char *short_desc, const char *long_desc, double *valueAddr, double bootValue, double minValue, double maxValue, GucContext context, int flags, GucRealCheckHook check_hook, GucRealAssignHook assign_hook, GucShowHook show_hook) pg_attribute_nonnull(1
void(* GucBoolAssignHook)(bool newval, void *extra)
Definition: guc.h:189
PGDLLIMPORT char * GUC_check_errdetail_string
Definition: guc.c:82
PGDLLIMPORT char * backtrace_functions
Definition: guc_tables.c:548
PGDLLIMPORT bool Debug_print_rewritten
Definition: guc_tables.c:510
void * guc_malloc(int elevel, size_t size)
Definition: guc.c:638
bool parse_real(const char *value, double *result, int flags, const char **hintmsg)
Definition: guc.c:2961
void(* GucEnumAssignHook)(int newval, void *extra)
Definition: guc.h:193
PGDLLIMPORT int tcp_user_timeout
Definition: guc_tables.c:565
const char * GetConfigOption(const char *name, bool missing_ok, bool restrict_privileged)
Definition: guc.c:4355
PGDLLIMPORT bool log_duration
Definition: guc_tables.c:507
void SerializeGUCState(Size maxsize, char *start_address)
Definition: guc.c:6102
char * ExtractSetVariableArgs(VariableSetStmt *stmt)
Definition: guc_funcs.c:167
PGDLLIMPORT bool log_planner_stats
Definition: guc_tables.c:520
bool SelectConfigFiles(const char *userDoption, const char *progname)
Definition: guc.c:1784
PGDLLIMPORT char * HbaFileName
Definition: guc_tables.c:556
PGDLLIMPORT int log_parameter_max_length
Definition: guc_tables.c:543
config_handle * get_config_handle(const char *name)
Definition: guc.c:4284
PGDLLIMPORT char * external_pid_file
Definition: guc_tables.c:558
char * DeescapeQuotedString(const char *s)
Definition: guc-file.l:661
void AlterSystemSetConfigFile(AlterSystemStmt *altersysstmt)
Definition: guc.c:4607
struct ConfigVariable ConfigVariable
PGDLLIMPORT int log_min_error_statement
Definition: guc_tables.c:538
Size EstimateGUCStateSpace(void)
Definition: guc.c:5949
void void DefineCustomIntVariable(const char *name, const char *short_desc, const char *long_desc, int *valueAddr, int bootValue, int minValue, int maxValue, GucContext context, int flags, GucIntCheckHook check_hook, GucIntAssignHook assign_hook, GucShowHook show_hook) pg_attribute_nonnull(1
PGDLLIMPORT bool log_btree_build_stats
Definition: guc_tables.c:524
TupleDesc GetPGVariableResultDesc(const char *name)
Definition: guc_funcs.c:394
PGDLLIMPORT bool in_hot_standby_guc
Definition: guc_tables.c:639
PGDLLIMPORT char * ConfigFileName
Definition: guc_tables.c:555
PGDLLIMPORT int log_min_duration_statement
Definition: guc_tables.c:542
void AtStart_GUC(void)
Definition: guc.c:2215
void ParseLongOption(const char *string, char **name, char **value)
Definition: guc.c:6363
void ResetAllOptions(void)
Definition: guc.c:2003
const char * GetConfigOptionResetString(const char *name)
Definition: guc.c:4405
GucSource
Definition: guc.h:112
@ PGC_S_DEFAULT
Definition: guc.h:113
@ PGC_S_DYNAMIC_DEFAULT
Definition: guc.h:114
@ PGC_S_FILE
Definition: guc.h:116
@ PGC_S_GLOBAL
Definition: guc.h:118
@ PGC_S_DATABASE
Definition: guc.h:119
@ PGC_S_OVERRIDE
Definition: guc.h:123
@ PGC_S_ARGV
Definition: guc.h:117
@ PGC_S_SESSION
Definition: guc.h:126
@ PGC_S_CLIENT
Definition: guc.h:122
@ PGC_S_DATABASE_USER
Definition: guc.h:121
@ PGC_S_ENV_VAR
Definition: guc.h:115
@ PGC_S_USER
Definition: guc.h:120
@ PGC_S_TEST
Definition: guc.h:125
@ PGC_S_INTERACTIVE
Definition: guc.h:124
void SetPGVariable(const char *name, List *args, bool is_local)
Definition: guc_funcs.c:315
PGDLLIMPORT bool current_role_is_superuser
Definition: guc_tables.c:536
PGDLLIMPORT char * IdentFileName
Definition: guc_tables.c:557
bool(* GucStringCheckHook)(char **newval, void **extra, GucSource source)
Definition: guc.h:186
PGDLLIMPORT const struct config_enum_entry wal_sync_method_options[]
Definition: xlog.c:171
PGDLLIMPORT bool log_executor_stats
Definition: guc_tables.c:521
PGDLLIMPORT bool Debug_print_plan
Definition: guc_tables.c:508
void void void void void void MarkGUCPrefixReserved(const char *className)
Definition: guc.c:5280
void InitializeGUCOptions(void)
Definition: guc.c:1530
bool ParseConfigFile(const char *config_file, bool strict, const char *calling_file, int calling_lineno, int depth, int elevel, ConfigVariable **head_p, ConfigVariable **tail_p)
Definition: guc-file.l:175
bool ParseConfigDirectory(const char *includedir, const char *calling_file, int calling_lineno, int depth, int elevel, ConfigVariable **head_p, ConfigVariable **tail_p)
Definition: guc-file.l:581
void(* GucIntAssignHook)(int newval, void *extra)
Definition: guc.h:190
ArrayType * GUCArrayReset(ArrayType *array)
Definition: guc.c:6637
void(* GucRealAssignHook)(double newval, void *extra)
Definition: guc.h:191
PGDLLIMPORT int log_min_duration_sample
Definition: guc_tables.c:541
GucContext
Definition: guc.h:72
@ PGC_SUSET
Definition: guc.h:78
@ PGC_INTERNAL
Definition: guc.h:73
@ PGC_USERSET
Definition: guc.h:79
@ PGC_SU_BACKEND
Definition: guc.h:76
@ PGC_POSTMASTER
Definition: guc.h:74
@ PGC_SIGHUP
Definition: guc.h:75
@ PGC_BACKEND
Definition: guc.h:77
PGDLLIMPORT char * role_string
Definition: guc_tables.c:636
void DefineCustomBoolVariable(const char *name, const char *short_desc, const char *long_desc, bool *valueAddr, bool bootValue, GucContext context, int flags, GucBoolCheckHook check_hook, GucBoolAssignHook assign_hook, GucShowHook show_hook) pg_attribute_nonnull(1
ArrayType * GUCArrayDelete(ArrayType *array, const char *name)
Definition: guc.c:6567
PGDLLIMPORT bool Debug_pretty_print
Definition: guc_tables.c:511
PGDLLIMPORT int tcp_keepalives_interval
Definition: guc_tables.c:563
PGDLLIMPORT int log_temp_files
Definition: guc_tables.c:545
void ExecSetVariableStmt(VariableSetStmt *stmt, bool isTopLevel)
Definition: guc_funcs.c:43
PGDLLIMPORT int tcp_keepalives_count
Definition: guc_tables.c:564
bool(* GucIntCheckHook)(int *newval, void **extra, GucSource source)
Definition: guc.h:184
void RestrictSearchPath(void)
Definition: guc.c:2246
PGDLLIMPORT bool check_function_bodies
Definition: guc_tables.c:528
int GetConfigOptionFlags(const char *name, bool missing_ok)
Definition: guc.c:4452
PGDLLIMPORT int num_temp_buffers
Definition: guc_tables.c:552
PGDLLIMPORT double log_xact_sample_rate
Definition: guc_tables.c:547
void check_GUC_name_for_parameter_acl(const char *name)
Definition: guc.c:1410
PGDLLIMPORT const struct config_enum_entry wal_level_options[]
Definition: xlogdesc.c:27
char * convert_GUC_name_for_parameter_acl(const char *name)
Definition: guc.c:1374
int set_config_with_handle(const char *name, config_handle *handle, const char *value, GucContext context, GucSource source, Oid srole, GucAction action, bool changeVal, int elevel, bool is_reload)
Definition: guc.c:3405
PGDLLIMPORT const struct config_enum_entry io_method_options[]
Definition: aio.c:67
PGDLLIMPORT bool log_statement_stats
Definition: guc_tables.c:522
void ProcessConfigFile(GucContext context)
Definition: guc-file.l:120
void void void void void DefineCustomEnumVariable(const char *name, const char *short_desc, const char *long_desc, int *valueAddr, int bootValue, const struct config_enum_entry *options, GucContext context, int flags, GucEnumCheckHook check_hook, GucEnumAssignHook assign_hook, GucShowHook show_hook) pg_attribute_nonnull(1
PGDLLIMPORT bool log_parser_stats
Definition: guc_tables.c:519
void TransformGUCArray(ArrayType *array, List **names, List **values)
Definition: guc.c:6400
char * guc_strdup(int elevel, const char *src)
Definition: guc.c:677
void ReportChangedGUCOptions(void)
Definition: guc.c:2596
PGDLLIMPORT int log_min_messages
Definition: guc_tables.c:539
void AtEOXact_GUC(bool isCommit, int nestLevel)
Definition: guc.c:2262
const char *(* GucShowHook)(void)
Definition: guc.h:195
PGDLLIMPORT int log_parameter_max_length_on_error
Definition: guc_tables.c:544
PGDLLIMPORT char * event_source
Definition: guc_tables.c:525
int set_config_option(const char *name, const char *value, GucContext context, GucSource source, GucAction action, bool changeVal, int elevel, bool is_reload)
Definition: guc.c:3342
PGDLLIMPORT char * GUC_check_errmsg_string
Definition: guc.c:81
PGDLLIMPORT double log_statement_sample_rate
Definition: guc_tables.c:546
PGDLLIMPORT char * cluster_name
Definition: guc_tables.c:554
#define stmt
Definition: indent_codes.h:59
static struct @165 value
const char * progname
Definition: main.c:44
static rewind_source * source
Definition: pg_rewind.c:89
static char * config_file
Definition: pg_rewind.c:71
static const char * userDoption
Definition: postgres.c:153
unsigned int Oid
Definition: postgres_ext.h:30
char * name
Definition: guc.h:141
bool ignore
Definition: guc.h:146
struct ConfigVariable * next
Definition: guc.h:148
bool applied
Definition: guc.h:147
char * filename
Definition: guc.h:144
int sourceline
Definition: guc.h:145
char * value
Definition: guc.h:142
char * errmsg
Definition: guc.h:143
Definition: pg_list.h:54
Definition: guc.h:174
const char * name
Definition: guc.h:175
int val
Definition: guc.h:176
bool hidden
Definition: guc.h:177
const char * name