PostgreSQL Source Code  git master
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-2022, 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 /* upper limit for GUC variables measured in kilobytes of memory */
21 /* note that various places assume the byte size fits in a "long" variable */
22 #if SIZEOF_SIZE_T > 4 && SIZEOF_LONG > 4
23 #define MAX_KILOBYTES INT_MAX
24 #else
25 #define MAX_KILOBYTES (INT_MAX / 1024)
26 #endif
27 
28 /*
29  * Automatic configuration file name for ALTER SYSTEM.
30  * This file will be used to store values of configuration parameters
31  * set by ALTER SYSTEM command.
32  */
33 #define PG_AUTOCONF_FILENAME "postgresql.auto.conf"
34 
35 /*
36  * Certain options can only be set at certain times. The rules are
37  * like this:
38  *
39  * INTERNAL options cannot be set by the user at all, but only through
40  * internal processes ("server_version" is an example). These are GUC
41  * variables only so they can be shown by SHOW, etc.
42  *
43  * POSTMASTER options can only be set when the postmaster starts,
44  * either from the configuration file or the command line.
45  *
46  * SIGHUP options can only be set at postmaster startup or by changing
47  * the configuration file and sending the HUP signal to the postmaster
48  * or a backend process. (Notice that the signal receipt will not be
49  * evaluated immediately. The postmaster and the backend check it at a
50  * certain point in their main loop. It's safer to wait than to read a
51  * file asynchronously.)
52  *
53  * BACKEND and SU_BACKEND options can only be set at postmaster startup,
54  * from the configuration file, or by client request in the connection
55  * startup packet (e.g., from libpq's PGOPTIONS variable). SU_BACKEND
56  * options can be set from the startup packet only when the user is a
57  * superuser. Furthermore, an already-started backend will ignore changes
58  * to such an option in the configuration file. The idea is that these
59  * options are fixed for a given backend once it's started, but they can
60  * vary across backends.
61  *
62  * SUSET options can be set at postmaster startup, with the SIGHUP
63  * mechanism, or from the startup packet or SQL if you're a superuser.
64  *
65  * USERSET options can be set by anyone any time.
66  */
67 typedef enum
68 {
77 
78 /*
79  * The following type records the source of the current setting. A
80  * new setting can only take effect if the previous setting had the
81  * same or lower level. (E.g, changing the config file doesn't
82  * override the postmaster command line.) Tracking the source allows us
83  * to process sources in any convenient order without affecting results.
84  * Sources <= PGC_S_OVERRIDE will set the default used by RESET, as well
85  * as the current value.
86  *
87  * PGC_S_INTERACTIVE isn't actually a source value, but is the
88  * dividing line between "interactive" and "non-interactive" sources for
89  * error reporting purposes.
90  *
91  * PGC_S_TEST is used when testing values to be used later. For example,
92  * ALTER DATABASE/ROLE tests proposed per-database or per-user defaults this
93  * way, and CREATE FUNCTION tests proposed function SET clauses this way.
94  * This is an interactive case, but it needs its own source value because
95  * some assign hooks need to make different validity checks in this case.
96  * In particular, references to nonexistent database objects generally
97  * shouldn't throw hard errors in this case, at most NOTICEs, since the
98  * objects might exist by the time the setting is used for real.
99  *
100  * When setting the value of a non-compile-time-constant PGC_INTERNAL option,
101  * source == PGC_S_DYNAMIC_DEFAULT should typically be used so that the value
102  * will show as "default" in pg_settings. If there is a specific reason not
103  * to want that, use source == PGC_S_OVERRIDE.
104  *
105  * NB: see GucSource_Names in guc.c if you change this.
106  */
107 typedef enum
108 {
109  PGC_S_DEFAULT, /* hard-wired default ("boot_val") */
110  PGC_S_DYNAMIC_DEFAULT, /* default computed during initialization */
111  PGC_S_ENV_VAR, /* postmaster environment variable */
112  PGC_S_FILE, /* postgresql.conf */
113  PGC_S_ARGV, /* postmaster command line */
114  PGC_S_GLOBAL, /* global in-database setting */
115  PGC_S_DATABASE, /* per-database setting */
116  PGC_S_USER, /* per-user setting */
117  PGC_S_DATABASE_USER, /* per-user-and-database setting */
118  PGC_S_CLIENT, /* from client connection request */
119  PGC_S_OVERRIDE, /* special case to forcibly set default */
120  PGC_S_INTERACTIVE, /* dividing line for error reporting */
121  PGC_S_TEST, /* test per-database or per-user setting */
122  PGC_S_SESSION /* SET command */
124 
125 /*
126  * Parsing the configuration file(s) will return a list of name-value pairs
127  * with source location info. We also abuse this data structure to carry
128  * error reports about the config files. An entry reporting an error will
129  * have errmsg != NULL, and might have NULLs for name, value, and/or filename.
130  *
131  * If "ignore" is true, don't attempt to apply the item (it might be an error
132  * report, or an item we determined to be duplicate). "applied" is set true
133  * if we successfully applied, or could have applied, the setting.
134  */
135 typedef struct ConfigVariable
136 {
137  char *name;
138  char *value;
139  char *errmsg;
140  char *filename;
142  bool ignore;
143  bool applied;
146 
147 extern bool ParseConfigFile(const char *config_file, bool strict,
148  const char *calling_file, int calling_lineno,
149  int depth, int elevel,
150  ConfigVariable **head_p, ConfigVariable **tail_p);
151 extern bool ParseConfigFp(FILE *fp, const char *config_file,
152  int depth, int elevel,
153  ConfigVariable **head_p, ConfigVariable **tail_p);
154 extern bool ParseConfigDirectory(const char *includedir,
155  const char *calling_file, int calling_lineno,
156  int depth, int elevel,
157  ConfigVariable **head_p,
158  ConfigVariable **tail_p);
160 extern char *DeescapeQuotedString(const char *s);
161 
162 /*
163  * The possible values of an enum variable are specified by an array of
164  * name-value pairs. The "hidden" flag means the value is accepted but
165  * won't be displayed when guc.c is asked for a list of acceptable values.
166  */
168 {
169  const char *name;
170  int val;
171  bool hidden;
172 };
173 
174 /*
175  * Signatures for per-variable check/assign/show hook functions
176  */
177 typedef bool (*GucBoolCheckHook) (bool *newval, void **extra, GucSource source);
178 typedef bool (*GucIntCheckHook) (int *newval, void **extra, GucSource source);
179 typedef bool (*GucRealCheckHook) (double *newval, void **extra, GucSource source);
180 typedef bool (*GucStringCheckHook) (char **newval, void **extra, GucSource source);
181 typedef bool (*GucEnumCheckHook) (int *newval, void **extra, GucSource source);
182 
183 typedef void (*GucBoolAssignHook) (bool newval, void *extra);
184 typedef void (*GucIntAssignHook) (int newval, void *extra);
185 typedef void (*GucRealAssignHook) (double newval, void *extra);
186 typedef void (*GucStringAssignHook) (const char *newval, void *extra);
187 typedef void (*GucEnumAssignHook) (int newval, void *extra);
188 
189 typedef const char *(*GucShowHook) (void);
190 
191 /*
192  * Miscellaneous
193  */
194 typedef enum
195 {
196  /* Types of set_config_option actions */
197  GUC_ACTION_SET, /* regular SET command */
198  GUC_ACTION_LOCAL, /* SET LOCAL command */
199  GUC_ACTION_SAVE /* function SET option, or temp assignment */
201 
202 #define GUC_QUALIFIER_SEPARATOR '.'
203 
204 /*
205  * Bit values in "flags" of a GUC variable. Note that these don't appear
206  * on disk, so we can reassign their values freely.
207  */
208 #define GUC_LIST_INPUT 0x000001 /* input can be list format */
209 #define GUC_LIST_QUOTE 0x000002 /* double-quote list elements */
210 #define GUC_NO_SHOW_ALL 0x000004 /* exclude from SHOW ALL */
211 #define GUC_NO_RESET 0x000008 /* disallow RESET and SAVE */
212 #define GUC_NO_RESET_ALL 0x000010 /* exclude from RESET ALL */
213 #define GUC_EXPLAIN 0x000020 /* include in EXPLAIN */
214 #define GUC_REPORT 0x000040 /* auto-report changes to client */
215 #define GUC_NOT_IN_SAMPLE 0x000080 /* not in postgresql.conf.sample */
216 #define GUC_DISALLOW_IN_FILE 0x000100 /* can't set in postgresql.conf */
217 #define GUC_CUSTOM_PLACEHOLDER 0x000200 /* placeholder for custom variable */
218 #define GUC_SUPERUSER_ONLY 0x000400 /* show only to superusers */
219 #define GUC_IS_NAME 0x000800 /* limit string to NAMEDATALEN-1 */
220 #define GUC_NOT_WHILE_SEC_REST 0x001000 /* can't set if security restricted */
221 #define GUC_DISALLOW_IN_AUTO_FILE \
222  0x002000 /* can't set in PG_AUTOCONF_FILENAME */
223 #define GUC_RUNTIME_COMPUTED 0x004000 /* delay processing in 'postgres -C' */
224 
225 #define GUC_UNIT_KB 0x01000000 /* value is in kilobytes */
226 #define GUC_UNIT_BLOCKS 0x02000000 /* value is in blocks */
227 #define GUC_UNIT_XBLOCKS 0x03000000 /* value is in xlog blocks */
228 #define GUC_UNIT_MB 0x04000000 /* value is in megabytes */
229 #define GUC_UNIT_BYTE 0x05000000 /* value is in bytes */
230 #define GUC_UNIT_MEMORY 0x0F000000 /* mask for size-related units */
231 
232 #define GUC_UNIT_MS 0x10000000 /* value is in milliseconds */
233 #define GUC_UNIT_S 0x20000000 /* value is in seconds */
234 #define GUC_UNIT_MIN 0x30000000 /* value is in minutes */
235 #define GUC_UNIT_TIME 0x70000000 /* mask for time-related units */
236 
237 #define GUC_UNIT (GUC_UNIT_MEMORY | GUC_UNIT_TIME)
238 
239 
240 /* GUC vars that are actually defined in guc_tables.c, rather than elsewhere */
241 extern PGDLLIMPORT bool Debug_print_plan;
242 extern PGDLLIMPORT bool Debug_print_parse;
244 extern PGDLLIMPORT bool Debug_pretty_print;
245 
246 extern PGDLLIMPORT bool log_parser_stats;
247 extern PGDLLIMPORT bool log_planner_stats;
248 extern PGDLLIMPORT bool log_executor_stats;
249 extern PGDLLIMPORT bool log_statement_stats;
251 
254 
255 extern PGDLLIMPORT bool log_duration;
259 extern PGDLLIMPORT int log_min_messages;
263 extern PGDLLIMPORT int log_temp_files;
265 extern PGDLLIMPORT double log_xact_sample_rate;
266 extern PGDLLIMPORT char *backtrace_functions;
267 
268 extern PGDLLIMPORT int temp_file_limit;
269 
270 extern PGDLLIMPORT int num_temp_buffers;
271 
272 extern PGDLLIMPORT char *cluster_name;
273 extern PGDLLIMPORT char *ConfigFileName;
274 extern PGDLLIMPORT char *HbaFileName;
275 extern PGDLLIMPORT char *IdentFileName;
276 extern PGDLLIMPORT char *external_pid_file;
277 
278 extern PGDLLIMPORT char *application_name;
279 
283 extern PGDLLIMPORT int tcp_user_timeout;
284 
285 #ifdef TRACE_SORT
286 extern PGDLLIMPORT bool trace_sort;
287 #endif
288 
289 /*
290  * Functions exported by guc.c
291  */
292 extern void SetConfigOption(const char *name, const char *value,
293  GucContext context, GucSource source);
294 
295 extern void DefineCustomBoolVariable(const char *name,
296  const char *short_desc,
297  const char *long_desc,
298  bool *valueAddr,
299  bool bootValue,
300  GucContext context,
301  int flags,
302  GucBoolCheckHook check_hook,
303  GucBoolAssignHook assign_hook,
304  GucShowHook show_hook) pg_attribute_nonnull(1, 4);
305 
306 extern void DefineCustomIntVariable(const char *name,
307  const char *short_desc,
308  const char *long_desc,
309  int *valueAddr,
310  int bootValue,
311  int minValue,
312  int maxValue,
313  GucContext context,
314  int flags,
315  GucIntCheckHook check_hook,
316  GucIntAssignHook assign_hook,
317  GucShowHook show_hook) pg_attribute_nonnull(1, 4);
318 
319 extern void DefineCustomRealVariable(const char *name,
320  const char *short_desc,
321  const char *long_desc,
322  double *valueAddr,
323  double bootValue,
324  double minValue,
325  double maxValue,
326  GucContext context,
327  int flags,
328  GucRealCheckHook check_hook,
329  GucRealAssignHook assign_hook,
330  GucShowHook show_hook) pg_attribute_nonnull(1, 4);
331 
332 extern void DefineCustomStringVariable(const char *name,
333  const char *short_desc,
334  const char *long_desc,
335  char **valueAddr,
336  const char *bootValue,
337  GucContext context,
338  int flags,
339  GucStringCheckHook check_hook,
340  GucStringAssignHook assign_hook,
341  GucShowHook show_hook) pg_attribute_nonnull(1, 4);
342 
343 extern void DefineCustomEnumVariable(const char *name,
344  const char *short_desc,
345  const char *long_desc,
346  int *valueAddr,
347  int bootValue,
348  const struct config_enum_entry *options,
349  GucContext context,
350  int flags,
351  GucEnumCheckHook check_hook,
352  GucEnumAssignHook assign_hook,
353  GucShowHook show_hook) pg_attribute_nonnull(1, 4);
354 
355 extern void MarkGUCPrefixReserved(const char *className);
356 
357 /* old name for MarkGUCPrefixReserved, for backwards compatibility: */
358 #define EmitWarningsOnPlaceholders(className) MarkGUCPrefixReserved(className)
359 
360 extern const char *GetConfigOption(const char *name, bool missing_ok,
361  bool restrict_privileged);
362 extern const char *GetConfigOptionResetString(const char *name);
363 extern int GetConfigOptionFlags(const char *name, bool missing_ok);
364 extern void ProcessConfigFile(GucContext context);
365 extern char *convert_GUC_name_for_parameter_acl(const char *name);
366 extern bool check_GUC_name_for_parameter_acl(const char *name);
367 extern void InitializeGUCOptions(void);
368 extern bool SelectConfigFiles(const char *userDoption, const char *progname);
369 extern void ResetAllOptions(void);
370 extern void AtStart_GUC(void);
371 extern int NewGUCNestLevel(void);
372 extern void AtEOXact_GUC(bool isCommit, int nestLevel);
373 extern void BeginReportingGUCOptions(void);
374 extern void ReportChangedGUCOptions(void);
375 extern void ParseLongOption(const char *string, char **name, char **value);
376 extern const char *get_config_unit_name(int flags);
377 extern bool parse_int(const char *value, int *result, int flags,
378  const char **hintmsg);
379 extern bool parse_real(const char *value, double *result, int flags,
380  const char **hintmsg);
381 extern int set_config_option(const char *name, const char *value,
382  GucContext context, GucSource source,
383  GucAction action, bool changeVal, int elevel,
384  bool is_reload);
385 extern int set_config_option_ext(const char *name, const char *value,
386  GucContext context, GucSource source,
387  Oid srole,
388  GucAction action, bool changeVal, int elevel,
389  bool is_reload);
390 extern void AlterSystemSetConfigFile(AlterSystemStmt *altersysstmt);
391 extern char *GetConfigOptionByName(const char *name, const char **varname,
392  bool missing_ok);
393 
394 extern void ProcessGUCArray(ArrayType *array, ArrayType *usersetArray,
396 extern ArrayType *GUCArrayAdd(ArrayType *array, ArrayType **usersetArray,
397  const char *name, const char *value,
398  bool user_set);
399 extern ArrayType *GUCArrayDelete(ArrayType *array, ArrayType **usersetArray,
400  const char *name);
401 extern ArrayType *GUCArrayReset(ArrayType *array, ArrayType **usersetArray);
402 
403 extern void *guc_malloc(int elevel, size_t size);
404 extern pg_nodiscard void *guc_realloc(int elevel, void *old, size_t size);
405 extern char *guc_strdup(int elevel, const char *src);
406 extern void guc_free(void *ptr);
407 
408 #ifdef EXEC_BACKEND
409 extern void write_nondefault_variables(GucContext context);
410 extern void read_nondefault_variables(void);
411 #endif
412 
413 /* GUC serialization */
414 extern Size EstimateGUCStateSpace(void);
415 extern void SerializeGUCState(Size maxsize, char *start_address);
416 extern void RestoreGUCState(void *gucstate);
417 
418 /* Functions exported by guc_funcs.c */
419 extern void ExecSetVariableStmt(VariableSetStmt *stmt, bool isTopLevel);
420 extern char *ExtractSetVariableArgs(VariableSetStmt *stmt);
421 extern void SetPGVariable(const char *name, List *args, bool is_local);
422 extern void GetPGVariable(const char *name, DestReceiver *dest);
423 extern TupleDesc GetPGVariableResultDesc(const char *name);
424 
425 /* Support for messages reported from GUC check hooks */
426 
430 
431 extern void GUC_check_errcode(int sqlerrcode);
432 
433 #define GUC_check_errmsg \
434  pre_format_elog_string(errno, TEXTDOMAIN), \
435  GUC_check_errmsg_string = format_elog_string
436 
437 #define GUC_check_errdetail \
438  pre_format_elog_string(errno, TEXTDOMAIN), \
439  GUC_check_errdetail_string = format_elog_string
440 
441 #define GUC_check_errhint \
442  pre_format_elog_string(errno, TEXTDOMAIN), \
443  GUC_check_errhint_string = format_elog_string
444 
445 #endif /* GUC_H */
#define PGDLLIMPORT
Definition: c.h:1252
#define pg_nodiscard
Definition: c.h:132
unsigned char bool
Definition: c.h:392
#define pg_attribute_nonnull(...)
Definition: c.h:155
size_t Size
Definition: c.h:541
const char * name
Definition: encode.c:561
#define newval
void BeginReportingGUCOptions(void)
Definition: guc.c:2480
void GUC_check_errcode(int sqlerrcode)
Definition: guc.c:6685
void RestoreGUCState(void *gucstate)
Definition: guc.c:6000
void * guc_malloc(int elevel, size_t size)
Definition: guc.c:630
bool(* GucBoolCheckHook)(bool *newval, void **extra, GucSource source)
Definition: guc.h:177
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:3305
GucAction
Definition: guc.h:195
@ GUC_ACTION_SAVE
Definition: guc.h:199
@ GUC_ACTION_SET
Definition: guc.h:197
@ GUC_ACTION_LOCAL
Definition: guc.h:198
PGDLLIMPORT int client_min_messages
Definition: guc_tables.c:487
bool parse_int(const char *value, int *result, int flags, const char **hintmsg)
Definition: guc.c:2805
void GetPGVariable(const char *name, DestReceiver *dest)
Definition: guc_funcs.c:392
void FreeConfigVariables(ConfigVariable *list)
void guc_free(void *ptr)
Definition: guc.c:681
PGDLLIMPORT bool session_auth_is_superuser
Definition: guc_tables.c:483
bool ParseConfigFp(FILE *fp, const char *config_file, int depth, int elevel, ConfigVariable **head_p, ConfigVariable **tail_p)
bool(* GucRealCheckHook)(double *newval, void **extra, GucSource source)
Definition: guc.h:179
int NewGUCNestLevel(void)
Definition: guc.c:2182
PGDLLIMPORT int temp_file_limit
Definition: guc_tables.c:498
PGDLLIMPORT char * GUC_check_errhint_string
Definition: guc.c:76
PGDLLIMPORT char * application_name
Definition: guc_tables.c:510
void SetConfigOption(const char *name, const char *value, GucContext context, GucSource source)
Definition: guc.c:4157
void(* GucStringAssignHook)(const char *newval, void *extra)
Definition: guc.h:186
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:512
bool(* GucEnumCheckHook)(int *newval, void **extra, GucSource source)
Definition: guc.h:181
PGDLLIMPORT bool Debug_print_parse
Definition: guc_tables.c:463
pg_nodiscard void * guc_realloc(int elevel, void *old, size_t size)
Definition: guc.c:644
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:183
PGDLLIMPORT char * GUC_check_errdetail_string
Definition: guc.c:75
PGDLLIMPORT char * backtrace_functions
Definition: guc_tables.c:496
PGDLLIMPORT bool Debug_print_rewritten
Definition: guc_tables.c:464
bool parse_real(const char *value, double *result, int flags, const char **hintmsg)
Definition: guc.c:2895
void(* GucEnumAssignHook)(int newval, void *extra)
Definition: guc.h:187
PGDLLIMPORT int tcp_user_timeout
Definition: guc_tables.c:515
PGDLLIMPORT bool log_duration
Definition: guc_tables.c:461
const char * GetConfigOptionResetString(const char *name)
Definition: guc.c:4230
void SerializeGUCState(Size maxsize, char *start_address)
Definition: guc.c:5908
void ProcessGUCArray(ArrayType *array, ArrayType *usersetArray, GucContext context, GucSource source, GucAction action)
Definition: guc.c:6206
PGDLLIMPORT bool log_planner_stats
Definition: guc_tables.c:468
bool SelectConfigFiles(const char *userDoption, const char *progname)
Definition: guc.c:1730
PGDLLIMPORT char * HbaFileName
Definition: guc_tables.c:504
char * DeescapeQuotedString(const char *s)
PGDLLIMPORT int log_parameter_max_length
Definition: guc_tables.c:490
PGDLLIMPORT char * external_pid_file
Definition: guc_tables.c:506
ArrayType * GUCArrayDelete(ArrayType *array, ArrayType **usersetArray, const char *name)
Definition: guc.c:6400
void AlterSystemSetConfigFile(AlterSystemStmt *altersysstmt)
Definition: guc.c:4431
struct ConfigVariable ConfigVariable
PGDLLIMPORT int log_min_error_statement
Definition: guc_tables.c:485
const char *(* GucShowHook)(void)
Definition: guc.h:189
Size EstimateGUCStateSpace(void)
Definition: guc.c:5755
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:472
TupleDesc GetPGVariableResultDesc(const char *name)
Definition: guc_funcs.c:404
PGDLLIMPORT char * ConfigFileName
Definition: guc_tables.c:503
PGDLLIMPORT int log_min_duration_statement
Definition: guc_tables.c:489
void AtStart_GUC(void)
Definition: guc.c:2162
const char * get_config_unit_name(int flags)
Definition: guc.c:2748
void ParseLongOption(const char *string, char **name, char **value)
Definition: guc.c:6169
void ResetAllOptions(void)
Definition: guc.c:1950
GucSource
Definition: guc.h:108
@ 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
void SetPGVariable(const char *name, List *args, bool is_local)
Definition: guc_funcs.c:325
char * ExtractSetVariableArgs(VariableSetStmt *stmt)
Definition: guc_funcs.c:167
ArrayType * GUCArrayReset(ArrayType *array, ArrayType **usersetArray)
Definition: guc.c:6502
PGDLLIMPORT char * IdentFileName
Definition: guc_tables.c:505
bool(* GucStringCheckHook)(char **newval, void **extra, GucSource source)
Definition: guc.h:180
PGDLLIMPORT bool log_executor_stats
Definition: guc_tables.c:469
PGDLLIMPORT bool Debug_print_plan
Definition: guc_tables.c:462
void void void void void void MarkGUCPrefixReserved(const char *className)
Definition: guc.c:5086
void InitializeGUCOptions(void)
Definition: guc.c:1476
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)
bool ParseConfigDirectory(const char *includedir, const char *calling_file, int calling_lineno, int depth, int elevel, ConfigVariable **head_p, ConfigVariable **tail_p)
void(* GucIntAssignHook)(int newval, void *extra)
Definition: guc.h:184
const char * GetConfigOption(const char *name, bool missing_ok, bool restrict_privileged)
Definition: guc.c:4181
void(* GucRealAssignHook)(double newval, void *extra)
Definition: guc.h:185
PGDLLIMPORT int log_min_duration_sample
Definition: guc_tables.c:488
GucContext
Definition: guc.h:68
@ 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
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
char * GetConfigOptionByName(const char *name, const char **varname, bool missing_ok)
Definition: guc.c:5234
PGDLLIMPORT bool Debug_pretty_print
Definition: guc_tables.c:465
PGDLLIMPORT int tcp_keepalives_interval
Definition: guc_tables.c:513
PGDLLIMPORT int log_temp_files
Definition: guc_tables.c:492
void ExecSetVariableStmt(VariableSetStmt *stmt, bool isTopLevel)
Definition: guc_funcs.c:43
PGDLLIMPORT int tcp_keepalives_count
Definition: guc_tables.c:514
bool(* GucIntCheckHook)(int *newval, void **extra, GucSource source)
Definition: guc.h:178
PGDLLIMPORT bool check_function_bodies
Definition: guc_tables.c:476
int GetConfigOptionFlags(const char *name, bool missing_ok)
Definition: guc.c:4276
PGDLLIMPORT int num_temp_buffers
Definition: guc_tables.c:500
PGDLLIMPORT double log_xact_sample_rate
Definition: guc_tables.c:494
bool check_GUC_name_for_parameter_acl(const char *name)
Definition: guc.c:1374
char * convert_GUC_name_for_parameter_acl(const char *name)
Definition: guc.c:1338
ArrayType * GUCArrayAdd(ArrayType *array, ArrayType **usersetArray, const char *name, const char *value, bool user_set)
Definition: guc.c:6284
char * guc_strdup(int elevel, const char *src)
Definition: guc.c:669
PGDLLIMPORT bool log_statement_stats
Definition: guc_tables.c:470
void ProcessConfigFile(GucContext context)
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:467
void ReportChangedGUCOptions(void)
Definition: guc.c:2530
PGDLLIMPORT int log_min_messages
Definition: guc_tables.c:486
void AtEOXact_GUC(bool isCommit, int nestLevel)
Definition: guc.c:2196
PGDLLIMPORT int log_parameter_max_length_on_error
Definition: guc_tables.c:491
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:3265
PGDLLIMPORT char * GUC_check_errmsg_string
Definition: guc.c:74
PGDLLIMPORT double log_statement_sample_rate
Definition: guc_tables.c:493
PGDLLIMPORT char * cluster_name
Definition: guc_tables.c:502
static struct @143 value
const char * progname
Definition: main.c:45
static rewind_source * source
Definition: pg_rewind.c:81
char * config_file
Definition: pg_rewind.c:64
static const char * userDoption
Definition: postgres.c:156
unsigned int Oid
Definition: postgres_ext.h:31
char * name
Definition: guc.h:137
bool ignore
Definition: guc.h:142
struct ConfigVariable * next
Definition: guc.h:144
bool applied
Definition: guc.h:143
char * filename
Definition: guc.h:140
int sourceline
Definition: guc.h:141
char * value
Definition: guc.h:138
char * errmsg
Definition: guc.h:139
Definition: pg_list.h:52
Definition: guc.h:168
const char * name
Definition: guc.h:169
int val
Definition: guc.h:170
bool hidden
Definition: guc.h:171
bool trace_sort
Definition: tuplesort.c:127