summaryrefslogtreecommitdiff
path: root/src/include/utils/guc_tables.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/utils/guc_tables.h')
-rw-r--r--src/include/utils/guc_tables.h178
1 files changed, 178 insertions, 0 deletions
diff --git a/src/include/utils/guc_tables.h b/src/include/utils/guc_tables.h
new file mode 100644
index 00000000000..e8ccfeefd00
--- /dev/null
+++ b/src/include/utils/guc_tables.h
@@ -0,0 +1,178 @@
+/*-------------------------------------------------------------------------
+ *
+ * guc_tables.h
+ * Declarations of tables used by GUC.
+ *
+ * See src/backend/utils/misc/README for design notes.
+ *
+ * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
+ *
+ * $Id: guc_tables.h,v 1.1 2003/07/04 16:41:22 tgl Exp $
+ *
+ *-------------------------------------------------------------------------
+ */
+#ifndef GUC_TABLES
+#define GUC_TABLES 1
+
+/*
+ * Groupings to help organize all the run-time options for display.
+ *
+ * Keep this in sync with config_group_names[] in guc.c.
+ */
+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_SYSLOG,
+ 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
+};
+
+
+/*
+ * GUC supports these types of variables:
+ */
+enum config_type
+{
+ PGC_BOOL,
+ PGC_INT,
+ PGC_REAL,
+ PGC_STRING
+};
+
+/*
+ * 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 session_source; /* source of the session_value */
+ GucSource tentative_source; /* source of the tentative_value */
+ GucSource source; /* source of the current actual value */
+};
+
+/* 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 */
+
+/* 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 */
+
+
+/* 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;
+ bool (*assign_hook) (bool newval, bool doit, bool interactive);
+ const char *(*show_hook) (void);
+ /* variable fields, initialized at runtime: */
+ bool session_val;
+ 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;
+ bool (*assign_hook) (int newval, bool doit, bool interactive);
+ const char *(*show_hook) (void);
+ /* variable fields, initialized at runtime: */
+ int session_val;
+ 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;
+ bool (*assign_hook) (double newval, bool doit, bool interactive);
+ const char *(*show_hook) (void);
+ /* variable fields, initialized at runtime: */
+ double session_val;
+ 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;
+ const char *(*assign_hook) (const char *newval, bool doit, bool interactive);
+ const char *(*show_hook) (void);
+ /* variable fields, initialized at runtime: */
+ char *reset_val;
+ char *session_val;
+ char *tentative_val;
+};
+
+extern const char * const config_group_names[];
+extern struct config_generic **guc_variables;
+extern int num_guc_variables;
+
+extern void build_guc_variables(void);
+
+#endif