mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-04 00:02:52 -05:00 
			
		
		
		
	Code review for recent GUC changes --- try to make it less obvious that
these things were added at different times by different people ;-). Includes Aizaz Ahmed's patch to remove duplicate array in help_config.c.
This commit is contained in:
		
							parent
							
								
									aad71b40ca
								
							
						
					
					
						commit
						2baf4efe09
					
				@ -10,7 +10,7 @@
 | 
			
		||||
 * Written by Peter Eisentraut <peter_e@gmx.net>.
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *	  $Header: /cvsroot/pgsql/src/backend/utils/misc/guc.c,v 1.142 2003/07/28 16:22:02 momjian Exp $
 | 
			
		||||
 *	  $Header: /cvsroot/pgsql/src/backend/utils/misc/guc.c,v 1.143 2003/07/28 19:31:32 tgl Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *--------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@ -155,49 +155,6 @@ static char *timezone_string;
 | 
			
		||||
static char *XactIsoLevel_string;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Used for pg_settings. Keep in sync with config_type enum in guc_tables.h
 | 
			
		||||
 */
 | 
			
		||||
static char *config_type_name[] = 
 | 
			
		||||
{
 | 
			
		||||
	"bool",
 | 
			
		||||
	"integer",
 | 
			
		||||
	"real",
 | 
			
		||||
	"string"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Used for pg_settings. Keep in sync with GucContext enum in guc.h
 | 
			
		||||
 */
 | 
			
		||||
static char *GucContextName[] = 
 | 
			
		||||
{
 | 
			
		||||
	"internal",
 | 
			
		||||
	"postmaster",
 | 
			
		||||
	"sighup",
 | 
			
		||||
	"backend",
 | 
			
		||||
	"super-user",
 | 
			
		||||
	"userlimit",
 | 
			
		||||
	"user"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Used for pg_settings. Keep in sync with GucSource enum in guc.h
 | 
			
		||||
 */
 | 
			
		||||
static char *GucSourceName[] = 
 | 
			
		||||
{
 | 
			
		||||
	"default",
 | 
			
		||||
	"environment variable",
 | 
			
		||||
	"configuration file",
 | 
			
		||||
	"command line",
 | 
			
		||||
	"userstart",
 | 
			
		||||
	"database",
 | 
			
		||||
	"user",
 | 
			
		||||
	"client",
 | 
			
		||||
	"override",
 | 
			
		||||
	"session"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Macros for freeing malloc'd pointers only if appropriate to do so */
 | 
			
		||||
/* Some of these tests are probably redundant, but be safe ... */
 | 
			
		||||
#define SET_STRING_VARIABLE(rec, newval) \
 | 
			
		||||
@ -239,46 +196,126 @@ static char *GucSourceName[] =
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * The display name for each of the groupings defined in enum config_group
 | 
			
		||||
 * This array needs to be kept in sync with enum config_group.
 | 
			
		||||
 * This array however needs to be NULL terminated.
 | 
			
		||||
 * Displayable names for context types (enum GucContext)
 | 
			
		||||
 *
 | 
			
		||||
 * Note: these strings are deliberately not localized.
 | 
			
		||||
 */
 | 
			
		||||
const char *const config_group_names[] = {
 | 
			
		||||
const char * const GucContext_Names[] = 
 | 
			
		||||
{
 | 
			
		||||
	/* PGC_INTERNAL */			"internal",
 | 
			
		||||
	/* PGC_POSTMASTER */		"postmaster",
 | 
			
		||||
	/* PGC_SIGHUP */			"sighup",
 | 
			
		||||
	/* PGC_BACKEND */			"backend",
 | 
			
		||||
	/* PGC_SUSET */				"superuser",
 | 
			
		||||
	/* PGC_USERLIMIT */			"userlimit",
 | 
			
		||||
	/* PGC_USERSET */			"user"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Displayable names for source types (enum GucSource)
 | 
			
		||||
 *
 | 
			
		||||
 * Note: these strings are deliberately not localized.
 | 
			
		||||
 */	
 | 
			
		||||
const char * const GucSource_Names[] = 
 | 
			
		||||
{
 | 
			
		||||
	/* PGC_S_DEFAULT */			"default",
 | 
			
		||||
	/* PGC_S_ENV_VAR */			"environment variable",
 | 
			
		||||
	/* PGC_S_FILE */			"configuration file",
 | 
			
		||||
	/* PGC_S_ARGV */			"command line",
 | 
			
		||||
	/* PGC_S_UNPRIVILEGED */	"unprivileged",
 | 
			
		||||
	/* PGC_S_DATABASE */		"database",
 | 
			
		||||
	/* PGC_S_USER */			"user",
 | 
			
		||||
	/* PGC_S_CLIENT */			"client",
 | 
			
		||||
	/* PGC_S_OVERRIDE */		"override",
 | 
			
		||||
	/* PGC_S_SESSION */			"session"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Displayable names for the groupings defined in enum config_group
 | 
			
		||||
 */
 | 
			
		||||
const char *const config_group_names[] =
 | 
			
		||||
{
 | 
			
		||||
	/* UNGROUPED */
 | 
			
		||||
	gettext_noop("Ungrouped"),
 | 
			
		||||
	/* CONN_AUTH */
 | 
			
		||||
	gettext_noop("Connections & Authentication"),
 | 
			
		||||
	/* CONN_AUTH_SETTINGS */
 | 
			
		||||
	gettext_noop("Connections & Authentication / Connection Settings"),
 | 
			
		||||
	/* CONN_AUTH_SECURITY */
 | 
			
		||||
	gettext_noop("Connections & Authentication / Security & Authentication"),
 | 
			
		||||
	/* RESOURCES */
 | 
			
		||||
	gettext_noop("Resource Usage"),
 | 
			
		||||
	/* RESOURCES_MEM */
 | 
			
		||||
	gettext_noop("Resource Usage / Memory"),
 | 
			
		||||
	/* RESOURCES_FSM */
 | 
			
		||||
	gettext_noop("Resource Usage / Free Space Map"),
 | 
			
		||||
	/* RESOURCES_KERNEL */
 | 
			
		||||
	gettext_noop("Resource Usage / Kernel Resources"),
 | 
			
		||||
	/* WAL */
 | 
			
		||||
	gettext_noop("Write Ahead Log"),
 | 
			
		||||
	/* WAL_SETTINGS */
 | 
			
		||||
	gettext_noop("Write Ahead Log / Settings"),
 | 
			
		||||
	/* WAL_CHECKPOINTS */
 | 
			
		||||
	gettext_noop("Write Ahead Log / Checkpoints"),
 | 
			
		||||
	/* QUERY_TUNING */
 | 
			
		||||
	gettext_noop("Query Tuning"),
 | 
			
		||||
	/* QUERY_TUNING_METHOD */
 | 
			
		||||
	gettext_noop("Query Tuning / Planner Method Enabling"),
 | 
			
		||||
	/* QUERY_TUNING_COST */
 | 
			
		||||
	gettext_noop("Query Tuning / Planner Cost Constants"),
 | 
			
		||||
	/* QUERY_TUNING_GEQO */
 | 
			
		||||
	gettext_noop("Query Tuning / Genetic Query Optimizer"),
 | 
			
		||||
	/* QUERY_TUNING_OTHER */
 | 
			
		||||
	gettext_noop("Query Tuning / Other Planner Options"),
 | 
			
		||||
	/* LOGGING */
 | 
			
		||||
	gettext_noop("Reporting & Logging"),
 | 
			
		||||
	/* LOGGING_SYSLOG */
 | 
			
		||||
	gettext_noop("Reporting & Logging / Syslog"),
 | 
			
		||||
	/* LOGGING_WHEN */
 | 
			
		||||
	gettext_noop("Reporting & Logging / When To Log"),
 | 
			
		||||
	/* LOGGING_WHAT */
 | 
			
		||||
	gettext_noop("Reporting & Logging / What To Log"),
 | 
			
		||||
	/* STATS */
 | 
			
		||||
	gettext_noop("Statistics"),
 | 
			
		||||
	/* STATS_MONITORING */
 | 
			
		||||
	gettext_noop("Statistics / Monitoring"),
 | 
			
		||||
	/* STATS_COLLECTOR */
 | 
			
		||||
	gettext_noop("Statistics / Query & Index Statistics Collector"),
 | 
			
		||||
	/* CLIENT_CONN */
 | 
			
		||||
	gettext_noop("Client Connection Defaults"),
 | 
			
		||||
	/* CLIENT_CONN_STATEMENT */
 | 
			
		||||
	gettext_noop("Client Connection Defaults / Statement Behavior"),
 | 
			
		||||
	/* CLIENT_CONN_LOCALE */
 | 
			
		||||
	gettext_noop("Client Connection Defaults / Locale and Formatting"),
 | 
			
		||||
	/* CLIENT_CONN_OTHER */
 | 
			
		||||
	gettext_noop("Client Connection Defaults / Other Defaults"),
 | 
			
		||||
	/* LOCK_MANAGEMENT */
 | 
			
		||||
	gettext_noop("Lock Management"),
 | 
			
		||||
	/* COMPAT_OPTIONS */
 | 
			
		||||
	gettext_noop("Version & Platform Compatibility"),
 | 
			
		||||
	/* COMPAT_OPTIONS_PREVIOUS */
 | 
			
		||||
	gettext_noop("Version & Platform Compatibility / Previous Postgres Versions"),
 | 
			
		||||
	/* COMPAT_OPTIONS_CLIENT */
 | 
			
		||||
	gettext_noop("Version & Platform Compatibility / Other Platforms & Clients"),
 | 
			
		||||
	/* DEVELOPER_OPTIONS */
 | 
			
		||||
	gettext_noop("Developer Options"),
 | 
			
		||||
	/* help_config wants this array to be null-terminated */
 | 
			
		||||
	NULL
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Displayable names for GUC variable types (enum config_type)
 | 
			
		||||
 *
 | 
			
		||||
 * Note: these strings are deliberately not localized.
 | 
			
		||||
 */
 | 
			
		||||
const char * const config_type_names[] = 
 | 
			
		||||
{
 | 
			
		||||
	/* PGC_BOOL */		"bool",
 | 
			
		||||
	/* PGC_INT */		"integer",
 | 
			
		||||
	/* PGC_REAL */		"real",
 | 
			
		||||
	/* PGC_STRING */	"string"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Contents of GUC tables
 | 
			
		||||
@ -2509,9 +2546,9 @@ set_config_option(const char *name, const char *value,
 | 
			
		||||
										name)));
 | 
			
		||||
						return false;
 | 
			
		||||
					}
 | 
			
		||||
					/* Limit non-super user changes */
 | 
			
		||||
					/* Limit non-superuser changes */
 | 
			
		||||
					if (record->context == PGC_USERLIMIT &&
 | 
			
		||||
						source > PGC_S_USERSTART &&
 | 
			
		||||
						source > PGC_S_UNPRIVILEGED &&
 | 
			
		||||
						newval < conf->session_val &&
 | 
			
		||||
						!superuser())
 | 
			
		||||
					{
 | 
			
		||||
@ -2522,10 +2559,10 @@ set_config_option(const char *name, const char *value,
 | 
			
		||||
								 errhint("Must be superuser to change this value to false.")));
 | 
			
		||||
						return false;
 | 
			
		||||
					}
 | 
			
		||||
					/* Allow admin to override non-super user setting */
 | 
			
		||||
					/* Allow admin to override non-superuser setting */
 | 
			
		||||
					if (record->context == PGC_USERLIMIT &&
 | 
			
		||||
						source < PGC_S_USERSTART &&
 | 
			
		||||
						record->session_source > PGC_S_USERSTART &&
 | 
			
		||||
						source < PGC_S_UNPRIVILEGED &&
 | 
			
		||||
						record->session_source > PGC_S_UNPRIVILEGED &&
 | 
			
		||||
						newval > conf->session_val &&
 | 
			
		||||
						!superuser())
 | 
			
		||||
							DoIt = DoIt_orig;
 | 
			
		||||
@ -2605,9 +2642,9 @@ set_config_option(const char *name, const char *value,
 | 
			
		||||
										newval, name, conf->min, conf->max)));
 | 
			
		||||
						return false;
 | 
			
		||||
					}
 | 
			
		||||
					/* Limit non-super user changes */
 | 
			
		||||
					/* Limit non-superuser changes */
 | 
			
		||||
					if (record->context == PGC_USERLIMIT &&
 | 
			
		||||
						source > PGC_S_USERSTART &&
 | 
			
		||||
						source > PGC_S_UNPRIVILEGED &&
 | 
			
		||||
						conf->session_val != 0 &&
 | 
			
		||||
						(newval > conf->session_val || newval == 0) &&
 | 
			
		||||
						!superuser())
 | 
			
		||||
@ -2619,10 +2656,10 @@ set_config_option(const char *name, const char *value,
 | 
			
		||||
								 errhint("Must be superuser to increase this value or set it to zero.")));
 | 
			
		||||
						return false;
 | 
			
		||||
					}
 | 
			
		||||
					/* Allow admin to override non-super user setting */
 | 
			
		||||
					/* Allow admin to override non-superuser setting */
 | 
			
		||||
					if (record->context == PGC_USERLIMIT &&
 | 
			
		||||
						source < PGC_S_USERSTART &&
 | 
			
		||||
						record->session_source > PGC_S_USERSTART &&
 | 
			
		||||
						source < PGC_S_UNPRIVILEGED &&
 | 
			
		||||
						record->session_source > PGC_S_UNPRIVILEGED &&
 | 
			
		||||
						newval < conf->session_val &&
 | 
			
		||||
						!superuser())
 | 
			
		||||
							DoIt = DoIt_orig;
 | 
			
		||||
@ -2702,9 +2739,9 @@ set_config_option(const char *name, const char *value,
 | 
			
		||||
										newval, name, conf->min, conf->max)));
 | 
			
		||||
						return false;
 | 
			
		||||
					}
 | 
			
		||||
					/* Limit non-super user changes */
 | 
			
		||||
					/* Limit non-superuser changes */
 | 
			
		||||
					if (record->context == PGC_USERLIMIT &&
 | 
			
		||||
						source > PGC_S_USERSTART &&
 | 
			
		||||
						source > PGC_S_UNPRIVILEGED &&
 | 
			
		||||
						newval > conf->session_val &&
 | 
			
		||||
						!superuser())
 | 
			
		||||
					{
 | 
			
		||||
@ -2715,10 +2752,10 @@ set_config_option(const char *name, const char *value,
 | 
			
		||||
								 errhint("Must be superuser to increase this value.")));
 | 
			
		||||
						return false;
 | 
			
		||||
					}
 | 
			
		||||
					/* Allow admin to override non-super user setting */
 | 
			
		||||
					/* Allow admin to override non-superuser setting */
 | 
			
		||||
					if (record->context == PGC_USERLIMIT &&
 | 
			
		||||
						source < PGC_S_USERSTART &&
 | 
			
		||||
						record->session_source > PGC_S_USERSTART &&
 | 
			
		||||
						source < PGC_S_UNPRIVILEGED &&
 | 
			
		||||
						record->session_source > PGC_S_UNPRIVILEGED &&
 | 
			
		||||
						newval < conf->session_val &&
 | 
			
		||||
						!superuser())
 | 
			
		||||
							DoIt = DoIt_orig;
 | 
			
		||||
@ -2791,15 +2828,18 @@ set_config_option(const char *name, const char *value,
 | 
			
		||||
						return false;
 | 
			
		||||
					}
 | 
			
		||||
 | 
			
		||||
					if (*conf->variable)
 | 
			
		||||
					if (record->context == PGC_USERLIMIT &&
 | 
			
		||||
						*conf->variable)
 | 
			
		||||
					{
 | 
			
		||||
						int old_int_value, new_int_value;
 | 
			
		||||
 | 
			
		||||
						/* Limit non-super user changes */
 | 
			
		||||
						assign_msglvl(&old_int_value, conf->reset_val, true, interactive);
 | 
			
		||||
						assign_msglvl(&new_int_value, newval, true, interactive);
 | 
			
		||||
						if (record->context == PGC_USERLIMIT &&
 | 
			
		||||
							source > PGC_S_USERSTART &&
 | 
			
		||||
						/* all USERLIMIT strings are message levels */
 | 
			
		||||
						assign_msglvl(&old_int_value, conf->reset_val,
 | 
			
		||||
									  true, interactive);
 | 
			
		||||
						assign_msglvl(&new_int_value, newval,
 | 
			
		||||
									  true, interactive);
 | 
			
		||||
						/* Limit non-superuser changes */
 | 
			
		||||
						if (source > PGC_S_UNPRIVILEGED &&
 | 
			
		||||
							new_int_value > old_int_value &&
 | 
			
		||||
							!superuser())
 | 
			
		||||
						{
 | 
			
		||||
@ -2810,14 +2850,13 @@ set_config_option(const char *name, const char *value,
 | 
			
		||||
									 errhint("Must be superuser to increase this value.")));
 | 
			
		||||
							return false;
 | 
			
		||||
						}
 | 
			
		||||
						/* Allow admin to override non-super user setting */
 | 
			
		||||
						if (record->context == PGC_USERLIMIT &&
 | 
			
		||||
							source < PGC_S_USERSTART &&
 | 
			
		||||
							record->session_source > PGC_S_USERSTART &&
 | 
			
		||||
						/* Allow admin to override non-superuser setting */
 | 
			
		||||
						if (source < PGC_S_UNPRIVILEGED &&
 | 
			
		||||
							record->session_source > PGC_S_UNPRIVILEGED &&
 | 
			
		||||
							newval < conf->session_val &&
 | 
			
		||||
							!superuser())
 | 
			
		||||
								DoIt = DoIt_orig;
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
				else if (conf->reset_val)
 | 
			
		||||
				{
 | 
			
		||||
@ -3389,13 +3428,13 @@ GetConfigOptionByNum(int varnum, const char **values, bool *noshow)
 | 
			
		||||
	values[1] = _ShowOption(conf);
 | 
			
		||||
 | 
			
		||||
	/* context */
 | 
			
		||||
	values[2] = GucContextName[conf->context];
 | 
			
		||||
	values[2] = GucContext_Names[conf->context];
 | 
			
		||||
 | 
			
		||||
	/* vartype */
 | 
			
		||||
	values[3] = config_type_name[conf->vartype];
 | 
			
		||||
	values[3] = config_type_names[conf->vartype];
 | 
			
		||||
 | 
			
		||||
	/* source */
 | 
			
		||||
	values[4] = GucSourceName[conf->source];
 | 
			
		||||
	values[4] = GucSource_Names[conf->source];
 | 
			
		||||
 | 
			
		||||
	/* now get the type specifc attributes */
 | 
			
		||||
	switch (conf->vartype)
 | 
			
		||||
 | 
			
		||||
@ -25,7 +25,7 @@
 | 
			
		||||
 * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *	  $Header: /cvsroot/pgsql/src/backend/utils/misc/help_config.c,v 1.2 2003/07/09 17:57:47 momjian Exp $
 | 
			
		||||
 *	  $Header: /cvsroot/pgsql/src/backend/utils/misc/help_config.c,v 1.3 2003/07/28 19:31:32 tgl Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@ -132,20 +132,6 @@ static void printGenericFoot(struct config_generic structToPrint);
 | 
			
		||||
static void printMixedStruct(mixedStruct * structToPrint);
 | 
			
		||||
static bool displayStruct(mixedStruct * structToDisplay);
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * This array contains the display names for each of the GucContexts available
 | 
			
		||||
 *
 | 
			
		||||
 * Note: these strings are deliberately not localized.
 | 
			
		||||
 */
 | 
			
		||||
static const char *const GucContext_names[] = {
 | 
			
		||||
	"INTERNAL",
 | 
			
		||||
	"POSTMASTER",
 | 
			
		||||
	"SIGHUP",
 | 
			
		||||
	"BACKEND",
 | 
			
		||||
	"SUSET",
 | 
			
		||||
	"USERLIMIT",
 | 
			
		||||
	"USERSET"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Reads in the the command line options and sets the state of the program
 | 
			
		||||
@ -406,7 +392,7 @@ printGenericHead(struct config_generic structToPrint)
 | 
			
		||||
{
 | 
			
		||||
	printf(gettext(GENERIC_FORMAT[outFormat]),
 | 
			
		||||
		   structToPrint.name,
 | 
			
		||||
		   GucContext_names[structToPrint.context],
 | 
			
		||||
		   GucContext_Names[structToPrint.context],
 | 
			
		||||
		   gettext(config_group_names[structToPrint.group]));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -7,7 +7,7 @@
 | 
			
		||||
 * Copyright 2000-2003 by PostgreSQL Global Development Group
 | 
			
		||||
 * Written by Peter Eisentraut <peter_e@gmx.net>.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: guc.h,v 1.37 2003/07/28 16:22:13 momjian Exp $
 | 
			
		||||
 * $Id: guc.h,v 1.38 2003/07/28 19:31:32 tgl Exp $
 | 
			
		||||
 *--------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
#ifndef GUC_H
 | 
			
		||||
@ -49,21 +49,19 @@
 | 
			
		||||
 * we don't yet know if the user is a superuser.
 | 
			
		||||
 *
 | 
			
		||||
 * USERLIMIT options can only be manipulated in certain ways by
 | 
			
		||||
 * non-super users.
 | 
			
		||||
 * non-superusers.
 | 
			
		||||
 *
 | 
			
		||||
 * USERSET options can be set by anyone any time.
 | 
			
		||||
 *
 | 
			
		||||
 * Keep in sync with GucContextName in guc.c
 | 
			
		||||
 */
 | 
			
		||||
typedef enum
 | 
			
		||||
{
 | 
			
		||||
	PGC_INTERNAL = 0,
 | 
			
		||||
	PGC_POSTMASTER = 1,
 | 
			
		||||
	PGC_SIGHUP = 2,
 | 
			
		||||
	PGC_BACKEND = 3,
 | 
			
		||||
	PGC_SUSET = 4,
 | 
			
		||||
	PGC_USERLIMIT = 5,
 | 
			
		||||
	PGC_USERSET = 6
 | 
			
		||||
	PGC_INTERNAL,
 | 
			
		||||
	PGC_POSTMASTER,
 | 
			
		||||
	PGC_SIGHUP,
 | 
			
		||||
	PGC_BACKEND,
 | 
			
		||||
	PGC_SUSET,
 | 
			
		||||
	PGC_USERLIMIT,
 | 
			
		||||
	PGC_USERSET
 | 
			
		||||
} GucContext;
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
@ -76,24 +74,21 @@ typedef enum
 | 
			
		||||
 * as the current value.  Note that source == PGC_S_OVERRIDE should be
 | 
			
		||||
 * used when setting a PGC_INTERNAL option.
 | 
			
		||||
 *
 | 
			
		||||
 * Keep in sync with GucSourceName in guc.c
 | 
			
		||||
 * PGC_S_UNPRIVILEGED isn't actually a source value, but the dividing line
 | 
			
		||||
 * between privileged and unprivileged sources for USERLIMIT purposes.
 | 
			
		||||
 */
 | 
			
		||||
typedef enum
 | 
			
		||||
{
 | 
			
		||||
	PGC_S_DEFAULT = 0,			/* wired-in default */
 | 
			
		||||
	PGC_S_ENV_VAR = 1,			/* postmaster environment variable */
 | 
			
		||||
	PGC_S_FILE = 2,				/* postgresql.conf */
 | 
			
		||||
	PGC_S_ARGV = 3,				/* postmaster command line */
 | 
			
		||||
	PGC_S_USERSTART=4,			/*
 | 
			
		||||
								 *	Settings below are controlled by users.
 | 
			
		||||
								 *	This is used by PGC_USERLIMT to prevent
 | 
			
		||||
								 *	non-super users from changing certain settings.
 | 
			
		||||
								 */
 | 
			
		||||
	PGC_S_DATABASE = 5,			/* per-database setting */
 | 
			
		||||
	PGC_S_USER = 6,				/* per-user setting */
 | 
			
		||||
	PGC_S_CLIENT = 7,			/* from client connection request */
 | 
			
		||||
	PGC_S_OVERRIDE = 8,			/* special case to forcibly set default */
 | 
			
		||||
	PGC_S_SESSION = 9			/* SET command */
 | 
			
		||||
	PGC_S_DEFAULT,				/* wired-in default */
 | 
			
		||||
	PGC_S_ENV_VAR,				/* postmaster environment variable */
 | 
			
		||||
	PGC_S_FILE,					/* postgresql.conf */
 | 
			
		||||
	PGC_S_ARGV,					/* postmaster command line */
 | 
			
		||||
	PGC_S_UNPRIVILEGED,			/* dividing line for USERLIMIT */
 | 
			
		||||
	PGC_S_DATABASE,				/* per-database setting */
 | 
			
		||||
	PGC_S_USER,					/* per-user setting */
 | 
			
		||||
	PGC_S_CLIENT,				/* from client connection request */
 | 
			
		||||
	PGC_S_OVERRIDE,				/* special case to forcibly set default */
 | 
			
		||||
	PGC_S_SESSION				/* SET command */
 | 
			
		||||
} GucSource;
 | 
			
		||||
 | 
			
		||||
/* GUC vars that are actually declared in guc.c, rather than elsewhere */
 | 
			
		||||
@ -117,6 +112,7 @@ extern bool Australian_timezones;
 | 
			
		||||
extern int	log_min_error_statement;
 | 
			
		||||
extern int	log_min_messages;
 | 
			
		||||
extern int	client_min_messages;
 | 
			
		||||
extern int	log_min_duration_statement;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
extern void SetConfigOption(const char *name, const char *value,
 | 
			
		||||
@ -154,6 +150,4 @@ void write_nondefault_variables(GucContext context);
 | 
			
		||||
void read_nondefault_variables(void);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
extern int	log_min_duration_statement;
 | 
			
		||||
 | 
			
		||||
#endif   /* GUC_H */
 | 
			
		||||
 | 
			
		||||
@ -7,7 +7,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
 | 
			
		||||
 *
 | 
			
		||||
 *	  $Id: guc_tables.h,v 1.3 2003/07/28 16:22:16 momjian Exp $
 | 
			
		||||
 *	  $Id: guc_tables.h,v 1.4 2003/07/28 19:31:32 tgl Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
@ -15,9 +15,7 @@
 | 
			
		||||
#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.
 | 
			
		||||
 * Groupings to help organize all the run-time options for display
 | 
			
		||||
 */
 | 
			
		||||
enum config_group
 | 
			
		||||
{
 | 
			
		||||
@ -55,18 +53,15 @@ enum config_group
 | 
			
		||||
	DEVELOPER_OPTIONS
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * GUC supports these types of variables:
 | 
			
		||||
 *
 | 
			
		||||
 * Keep in sync with config_type_name in guc.c
 | 
			
		||||
 */
 | 
			
		||||
enum config_type
 | 
			
		||||
{
 | 
			
		||||
	PGC_BOOL = 0,
 | 
			
		||||
	PGC_INT = 1,
 | 
			
		||||
	PGC_REAL = 2,
 | 
			
		||||
	PGC_STRING = 3
 | 
			
		||||
	PGC_BOOL,
 | 
			
		||||
	PGC_INT,
 | 
			
		||||
	PGC_REAL,
 | 
			
		||||
	PGC_STRING
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
@ -171,7 +166,13 @@ struct config_string
 | 
			
		||||
	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[];
 | 
			
		||||
 | 
			
		||||
/* the current set of variables */
 | 
			
		||||
extern struct config_generic **guc_variables;
 | 
			
		||||
extern int	num_guc_variables;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user