mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-08-15 01:15:49 +02:00
205 lines
5.6 KiB
C
205 lines
5.6 KiB
C
/*-------------------------------------------------------------------------
|
|
*
|
|
* guc_tables.h
|
|
* Declarations of tables used by GUC.
|
|
*
|
|
* See src/backend/utils/misc/README for design notes.
|
|
*
|
|
* Portions Copyright (c) 1996-2004, PostgreSQL Global Development Group
|
|
*
|
|
* $PostgreSQL: pgsql/src/include/utils/guc_tables.h,v 1.16 2004/08/29 05:06:58 momjian Exp $
|
|
*
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
#ifndef GUC_TABLES_H
|
|
#define GUC_TABLES_H 1
|
|
|
|
/*
|
|
* GUC supports these types of variables:
|
|
*/
|
|
enum config_type
|
|
{
|
|
PGC_BOOL,
|
|
PGC_INT,
|
|
PGC_REAL,
|
|
PGC_STRING
|
|
};
|
|
|
|
union config_var_value
|
|
{
|
|
bool boolval;
|
|
int intval;
|
|
double realval;
|
|
char *stringval;
|
|
};
|
|
|
|
/*
|
|
* Groupings to help organize all the run-time options for display
|
|
*/
|
|
enum config_group
|
|
{
|
|
UNGROUPED,
|
|
CONN_AUTH,
|
|
CONN_AUTH_SETTINGS,
|
|
CONN_AUTH_SECURITY,
|
|
RESOURCES,
|
|
RESOURCES_MEM,
|
|
RESOURCES_FSM,
|
|
RESOURCES_KERNEL,
|
|
WAL,
|
|
WAL_SETTINGS,
|
|
WAL_CHECKPOINTS,
|
|
QUERY_TUNING,
|
|
QUERY_TUNING_METHOD,
|
|
QUERY_TUNING_COST,
|
|
QUERY_TUNING_GEQO,
|
|
QUERY_TUNING_OTHER,
|
|
LOGGING,
|
|
LOGGING_WHERE,
|
|
LOGGING_WHEN,
|
|
LOGGING_WHAT,
|
|
STATS,
|
|
STATS_MONITORING,
|
|
STATS_COLLECTOR,
|
|
CLIENT_CONN,
|
|
CLIENT_CONN_STATEMENT,
|
|
CLIENT_CONN_LOCALE,
|
|
CLIENT_CONN_OTHER,
|
|
LOCK_MANAGEMENT,
|
|
COMPAT_OPTIONS,
|
|
COMPAT_OPTIONS_PREVIOUS,
|
|
COMPAT_OPTIONS_CLIENT,
|
|
DEVELOPER_OPTIONS,
|
|
COMPILE_OPTIONS,
|
|
CUSTOM_OPTIONS
|
|
};
|
|
|
|
/*
|
|
* Stack entry for saving the state of a variable prior to the current
|
|
* transaction
|
|
*/
|
|
typedef struct guc_stack
|
|
{
|
|
struct guc_stack *prev; /* previous stack item, if any */
|
|
int nest_level; /* nesting depth of cur transaction */
|
|
int status; /* previous status bits, see below */
|
|
GucSource tentative_source; /* source of the tentative_value */
|
|
GucSource source; /* source of the actual value */
|
|
union config_var_value tentative_val; /* previous tentative val */
|
|
union config_var_value value; /* previous actual value */
|
|
} GucStack;
|
|
|
|
/*
|
|
* Generic fields applicable to all types of variables
|
|
*
|
|
* The short description should be less than 80 chars in length. Some
|
|
* applications may use the long description as well, and will append
|
|
* it to the short description. (separated by a newline or '. ')
|
|
*/
|
|
struct config_generic
|
|
{
|
|
/* constant fields, must be set correctly in initial value: */
|
|
const char *name; /* name of variable - MUST BE FIRST */
|
|
GucContext context; /* context required to set the variable */
|
|
enum config_group group; /* to help organize variables by function */
|
|
const char *short_desc; /* short desc. of this variable's purpose */
|
|
const char *long_desc; /* long desc. of this variable's purpose */
|
|
int flags; /* flag bits, see below */
|
|
/* variable fields, initialized at runtime: */
|
|
enum config_type vartype; /* type of variable (set only at startup) */
|
|
int status; /* status bits, see below */
|
|
GucSource reset_source; /* source of the reset_value */
|
|
GucSource tentative_source; /* source of the tentative_value */
|
|
GucSource source; /* source of the current actual value */
|
|
GucStack *stack; /* stacked outside-of-transaction states */
|
|
};
|
|
|
|
/* bit values in flags field */
|
|
#define GUC_LIST_INPUT 0x0001 /* input can be list format */
|
|
#define GUC_LIST_QUOTE 0x0002 /* double-quote list elements */
|
|
#define GUC_NO_SHOW_ALL 0x0004 /* exclude from SHOW ALL */
|
|
#define GUC_NO_RESET_ALL 0x0008 /* exclude from RESET ALL */
|
|
#define GUC_REPORT 0x0010 /* auto-report changes to client */
|
|
#define GUC_NOT_IN_SAMPLE 0x0020 /* not in postgresql.conf.sample */
|
|
#define GUC_DISALLOW_IN_FILE 0x0040 /* can't set in postgresql.conf */
|
|
#define GUC_CUSTOM_PLACEHOLDER 0x0080 /* placeholder for a custom
|
|
* variable */
|
|
|
|
/* bit values in status field */
|
|
#define GUC_HAVE_TENTATIVE 0x0001 /* tentative value is defined */
|
|
#define GUC_HAVE_LOCAL 0x0002 /* a SET LOCAL has been executed */
|
|
#define GUC_HAVE_STACK 0x0004 /* we have stacked prior value(s) */
|
|
|
|
|
|
/* GUC records for specific variable types */
|
|
|
|
struct config_bool
|
|
{
|
|
struct config_generic gen;
|
|
/* these fields must be set correctly in initial value: */
|
|
/* (all but reset_val are constants) */
|
|
bool *variable;
|
|
bool reset_val;
|
|
GucBoolAssignHook assign_hook;
|
|
GucShowHook show_hook;
|
|
/* variable fields, initialized at runtime: */
|
|
bool tentative_val;
|
|
};
|
|
|
|
struct config_int
|
|
{
|
|
struct config_generic gen;
|
|
/* these fields must be set correctly in initial value: */
|
|
/* (all but reset_val are constants) */
|
|
int *variable;
|
|
int reset_val;
|
|
int min;
|
|
int max;
|
|
GucIntAssignHook assign_hook;
|
|
GucShowHook show_hook;
|
|
/* variable fields, initialized at runtime: */
|
|
int tentative_val;
|
|
};
|
|
|
|
struct config_real
|
|
{
|
|
struct config_generic gen;
|
|
/* these fields must be set correctly in initial value: */
|
|
/* (all but reset_val are constants) */
|
|
double *variable;
|
|
double reset_val;
|
|
double min;
|
|
double max;
|
|
GucRealAssignHook assign_hook;
|
|
GucShowHook show_hook;
|
|
/* variable fields, initialized at runtime: */
|
|
double tentative_val;
|
|
};
|
|
|
|
struct config_string
|
|
{
|
|
struct config_generic gen;
|
|
/* these fields must be set correctly in initial value: */
|
|
/* (all are constants) */
|
|
char **variable;
|
|
const char *boot_val;
|
|
GucStringAssignHook assign_hook;
|
|
GucShowHook show_hook;
|
|
/* variable fields, initialized at runtime: */
|
|
char *reset_val;
|
|
char *tentative_val;
|
|
};
|
|
|
|
/* constant tables corresponding to enums above and in guc.h */
|
|
extern const char *const config_group_names[];
|
|
extern const char *const config_type_names[];
|
|
extern const char *const GucContext_Names[];
|
|
extern const char *const GucSource_Names[];
|
|
|
|
/* get the current set of variables */
|
|
extern struct config_generic **get_guc_variables(void);
|
|
|
|
extern void build_guc_variables(void);
|
|
|
|
#endif /* GUC_TABLES_H */
|