Attached is the fully corrected version of the re-ording patch for
authorBruce Momjian
Wed, 25 Jun 2003 01:13:24 +0000 (01:13 +0000)
committerBruce Momjian
Wed, 25 Jun 2003 01:13:24 +0000 (01:13 +0000)
Runtime.sgml and dependant files.

Josh Berkus

doc/src/sgml/runtime.sgml

index 21fb68df97bc9c052f86459228d5337166b43d71..6192eea6450c8d80f3a8296129a7ccabef59b799 100644 (file)
@@ -1,5 +1,5 @@
 
 
 
@@ -582,656 +582,884 @@ SET ENABLE_SEQSCAN TO OFF;
      
     
     
+    
+   
+    Connections and Authentication
 
-   ">
-    Planner and Optimizer Tuning</span>
+    ">
+     Connection Settings</span>
 
-    
+     
+     
      
-      CPU_INDEX_TUPLE_COST (floating point)
+      TCPIP_SOCKET (boolean)
       
        
-        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.
        
       
      
-    
+  
      
-      CPU_OPERATOR_COST (floating point)
+      MAX_CONNECTIONS (integer)
       
        
-        Sets the planner's estimate of the cost of processing each
-   operator in a 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.
        
       
      
-    
+     
      
-      CPU_TUPLE_COST (floating point)
+      SUPERUSER_RESERVED_CONNECTIONS
+      (integer)
       
        
-        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 connection slots that
+        are reserved for connections by PostgreSQL
+        superusers.  At most max_connections connections can
+        ever be active simultaneously.  Whenever the number of active
+        concurrent connections is at least max_connections minus
+        superuser_reserved_connections, new connections
+        will be accepted only for superusers.
+       
+
+       
+        The default value is 2. The value must be less than the value of
+        max_connections. This parameter can only be
+        set at server start.
        
       
      
-    
+
      
-      DEFAULT_STATISTICS_TARGET (integer)
+      PORT (integer)
+      port
       
        
-        Sets the default statistics target for table columns that have not
-   had a column-specific target set via ALTER TABLE SET
-   STATISTICS.  Larger values increase the time needed to do
-   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.
        
       
      
-    
+
+
      
-      EFFECTIVE_CACHE_SIZE (floating point)
+      UNIX_SOCKET_DIRECTORY (string)
       
        
-        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 PostgreSQL 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
+        /tmp, but can be changed at build time.
        
       
      
 
      
-      ENABLE_HASHAGG (boolean)
+      UNIX_SOCKET_GROUP (string)
       
        
-        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
+        UNIX_SOCKET_PERMISSIONS 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.
        
       
      
 
      
-      ENABLE_HASHJOIN (boolean)
+      UNIX_SOCKET_PERMISSIONS (integer)
       
        
-        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
+        chmod and umask
+        system calls.  (To use the customary octal format the number
+        must start with a 0 (zero).)
        
-      
-     
 
-     
-      
-       index scan
-      
+       
+        The default permissions are 0777, meaning
+        anyone can connect. Reasonable alternatives are
+        0770 (only user and group, see also under
+        UNIX_SOCKET_GROUP) and 0700
+        (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.)
+       
 
-      ENABLE_INDEXSCAN (boolean)
-      
        
-        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 .
        
-      
-     
 
-     
-      ENABLE_MERGEJOIN (boolean)
-      
        
-        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.
        
       
      
-
+     
+     
+     
+     
+     Security and Authentication
+     
+     
      
-      ENABLE_NESTLOOP (boolean)
+      AUTHENTICATION_TIMEOUT (integer)
+      timeoutauthentication
       
        
-        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
+        postgresql.conf file.
        
       
      
-
+     
      
       
-       sequential scan
+       SSL
       
 
-      ENABLE_SEQSCAN (boolean)
+      SSL (boolean)
       
        
-        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 SSL connections. Please read
+         before using this. The default
+        is off.
        
       
      
 
      
-      ENABLE_SORT (boolean)
+      KRB_SERVER_KEYFILE (string)
       
        
-        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
+         for details.
        
       
      
 
      
-      ENABLE_TIDSCAN (boolean)
+      VIRTUAL_HOST (string)
       
        
-        Enables or disables the query planner's use of 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
+        localhost).
        
       
      
 
      
-      FROM_COLLAPSE_LIMIT (integer)
+      DB_USER_NAMESPACE (boolean)
       
        
-        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
-   GEQO_THRESHOLD.
+        This allows per-database user names.  It is off by default.
        
-      
-     
 
-     
-      
-       genetic query optimization
-      
-      
-       GEQO
-       genetic query optimization
-      
+       
+        If this is on, you should create users as username@dbname.
+        When username is passed by a connecting client,
+        @ 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
+        @ within the SQL environment, you will need to
+        quote the user name.
+       
 
-      GEQO (boolean)
-      
        
-        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
-        GEQO_ settings.
+        With this option enabled, you can still create ordinary global
+        users.  Simply append @ when specifying the user
+        name in the client.  The @ will be stripped off
+        before the user name is looked up by the server.
        
+
+       
+        
+         This feature is intended as a temporary measure until a
+         complete solution is found.  At that time, this option will
+         be removed.
+        
+       
       
      
 
+    
+    
+   
+
+   
+    Resource Usage (Except WAL)
+
+    
+     Memory
+
+     
      
-      GEQO_EFFORT (integer)
-      GEQO_GENERATIONS (integer)
-      GEQO_POOL_SIZE (integer)
-      GEQO_RANDOM_SEED (integer)
-      GEQO_SELECTION_BIAS (floating point)
+      SHARED_BUFFERS (integer)
       
        
-        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 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 Effort *
-        Log2(PoolSize) 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.
+        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 MAX_CONNECTIONS; 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.
+       
+
+       
+        Increasing this parameter may cause PostgreSQL
+        to request more System V shared
+        memory than your operating system's default configuration
+        allows. See  for information on how to
+        adjust these parameters, if necessary.
        
       
      
 
      
-      GEQO_THRESHOLD (integer)
+      SORT_MEM (integer)
       
        
-        Use genetic query optimization to plan queries with at least
-        this many FROM items involved. (Note that an outer
-        JOIN construct counts as only one 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.
+        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 SORT_MEM. Sort operations are used
+        by ORDER BY, merge joins, and CREATE INDEX.
+        Hash tables are used in hash joins, hash-based aggregation, and
+        hash-based processing of IN subqueries.
        
       
      
-
+     
      
-      JOIN_COLLAPSE_LIMIT (integer)
+      VACUUM_MEM (integer)
       
        
-   The planner will flatten explicit inner JOIN constructs
-   into lists of FROM items whenever a list of no more than
-   this many items would result.  Usually this is set the same as
-   FROM_COLLAPSE_LIMIT.  Setting it to 1 prevents any
-   flattening of inner JOINs, allowing explicit
-   JOIN syntax to be used to control the join order.
-   Intermediate values might be useful to trade off planning time
-   against quality of plan.
+        Specifies the maximum amount of memory to be used by
+        VACUUM 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.
        
       
      
 
+     
+     
+     
+     Free Space Map
+
+     
      
-      RANDOM_PAGE_COST (floating point)
+      MAX_FSM_PAGES (integer)
       
        
-        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 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 * max_fsm_relations.  The default is 20000.
+        This option can only be set at server start.
        
       
      
-    
 
-   
-    
-     Unfortunately, there is no well-defined method for determining
-     ideal values for the family of cost variables that
-     were just described. You are encouraged to experiment and share
-     your findings.
-    
-   
+     
+      MAX_FSM_RELATIONS (integer)
+      
+       
+        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.
+       
+      
+     
+     
+     
+     
+     
+     Disk Resource Usage
+     
+
+     
+      MAX_FILES_PER_PROCESS (integer)
+      
+       
+        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
+        sysconf(_SC_OPEN_MAX). Therefore, on systems
+        where sysconf returns a reasonable limit, you don't
+        need to worry about this setting. But on some platforms
+        (notably, most BSD systems), 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 Too many open files
+        failures, try reducing this setting. This option can only be set
+        at server start or in the postgresql.conf
+        configuration file; if changed in the configuration file, it
+        only affects subsequently-started server subprocesses.
+       
+      
+     
+     
+     
+      PRELOAD_LIBRARIES (string)
+      preload_libraries
+      
+       
+        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
+        '$libdir/mylib:init_mylib' would cause
+        mylib to be preloaded and init_mylib
+        to be executed. If more than one library is to be loaded, they
+        must be delimited with a comma.
+       
 
+       
+        If mylib is not found, the server will fail to
+        start.  However, if init_mylib is not found,
+        mylib will still be preloaded without executing
+        the initialization function.
+       
+
+       
+        By preloading a shared library (and initializing it if
+        applicable), the library startup time is avoided when the
+        library is first used.
+       
+      
+     
+
+     
+    
    
 
-   logging">
-    <span class="marked">Logging and Debu</span>gging
+   runtime-config-wal">
+    <span class="marked">Write Ahead Lo</span>gging
 
-    
+   
+    See also  for details on WAL
+    tuning.
+   
+
+    
+     Settings
+     
+     
      
-      CLIENT_MIN_MESSAGES (string)
+      
+       fsync
+      
+
+      FSYNC (boolean)
       
        
-        This controls which message levels are send to the client.
-        client.  Valid values are DEBUG5,
-        DEBUG4, DEBUG3, DEBUG2,
-        DEBUG1, LOG, NOTICE,
-        WARNING, and ERROR.  Each level
-        includes all the levels that follow it.  The later the level,
-        the fewer messages are sent.  The default is
-        NOTICE.  Note that LOG has a different
-        rank here than in LOG_MIN_MESSAGES.
+        If this option is on, the PostgreSQL server
+        will use the 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 not
+        related to this.)
        
 
        
-        Here is a list of the various message types:
-        <variablelist>
-         
-          DEBUG[1-5]
-          
-           
-            Provides information for use by developers.
-      
-          
-         >
+        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 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.
+       >
 
-         
-          INFO
-          
-           
-            Provides information implicitly requested by the user,
-            e.g., during VACUUM VERBOSE.
-      
-          
-         
+       
+        For the above reasons, everyone can decide for himself what to
+        do with the 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
+        fsync.
+       
 
-         
-          NOTICE
-          
-           
-            Provides information that may be helpful to users, e.g.,
-            truncation of long identifiers and the creation of indexes as part
-            of primary keys.
-      
-          
-         
+       
+        It should be noted that the performance penalty of having
+        fsync on is considerably less in
+        PostgreSQL version 7.1 and later. If you
+        previously suppressed fsync for performance
+        reasons, you may wish to reconsider your choice.
+       
 
-         
-          WARNING
-          
-           
-            Provides warnings to the user, e.g., COMMIT
-            outside a transaction block.
-      
-          
-         
+       
+        This option can only be set at server start or in the
+        postgresql.conf file.
+       
+      
+     
+     
+     
+      WAL_SYNC_METHOD (string)
+      
+       
+        Method used for forcing WAL updates out to disk.  Possible
+        values are
+        FSYNC (call fsync() at each commit),
+        FDATASYNC (call fdatasync() at each commit),
+        OPEN_SYNC (write WAL files with open() option O_SYNC), and
+        OPEN_DATASYNC (write WAL files with open() option O_DSYNC).
+        Not all of these choices are available on all platforms.
+        This option can only be set at server start or in the
+        postgresql.conf file.
+       
+      
+     
+     
+     
+      WAL_BUFFERS (integer)
+      
+       
+        Number of disk-page buffers in shared memory for WAL
+        logging. The default is 4. This option can only be set at
+        server start.
+       
+      
+     
 
-         
-          ERROR
-          
-           
-            Reports an error that caused the current transaction to abort.
-      
-          
-         
+     
+     
+     
+     Checkpoints
 
-         
-          LOG
-          
-           
-            Reports information of interest to administrators, e.g.,
-       checkpoint activity.
-      
-          
-         
+    
+     
+      CHECKPOINT_SEGMENTS (integer)
+      
+       
+        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
+        postgresql.conf file.
+       
+      
+     
 
-         
-          FATAL
-          
-           
-            Reports an error that caused the current session to abort.
-      
-          
-         
+     
+      CHECKPOINT_TIMEOUT (integer)
+      
+       
+        Maximum time between automatic WAL checkpoints, in seconds.
+        This option can only be set at server start or in the
+        postgresql.conf file.
+       
+      
+     
 
-         
-          PANIC
-          
-           
-            Reports an error that caused all sessions to abort.
-      
-          
-         
-        
+     
+      CHECKPOINT_WARNING (integer)
+      
+       
+        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.
+       
+      
+     
+           
+           
+     
+      COMMIT_DELAY (integer)
+      
+       
+        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
+        fsync 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 COMMIT_SIBLINGS other transactions
+        are active at the instant that a server process has written its commit
+        record.
        
       
      
 
      
-      DEBUG_ASSERTIONS (boolean)
+      COMMIT_SIBLINGS (integer)
       
        
-        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 USE_ASSERT_CHECKING
-        must be defined when PostgreSQL is
-        built (accomplished by the configure option
-        ). Note that
-        DEBUG_ASSERTIONS defaults to on if
-        PostgreSQL has been built with
-   assertions enabled.
+        Minimum number of concurrent open transactions to require before
+        performing the 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.
        
       
      
+     
+     
+    
+   
+
+   
+    Query Tuning
+
+    
+     Planner Method Enabling
+     
+
 
      
-      DEBUG_PRINT_PARSE (boolean)
-      DEBUG_PRINT_REWRITTEN (boolean)
-      DEBUG_PRINT_PLAN (boolean)
-      DEBUG_PRETTY_PRINT (boolean)
+      ENABLE_HASHAGG (boolean)
       
        
-        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.
-         indents these displays to
-        produce a more readable but much longer output format.
-    or 
-   must be DEBUG1 or lower to send output to the client
-        or server logs.
+        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.
        
       
      
 
      
-      EXPLAIN_PRETTY_PRINT (boolean)
+      ENABLE_HASHJOIN (boolean)
       
        
-        Determines whether EXPLAIN VERBOSE uses the indented
-   or non-indented format for displaying detailed query-tree dumps.
+        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.
        
       
      
 
      
-      LOG_HOSTNAME (boolean)
+      
+       index scan
+      
+
+      ENABLE_INDEXSCAN (boolean)
       
        
-        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 index-scan plan
+        types. The default is on. This is used to debugging the
+        query planner.
        
       
      
 
      
-      LOG_CONNECTIONS (boolean)
+      ENABLE_MERGEJOIN (boolean)
       
        
-        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
-        postgresql.conf configuration file.
+        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.
        
       
      
 
      
-      LOG_DURATION (boolean)
+      ENABLE_NESTLOOP (boolean)
       
        
-        Causes the duration of every completed statement to be logged.
-        To use this option, enable LOG_STATEMENT and
-        LOG_PID so you can link the statement to the
-        duration using the process ID.
+        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.
        
       
      
 
      
-      LOG_MIN_DURATION_STATEMENT (integer)
+      
+       sequential scan
+      
+
+      ENABLE_SEQSCAN (boolean)
       
        
-        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 0
-   (turning this feature off).  For example, if you set it
-   to 250 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 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.
        
       
      
 
      
-      LOG_MIN_ERROR_STATEMENT (string)
+      ENABLE_SORT (boolean)
       
        
-        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
-        PANIC (effectively turning this feature
-        off). Valid values are DEBUG5,
-        DEBUG4DEBUG3,
-        DEBUG2DEBUG1,
-        INFONOTICE,
-        WARNINGERROR,
-        FATAL, and PANIC.  For
-        example, if you set this to ERROR 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.
+        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.
        
+      
+     
 
+     
+      ENABLE_TIDSCAN (boolean)
+      
        
-        It is recommended you enable LOG_PID as well
-        so you can more easily match the error statement with the error
-        message.
+        Enables or disables the query planner's use of TID scan plan
+        types. The default is on. This is used for debugging the
+        query planner.
        
       
      
+     
+     
+     
+     
+     Planner Cost Constants
 
+   
+    
+     Unfortunately, there is no well-defined method for determining
+     ideal values for the family of cost variables that
+     below. You are encouraged to experiment and share
+     your findings.
+    
+   
+
+     
+     
      
-      LOG_MIN_MESSAGES (string)
+      EFFECTIVE_CACHE_SIZE (floating point)
       
        
-        This controls which message levels are written to the server
-        log.  Valid values are DEBUG5, DEBUG4,
-        DEBUG3, DEBUG2, DEBUG1,
-        INFO, NOTICE, WARNING,
-        ERROR, LOG, FATAL, and
-        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 NOTICE.  Note that
-        LOG has a different rank here than in
-        CLIENT_MIN_MESSAGES.  Also see that section for an
-        explanation of the various values.
+        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 PostgreSQL data
+        files). This is measured in disk pages, which are normally 8 kB
+        each.
        
+      
+     
 
+     
+      RANDOM_PAGE_COST (floating point)
+      
+       
+        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.
+       
       
      
+    
 
+    
      
-      LOG_PID (boolean)
+      CPU_INDEX_TUPLE_COST (floating point)
       
        
-        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 syslog, which always contain
-        the process ID.
+        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.
+       
+      
+     
+    
+     
+      CPU_OPERATOR_COST (floating point)
+      
+       
+        Sets the planner's estimate of the cost of processing each
+        operator in a WHERE clause. This is measured as a fraction of
+        the cost of a sequential page fetch.
        
       
      
 
      
-      LOG_STATEMENT (boolean)
+      CPU_TUPLE_COST (floating point)
       
        
-        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.
        
       
      
 
+     
+    
+     
+     Genetic Estimate Query Optimizer
+
+     
+
      
-      LOG_TIMESTAMP (boolean)
+      
+       genetic query optimization
+      
+      
+       GEQO
+       genetic query optimization
+      
+      GEQO (boolean)
       
        
-        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
+        GEQO_ settings.
        
       
      
 
      
-      LOG_STATEMENT_STATS (boolean)
-      LOG_PARSER_STATS (boolean)
-      LOG_PLANNER_STATS (boolean)
-      LOG_EXECUTOR_STATS (boolean)
+      GEQO_THRESHOLD (integer)
       
        
-        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 FROM items involved. (Note that an outer
+        JOIN construct counts as only one 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.
        
       
      
 
      
-      LOG_SOURCE_PORT (boolean)
+      GEQO_EFFORT (integer)
+      GEQO_GENERATIONS (integer)
+      GEQO_POOL_SIZE (integer)
+      GEQO_RANDOM_SEED (integer)
+      GEQO_SELECTION_BIAS (floating point)
       
        
-        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 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 Effort *
+        Log2(PoolSize) 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.
        
       
      
+     
+     
+    
+     
+     Other Query Modifiers
+
+     
 
      
-      STATS_COMMAND_STRING (boolean)
+      EXPLAIN_PRETTY_PRINT (boolean)
       
        
-        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
-        pg_stat_activity system view; refer
-        to  for more information.
+        Determines whether EXPLAIN VERBOSE uses the indented
+        or non-indented format for displaying detailed query-tree dumps.
        
       
      
-
+     
      
-      STATS_BLOCK_LEVEL (boolean)
-      STATS_ROW_LEVEL (boolean)
+      FROM_COLLAPSE_LIMIT (integer)
       
        
-        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
-        pg_stat and
-        pg_statio family of system views;
-        refer to  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
+        GEQO_THRESHOLD.
        
       
      
 
      
-      STATS_RESET_ON_SERVER_START (boolean)
+      JOIN_COLLAPSE_LIMIT (integer)
       
        
-        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 JOIN constructs
+        into lists of FROM items whenever a list of no more than
+        this many items would result.  Usually this is set the same as
+        FROM_COLLAPSE_LIMIT.  Setting it to 1 prevents any
+        flattening of inner JOINs, allowing explicit
+        JOIN syntax to be used to control the join order.
+        Intermediate values might be useful to trade off planning time
+        against quality of plan.
        
       
      
 
      
-      STATS_START_COLLECTOR (boolean)
+      MAX_EXPR_DEPTH (integer)
       
        
-        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.)
        
       
      
+     
+     
+    
+   
+
+   
+    Logging and Debugging
+
+    
+     Syslog
+     
 
      
       SYSLOG (integer)
@@ -1278,161 +1506,383 @@ SET ENABLE_SEQSCAN TO OFF;
         
        
       
+      
+      
+    
+     
+     When To Log
+
+       
+        Here is a list of the various message types:
+        
+         
+          DEBUG[1-5]
+          
+           
+            Provides information for use by developers.
+           
+          
+         
+
+         
+          INFO
+          
+           
+            Provides information implicitly requested by the user,
+            e.g., during VACUUM VERBOSE.
+           
+          
+         
+
+         
+          NOTICE
+          
+           
+            Provides information that may be helpful to users, e.g.,
+            truncation of long identifiers and the creation of indexes as part
+            of primary keys.
+           
+          
+         
+
+         
+          WARNING
+          
+           
+            Provides warnings to the user, e.g., COMMIT
+            outside a transaction block.
+           
+          
+         
+
+         
+          ERROR
+          
+           
+            Reports an error that caused the current transaction to abort.
+           
+          
+         
+
+         
+          LOG
+          
+           
+            Reports information of interest to administrators, e.g.,
+            checkpoint activity.
+           
+          
+         
+
+         
+          FATAL
+          
+           
+            Reports an error that caused the current session to abort.
+           
+          
+         
+
+         
+          PANIC
+          
+           
+            Reports an error that caused all sessions to abort.
+           
+          
+         
+        
+       
+
+     
+
+     
+      LOG_MIN_MESSAGES (string)
+      
+       
+        This controls which message levels are written to the server
+        log.  Valid values are DEBUG5, DEBUG4,
+        DEBUG3, DEBUG2, DEBUG1,
+        INFO, NOTICE, WARNING,
+        ERROR, LOG, FATAL, and
+        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 NOTICE.  Note that
+        LOG has a different rank here than in
+        CLIENT_MIN_MESSAGES.  Also see that section for an
+        explanation of the various values.
+       
+
+      
+     
+
+     
+      CLIENT_MIN_MESSAGES (string)
+      
+       
+        This controls which message levels are send to the client.
+        client.  Valid values are DEBUG5,
+        DEBUG4, DEBUG3, DEBUG2,
+        DEBUG1, LOG, NOTICE,
+        WARNING, and ERROR.  Each level
+        includes all the levels that follow it.  The later the level,
+        the fewer messages are sent.  The default is
+        NOTICE.  Note that LOG has a different
+        rank here than in LOG_MIN_MESSAGES.
+       
+      
+     
+     
+
+     
+      LOG_MIN_ERROR_STATEMENT (string)
+      
+       
+        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
+        PANIC (effectively turning this feature
+        off). Valid values are DEBUG5,
+        DEBUG4DEBUG3,
+        DEBUG2DEBUG1,
+        INFONOTICE,
+        WARNINGERROR,
+        FATAL, and PANIC.  For
+        example, if you set this to ERROR 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.
+       
+
+       
+        It is recommended you enable LOG_PID as well
+        so you can more easily match the error statement with the error
+        message.
+       
+      
+     
+     
+     
+      LOG_MIN_DURATION_STATEMENT (integer)
+       
+        
+         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 0
+         (turning this feature off).  For example, if you set it
+         to 250 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.
+        
+       
+      
 
      
-      TRACE_NOTIFY (boolean)
+      SILENT_MODE (boolean)
       
        
-        Generates a great amount of debugging output for the
-        LISTEN and NOTIFY
-        commands.
-    or 
-   must be DEBUG1 or lower to send output to the client
+        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 postmaster's 
+        option). Unless some logging system such as
+        syslog is enabled, using this option is
+        discouraged since it makes it impossible to see error messages.
+       
+      
+     
+
+     
+    
+     
+     What To Log
+     
+     
+     
+     
+      DEBUG_PRINT_PARSE (boolean)
+      DEBUG_PRINT_REWRITTEN (boolean)
+      DEBUG_PRINT_PLAN (boolean)
+      DEBUG_PRETTY_PRINT (boolean)
+      
+       
+        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.
+         indents these displays to
+        produce a more readable but much longer output format.
+         or 
+        must be DEBUG1 or lower to send output to the client
         or server logs.
        
       
      
-    
-   
-
-   
-    General Operation
-
-    
+
+     
+      LOG_CONNECTIONS (boolean)
+      
+       
+        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
+        postgresql.conf configuration file.
+       
+      
+     
+
+
+     
+      LOG_DURATION (boolean)
+      
+       
+        Causes the duration of every completed statement to be logged.
+        To use this option, enable LOG_STATEMENT and
+        LOG_PID so you can link the statement to the
+        duration using the process ID.
+       
+      
+     
+     
      
-      ADD_MISSING_FROM (boolean)
+      LOG_PID (boolean)
       
        
-        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
-        Adding missing FROM-clause entry for table "tablename"
-        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 
-        false.
+        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 syslog, which always contain
+        the process ID.
        
       
      
 
      
-      AUSTRALIAN_TIMEZONES (boolean)
-      Australian time zones
+      LOG_STATEMENT (boolean)
       
        
-        If set to true, ACST,
-        CSTEST, and
-        SAT are interpreted as Australian time
-        zones rather than as North/South American time zones and
-        Saturday. The default is false.
+        Causes each SQL statement to be logged.
        
       
      
 
      
-      AUTHENTICATION_TIMEOUT (integer)
-      timeoutauthentication
+      LOG_TIMESTAMP (boolean)
       
        
-        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
-        postgresql.conf file.
+        Prefixes each server log message with a time stamp. The default
+        is off.
        
       
      
 
      
-      CLIENT_ENCODING (string)
-      character set encoding
+      LOG_HOSTNAME (boolean)
       
        
-        Sets the client-side encoding (character set).
-   The default is to use the database encoding.
+        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.
        
       
      
 
      
-      DATESTYLE (string)
-      date style
+      LOG_SOURCE_PORT (boolean)
       
        
-        Sets the display format for date and time values, as well as
-        the rules for interpreting ambiguous date input values.  See
-         for more information.  The
-        default is ISO, US.
+        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.
        
       
      
+     
+     
+    
+   
+
+   
+    Client Connection Defaults
+
+    
+     Statement Behavior
+     
 
      
-      DB_USER_NAMESPACE (boolean)
+      SEARCH_PATH (string)
+      search_path
+      pathfor schemas
       
        
-        This allows per-database user names.  It is off by default.
+        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.
        
 
        
-        If this is on, you should create users as username@dbname.
-        When username is passed by a connecting client,
-        @ 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
-        @ within the SQL environment, you will need to
-        quote the user name.
+        The value for search_path has to be a comma-separated
+        list of schema names.  If one of the list items is
+        the special value $user, then the schema
+        having the name returned by SESSION_USER is substituted, if there
+        is such a schema.  (If not, $user is ignored.)
        
 
        
-        With this option enabled, you can still create ordinary global
-        users.  Simply append @ when specifying the user
-        name in the client.  The @ will be stripped off
-        before the user name is looked up by the server.
+        The system catalog schema, 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 pg_catalog is not in the path then it will
+        be searched before searching any of the path items.
+        It should also be noted that the temporary-table schema,
+        pg_temp_nnn, is implicitly searched before any of
+        these.
        
 
-       
-        
-         This feature is intended as a temporary measure until a
-         complete solution is found.  At that time, this option will
-         be removed.
-        
-       
-      
-     
+       
+        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.
+       
 
-     
-      
-       deadlock
-       timeout
-      
-      
-       timeout
-       deadlock
-      
+       
+        The default value for this parameter is
+        '$user, public' (where the second part will be
+        ignored if there is no schema named public).
+        This supports shared use of a database (where no users
+        have private schemas, and all share use of 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.
+       
 
-      DEADLOCK_TIMEOUT (integer)
-      
        
-        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.
+        The current effective value of the search path can be examined
+        via the SQL function current_schemas().  This is not
+        quite the same as examining the value of
+        search_path, since current_schemas()
+        shows how the requests appearing in search_path
+        were resolved.
+       
+
+       
+        For more information on schema handling, see .
        
       
      
 
+
      
       
        transaction isolation level
@@ -1472,143 +1922,89 @@ SET ENABLE_SEQSCAN TO OFF;
        
       
      
-
+     
      
-      DYNAMIC_LIBRARY_PATH (string)
-      dynamic_library_path
-      dynamic loading
+      STATEMENT_TIMEOUT (integer)
       
        
-        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 CREATE FUNCTION or
-        LOAD command.)
-       
-
-       
-        The value for DYNAMIC_LIBRARY_PATH has to be a colon-separated
-        list of absolute directory names. If a directory name starts
-        with the special value $libdir, the
-        compiled-in PostgreSQL package
-        library directory is substituted. This where the modules
-        provided by the PostgreSQL
-        distribution are installed. (Use pg_config
-        --pkglibdir to print the name of this directory.) For
-        example:
-
-dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir'
-
-       
-
-       
-        The default value for this parameter is
-        '$libdir'. If the value is set to an empty
-        string, the automatic path search is turned off.
-       
-
-       
-        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 postgresql.conf configuration
-        file.
+        Aborts any statement that takes over the specified number of
+        milliseconds.  A value of zero turns off the timer.
        
       
      
+     
+     
+    
+     
+     Locale and Formatting
 
-     
-      
-       significant digits
-      
-      
-       display
-       of float numbers
-      
+     
 
-      EXTRA_FLOAT_DIGITS (integer)
+     
+      DATESTYLE (string)
+      date style
       
        
-        This parameter adjusts the number of digits displayed for
-   floating-point values, including float4, float8,
-   and geometric data types.  The parameter value is added to the
-   standard number of digits (FLT_DIG or 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.
+        Sets the display format for date and time values, as well as
+        the rules for interpreting ambiguous date input values.  See
+         for more information.  The
+        default is ISO, US.
        
       
      
 
      
-      KRB_SERVER_KEYFILE (string)
+      TIMEZONE (string)
+      time zone
       
        
-        Sets the location of the Kerberos server key file. See
-         for details.
+        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 
+        linkend="datatype-datetime"> for more information.
        
       
      
 
      
-      
-       fsync
-      
-
-      FSYNC (boolean)
+      AUSTRALIAN_TIMEZONES (boolean)
+      Australian time zones
       
        
-        If this option is on, the PostgreSQL server
-        will use the 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 not
-        related to this.)
-       
-
-       
-        However, this operation does slow down
-        PostgreSQL because at transaction commit it has
-        wait for the operating system to flush the write-ahead log.
-        Without 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.
-       
-
-       
-        For the above reasons, everyone can decide for himself what to
-        do with the 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
-        fsync.
-       
-
-       
-        It should be noted that the performance penalty of having
-        fsync on is considerably less in
-        PostgreSQL version 7.1 and later. If you
-        previously suppressed fsync for performance
-        reasons, you may wish to reconsider your choice.
+        If set to true, ACST,
+        CSTEST, and
+        SAT are interpreted as Australian time
+        zones rather than as North/South American time zones and
+        Saturday. The default is false.
        
+      
+     
 
+     
+      
+       significant digits
+      
+      
+       display
+       of float numbers
+      
+
+      EXTRA_FLOAT_DIGITS (integer)
+      
        
-   This option can only be set at server start or in the
-   postgresql.conf file.
+        This parameter adjusts the number of digits displayed for
+        floating-point values, including float4, float8,
+        and geometric data types.  The parameter value is added to the
+        standard number of digits (FLT_DIG or 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.
        
       
      
 
+
      
       LC_MESSAGES (string)
       
@@ -1676,91 +2072,22 @@ dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir'
      
 
      
-      MAX_CONNECTIONS (integer)
-      
-       
-        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.
-       
-      
-     
-
-     
-      MAX_EXPR_DEPTH (integer)
-      
-       
-        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.)
-       
-      
-     
-
-     
-      MAX_FILES_PER_PROCESS (integer)
-      
-       
-        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
-        sysconf(_SC_OPEN_MAX). Therefore, on systems
-        where sysconf returns a reasonable limit, you don't
-        need to worry about this setting. But on some platforms
-        (notably, most BSD systems), 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 Too many open files
-        failures, try reducing this setting. This option can only be set
-        at server start or in the postgresql.conf
-        configuration file; if changed in the configuration file, it
-        only affects subsequently-started server subprocesses.
-       
-      
-     
-
-     
-      MAX_FSM_PAGES (integer)
+      CLIENT_ENCODING (string)
+      character set encoding
       
        
-        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 * max_fsm_relations.  The default is 20000.
-        This option can only be set at server start.
+        Sets the client-side encoding (character set).
+        The default is to use the database encoding.
        
       
      
 
-     
-      MAX_FSM_RELATIONS (integer)
-      
-       
-        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.
-       
-      
-     
+     
+    
+     
+     Other Defaults
 
-     
-      MAX_LOCKS_PER_TRANSACTION (integer)
-      
-       
-        The shared lock table is sized on the assumption that at most
-        max_locks_per_transaction *
-        max_connections 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.
-       
-      
-     
+     
 
      
       PASSWORD_ENCRYPTION (boolean)
@@ -1774,272 +2101,271 @@ dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir'
       
      
 
+
      
-      PORT (integer)
-      port
+      DYNAMIC_LIBRARY_PATH (string)
+      dynamic_library_path
+      dynamic loading
       
        
-        The TCP port the server listens on; 5432 by default. This
-        option can only be set at server start.
+        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 CREATE FUNCTION or
+        LOAD command.)
        
-      
-     
 
-     
-      PRELOAD_LIBRARIES (string)
-      preload_libraries
-      
        
-        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
-        '$libdir/mylib:init_mylib' would cause
-        mylib to be preloaded and init_mylib
-        to be executed. If more than one library is to be loaded, they
-        must be delimited with a comma.
+        The value for DYNAMIC_LIBRARY_PATH has to be a colon-separated
+        list of absolute directory names. If a directory name starts
+        with the special value $libdir, the
+        compiled-in PostgreSQL package
+        library directory is substituted. This where the modules
+        provided by the PostgreSQL
+        distribution are installed. (Use pg_config
+        --pkglibdir to print the name of this directory.) For
+        example:
+
+dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir'
+
        
 
        
-        If mylib is not found, the server will fail to
-        start.  However, if init_mylib is not found,
-        mylib will still be preloaded without executing
-        the initialization function.
+        The default value for this parameter is
+        '$libdir'. If the value is set to an empty
+        string, the automatic path search is turned off.
        
 
        
-        By preloading a shared library (and initializing it if
-        applicable), the library startup time is avoided when the
-        library is first used.
+        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 postgresql.conf configuration
+        file.
        
       
      
 
+
+     
+    
+   
+
+   
+    Statistics
+
+    
+     Statistics Monitoring
+     
+
      
-      REGEX_FLAVOR (string)
-      regular expressions
+      LOG_STATEMENT_STATS (boolean)
+      LOG_PARSER_STATS (boolean)
+      LOG_PLANNER_STATS (boolean)
+      LOG_EXECUTOR_STATS (boolean)
       
        
-        The regular expression flavor can be set to
-   advanced, extended, or basic.
-   The usual default is advanced.  The extended
-   setting may be useful for exact backwards compatibility with
-   pre-7.4 releases of PostgreSQL.
+        For each query, write performance statistics of the respective
+        module to the server log. This is a crude profiling
+        instrument.
        
       
      
 
      
-      SEARCH_PATH (string)
-      search_path
-      pathfor schemas
+      DEFAULT_STATISTICS_TARGET (integer)
       
        
-        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.
-       
-
-       
-        The value for search_path has to be a comma-separated
-        list of schema names.  If one of the list items is
-        the special value $user, then the schema
-   having the name returned by SESSION_USER is substituted, if there
-   is such a schema.  (If not, $user is ignored.)
-       
-
-       
-        The system catalog schema, 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 pg_catalog is not in the path then it will
-   be searched before searching any of the path items.
-   It should also be noted that the temporary-table schema,
-   pg_temp_nnn, is implicitly searched before any of
-   these.
-       
-
-       
-        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 default value for this parameter is
-        '$user, public' (where the second part will be
-   ignored if there is no schema named public).
-   This supports shared use of a database (where no users
-   have private schemas, and all share use of 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.
-       
-
-       
-        The current effective value of the search path can be examined
-   via the SQL function current_schemas().  This is not
-   quite the same as examining the value of
-   search_path, since current_schemas()
-   shows how the requests appearing in search_path
-   were resolved.
-       
-
-       
-        For more information on schema handling, see .
+        Sets the default statistics target for table columns that have not
+        had a column-specific target set via ALTER TABLE SET
+        STATISTICS.  Larger values increase the time needed to do
+        ANALYZE, but may improve the quality of the planner's
+        estimates. The default value is 10.
        
       
      
+     
+     
+     
+    
+    
+     Query and Index Statistics Collector
+     
 
      
-      SHARED_BUFFERS (integer)
+      STATS_START_COLLECTOR (boolean)
       
        
-        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 MAX_CONNECTIONS; 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.
-       
-
-       
-        Increasing this parameter may cause PostgreSQL
-        to request more System V shared
-        memory than your operating system's default configuration
-        allows. See  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.
        
       
      
 
      
-      SILENT_MODE (boolean)
+      STATS_COMMAND_STRING (boolean)
       
        
-        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 postmaster's 
-        option). Unless some logging system such as
-        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
+        pg_stat_activity system view; refer
+        to  for more information.
        
       
      
 
      
-      SORT_MEM (integer)
+      STATS_BLOCK_LEVEL (boolean)
+      STATS_ROW_LEVEL (boolean)
       
        
-   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 SORT_MEM. Sort operations are used
-   by ORDER BY, merge joins, and CREATE INDEX.
-   Hash tables are used in hash joins, hash-based aggregation, and
-   hash-based processing of 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
+        pg_stat and
+        pg_statio family of system views;
+        refer to  for more information.
        
       
      
 
      
-      SQL_INHERITANCE (boolean)
-      inheritance
+      STATS_RESET_ON_SERVER_START (boolean)
       
        
-        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
-        ONLY key word to exclude subtables. See
-         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.
        
       
      
 
+     
+    
+   
+
+   
+    Lock Management
+
+     
+
      
       
-       SSL
+       deadlock
+       timeout
+      
+      
+       timeout
+       deadlock
       
 
-      SSL (boolean)
+      DEADLOCK_TIMEOUT (integer)
       
        
-        Enables SSL connections. Please read
-         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.
        
       
      
 
      
-      STATEMENT_TIMEOUT (integer)
+      MAX_LOCKS_PER_TRANSACTION (integer)
       
        
-        Aborts any statement that takes over the specified number of
-        milliseconds.  A value of zero turns off the timer.
+        The shared lock table is sized on the assumption that at most
+        max_locks_per_transaction *
+        max_connections 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.
        
       
      
 
+     
+   
+
+   
+    Version and Platform Compatibility
+
+    
+     Previous Postgres Versions
+     
+
      
-      SUPERUSER_RESERVED_CONNECTIONS>
-      (integer)>
+      ADD_MISSING_FROM (boolean)>
+      missing from>
       
        
-        Determines the number of connection slots that
-        are reserved for connections by PostgreSQL
-        superusers.  At most max_connections connections can
-   ever be active simultaneously.  Whenever the number of active
-   concurrent connections is at least max_connections minus
-        superuser_reserved_connections, new connections
-   will be accepted only for superusers.
        
+      
+     
 
+     
+      REGEX_FLAVOR (string)
+      regular expressions
+      
        
-        The default value is 2. The value must be less than the value of
-        max_connections. This parameter can only be
-        set at server start.
+        The regular expression flavor can be set to
+        advanced, extended, or basic.
+        The usual default is advanced.  The extended
+        setting may be useful for exact backwards compatibility with
+        pre-7.4 releases of PostgreSQL.
        
       
      
 
      
-      TCPIP_SOCKET (boolean)
+      SQL_INHERITANCE (boolean)
+      inheritance
       
        
-        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
+        ONLY key word to exclude subtables. See
+         for more information about inheritance.
        
       
      
 
+          
+    
+    
+     Platform and Client Compatibility
+     
+
      
-      TIMEZONE (string)
-      time zone
+      HAS_RENDEZVOUS (boolean)
+      rendezvous
       
        
-        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 
-        linkend="datatype-datetime"> for more information.
        
       
      
@@ -2087,195 +2413,64 @@ dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir'
       
      
 
-     
-      UNIX_SOCKET_DIRECTORY (string)
-      
-       
-   Specifies the directory of the Unix-domain socket on which the
-   server is to listen for
-   connections from client applications.  The default is normally
-   /tmp, but can be changed at build time.
-       
-      
-     
-
-     
-      UNIX_SOCKET_GROUP (string)
-      
-       
-        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
-        UNIX_SOCKET_PERMISSIONS 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.
-       
-      
-     
-
-     
-      UNIX_SOCKET_PERMISSIONS (integer)
-      
-       
-        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
-        chmod and umask
-        system calls.  (To use the customary octal format the number
-        must start with a 0 (zero).)
-       
-
-       
-        The default permissions are 0777, meaning
-        anyone can connect. Reasonable alternatives are
-        0770 (only user and group, see also under
-        UNIX_SOCKET_GROUP) and 0700
-        (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.)
-       
-
-       
-        This access control mechanism is independent of the one
-        described in .
-       
-
-       
-        This option can only be set at server start.
-       
-      
-     
-
-     
-      VACUUM_MEM (integer)
-      
-       
-   Specifies the maximum amount of memory to be used by
-   VACUUM 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.
-       
-      
-     
-
-     
-      VIRTUAL_HOST (string)
-      
-       
-   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
-   localhost).
-       
-      
-     
-
-     
-      ZERO_DAMAGED_PAGES (boolean)
-      
-       
-        Detection of a damaged page header normally causes
-        PostgreSQL to report an error, aborting the current
-   transaction.  Setting zero_damaged_pages to true causes
-   the system to instead report a warning, zero out the damaged page,
-   and continue processing.  This behavior will destroy data,
-   namely all the rows on the damaged page.  But it allows you to get
-   past the error and retrieve rows from any undamaged pages that may
-   be present in the table.  So it is useful for recovering data if
-   corruption has occurred due to hardware or software error.  You should
-   generally not set this true until you have given up hope of recovering
-   data from the damaged page(s) of a table.  The
-   default setting is off, and it can only be changed by a superuser.
-       
-      
-     
-
-    
+     
+    
    
 
-   wal">
-    <span class="marked">WAL</span>
+   developer">
+    <span class="marked">Source Developer Options</span>
 
-   
-    See also  for details on WAL
-    tuning.
+    
+    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.
+    
 
     
      
-      CHECKPOINT_SEGMENTS (integer)
-      
-       
-        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
-   postgresql.conf file.
-       
-      
-     
-
-     
-      CHECKPOINT_TIMEOUT (integer)
-      
-       
-        Maximum time between automatic WAL checkpoints, in seconds.
-   This option can only be set at server start or in the
-   postgresql.conf file.
-       
-      
-     
-
-     
-      CHECKPOINT_WARNING (integer)
-      
-       
-        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.
-       
-      
-     
-
-     
-      COMMIT_DELAY (integer)
+      DEBUG_ASSERTIONS (boolean)
       
        
-        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
-        fsync 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 COMMIT_SIBLINGS other transactions
-        are active at the instant that a server process has written its commit
-        record.
+        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 USE_ASSERT_CHECKING
+        must be defined when PostgreSQL is
+        built (accomplished by the configure option
+        ). Note that
+        DEBUG_ASSERTIONS defaults to on if
+        PostgreSQL has been built with
+        assertions enabled.
        
       
      
 
      
-      COMMIT_SIBLINGS (integer)
+      TRACE_NOTIFY (boolean)
       
        
-        Minimum number of concurrent open transactions to require before
-        performing the 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.
+        Generates a great amount of debugging output for the
+        LISTEN and NOTIFY
+        commands.
+         or 
+        must be DEBUG1 or lower to send output to the client
+        or server logs.
        
       
      
 
      
-      WAL_BUFFERS (integer)
+      TRACE_LOCKS (boolean)
+      TRACE_USERLOCKS (boolean)
+      TRACE_LOCK_OIDMIN (boolean)
+      TRACE_LOCK_TABLE (boolean)
+      DEBUG_DEADLOCKS (boolean)
+      SHOW_BTREE_BUILD_STATS (boolean)
       
        
-        Number of disk-page buffers in shared memory for WAL
-        logging. The default is 4. This option can only be set at
-        server start.
+        Various other code tracing and debugging options.
        
       
      
@@ -2289,27 +2484,27 @@ dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir'
       
      
 
-     
-      WAL_SYNC_METHOD (string)
+    
+      ZERO_DAMAGED_PAGES (boolean)
       
        
-        Method used for forcing WAL updates out to disk.  Possible
-   values are
-   FSYNC (call fsync() at each commit),
-   FDATASYNC (call fdatasync() at each commit),
-   OPEN_SYNC (write WAL files with open() option O_SYNC), and
-   OPEN_DATASYNC (write WAL files with open() option O_DSYNC).
-   Not all of these choices are available on all platforms.
-        This option can only be set at server start or in the
-   postgresql.conf file.
+        Detection of a damaged page header normally causes
+        PostgreSQL to report an error, aborting the current
+        transaction.  Setting zero_damaged_pages to true causes
+        the system to instead report a warning, zero out the damaged page,
+        and continue processing.  This behavior will destroy data,
+        namely all the rows on the damaged page.  But it allows you to get
+        past the error and retrieve rows from any undamaged pages that may
+        be present in the table.  So it is useful for recovering data if
+        corruption has occurred due to hardware or software error.  You should
+        generally not set this true until you have given up hope of recovering
+        data from the damaged page(s) of a table.  The
+        default setting is off, and it can only be changed by a superuser.
        
       
      
-    
-    
-   
-
-
+   
+  
   
    Short Options
 
@@ -2410,7 +2605,7 @@ $ postmaster -o '-S 1024 -s'
         
         log_parser_stats=on,
         log_planner_stats=on, 
-   log_executor_stats=on
+        log_executor_stats=on