1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-28 23:42:10 +03:00

Make all command-line options of postmaster and postgres the same. See

http://archives.postgresql.org/pgsql-hackers/2006-01/msg00151.php for the
complete plan.
This commit is contained in:
Peter Eisentraut
2006-01-05 10:07:46 +00:00
parent 4e1712ea54
commit 86c23a6eb2
15 changed files with 607 additions and 556 deletions

View File

@ -1,5 +1,5 @@
<!--
$PostgreSQL: pgsql/doc/src/sgml/config.sgml,v 1.41 2005/12/27 23:54:01 adunstan Exp $
$PostgreSQL: pgsql/doc/src/sgml/config.sgml,v 1.42 2006/01/05 10:07:44 petere Exp $
-->
<chapter Id="runtime-config">
<title>Server Configuration</title>
@ -2407,8 +2407,7 @@ SELECT * FROM parent WHERE key = 2400;
<para>
Runs the server silently. If this option is set, the server
will automatically run in background and any controlling
terminals are disassociated (same effect as
<command>postmaster</>'s <option>-S</option> option).
terminals are disassociated.
The server's standard output and standard error are redirected
to <literal>/dev/null</>, so any messages sent to them will be lost.
Unless <application>syslog</> logging is selected or
@ -4054,6 +4053,19 @@ plruby.use_strict = true # generates error: unknown class name
</para>
<variablelist>
<varlistentry id="guc-allow-system-table-mods" xreflabel="allow_system_table_mods">
<term><varname>allow_system_table_mods</varname> (<type>boolean</type>)</term>
<indexterm>
<primary><varname>allow_system_table_mods</varname> configuration parameter</primary>
</indexterm>
<listitem>
<para>
Allows the modification of the structure of system tables.
This is used by <command>initdb</command>.
</para>
</listitem>
</varlistentry>
<varlistentry id="guc-debug-assertions" xreflabel="debug_assertions">
<term><varname>debug_assertions</varname> (<type>boolean</type>)</term>
<indexterm>
@ -4075,6 +4087,35 @@ plruby.use_strict = true # generates error: unknown class name
</listitem>
</varlistentry>
<varlistentry id="guc-ignore-system-indexes" xreflabel="ignore_system_indexes">
<term><varname>ignore_system_indexes</varname> (<type>boolean</type>)</term>
<indexterm>
<primary><varname>ignore_system_indexes</varname> configuration parameter</primary>
</indexterm>
<listitem>
<para>
Ignore system indexes when reading system tables (but still
update the indexes when modifying the tables). This is useful
when recovering from damaged system indexes.
</para>
</listitem>
</varlistentry>
<varlistentry id="guc-post-auth-delay" xreflabel="post_auth_delay">
<term><varname>post_auth_delay</varname> (<type>integer</type>)</term>
<indexterm>
<primary><varname>post_auth_delay</> configuration parameter</primary>
</indexterm>
<listitem>
<para>
If nonzero, a delay of this many seconds occurs when a new
server process is started, after it conducts the
authentication procedure. This is intended to give an
opportunity to attach to the server process with a debugger.
</para>
</listitem>
</varlistentry>
<varlistentry id="guc-pre-auth-delay" xreflabel="pre_auth_delay">
<term><varname>pre_auth_delay</varname> (<type>integer</type>)</term>
<indexterm>
@ -4082,11 +4123,11 @@ plruby.use_strict = true # generates error: unknown class name
</indexterm>
<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.
If nonzero, a delay of this many seconds occurs just after a
new server process is forked, before it conducts the
authentication procedure. 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>
@ -4182,9 +4223,12 @@ plruby.use_strict = true # generates error: unknown class name
<title>Short Options</title>
<para>
For convenience there are also single letter command-line option switches
available for some parameters. They are described in <xref
linkend="runtime-config-short-table">.
For convenience there are also single letter command-line option
switches available for some parameters. They are described in
<xref linkend="runtime-config-short-table">. Some of these
options exist for historical reasons, and their presence as a
single-letter option does not necessarily indicate an endorsement
to use the option heavily.
</para>
<table id="runtime-config-short-table">
@ -4198,6 +4242,10 @@ plruby.use_strict = true # generates error: unknown class name
</thead>
<tbody>
<row>
<entry><option>-A <replaceable>x</replaceable></option></entry>
<entry><literal>debug_assertions = <replaceable>x</replaceable></></entry>
</row>
<row>
<entry><option>-B <replaceable>x</replaceable></option></entry>
<entry><literal>shared_buffers = <replaceable>x</replaceable></></entry>
@ -4206,6 +4254,26 @@ plruby.use_strict = true # generates error: unknown class name
<entry><option>-d <replaceable>x</replaceable></option></entry>
<entry><literal>log_min_messages = DEBUG<replaceable>x</replaceable></></entry>
</row>
<row>
<entry><option>-e</option></entry>
<entry><literal>datestyle = euro</></entry>
</row>
<row>
<entry>
<option>-fb</option>, <option>-fh</option>, <option>-fi</option>,
<option>-fm</option>, <option>-fn</option>,
<option>-fs</option>, <option>-ft</option>
</entry>
<entry>
<literal>enable_bitmapscan = off</>,
<literal>enable_hashjoin = off</>,
<literal>enable_indexscan = off</>,
<literal>enable_mergejoin = off</>,
<literal>enable_nestloop = off</>,
<literal>enable_seqscan = off</>,
<literal>enable_tidscan = off</>
</entry>
</row>
<row>
<entry><option>-F</option></entry>
<entry><literal>fsync = off</></entry>
@ -4230,57 +4298,36 @@ plruby.use_strict = true # generates error: unknown class name
<entry><option>-N <replaceable>x</replaceable></option></entry>
<entry><literal>max_connections = <replaceable>x</replaceable></></entry>
</row>
<row>
<entry><option>-O</option></entry>
<entry><literal>allow_system_table_mods = on</></entry>
</row>
<row>
<entry><option>-p <replaceable>x</replaceable></option></entry>
<entry><literal>port = <replaceable>x</replaceable></></entry>
</row>
<row>
<entry>
<option>-fb</option>, <option>-fh</option>, <option>-fi</option>,
<option>-fm</option>, <option>-fn</option>,
<option>-fs</option>, <option>-ft</option><footnote
id="fn.runtime-config-short">
<para>
For historical reasons, these options must be passed to
the individual server process via the <option>-o</option>
<command>postmaster</command> option, for example,
<screen>
$ <userinput>postmaster -o '-S 1024 -s'</userinput>
</screen>
or via <envar>PGOPTIONS</envar> from the client side, as
explained above.
</para>
</footnote>
</entry>
<entry>
<literal>enable_bitmapscan = off</>,
<literal>enable_hashjoin = off</>,
<literal>enable_indexscan = off</>,
<literal>enable_mergejoin = off</>,
<literal>enable_nestloop = off</>,
<literal>enable_seqscan = off</>,
<literal>enable_tidscan = off</>
</entry>
<entry><option>-P</option></entry>
<entry><literal>ignore_system_indexes = on</></entry>
</row>
<row>
<entry><option>-s</option><footnoteref linkend="fn.runtime-config-short"></entry>
<entry><option>-s</option></entry>
<entry><literal>log_statement_stats = on</></entry>
</row>
<row>
<entry><option>-S <replaceable>x</replaceable></option><footnoteref linkend="fn.runtime-config-short">
</entry>
<entry><option>-S <replaceable>x</replaceable></option></entry>
<entry><literal>work_mem = <replaceable>x</replaceable></></entry>
</row>
<row>
<entry><option>-tpa</option>, <option>-tpl</option>, <option>-te</option><footnoteref linkend="fn.runtime-config-short"></entry>
<entry><option>-tpa</option>, <option>-tpl</option>, <option>-te</option></entry>
<entry><literal>log_parser_stats = on</>,
<literal>log_planner_stats = on</>,
<literal>log_executor_stats = on</></entry>
</row>
<row>
<entry><option>-W <replaceable>x</replaceable></option></entry>
<entry><literal>post_auth_delay = <replaceable>x</replaceable></></entry>
</row>
</tbody>
</tgroup>
</table>

View File

@ -1,5 +1,5 @@
<!--
$PostgreSQL: pgsql/doc/src/sgml/ref/postgres-ref.sgml,v 1.45 2004/11/15 06:32:15 neilc Exp $
$PostgreSQL: pgsql/doc/src/sgml/ref/postgres-ref.sgml,v 1.46 2006/01/05 10:07:44 petere Exp $
PostgreSQL documentation
-->
@ -21,53 +21,9 @@ PostgreSQL documentation
<refsynopsisdiv>
<cmdsynopsis>
<!-- standalone call -->
<command>postgres</command>
<arg>-A <group choice="plain"><arg>0</arg><arg>1</arg></group></arg>
<arg>-B <replaceable>nbuffers</replaceable></arg>
<arg>-c <replaceable>name</replaceable>=<replaceable>value</replaceable></arg>
<arg>-d <replaceable>debug-level</replaceable></arg>
<arg>--describe-config</arg>
<arg>-D <replaceable>datadir</replaceable></arg>
<arg>-e</arg>
<arg>-E</arg>
<arg>-f<group choice="plain"><arg>s</arg><arg>i</arg><arg>t</arg><arg>n</arg><arg>m</arg><arg>h</arg></group></arg>
<arg>-F</arg>
<arg>-N</arg>
<arg>-o <replaceable>filename</replaceable></arg>
<arg>-O</arg>
<arg>-P</arg>
<group>
<arg>-s</arg>
<arg>-t<group choice="plain"><arg>pa</arg><arg>pl</arg><arg>ex</arg></group></arg>
</group>
<arg>-S <replaceable>work-mem</replaceable></arg>
<arg>-W <replaceable>seconds</replaceable></arg>
<arg>--<replaceable>name</replaceable>=<replaceable>value</replaceable></arg>
<arg rep="repeat"><replaceable>option</></arg>
<arg choice="plain"><replaceable>database</replaceable></arg>
<sbr>
<!-- postmaster fork -->
<command>postgres</command>
<arg>-A <group choice="plain"><arg>0</arg><arg>1</arg></group></arg>
<arg>-B <replaceable>nbuffers</replaceable></arg>
<arg>-c <replaceable>name</replaceable>=<replaceable>value</replaceable></arg>
<arg>-d <replaceable>debug-level</replaceable></arg>
<arg>-D <replaceable>datadir</replaceable></arg>
<arg>-e</arg>
<arg>-f<group choice="plain"><arg>s</arg><arg>i</arg><arg>t</arg><arg>n</arg><arg>m</arg><arg>h</arg></group></arg>
<arg>-F</arg>
<arg>-o <replaceable>filename</replaceable></arg>
<arg>-O</arg>
<arg>-p <replaceable>database</replaceable></arg>
<arg>-P</arg>
<group>
<arg>-s</arg>
<arg>-t<group choice="plain"><arg>pa</arg><arg>pl</arg><arg>ex</arg></group></arg>
</group>
<arg>-S <replaceable>work-mem</replaceable></arg>
<arg>-v <replaceable>protocol</replaceable></arg>
<arg>-W <replaceable>seconds</replaceable></arg>
<arg>--<replaceable>name</replaceable>=<replaceable>value</replaceable></arg>
</cmdsynopsis>
</refsynopsisdiv>
@ -77,23 +33,21 @@ PostgreSQL documentation
<para>
The <command>postgres</command> executable is the actual
<productname>PostgreSQL</productname> server process that processes
queries. It is normally not called directly; instead a <xref
linkend="app-postmaster"> multiuser server is started.
</para>
<para>
The second form above is how
<command>postgres</command> is invoked by the <xref
linkend="app-postmaster"> (only
conceptually, since both <filename>postmaster</filename> and
<filename>postgres</filename> are in fact the same program); it
should not be invoked directly this way. The first form invokes
the server directly in interactive single-user mode. The primary use
for this mode is during bootstrapping by <xref linkend="app-initdb">.
Sometimes it is used for debugging or disaster recovery.
SQL statements. It is normally not called directly; instead a
<xref linkend="app-postmaster"> multiuser server is started.
Conceptually, the <command>postmaster</command> starts a new
<command>postgres</command> process for each connection.
(<filename>postmaster</filename> and <filename>postgres</filename>
are in fact the same program, and on most platforms the connection
process is forked).
</para>
<para>
If the <command>postgres</command> command is called directly, it
invokes the server in interactive single-user mode. The primary
use for this mode is during bootstrapping by <xref
linkend="app-initdb">. Sometimes it is used for debugging or
disaster recovery.
When invoked in interactive mode from the shell, the user can enter
queries and the results will be printed to the screen, but in a
form that is more useful for developers than end users. But note
@ -117,11 +71,9 @@ PostgreSQL documentation
<para>
When <command>postgres</command> is started by a <xref
linkend="app-postmaster"> then it
inherits all options set by the latter. Additionally,
<command>postgres</command>-specific options can be passed
from the <command>postmaster</command> with the
<option>-o</option> switch.
linkend="app-postmaster"> then it inherits all options set by the
latter. In single-user mode, <command>postgres</command> accepts
all the options that <command>postmaster</command> would accept.
</para>
<para>
@ -141,74 +93,17 @@ PostgreSQL documentation
<para>
The options <option>-A</option>, <option>-B</option>,
<option>-c</option>, <option>-d</option>, <option>-D</option>,
<option>-F</option>, and <option>--<replaceable>name</></option> have the same meanings
as the <xref linkend="app-postmaster"> except that
<literal>-d 0</> prevents the server log level of
the <command>postmaster</> from being propagated to <command>postgres</>.
<option>-e</option>, <option>-F</option>, <option>-s</option>,
<option>-S</option>, and <option>--<replaceable>name</></option>
have the same meanings as with the <xref linkend="app-postmaster">
except that <literal>-d 0</> prevents the server log level of the
<command>postmaster</> from being propagated to
<command>postgres</>. Other <command>postmaster</command>
options are also accepted but will have no noticeable effect
because they only apply to the multiuser server mode, namely
<option>-h</option>, <option>-i</option>, <option>-k</option>,
<option>-l</option>, and <option>-n</option>.
</para>
<variablelist>
<varlistentry>
<term><option>-e</option></term>
<listitem>
<para>
Sets the default date style to <quote>European</quote>, that is
<literal>DMY</> ordering of input date fields. This also causes
the day to be printed before the month in certain date output formats.
See <xref linkend="datatype-datetime"> for more information.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-o</option> <replaceable class="parameter">filename</replaceable></term>
<listitem>
<para>
Send all server log output to
<replaceable class="parameter">filename</replaceable>.
If <command>postgres</command> is running under the
<command>postmaster</command>, this option is ignored,
and the <systemitem>stderr</> inherited from the
<command>postmaster</command> is used.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-P</option></term>
<listitem>
<para>
Ignore system indexes when reading system tables (but still update
the indexes when modifying the tables). This is useful when
recovering from damaged system indexes.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-s</option></term>
<listitem>
<para>
Print time information and other statistics at the end of each command.
This is useful for benchmarking or for use in tuning the number of
buffers.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-S</option> <replaceable class="parameter">work-mem</replaceable></term>
<listitem>
<para>
Specifies the amount of memory to be used by internal sorts and hashes
before resorting to temporary disk files. See the description of the
<varname>work_mem</> configuration parameter in <xref
linkend="runtime-config-resource-memory">.
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect2>
<refsect2>
@ -235,13 +130,27 @@ PostgreSQL documentation
</varlistentry>
<varlistentry>
<term><option>-N</option></term>
<term><option>-j</option></term>
<listitem>
<para>
Disables use of newline as a statement delimiter.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-r</option> <replaceable class="parameter">filename</replaceable></term>
<listitem>
<para>
Send all server log output to
<replaceable class="parameter">filename</replaceable>.
If <command>postgres</command> is running under the
<command>postmaster</command>, this option is ignored,
and the <systemitem>stderr</> inherited from the
<command>postmaster</command> is used.
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect2>
@ -249,69 +158,13 @@ PostgreSQL documentation
<title>Semi-internal Options</title>
<para>
There are several other options that may be specified, used
mainly for debugging purposes. These are listed here only for
the use by <productname>PostgreSQL</productname> system
developers. <emphasis>Use of any of these options is highly
discouraged.</emphasis> Furthermore, any of these options may
disappear or change in a future release without notice.
</para>
The options <option>-f</option>, <option>-O</option>,
<option>-P</option>, <option>-t</option>, and <option>-W</option>
have the same meanings as with the <xref
linkend="app-postmaster"> and are reserved for debugging and
disaster recovery. Further options for internal use are:
<variablelist>
<varlistentry>
<term><option>-f</option> <literal>{ s | i | m | n | h }</literal></term>
<listitem>
<para>
Forbids the use of particular scan and join methods:
<literal>s</literal> and <literal>i</literal>
disable sequential and index scans respectively, while
<literal>n</literal>, <literal>m</literal>, and <literal>h</literal>
disable nested-loop, merge and hash joins respectively.
</para>
<note>
<para>
Neither sequential scans nor nested-loop joins can be disabled completely;
the <literal>-fs</literal> and <literal>-fn</literal>
options simply discourage the optimizer from using those
plan types if it has any other alternative.
</para>
</note>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-O</option></term>
<listitem>
<para>
Allows the structure of system tables to be modified. This is
used by <command>initdb</command>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-p</option> <replaceable class="parameter">database</replaceable></term>
<listitem>
<para>
Indicates that this process has been started by a
<command>postmaster</command> and specifies the database to use.
etc.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-t</option> <literal>pa[rser] | pl[anner] | e[xecutor]</literal></term>
<listitem>
<para>
Print timing statistics for each query relating to each of the
major system modules. This option cannot be used together
with the <option>-s</option> option.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-v</option> <replaceable class="parameter">protocol</replaceable></term>
<listitem>
@ -323,12 +176,12 @@ PostgreSQL documentation
</varlistentry>
<varlistentry>
<term><option>-W</option> <replaceable class="parameter">seconds</replaceable></term>
<term><option>-y</option> <replaceable class="parameter">database</replaceable></term>
<listitem>
<para>
As soon as this option is encountered, the process sleeps for
the specified amount of seconds. This gives developers time
to attach a debugger to the server process.
Indicates that this process has been started by a
<command>postmaster</command> and specifies the database to use.
etc.
</para>
</listitem>
</varlistentry>
@ -343,8 +196,8 @@ PostgreSQL documentation
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect2>
</refsect1>
@ -361,13 +214,7 @@ PostgreSQL documentation
</para>
</listitem>
</varlistentry>
</variablelist>
<para>
For others, which have little influence during single-user mode,
see <xref linkend="app-postmaster">.
</para>
</refsect1>
<refsect1>
@ -423,7 +270,7 @@ PostgreSQL documentation
</para>
<para>
But if you use the <option>-N</> command line switch, then newline does
But if you use the <option>-j</> command line switch, then newline does
not terminate command entry. In this case, the server will read the standard input
until the end-of-file (<acronym>EOF</>) marker, then
process the input as a single command string. Backslash-newline is not
@ -434,7 +281,7 @@ PostgreSQL documentation
To quit the session, type <acronym>EOF</acronym>
(<keycombo action="simul"><keycap>Control</><keycap>D</></>, usually).
If you've
used <option>-N</>, two consecutive <acronym>EOF</>s are needed to exit.
used <option>-j</>, two consecutive <acronym>EOF</>s are needed to exit.
</para>
<para>

View File

@ -1,5 +1,5 @@
<!--
$PostgreSQL: pgsql/doc/src/sgml/ref/postmaster.sgml,v 1.54 2005/12/02 23:13:46 tgl Exp $
$PostgreSQL: pgsql/doc/src/sgml/ref/postmaster.sgml,v 1.55 2006/01/05 10:07:44 petere Exp $
PostgreSQL documentation
-->
@ -22,22 +22,7 @@ PostgreSQL documentation
<refsynopsisdiv>
<cmdsynopsis>
<command>postmaster</command>
<arg>-A <group choice="plain"><arg>0</arg><arg>1</arg></group></arg>
<arg>-B <replaceable>nbuffers</replaceable></arg>
<arg>-c <replaceable>name</replaceable>=<replaceable>value</replaceable></arg>
<arg>-d <replaceable>debug-level</replaceable></arg>
<arg>-D <replaceable>datadir</replaceable></arg>
<arg>-F</arg>
<arg>-h <replaceable>hostname</replaceable></arg>
<arg>-i</arg>
<arg>-k <replaceable>directory</replaceable></arg>
<arg>-l</arg>
<arg>-N <replaceable>max-connections</replaceable></arg>
<arg>-o <replaceable>extra-options</replaceable></arg>
<arg>-p <replaceable>port</replaceable></arg>
<arg>-S</arg>
<arg>--<replaceable>name</replaceable>=<replaceable>value</replaceable></arg>
<group><arg>-n</arg><arg>-s</arg></group>
<arg rep="repeat"><replaceable>option</></arg>
</cmdsynopsis>
</refsynopsisdiv>
@ -70,8 +55,7 @@ PostgreSQL documentation
location (the <quote>data area</quote>).
More than one <command>postmaster</command> process can run on a system
at one time, so long as they use different data areas and different
communication ports (see below). A data area is created with <xref
linkend="app-initdb">.
communication ports (see below).
</para>
<para>
@ -83,6 +67,7 @@ PostgreSQL documentation
directly to the data area directory created by <application>initdb</>.
Other possible file layouts are discussed in
<xref linkend="runtime-config-file-locations">.
A data area is created with <xref linkend="app-initdb">.
</para>
</refsect1>
@ -92,8 +77,12 @@ PostgreSQL documentation
<para>
<command>postmaster</command> accepts the following
command line arguments. For a detailed discussion of the options
consult <xref linkend="runtime-config">. You can also save typing most of these
consult <xref linkend="runtime-config">. You can save typing most of these
options by setting up a configuration file.
</para>
<refsect2>
<title>General Purpose</title>
<variablelist>
<varlistentry>
@ -156,6 +145,18 @@ PostgreSQL documentation
</listitem>
</varlistentry>
<varlistentry>
<term><option>-e</option></term>
<listitem>
<para>
Sets the default date style to <quote>European</quote>, that is
<literal>DMY</> ordering of input date fields. This also causes
the day to be printed before the month in certain date output formats.
See <xref linkend="datatype-datetime"> for more information.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-F</option></term>
<listitem>
@ -264,6 +265,12 @@ PostgreSQL documentation
linkend="app-postgres"> for possibilities. If the option
string contains any spaces, the entire string must be quoted.
</para>
<para>
The use of this option is obsolete; all command-line options
for server processes can be specified directly on the
<command>postmaster</command> command line
</para>
</listitem>
</varlistentry>
@ -284,6 +291,17 @@ PostgreSQL documentation
</listitem>
</varlistentry>
<varlistentry>
<term><option>-s</option></term>
<listitem>
<para>
Print time information and other statistics at the end of each command.
This is useful for benchmarking or for use in tuning the number of
buffers.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-S</option></term>
<listitem>
@ -318,55 +336,124 @@ PostgreSQL documentation
</varlistentry>
</variablelist>
</para>
</refsect2>
<para>
Two additional command line options are available for debugging
problems that cause a server process to die abnormally. The
ordinary strategy in this situation is to notify all other server
processes that they must terminate and then reinitialize the
shared memory and semaphores. This is because an errant server
process could have corrupted some shared state before terminating.
These options select alternative behaviors of the
<command>postmaster</command> in this situation.
<emphasis>Neither option is intended for use in ordinary
operation.</emphasis>
</para>
<refsect2>
<title>Semi-internal Options</title>
<para>
</para>
<para>
These special-case options are:
<para>
There are several other options that may be specified, used
mainly for debugging purposes 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. These are listed
here only for the use by <productname>PostgreSQL</productname>
system developers. <emphasis>Use of any of these options is
highly discouraged.</emphasis> Furthermore, any of these options
may disappear or change in a future release without notice.
</para>
<variablelist>
<varlistentry>
<term><option>-f</option> <literal>{ s | i | m | n | h }</literal></term>
<listitem>
<para>
Forbids the use of particular scan and join methods:
<literal>s</literal> and <literal>i</literal>
disable sequential and index scans respectively, while
<literal>n</literal>, <literal>m</literal>, and <literal>h</literal>
disable nested-loop, merge and hash joins respectively.
</para>
<para>
Neither sequential scans nor nested-loop joins can be disabled
completely; the <literal>-fs</literal> and
<literal>-fn</literal> options simply discourage the optimizer
from using those plan types if it has any other alternative.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-n</option></term>
<listitem>
<para>
<command>postmaster</command>
will not reinitialize shared data structures. A knowledgeable system
programmer can then use a debugger
to examine shared memory and semaphore state.
This option is for debugging problems that cause a server
process to die abnormally. The ordinary strategy in this
situation is to notify all other server processes that they
must terminate and then reinitialize the shared memory and
semaphores. This is because an errant server process could
have corrupted some shared state before terminating. This
option specifies that the <command>postmaster</command> will
not reinitialize shared data structures. A knowledgeable
system programmer can then use a debugger to examine shared
memory and semaphore state.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-s</option></term>
<varlistentry>
<term><option>-O</option></term>
<listitem>
<para>
<command>postmaster</command>
will stop all other server processes by sending the signal
<literal>SIGSTOP</literal>,
but will not cause them to terminate. This permits system programmers
to collect core dumps from all server processes by hand.
Allows the structure of system tables to be modified. This is
used by <command>initdb</command>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-P</option></term>
<listitem>
<para>
Ignore system indexes when reading system tables (but still update
the indexes when modifying the tables). This is useful when
recovering from damaged system indexes.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-t</option> <literal>pa[rser] | pl[anner] | e[xecutor]</literal></term>
<listitem>
<para>
Print timing statistics for each query relating to each of the
major system modules. This option cannot be used together
with the <option>-s</option> option.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-T</option></term>
<listitem>
<para>
This option is for debugging problems that cause a server
process to die abnormally. The ordinary strategy in this
situation is to notify all other server processes that they
must terminate and then reinitialize the shared memory and
semaphores. This is because an errant server process could
have corrupted some shared state before terminating. This
option specifies that the <command>postmaster</command> will
stop all other server processes by sending the signal
<literal>SIGSTOP</literal>, but will not cause them to
terminate. This permits system programmers to collect core
dumps from all server processes by hand.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-W</option> <replaceable class="parameter">seconds</replaceable></term>
<listitem>
<para>
A delay of this many seconds occurs when a new server process
is started, after it conducts the authentication procedure.
This is intended to give an opportunity to attach to the
server process with a debugger.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1>