? runtime-sgml.patch
? doc/src/sgml/runtime.sgml.CRASHED
Index: doc/src/sgml/client-auth.sgml
===================================================================
RCS file: /projects/cvsroot/pgsql-server/doc/src/sgml/client-auth.sgml,v
retrieving revision 1.50
diff -r1.50 client-auth.sgml
491c491
<     described in <xref linkend="runtime-config-general">.  Or you
---
>     described in <xref linkend="runtime-config-connection">.  Or you
Index: doc/src/sgml/runtime.sgml
===================================================================
RCS file: /projects/cvsroot/pgsql-server/doc/src/sgml/runtime.sgml,v
retrieving revision 1.186
diff -r1.186 runtime.sgml
584a585,587
>     
>    <sect2 id="runtime-config-connection">
>     <title>Connections and Authentication</title>
586,587c589,590
<    <sect2 id="runtime-config-optimizer">
<     <title>Planner and Optimizer Tuning</title>
---
>     <sect3 id="runtime-config-connection-settings">
>      <title>Connection Settings</title>
589c592,593
<     <variablelist>
---
>      <variablelist>
>      
591c595
<       <term><varname>CPU_INDEX_TUPLE_COST</varname> (<type>floating point</type>)</term>
---
>       <term><varname>TCPIP_SOCKET</varname> (<type>boolean</type>)</term>
594,596c598,601
<         Sets the query planner's estimate of the cost of processing
< 	each index tuple during an index scan. This is measured as a
< 	fraction of the cost of a sequential page fetch.
---
>         If this is true, then the server will accept TCP/IP connections.
>         Otherwise only local Unix domain socket connections are
>         accepted. It is off by default. This option can only be set at
>         server start.
600c605
<     
---
>   
602c607
<       <term><varname>CPU_OPERATOR_COST</varname> (<type>floating point</type>)</term>
---
>       <term><varname>MAX_CONNECTIONS</varname> (<type>integer</type>)</term>
605,607c610,613
<         Sets the planner's estimate of the cost of processing each
< 	operator in a <literal>WHERE</> clause. This is measured as a fraction of
< 	the cost of a sequential page fetch.
---
>         Determines the maximum number of concurrent connections to the
>         database server. The default is 32 (unless altered while
>         building the server). This parameter can only be set at server
>         start.
611c617
<     
---
>      
613c619,620
<       <term><varname>CPU_TUPLE_COST</varname> (<type>floating point</type>)</term>
---
>       <term><varname>SUPERUSER_RESERVED_CONNECTIONS</varname>
>       (<type>integer</type>)</term>
616,618c623,635
<         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.
---
>         Determines the number of <quote>connection slots</quote> that
>         are reserved for connections by <productname>PostgreSQL</>
>         superusers.  At most <varname>max_connections</> connections can
> 	ever be active simultaneously.  Whenever the number of active
> 	concurrent connections is at least <varname>max_connections</> minus
>         <varname>superuser_reserved_connections</varname>, new connections
> 	will be accepted only for superusers.
>        </para>
> 
>        <para>
>         The default value is 2. The value must be less than the value of
>         <varname>max_connections</varname>. This parameter can only be
>         set at server start.
622c639
<     
---
> 
624c641,642
<       <term><varname>DEFAULT_STATISTICS_TARGET</varname> (<type>integer</type>)</term>
---
>       <term><varname>PORT</varname> (<type>integer</type>)</term>
>       <indexterm><primary>port</></>
627,631c645,646
<         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.
---
>         The TCP port the server listens on; 5432 by default. This
>         option can only be set at server start.
635c650,651
<     
---
> 
> 
637c653
<       <term><varname>EFFECTIVE_CACHE_SIZE</varname> (<type>floating point</type>)</term>
---
>       <term><varname>UNIX_SOCKET_DIRECTORY</varname> (<type>string</type>)</term>
640,644c656,659
<         Sets the planner's assumption about the effective size of the
<         disk cache (that is, the portion of the kernel's disk cache that
<         will be used for <productname>PostgreSQL</productname> data
<         files). This is measured in disk pages, which are normally 8 kB
<         each.
---
> 	Specifies the directory of the Unix-domain socket on which the
> 	server is to listen for
> 	connections from client applications.  The default is normally
> 	<filename>/tmp</filename>, but can be changed at build time.
650c665
<       <term><varname>ENABLE_HASHAGG</varname> (<type>boolean</type>)</term>
---
>       <term><varname>UNIX_SOCKET_GROUP</varname> (<type>string</type>)</term>
653,655c668,675
<         Enables or disables the query planner's use of hashed aggregation
< 	plan types. The default is on. This is used for debugging the query
< 	planner.
---
>         Sets the group owner of the Unix domain socket.  (The owning
>         user of the socket is always the user that starts the
>         server.)  In combination with the option
>         <varname>UNIX_SOCKET_PERMISSIONS</varname> this can be used as
>         an additional access control mechanism for this socket type.
>         By default this is the empty string, which uses the default
>         group for the current user.  This option can only be set at
>         server start.
661c681
<       <term><varname>ENABLE_HASHJOIN</varname> (<type>boolean</type>)</term>
---
>       <term><varname>UNIX_SOCKET_PERMISSIONS</varname> (<type>integer</type>)</term>
664,666c684,690
<         Enables or disables the query planner's use of hash-join plan
<         types. The default is on. This is used for debugging the
<         query planner.
---
>         Sets the access permissions of the Unix domain socket.  Unix
>         domain sockets use the usual Unix file system permission set.
>         The option value is expected to be an numeric mode
>         specification in the form accepted by the
>         <function>chmod</function> and <function>umask</function>
>         system calls.  (To use the customary octal format the number
>         must start with a <literal>0</literal> (zero).)
668,669d691
<       </listitem>
<      </varlistentry>
671,674c693,701
<      <varlistentry>
<       <indexterm>
<        <primary>index scan</primary>
<       </indexterm>
---
>        <para>
>         The default permissions are <literal>0777</literal>, meaning
>         anyone can connect. Reasonable alternatives are
>         <literal>0770</literal> (only user and group, see also under
>         <varname>UNIX_SOCKET_GROUP</varname>) and <literal>0700</literal>
>         (only user). (Note that actually for a Unix domain socket, only write
>         permission matters and there is no point in setting or revoking
>         read or execute permissions.)
>        </para>
676,677d702
<       <term><varname>ENABLE_INDEXSCAN</varname> (<type>boolean</type>)</term>
<       <listitem>
679,681c704,705
<         Enables or disables the query planner's use of index-scan plan
<         types. The default is on. This is used to debugging the
<         query planner.
---
>         This access control mechanism is independent of the one
>         described in <xref linkend="client-authentication">.
683,684d706
<       </listitem>
<      </varlistentry>
686,688d707
<      <varlistentry>
<       <term><varname>ENABLE_MERGEJOIN</varname> (<type>boolean</type>)</term>
<       <listitem>
690,692c709
<         Enables or disables the query planner's use of merge-join plan
<         types. The default is on. This is used for debugging the
<         query planner.
---
>         This option can only be set at server start.
696c713,719
< 
---
>      
>      </variablelist>
>      </sect3>
>      <sect3 id="runtime-config-connection-security">
>      <title>Security and Authentication</title>
>      
>      <variablelist>
698c721,722
<       <term><varname>ENABLE_NESTLOOP</varname> (<type>boolean</type>)</term>
---
>       <term><varname>AUTHENTICATION_TIMEOUT</varname> (<type>integer</type>)</term>
>       <indexterm><primary>timeout</><secondary>authentication</></indexterm>
701,705c725,730
<         Enables or disables the query planner's use of nested-loop join
<         plans. It's not possible to suppress nested-loop joins entirely,
<         but turning this variable off discourages the planner from using
<         one if there are other methods available. The default is
<         on. This is used for debugging the query planner.
---
>         Maximum time to complete client authentication, in seconds. If a
>         would-be client has not completed the authentication protocol in
>         this much time, the server breaks the connection. This prevents
>         hung clients from occupying a connection indefinitely. This
>         option can only be set at server start or in the
>         <filename>postgresql.conf</filename> file.
709c734
< 
---
>      
712c737
<        <primary>sequential scan</primary>
---
>        <primary>SSL</primary>
715c740
<       <term><varname>ENABLE_SEQSCAN</varname> (<type>boolean</type>)</term>
---
>       <term><varname>SSL</varname> (<type>boolean</type>)</term>
718,722c743,745
<         Enables or disables the query planner's use of sequential scan
<         plan types. It's not possible to suppress sequential scans
<         entirely, but turning this variable off discourages the planner
<         from using one if there are other methods available. The
<         default is on. This is used for debugging the query planner.
---
>         Enables <acronym>SSL</> connections. Please read
>         <xref linkend="ssl-tcp"> before using this. The default
>         is off.
728c751
<       <term><varname>ENABLE_SORT</varname> (<type>boolean</type>)</term>
---
>       <term><varname>KRB_SERVER_KEYFILE</varname> (<type>string</type>)</term>
731,735c754,755
<         Enables or disables the query planner's use of explicit sort
< 	steps. It's not possible to suppress explicit sorts entirely,
< 	but turning this variable off discourages the planner from
< 	using one if there are other methods available. The default
< 	is on. This is used for debugging the query planner.
---
>         Sets the location of the Kerberos server key file. See
>         <xref linkend="kerberos-auth"> for details.
741c761
<       <term><varname>ENABLE_TIDSCAN</varname> (<type>boolean</type>)</term>
---
>       <term><varname>VIRTUAL_HOST</varname> (<type>string</type>)</term>
744,746c764,767
<         Enables or disables the query planner's use of <acronym>TID</> scan plan
<         types. The default is on. This is used for debugging the
<         query planner.
---
> 	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</>).
752c773
<       <term><varname>FROM_COLLAPSE_LIMIT</varname> (<type>integer</type>)</term>
---
>       <term><varname>DB_USER_NAMESPACE</varname> (<type>boolean</type>)</term>
755,759c776,786
<         The planner will merge sub-queries into upper queries if the resulting
< 	FROM list would have no more than this many items.  Smaller values
< 	reduce planning time but may yield inferior query plans.
< 	The default is 8.  It is usually wise to keep this less than
< 	<literal>GEQO_THRESHOLD</>.
---
>         This allows per-database user names.  It is off by default.
>        </para>
> 
>        <para>
>         If this is on, you should create users as <literal>username@dbname</>.
>         When <literal>username</> is passed by a connecting client,
>         <literal>@</> and the database name is appended to the user
>         name and that database-specific user name is looked up by the
>         server. Note that when you create users with names containing
>         <literal>@</> within the SQL environment, you will need to
>         quote the user name.
760a788,802
> 
>        <para>
>         With this option enabled, you can still create ordinary global
>         users.  Simply append <literal>@</> when specifying the user
>         name in the client.  The <literal>@</> will be stripped off
>         before the user name is looked up by the server.
>        </para>
> 
>        <note>
>         <para>
>          This feature is intended as a temporary measure until a
>          complete solution is found.  At that time, this option will
>          be removed.
>         </para>
>        </note>
764,771c806,808
<      <varlistentry>
<       <indexterm>
<        <primary>genetic query optimization</primary>
<       </indexterm>
<       <indexterm>
<        <primary>GEQO</primary>
<        <see>genetic query optimization</see>
<       </indexterm>
---
>     </variablelist>
>     </sect3>
>    </sect2>
773c810,818
<       <term><varname>GEQO</varname> (<type>boolean</type>)</term>
---
>    <sect2 id="runtime-config-resource">
>     <title>Resource Usage (Except WAL)</title>
> 
>     <sect3 id="runtime-config-resource-memory">
>      <title>Memory</title>
> 
>      <variablelist>
>      <varlistentry>
>       <term><varname>SHARED_BUFFERS</varname> (<type>integer</type>)</term>
776,779c821,836
<         Enables or disables genetic query optimization, which is an
<         algorithm that attempts to do query planning without exhaustive
<         searching. This is on by default. See also the various other
<         <varname>GEQO_</varname> settings.
---
>         Sets the number of shared memory buffers used by the database
>         server. The default is 64. Each buffer is typically 8192
>         bytes. This must be greater than 16, as well as at least twice
>         the value of <varname>MAX_CONNECTIONS</varname>; however, a
>         higher value can often improve performance.
> 	Values of a few thousand are recommended
>         for production installations. This option can only be set at
>         server start.
>        </para>
> 
>        <para>
>         Increasing this parameter may cause <productname>PostgreSQL</>
>         to request more <systemitem class="osname">System V</> shared
>         memory than your operating system's default configuration
>         allows. See <xref linkend="sysvipc"> for information on how to
>         adjust these parameters, if necessary.
785,789c842
<       <term><varname>GEQO_EFFORT</varname> (<type>integer</type>)</term>
<       <term><varname>GEQO_GENERATIONS</varname> (<type>integer</type>)</term>
<       <term><varname>GEQO_POOL_SIZE</varname> (<type>integer</type>)</term>
<       <term><varname>GEQO_RANDOM_SEED</varname> (<type>integer</type>)</term>
<       <term><varname>GEQO_SELECTION_BIAS</varname> (<type>floating point</type>)</term>
---
>       <term><varname>SORT_MEM</varname> (<type>integer</type>)</term>
792,807c845,869
<         Various tuning parameters for the genetic query optimization
<         algorithm: The pool size is the number of individuals in one
<         population. Valid values are between 128 and 1024. If it is set
<         to 0 (the default) a pool size of 2^(QS+1), where QS is the
<         number of <literal>FROM</> items in the query, is taken. The effort is used
<         to calculate a default for generations. Valid values are between
<         1 and 80, 40 being the default. Generations specifies the number
<         of iterations in the algorithm. The number must be a positive
<         integer. If 0 is specified then <literal>Effort *
<         Log2(PoolSize)</literal> is used. The run time of the algorithm
<         is roughly proportional to the sum of pool size and generations.
<         The selection bias is the selective pressure within the
<         population. Values can be from 1.50 to 2.00; the latter is the
<         default. The random seed can be set to get reproducible results
<         from the algorithm. If it is set to -1 then the algorithm
<         behaves non-deterministically.
---
> 	Specifies the amount of memory to be used by internal sort operations and
> 	hash tables before switching to temporary disk files. The value is
> 	specified in kilobytes, and defaults to 1024 kilobytes (1 MB).
> 	Note that for a complex query, several sort or hash operations might be
> 	running in parallel; each one will be allowed to use as much memory
> 	as this value specifies before it starts to put data into temporary
>         files. Also, several running sessions could be doing
>         sort operations simultaneously.  So the total memory used could be many
>         times the value of <varname>SORT_MEM</varname>. Sort operations are used
> 	by <literal>ORDER BY</>, merge joins, and <command>CREATE INDEX</>.
> 	Hash tables are used in hash joins, hash-based aggregation, and
> 	hash-based processing of <literal>IN</> subqueries.
>        </para>
>       </listitem>
>      </varlistentry>
>      
>      <varlistentry>
>       <term><varname>VACUUM_MEM</varname> (<type>integer</type>)</term>
>       <listitem>
>        <para>
> 	Specifies the maximum amount of memory to be used by
> 	<command>VACUUM</command> to keep track of to-be-reclaimed
> 	tuples. The value is specified in kilobytes, and defaults to
> 	8192 kilobytes. Larger settings may improve the speed of
> 	vacuuming large tables that have many deleted tuples.
811a874,879
>      </variablelist>
>      </sect3>
>      <sect3 id="runtime-config-resource-fsm">
>      <title>Free Space Map</title>
> 
>      <variablelist>
813c881
<       <term><varname>GEQO_THRESHOLD</varname> (<type>integer</type>)</term>
---
>       <term><varname>MAX_FSM_PAGES</varname> (<type>integer</type>)</term>
816,821c884,888
<         Use genetic query optimization to plan queries with at least
<         this many <literal>FROM</> items involved. (Note that an outer
<         <literal>JOIN</> construct counts as only one <literal>FROM</>
<         item.) The default is 11. For simpler queries it is usually best
<         to use the deterministic, exhaustive planner, but for queries with
< 	many tables the deterministic planner takes too long.
---
>         Sets the maximum number of disk pages for which free space will
>         be tracked in the shared free-space map.  Six bytes of shared memory
> 	are consumed for each page slot.  This setting must be more than
> 	16 * <varname>max_fsm_relations</varname>.  The default is 20000.
>         This option can only be set at server start.
827c894
<       <term><varname>JOIN_COLLAPSE_LIMIT</varname> (<type>integer</type>)</term>
---
>       <term><varname>MAX_FSM_RELATIONS</varname> (<type>integer</type>)</term>
830,837c897,901
< 	The planner will flatten explicit inner <literal>JOIN</> constructs
< 	into lists of <literal>FROM</> items whenever a list of no more than
< 	this many items would result.  Usually this is set the same as
< 	<literal>FROM_COLLAPSE_LIMIT</>.  Setting it to 1 prevents any
< 	flattening of inner <literal>JOIN</>s, allowing explicit
< 	<literal>JOIN</> syntax to be used to control the join order.
< 	Intermediate values might be useful to trade off planning time
< 	against quality of plan.
---
>         Sets the maximum number of relations (tables and indexes) for which
> 	free space will be tracked in the shared free-space map.  Roughly
> 	fifty bytes of shared memory are consumed for each slot.
> 	The default is 1000.
> 	This option can only be set at server start.
840a905,910
>      
>      </variablelist>
>      </sect3>
>      <sect3 id="runtime-config-resource-disk">
>      <title>Disk Resource Usage</title>
>      <variablelist>
843c913
<       <term><varname>RANDOM_PAGE_COST</varname> (<type>floating point</type>)</term>
---
>       <term><varname>MAX_FILES_PER_PROCESS</varname> (<type>integer</type>)</term>
846,850c916,929
<         Sets the query planner's estimate of the cost of a
<         nonsequentially fetched disk page. This is measured as a
<         multiple of the cost of a sequential page fetch. A higher
<         value makes it more likely a sequential scan will be used,
<         a lower value makes it more likely an index scan will be used.
---
>         Sets the maximum number of simultaneously open files allowed to each
>         server subprocess. The default is 1000. The limit actually used
>         by the code is the smaller of this setting and the result of
>         <literal>sysconf(_SC_OPEN_MAX)</literal>. Therefore, on systems
>         where <function>sysconf</> returns a reasonable limit, you don't
>         need to worry about this setting. But on some platforms
>         (notably, most BSD systems), <function>sysconf</> returns a
>         value that is much larger than the system can really support
>         when a large number of processes all try to open that many
>         files. If you find yourself seeing <quote>Too many open files</>
>         failures, try reducing this setting. This option can only be set
>         at server start or in the <filename>postgresql.conf</filename>
>         configuration file; if changed in the configuration file, it
>         only affects subsequently-started server subprocesses.
854c933,948
<     </variablelist>
---
>      
>      <varlistentry>
>       <term><varname>PRELOAD_LIBRARIES</varname> (<type>string</type>)</term>
>       <indexterm><primary>preload_libraries</></>
>       <listitem>
>        <para>
>         This variable specifies one or more shared libraries that are
>         to be preloaded at server start. An initialization function
>         can also be optionally specified by adding a colon followed by
>         the name of the initialization function after the library
>         name. For example
>         <literal>'$libdir/mylib:init_mylib'</literal> would cause
>         <literal>mylib</> to be preloaded and <literal>init_mylib</>
>         to be executed. If more than one library is to be loaded, they
>         must be delimited with a comma.
>        </para>
856,863c950,963
<    <note>
<     <para>
<      Unfortunately, there is no well-defined method for determining
<      ideal values for the family of <quote>cost</quote> variables that
<      were just described. You are encouraged to experiment and share
<      your findings.
<     </para>
<    </note>
---
>        <para>
>         If <literal>mylib</> is not found, the server will fail to
>         start.  However, if <literal>init_mylib</> is not found,
>         <literal>mylib</> will still be preloaded without executing
>         the initialization function.
>        </para>
> 
>        <para>
>         By preloading a shared library (and initializing it if
>         applicable), the library startup time is avoided when the
>         library is first used.
>        </para>
>       </listitem>
>      </varlistentry>
864a965,966
>      </variablelist>
>     </sect3>
867,868c969,970
<    <sect2 id="logging">
<     <title>Logging and Debugging</title>
---
>    <sect2 id="runtime-config-wal">
>     <title>Write Ahead Logging</title>
870c972,980
<     <variablelist>
---
>    <para>
>     See also <xref linkend="wal-configuration"> for details on WAL
>     tuning.
>    </para>
> 
>     <sect3 id="runtime-config-wal-settings">
>      <title>Settings</title>
>      <variablelist>
>      
872c982,986
<       <term><varname>CLIENT_MIN_MESSAGES</varname> (<type>string</type>)</term>
---
>       <indexterm>
>        <primary>fsync</primary>
>       </indexterm>
> 
>       <term><varname>FSYNC</varname> (<type>boolean</type>)</term>
875,883c989,995
<         This controls which message levels are send to the client.
<         client.  Valid values are <literal>DEBUG5</>,
<         <literal>DEBUG4</>, <literal>DEBUG3</>, <literal>DEBUG2</>,
<         <literal>DEBUG1</>, <literal>LOG</>, <literal>NOTICE</>,
<         <literal>WARNING</>, and <literal>ERROR</>.  Each level
<         includes all the levels that follow it.  The later the level,
<         the fewer messages are sent.  The default is
<         <literal>NOTICE</>.  Note that <literal>LOG</> has a different
<         rank here than in <literal>LOG_MIN_MESSAGES</>.
---
>         If this option is on, the <productname>PostgreSQL</> server
>         will use the <function>fsync()</> system call in several places
>         to make sure that updates are physically written to disk. This
>         insures that a database cluster will recover to a
>         consistent state after an operating system or hardware crash.
>         (Crashes of the database server itself are <emphasis>not</>
>         related to this.)
887,896c999,1008
<         Here is a list of the various message types:
<         <variablelist>
<          <varlistentry>
<           <term><literal>DEBUG[1-5]</literal></term>
<           <listitem>
<            <para>
<             Provides information for use by developers.
< 	   </para>
<           </listitem>
<          </varlistentry>
---
>         However, this operation does slow down
>         <productname>PostgreSQL</> because at transaction commit it has
>         wait for the operating system to flush the write-ahead log.
>         Without <function>fsync</>, the operating system is allowed to
>         do its best in buffering, sorting, and delaying writes, which
>         can considerably increase performance. However, if the system
>         crashes, the results of the last few committed transactions may
>         be lost in part or whole. In the worst case, unrecoverable data
>         corruption may occur.
>        </para>
898,906c1010,1020
<          <varlistentry>
<           <term><literal>INFO</literal></term>
<           <listitem>
<            <para>
<             Provides information implicitly requested by the user,
<             e.g., during <command>VACUUM VERBOSE</>.
< 	   </para>
<           </listitem>
<          </varlistentry>
---
>        <para>
>         For the above reasons, everyone can decide for himself what to
>         do with the <varname>fsync</> option.  Some administrators
>         always leave it off, some turn it off only for bulk loads,
>         where there is a clear restart point if something goes wrong,
>         and some leave it on just to be on the safe side.  The default
>         is on so that you are on the safe side.  If you trust your
>         operating system, your hardware, and your utility company (or
>         better your battery backup), you can consider disabling
>         <varname>fsync</varname>.
>        </para>
908,917c1022,1122
<          <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>
---
>        <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.
>        </para>
>       </listitem>
>      </varlistentry>
>      
>      <varlistentry>
>       <term><varname>WAL_SYNC_METHOD</varname> (<type>string</type>)</term>
>       <listitem>
>        <para>
>         Method used for forcing WAL updates out to disk.  Possible
> 	values are
> 	<literal>FSYNC</> (call <function>fsync()</> at each commit),
> 	<literal>FDATASYNC</> (call <function>fdatasync()</> at each commit),
> 	<literal>OPEN_SYNC</> (write WAL files with <function>open()</> option <symbol>O_SYNC</>), and
> 	<literal>OPEN_DATASYNC</> (write WAL files with <function>open()</> option <symbol>O_DSYNC</>).
> 	Not all of these choices are available on all platforms.
>         This option can only be set at server start or in the
> 	<filename>postgresql.conf</filename> file.
>        </para>
>       </listitem>
>      </varlistentry>
>      
>      <varlistentry>
>       <term><varname>WAL_BUFFERS</varname> (<type>integer</type>)</term>
>       <listitem>
>        <para>
>         Number of disk-page buffers in shared memory for WAL
>         logging. The default is 4. This option can only be set at
>         server start.
>        </para>
>       </listitem>
>      </varlistentry>
> 
>      </variablelist>
>      </sect3>
>      <sect3 id="runtime-config-wal-checkpoints">
>      <title>Checkpoints</title>
> 
>     <variablelist>
>      <varlistentry>
>       <term><varname>CHECKPOINT_SEGMENTS</varname> (<type>integer</type>)</term>
>       <listitem>
>        <para>
>         Maximum distance between automatic WAL checkpoints, in log file
> 	segments (each segment is normally 16 megabytes).
> 	This option can only be set at server start or in the
> 	<filename>postgresql.conf</filename> file.
>        </para>
>       </listitem>
>      </varlistentry>
> 
>      <varlistentry>
>       <term><varname>CHECKPOINT_TIMEOUT</varname> (<type>integer</type>)</term>
>       <listitem>
>        <para>
>         Maximum time between automatic WAL checkpoints, in seconds.
> 	This option can only be set at server start or in the
> 	<filename>postgresql.conf</filename> file.
>        </para>
>       </listitem>
>      </varlistentry>
> 
>      <varlistentry>
>       <term><varname>CHECKPOINT_WARNING</varname> (<type>integer</type>)</term>
>       <listitem>
>        <para>
>         Send a message to the server logs if checkpoints caused by the
>         filling of checkpoint segment files happens more frequently than
>         this number of seconds.  Zero turns off the warning.
>        </para>
>       </listitem>
>      </varlistentry>
> 		
> 		
>      <varlistentry>
>       <term><varname>COMMIT_DELAY</varname> (<type>integer</type>)</term>
>       <listitem>
>        <para>
>         Time delay between writing a commit record to the WAL buffer and
>         flushing the buffer out to disk, in microseconds. A nonzero
>         delay allows multiple transactions to be committed with only one
>         <function>fsync</function> system call, if system load is high
>         enough additional transactions may become ready to commit within
>         the given interval. But the delay is just wasted if no other
>         transactions become ready to commit. Therefore, the delay is
>         only performed if at least <varname>COMMIT_SIBLINGS</varname> other transactions
>         are active at the instant that a server process has written its commit
>         record.
>        </para>
>       </listitem>
>      </varlistentry>
919,927c1124,1138
<          <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><varname>COMMIT_SIBLINGS</varname> (<type>integer</type>)</term>
>       <listitem>
>        <para>
>         Minimum number of concurrent open transactions to require before
>         performing the <varname>COMMIT_DELAY</> delay. A larger value
>         makes it more probable that at least one other transaction will
>         become ready to commit during the delay interval.
>        </para>
>       </listitem>
>      </varlistentry>
>      
>      </variablelist>
>     </sect3>
>    </sect2>
929,936c1140,1141
<          <varlistentry>
<           <term><literal>ERROR</literal></term>
<           <listitem>
<            <para>
<             Reports an error that caused the current transaction to abort.
< 	   </para>
<           </listitem>
<          </varlistentry>
---
>    <sect2 id="runtime-config-query">
>     <title>Query Tuning</title>
938,946c1143,1145
<          <varlistentry>
<           <term><literal>LOG</literal></term>
<           <listitem>
<            <para>
<             Reports information of interest to administrators, e.g.,
< 	    checkpoint activity.
< 	   </para>
<           </listitem>
<          </varlistentry>
---
>     <sect3 id="runtime-config-query-enable">
>      <title>Planner Method Enabling</title>
>      <variablelist>
948,955d1146
<          <varlistentry>
<           <term><literal>FATAL</literal></term>
<           <listitem>
<            <para>
<             Reports an error that caused the current session to abort.
< 	   </para>
<           </listitem>
<          </varlistentry>
957,965c1148,1154
<          <varlistentry>
<           <term><literal>PANIC</literal></term>
<           <listitem>
<            <para>
<             Reports an error that caused all sessions to abort.
< 	   </para>
<           </listitem>
<          </varlistentry>
<         </variablelist>
---
>      <varlistentry>
>       <term><varname>ENABLE_HASHAGG</varname> (<type>boolean</type>)</term>
>       <listitem>
>        <para>
>         Enables or disables the query planner's use of hashed aggregation
> 	plan types. The default is on. This is used for debugging the query
> 	planner.
971c1160
<       <term><varname>DEBUG_ASSERTIONS</varname> (<type>boolean</type>)</term>
---
>       <term><varname>ENABLE_HASHJOIN</varname> (<type>boolean</type>)</term>
974,983c1163,1165
<         Turns on various assertion checks. This is a debugging aid. If
<         you are experiencing strange problems or crashes you might want
<         to turn this on, as it might expose programming mistakes. To use
<         this option, the macro <literal>USE_ASSERT_CHECKING</literal>
<         must be defined when <productname>PostgreSQL</productname> is
<         built (accomplished by the <command>configure</command> option
<         <option>--enable-cassert</option>). Note that
<         <literal>DEBUG_ASSERTIONS</literal> defaults to on if
<         <productname>PostgreSQL</productname> has been built with
< 	assertions enabled.
---
>         Enables or disables the query planner's use of hash-join plan
>         types. The default is on. This is used for debugging the
>         query planner.
989,992c1171,1175
<       <term><varname>DEBUG_PRINT_PARSE</varname> (<type>boolean</type>)</term>
<       <term><varname>DEBUG_PRINT_REWRITTEN</varname> (<type>boolean</type>)</term>
<       <term><varname>DEBUG_PRINT_PLAN</varname> (<type>boolean</type>)</term>
<       <term><varname>DEBUG_PRETTY_PRINT</varname> (<type>boolean</type>)</term>
---
>       <indexterm>
>        <primary>index scan</primary>
>       </indexterm>
> 
>       <term><varname>ENABLE_INDEXSCAN</varname> (<type>boolean</type>)</term>
995,1002c1178,1180
<         These options enable various debugging output to be sent to the
<         client or server log. For each executed query, they print the resulting 
<         parse tree, the query rewriter output, or the execution plan.
<         <option>DEBUG_PRETTY_PRINT</option> indents these displays to
<         produce a more readable but much longer output format.
< 	<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.
---
>         Enables or disables the query planner's use of index-scan plan
>         types. The default is on. This is used to debugging the
>         query planner.
1008c1186
<       <term><varname>EXPLAIN_PRETTY_PRINT</varname> (<type>boolean</type>)</term>
---
>       <term><varname>ENABLE_MERGEJOIN</varname> (<type>boolean</type>)</term>
1011,1012c1189,1191
<         Determines whether <command>EXPLAIN VERBOSE</> uses the indented
< 	or non-indented format for displaying detailed query-tree dumps.
---
>         Enables or disables the query planner's use of merge-join plan
>         types. The default is on. This is used for debugging the
>         query planner.
1018c1197
<       <term><varname>LOG_HOSTNAME</varname> (<type>boolean</type>)</term>
---
>       <term><varname>ENABLE_NESTLOOP</varname> (<type>boolean</type>)</term>
1021,1025c1200,1204
<         By default, connection logs only show the IP address of the
<         connecting host. If you want it to show the host name you can
<         turn this on, but depending on your host name resolution setup
<         it might impose a non-negligible performance penalty. This
<         option can only be set at server start.
---
>         Enables or disables the query planner's use of nested-loop join
>         plans. It's not possible to suppress nested-loop joins entirely,
>         but turning this variable off discourages the planner from using
>         one if there are other methods available. The default is
>         on. This is used for debugging the query planner.
1031c1210,1214
<       <term><varname>LOG_CONNECTIONS</varname> (<type>boolean</type>)</term>
---
>       <indexterm>
>        <primary>sequential scan</primary>
>       </indexterm>
> 
>       <term><varname>ENABLE_SEQSCAN</varname> (<type>boolean</type>)</term>
1034,1037c1217,1221
<         This outputs a line to the server logs detailing each successful
<         connection. This is off by default, although it is probably very
<         useful. This option can only be set at server start or in the
<         <filename>postgresql.conf</filename> configuration file.
---
>         Enables or disables the query planner's use of sequential scan
>         plan types. It's not possible to suppress sequential scans
>         entirely, but turning this variable off discourages the planner
>         from using one if there are other methods available. The
>         default is on. This is used for debugging the query planner.
1043c1227
<       <term><varname>LOG_DURATION</varname> (<type>boolean</type>)</term>
---
>       <term><varname>ENABLE_SORT</varname> (<type>boolean</type>)</term>
1046,1049c1230,1234
<         Causes the duration of every completed statement to be logged.
<         To use this option, enable <varname>LOG_STATEMENT</> and
<         <varname>LOG_PID</> so you can link the statement to the
<         duration using the process ID.
---
>         Enables or disables the query planner's use of explicit sort
> 	steps. It's not possible to suppress explicit sorts entirely,
> 	but turning this variable off discourages the planner from
> 	using one if there are other methods available. The default
> 	is on. This is used for debugging the query planner.
1055c1240
<       <term><varname>LOG_MIN_DURATION_STATEMENT</varname> (<type>integer</type>)</term>
---
>       <term><varname>ENABLE_TIDSCAN</varname> (<type>boolean</type>)</term>
1058,1066c1243,1245
<         Sets a minimum statement execution time (in milliseconds)
< 	above which a statement will be logged.  All SQL statements
< 	that run longer than the time specified will be logged together
< 	with the duration, in seconds.  The default is <literal>0</literal>
< 	(turning this feature off).  For example, if you set it
< 	to <literal>250</literal> then all SQL statements that run longer
< 	than 250ms will be logged along with the duration.  Enabling this
< 	option can be useful in tracking down unoptimized queries in
< 	your applications.
---
>         Enables or disables the query planner's use of <acronym>TID</> scan plan
>         types. The default is on. This is used for debugging the
>         query planner.
1069a1249,1262
>      
>      </variablelist>
>      </sect3>
>      <sect3 id="runtime-config-query-constants">
>      <title>Planner Cost Constants</title>
> 
>    <note>
>     <para>
>      Unfortunately, there is no well-defined method for determining
>      ideal values for the family of <quote>cost</quote> variables that
>      below. You are encouraged to experiment and share
>      your findings.
>     </para>
>    </note>
1070a1264,1265
>      <variablelist>
>      
1072c1267
<       <term><varname>LOG_MIN_ERROR_STATEMENT</varname> (<type>string</type>)</term>
---
>       <term><varname>EFFECTIVE_CACHE_SIZE</varname> (<type>floating point</type>)</term>
1075,1089c1270,1274
<         Controls whether or not the SQL statement that causes an error
<         condition will also be recorded in the server log. All SQL
<         statements that cause an error of the specified level, or a
<         higher level, are logged.  The default is
<         <literal>PANIC</literal> (effectively turning this feature
<         off). Valid values are <literal>DEBUG5</literal>,
<         <literal>DEBUG4</literal>, <literal>DEBUG3</literal>,
<         <literal>DEBUG2</literal>, <literal>DEBUG1</literal>,
<         <literal>INFO</literal>, <literal>NOTICE</literal>,
<         <literal>WARNING</literal>, <literal>ERROR</literal>,
<         <literal>FATAL</literal>, and <literal>PANIC</literal>.  For
<         example, if you set this to <literal>ERROR</literal> then all
<         SQL statements causing errors, fatal errors, or panics will be
<         logged. Enabling this option can be helpful in tracking down
<         the source of any errors that appear in the server log.
---
>         Sets the planner's assumption about the effective size of the
>         disk cache (that is, the portion of the kernel's disk cache that
>         will be used for <productname>PostgreSQL</productname> data
>         files). This is measured in disk pages, which are normally 8 kB
>         each.
1090a1276,1277
>       </listitem>
>      </varlistentry>
1091a1279,1281
>      <varlistentry>
>       <term><varname>RANDOM_PAGE_COST</varname> (<type>floating point</type>)</term>
>       <listitem>
1093,1095c1283,1287
<         It is recommended you enable <varname>LOG_PID</varname> as well
<         so you can more easily match the error statement with the error
<         message.
---
>         Sets the query planner's estimate of the cost of a
>         nonsequentially fetched disk page. This is measured as a
>         multiple of the cost of a sequential page fetch. A higher
>         value makes it more likely a sequential scan will be used,
>         a lower value makes it more likely an index scan will be used.
1098a1291
>     </variablelist>
1099a1293
>     <variablelist>
1101c1295
<       <term><varname>LOG_MIN_MESSAGES</varname> (<type>string</type>)</term>
---
>       <term><varname>CPU_INDEX_TUPLE_COST</varname> (<type>floating point</type>)</term>
1104,1114c1298,1300
<         This controls which message levels are written to the server
<         log.  Valid values are <literal>DEBUG5</>, <literal>DEBUG4</>,
<         <literal>DEBUG3</>, <literal>DEBUG2</>, <literal>DEBUG1</>,
<         <literal>INFO</>, <literal>NOTICE</>, <literal>WARNING</>,
<         <literal>ERROR</>, <literal>LOG</>, <literal>FATAL</>, and
<         <literal>PANIC</>.  Each level includes all the levels that
<         follow it.  The later the level, the fewer messages are sent
<         to the log.  The default is <literal>NOTICE</>.  Note that
<         <literal>LOG</> has a different rank here than in
<         <literal>CLIENT_MIN_MESSAGES</>.  Also see that section for an
<         explanation of the various values.
---
>         Sets the query planner's estimate of the cost of processing
> 	each index tuple during an index scan. This is measured as a
> 	fraction of the cost of a sequential page fetch.
1116d1301
< 
1119c1304
< 
---
>     
1121c1306
<       <term><varname>LOG_PID</varname> (<type>boolean</type>)</term>
---
>       <term><varname>CPU_OPERATOR_COST</varname> (<type>floating point</type>)</term>
1124,1128c1309,1311
<         Prefixes each message in the server log file with the process ID of
<         the server process. This is useful to sort out which messages
<         pertain to which connection. The default is off.  This parameter
<         does not affect messages logged via <application>syslog</>, which always contain
<         the process ID.
---
>         Sets the planner's estimate of the cost of processing each
> 	operator in a <literal>WHERE</> clause. This is measured as a fraction of
> 	the cost of a sequential page fetch.
1134c1317
<       <term><varname>LOG_STATEMENT</varname> (<type>boolean</type>)</term>
---
>       <term><varname>CPU_TUPLE_COST</varname> (<type>floating point</type>)</term>
1137c1320,1322
<         Causes each SQL statement to be logged.
---
>         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.
1141a1327,1333
>      </variablelist>
>     </sect3>
>      <sect3 id="runtime-config-query-geqo">
>      <title>Genetic Estimate Query Optimizer</title>
> 
>      <variablelist>
> 
1143c1335,1342
<       <term><varname>LOG_TIMESTAMP</varname> (<type>boolean</type>)</term>
---
>       <indexterm>
>        <primary>genetic query optimization</primary>
>       </indexterm>
>       <indexterm>
>        <primary>GEQO</primary>
>        <see>genetic query optimization</see>
>       </indexterm>
>       <term><varname>GEQO</varname> (<type>boolean</type>)</term>
1146,1147c1345,1348
<         Prefixes each server log message with a time stamp. The default
<         is off.
---
>         Enables or disables genetic query optimization, which is an
>         algorithm that attempts to do query planning without exhaustive
>         searching. This is on by default. See also the various other
>         <varname>GEQO_</varname> settings.
1153,1156c1354
<       <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>GEQO_THRESHOLD</varname> (<type>integer</type>)</term>
1159,1161c1357,1362
<         For each query, write performance statistics of the respective
<         module to the server log. This is a crude profiling
<         instrument.
---
>         Use genetic query optimization to plan queries with at least
>         this many <literal>FROM</> items involved. (Note that an outer
>         <literal>JOIN</> construct counts as only one <literal>FROM</>
>         item.) The default is 11. For simpler queries it is usually best
>         to use the deterministic, exhaustive planner, but for queries with
> 	many tables the deterministic planner takes too long.
1167c1368,1372
<       <term><varname>LOG_SOURCE_PORT</varname> (<type>boolean</type>)</term>
---
>       <term><varname>GEQO_EFFORT</varname> (<type>integer</type>)</term>
>       <term><varname>GEQO_GENERATIONS</varname> (<type>integer</type>)</term>
>       <term><varname>GEQO_POOL_SIZE</varname> (<type>integer</type>)</term>
>       <term><varname>GEQO_RANDOM_SEED</varname> (<type>integer</type>)</term>
>       <term><varname>GEQO_SELECTION_BIAS</varname> (<type>floating point</type>)</term>
1170,1174c1375,1390
<         Shows the outgoing port number of the connecting host in the
<         connection log messages. You could trace back the port number
<         to find out what user initiated the connection. Other than
<         that, it's pretty useless and therefore off by default. This
<         option can only be set at server start.
---
>         Various tuning parameters for the genetic query optimization
>         algorithm: The pool size is the number of individuals in one
>         population. Valid values are between 128 and 1024. If it is set
>         to 0 (the default) a pool size of 2^(QS+1), where QS is the
>         number of <literal>FROM</> items in the query, is taken. The effort is used
>         to calculate a default for generations. Valid values are between
>         1 and 80, 40 being the default. Generations specifies the number
>         of iterations in the algorithm. The number must be a positive
>         integer. If 0 is specified then <literal>Effort *
>         Log2(PoolSize)</literal> is used. The run time of the algorithm
>         is roughly proportional to the sum of pool size and generations.
>         The selection bias is the selective pressure within the
>         population. Values can be from 1.50 to 2.00; the latter is the
>         default. The random seed can be set to get reproducible results
>         from the algorithm. If it is set to -1 then the algorithm
>         behaves non-deterministically.
1177a1394,1400
>      
>      </variablelist>
>     </sect3>
>      <sect3 id="runtime-config-query-other">
>      <title>Other Query Modifiers</title>
> 
>      <variablelist>
1180c1403
<       <term><varname>STATS_COMMAND_STRING</varname> (<type>boolean</type>)</term>
---
>       <term><varname>EXPLAIN_PRETTY_PRINT</varname> (<type>boolean</type>)</term>
1183,1191c1406,1407
<         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.
---
>         Determines whether <command>EXPLAIN VERBOSE</> uses the indented
> 	or non-indented format for displaying detailed query-tree dumps.
1195c1411
< 
---
>      
1197,1198c1413
<       <term><varname>STATS_BLOCK_LEVEL</varname> (<type>boolean</type>)</term>
<       <term><varname>STATS_ROW_LEVEL</varname> (<type>boolean</type>)</term>
---
>       <term><varname>FROM_COLLAPSE_LIMIT</varname> (<type>integer</type>)</term>
1201,1206c1416,1420
<         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.
---
>         The planner will merge sub-queries into upper queries if the resulting
> 	FROM list would have no more than this many items.  Smaller values
> 	reduce planning time but may yield inferior query plans.
> 	The default is 8.  It is usually wise to keep this less than
> 	<literal>GEQO_THRESHOLD</>.
1212c1426
<       <term><varname>STATS_RESET_ON_SERVER_START</varname> (<type>boolean</type>)</term>
---
>       <term><varname>JOIN_COLLAPSE_LIMIT</varname> (<type>integer</type>)</term>
1215,1218c1429,1436
<         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.
---
> 	The planner will flatten explicit inner <literal>JOIN</> constructs
> 	into lists of <literal>FROM</> items whenever a list of no more than
> 	this many items would result.  Usually this is set the same as
> 	<literal>FROM_COLLAPSE_LIMIT</>.  Setting it to 1 prevents any
> 	flattening of inner <literal>JOIN</>s, allowing explicit
> 	<literal>JOIN</> syntax to be used to control the join order.
> 	Intermediate values might be useful to trade off planning time
> 	against quality of plan.
1224c1442
<       <term><varname>STATS_START_COLLECTOR</varname> (<type>boolean</type>)</term>
---
>       <term><varname>MAX_EXPR_DEPTH</varname> (<type>integer</type>)</term>
1227,1231c1445,1448
<         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.
---
>         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.)
1234a1452,1462
>      
>      </variablelist>
>     </sect3>
>    </sect2>
> 
>    <sect2 id="runtime-config-logging">
>     <title>Logging and Debugging</title>
> 
>     <sect3 id="runtime-config-logging-syslog">
>      <title>Syslog</title>
>      <variablelist>
1280a1509,1597
>       
>       </variablelist>
>     </sect3>
>      <sect3 id="runtime-config-logging-when">
>      <title>When To Log</title>
> 
>        <para>
>         Here is a list of the various message types:
>         <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>
1283c1600
<       <term><varname>TRACE_NOTIFY</varname> (<type>boolean</type>)</term>
---
>       <term><varname>LOG_MIN_MESSAGES</varname> (<type>string</type>)</term>
1286,1291c1603,1613
<         Generates a great amount of debugging output for the
<         <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.
---
>         This controls which message levels are written to the server
>         log.  Valid values are <literal>DEBUG5</>, <literal>DEBUG4</>,
>         <literal>DEBUG3</>, <literal>DEBUG2</>, <literal>DEBUG1</>,
>         <literal>INFO</>, <literal>NOTICE</>, <literal>WARNING</>,
>         <literal>ERROR</>, <literal>LOG</>, <literal>FATAL</>, and
>         <literal>PANIC</>.  Each level includes all the levels that
>         follow it.  The later the level, the fewer messages are sent
>         to the log.  The default is <literal>NOTICE</>.  Note that
>         <literal>LOG</> has a different rank here than in
>         <literal>CLIENT_MIN_MESSAGES</>.  Also see that section for an
>         explanation of the various values.
1292a1615
> 
1295,1299d1617
<     </variablelist>
<    </sect2>
< 
<    <sect2 id="runtime-config-general">
<     <title>General Operation</title>
1301d1618
<     <variablelist>
1303c1620
<       <term><varname>ADD_MISSING_FROM</varname> (<type>boolean</type>)</term>
---
>       <term><varname>CLIENT_MIN_MESSAGES</varname> (<type>string</type>)</term>
1306,1313c1623,1631
<         This parameter controls whether a relation referenced in a query but
<         missing from the FROM clause should be automatically added to
<         the FROM clause. If enabled (the default), the notice
<         <literal>Adding missing FROM-clause entry for table "tablename"</literal>
<         is generated if a relation is automatically added. If not enabled,
<         an error is raised when an additional extra relation is required.
<         For SQL standards compliance, this value should be set to 
<         <literal>false</>.
---
>         This controls which message levels are send to the client.
>         client.  Valid values are <literal>DEBUG5</>,
>         <literal>DEBUG4</>, <literal>DEBUG3</>, <literal>DEBUG2</>,
>         <literal>DEBUG1</>, <literal>LOG</>, <literal>NOTICE</>,
>         <literal>WARNING</>, and <literal>ERROR</>.  Each level
>         includes all the levels that follow it.  The later the level,
>         the fewer messages are sent.  The default is
>         <literal>NOTICE</>.  Note that <literal>LOG</> has a different
>         rank here than in <literal>LOG_MIN_MESSAGES</>.
1316a1635
>      
1319,1320c1638
<       <term><varname>AUSTRALIAN_TIMEZONES</varname> (<type>boolean</type>)</term>
<       <indexterm><primary>Australian time zones</></>
---
>       <term><varname>LOG_MIN_ERROR_STATEMENT</varname> (<type>string</type>)</term>
1323,1327c1641,1661
<         If set to true, <literal>ACST</literal>,
<         <literal>CST</literal>, <literal>EST</literal>, and
<         <literal>SAT</literal> are interpreted as Australian time
<         zones rather than as North/South American time zones and
<         Saturday. The default is false.
---
>         Controls whether or not the SQL statement that causes an error
>         condition will also be recorded in the server log. All SQL
>         statements that cause an error of the specified level, or a
>         higher level, are logged.  The default is
>         <literal>PANIC</literal> (effectively turning this feature
>         off). Valid values are <literal>DEBUG5</literal>,
>         <literal>DEBUG4</literal>, <literal>DEBUG3</literal>,
>         <literal>DEBUG2</literal>, <literal>DEBUG1</literal>,
>         <literal>INFO</literal>, <literal>NOTICE</literal>,
>         <literal>WARNING</literal>, <literal>ERROR</literal>,
>         <literal>FATAL</literal>, and <literal>PANIC</literal>.  For
>         example, if you set this to <literal>ERROR</literal> then all
>         SQL statements causing errors, fatal errors, or panics will be
>         logged. Enabling this option can be helpful in tracking down
>         the source of any errors that appear in the server log.
>        </para>
> 
>        <para>
>         It is recommended you enable <varname>LOG_PID</varname> as well
>         so you can more easily match the error statement with the error
>         message.
1333,1334c1667
<       <term><varname>AUTHENTICATION_TIMEOUT</varname> (<type>integer</type>)</term>
<       <indexterm><primary>timeout</><secondary>authentication</></indexterm>
---
>       <term><varname>SILENT_MODE</varname> (<type>boolean</type>)</term>
1337,1342c1670,1676
<         Maximum time to complete client authentication, in seconds. If a
<         would-be client has not completed the authentication protocol in
<         this much time, the server breaks the connection. This prevents
<         hung clients from occupying a connection indefinitely. This
<         option can only be set at server start or in the
<         <filename>postgresql.conf</filename> file.
---
>         Runs the server silently. If this option is set, the server
>         will automatically run in background and any controlling terminals
>         are disassociated.  Thus, no messages are written to standard
>         output or standard error (same effect as <command>postmaster</>'s <option>-S</option>
>         option). Unless some logging system such as
>         <application>syslog</> is enabled, using this option is
>         discouraged since it makes it impossible to see error messages.
1346a1681,1687
>      </variablelist>
>     </sect3>
>      <sect3 id="runtime-config-logging-what">
>      <title>What To Log</title>
>      
>      <variablelist>
>      
1348,1349c1689,1692
<       <term><varname>CLIENT_ENCODING</varname> (<type>string</type>)</term>
<       <indexterm><primary>character set encoding</></>
---
>       <term><varname>DEBUG_PRINT_PARSE</varname> (<type>boolean</type>)</term>
>       <term><varname>DEBUG_PRINT_REWRITTEN</varname> (<type>boolean</type>)</term>
>       <term><varname>DEBUG_PRINT_PLAN</varname> (<type>boolean</type>)</term>
>       <term><varname>DEBUG_PRETTY_PRINT</varname> (<type>boolean</type>)</term>
1352,1353c1695,1702
<         Sets the client-side encoding (character set).
< 	The default is to use the database encoding.
---
>         These options enable various debugging output to be sent to the
>         client or server log. For each executed query, they print the resulting
>         parse tree, the query rewriter output, or the execution plan.
>         <option>DEBUG_PRETTY_PRINT</option> indents these displays to
>         produce a more readable but much longer output format.
> 	<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.
1359,1360c1708
<       <term><varname>DATESTYLE</varname> (<type>string</type>)</term>
<       <indexterm><primary>date style</></>
---
>       <term><varname>LOG_CONNECTIONS</varname> (<type>boolean</type>)</term>
1363,1366c1711,1714
<         Sets the display format for date and time values, as well as
<         the rules for interpreting ambiguous date input values.  See
<         <xref linkend="datatype-datetime"> for more information.  The
<         default is <literal>ISO, US</>.
---
>         This outputs a line to the server logs detailing each successful
>         connection. This is off by default, although it is probably very
>         useful. This option can only be set at server start or in the
>         <filename>postgresql.conf</filename> configuration file.
1370a1719
> 
1372c1721
<       <term><varname>DB_USER_NAMESPACE</varname> (<type>boolean</type>)</term>
---
>       <term><varname>LOG_DURATION</varname> (<type>boolean</type>)</term>
1375,1392c1724,1727
<         This allows per-database user names.  It is off by default.
<        </para>
< 
<        <para>
<         If this is on, you should create users as <literal>username@dbname</>.
<         When <literal>username</> is passed by a connecting client,
<         <literal>@</> and the database name is appended to the user
<         name and that database-specific user name is looked up by the
<         server. Note that when you create users with names containing
<         <literal>@</> within the SQL environment, you will need to
<         quote the user name.
<        </para>
< 
<        <para>
<         With this option enabled, you can still create ordinary global
<         users.  Simply append <literal>@</> when specifying the user
<         name in the client.  The <literal>@</> will be stripped off
<         before the user name is looked up by the server.
---
>         Causes the duration of every completed statement to be logged.
>         To use this option, enable <varname>LOG_STATEMENT</> and
>         <varname>LOG_PID</> so you can link the statement to the
>         duration using the process ID.
1394,1401d1728
< 
<        <note>
<         <para>
<          This feature is intended as a temporary measure until a
<          complete solution is found.  At that time, this option will
<          be removed.
<         </para>
<        </note>
1404c1731
< 
---
>      
1406,1415c1733
<       <indexterm>
<        <primary>deadlock</primary>
<        <secondary>timeout</secondary>
<       </indexterm>
<       <indexterm>
<        <primary>timeout</primary>
<        <secondary>deadlock</secondary>
<       </indexterm>
< 
<       <term><varname>DEADLOCK_TIMEOUT</varname> (<type>integer</type>)</term>
---
>       <term><varname>LOG_PID</varname> (<type>boolean</type>)</term>
1418,1431c1736,1740
<         This is the amount of time, in milliseconds, to wait on a lock
<         before checking to see if there is a deadlock condition. The
<         check for deadlock is relatively slow, so the server doesn't run
<         it every time it waits for a lock. We (optimistically?) assume
<         that deadlocks are not common in production applications and
<         just wait on the lock for a while before starting the check for a
<         deadlock. Increasing this value reduces the amount of time
<         wasted in needless deadlock checks, but slows down reporting of
<         real deadlock errors. The default is 1000 (i.e., one second),
<         which is probably about the smallest value you would want in
<         practice. On a heavily loaded server you might want to raise it.
<         Ideally the setting should exceed your typical transaction time,
<         so as to improve the odds that a lock will be released before
<         the waiter decides to check for deadlock.
---
>         Prefixes each message in the server log file with the process ID of
>         the server process. This is useful to sort out which messages
>         pertain to which connection. The default is off.  This parameter
>         does not affect messages logged via <application>syslog</>, which always contain
>         the process ID.
1437,1441c1746
<       <indexterm>
<        <primary>transaction isolation level</primary>
<       </indexterm>
< 
<       <term><varname>DEFAULT_TRANSACTION_ISOLATION</varname> (<type>string</type>)</term>
---
>       <term><varname>LOG_STATEMENT</varname> (<type>boolean</type>)</term>
1444,1452c1749
<         Each SQL transaction has an isolation level, which can be either
<         <quote>read committed</quote> or <quote>serializable</quote>.
<         This parameter controls the default isolation level of each new
<         transaction. The default is <quote>read committed</quote>.
<        </para>
< 
<        <para>
<         Consult <xref linkend="mvcc"> and <xref linkend="sql-set-transaction"> for more
<         information.
---
>         Causes each SQL statement to be logged.
1458,1462c1755
<       <indexterm>
<        <primary>read-only transaction</primary>
<       </indexterm>
< 
<       <term><varname>DEFAULT_TRANSACTION_READ_ONLY</varname> (<type>boolean</type>)</term>
---
>       <term><varname>LOG_TIMESTAMP</varname> (<type>boolean</type>)</term>
1465,1471c1758,1759
<         A read-only SQL transaction cannot alter non-temporary tables.
<         This parameter controls the default read-only status of each new
<         transaction. The default is false (read/write).
<        </para>
< 
<        <para>
<         Consult <xref linkend="sql-set-transaction"> for more information.
---
>         Prefixes each server log message with a time stamp. The default
>         is off.
1477,1479c1765
<       <term><varname>DYNAMIC_LIBRARY_PATH</varname> (<type>string</type>)</term>
<       <indexterm><primary>dynamic_library_path</></>
<       <indexterm><primary>dynamic loading</></>
---
>       <term><varname>LOG_HOSTNAME</varname> (<type>boolean</type>)</term>
1482,1517c1768,1772
<         If a dynamically loadable module needs to be opened and the
<         specified name does not have a directory component (i.e. the
<         name does not contain a slash), the system will search this
<         path for the specified file.  (The name that is used is the
<         name specified in the <command>CREATE FUNCTION</command> or
<         <command>LOAD</command> command.)
<        </para>
< 
<        <para>
<         The value for <varname>DYNAMIC_LIBRARY_PATH</varname> has to be a colon-separated
<         list of absolute directory names. If a directory name starts
<         with the special value <literal>$libdir</literal>, the
<         compiled-in <productname>PostgreSQL</productname> package
<         library directory is substituted. This where the modules
<         provided by the <productname>PostgreSQL</productname>
<         distribution are installed. (Use <literal>pg_config
<         --pkglibdir</literal> to print the name of this directory.) For
<         example:
< <programlisting>
< dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir'
< </programlisting>
<        </para>
< 
<        <para>
<         The default value for this parameter is
<         <literal>'$libdir'</literal>. If the value is set to an empty
<         string, the automatic path search is turned off.
<        </para>
< 
<        <para>
<         This parameter can be changed at run time by superusers, but a
<         setting done that way will only persist until the end of the
<         client connection, so this method should be reserved for
<         development purposes. The recommended way to set this parameter
<         is in the <filename>postgresql.conf</filename> configuration
<         file.
---
>         By default, connection logs only show the IP address of the
>         connecting host. If you want it to show the host name you can
>         turn this on, but depending on your host name resolution setup
>         it might impose a non-negligible performance penalty. This
>         option can only be set at server start.
1523,1531c1778
<       <indexterm>
<        <primary>significant digits</primary>
<       </indexterm>
<       <indexterm>
<        <primary>display</primary>
<        <secondary>of float numbers</secondary>
<       </indexterm>
< 
<       <term><varname>EXTRA_FLOAT_DIGITS</varname> (<type>integer</type>)</term>
---
>       <term><varname>LOG_SOURCE_PORT</varname> (<type>boolean</type>)</term>
1534,1541c1781,1785
<         This parameter adjusts the number of digits displayed for
< 	floating-point values, including <type>float4</>, <type>float8</>,
< 	and geometric data types.  The parameter value is added to the
< 	standard number of digits (<literal>FLT_DIG</> or <literal>DBL_DIG</>
< 	as appropriate).  The value can be set as high as 2, to include
< 	partially-significant digits; this is especially useful for dumping
< 	float data that needs to be restored exactly.  Or it can be set
< 	negative to suppress unwanted digits.
---
>         Shows the outgoing port number of the connecting host in the
>         connection log messages. You could trace back the port number
>         to find out what user initiated the connection. Other than
>         that, it's pretty useless and therefore off by default. This
>         option can only be set at server start.
1544a1789,1799
>      
>      </variablelist>
>     </sect3>
>    </sect2>
> 
>    <sect2 id="runtime-config-client">
>     <title>Client Connection Defaults</title>
> 
>     <sect3 id="runtime-config-client-statement">
>      <title>Statement Behavior</title>
>      <variablelist>
1547c1802,1804
<       <term><varname>KRB_SERVER_KEYFILE</varname> (<type>string</type>)</term>
---
>       <term><varname>SEARCH_PATH</varname> (<type>string</type>)</term>
>       <indexterm><primary>search_path</></>
>       <indexterm><primary>path</><secondary>for schemas</></>
1550,1551c1807,1813
<         Sets the location of the Kerberos server key file. See
<         <xref linkend="kerberos-auth"> for details.
---
>         This variable specifies the order in which schemas are searched
> 	when an object (table, data type, function, etc.) is referenced by a
> 	simple name with no schema component.  When there are objects of
> 	identical names in different schemas, the one found first
> 	in the search path is used.  An object that is not in any of the
> 	schemas in the search path can only be referenced by specifying
> 	its containing schema with a qualified (dotted) name.
1553,1554d1814
<       </listitem>
<      </varlistentry>
1556,1559c1816,1822
<      <varlistentry>
<       <indexterm>
<        <primary>fsync</primary>
<       </indexterm>
---
>        <para>
>         The value for <varname>search_path</varname> has to be a comma-separated
>         list of schema names.  If one of the list items is
>         the special value <literal>$user</literal>, then the schema
> 	having the name returned by <function>SESSION_USER</> is substituted, if there
> 	is such a schema.  (If not, <literal>$user</literal> is ignored.)
>        </para>
1561,1562d1823
<       <term><varname>FSYNC</varname> (<type>boolean</type>)</term>
<       <listitem>
1564,1570c1825,1832
<         If this option is on, the <productname>PostgreSQL</> server
<         will use the <function>fsync()</> system call in several places
<         to make sure that updates are physically written to disk. This
<         insures that a database cluster will recover to a
<         consistent state after an operating system or hardware crash.
<         (Crashes of the database server itself are <emphasis>not</>
<         related to this.)
---
>         The system catalog schema, <literal>pg_catalog</>, is always
> 	searched, whether it is mentioned in the path or not.  If it is
> 	mentioned in the path then it will be searched in the specified
> 	order.  If <literal>pg_catalog</> is not in the path then it will
> 	be searched <emphasis>before</> searching any of the path items.
> 	It should also be noted that the temporary-table schema,
> 	<literal>pg_temp_<replaceable>nnn</></>, is implicitly searched before any of
> 	these.
1574,1582c1836,1839
<         However, this operation does slow down
<         <productname>PostgreSQL</> because at transaction commit it has
<         wait for the operating system to flush the write-ahead log.
<         Without <function>fsync</>, the operating system is allowed to
<         do its best in buffering, sorting, and delaying writes, which
<         can considerably increase performance. However, if the system
<         crashes, the results of the last few committed transactions may
<         be lost in part or whole. In the worst case, unrecoverable data
<         corruption may occur.
---
>         When objects are created without specifying a particular target
> 	schema, they will be placed in the first schema listed
> 	in the search path.  An error is reported if the search path is
> 	empty.
1586,1594c1843,1850
<         For the above reasons, everyone can decide for himself what to
<         do with the <varname>fsync</> option.  Some administrators
<         always leave it off, some turn it off only for bulk loads,
<         where there is a clear restart point if something goes wrong,
<         and some leave it on just to be on the safe side.  The default
<         is on so that you are on the safe side.  If you trust your
<         operating system, your hardware, and your utility company (or
<         better your battery backup), you can consider disabling
<         <varname>fsync</varname>.
---
>         The default value for this parameter is
>         <literal>'$user, public'</literal> (where the second part will be
> 	ignored if there is no schema named <literal>public</>).
> 	This supports shared use of a database (where no users
> 	have private schemas, and all share use of <literal>public</>),
> 	private per-user schemas, and combinations of these.  Other
> 	effects can be obtained by altering the default search path
> 	setting, either globally or per-user.
1598,1602c1854,1859
<         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.
---
>         The current effective value of the search path can be examined
> 	via the SQL function <function>current_schemas()</>.  This is not
> 	quite the same as examining the value of
> 	<varname>search_path</varname>, since <function>current_schemas()</>
> 	shows how the requests appearing in <varname>search_path</varname>
> 	were resolved.
1606,1607c1863
< 	This option can only be set at server start or in the
< 	<filename>postgresql.conf</filename> file.
---
>         For more information on schema handling, see <xref linkend="ddl-schemas">.
1611a1868
> 
1613c1870,1874
<       <term><varname>LC_MESSAGES</varname> (<type>string</type>)</term>
---
>       <indexterm>
>        <primary>transaction isolation level</primary>
>       </indexterm>
> 
>       <term><varname>DEFAULT_TRANSACTION_ISOLATION</varname> (<type>string</type>)</term>
1616,1620c1877,1880
<         Sets the language in which messages are displayed.  Acceptable
<         values are system-dependent; see <xref linkend="locale"> for
<         more information.  If this variable is set to the empty string
<         (which is the default) then the value is inherited from the
<         execution environment of the server in a system-dependent way.
---
>         Each SQL transaction has an isolation level, which can be either
>         <quote>read committed</quote> or <quote>serializable</quote>.
>         This parameter controls the default isolation level of each new
>         transaction. The default is <quote>read committed</quote>.
1624,1628c1884,1885
<         On some systems, this locale category does not exist.  Setting
<         this variable will still work, but there will be no effect.
<         Also, there is a chance that no translated messages for the
<         desired language exist.  In that case you will continue to see
<         the English messages.
---
>         Consult <xref linkend="mvcc"> and <xref linkend="sql-set-transaction"> for more
>         information.
1634,1646c1891,1893
<       <term><varname>LC_MONETARY</varname> (<type>string</type>)</term>
<       <listitem>
<        <para>
<         Sets the locale to use for formatting monetary amounts, for
<         example with the <function>to_char</function> family of
<         functions.  Acceptable values are system-dependent; see <xref
<         linkend="locale"> for more information.  If this variable is
<         set to the empty string (which is the default) then the value
<         is inherited from the execution environment of the server in a
<         system-dependent way.
<        </para>
<       </listitem>
<      </varlistentry>
---
>       <indexterm>
>        <primary>read-only transaction</primary>
>       </indexterm>
1648,1649c1895
<      <varlistentry>
<       <term><varname>LC_NUMERIC</varname> (<type>string</type>)</term>
---
>       <term><varname>DEFAULT_TRANSACTION_READ_ONLY</varname> (<type>boolean</type>)</term>
1652,1658c1898,1900
<         Sets the locale to use for formatting numbers, for example
<         with the <function>to_char()</function> family of
<         functions. Acceptable values are system-dependent; see <xref
<         linkend="locale"> for more information.  If this variable is
<         set to the empty string (which is the default) then the value
<         is inherited from the execution environment of the server in a
<         system-dependent way.
---
>         A read-only SQL transaction cannot alter non-temporary tables.
>         This parameter controls the default read-only status of each new
>         transaction. The default is false (read/write).
1660,1661d1901
<       </listitem>
<      </varlistentry>
1663,1665d1902
<      <varlistentry>
<       <term><varname>LC_TIME</varname> (<type>string</type>)</term>
<       <listitem>
1667,1673c1904
<         Sets the locale to use for formatting date and time values.
<         (Currently, this setting does nothing, but it may in the
<         future.)  Acceptable values are system-dependent; see <xref
<         linkend="locale"> for more information.  If this variable is
<         set to the empty string (which is the default) then the value
<         is inherited from the execution environment of the server in a
<         system-dependent way.
---
>         Consult <xref linkend="sql-set-transaction"> for more information.
1677c1908
< 
---
>      
1679c1910
<       <term><varname>MAX_CONNECTIONS</varname> (<type>integer</type>)</term>
---
>       <term><varname>STATEMENT_TIMEOUT</varname> (<type>integer</type>)</term>
1682,1685c1913,1914
<         Determines the maximum number of concurrent connections to the
<         database server. The default is 32 (unless altered while
<         building the server). This parameter can only be set at server
<         start.
---
>         Aborts any statement that takes over the specified number of
>         milliseconds.  A value of zero turns off the timer.
1688a1918,1924
>      
>      </variablelist>
>     </sect3>
>      <sect3 id="runtime-config-client-format">
>      <title>Locale and Formatting</title>
> 
>      <variablelist>
1691c1927,1928
<       <term><varname>MAX_EXPR_DEPTH</varname> (<type>integer</type>)</term>
---
>       <term><varname>DATESTYLE</varname> (<type>string</type>)</term>
>       <indexterm><primary>date style</></>
1694,1697c1931,1934
<         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.)
---
>         Sets the display format for date and time values, as well as
>         the rules for interpreting ambiguous date input values.  See
>         <xref linkend="datatype-datetime"> for more information.  The
>         default is <literal>ISO, US</>.
1703c1940,1941
<       <term><varname>MAX_FILES_PER_PROCESS</varname> (<type>integer</type>)</term>
---
>       <term><varname>TIMEZONE</varname> (<type>string</type>)</term>
>       <indexterm><primary>time zone</></>
1706,1719c1944,1947
<         Sets the maximum number of simultaneously open files allowed to each
<         server subprocess. The default is 1000. The limit actually used
<         by the code is the smaller of this setting and the result of
<         <literal>sysconf(_SC_OPEN_MAX)</literal>. Therefore, on systems
<         where <function>sysconf</> returns a reasonable limit, you don't
<         need to worry about this setting. But on some platforms
<         (notably, most BSD systems), <function>sysconf</> returns a
<         value that is much larger than the system can really support
<         when a large number of processes all try to open that many
<         files. If you find yourself seeing <quote>Too many open files</>
<         failures, try reducing this setting. This option can only be set
<         at server start or in the <filename>postgresql.conf</filename>
<         configuration file; if changed in the configuration file, it
<         only affects subsequently-started server subprocesses.
---
>         Sets the time zone for displaying and interpreting time
>         stamps.  The default is to use whatever the system environment
>         specifies as the time zone.  See <xref
>         linkend="datatype-datetime"> for more information.
1725c1953,1954
<       <term><varname>MAX_FSM_PAGES</varname> (<type>integer</type>)</term>
---
>       <term><varname>AUSTRALIAN_TIMEZONES</varname> (<type>boolean</type>)</term>
>       <indexterm><primary>Australian time zones</></>
1728,1732c1957,1961
<         Sets the maximum number of disk pages for which free space will
<         be tracked in the shared free-space map.  Six bytes of shared memory
< 	are consumed for each page slot.  This setting must be more than
< 	16 * <varname>max_fsm_relations</varname>.  The default is 20000.
<         This option can only be set at server start.
---
>         If set to true, <literal>ACST</literal>,
>         <literal>CST</literal>, <literal>EST</literal>, and
>         <literal>SAT</literal> are interpreted as Australian time
>         zones rather than as North/South American time zones and
>         Saturday. The default is false.
1738c1967,1975
<       <term><varname>MAX_FSM_RELATIONS</varname> (<type>integer</type>)</term>
---
>       <indexterm>
>        <primary>significant digits</primary>
>       </indexterm>
>       <indexterm>
>        <primary>display</primary>
>        <secondary>of float numbers</secondary>
>       </indexterm>
> 
>       <term><varname>EXTRA_FLOAT_DIGITS</varname> (<type>integer</type>)</term>
1741,1745c1978,1985
<         Sets the maximum number of relations (tables and indexes) for which
< 	free space will be tracked in the shared free-space map.  Roughly
< 	fifty bytes of shared memory are consumed for each slot.
< 	The default is 1000.
< 	This option can only be set at server start.
---
>         This parameter adjusts the number of digits displayed for
> 	floating-point values, including <type>float4</>, <type>float8</>,
> 	and geometric data types.  The parameter value is added to the
> 	standard number of digits (<literal>FLT_DIG</> or <literal>DBL_DIG</>
> 	as appropriate).  The value can be set as high as 2, to include
> 	partially-significant digits; this is especially useful for dumping
> 	float data that needs to be restored exactly.  Or it can be set
> 	negative to suppress unwanted digits.
1749a1990
> 
1751c1992
<       <term><varname>MAX_LOCKS_PER_TRANSACTION</varname> (<type>integer</type>)</term>
---
>       <term><varname>LC_MESSAGES</varname> (<type>string</type>)</term>
1754,1760c1995,1999
<         The shared lock table is sized on the assumption that at most
<         <varname>max_locks_per_transaction</> *
<         <varname>max_connections</varname> distinct objects will need to
<         be locked at any one time. The default, 64, has historically
<         proven sufficient, but you might need to raise this value if you
<         have clients that touch many different tables in a single
<         transaction. This option can only be set at server start.
---
>         Sets the language in which messages are displayed.  Acceptable
>         values are system-dependent; see <xref linkend="locale"> for
>         more information.  If this variable is set to the empty string
>         (which is the default) then the value is inherited from the
>         execution environment of the server in a system-dependent way.
1762,1763d2000
<       </listitem>
<      </varlistentry>
1765,1767d2001
<      <varlistentry>
<       <term><varname>PASSWORD_ENCRYPTION</varname> (<type>boolean</type>)</term>
<       <listitem>
1769,1772c2003,2007
<         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).
---
>         On some systems, this locale category does not exist.  Setting
>         this variable will still work, but there will be no effect.
>         Also, there is a chance that no translated messages for the
>         desired language exist.  In that case you will continue to see
>         the English messages.
1778,1779c2013
<       <term><varname>PORT</varname> (<type>integer</type>)</term>
<       <indexterm><primary>port</></>
---
>       <term><varname>LC_MONETARY</varname> (<type>string</type>)</term>
1782,1783c2016,2022
<         The TCP port the server listens on; 5432 by default. This
<         option can only be set at server start.
---
>         Sets the locale to use for formatting monetary amounts, for
>         example with the <function>to_char</function> family of
>         functions.  Acceptable values are system-dependent; see <xref
>         linkend="locale"> for more information.  If this variable is
>         set to the empty string (which is the default) then the value
>         is inherited from the execution environment of the server in a
>         system-dependent way.
1789,1790c2028
<       <term><varname>PRELOAD_LIBRARIES</varname> (<type>string</type>)</term>
<       <indexterm><primary>preload_libraries</></>
---
>       <term><varname>LC_NUMERIC</varname> (<type>string</type>)</term>
1793,1808c2031,2037
<         This variable specifies one or more shared libraries that are
<         to be preloaded at server start. An initialization function
<         can also be optionally specified by adding a colon followed by
<         the name of the initialization function after the library
<         name. For example
<         <literal>'$libdir/mylib:init_mylib'</literal> would cause
<         <literal>mylib</> to be preloaded and <literal>init_mylib</>
<         to be executed. If more than one library is to be loaded, they
<         must be delimited with a comma.
<        </para>
< 
<        <para>
<         If <literal>mylib</> is not found, the server will fail to
<         start.  However, if <literal>init_mylib</> is not found,
<         <literal>mylib</> will still be preloaded without executing
<         the initialization function.
---
>         Sets the locale to use for formatting numbers, for example
>         with the <function>to_char()</function> family of
>         functions. Acceptable values are system-dependent; see <xref
>         linkend="locale"> for more information.  If this variable is
>         set to the empty string (which is the default) then the value
>         is inherited from the execution environment of the server in a
>         system-dependent way.
1809a2039,2040
>       </listitem>
>      </varlistentry>
1810a2042,2044
>      <varlistentry>
>       <term><varname>LC_TIME</varname> (<type>string</type>)</term>
>       <listitem>
1812,1814c2046,2052
<         By preloading a shared library (and initializing it if
<         applicable), the library startup time is avoided when the
<         library is first used.
---
>         Sets the locale to use for formatting date and time values.
>         (Currently, this setting does nothing, but it may in the
>         future.)  Acceptable values are system-dependent; see <xref
>         linkend="locale"> for more information.  If this variable is
>         set to the empty string (which is the default) then the value
>         is inherited from the execution environment of the server in a
>         system-dependent way.
1820,1821c2058,2059
<       <term><varname>REGEX_FLAVOR</varname> (<type>string</type>)</term>
<       <indexterm><primary>regular expressions</></>
---
>       <term><varname>CLIENT_ENCODING</varname> (<type>string</type>)</term>
>       <indexterm><primary>character set encoding</></>
1824,1828c2062,2063
<         The regular expression <quote>flavor</> can be set to
< 	<literal>advanced</>, <literal>extended</>, or <literal>basic</>.
< 	The usual default is <literal>advanced</>.  The <literal>extended</>
< 	setting may be useful for exact backwards compatibility with
< 	pre-7.4 releases of <productname>PostgreSQL</>.
---
>         Sets the client-side encoding (character set).
> 	The default is to use the database encoding.
1832a2068,2074
>      </variablelist>
>     </sect3>
>      <sect3 id="runtime-config-client-other">
>      <title>Other Defaults</title>
> 
>      <variablelist>
> 
1834,1836c2076
<       <term><varname>SEARCH_PATH</varname> (<type>string</type>)</term>
<       <indexterm><primary>search_path</></>
<       <indexterm><primary>path</><secondary>for schemas</></>
---
>       <term><varname>PASSWORD_ENCRYPTION</varname> (<type>boolean</type>)</term>
1839,1845c2079,2082
<         This variable specifies the order in which schemas are searched
< 	when an object (table, data type, function, etc.) is referenced by a
< 	simple name with no schema component.  When there are objects of
< 	identical names in different schemas, the one found first
< 	in the search path is used.  An object that is not in any of the
< 	schemas in the search path can only be referenced by specifying
< 	its containing schema with a qualified (dotted) name.
---
>         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).
1846a2084,2085
>       </listitem>
>      </varlistentry>
1848,1854d2086
<        <para>
<         The value for <varname>search_path</varname> has to be a comma-separated
<         list of schema names.  If one of the list items is
<         the special value <literal>$user</literal>, then the schema
< 	having the name returned by <function>SESSION_USER</> is substituted, if there
< 	is such a schema.  (If not, <literal>$user</literal> is ignored.)
<        </para>
1855a2088,2092
>      <varlistentry>
>       <term><varname>DYNAMIC_LIBRARY_PATH</varname> (<type>string</type>)</term>
>       <indexterm><primary>dynamic_library_path</></>
>       <indexterm><primary>dynamic loading</></>
>       <listitem>
1857,1864c2094,2099
<         The system catalog schema, <literal>pg_catalog</>, is always
< 	searched, whether it is mentioned in the path or not.  If it is
< 	mentioned in the path then it will be searched in the specified
< 	order.  If <literal>pg_catalog</> is not in the path then it will
< 	be searched <emphasis>before</> searching any of the path items.
< 	It should also be noted that the temporary-table schema,
< 	<literal>pg_temp_<replaceable>nnn</></>, is implicitly searched before any of
< 	these.
---
>         If a dynamically loadable module needs to be opened and the
>         specified name does not have a directory component (i.e. the
>         name does not contain a slash), the system will search this
>         path for the specified file.  (The name that is used is the
>         name specified in the <command>CREATE FUNCTION</command> or
>         <command>LOAD</command> command.)
1868,1871c2103,2114
<         When objects are created without specifying a particular target
< 	schema, they will be placed in the first schema listed
< 	in the search path.  An error is reported if the search path is
< 	empty.
---
>         The value for <varname>DYNAMIC_LIBRARY_PATH</varname> has to be a colon-separated
>         list of absolute directory names. If a directory name starts
>         with the special value <literal>$libdir</literal>, the
>         compiled-in <productname>PostgreSQL</productname> package
>         library directory is substituted. This where the modules
>         provided by the <productname>PostgreSQL</productname>
>         distribution are installed. (Use <literal>pg_config
>         --pkglibdir</literal> to print the name of this directory.) For
>         example:
> <programlisting>
> dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir'
> </programlisting>
1876,1882c2119,2120
<         <literal>'$user, public'</literal> (where the second part will be
< 	ignored if there is no schema named <literal>public</>).
< 	This supports shared use of a database (where no users
< 	have private schemas, and all share use of <literal>public</>),
< 	private per-user schemas, and combinations of these.  Other
< 	effects can be obtained by altering the default search path
< 	setting, either globally or per-user.
---
>         <literal>'$libdir'</literal>. If the value is set to an empty
>         string, the automatic path search is turned off.
1886,1891c2124,2129
<         The current effective value of the search path can be examined
< 	via the SQL function <function>current_schemas()</>.  This is not
< 	quite the same as examining the value of
< 	<varname>search_path</varname>, since <function>current_schemas()</>
< 	shows how the requests appearing in <varname>search_path</varname>
< 	were resolved.
---
>         This parameter can be changed at run time by superusers, but a
>         setting done that way will only persist until the end of the
>         client connection, so this method should be reserved for
>         development purposes. The recommended way to set this parameter
>         is in the <filename>postgresql.conf</filename> configuration
>         file.
1892a2131,2133
>       </listitem>
>      </varlistentry>
> 
1893a2135,2151
>      </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>
>       <listitem>
1895c2153,2155
<         For more information on schema handling, see <xref linkend="ddl-schemas">.
---
>         For each query, write performance statistics of the respective
>         module to the server log. This is a crude profiling
>         instrument.
1901c2161
<       <term><varname>SHARED_BUFFERS</varname> (<type>integer</type>)</term>
---
>       <term><varname>DEFAULT_STATISTICS_TARGET</varname> (<type>integer</type>)</term>
1904,1911c2164,2168
<         Sets the number of shared memory buffers used by the database
<         server. The default is 64. Each buffer is typically 8192
<         bytes. This must be greater than 16, as well as at least twice
<         the value of <varname>MAX_CONNECTIONS</varname>; however, a
<         higher value can often improve performance.
< 	Values of a few thousand are recommended
<         for production installations. This option can only be set at
<         server start.
---
>         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.
1912a2170,2178
>       </listitem>
>      </varlistentry>
>      
>      
>      </variablelist>
>     </sect3>
>     <sect3 id="runtime-config-statistics-collector">
>      <title>Query and Index Statistics Collector</title>
>      <variablelist>
1913a2180,2182
>      <varlistentry>
>       <term><varname>STATS_START_COLLECTOR</varname> (<type>boolean</type>)</term>
>       <listitem>
1915,1919c2184,2188
<         Increasing this parameter may cause <productname>PostgreSQL</>
<         to request more <systemitem class="osname">System V</> shared
<         memory than your operating system's default configuration
<         allows. See <xref linkend="sysvipc"> for information on how to
<         adjust these parameters, if necessary.
---
>         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.
1925c2194
<       <term><varname>SILENT_MODE</varname> (<type>boolean</type>)</term>
---
>       <term><varname>STATS_COMMAND_STRING</varname> (<type>boolean</type>)</term>
1928,1934c2197,2205
<         Runs the server silently. If this option is set, the server
<         will automatically run in background and any controlling terminals
<         are disassociated.  Thus, no messages are written to standard
<         output or standard error (same effect as <command>postmaster</>'s <option>-S</option>
<         option). Unless some logging system such as
<         <application>syslog</> is enabled, using this option is
<         discouraged since it makes it impossible to see error messages.
---
>         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.
1940c2211,2212
<       <term><varname>SORT_MEM</varname> (<type>integer</type>)</term>
---
>       <term><varname>STATS_BLOCK_LEVEL</varname> (<type>boolean</type>)</term>
>       <term><varname>STATS_ROW_LEVEL</varname> (<type>boolean</type>)</term>
1943,1954c2215,2220
< 	Specifies the amount of memory to be used by internal sort operations and
< 	hash tables before switching to temporary disk files. The value is
< 	specified in kilobytes, and defaults to 1024 kilobytes (1 MB).
< 	Note that for a complex query, several sort or hash operations might be
< 	running in parallel; each one will be allowed to use as much memory
< 	as this value specifies before it starts to put data into temporary
<         files. Also, several running sessions could be doing
<         sort operations simultaneously.  So the total memory used could be many
<         times the value of <varname>SORT_MEM</varname>. Sort operations are used
< 	by <literal>ORDER BY</>, merge joins, and <command>CREATE INDEX</>.
< 	Hash tables are used in hash joins, hash-based aggregation, and
< 	hash-based processing of <literal>IN</> subqueries.
---
>         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.
1960,1961c2226
<       <term><varname>SQL_INHERITANCE</varname> (<type>boolean</type>)</term>
<       <indexterm><primary>inheritance</></>
---
>       <term><varname>STATS_RESET_ON_SERVER_START</varname> (<type>boolean</type>)</term>
1964,1970c2229,2232
<         This controls the inheritance semantics, in particular whether
<         subtables are included by various commands by default. They were
<         not included in versions prior to 7.1. If you need the old
<         behavior you can set this variable to off, but in the long run
<         you are encouraged to change your applications to use the
<         <literal>ONLY</literal> key word to exclude subtables. See
<         <xref linkend="sql"> for more information about inheritance.
---
>         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.
1974a2237,2245
>      </variablelist>
>     </sect3>
>    </sect2>
> 
>    <sect2 id="runtime-config-locks">
>     <title>Lock Management</title>
> 
>      <variablelist>
> 
1977c2248,2253
<        <primary>SSL</primary>
---
>        <primary>deadlock</primary>
>        <secondary>timeout</secondary>
>       </indexterm>
>       <indexterm>
>        <primary>timeout</primary>
>        <secondary>deadlock</secondary>
1980c2256
<       <term><varname>SSL</varname> (<type>boolean</type>)</term>
---
>       <term><varname>DEADLOCK_TIMEOUT</varname> (<type>integer</type>)</term>
1983,1985c2259,2287
<         Enables <acronym>SSL</> connections. Please read
<         <xref linkend="ssl-tcp"> before using this. The default
<         is off.
---
>         This is the amount of time, in milliseconds, to wait on a lock
>         before checking to see if there is a deadlock condition. The
>         check for deadlock is relatively slow, so the server doesn't run
>         it every time it waits for a lock. We (optimistically?) assume
>         that deadlocks are not common in production applications and
>         just wait on the lock for a while before starting the check for a
>         deadlock. Increasing this value reduces the amount of time
>         wasted in needless deadlock checks, but slows down reporting of
>         real deadlock errors. The default is 1000 (i.e., one second),
>         which is probably about the smallest value you would want in
>         practice. On a heavily loaded server you might want to raise it.
>         Ideally the setting should exceed your typical transaction time,
>         so as to improve the odds that a lock will be released before
>         the waiter decides to check for deadlock.
>        </para>
>       </listitem>
>      </varlistentry>
> 
>      <varlistentry>
>       <term><varname>MAX_LOCKS_PER_TRANSACTION</varname> (<type>integer</type>)</term>
>       <listitem>
>        <para>
>         The shared lock table is sized on the assumption that at most
>         <varname>max_locks_per_transaction</> *
>         <varname>max_connections</varname> distinct objects will need to
>         be locked at any one time. The default, 64, has historically
>         proven sufficient, but you might need to raise this value if you
>         have clients that touch many different tables in a single
>         transaction. This option can only be set at server start.
1989a2292,2301
>      </variablelist>
>    </sect2>
> 
>    <sect2 id="runtime-config-compatible">
>     <title>Version and Platform Compatibility</title>
> 
>     <sect3 id="runtime-config-compatible-version">
>      <title>Previous Postgres Versions</title>
>      <variablelist>
> 
1991c2303,2304
<       <term><varname>STATEMENT_TIMEOUT</varname> (<type>integer</type>)</term>
---
>       <term><varname>ADD_MISSING_FROM</varname> (<type>boolean</type>)</term>
>       <indexterm><primary>missing from</></>
1994,1995d2306
<         Aborts any statement that takes over the specified number of
<         milliseconds.  A value of zero turns off the timer.
2001,2002c2312,2313
<       <term><varname>SUPERUSER_RESERVED_CONNECTIONS</varname>
<       (<type>integer</type>)</term>
---
>       <term><varname>REGEX_FLAVOR</varname> (<type>string</type>)</term>
>       <indexterm><primary>regular expressions</></>
2005,2017c2316,2320
<         Determines the number of <quote>connection slots</quote> that
<         are reserved for connections by <productname>PostgreSQL</>
<         superusers.  At most <varname>max_connections</> connections can
< 	ever be active simultaneously.  Whenever the number of active
< 	concurrent connections is at least <varname>max_connections</> minus
<         <varname>superuser_reserved_connections</varname>, new connections
< 	will be accepted only for superusers.
<        </para>
< 
<        <para>
<         The default value is 2. The value must be less than the value of
<         <varname>max_connections</varname>. This parameter can only be
<         set at server start.
---
>         The regular expression <quote>flavor</> can be set to
> 	<literal>advanced</>, <literal>extended</>, or <literal>basic</>.
> 	The usual default is <literal>advanced</>.  The <literal>extended</>
> 	setting may be useful for exact backwards compatibility with
> 	pre-7.4 releases of <productname>PostgreSQL</>.
2023c2326,2327
<       <term><varname>TCPIP_SOCKET</varname> (<type>boolean</type>)</term>
---
>       <term><varname>SQL_INHERITANCE</varname> (<type>boolean</type>)</term>
>       <indexterm><primary>inheritance</></>
2026,2029c2330,2336
<         If this is true, then the server will accept TCP/IP connections.
<         Otherwise only local Unix domain socket connections are
<         accepted. It is off by default. This option can only be set at
<         server start.
---
>         This controls the inheritance semantics, in particular whether
>         subtables are included by various commands by default. They were
>         not included in versions prior to 7.1. If you need the old
>         behavior you can set this variable to off, but in the long run
>         you are encouraged to change your applications to use the
>         <literal>ONLY</literal> key word to exclude subtables. See
>         <xref linkend="sql"> for more information about inheritance.
2033a2341,2346
>           </variablelist>
>     </sect3>
>     <sect3 id="runtime-config-compatible-clients">
>      <title>Platform and Client Compatibility</title>
>      <variablelist>
> 
2035,2036c2348,2349
<       <term><varname>TIMEZONE</varname> (<type>string</type>)</term>
<       <indexterm><primary>time zone</></>
---
>       <term><varname>HAS_RENDEZVOUS</varname> (<type>boolean</type>)</term>
>       <indexterm><primary>rendezvous</></>
2039,2042d2351
<         Sets the time zone for displaying and interpreting time
<         stamps.  The default is to use whatever the system environment
<         specifies as the time zone.  See <xref
<         linkend="datatype-datetime"> for more information.
2090,2100c2399,2415
<      <varlistentry>
<       <term><varname>UNIX_SOCKET_DIRECTORY</varname> (<type>string</type>)</term>
<       <listitem>
<        <para>
< 	Specifies the directory of the Unix-domain socket on which the
< 	server is to listen for
< 	connections from client applications.  The default is normally
< 	<filename>/tmp</filename>, but can be changed at build time.
<        </para>
<       </listitem>
<      </varlistentry>
---
>      </variablelist>
>     </sect3>
>    </sect2>
> 
>       <sect2 id="runtime-config-developer">
>     <title>Source 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.
>     </para>
> 
>     <variablelist>
> 
2103c2418
<       <term><varname>UNIX_SOCKET_GROUP</varname> (<type>string</type>)</term>
---
>       <term><varname>DEBUG_ASSERTIONS</varname> (<type>boolean</type>)</term>
2106,2113c2421,2430
<         Sets the group owner of the Unix domain socket.  (The owning
<         user of the socket is always the user that starts the
<         server.)  In combination with the option
<         <varname>UNIX_SOCKET_PERMISSIONS</varname> this can be used as
<         an additional access control mechanism for this socket type.
<         By default this is the empty string, which uses the default
<         group for the current user.  This option can only be set at
<         server start.
---
>         Turns on various assertion checks. This is a debugging aid. If
>         you are experiencing strange problems or crashes you might want
>         to turn this on, as it might expose programming mistakes. To use
>         this option, the macro <literal>USE_ASSERT_CHECKING</literal>
>         must be defined when <productname>PostgreSQL</productname> is
>         built (accomplished by the <command>configure</command> option
>         <option>--enable-cassert</option>). Note that
>         <literal>DEBUG_ASSERTIONS</literal> defaults to on if
>         <productname>PostgreSQL</productname> has been built with
> 	assertions enabled.
2118,2119c2435,2436
<      <varlistentry>
<       <term><varname>UNIX_SOCKET_PERMISSIONS</varname> (<type>integer</type>)</term>
---
>     <varlistentry>
>       <term><varname>TRACE_NOTIFY</varname> (<type>boolean</type>)</term>
2122,2147c2439,2444
<         Sets the access permissions of the Unix domain socket.  Unix
<         domain sockets use the usual Unix file system permission set.
<         The option value is expected to be an numeric mode
<         specification in the form accepted by the
<         <function>chmod</function> and <function>umask</function>
<         system calls.  (To use the customary octal format the number
<         must start with a <literal>0</literal> (zero).)
<        </para>
< 
<        <para>
<         The default permissions are <literal>0777</literal>, meaning
<         anyone can connect. Reasonable alternatives are
<         <literal>0770</literal> (only user and group, see also under
<         <varname>UNIX_SOCKET_GROUP</varname>) and <literal>0700</literal>
<         (only user). (Note that actually for a Unix domain socket, only write
<         permission matters and there is no point in setting or revoking
<         read or execute permissions.)
<        </para>
< 
<        <para>
<         This access control mechanism is independent of the one
<         described in <xref linkend="client-authentication">.
<        </para>
< 
<        <para>
<         This option can only be set at server start.
---
>         Generates a great amount of debugging output for the
>         <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.
2153c2450,2455
<       <term><varname>VACUUM_MEM</varname> (<type>integer</type>)</term>
---
>       <term><varname>TRACE_LOCKS</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>
2156,2160c2458
< 	Specifies the maximum amount of memory to be used by
< 	<command>VACUUM</command> to keep track of to-be-reclaimed
< 	tuples. The value is specified in kilobytes, and defaults to
< 	8192 kilobytes. Larger settings may improve the speed of
< 	vacuuming large tables that have many deleted tuples.
---
>         Various other code tracing and debugging options.
2165,2166c2463,2464
<      <varlistentry>
<       <term><varname>VIRTUAL_HOST</varname> (<type>string</type>)</term>
---
>     <varlistentry>
>       <term><varname>WAL_DEBUG</varname> (<type>integer</type>)</term>
2169,2172c2467
< 	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</>).
---
>         If nonzero, turn on WAL-related debugging output to the server log.
2177c2472
<      <varlistentry>
---
>     <varlistentry>
2196,2309c2491,2493
< 
<     </variablelist>
<    </sect2>
< 
<    <sect2 id="runtime-config-wal">
<     <title>WAL</title>
< 
<    <para>
<     See also <xref linkend="wal-configuration"> for details on WAL
<     tuning.
< 
<     <variablelist>
<      <varlistentry>
<       <term><varname>CHECKPOINT_SEGMENTS</varname> (<type>integer</type>)</term>
<       <listitem>
<        <para>
<         Maximum distance between automatic WAL checkpoints, in log file
< 	segments (each segment is normally 16 megabytes).
< 	This option can only be set at server start or in the
< 	<filename>postgresql.conf</filename> file.
<        </para>
<       </listitem>
<      </varlistentry>
< 
<      <varlistentry>
<       <term><varname>CHECKPOINT_TIMEOUT</varname> (<type>integer</type>)</term>
<       <listitem>
<        <para>
<         Maximum time between automatic WAL checkpoints, in seconds.
< 	This option can only be set at server start or in the
< 	<filename>postgresql.conf</filename> file.
<        </para>
<       </listitem>
<      </varlistentry>
< 
<      <varlistentry>
<       <term><varname>CHECKPOINT_WARNING</varname> (<type>integer</type>)</term>
<       <listitem>
<        <para>
<         Send a message to the server logs if checkpoints caused by the
<         filling of checkpoint segment files happens more frequently than
<         this number of seconds.  Zero turns off the warning.
<        </para>
<       </listitem>
<      </varlistentry>
< 
<      <varlistentry>
<       <term><varname>COMMIT_DELAY</varname> (<type>integer</type>)</term>
<       <listitem>
<        <para>
<         Time delay between writing a commit record to the WAL buffer and
<         flushing the buffer out to disk, in microseconds. A nonzero
<         delay allows multiple transactions to be committed with only one
<         <function>fsync</function> system call, if system load is high
<         enough additional transactions may become ready to commit within
<         the given interval. But the delay is just wasted if no other
<         transactions become ready to commit. Therefore, the delay is
<         only performed if at least <varname>COMMIT_SIBLINGS</varname> other transactions
<         are active at the instant that a server process has written its commit
<         record.
<        </para>
<       </listitem>
<      </varlistentry>
< 
<      <varlistentry>
<       <term><varname>COMMIT_SIBLINGS</varname> (<type>integer</type>)</term>
<       <listitem>
<        <para>
<         Minimum number of concurrent open transactions to require before
<         performing the <varname>COMMIT_DELAY</> delay. A larger value
<         makes it more probable that at least one other transaction will
<         become ready to commit during the delay interval.
<        </para>
<       </listitem>
<      </varlistentry>
< 
<      <varlistentry>
<       <term><varname>WAL_BUFFERS</varname> (<type>integer</type>)</term>
<       <listitem>
<        <para>
<         Number of disk-page buffers in shared memory for WAL
<         logging. The default is 4. This option can only be set at
<         server start.
<        </para>
<       </listitem>
<      </varlistentry>
< 
<      <varlistentry>
<       <term><varname>WAL_DEBUG</varname> (<type>integer</type>)</term>
<       <listitem>
<        <para>
<         If nonzero, turn on WAL-related debugging output to the server log.
<        </para>
<       </listitem>
<      </varlistentry>
< 
<      <varlistentry>
<       <term><varname>WAL_SYNC_METHOD</varname> (<type>string</type>)</term>
<       <listitem>
<        <para>
<         Method used for forcing WAL updates out to disk.  Possible
< 	values are
< 	<literal>FSYNC</> (call <function>fsync()</> at each commit),
< 	<literal>FDATASYNC</> (call <function>fdatasync()</> at each commit),
< 	<literal>OPEN_SYNC</> (write WAL files with <function>open()</> option <symbol>O_SYNC</>), and
< 	<literal>OPEN_DATASYNC</> (write WAL files with <function>open()</> option <symbol>O_DSYNC</>).
< 	Not all of these choices are available on all platforms.
<         This option can only be set at server start or in the
< 	<filename>postgresql.conf</filename> file.
<        </para>
<       </listitem>
<      </varlistentry>
<     </variablelist>
<     </para>
---
>      
>      </variablelist>
>     </sect3>
2311,2312d2494
< 
< 
