Commit b700a672 authored by Tom Lane's avatar Tom Lane

Add --help-config facility to dump information about GUC parameters

without needing a running backend.  Reorder postgresql.conf.sample
to match new layout of runtime.sgml.  This commit re-adds work lost
in Wednesday's crash.
parent efbbd107
This diff is collapsed.
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/main/main.c,v 1.57 2003/05/15 16:35:28 momjian Exp $ * $Header: /cvsroot/pgsql/src/backend/main/main.c,v 1.58 2003/07/04 16:41:21 tgl Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -37,6 +37,7 @@ ...@@ -37,6 +37,7 @@
#include "miscadmin.h" #include "miscadmin.h"
#include "bootstrap/bootstrap.h" #include "bootstrap/bootstrap.h"
#include "tcop/tcopprot.h" #include "tcop/tcopprot.h"
#include "utils/help_config.h"
#include "utils/ps_status.h" #include "utils/ps_status.h"
...@@ -198,7 +199,7 @@ main(int argc, char *argv[]) ...@@ -198,7 +199,7 @@ main(int argc, char *argv[])
} }
/* /*
* Now dispatch to one of PostmasterMain, PostgresMain, or * Now dispatch to one of PostmasterMain, PostgresMain, GucInfoMain, or
* BootstrapMain depending on the program name (and possibly first * BootstrapMain depending on the program name (and possibly first
* argument) we were called with. The lack of consistency here is * argument) we were called with. The lack of consistency here is
* historical. * historical.
...@@ -218,6 +219,14 @@ main(int argc, char *argv[]) ...@@ -218,6 +219,14 @@ main(int argc, char *argv[])
if (argc > 1 && strcmp(new_argv[1], "-boot") == 0) if (argc > 1 && strcmp(new_argv[1], "-boot") == 0)
exit(BootstrapMain(argc - 1, new_argv + 1)); exit(BootstrapMain(argc - 1, new_argv + 1));
/*
* If the first argument is "--help-config", then invoke runtime
* configuration option display mode.
* We remove "--help-config" from the arguments passed on to GucInfoMain.
*/
if (argc > 1 && strcmp(new_argv[1], "--help-config") == 0)
exit(GucInfoMain(argc - 1, new_argv + 1));
/* /*
* Otherwise we're a standalone backend. Invoke PostgresMain, * Otherwise we're a standalone backend. Invoke PostgresMain,
* specifying current userid as the "authenticated" Postgres user * specifying current userid as the "authenticated" Postgres user
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.348 2003/06/20 21:58:02 tgl Exp $ * $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.349 2003/07/04 16:41:21 tgl Exp $
* *
* NOTES * NOTES
* this is the "main" module of the postgres backend and * this is the "main" module of the postgres backend and
...@@ -1910,6 +1910,7 @@ usage(char *progname) ...@@ -1910,6 +1910,7 @@ usage(char *progname)
printf(" -P disable system indexes\n"); printf(" -P disable system indexes\n");
printf(" -s show statistics after each query\n"); printf(" -s show statistics after each query\n");
printf(" -S SORT-MEM set amount of memory for sorts (in kbytes)\n"); printf(" -S SORT-MEM set amount of memory for sorts (in kbytes)\n");
printf(" --help-config show configuration options, then exit. Details: --help-config -h\n");
printf(" --help show this help, then exit\n"); printf(" --help show this help, then exit\n");
printf(" --version output version information, then exit\n"); printf(" --version output version information, then exit\n");
printf("\nDeveloper options:\n"); printf("\nDeveloper options:\n");
...@@ -2547,7 +2548,7 @@ PostgresMain(int argc, char *argv[], const char *username) ...@@ -2547,7 +2548,7 @@ PostgresMain(int argc, char *argv[], const char *username)
if (!IsUnderPostmaster) if (!IsUnderPostmaster)
{ {
puts("\nPOSTGRES backend interactive interface "); puts("\nPOSTGRES backend interactive interface ");
puts("$Revision: 1.348 $ $Date: 2003/06/20 21:58:02 $\n"); puts("$Revision: 1.349 $ $Date: 2003/07/04 16:41:21 $\n");
} }
/* /*
......
# $Header: /cvsroot/pgsql/src/backend/utils/misc/Makefile,v 1.20 2002/11/01 22:52:33 tgl Exp $ # $Header: /cvsroot/pgsql/src/backend/utils/misc/Makefile,v 1.21 2003/07/04 16:41:21 tgl Exp $
subdir = src/backend/utils/misc subdir = src/backend/utils/misc
top_builddir = ../../../.. top_builddir = ../../../..
...@@ -6,7 +6,7 @@ include $(top_builddir)/src/Makefile.global ...@@ -6,7 +6,7 @@ include $(top_builddir)/src/Makefile.global
override CPPFLAGS := -I$(srcdir) $(CPPFLAGS) override CPPFLAGS := -I$(srcdir) $(CPPFLAGS)
OBJS = database.o superuser.o guc.o ps_status.o OBJS = database.o superuser.o guc.o help_config.o ps_status.o
# This location might depend on the installation directories. Therefore # This location might depend on the installation directories. Therefore
# we can't subsitute it into config.h. # we can't subsitute it into config.h.
......
This diff is collapsed.
This diff is collapsed.
...@@ -27,70 +27,83 @@ ...@@ -27,70 +27,83 @@
# #
# Connection Parameters # Connection Parameters
# #
#tcpip_socket = false
#ssl = false
# CONNECTIONS AND AUTHENTICATION
# ----------------------------------
# Connection Settings
#tcpip_socket = false
#max_connections = 32 #max_connections = 32
# note: increasing max_connections costs about 500 bytes of shared
# memory per connection slot, in addition to costs from shared_buffers
# and max_locks_per_transaction.
#superuser_reserved_connections = 2 #superuser_reserved_connections = 2
#port = 5432 #port = 5432
#unix_socket_directory = '' #unix_socket_directory = ''
#unix_socket_group = '' #unix_socket_group = ''
#unix_socket_permissions = 0777 # octal #unix_socket_permissions = 0777 # octal
#virtual_host = '' #virtual_host = ''
# Security & Authentication
#authentication_timeout = 60 # 1-600, in seconds
#ssl = false
#password_encryption = true
#krb_server_keyfile = '' #krb_server_keyfile = ''
#db_user_namespace = false
# # RESOURCE USAGE (except WAL)
# Shared Memory Size # ---------------------------------
# # Memory
#shared_buffers = 64 # min 16, at least max_connections*2, 8KB each #shared_buffers = 64 # min 16, at least max_connections*2, 8KB each
#max_locks_per_transaction = 64 # min 10, ~260*max_connections bytes each #sort_mem = 1024 # min 64, size in KB
#wal_buffers = 8 # min 4, 8KB each #vacuum_mem = 8192 # min 1024, size in KB
# fsm = free space map
#max_fsm_relations = 1000 # min 100, ~50 bytes each # Free Space Map
#max_fsm_pages = 20000 # min max_fsm_relations*16, 6 bytes each #max_fsm_pages = 20000 # min max_fsm_relations*16, 6 bytes each
# note: increasing max_connections also costs about 500 bytes each, #max_fsm_relations = 1000 # min 100, ~50 bytes each
# in addition to costs from shared_buffers and max_locks_per_transaction.
# Kernel Resource Usage
# #max_files_per_process = 1000 # min 25
# Non-shared Memory Sizes #preload_libraries = ''
#
#sort_mem = 1024 # min 64, size in KB
#vacuum_mem = 8192 # min 1024, size in KB
# # WRITE AHEAD LOG
# Write-ahead log (WAL) # ---------------------------------
# # Settings
#fsync = true # turns forced synchronization on or off
#wal_sync_method = fsync # the default varies across platforms:
# fsync, fdatasync, open_sync, or open_datasync
#wal_buffers = 8 # min 4, 8KB each
# Checkpoints
#checkpoint_segments = 3 # in logfile segments, min 1, 16MB each #checkpoint_segments = 3 # in logfile segments, min 1, 16MB each
#checkpoint_timeout = 300 # range 30-3600, in seconds #checkpoint_timeout = 300 # range 30-3600, in seconds
#checkpoint_warning = 30 # 0 is off, in seconds #checkpoint_warning = 30 # 0 is off, in seconds
#
#commit_delay = 0 # range 0-100000, in microseconds #commit_delay = 0 # range 0-100000, in microseconds
#commit_siblings = 5 # range 1-1000 #commit_siblings = 5 # range 1-1000
#
#fsync = true
#wal_sync_method = fsync # the default varies across platforms:
# # fsync, fdatasync, open_sync, or open_datasync
#wal_debug = 0 # range 0-16
# # QUERY TUNING
# Optimizer Parameters # --------------------------------
# # Planner Method Enabling
#enable_seqscan = true
#enable_indexscan = true
#enable_tidscan = true
#enable_sort = true
#enable_hashagg = true #enable_hashagg = true
#enable_nestloop = true
#enable_mergejoin = true
#enable_hashjoin = true #enable_hashjoin = true
#enable_indexscan = true
#enable_mergejoin = true
#enable_nestloop = true
#enable_seqscan = true
#enable_sort = true
#enable_tidscan = true
# Planner Cost Constants
#effective_cache_size = 1000 # typically 8KB each #effective_cache_size = 1000 # typically 8KB each
#random_page_cost = 4 # units are one sequential page fetch cost #random_page_cost = 4 # units are one sequential page fetch cost
...@@ -98,30 +111,38 @@ ...@@ -98,30 +111,38 @@
#cpu_index_tuple_cost = 0.001 # (same) #cpu_index_tuple_cost = 0.001 # (same)
#cpu_operator_cost = 0.0025 # (same) #cpu_operator_cost = 0.0025 # (same)
#from_collapse_limit = 8 # Genetic Query Optimizer
#join_collapse_limit = 8 # 1 disables collapsing of explicit JOINs
#default_statistics_target = 10 # range 1-1000
#
# GEQO Optimizer Parameters
#
#geqo = true #geqo = true
#geqo_selection_bias = 2.0 # range 1.5-2.0
#geqo_threshold = 11 #geqo_threshold = 11
#geqo_pool_size = 0 # default based on tables in statement,
# range 128-1024
#geqo_effort = 1 #geqo_effort = 1
#geqo_generations = 0 #geqo_generations = 0
#geqo_random_seed = -1 # auto-compute seed #geqo_pool_size = 0 # default based on tables in statement,
# range 128-1024
#geqo_random_seed = -1 # -1 = use variable seed
#geqo_selection_bias = 2.0 # range 1.5-2.0
# Other Planner Options
#default_statistics_target = 10 # range 1-1000
#from_collapse_limit = 8
#join_collapse_limit = 8 # 1 disables collapsing of explicit JOINs
# ERROR REPORTING AND LOGGING
# ------------------------------------
# Syslog
#syslog = 0 # range 0-2
#syslog_facility = 'LOCAL0'
#syslog_ident = 'postgres'
# When to Log
#
# Message display
#
#client_min_messages = notice # Values, in order of decreasing detail: #client_min_messages = notice # Values, in order of decreasing detail:
# debug5, debug4, debug3, debug2, debug1, # debug5, debug4, debug3, debug2, debug1,
# log, info, notice, warning, error # log, info, notice, warning, error
#log_min_messages = notice # Values, in order of decreasing detail: #log_min_messages = notice # Values, in order of decreasing detail:
# debug5, debug4, debug3, debug2, debug1, # debug5, debug4, debug3, debug2, debug1,
# info, notice, warning, error, log, fatal, # info, notice, warning, error, log, fatal,
...@@ -129,16 +150,6 @@ ...@@ -129,16 +150,6 @@
#log_error_verbosity = default # terse, default, or verbose messages #log_error_verbosity = default # terse, default, or verbose messages
#silent_mode = false
#log_connections = false
#log_hostname = false
#log_source_port = false
#log_pid = false
#log_statement = false
#log_duration = false
#log_timestamp = false
#log_min_error_statement = panic # Values in order of increasing severity: #log_min_error_statement = panic # Values in order of increasing severity:
# debug5, debug4, debug3, debug2, debug1, # debug5, debug4, debug3, debug2, debug1,
# info, notice, warning, error, panic(off) # info, notice, warning, error, panic(off)
...@@ -147,68 +158,80 @@ ...@@ -147,68 +158,80 @@
# execution time exceeds the value, in # execution time exceeds the value, in
# milliseconds. Zero disables. # milliseconds. Zero disables.
#silent_mode = false # DO NOT USE without Syslog!
# What to Log
#debug_print_parse = false #debug_print_parse = false
#debug_print_rewritten = false #debug_print_rewritten = false
#debug_print_plan = false #debug_print_plan = false
#debug_pretty_print = false #debug_pretty_print = false
#log_connections = false
#log_duration = false
#log_pid = false
#log_statement = false
#log_timestamp = false
#log_hostname = false
#log_source_port = false
#explain_pretty_print = true # RUNTIME STATISTICS
# -------------------------------------
# requires USE_ASSERT_CHECKING # Statistics Monitoring
#debug_assertions = true
#
# Syslog
#
#syslog = 0 # range 0-2
#syslog_facility = 'LOCAL0'
#syslog_ident = 'postgres'
#
# Statistics
#
#log_parser_stats = false #log_parser_stats = false
#log_planner_stats = false #log_planner_stats = false
#log_executor_stats = false #log_executor_stats = false
#log_statement_stats = false #log_statement_stats = false
# requires BTREE_BUILD_STATS # Query/Index Statistics Collector
#log_btree_build_stats = false
#
# Access statistics collection
#
#stats_start_collector = true #stats_start_collector = true
#stats_reset_on_server_start = true
#stats_command_string = false #stats_command_string = false
#stats_row_level = false
#stats_block_level = false #stats_block_level = false
#stats_row_level = false
#stats_reset_on_server_start = true
# # CLIENT CONNECTION DEFAULTS
# Misc # -------------------------------------
# # Statement Behavior
#dynamic_library_path = '$libdir'
#search_path = '$user,public' # schema names #search_path = '$user,public' # schema names
#default_transaction_isolation = 'read committed'
#default_transaction_read_only = false
#statement_timeout = 0 # 0 is disabled, in milliseconds
# Locale and Formatting
#datestyle = 'iso, us' #datestyle = 'iso, us'
#timezone = unknown # actually, defaults to TZ environment setting #timezone = unknown # actually, defaults to TZ environment setting
#australian_timezones = false #australian_timezones = false
#client_encoding = sql_ascii # actually, defaults to database encoding
#authentication_timeout = 60 # 1-600, in seconds
#deadlock_timeout = 1000 # in milliseconds
#default_transaction_isolation = 'read committed'
#default_transaction_read_only = false
#extra_float_digits = 0 # min -15, max 2 #extra_float_digits = 0 # min -15, max 2
#client_encoding = sql_ascii # actually, defaults to database encoding
# These settings are initialized by initdb -- they may be changed
# Other Defaults
#explain_pretty_print = true
#dynamic_library_path = '$libdir'
#max_expr_depth = 10000 # min 10 #max_expr_depth = 10000 # min 10
#max_files_per_process = 1000 # min 25
#password_encryption = true # LOCK MANAGEMENT
# -----------------------------------------
#deadlock_timeout = 1000 # in milliseconds
#max_locks_per_transaction = 64 # min 10, ~260*max_connections bytes each
# VERSION/PLATFORM COMPATIBILITY
# -----------------------------------------
# Previous Postgres Versions
#add_missing_from = true
#regex_flavor = advanced # advanced, extended, or basic #regex_flavor = advanced # advanced, extended, or basic
#sql_inheritance = true #sql_inheritance = true
# Other Platforms & Clients
#transform_null_equals = false #transform_null_equals = false
#statement_timeout = 0 # 0 is disabled, in milliseconds
#db_user_namespace = false
#preload_libraries = ''
#add_missing_from = true
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
# Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group # Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
# Portions Copyright (c) 1994, Regents of the University of California # Portions Copyright (c) 1994, Regents of the University of California
# #
# $Header: /cvsroot/pgsql/src/bin/initdb/Attic/initdb.sh,v 1.192 2003/06/02 19:00:29 tgl Exp $ # $Header: /cvsroot/pgsql/src/bin/initdb/Attic/initdb.sh,v 1.193 2003/07/04 16:41:21 tgl Exp $
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
...@@ -586,16 +586,12 @@ $ECHO_N "creating configuration files... "$ECHO_C ...@@ -586,16 +586,12 @@ $ECHO_N "creating configuration files... "$ECHO_C
cp "$PG_HBA_SAMPLE" "$PGDATA"/pg_hba.conf || exit_nicely cp "$PG_HBA_SAMPLE" "$PGDATA"/pg_hba.conf || exit_nicely
cp "$PG_IDENT_SAMPLE" "$PGDATA"/pg_ident.conf || exit_nicely cp "$PG_IDENT_SAMPLE" "$PGDATA"/pg_ident.conf || exit_nicely
( (
cat "$POSTGRESQL_CONF_SAMPLE" trigger="# These settings are initialized by initdb -- they may be changed"
echo sed -n "1,/$trigger/p" "$POSTGRESQL_CONF_SAMPLE"
echo
echo "#"
echo "# Locale settings"
echo "#"
echo "# (initialized by initdb -- may be changed)"
for cat in MESSAGES MONETARY NUMERIC TIME; do for cat in MESSAGES MONETARY NUMERIC TIME; do
echo "LC_$cat = '`pg_getlocale $cat`'" echo "LC_$cat = '`pg_getlocale $cat`'"
done done
sed -n "1,/$trigger/!p" "$POSTGRESQL_CONF_SAMPLE"
) > "$PGDATA"/postgresql.conf || exit_nicely ) > "$PGDATA"/postgresql.conf || exit_nicely
chmod 0600 "$PGDATA"/pg_hba.conf "$PGDATA"/pg_ident.conf \ chmod 0600 "$PGDATA"/pg_hba.conf "$PGDATA"/pg_ident.conf \
......
/*-------------------------------------------------------------------------
*
* 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
/*-------------------------------------------------------------------------
*
* help_config.h
* Interface to the --help-config option of main.c
*
* Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
*
* $Id: help_config.h,v 1.1 2003/07/04 16:41:22 tgl Exp $
*
*-------------------------------------------------------------------------
*/
#ifndef HELP_CONFIG_H
#define HELP_CONFIG_H 1
extern int GucInfoMain(int argc, char *argv[]);
#endif
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment