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.
This commit is contained in:
parent
efbbd107c7
commit
b700a672fe
@ -1,5 +1,5 @@
|
||||
<!--
|
||||
$Header: /cvsroot/pgsql/doc/src/sgml/runtime.sgml,v 1.189 2003/06/30 16:47:01 tgl Exp $
|
||||
$Header: /cvsroot/pgsql/doc/src/sgml/runtime.sgml,v 1.190 2003/07/04 16:41:21 tgl Exp $
|
||||
-->
|
||||
|
||||
<Chapter Id="runtime">
|
||||
@ -710,6 +710,18 @@ SET ENABLE_SEQSCAN TO OFF;
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>VIRTUAL_HOST</varname> (<type>string</type>)</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Specifies the host name or IP address on which the server is
|
||||
to listen for connections from client applications. The
|
||||
default is to listen on all configured addresses (including
|
||||
<systemitem class="systemname">localhost</>).
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</sect3>
|
||||
@ -748,23 +760,23 @@ SET ENABLE_SEQSCAN TO OFF;
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>KRB_SERVER_KEYFILE</varname> (<type>string</type>)</term>
|
||||
<term><varname>PASSWORD_ENCRYPTION</varname> (<type>boolean</type>)</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Sets the location of the Kerberos server key file. See
|
||||
<xref linkend="kerberos-auth"> for details.
|
||||
When a password is specified in <command>CREATE USER</> or
|
||||
<command>ALTER USER</> without writing either <literal>ENCRYPTED</> or
|
||||
<literal>UNENCRYPTED</>, this option determines whether the password is to be
|
||||
encrypted. The default is on (encrypt the password).
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>VIRTUAL_HOST</varname> (<type>string</type>)</term>
|
||||
<term><varname>KRB_SERVER_KEYFILE</varname> (<type>string</type>)</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Specifies the host name or IP address on which the server is
|
||||
to listen for connections from client applications. The
|
||||
default is to listening on all configured addresses (including
|
||||
<systemitem class="systemname">localhost</>).
|
||||
Sets the location of the Kerberos server key file. See
|
||||
<xref linkend="kerberos-auth"> for details.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
@ -905,8 +917,8 @@ SET ENABLE_SEQSCAN TO OFF;
|
||||
|
||||
</variablelist>
|
||||
</sect3>
|
||||
<sect3 id="runtime-config-resource-disk">
|
||||
<title>Disk Resource Usage</title>
|
||||
<sect3 id="runtime-config-resource-kernel">
|
||||
<title>Kernel Resource Usage</title>
|
||||
<variablelist>
|
||||
|
||||
<varlistentry>
|
||||
@ -957,7 +969,9 @@ SET ENABLE_SEQSCAN TO OFF;
|
||||
<para>
|
||||
By preloading a shared library (and initializing it if
|
||||
applicable), the library startup time is avoided when the
|
||||
library is first used.
|
||||
library is first used. However, the time to start each new
|
||||
server process may increase, even if that process never
|
||||
uses the library.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
@ -967,7 +981,7 @@ SET ENABLE_SEQSCAN TO OFF;
|
||||
</sect2>
|
||||
|
||||
<sect2 id="runtime-config-wal">
|
||||
<title>Write Ahead Logging</title>
|
||||
<title>Write Ahead Log</title>
|
||||
|
||||
<para>
|
||||
See also <xref linkend="wal-configuration"> for details on WAL
|
||||
@ -1019,14 +1033,6 @@ SET ENABLE_SEQSCAN TO OFF;
|
||||
<varname>fsync</varname>.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
It should be noted that the performance penalty of having
|
||||
<varname>fsync</> on is considerably less in
|
||||
<productname>PostgreSQL</> version 7.1 and later. If you
|
||||
previously suppressed <function>fsync</> for performance
|
||||
reasons, you may wish to reconsider your choice.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
This option can only be set at server start or in the
|
||||
<filename>postgresql.conf</filename> file.
|
||||
@ -1056,7 +1062,7 @@ SET ENABLE_SEQSCAN TO OFF;
|
||||
<listitem>
|
||||
<para>
|
||||
Number of disk-page buffers in shared memory for WAL
|
||||
logging. The default is 4. This option can only be set at
|
||||
logging. The default is 8. This option can only be set at
|
||||
server start.
|
||||
</para>
|
||||
</listitem>
|
||||
@ -1288,9 +1294,18 @@ SET ENABLE_SEQSCAN TO OFF;
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><varname>CPU_TUPLE_COST</varname> (<type>floating point</type>)</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Sets the query planner's estimate of the cost of processing
|
||||
each tuple during a query. This is measured as a fraction of
|
||||
the cost of a sequential page fetch.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>CPU_INDEX_TUPLE_COST</varname> (<type>floating point</type>)</term>
|
||||
<listitem>
|
||||
@ -1313,21 +1328,11 @@ SET ENABLE_SEQSCAN TO OFF;
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>CPU_TUPLE_COST</varname> (<type>floating point</type>)</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Sets the query planner's estimate of the cost of processing
|
||||
each tuple during a query. This is measured as a fraction of
|
||||
the cost of a sequential page fetch.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
</sect3>
|
||||
<sect3 id="runtime-config-query-geqo">
|
||||
<title>Genetic Estimate Query Optimizer</title>
|
||||
<title>Genetic Query Optimizer</title>
|
||||
|
||||
<variablelist>
|
||||
|
||||
@ -1395,20 +1400,23 @@ SET ENABLE_SEQSCAN TO OFF;
|
||||
</variablelist>
|
||||
</sect3>
|
||||
<sect3 id="runtime-config-query-other">
|
||||
<title>Other Query Modifiers</title>
|
||||
<title>Other Planner Options</title>
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>EXPLAIN_PRETTY_PRINT</varname> (<type>boolean</type>)</term>
|
||||
<term><varname>DEFAULT_STATISTICS_TARGET</varname> (<type>integer</type>)</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Determines whether <command>EXPLAIN VERBOSE</> uses the indented
|
||||
or non-indented format for displaying detailed query-tree dumps.
|
||||
Sets the default statistics target for table columns that have not
|
||||
had a column-specific target set via <command>ALTER TABLE SET
|
||||
STATISTICS</>. Larger values increase the time needed to do
|
||||
<command>ANALYZE</>, but may improve the quality of the planner's
|
||||
estimates. The default value is 10.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>FROM_COLLAPSE_LIMIT</varname> (<type>integer</type>)</term>
|
||||
<listitem>
|
||||
@ -1437,25 +1445,13 @@ SET ENABLE_SEQSCAN TO OFF;
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>MAX_EXPR_DEPTH</varname> (<type>integer</type>)</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Sets the maximum expression nesting depth of the parser. The
|
||||
default value is high enough for any normal query, but you can
|
||||
raise it if needed. (But if you raise it too high, you run
|
||||
the risk of server crashes due to stack overflow.)
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</sect3>
|
||||
</sect2>
|
||||
|
||||
<sect2 id="runtime-config-logging">
|
||||
<title>Logging and Debugging</title>
|
||||
<title>Error Reporting and Logging</title>
|
||||
|
||||
<sect3 id="runtime-config-logging-syslog">
|
||||
<title>Syslog</title>
|
||||
@ -1512,88 +1508,6 @@ SET ENABLE_SEQSCAN TO OFF;
|
||||
<sect3 id="runtime-config-logging-when">
|
||||
<title>When To Log</title>
|
||||
|
||||
<para>
|
||||
Here is a list of the various message severity levels:
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><literal>DEBUG[1-5]</literal></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Provides information for use by developers.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><literal>INFO</literal></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Provides information implicitly requested by the user,
|
||||
e.g., during <command>VACUUM VERBOSE</>.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><literal>NOTICE</literal></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Provides information that may be helpful to users, e.g.,
|
||||
truncation of long identifiers and the creation of indexes as part
|
||||
of primary keys.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><literal>WARNING</literal></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Provides warnings to the user, e.g., <command>COMMIT</>
|
||||
outside a transaction block.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><literal>ERROR</literal></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Reports an error that caused the current transaction to abort.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><literal>LOG</literal></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Reports information of interest to administrators, e.g.,
|
||||
checkpoint activity.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><literal>FATAL</literal></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Reports an error that caused the current session to abort.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><literal>PANIC</literal></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Reports an error that caused all sessions to abort.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</para>
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry>
|
||||
@ -1699,6 +1613,90 @@ SET ENABLE_SEQSCAN TO OFF;
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
<para>
|
||||
Here is a list of the various message severity levels used in
|
||||
these settings:
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><literal>DEBUG[1-5]</literal></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Provides information for use by developers.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><literal>INFO</literal></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Provides information implicitly requested by the user,
|
||||
e.g., during <command>VACUUM VERBOSE</>.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><literal>NOTICE</literal></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Provides information that may be helpful to users, e.g.,
|
||||
truncation of long identifiers and the creation of indexes as part
|
||||
of primary keys.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><literal>WARNING</literal></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Provides warnings to the user, e.g., <command>COMMIT</>
|
||||
outside a transaction block.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><literal>ERROR</literal></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Reports an error that caused the current transaction to abort.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><literal>LOG</literal></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Reports information of interest to administrators, e.g.,
|
||||
checkpoint activity.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><literal>FATAL</literal></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Reports an error that caused the current session to abort.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><literal>PANIC</literal></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Reports an error that caused all sessions to abort.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</para>
|
||||
|
||||
</sect3>
|
||||
<sect3 id="runtime-config-logging-what">
|
||||
<title>What To Log</title>
|
||||
@ -1811,6 +1809,95 @@ SET ENABLE_SEQSCAN TO OFF;
|
||||
</sect3>
|
||||
</sect2>
|
||||
|
||||
<sect2 id="runtime-config-statistics">
|
||||
<title>Runtime Statistics</title>
|
||||
|
||||
<sect3 id="runtime-config-statistics-monitor">
|
||||
<title>Statistics Monitoring</title>
|
||||
<variablelist>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>LOG_STATEMENT_STATS</varname> (<type>boolean</type>)</term>
|
||||
<term><varname>LOG_PARSER_STATS</varname> (<type>boolean</type>)</term>
|
||||
<term><varname>LOG_PLANNER_STATS</varname> (<type>boolean</type>)</term>
|
||||
<term><varname>LOG_EXECUTOR_STATS</varname> (<type>boolean</type>)</term>
|
||||
<listitem>
|
||||
<para>
|
||||
For each query, write performance statistics of the respective
|
||||
module to the server log. This is a crude profiling
|
||||
instrument.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
</sect3>
|
||||
<sect3 id="runtime-config-statistics-collector">
|
||||
<title>Query and Index Statistics Collector</title>
|
||||
<variablelist>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>STATS_START_COLLECTOR</varname> (<type>boolean</type>)</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Controls whether the server should start the
|
||||
statistics-collection subprocess. This is on by default, but
|
||||
may be turned off if you know you have no interest in
|
||||
collecting statistics. This option can only be set at server
|
||||
start.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>STATS_COMMAND_STRING</varname> (<type>boolean</type>)</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Enables the collection of statistics on the currently
|
||||
executing command of each session, along with the time at
|
||||
which that command began execution. This option is off by
|
||||
default. Note that even when enabled, this information is not
|
||||
visible to all users, only to superusers and the user owning
|
||||
the session being reported on; so it should not represent a
|
||||
security risk. This data can be accessed via the
|
||||
<structname>pg_stat_activity</structname> system view; refer
|
||||
to <xref linkend="monitoring"> for more information.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>STATS_BLOCK_LEVEL</varname> (<type>boolean</type>)</term>
|
||||
<term><varname>STATS_ROW_LEVEL</varname> (<type>boolean</type>)</term>
|
||||
<listitem>
|
||||
<para>
|
||||
These enable the collection of block-level and row-level statistics
|
||||
on database activity, respectively. These options are off by
|
||||
default. This data can be accessed via the
|
||||
<structname>pg_stat</structname> and
|
||||
<structname>pg_statio</structname> family of system views;
|
||||
refer to <xref linkend="monitoring"> for more information.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>STATS_RESET_ON_SERVER_START</varname> (<type>boolean</type>)</term>
|
||||
<listitem>
|
||||
<para>
|
||||
If on, collected statistics are zeroed out whenever the server
|
||||
is restarted. If off, statistics are accumulated across server
|
||||
restarts. The default is on. This option can only be set at
|
||||
server start.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</sect3>
|
||||
</sect2>
|
||||
|
||||
<sect2 id="runtime-config-client">
|
||||
<title>Client Connection Defaults</title>
|
||||
|
||||
@ -2007,6 +2094,16 @@ SET ENABLE_SEQSCAN TO OFF;
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>CLIENT_ENCODING</varname> (<type>string</type>)</term>
|
||||
<indexterm><primary>character set encoding</></>
|
||||
<listitem>
|
||||
<para>
|
||||
Sets the client-side encoding (character set).
|
||||
The default is to use the database encoding.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>LC_MESSAGES</varname> (<type>string</type>)</term>
|
||||
@ -2074,18 +2171,8 @@ SET ENABLE_SEQSCAN TO OFF;
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>CLIENT_ENCODING</varname> (<type>string</type>)</term>
|
||||
<indexterm><primary>character set encoding</></>
|
||||
<listitem>
|
||||
<para>
|
||||
Sets the client-side encoding (character set).
|
||||
The default is to use the database encoding.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
</sect3>
|
||||
<sect3 id="runtime-config-client-other">
|
||||
<title>Other Defaults</title>
|
||||
@ -2093,18 +2180,15 @@ SET ENABLE_SEQSCAN TO OFF;
|
||||
<variablelist>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>PASSWORD_ENCRYPTION</varname> (<type>boolean</type>)</term>
|
||||
<term><varname>EXPLAIN_PRETTY_PRINT</varname> (<type>boolean</type>)</term>
|
||||
<listitem>
|
||||
<para>
|
||||
When a password is specified in <command>CREATE USER</> or
|
||||
<command>ALTER USER</> without writing either <literal>ENCRYPTED</> or
|
||||
<literal>UNENCRYPTED</>, this option determines whether the password is to be
|
||||
encrypted. The default is on (encrypt the password).
|
||||
Determines whether <command>EXPLAIN VERBOSE</> uses the indented
|
||||
or non-indented format for displaying detailed query-tree dumps.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>DYNAMIC_LIBRARY_PATH</varname> (<type>string</type>)</term>
|
||||
<indexterm><primary>dynamic_library_path</></>
|
||||
@ -2151,105 +2235,14 @@ dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir'
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
|
||||
</variablelist>
|
||||
</sect3>
|
||||
</sect2>
|
||||
|
||||
<sect2 id="runtime-config-statistics">
|
||||
<title>Statistics</title>
|
||||
|
||||
<sect3 id="runtime-config-statistics-monitor">
|
||||
<title>Statistics Monitoring</title>
|
||||
<variablelist>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>LOG_STATEMENT_STATS</varname> (<type>boolean</type>)</term>
|
||||
<term><varname>LOG_PARSER_STATS</varname> (<type>boolean</type>)</term>
|
||||
<term><varname>LOG_PLANNER_STATS</varname> (<type>boolean</type>)</term>
|
||||
<term><varname>LOG_EXECUTOR_STATS</varname> (<type>boolean</type>)</term>
|
||||
<term><varname>MAX_EXPR_DEPTH</varname> (<type>integer</type>)</term>
|
||||
<listitem>
|
||||
<para>
|
||||
For each query, write performance statistics of the respective
|
||||
module to the server log. This is a crude profiling
|
||||
instrument.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>DEFAULT_STATISTICS_TARGET</varname> (<type>integer</type>)</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Sets the default statistics target for table columns that have not
|
||||
had a column-specific target set via <command>ALTER TABLE SET
|
||||
STATISTICS</>. Larger values increase the time needed to do
|
||||
<command>ANALYZE</>, but may improve the quality of the planner's
|
||||
estimates. The default value is 10.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
|
||||
</variablelist>
|
||||
</sect3>
|
||||
<sect3 id="runtime-config-statistics-collector">
|
||||
<title>Query and Index Statistics Collector</title>
|
||||
<variablelist>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>STATS_START_COLLECTOR</varname> (<type>boolean</type>)</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Controls whether the server should start the
|
||||
statistics-collection subprocess. This is on by default, but
|
||||
may be turned off if you know you have no interest in
|
||||
collecting statistics. This option can only be set at server
|
||||
start.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>STATS_COMMAND_STRING</varname> (<type>boolean</type>)</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Enables the collection of statistics on the currently
|
||||
executing command of each session, along with the time at
|
||||
which that command began execution. This option is off by
|
||||
default. Note that even when enabled, this information is not
|
||||
visible to all users, only to superusers and the user owning
|
||||
the session being reported on; so it should not represent a
|
||||
security risk. This data can be accessed via the
|
||||
<structname>pg_stat_activity</structname> system view; refer
|
||||
to <xref linkend="monitoring"> for more information.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>STATS_BLOCK_LEVEL</varname> (<type>boolean</type>)</term>
|
||||
<term><varname>STATS_ROW_LEVEL</varname> (<type>boolean</type>)</term>
|
||||
<listitem>
|
||||
<para>
|
||||
These enable the collection of block-level and row-level statistics
|
||||
on database activity, respectively. These options are off by
|
||||
default. This data can be accessed via the
|
||||
<structname>pg_stat</structname> and
|
||||
<structname>pg_statio</structname> family of system views;
|
||||
refer to <xref linkend="monitoring"> for more information.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>STATS_RESET_ON_SERVER_START</varname> (<type>boolean</type>)</term>
|
||||
<listitem>
|
||||
<para>
|
||||
If on, collected statistics are zeroed out whenever the server
|
||||
is restarted. If off, statistics are accumulated across server
|
||||
restarts. The default is on. This option can only be set at
|
||||
server start.
|
||||
Sets the maximum expression nesting depth of the parser. The
|
||||
default value is high enough for any normal query, but you can
|
||||
raise it if needed. (But if you raise it too high, you run
|
||||
the risk of server crashes due to stack overflow.)
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
@ -2364,15 +2357,6 @@ dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir'
|
||||
<title>Platform and Client Compatibility</title>
|
||||
<variablelist>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>HAS_RENDEZVOUS</varname> (<type>boolean</type>)</term>
|
||||
<indexterm><primary>rendezvous</></>
|
||||
<listitem>
|
||||
<para>
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>TRANSFORM_NULL_EQUALS</varname> (<type>boolean</type>)</term>
|
||||
<indexterm><primary>IS NULL</></>
|
||||
@ -2421,14 +2405,16 @@ dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir'
|
||||
</sect2>
|
||||
|
||||
<sect2 id="runtime-config-developer">
|
||||
<title>Source Developer Options</title>
|
||||
<title>Developer Options</title>
|
||||
|
||||
<para>
|
||||
The following options are for work on the PostgreSQL source and for severly
|
||||
crashed databases only. There should be no reason to use them in a production
|
||||
database setup. As such, they have been excluded from the postgresql.conf file.
|
||||
Additionally, many of these options require special source compilation flags
|
||||
to work.
|
||||
The following options are intended for work on the PostgreSQL source,
|
||||
and in some cases to assist with recovery of
|
||||
severely damaged databases. There should be no reason to use them in
|
||||
a production database setup. As such, they have been excluded from the
|
||||
sample <filename>postgresql.conf</> file.
|
||||
Note that many of these options require special
|
||||
source compilation flags to work at all.
|
||||
</para>
|
||||
|
||||
<variablelist>
|
||||
@ -2450,6 +2436,19 @@ dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir'
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>PRE_AUTH_DELAY</varname> (<type>integer</type>)</term>
|
||||
<listitem>
|
||||
<para>
|
||||
If nonzero, a delay of this many seconds occurs just after a new
|
||||
server process is forked, before it conducts the authentication
|
||||
process. This is intended to give an opportunity to attach to the
|
||||
server process with a debugger to trace down misbehavior in
|
||||
authentication.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>TRACE_NOTIFY</varname> (<type>boolean</type>)</term>
|
||||
<listitem>
|
||||
@ -2458,19 +2457,20 @@ dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir'
|
||||
<command>LISTEN</command> and <command>NOTIFY</command>
|
||||
commands.
|
||||
<option>CLIENT_MIN_MESSAGES</option> or <option>LOG_MIN_MESSAGES</option>
|
||||
must be <literal>DEBUG1</literal> or lower to send output to the client
|
||||
or server logs.
|
||||
must be <literal>DEBUG1</literal> or lower to send this output to the
|
||||
client or server log, respectively.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>TRACE_LOCKS</varname> (<type>boolean</type>)</term>
|
||||
<term><varname>TRACE_LWLOCKS</varname> (<type>boolean</type>)</term>
|
||||
<term><varname>TRACE_USERLOCKS</varname> (<type>boolean</type>)</term>
|
||||
<term><varname>TRACE_LOCK_OIDMIN</varname> (<type>boolean</type>)</term>
|
||||
<term><varname>TRACE_LOCK_TABLE</varname> (<type>boolean</type>)</term>
|
||||
<term><varname>DEBUG_DEADLOCKS</varname> (<type>boolean</type>)</term>
|
||||
<term><varname>SHOW_BTREE_BUILD_STATS</varname> (<type>boolean</type>)</term>
|
||||
<term><varname>LOG_BTREE_BUILD_STATS</varname> (<type>boolean</type>)</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Various other code tracing and debugging options.
|
||||
@ -2482,7 +2482,7 @@ dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir'
|
||||
<term><varname>WAL_DEBUG</varname> (<type>integer</type>)</term>
|
||||
<listitem>
|
||||
<para>
|
||||
If nonzero, turn on WAL-related debugging output to the server log.
|
||||
If nonzero, turn on WAL-related debugging output.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
@ -13,7 +13,7 @@
|
||||
*
|
||||
*
|
||||
* 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 @@
|
||||
#include "miscadmin.h"
|
||||
#include "bootstrap/bootstrap.h"
|
||||
#include "tcop/tcopprot.h"
|
||||
#include "utils/help_config.h"
|
||||
#include "utils/ps_status.h"
|
||||
|
||||
|
||||
@ -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
|
||||
* argument) we were called with. The lack of consistency here is
|
||||
* historical.
|
||||
@ -218,6 +219,14 @@ main(int argc, char *argv[])
|
||||
if (argc > 1 && strcmp(new_argv[1], "-boot") == 0)
|
||||
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,
|
||||
* specifying current userid as the "authenticated" Postgres user
|
||||
|
@ -8,7 +8,7 @@
|
||||
*
|
||||
*
|
||||
* 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
|
||||
* this is the "main" module of the postgres backend and
|
||||
@ -1910,6 +1910,7 @@ usage(char *progname)
|
||||
printf(" -P disable system indexes\n");
|
||||
printf(" -s show statistics after each query\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(" --version output version information, then exit\n");
|
||||
printf("\nDeveloper options:\n");
|
||||
@ -2547,7 +2548,7 @@ PostgresMain(int argc, char *argv[], const char *username)
|
||||
if (!IsUnderPostmaster)
|
||||
{
|
||||
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");
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -1,4 +1,4 @@
|
||||
# $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
|
||||
top_builddir = ../../../..
|
||||
@ -6,7 +6,7 @@ include $(top_builddir)/src/Makefile.global
|
||||
|
||||
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
|
||||
# we can't subsitute it into config.h.
|
||||
|
File diff suppressed because it is too large
Load Diff
461
src/backend/utils/misc/help_config.c
Normal file
461
src/backend/utils/misc/help_config.c
Normal file
@ -0,0 +1,461 @@
|
||||
/*-------------------------------------------------------------------------
|
||||
* help_config.c
|
||||
*
|
||||
* Displays available options under grand unified configuration scheme
|
||||
*
|
||||
* The purpose of this option is to list, sort, and make searchable, all
|
||||
* runtime options available to Postgresql, by their description and grouping.
|
||||
*
|
||||
* Valid command-line options to this program:
|
||||
*
|
||||
* none : All available variables are sorted by group and name
|
||||
* and formatted nicely. ( for human consumption )
|
||||
* <string> : list all the variables whose name matches this string
|
||||
* -g <string> : list all the variables whose group matches this string
|
||||
* -l : lists all currently defined groups and terminates
|
||||
* -G : no sort by groups (you get strict name order, instead)
|
||||
* -m : output the list in Machine friendly format, with a header row
|
||||
* -M : same as m, except no header
|
||||
* -h : help
|
||||
*
|
||||
* Options whose flag bits are set to GUC_NO_SHOW_ALL, GUC_NOT_IN_SAMPLE,
|
||||
* or GUC_DISALLOW_IN_FILE are not displayed, unless the user specifically
|
||||
* requests that variable by name
|
||||
*
|
||||
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/misc/help_config.c,v 1.1 2003/07/04 16:41:21 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
#include "postgres.h"
|
||||
|
||||
#include <fcntl.h>
|
||||
#ifdef HAVE_GETOPT_H
|
||||
#include <getopt.h>
|
||||
#endif
|
||||
#include <errno.h>
|
||||
#include <float.h>
|
||||
#include <limits.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "utils/guc.h"
|
||||
#include "utils/guc_tables.h"
|
||||
#include "utils/help_config.h"
|
||||
|
||||
extern int optind;
|
||||
extern char *optarg;
|
||||
|
||||
|
||||
/*
|
||||
* The following char constructs provide the different formats the variables
|
||||
* can be outputted in.
|
||||
*/
|
||||
enum outputFormat
|
||||
{
|
||||
HUMAN_OUTPUT,
|
||||
MACHINE_OUTPUT
|
||||
};
|
||||
|
||||
static const char * const GENERIC_FORMAT[] = {
|
||||
gettext_noop("Name : %-20s \nContext : %-20s \nGroup : %-20s\n"),
|
||||
gettext_noop("%s\t%s\t%s\t")
|
||||
};
|
||||
static const char * const GENERIC_DESC[] = {
|
||||
gettext_noop("Description: %s\n%s\n"),
|
||||
gettext_noop("%s %s\n")
|
||||
};
|
||||
static const char * const BOOL_FORMAT[] = {
|
||||
gettext_noop("Type : BOOL\nReset Value: %-s \n"),
|
||||
gettext_noop("BOOL\t%s\t\t\t")
|
||||
};
|
||||
static const char * const INT_FORMAT[] = {
|
||||
gettext_noop("Type : INT\nReset Value: %-20d \nMin Value : %-20d \nMax Value : %-20d \n"),
|
||||
gettext_noop("INT\t%d\t%d\t%d\t")
|
||||
};
|
||||
static const char * const REAL_FORMAT[] = {
|
||||
gettext_noop("Type : REAL\nReset Value: %-20g \nMin Value : %-20g \nMax Value : %-20g \n"),
|
||||
gettext_noop("REAL\t%g\t%g\t%g\t")
|
||||
};
|
||||
static const char * const STRING_FORMAT[] = {
|
||||
gettext_noop("Type : STRING\nReset Value: %-s \n"),
|
||||
gettext_noop("STRING\t%s\t\t\t")
|
||||
};
|
||||
static const char * const COLUMN_HEADER[] = {
|
||||
"",
|
||||
gettext_noop("NAME\tCONTEXT\tGROUP\tTYPE\tRESET_VALUE\tMIN\tMAX\tSHORT_DESCRIPTION\tLONG_DESCRIPTION\n")
|
||||
};
|
||||
static const char * const ROW_SEPARATOR[] = {
|
||||
"------------------------------------------------------------\n",
|
||||
""
|
||||
};
|
||||
|
||||
/*
|
||||
* Variables loaded from the command line
|
||||
*/
|
||||
static char *nameString = NULL; /* The var name pattern to match */
|
||||
static bool nameRegexBool = false; /* Match the name pattern as a
|
||||
* regex */
|
||||
static char *groupString = NULL; /* The var group pattern to match */
|
||||
static bool groupRegexBool = false; /* Match the group pattern as a
|
||||
* regex */
|
||||
static enum outputFormat outFormat = HUMAN_OUTPUT;
|
||||
static bool suppressAllHeaders = false; /* MACHINE_OUTPUT output, no column
|
||||
* headers */
|
||||
static bool groupResults = true; /* sort result list by groups */
|
||||
|
||||
|
||||
/*
|
||||
* This union allows us to mix the numerous different types of structs
|
||||
* that we are organizing.
|
||||
*/
|
||||
typedef union
|
||||
{
|
||||
struct config_generic generic;
|
||||
struct config_bool bool;
|
||||
struct config_real real;
|
||||
struct config_int integer;
|
||||
struct config_string string;
|
||||
} mixedStruct;
|
||||
|
||||
|
||||
/* function prototypes */
|
||||
static bool varMatches(mixedStruct * structToTest);
|
||||
static int compareMixedStructs(const void *, const void *);
|
||||
static mixedStruct **varsToDisplay(int *resultListSize);
|
||||
static const char *usageErrMsg(void);
|
||||
static void helpMessage(void);
|
||||
static void listAllGroups(void);
|
||||
static void printGenericHead(struct config_generic structToPrint);
|
||||
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",
|
||||
"USERSET"
|
||||
};
|
||||
|
||||
/*
|
||||
* Reads in the the command line options and sets the state of the program
|
||||
* accordingly. Initializes the result list and sorts it.
|
||||
*/
|
||||
int
|
||||
GucInfoMain(int argc, char *argv[])
|
||||
{
|
||||
mixedStruct **varList;
|
||||
int resultListSize;
|
||||
int c;
|
||||
int i;
|
||||
|
||||
while ((c = getopt(argc, argv, "g:rGmMlh")) != -1)
|
||||
{
|
||||
switch (c)
|
||||
{
|
||||
case 'g':
|
||||
groupString = optarg;
|
||||
break;
|
||||
case 'r': /* not actually implemented yet */
|
||||
nameRegexBool = true;
|
||||
break;
|
||||
case 'G':
|
||||
groupResults = false;
|
||||
break;
|
||||
case 'm':
|
||||
outFormat = MACHINE_OUTPUT;
|
||||
break;
|
||||
case 'M':
|
||||
outFormat = MACHINE_OUTPUT;
|
||||
suppressAllHeaders = true;
|
||||
break;
|
||||
case 'l':
|
||||
listAllGroups();
|
||||
exit(0);
|
||||
case 'h':
|
||||
helpMessage();
|
||||
exit(0);
|
||||
|
||||
default:
|
||||
fprintf(stderr, gettext("%s \n Try -h for further details\n"), usageErrMsg());
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
if (optind < argc)
|
||||
nameString = argv[optind];
|
||||
|
||||
/* get the list of variables that match the user's specs. */
|
||||
varList = varsToDisplay(&resultListSize);
|
||||
|
||||
/* sort them by group if desired */
|
||||
/* (without this, we get the original sort by name from guc.c) */
|
||||
if (groupResults)
|
||||
qsort(varList, resultListSize,
|
||||
sizeof(mixedStruct *), compareMixedStructs);
|
||||
|
||||
/* output the results */
|
||||
if (!suppressAllHeaders)
|
||||
printf(gettext(COLUMN_HEADER[outFormat]));
|
||||
|
||||
for (i = 0; varList[i] != NULL; i++)
|
||||
{
|
||||
printf(gettext(ROW_SEPARATOR[outFormat]));
|
||||
printMixedStruct(varList[i]);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* This function is used to compare two mixedStruct types. It compares based
|
||||
* on the value of the 'group' field, and then the name of the variable.
|
||||
* Each void* is expected to be a pointer to a pointer to a struct.
|
||||
* (This is because it is used by qsort to sort an array of struct pointers)
|
||||
*
|
||||
* Returns an integer less than, equal to, or greater than zero if the first
|
||||
* argument (struct1) is considered to be respectively less than, equal to,
|
||||
* or greater than the second (struct2). The comparison is made frist on the
|
||||
* value of struct{1,2}.generic.group and then struct{1,2}.generic.name. The
|
||||
* groups will display in the order they are defined in enum config_group
|
||||
*/
|
||||
static int
|
||||
compareMixedStructs(const void *struct1, const void *struct2)
|
||||
{
|
||||
mixedStruct *structVar1 = *(mixedStruct **) struct1;
|
||||
mixedStruct *structVar2 = *(mixedStruct **) struct2;
|
||||
|
||||
if (structVar1->generic.group > structVar2->generic.group)
|
||||
return 1;
|
||||
else if (structVar1->generic.group < structVar2->generic.group)
|
||||
return -1;
|
||||
else
|
||||
return strcmp(structVar1->generic.name, structVar2->generic.name);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* This function returns a complete list of all the variables to display,
|
||||
* according to what the user wants to see.
|
||||
*/
|
||||
static mixedStruct **
|
||||
varsToDisplay(int *resultListSize)
|
||||
{
|
||||
mixedStruct **resultList;
|
||||
int arrayIndex;
|
||||
int i;
|
||||
|
||||
/* Initialize the guc_variables[] array */
|
||||
build_guc_variables();
|
||||
|
||||
/* Extract just the ones we want to display */
|
||||
resultList = malloc((num_guc_variables + 1) * sizeof(mixedStruct *));
|
||||
arrayIndex = 0;
|
||||
|
||||
for (i = 0; i < num_guc_variables; i++)
|
||||
{
|
||||
mixedStruct *var = (mixedStruct *) guc_variables[i];
|
||||
|
||||
if (varMatches(var))
|
||||
resultList[arrayIndex++] = var;
|
||||
}
|
||||
|
||||
/* add an end marker */
|
||||
resultList[arrayIndex] = NULL;
|
||||
|
||||
*resultListSize = arrayIndex;
|
||||
return resultList;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* This function will return true if the struct passed to it
|
||||
* should be displayed to the user.
|
||||
*
|
||||
* The criteria to determine if the struct should not be displayed is:
|
||||
* + It's flag bits are set to GUC_NO_SHOW_ALL
|
||||
* + It's flag bits are set to GUC_NOT_IN_SAMPLE
|
||||
* + It's flag bits are set to GUC_DISALLOW_IN_FILE
|
||||
*/
|
||||
static bool
|
||||
displayStruct(mixedStruct * structToDisplay)
|
||||
{
|
||||
if (structToDisplay->generic.flags & (GUC_NO_SHOW_ALL |
|
||||
GUC_NOT_IN_SAMPLE |
|
||||
GUC_DISALLOW_IN_FILE))
|
||||
return false;
|
||||
else
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Used to determine if a variable matches the user's specifications (stored in
|
||||
* global variables). Returns true if this particular variable information should
|
||||
* be returned to the user.
|
||||
*/
|
||||
static bool
|
||||
varMatches(mixedStruct * structToTest)
|
||||
{
|
||||
bool matches = false;
|
||||
bool specificSearch = false; /* This is true if the user
|
||||
* searched for a variable in
|
||||
* particular. */
|
||||
|
||||
if (nameString != NULL && !nameRegexBool)
|
||||
{
|
||||
if (strstr(structToTest->generic.name, nameString) != NULL)
|
||||
{
|
||||
matches = true;
|
||||
specificSearch = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (nameString != NULL && nameRegexBool)
|
||||
{
|
||||
/* We do not support this option yet */
|
||||
}
|
||||
|
||||
if (groupString != NULL && !groupRegexBool)
|
||||
{
|
||||
if (strstr(config_group_names[structToTest->generic.group], groupString) != NULL)
|
||||
{
|
||||
if (nameString != NULL)
|
||||
matches = (matches && true);
|
||||
else
|
||||
matches = true;
|
||||
}
|
||||
else
|
||||
matches = false;
|
||||
}
|
||||
|
||||
if (groupString != NULL && groupRegexBool)
|
||||
{
|
||||
/* We do not support this option yet */
|
||||
}
|
||||
|
||||
/* return all variables */
|
||||
if (nameString == NULL && groupString == NULL)
|
||||
matches = true;
|
||||
|
||||
if (specificSearch)
|
||||
return matches;
|
||||
else
|
||||
return matches && displayStruct(structToTest);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* This function prints out the generic struct passed to it. It will print out
|
||||
* a different format, depending on what the user wants to see.
|
||||
*/
|
||||
static void
|
||||
printMixedStruct(mixedStruct * structToPrint)
|
||||
{
|
||||
printGenericHead(structToPrint->generic);
|
||||
|
||||
switch (structToPrint->generic.vartype)
|
||||
{
|
||||
|
||||
case PGC_BOOL:
|
||||
printf(gettext(BOOL_FORMAT[outFormat]),
|
||||
(structToPrint->bool.reset_val == 0) ?
|
||||
gettext("FALSE") : gettext("TRUE"));
|
||||
break;
|
||||
|
||||
case PGC_INT:
|
||||
printf(gettext(INT_FORMAT[outFormat]),
|
||||
structToPrint->integer.reset_val,
|
||||
structToPrint->integer.min,
|
||||
structToPrint->integer.max);
|
||||
break;
|
||||
|
||||
case PGC_REAL:
|
||||
printf(gettext(REAL_FORMAT[outFormat]),
|
||||
structToPrint->real.reset_val,
|
||||
structToPrint->real.min,
|
||||
structToPrint->real.max);
|
||||
break;
|
||||
|
||||
case PGC_STRING:
|
||||
printf(gettext(STRING_FORMAT[outFormat]),
|
||||
structToPrint->string.boot_val);
|
||||
break;
|
||||
|
||||
default:
|
||||
printf(gettext("Unrecognized variable type!\n"));
|
||||
break;
|
||||
}
|
||||
|
||||
printGenericFoot(structToPrint->generic);
|
||||
}
|
||||
|
||||
static void
|
||||
printGenericHead(struct config_generic structToPrint)
|
||||
{
|
||||
printf(gettext(GENERIC_FORMAT[outFormat]),
|
||||
structToPrint.name,
|
||||
GucContext_names[structToPrint.context],
|
||||
gettext(config_group_names[structToPrint.group]));
|
||||
}
|
||||
|
||||
static void
|
||||
printGenericFoot(struct config_generic sPrint)
|
||||
{
|
||||
printf(gettext(GENERIC_DESC[outFormat]),
|
||||
(sPrint.short_desc == NULL) ? "" : gettext(sPrint.short_desc),
|
||||
(sPrint.long_desc == NULL) ? "" : gettext(sPrint.long_desc));
|
||||
}
|
||||
|
||||
static void
|
||||
listAllGroups(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
printf(gettext("All currently defined groups\n"));
|
||||
printf(gettext("----------------------------\n"));
|
||||
for (i = 0; config_group_names[i] != NULL; i++)
|
||||
printf(gettext("%s\n"), gettext(config_group_names[i]));
|
||||
}
|
||||
|
||||
static const char *
|
||||
usageErrMsg(void)
|
||||
{
|
||||
return gettext("Usage for --help-config option: [-h] [-g <group>] [-l] [-G] [-m] [-M] [string]\n");
|
||||
}
|
||||
|
||||
static void
|
||||
helpMessage(void)
|
||||
{
|
||||
printf(gettext("Description:\n"
|
||||
"--help-config displays all the runtime options available in PostgreSQL.\n"
|
||||
"It groups them by category and sorts them by name. If available, it will\n"
|
||||
"present a short description, default, max and min values as well as other\n"
|
||||
"information about each option.\n\n"
|
||||
"With no options specified, it will output all available runtime options\n"
|
||||
"in human friendly format, grouped by category and sorted by name.\n\n"
|
||||
|
||||
"%s\n"
|
||||
|
||||
"General Options:\n"
|
||||
" [string] All options with names that match this string\n"
|
||||
" -g GROUP All options in categories that match GROUP\n"
|
||||
" -l Prints list of all groups / subgroups\n"
|
||||
" -h Prints this help message\n"
|
||||
"\nOutput Options:\n"
|
||||
" -G Do not group by category\n"
|
||||
" -m Machine friendly format: tab separated fields\n"
|
||||
" -M Same as m, except header with column names is suppressed\n"),
|
||||
usageErrMsg()
|
||||
);
|
||||
}
|
@ -27,70 +27,83 @@
|
||||
#
|
||||
# Connection Parameters
|
||||
#
|
||||
|
||||
# CONNECTIONS AND AUTHENTICATION
|
||||
# ----------------------------------
|
||||
# Connection Settings
|
||||
|
||||
#tcpip_socket = false
|
||||
#ssl = false
|
||||
|
||||
#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
|
||||
|
||||
#port = 5432
|
||||
|
||||
#port = 5432
|
||||
#unix_socket_directory = ''
|
||||
#unix_socket_group = ''
|
||||
#unix_socket_permissions = 0777 # octal
|
||||
|
||||
#virtual_host = ''
|
||||
|
||||
# Security & Authentication
|
||||
|
||||
#authentication_timeout = 60 # 1-600, in seconds
|
||||
#ssl = false
|
||||
#password_encryption = true
|
||||
#krb_server_keyfile = ''
|
||||
#db_user_namespace = false
|
||||
|
||||
|
||||
#
|
||||
# Shared Memory Size
|
||||
#
|
||||
# RESOURCE USAGE (except WAL)
|
||||
# ---------------------------------
|
||||
# Memory
|
||||
|
||||
#shared_buffers = 64 # min 16, at least max_connections*2, 8KB each
|
||||
#max_locks_per_transaction = 64 # min 10, ~260*max_connections bytes each
|
||||
#wal_buffers = 8 # min 4, 8KB each
|
||||
# fsm = free space map
|
||||
#max_fsm_relations = 1000 # min 100, ~50 bytes each
|
||||
#max_fsm_pages = 20000 # min max_fsm_relations*16, 6 bytes each
|
||||
# note: increasing max_connections also costs about 500 bytes each,
|
||||
# in addition to costs from shared_buffers and max_locks_per_transaction.
|
||||
|
||||
|
||||
#
|
||||
# Non-shared Memory Sizes
|
||||
#
|
||||
#sort_mem = 1024 # min 64, size in KB
|
||||
#vacuum_mem = 8192 # min 1024, size in KB
|
||||
|
||||
# Free Space Map
|
||||
|
||||
#max_fsm_pages = 20000 # min max_fsm_relations*16, 6 bytes each
|
||||
#max_fsm_relations = 1000 # min 100, ~50 bytes each
|
||||
|
||||
# Kernel Resource Usage
|
||||
|
||||
#max_files_per_process = 1000 # min 25
|
||||
#preload_libraries = ''
|
||||
|
||||
|
||||
# WRITE AHEAD LOG
|
||||
# ---------------------------------
|
||||
# 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
|
||||
|
||||
#
|
||||
# Write-ahead log (WAL)
|
||||
#
|
||||
#checkpoint_segments = 3 # in logfile segments, min 1, 16MB each
|
||||
#checkpoint_timeout = 300 # range 30-3600, in seconds
|
||||
#checkpoint_warning = 30 # 0 is off, in seconds
|
||||
#
|
||||
#commit_delay = 0 # range 0-100000, in microseconds
|
||||
#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
|
||||
|
||||
|
||||
#
|
||||
# Optimizer Parameters
|
||||
#
|
||||
#enable_seqscan = true
|
||||
#enable_indexscan = true
|
||||
#enable_tidscan = true
|
||||
#enable_sort = true
|
||||
# QUERY TUNING
|
||||
# --------------------------------
|
||||
# Planner Method Enabling
|
||||
|
||||
#enable_hashagg = true
|
||||
#enable_nestloop = true
|
||||
#enable_mergejoin = 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
|
||||
#random_page_cost = 4 # units are one sequential page fetch cost
|
||||
@ -98,117 +111,127 @@
|
||||
#cpu_index_tuple_cost = 0.001 # (same)
|
||||
#cpu_operator_cost = 0.0025 # (same)
|
||||
|
||||
# Genetic Query Optimizer
|
||||
|
||||
#geqo = true
|
||||
#geqo_threshold = 11
|
||||
#geqo_effort = 1
|
||||
#geqo_generations = 0
|
||||
#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
|
||||
|
||||
#default_statistics_target = 10 # range 1-1000
|
||||
|
||||
#
|
||||
# GEQO Optimizer Parameters
|
||||
#
|
||||
#geqo = true
|
||||
#geqo_selection_bias = 2.0 # range 1.5-2.0
|
||||
#geqo_threshold = 11
|
||||
#geqo_pool_size = 0 # default based on tables in statement,
|
||||
# range 128-1024
|
||||
#geqo_effort = 1
|
||||
#geqo_generations = 0
|
||||
#geqo_random_seed = -1 # auto-compute seed
|
||||
# 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:
|
||||
# debug5, debug4, debug3, debug2, debug1,
|
||||
# log, info, notice, warning, error
|
||||
|
||||
#log_min_messages = notice # Values, in order of decreasing detail:
|
||||
# debug5, debug4, debug3, debug2, debug1,
|
||||
# info, notice, warning, error, log, fatal,
|
||||
# panic
|
||||
|
||||
#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_error_verbosity = default # terse, default, or verbose messages
|
||||
|
||||
#log_min_error_statement = panic # Values in order of increasing severity:
|
||||
# debug5, debug4, debug3, debug2, debug1,
|
||||
# info, notice, warning, error, panic(off)
|
||||
|
||||
|
||||
#log_min_duration_statement = 0 # Log all statements whose
|
||||
# execution time exceeds the value, in
|
||||
# milliseconds. Zero disables.
|
||||
|
||||
#silent_mode = false # DO NOT USE without Syslog!
|
||||
|
||||
# What to Log
|
||||
|
||||
#debug_print_parse = false
|
||||
#debug_print_rewritten = false
|
||||
#debug_print_plan = 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
|
||||
# -------------------------------------
|
||||
# Statistics Monitoring
|
||||
|
||||
# requires USE_ASSERT_CHECKING
|
||||
#debug_assertions = true
|
||||
|
||||
|
||||
#
|
||||
# Syslog
|
||||
#
|
||||
#syslog = 0 # range 0-2
|
||||
#syslog_facility = 'LOCAL0'
|
||||
#syslog_ident = 'postgres'
|
||||
|
||||
|
||||
#
|
||||
# Statistics
|
||||
#
|
||||
#log_parser_stats = false
|
||||
#log_planner_stats = false
|
||||
#log_executor_stats = false
|
||||
#log_statement_stats = false
|
||||
|
||||
# requires BTREE_BUILD_STATS
|
||||
#log_btree_build_stats = false
|
||||
# Query/Index Statistics Collector
|
||||
|
||||
|
||||
#
|
||||
# Access statistics collection
|
||||
#
|
||||
#stats_start_collector = true
|
||||
#stats_reset_on_server_start = true
|
||||
#stats_command_string = false
|
||||
#stats_row_level = false
|
||||
#stats_block_level = false
|
||||
#stats_row_level = false
|
||||
#stats_reset_on_server_start = true
|
||||
|
||||
|
||||
#
|
||||
# Misc
|
||||
#
|
||||
#dynamic_library_path = '$libdir'
|
||||
# CLIENT CONNECTION DEFAULTS
|
||||
# -------------------------------------
|
||||
# Statement Behavior
|
||||
|
||||
#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'
|
||||
#timezone = unknown # actually, defaults to TZ environment setting
|
||||
#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
|
||||
#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_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
|
||||
#sql_inheritance = true
|
||||
|
||||
# Other Platforms & Clients
|
||||
|
||||
#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 @@
|
||||
# Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
|
||||
# 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
|
||||
cp "$PG_HBA_SAMPLE" "$PGDATA"/pg_hba.conf || exit_nicely
|
||||
cp "$PG_IDENT_SAMPLE" "$PGDATA"/pg_ident.conf || exit_nicely
|
||||
(
|
||||
cat "$POSTGRESQL_CONF_SAMPLE"
|
||||
echo
|
||||
echo
|
||||
echo "#"
|
||||
echo "# Locale settings"
|
||||
echo "#"
|
||||
echo "# (initialized by initdb -- may be changed)"
|
||||
trigger="# These settings are initialized by initdb -- they may be changed"
|
||||
sed -n "1,/$trigger/p" "$POSTGRESQL_CONF_SAMPLE"
|
||||
for cat in MESSAGES MONETARY NUMERIC TIME; do
|
||||
echo "LC_$cat = '`pg_getlocale $cat`'"
|
||||
done
|
||||
sed -n "1,/$trigger/!p" "$POSTGRESQL_CONF_SAMPLE"
|
||||
) > "$PGDATA"/postgresql.conf || exit_nicely
|
||||
|
||||
chmod 0600 "$PGDATA"/pg_hba.conf "$PGDATA"/pg_ident.conf \
|
||||
|
178
src/include/utils/guc_tables.h
Normal file
178
src/include/utils/guc_tables.h
Normal file
@ -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
|
17
src/include/utils/help_config.h
Normal file
17
src/include/utils/help_config.h
Normal file
@ -0,0 +1,17 @@
|
||||
/*-------------------------------------------------------------------------
|
||||
*
|
||||
* 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
|
Loading…
x
Reference in New Issue
Block a user