diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml
index acc1ec99c370661863bf11eb103ca4fcc1ee559a..293ee3558270913adf12ae327694c7f49b362dc5 100644
--- a/doc/src/sgml/config.sgml
+++ b/doc/src/sgml/config.sgml
@@ -1,5 +1,5 @@
 <!--
-$PostgreSQL: pgsql/doc/src/sgml/config.sgml,v 1.41 2005/12/27 23:54:01 adunstan Exp $
+$PostgreSQL: pgsql/doc/src/sgml/config.sgml,v 1.42 2006/01/05 10:07:44 petere Exp $
 -->
 <chapter Id="runtime-config">
   <title>Server Configuration</title>
@@ -2407,8 +2407,7 @@ SELECT * FROM parent WHERE key = 2400;
        <para>
         Runs the server silently. If this option is set, the server
         will automatically run in background and any controlling
-        terminals are disassociated (same effect as
-        <command>postmaster</>'s <option>-S</option> option).
+        terminals are disassociated.
         The server's standard output and standard error are redirected
         to <literal>/dev/null</>, so any messages sent to them will be lost.
         Unless <application>syslog</> logging is selected or
@@ -4054,6 +4053,19 @@ plruby.use_strict = true        # generates error: unknown class name
     </para>
 
     <variablelist>
+     <varlistentry id="guc-allow-system-table-mods" xreflabel="allow_system_table_mods">
+      <term><varname>allow_system_table_mods</varname> (<type>boolean</type>)</term>
+      <indexterm>
+        <primary><varname>allow_system_table_mods</varname> configuration parameter</primary>
+      </indexterm>
+      <listitem>
+       <para>
+        Allows the modification of the structure of system tables.
+        This is used by <command>initdb</command>.
+       </para>
+      </listitem>
+     </varlistentry>
+
      <varlistentry id="guc-debug-assertions" xreflabel="debug_assertions">
       <term><varname>debug_assertions</varname> (<type>boolean</type>)</term>
       <indexterm>
@@ -4075,6 +4087,35 @@ plruby.use_strict = true        # generates error: unknown class name
       </listitem>
      </varlistentry>
 
+     <varlistentry id="guc-ignore-system-indexes" xreflabel="ignore_system_indexes">
+      <term><varname>ignore_system_indexes</varname> (<type>boolean</type>)</term>
+      <indexterm>
+        <primary><varname>ignore_system_indexes</varname> configuration parameter</primary>
+      </indexterm>
+      <listitem>
+       <para>
+        Ignore system indexes when reading system tables (but still
+        update the indexes when modifying the tables).  This is useful
+        when recovering from damaged system indexes.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry id="guc-post-auth-delay" xreflabel="post_auth_delay">
+      <term><varname>post_auth_delay</varname> (<type>integer</type>)</term>
+      <indexterm>
+       <primary><varname>post_auth_delay</> configuration parameter</primary>
+      </indexterm>
+      <listitem>
+       <para>
+        If nonzero, a delay of this many seconds occurs when a new
+        server process is started, after it conducts the
+        authentication procedure.  This is intended to give an
+        opportunity to attach to the server process with a debugger.
+       </para>
+      </listitem>
+     </varlistentry>
+
      <varlistentry id="guc-pre-auth-delay" xreflabel="pre_auth_delay">
       <term><varname>pre_auth_delay</varname> (<type>integer</type>)</term>
       <indexterm>
@@ -4082,11 +4123,11 @@ plruby.use_strict = true        # generates error: unknown class name
       </indexterm>
       <listitem>
        <para>
-        If nonzero, a delay of this many seconds occurs just after a new
-        server process is forked, before it conducts the authentication
-        process.  This is intended to give an opportunity to attach to the
-        server process with a debugger to trace down misbehavior in
-        authentication.
+        If nonzero, a delay of this many seconds occurs just after a
+        new server process is forked, before it conducts the
+        authentication procedure.  This is intended to give an
+        opportunity to attach to the server process with a debugger to
+        trace down misbehavior in authentication.
        </para>
       </listitem>
      </varlistentry>
@@ -4182,9 +4223,12 @@ plruby.use_strict = true        # generates error: unknown class name
    <title>Short Options</title>
 
    <para>
-    For convenience there are also single letter command-line option switches
-    available for some parameters. They are described in <xref
-    linkend="runtime-config-short-table">.
+    For convenience there are also single letter command-line option
+    switches available for some parameters.  They are described in
+    <xref linkend="runtime-config-short-table">.  Some of these
+    options exist for historical reasons, and their presence as a
+    single-letter option does not necessarily indicate an endorsement
+    to use the option heavily.
    </para>
 
     <table id="runtime-config-short-table">
@@ -4198,6 +4242,10 @@ plruby.use_strict = true        # generates error: unknown class name
       </thead>
 
       <tbody>
+       <row>
+        <entry><option>-A <replaceable>x</replaceable></option></entry>
+        <entry><literal>debug_assertions = <replaceable>x</replaceable></></entry>
+       </row>
        <row>
         <entry><option>-B <replaceable>x</replaceable></option></entry>
         <entry><literal>shared_buffers = <replaceable>x</replaceable></></entry>
@@ -4206,6 +4254,26 @@ plruby.use_strict = true        # generates error: unknown class name
         <entry><option>-d <replaceable>x</replaceable></option></entry>
         <entry><literal>log_min_messages = DEBUG<replaceable>x</replaceable></></entry>
        </row>
+       <row>
+        <entry><option>-e</option></entry>
+        <entry><literal>datestyle = euro</></entry>
+       </row>
+       <row>
+        <entry>
+          <option>-fb</option>, <option>-fh</option>, <option>-fi</option>,
+          <option>-fm</option>, <option>-fn</option>,
+          <option>-fs</option>, <option>-ft</option>
+         </entry>
+         <entry>
+          <literal>enable_bitmapscan = off</>,
+          <literal>enable_hashjoin = off</>,
+          <literal>enable_indexscan = off</>,
+          <literal>enable_mergejoin = off</>,
+          <literal>enable_nestloop = off</>,
+          <literal>enable_seqscan = off</>,
+          <literal>enable_tidscan = off</>
+         </entry>
+       </row>
        <row>
         <entry><option>-F</option></entry>
         <entry><literal>fsync = off</></entry>
@@ -4230,57 +4298,36 @@ plruby.use_strict = true        # generates error: unknown class name
         <entry><option>-N <replaceable>x</replaceable></option></entry>
         <entry><literal>max_connections = <replaceable>x</replaceable></></entry>
        </row>
+       <row>
+        <entry><option>-O</option></entry>
+        <entry><literal>allow_system_table_mods = on</></entry>
+       </row>
        <row>
         <entry><option>-p <replaceable>x</replaceable></option></entry>
         <entry><literal>port = <replaceable>x</replaceable></></entry>
        </row>
-
        <row>
-        <entry>
-          <option>-fb</option>, <option>-fh</option>, <option>-fi</option>,
-          <option>-fm</option>, <option>-fn</option>,
-          <option>-fs</option>, <option>-ft</option><footnote
-          id="fn.runtime-config-short">
-           <para>
-            For historical reasons, these options must be passed to
-            the individual server process via the <option>-o</option>
-            <command>postmaster</command> option, for example,
-<screen>
-$ <userinput>postmaster -o '-S 1024 -s'</userinput>
-</screen>
-            or via <envar>PGOPTIONS</envar> from the client side, as
-            explained above.
-           </para>
-          </footnote>
-         </entry>
-         <entry>
-          <literal>enable_bitmapscan = off</>,
-          <literal>enable_hashjoin = off</>,
-          <literal>enable_indexscan = off</>,
-          <literal>enable_mergejoin = off</>,
-          <literal>enable_nestloop = off</>,
-          <literal>enable_seqscan = off</>,
-          <literal>enable_tidscan = off</>
-         </entry>
+        <entry><option>-P</option></entry>
+        <entry><literal>ignore_system_indexes = on</></entry>
        </row>
-
        <row>
-        <entry><option>-s</option><footnoteref linkend="fn.runtime-config-short"></entry>
+        <entry><option>-s</option></entry>
         <entry><literal>log_statement_stats = on</></entry>
        </row>
-
        <row>
-        <entry><option>-S <replaceable>x</replaceable></option><footnoteref linkend="fn.runtime-config-short">
-        </entry>
+        <entry><option>-S <replaceable>x</replaceable></option></entry>
         <entry><literal>work_mem = <replaceable>x</replaceable></></entry>
        </row>
-
        <row>
-        <entry><option>-tpa</option>, <option>-tpl</option>, <option>-te</option><footnoteref linkend="fn.runtime-config-short"></entry>
+        <entry><option>-tpa</option>, <option>-tpl</option>, <option>-te</option></entry>
         <entry><literal>log_parser_stats = on</>,
         <literal>log_planner_stats = on</>, 
         <literal>log_executor_stats = on</></entry>
        </row>
+       <row>
+        <entry><option>-W <replaceable>x</replaceable></option></entry>
+        <entry><literal>post_auth_delay = <replaceable>x</replaceable></></entry>
+       </row>
       </tbody>
      </tgroup>
     </table>
diff --git a/doc/src/sgml/ref/postgres-ref.sgml b/doc/src/sgml/ref/postgres-ref.sgml
index 4baecaf2edac652b4a4ee5f6a9808c7607d6f3f7..1cf8521bebb1236cf17790e89bdca8b351dc2e56 100644
--- a/doc/src/sgml/ref/postgres-ref.sgml
+++ b/doc/src/sgml/ref/postgres-ref.sgml
@@ -1,5 +1,5 @@
 <!--
-$PostgreSQL: pgsql/doc/src/sgml/ref/postgres-ref.sgml,v 1.45 2004/11/15 06:32:15 neilc Exp $
+$PostgreSQL: pgsql/doc/src/sgml/ref/postgres-ref.sgml,v 1.46 2006/01/05 10:07:44 petere Exp $
 PostgreSQL documentation
 -->
 
@@ -21,53 +21,9 @@ PostgreSQL documentation
 
  <refsynopsisdiv>
   <cmdsynopsis>
-   <!-- standalone call -->
    <command>postgres</command>
-   <arg>-A <group choice="plain"><arg>0</arg><arg>1</arg></group></arg>
-   <arg>-B <replaceable>nbuffers</replaceable></arg>
-   <arg>-c <replaceable>name</replaceable>=<replaceable>value</replaceable></arg>
-   <arg>-d <replaceable>debug-level</replaceable></arg>
-   <arg>--describe-config</arg>
-   <arg>-D <replaceable>datadir</replaceable></arg>
-   <arg>-e</arg>
-   <arg>-E</arg>
-   <arg>-f<group choice="plain"><arg>s</arg><arg>i</arg><arg>t</arg><arg>n</arg><arg>m</arg><arg>h</arg></group></arg>
-   <arg>-F</arg>
-   <arg>-N</arg>
-   <arg>-o <replaceable>filename</replaceable></arg>
-   <arg>-O</arg>
-   <arg>-P</arg>
-   <group>
-    <arg>-s</arg>
-    <arg>-t<group choice="plain"><arg>pa</arg><arg>pl</arg><arg>ex</arg></group></arg>
-   </group>
-   <arg>-S <replaceable>work-mem</replaceable></arg>
-   <arg>-W <replaceable>seconds</replaceable></arg>
-   <arg>--<replaceable>name</replaceable>=<replaceable>value</replaceable></arg>
+   <arg rep="repeat"><replaceable>option</></arg>
    <arg choice="plain"><replaceable>database</replaceable></arg>
-   <sbr>
-   <!-- postmaster fork -->
-   <command>postgres</command>
-   <arg>-A <group choice="plain"><arg>0</arg><arg>1</arg></group></arg>
-   <arg>-B <replaceable>nbuffers</replaceable></arg>
-   <arg>-c <replaceable>name</replaceable>=<replaceable>value</replaceable></arg>
-   <arg>-d <replaceable>debug-level</replaceable></arg>
-   <arg>-D <replaceable>datadir</replaceable></arg>
-   <arg>-e</arg>
-   <arg>-f<group choice="plain"><arg>s</arg><arg>i</arg><arg>t</arg><arg>n</arg><arg>m</arg><arg>h</arg></group></arg>
-   <arg>-F</arg>
-   <arg>-o <replaceable>filename</replaceable></arg>
-   <arg>-O</arg>
-   <arg>-p <replaceable>database</replaceable></arg>
-   <arg>-P</arg>
-   <group>
-    <arg>-s</arg>
-    <arg>-t<group choice="plain"><arg>pa</arg><arg>pl</arg><arg>ex</arg></group></arg>
-   </group>
-   <arg>-S <replaceable>work-mem</replaceable></arg>
-   <arg>-v <replaceable>protocol</replaceable></arg>
-   <arg>-W <replaceable>seconds</replaceable></arg>
-   <arg>--<replaceable>name</replaceable>=<replaceable>value</replaceable></arg>
   </cmdsynopsis>
  </refsynopsisdiv>
 
@@ -77,23 +33,21 @@ PostgreSQL documentation
   <para>
    The <command>postgres</command> executable is the actual
    <productname>PostgreSQL</productname> server process that processes
-   queries.  It is normally not called directly; instead a <xref
-   linkend="app-postmaster"> multiuser server is started.
-  </para>
-
-  <para>
-   The second form above is how
-   <command>postgres</command> is invoked by the <xref
-   linkend="app-postmaster"> (only
-   conceptually, since both <filename>postmaster</filename> and
-   <filename>postgres</filename> are in fact the same program); it
-   should not be invoked directly this way.  The first form invokes
-   the server directly in interactive single-user mode.  The primary use
-   for this mode is during bootstrapping by <xref linkend="app-initdb">.
-   Sometimes it is used for debugging or disaster recovery.
+   SQL statements.  It is normally not called directly; instead a
+   <xref linkend="app-postmaster"> multiuser server is started.
+   Conceptually, the <command>postmaster</command> starts a new
+   <command>postgres</command> process for each connection.
+   (<filename>postmaster</filename> and <filename>postgres</filename>
+   are in fact the same program, and on most platforms the connection
+   process is forked).
   </para>
 
   <para>
+   If the <command>postgres</command> command is called directly, it
+   invokes the server in interactive single-user mode.  The primary
+   use for this mode is during bootstrapping by <xref
+   linkend="app-initdb">.  Sometimes it is used for debugging or
+   disaster recovery.
    When invoked in interactive mode from the shell, the user can enter
    queries and the results will be printed to the screen, but in a
    form that is more useful for developers than end users.  But note
@@ -117,11 +71,9 @@ PostgreSQL documentation
 
    <para>
     When <command>postgres</command> is started by a <xref
-    linkend="app-postmaster"> then it
-    inherits all options set by the latter.  Additionally,
-    <command>postgres</command>-specific options can be passed
-    from the <command>postmaster</command> with the
-    <option>-o</option> switch.
+    linkend="app-postmaster"> then it inherits all options set by the
+    latter.  In single-user mode, <command>postgres</command> accepts
+    all the options that <command>postmaster</command> would accept.
    </para>
 
    <para>
@@ -141,74 +93,17 @@ PostgreSQL documentation
     <para>
      The options <option>-A</option>, <option>-B</option>,
      <option>-c</option>, <option>-d</option>, <option>-D</option>,
-     <option>-F</option>, and <option>--<replaceable>name</></option> have the same meanings
-     as the <xref linkend="app-postmaster"> except that
-     <literal>-d 0</> prevents the server log level of
-     the <command>postmaster</> from being propagated to <command>postgres</>.
+     <option>-e</option>, <option>-F</option>, <option>-s</option>,
+     <option>-S</option>, and <option>--<replaceable>name</></option>
+     have the same meanings as with the <xref linkend="app-postmaster">
+     except that <literal>-d 0</> prevents the server log level of the
+     <command>postmaster</> from being propagated to
+     <command>postgres</>.  Other <command>postmaster</command>
+     options are also accepted but will have no noticeable effect
+     because they only apply to the multiuser server mode, namely
+     <option>-h</option>, <option>-i</option>, <option>-k</option>,
+     <option>-l</option>, and <option>-n</option>.
     </para>
-
-    <variablelist>
-     <varlistentry>
-      <term><option>-e</option></term>
-      <listitem>
-       <para>
-        Sets the default date style to <quote>European</quote>, that is
-	<literal>DMY</> ordering of input date fields.  This also causes
-	the day to be printed before the month in certain date output formats.
-	See <xref linkend="datatype-datetime"> for more information.
-       </para>
-      </listitem>
-     </varlistentry>
-
-     <varlistentry>
-      <term><option>-o</option> <replaceable class="parameter">filename</replaceable></term>
-      <listitem>
-       <para>
-	Send all server log output to 
-	<replaceable class="parameter">filename</replaceable>.
-	If <command>postgres</command> is running under the
-	<command>postmaster</command>, this option is ignored,
-	and the <systemitem>stderr</> inherited from the
-	<command>postmaster</command> is used.
-       </para>
-      </listitem>
-     </varlistentry>
-
-     <varlistentry>
-      <term><option>-P</option></term>
-      <listitem>
-       <para>
-	Ignore system indexes when reading system tables (but still update
-	the indexes when modifying the tables).  This is useful when
-	recovering from damaged system indexes.
-       </para>
-      </listitem>
-     </varlistentry>
-
-     <varlistentry>
-      <term><option>-s</option></term>
-      <listitem>
-       <para>
-	Print time information and other statistics at the end of each command.
-	This is useful for benchmarking or for use in tuning the number of
-	buffers.
-       </para>
-      </listitem>
-     </varlistentry>
-
-     <varlistentry>
-      <term><option>-S</option> <replaceable class="parameter">work-mem</replaceable></term>
-      <listitem>
-       <para>
-	Specifies the amount of memory to be used by internal sorts and hashes
-	before resorting to temporary disk files.  See the description of the
-	<varname>work_mem</> configuration parameter in <xref
-	linkend="runtime-config-resource-memory">.
-       </para>
-      </listitem>
-     </varlistentry>
-
-    </variablelist>
    </refsect2>
 
    <refsect2>
@@ -235,83 +130,41 @@ PostgreSQL documentation
      </varlistentry>
 
      <varlistentry>
-      <term><option>-N</option></term>
+      <term><option>-j</option></term>
       <listitem>
        <para>
 	Disables use of newline as a statement delimiter.
        </para>
       </listitem>
      </varlistentry>
-    </variablelist>
-   </refsect2>
-
-   <refsect2>
-    <title>Semi-internal Options</title>
-
-    <para>
-     There are several other options that may be specified, used
-     mainly for debugging purposes.  These are listed here only for
-     the use by <productname>PostgreSQL</productname> system
-     developers.  <emphasis>Use of any of these options is highly
-     discouraged.</emphasis>  Furthermore, any of these options may
-     disappear or change in a future release without notice.
-   </para>
-    <variablelist>
-
-     <varlistentry>
-      <term><option>-f</option> <literal>{ s | i | m | n | h }</literal></term>
-      <listitem>
-       <para>
-	Forbids the use of particular scan and join methods:
-	<literal>s</literal> and <literal>i</literal>
-	disable sequential and index scans respectively, while
-	<literal>n</literal>, <literal>m</literal>, and <literal>h</literal>
-	disable nested-loop, merge and hash joins respectively.
-       </para>
-	
-	<note>
-	 <para>
-	  Neither sequential scans nor nested-loop joins can be disabled completely;
-	  the <literal>-fs</literal> and <literal>-fn</literal>
-	  options simply discourage the optimizer from using those
-	  plan types if it has any other alternative.
-	 </para>
-	</note>
-      </listitem>
-     </varlistentry>
 
      <varlistentry>
-      <term><option>-O</option></term>
+      <term><option>-r</option> <replaceable class="parameter">filename</replaceable></term>
       <listitem>
        <para>
-	Allows the structure of system tables to be modified.  This is
-	used by <command>initdb</command>.
+	Send all server log output to 
+	<replaceable class="parameter">filename</replaceable>.
+	If <command>postgres</command> is running under the
+	<command>postmaster</command>, this option is ignored,
+	and the <systemitem>stderr</> inherited from the
+	<command>postmaster</command> is used.
        </para>
       </listitem>
      </varlistentry>
+    </variablelist>
+   </refsect2>
 
-     <varlistentry>
-      <term><option>-p</option> <replaceable class="parameter">database</replaceable></term>
-      <listitem>
-       <para>
-	Indicates that this process has been started by a
-	<command>postmaster</command> and specifies the database to use.
-	etc.
-       </para>
-      </listitem>
-     </varlistentry>
+   <refsect2>
+    <title>Semi-internal Options</title>
 
-     <varlistentry>
-      <term><option>-t</option> <literal>pa[rser] | pl[anner] | e[xecutor]</literal></term>
-      <listitem>
-       <para>
-	Print timing statistics for each query relating to each of the
-	major system modules.  This option cannot be used together
-	with the <option>-s</option> option.
-       </para>
-      </listitem>
-     </varlistentry>
+    <para>
+     The options <option>-f</option>, <option>-O</option>,
+     <option>-P</option>, <option>-t</option>, and <option>-W</option>
+     have the same meanings as with the <xref
+     linkend="app-postmaster"> and are reserved for debugging and
+     disaster recovery.  Further options for internal use are:
 
+    <variablelist>
      <varlistentry>
       <term><option>-v</option> <replaceable class="parameter">protocol</replaceable></term>
       <listitem>
@@ -323,12 +176,12 @@ PostgreSQL documentation
      </varlistentry>
 
      <varlistentry>
-      <term><option>-W</option> <replaceable class="parameter">seconds</replaceable></term>
+      <term><option>-y</option> <replaceable class="parameter">database</replaceable></term>
       <listitem>
        <para>
-	As soon as this option is encountered, the process sleeps for
-	the specified amount of seconds.  This gives developers time
-	to attach a debugger to the server process.
+	Indicates that this process has been started by a
+	<command>postmaster</command> and specifies the database to use.
+	etc.
        </para>
       </listitem>
      </varlistentry>
@@ -343,8 +196,8 @@ PostgreSQL documentation
        </para>
       </listitem>
      </varlistentry>
-
     </variablelist>
+    </para>
    </refsect2>
  </refsect1>
 
@@ -361,13 +214,7 @@ PostgreSQL documentation
      </para>
     </listitem>
    </varlistentry>
-
   </variablelist>
-
-  <para>
-   For others, which have little influence during single-user mode,
-   see <xref linkend="app-postmaster">.
-  </para>
  </refsect1>
 
  <refsect1>
@@ -423,7 +270,7 @@ PostgreSQL documentation
    </para>
 
    <para>
-    But if you use the <option>-N</> command line switch, then newline does
+    But if you use the <option>-j</> command line switch, then newline does
     not terminate command entry.  In this case, the server will read the standard input
     until the end-of-file (<acronym>EOF</>) marker, then
     process the input as a single command string.  Backslash-newline is not
@@ -434,7 +281,7 @@ PostgreSQL documentation
     To quit the session, type <acronym>EOF</acronym>
     (<keycombo action="simul"><keycap>Control</><keycap>D</></>, usually).
     If you've
-    used <option>-N</>, two consecutive <acronym>EOF</>s are needed to exit.
+    used <option>-j</>, two consecutive <acronym>EOF</>s are needed to exit.
    </para>
 
    <para>
diff --git a/doc/src/sgml/ref/postmaster.sgml b/doc/src/sgml/ref/postmaster.sgml
index aa332ed2f22f1ee72ed15aa47bca08f1260269b5..77275e8d93a6fc780e65b19139a547a8c6c76cd9 100644
--- a/doc/src/sgml/ref/postmaster.sgml
+++ b/doc/src/sgml/ref/postmaster.sgml
@@ -1,5 +1,5 @@
 <!--
-$PostgreSQL: pgsql/doc/src/sgml/ref/postmaster.sgml,v 1.54 2005/12/02 23:13:46 tgl Exp $
+$PostgreSQL: pgsql/doc/src/sgml/ref/postmaster.sgml,v 1.55 2006/01/05 10:07:44 petere Exp $
 PostgreSQL documentation
 -->
 
@@ -22,22 +22,7 @@ PostgreSQL documentation
  <refsynopsisdiv>
   <cmdsynopsis>
    <command>postmaster</command>
-   <arg>-A <group choice="plain"><arg>0</arg><arg>1</arg></group></arg>
-   <arg>-B <replaceable>nbuffers</replaceable></arg>
-   <arg>-c <replaceable>name</replaceable>=<replaceable>value</replaceable></arg>
-   <arg>-d <replaceable>debug-level</replaceable></arg>
-   <arg>-D <replaceable>datadir</replaceable></arg>
-   <arg>-F</arg>
-   <arg>-h <replaceable>hostname</replaceable></arg>
-   <arg>-i</arg>
-   <arg>-k <replaceable>directory</replaceable></arg>
-   <arg>-l</arg>
-   <arg>-N <replaceable>max-connections</replaceable></arg>
-   <arg>-o <replaceable>extra-options</replaceable></arg>
-   <arg>-p <replaceable>port</replaceable></arg>
-   <arg>-S</arg>
-   <arg>--<replaceable>name</replaceable>=<replaceable>value</replaceable></arg>
-   <group><arg>-n</arg><arg>-s</arg></group>
+   <arg rep="repeat"><replaceable>option</></arg>
   </cmdsynopsis>
  </refsynopsisdiv>
 
@@ -70,8 +55,7 @@ PostgreSQL documentation
    location (the <quote>data area</quote>).
    More than one <command>postmaster</command> process can run on a system
    at one time, so long as they use different data areas and different
-   communication ports (see below).  A data area is created with <xref
-   linkend="app-initdb">.
+   communication ports (see below).
   </para>
 
   <para>
@@ -83,6 +67,7 @@ PostgreSQL documentation
    directly to the data area directory created by <application>initdb</>.
    Other possible file layouts are discussed in
    <xref linkend="runtime-config-file-locations">.
+   A data area is created with <xref linkend="app-initdb">.
   </para>
  </refsect1>
 
@@ -92,8 +77,12 @@ PostgreSQL documentation
    <para>
     <command>postmaster</command> accepts the following
     command line arguments.  For a detailed discussion of the options
-    consult <xref linkend="runtime-config">.  You can also save typing most of these
+    consult <xref linkend="runtime-config">.  You can save typing most of these
     options by setting up a configuration file.
+   </para>
+
+   <refsect2>
+    <title>General Purpose</title>
     
     <variablelist>
      <varlistentry>
@@ -156,6 +145,18 @@ PostgreSQL documentation
       </listitem>
      </varlistentry>
 
+     <varlistentry>
+      <term><option>-e</option></term>
+      <listitem>
+       <para>
+        Sets the default date style to <quote>European</quote>, that is
+	<literal>DMY</> ordering of input date fields.  This also causes
+	the day to be printed before the month in certain date output formats.
+	See <xref linkend="datatype-datetime"> for more information.
+       </para>
+      </listitem>
+     </varlistentry>
+
      <varlistentry>
       <term><option>-F</option></term>
       <listitem>
@@ -264,6 +265,12 @@ PostgreSQL documentation
 	linkend="app-postgres"> for possibilities.  If the option
 	string contains any spaces, the entire string must be quoted.
        </para>
+
+       <para>
+        The use of this option is obsolete; all command-line options
+        for server processes can be specified directly on the
+        <command>postmaster</command> command line
+       </para>
       </listitem>
      </varlistentry>
 
@@ -284,6 +291,17 @@ PostgreSQL documentation
       </listitem>
      </varlistentry>
 
+     <varlistentry>
+      <term><option>-s</option></term>
+      <listitem>
+       <para>
+	Print time information and other statistics at the end of each command.
+	This is useful for benchmarking or for use in tuning the number of
+	buffers.
+       </para>
+      </listitem>
+     </varlistentry>
+
      <varlistentry>
       <term><option>-S</option></term>
       <listitem>
@@ -318,55 +336,124 @@ PostgreSQL documentation
      </varlistentry>
 
     </variablelist>
-   </para>
+   </refsect2>
 
-   <para>
-    Two additional command line options are available for debugging
-    problems that cause a server process to die abnormally.  The
-    ordinary strategy in this situation is to notify all other server
-    processes that they must terminate and then reinitialize the
-    shared memory and semaphores.  This is because an errant server
-    process could have corrupted some shared state before terminating.
-    These options select alternative behaviors of the
-    <command>postmaster</command> in this situation.
-    <emphasis>Neither option is intended for use in ordinary
-    operation.</emphasis>
-   </para>
+   <refsect2>
+    <title>Semi-internal Options</title>
 
-   <para>
-   </para>
-
-   <para>
-    These special-case options are:
+    <para>
+     There are several other options that may be specified, used
+     mainly for debugging purposes and in some cases to assist with
+     recovery of severely damaged databases. There should be no reason
+     to use them in a production database setup.  These are listed
+     here only for the use by <productname>PostgreSQL</productname>
+     system developers.  <emphasis>Use of any of these options is
+     highly discouraged.</emphasis>  Furthermore, any of these options
+     may disappear or change in a future release without notice.
+    </para>
 
     <variablelist>
+     <varlistentry>
+      <term><option>-f</option> <literal>{ s | i | m | n | h }</literal></term>
+      <listitem>
+       <para>
+	Forbids the use of particular scan and join methods:
+	<literal>s</literal> and <literal>i</literal>
+	disable sequential and index scans respectively, while
+	<literal>n</literal>, <literal>m</literal>, and <literal>h</literal>
+	disable nested-loop, merge and hash joins respectively.
+       </para>
+	
+       <para>
+        Neither sequential scans nor nested-loop joins can be disabled
+        completely; the <literal>-fs</literal> and
+        <literal>-fn</literal> options simply discourage the optimizer
+        from using those plan types if it has any other alternative.
+       </para>
+      </listitem>
+     </varlistentry>
+
      <varlistentry>
       <term><option>-n</option></term>
       <listitem>
        <para>
-	<command>postmaster</command>
-	will not reinitialize shared data structures.  A knowledgeable system
-	programmer can then use a debugger
-	to examine shared memory and semaphore state.
+        This option is for debugging problems that cause a server
+        process to die abnormally.  The ordinary strategy in this
+        situation is to notify all other server processes that they
+        must terminate and then reinitialize the shared memory and
+        semaphores.  This is because an errant server process could
+        have corrupted some shared state before terminating.  This
+        option specifies that the <command>postmaster</command> will
+        not reinitialize shared data structures.  A knowledgeable
+        system programmer can then use a debugger to examine shared
+        memory and semaphore state.
        </para>
      </listitem>
     </varlistentry>
 
-    <varlistentry>
-      <term><option>-s</option></term>
+     <varlistentry>
+      <term><option>-O</option></term>
       <listitem>
        <para>
-	<command>postmaster</command>
-	will stop all other server processes by sending the signal
-	<literal>SIGSTOP</literal>,
-	but will not cause them to terminate.  This permits system programmers
-	to collect core dumps from all server processes by hand.
+	Allows the structure of system tables to be modified.  This is
+	used by <command>initdb</command>.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term><option>-P</option></term>
+      <listitem>
+       <para>
+	Ignore system indexes when reading system tables (but still update
+	the indexes when modifying the tables).  This is useful when
+	recovering from damaged system indexes.
        </para>
       </listitem>
      </varlistentry>
-    </variablelist>
-   </para>
 
+     <varlistentry>
+      <term><option>-t</option> <literal>pa[rser] | pl[anner] | e[xecutor]</literal></term>
+      <listitem>
+       <para>
+	Print timing statistics for each query relating to each of the
+	major system modules.  This option cannot be used together
+	with the <option>-s</option> option.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term><option>-T</option></term>
+      <listitem>
+       <para>
+        This option is for debugging problems that cause a server
+        process to die abnormally.  The ordinary strategy in this
+        situation is to notify all other server processes that they
+        must terminate and then reinitialize the shared memory and
+        semaphores.  This is because an errant server process could
+        have corrupted some shared state before terminating.  This
+        option specifies that the <command>postmaster</command> will
+        stop all other server processes by sending the signal
+        <literal>SIGSTOP</literal>, but will not cause them to
+        terminate.  This permits system programmers to collect core
+        dumps from all server processes by hand.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term><option>-W</option> <replaceable class="parameter">seconds</replaceable></term>
+      <listitem>
+       <para>
+        A delay of this many seconds occurs when a new server process
+        is started, after it conducts the authentication procedure.
+        This is intended to give an opportunity to attach to the
+        server process with a debugger.
+       </para>
+      </listitem>
+     </varlistentry>
+    </variablelist>
  </refsect1>
 
  <refsect1>
diff --git a/src/backend/access/index/genam.c b/src/backend/access/index/genam.c
index 6ca2fe594bff453b7c972743f24d3834a1d5f74a..3b840d2bb490276e7d08c0bbcd3aed5a02a6f9ed 100644
--- a/src/backend/access/index/genam.c
+++ b/src/backend/access/index/genam.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/access/index/genam.c,v 1.52 2005/12/03 05:51:00 tgl Exp $
+ *	  $PostgreSQL: pgsql/src/backend/access/index/genam.c,v 1.53 2006/01/05 10:07:44 petere Exp $
  *
  * NOTES
  *	  many of the old access method routines have been turned into
@@ -185,7 +185,7 @@ systable_beginscan(Relation heapRelation,
 	Relation	irel;
 
 	if (indexOK &&
-		!IsIgnoringSystemIndexes() &&
+		!IgnoreSystemIndexes &&
 		!ReindexIsProcessingIndex(indexId))
 		irel = index_open(indexId);
 	else
diff --git a/src/backend/bootstrap/bootstrap.c b/src/backend/bootstrap/bootstrap.c
index 66cf4c4ce0ac20645b29851530bae666fd000734..68dd732ff1ead46c952f90939800c172719826a1 100644
--- a/src/backend/bootstrap/bootstrap.c
+++ b/src/backend/bootstrap/bootstrap.c
@@ -8,7 +8,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/bootstrap/bootstrap.c,v 1.210 2006/01/04 21:06:30 tgl Exp $
+ *	  $PostgreSQL: pgsql/src/backend/bootstrap/bootstrap.c,v 1.211 2006/01/05 10:07:44 petere Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -255,10 +255,13 @@ BootstrapMain(int argc, char *argv[])
 		argc--;
 	}
 
-	while ((flag = getopt(argc, argv, "B:c:d:D:Fo:p:x:-:")) != -1)
+	while ((flag = getopt(argc, argv, "B:c:d:D:Fr:x:y:-:")) != -1)
 	{
 		switch (flag)
 		{
+			case 'B':
+				SetConfigOption("shared_buffers", optarg, PGC_POSTMASTER, PGC_S_ARGV);
+				break;
 			case 'D':
 				userDoption = optarg;
 				break;
@@ -278,18 +281,15 @@ BootstrapMain(int argc, char *argv[])
 			case 'F':
 				SetConfigOption("fsync", "false", PGC_POSTMASTER, PGC_S_ARGV);
 				break;
-			case 'o':
+			case 'r':
 				StrNCpy(OutputFileName, optarg, MAXPGPATH);
 				break;
 			case 'x':
 				xlogop = atoi(optarg);
 				break;
-			case 'p':
+			case 'y':
 				dbname = strdup(optarg);
 				break;
-			case 'B':
-				SetConfigOption("shared_buffers", optarg, PGC_POSTMASTER, PGC_S_ARGV);
-				break;
 			case 'c':
 			case '-':
 				{
@@ -376,7 +376,7 @@ BootstrapMain(int argc, char *argv[])
 		CreateDataDirLockFile(false);
 
 	SetProcessingMode(BootstrapProcessing);
-	IgnoreSystemIndexes(true);
+	IgnoreSystemIndexes = true;
 
 	BaseInit();
 
@@ -499,14 +499,16 @@ BootstrapMain(int argc, char *argv[])
 static void
 usage(void)
 {
-	write_stderr("Usage:\n"
-				 "  postgres -boot [OPTION]... DBNAME\n"
-				 "  -c NAME=VALUE    set run-time parameter\n"
-				 "  -d 1-5           debug level\n"
-				 "  -D datadir       data directory\n"
-				 "  -F               turn off fsync\n"
-				 "  -o file          send debug output to file\n"
-				 "  -x num           internal use\n");
+	fprintf(stderr, _("This is the PostgreSQL bootstrap process.\n\n"));
+	fprintf(stderr, _("Usage:\n  postgres -boot [OPTION]... DBNAME\n\n"));
+	fprintf(stderr, _("Options:\n"));
+	fprintf(stderr, _("  -B NBUFFERS     number of shared buffers\n"));
+	fprintf(stderr, _("  -c NAME=VALUE   set run-time parameter\n"));
+	fprintf(stderr, _("  -d 1-5          debugging level\n"));
+	fprintf(stderr, _("  -D DATADIR      database directory\n"));
+	fprintf(stderr, _("  -F              turn fsync off\n"));
+	fprintf(stderr, _("  -r FILENAME     send stdout and stderr to given file\n"));
+	fprintf(stderr, _("  -x NUM          internal use\n"));
 
 	proc_exit(1);
 }
diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c
index e9ac17d148b75839d80a818650f74fee4f821e5c..8a5888a40447edc26b76aeaf38464abbbd3216df 100644
--- a/src/backend/commands/trigger.c
+++ b/src/backend/commands/trigger.c
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/commands/trigger.c,v 1.197 2005/11/22 18:17:09 momjian Exp $
+ *	  $PostgreSQL: pgsql/src/backend/commands/trigger.c,v 1.198 2006/01/05 10:07:45 petere Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -845,7 +845,7 @@ RelationBuildTriggers(Relation relation)
 	/*
 	 * Note: since we scan the triggers using TriggerRelidNameIndexId, we will
 	 * be reading the triggers in name order, except possibly during
-	 * emergency-recovery operations (ie, IsIgnoringSystemIndexes). This in
+	 * emergency-recovery operations (ie, IgnoreSystemIndexes). This in
 	 * turn ensures that triggers will be fired in name order.
 	 */
 	ScanKeyInit(&skey,
diff --git a/src/backend/optimizer/util/plancat.c b/src/backend/optimizer/util/plancat.c
index ec753de8ca3b053071764c75e02dab7f406296de..d9a9fdb9cfa15088d43f5fa475793baa0f0bfeb2 100644
--- a/src/backend/optimizer/util/plancat.c
+++ b/src/backend/optimizer/util/plancat.c
@@ -9,7 +9,7 @@
  *
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/optimizer/util/plancat.c,v 1.115 2005/11/22 18:17:14 momjian Exp $
+ *	  $PostgreSQL: pgsql/src/backend/optimizer/util/plancat.c,v 1.116 2006/01/05 10:07:45 petere Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -107,7 +107,7 @@ get_relation_info(Oid relationObjectId, RelOptInfo *rel)
 	/*
 	 * Make list of indexes.  Ignore indexes on system catalogs if told to.
 	 */
-	if (IsIgnoringSystemIndexes() && IsSystemClass(relation->rd_rel))
+	if (IgnoreSystemIndexes && IsSystemClass(relation->rd_rel))
 		hasindex = false;
 	else
 		hasindex = relation->rd_rel->relhasindex;
diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index 187bfeb47ec317c79c3260933ef7de63fe69a079..31d370ebbb2efda7192e2ed4e604ce47606612b5 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -37,7 +37,7 @@
  *
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/postmaster/postmaster.c,v 1.477 2006/01/04 21:06:31 tgl Exp $
+ *	  $PostgreSQL: pgsql/src/backend/postmaster/postmaster.c,v 1.478 2006/01/05 10:07:45 petere Exp $
  *
  * NOTES
  *
@@ -432,8 +432,6 @@ PostmasterMain(int argc, char *argv[])
 											  ALLOCSET_DEFAULT_MAXSIZE);
 	MemoryContextSwitchTo(PostmasterContext);
 
-	IgnoreSystemIndexes(false);
-
 	if (find_my_exec(argv[0], my_exec_path) < 0)
 		elog(FATAL, "%s: could not locate my own executable path",
 			 argv[0]);
@@ -447,90 +445,108 @@ PostmasterMain(int argc, char *argv[])
 
 	opterr = 1;
 
-	while ((opt = getopt(argc, argv, "A:a:B:b:c:D:d:Fh:ik:lm:MN:no:p:Ss-:")) != -1)
+	while ((opt = getopt(argc, argv, "A:B:c:D:d:EeFf:h:ijk:lN:nOo:Pp:r:S:sTt:W:-:")) != -1)
 	{
 		switch (opt)
 		{
 			case 'A':
-#ifdef USE_ASSERT_CHECKING
 				SetConfigOption("debug_assertions", optarg, PGC_POSTMASTER, PGC_S_ARGV);
-#else
-				write_stderr("%s: assert checking is not compiled in\n", progname);
-#endif
-				break;
-			case 'a':
-				/* Can no longer set authentication method. */
 				break;
+
 			case 'B':
 				SetConfigOption("shared_buffers", optarg, PGC_POSTMASTER, PGC_S_ARGV);
 				break;
-			case 'b':
-				/* Can no longer set the backend executable file to use. */
-				break;
+
 			case 'D':
 				userDoption = optarg;
 				break;
+
 			case 'd':
 				set_debug_options(atoi(optarg), PGC_POSTMASTER, PGC_S_ARGV);
 				break;
+
+			case 'E':
+				SetConfigOption("log_statement", "all", PGC_POSTMASTER, PGC_S_ARGV);
+				break;
+
+			case 'e':
+				SetConfigOption("datestyle", "euro", PGC_POSTMASTER, PGC_S_ARGV);
+				break;
+
 			case 'F':
 				SetConfigOption("fsync", "false", PGC_POSTMASTER, PGC_S_ARGV);
 				break;
+
+			case 'f':
+				if (!set_plan_disabling_options(optarg, PGC_POSTMASTER, PGC_S_ARGV))
+				{
+					write_stderr("%s: invalid argument for option -f: \"%s\"\n",
+								 progname, optarg);
+					ExitPostmaster(1);
+				}
+				break;
+
 			case 'h':
 				SetConfigOption("listen_addresses", optarg, PGC_POSTMASTER, PGC_S_ARGV);
 				break;
+
 			case 'i':
 				SetConfigOption("listen_addresses", "*", PGC_POSTMASTER, PGC_S_ARGV);
 				break;
+
+			case 'j':
+				/* only used by interactive backend */
+				break;
+
 			case 'k':
 				SetConfigOption("unix_socket_directory", optarg, PGC_POSTMASTER, PGC_S_ARGV);
 				break;
-#ifdef USE_SSL
+
 			case 'l':
 				SetConfigOption("ssl", "true", PGC_POSTMASTER, PGC_S_ARGV);
 				break;
-#endif
-			case 'm':
-				/* Multiplexed backends no longer supported. */
-				break;
-			case 'M':
 
-				/*
-				 * ignore this flag.  This may be passed in because the
-				 * program was run as 'postgres -M' instead of 'postmaster'
-				 */
-				break;
 			case 'N':
-				/* The max number of backends to start. */
 				SetConfigOption("max_connections", optarg, PGC_POSTMASTER, PGC_S_ARGV);
 				break;
+
 			case 'n':
 				/* Don't reinit shared mem after abnormal exit */
 				Reinit = false;
 				break;
-			case 'o':
 
-				/*
-				 * Other options to pass to the backend on the command line
-				 */
+			case 'O':
+				SetConfigOption("allow_system_table_mods", "true", PGC_POSTMASTER, PGC_S_ARGV);
+				break;
+
+			case 'o':
+				/* Other options to pass to the backend on the command line */
 				snprintf(ExtraOptions + strlen(ExtraOptions),
 						 sizeof(ExtraOptions) - strlen(ExtraOptions),
 						 " %s", optarg);
 				break;
+
+			case 'P':
+				SetConfigOption("ignore_system_indexes", "true", PGC_POSTMASTER, PGC_S_ARGV);
+				break;
+
 			case 'p':
 				SetConfigOption("port", optarg, PGC_POSTMASTER, PGC_S_ARGV);
 				break;
-			case 'S':
 
-				/*
-				 * Start in 'S'ilent mode (disassociate from controlling tty).
-				 * You may also think of this as 'S'ysV mode since it's most
-				 * badly needed on SysV-derived systems like SVR4 and HP-UX.
-				 */
-				SetConfigOption("silent_mode", "true", PGC_POSTMASTER, PGC_S_ARGV);
+			case 'r':
+				/* only used by single-user backend */
+				break;
+
+			case 'S':
+				SetConfigOption("work_mem", optarg, PGC_POSTMASTER, PGC_S_ARGV);
 				break;
+
 			case 's':
+				SetConfigOption("log_statement_stats", optarg, PGC_POSTMASTER, PGC_S_ARGV);
+				break;
 
+			case 'T':
 				/*
 				 * In the event that some backend dumps core, send SIGSTOP,
 				 * rather than SIGQUIT, to all its peers.  This lets the wily
@@ -538,6 +554,28 @@ PostmasterMain(int argc, char *argv[])
 				 */
 				SendStop = true;
 				break;
+
+			case 't':
+			{
+				const char *tmp = get_stats_option_name(optarg);
+
+				if (tmp)
+				{
+					SetConfigOption(tmp, "true", PGC_POSTMASTER, PGC_S_ARGV);
+				}
+				else
+				{
+					write_stderr("%s: invalid argument for option -t: \"%s\"\n",
+								 progname, optarg);
+					ExitPostmaster(1);
+				}
+				break;
+			}
+
+			case 'W':
+				SetConfigOption("post_auth_delay", optarg, PGC_POSTMASTER, PGC_S_ARGV);
+				break;
+
 			case 'c':
 			case '-':
 				{
@@ -1113,6 +1151,7 @@ usage(const char *progname)
 	printf(_("  -c NAME=VALUE   set run-time parameter\n"));
 	printf(_("  -d 1-5          debugging level\n"));
 	printf(_("  -D DATADIR      database directory\n"));
+	printf(_("  -e              use European date input format (DMY)\n"));
 	printf(_("  -F              turn fsync off\n"));
 	printf(_("  -h HOSTNAME     host name or IP address to listen on\n"));
 	printf(_("  -i              enable TCP/IP connections\n"));
@@ -1121,18 +1160,25 @@ usage(const char *progname)
 	printf(_("  -l              enable SSL connections\n"));
 #endif
 	printf(_("  -N MAX-CONNECT  maximum number of allowed connections\n"));
-	printf(_("  -o OPTIONS      pass \"OPTIONS\" to each server process\n"));
+	printf(_("  -o OPTIONS      pass \"OPTIONS\" to each server process (obsolete)\n"));
 	printf(_("  -p PORT         port number to listen on\n"));
-	printf(_("  -S              silent mode (start in background without logging output)\n"));
+	printf(_("  -s              show statistics after each query\n"));
+	printf(_("  -S WORK-MEM     set amount of memory for sorts (in kB)\n"));
+	printf(_("  --NAME=VALUE    set run-time parameter\n"));
 	printf(_("  --help          show this help, then exit\n"));
 	printf(_("  --version       output version information, then exit\n"));
 
 	printf(_("\nDeveloper options:\n"));
+	printf(_("  -f s|i|n|m|h    forbid use of some plan types\n"));
 	printf(_("  -n              do not reinitialize shared memory after abnormal exit\n"));
-	printf(_("  -s              send SIGSTOP to all backend servers if one dies\n"));
+	printf(_("  -O              allow system table structure changes\n"));
+	printf(_("  -P              disable system indexes\n"));
+	printf(_("  -t pa|pl|ex     show timings after each query\n"));
+	printf(_("  -T              send SIGSTOP to all backend servers if one dies\n"));
+	printf(_("  -W NUM          wait NUM seconds to allow attach from a debugger\n"));
 
 	printf(_("\nPlease read the documentation for the complete list of run-time\n"
-	 "configuration settings and how to set them on the command line or in\n"
+			 "configuration settings and how to set them on the command line or in\n"
 			 "the configuration file.\n\n"
 			 "Report bugs to <pgsql-bugs@postgresql.org>.\n"));
 }
@@ -2797,8 +2843,8 @@ BackendRun(Port *port)
 	 * Now, build the argv vector that will be given to PostgresMain.
 	 *
 	 * The layout of the command line is
-	 *		postgres [secure switches] -p databasename [insecure switches]
-	 * where the switches after -p come from the client request.
+	 *		postgres [secure switches] -y databasename [insecure switches]
+	 * where the switches after -y come from the client request.
 	 *
 	 * The maximum possible number of commandline arguments that could come
 	 * from ExtraOptions or port->cmdline_options is (strlen + 1) / 2; see
@@ -2829,9 +2875,9 @@ BackendRun(Port *port)
 
 	/*
 	 * Tell the backend it is being called from the postmaster, and which
-	 * database to use.  -p marks the end of secure switches.
+	 * database to use.  -y marks the end of secure switches.
 	 */
-	av[ac++] = "-p";
+	av[ac++] = "-y";
 	av[ac++] = port->database_name;
 
 	/*
@@ -3575,7 +3621,7 @@ StartChildProcess(int xlop)
 	snprintf(xlbuf, sizeof(xlbuf), "-x%d", xlop);
 	av[ac++] = xlbuf;
 
-	av[ac++] = "-p";
+	av[ac++] = "-y";
 	av[ac++] = "template1";
 
 	av[ac] = NULL;
diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c
index 8f28ce6d020c56286201a14633467f99de46f75c..e38e66a38cb6203475e2f4655ae4410c08240b95 100644
--- a/src/backend/tcop/postgres.c
+++ b/src/backend/tcop/postgres.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/tcop/postgres.c,v 1.476 2006/01/05 03:01:35 momjian Exp $
+ *	  $PostgreSQL: pgsql/src/backend/tcop/postgres.c,v 1.477 2006/01/05 10:07:45 petere Exp $
  *
  * NOTES
  *	  this is the "main" module of the postgres backend and
@@ -84,6 +84,10 @@ LogStmtLevel log_statement = LOGSTMT_NONE;
 /* GUC variable for maximum stack depth (measured in kilobytes) */
 int			max_stack_depth = 2048;
 
+/* wait N seconds to allow attach from a debugger */
+int			PostAuthDelay = 0;
+
+
 
 /* ----------------
  *		private variables
@@ -2338,30 +2342,30 @@ usage(const char *progname)
 {
 	printf(_("%s is the PostgreSQL stand-alone backend.  It is not\nintended to be used by normal users.\n\n"), progname);
 
-	printf(_("Usage:\n  %s [OPTION]... [DBNAME]\n\n"), progname);
+	printf(_("Usage:\n  %s [OPTION]... DBNAME\n\n"), progname);
 	printf(_("Options:\n"));
 #ifdef USE_ASSERT_CHECKING
 	printf(_("  -A 1|0          enable/disable run-time assert checking\n"));
 #endif
 	printf(_("  -B NBUFFERS     number of shared buffers\n"));
 	printf(_("  -c NAME=VALUE   set run-time parameter\n"));
-	printf(_("  -d 0-5          debugging level (0 is off)\n"));
+	printf(_("  -d 0-5          debugging level\n"));
 	printf(_("  -D DATADIR      database directory\n"));
 	printf(_("  -e              use European date input format (DMY)\n"));
-	printf(_("  -E              echo query before execution\n"));
+	printf(_("  -E              echo statement before execution\n"));
 	printf(_("  -F              turn fsync off\n"));
-	printf(_("  -N              do not use newline as interactive query delimiter\n"));
-	printf(_("  -o FILENAME     send stdout and stderr to given file\n"));
-	printf(_("  -P              disable system indexes\n"));
+	printf(_("  -j              do not use newline as interactive query delimiter\n"));
+	printf(_("  -r FILENAME     send stdout and stderr to given file\n"));
 	printf(_("  -s              show statistics after each query\n"));
 	printf(_("  -S WORK-MEM     set amount of memory for sorts (in kB)\n"));
+	printf(_("  --NAME=VALUE    set run-time parameter\n"));
 	printf(_("  --describe-config  describe configuration parameters, then exit\n"));
 	printf(_("  --help          show this help, then exit\n"));
 	printf(_("  --version       output version information, then exit\n"));
 	printf(_("\nDeveloper options:\n"));
 	printf(_("  -f s|i|n|m|h    forbid use of some plan types\n"));
-	printf(_("  -i              do not execute queries\n"));
 	printf(_("  -O              allow system table structure changes\n"));
+	printf(_("  -P              disable system indexes\n"));
 	printf(_("  -t pa|pl|ex     show timings after each query\n"));
 	printf(_("  -W NUM          wait NUM seconds to allow attach from a debugger\n"));
 	printf(_("\nReport bugs to <pgsql-bugs@postgresql.org>.\n"));
@@ -2403,6 +2407,66 @@ set_debug_options(int debug_flag, GucContext context, GucSource source)
 }
 
 
+bool
+set_plan_disabling_options(const char *arg, GucContext context, GucSource source)
+{
+	char *tmp = NULL;
+
+	switch (arg[0])
+	{
+		case 's':	/* seqscan */
+			tmp = "enable_seqscan";
+			break;
+		case 'i':	/* indexscan */
+			tmp = "enable_indexscan";
+			break;
+		case 'b':	/* bitmapscan */
+			tmp = "enable_bitmapscan";
+			break;
+		case 't':	/* tidscan */
+			tmp = "enable_tidscan";
+			break;
+		case 'n':	/* nestloop */
+			tmp = "enable_nestloop";
+			break;
+		case 'm':	/* mergejoin */
+			tmp = "enable_mergejoin";
+			break;
+		case 'h':	/* hashjoin */
+			tmp = "enable_hashjoin";
+			break;
+	}
+	if (tmp)
+	{
+		SetConfigOption(tmp, "false", context, source);
+		return true;
+	}
+	else
+		return false;
+}
+
+
+const char *
+get_stats_option_name(const char *arg)
+{
+	switch (arg[0])
+	{
+		case 'p':
+			if (optarg[1] == 'a') /* "parser" */
+				return "log_parser_stats";
+			else if (optarg[1] == 'l') /* "planner" */
+				return "log_planner_stats";
+			break;
+
+		case 'e':	/* "executor" */
+			return "log_executor_stats";
+			break;
+	}
+
+	return NULL;
+}
+
+
 /* ----------------------------------------------------------------
  * PostgresMain
  *	   postgres main loop -- all backends, interactive or otherwise start here
@@ -2427,7 +2491,6 @@ PostgresMain(int argc, char *argv[], const char *username)
 	GucContext	ctx;
 	GucSource	gucsource;
 	bool		am_superuser;
-	char	   *tmp;
 	int			firstchar;
 	char		stack_base;
 	StringInfoData input_message;
@@ -2518,164 +2581,100 @@ PostgresMain(int argc, char *argv[], const char *username)
 	ctx = PGC_POSTMASTER;
 	gucsource = PGC_S_ARGV;		/* initial switches came from command line */
 
-	while ((flag = getopt(argc, argv, "A:B:c:D:d:Eef:FiNOPo:p:S:st:v:W:-:")) != -1)
+	while ((flag = getopt(argc, argv, "A:B:c:D:d:EeFf:h:ijk:lN:nOo:Pp:r:S:sTt:v:W:y:-:")) != -1)
 	{
 		switch (flag)
 		{
 			case 'A':
-#ifdef USE_ASSERT_CHECKING
 				SetConfigOption("debug_assertions", optarg, ctx, gucsource);
-#else
-				ereport(WARNING,
-						(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-						 errmsg("assert checking is not compiled in")));
-#endif
 				break;
 
 			case 'B':
-
-				/*
-				 * specify the size of buffer pool
-				 */
 				SetConfigOption("shared_buffers", optarg, ctx, gucsource);
 				break;
 
-			case 'D':			/* PGDATA or config directory */
+			case 'D':
 				if (secure)
 					userDoption = optarg;
 				break;
 
-			case 'd':			/* debug level */
+			case 'd':
 				debug_flag = atoi(optarg);
 				break;
 
 			case 'E':
-
-				/*
-				 * E - echo the query the user entered
-				 */
 				EchoQuery = true;
 				break;
 
 			case 'e':
-
-				/*
-				 * Use European date input format (DMY)
-				 */
 				SetConfigOption("datestyle", "euro", ctx, gucsource);
 				break;
 
 			case 'F':
-
-				/*
-				 * turn off fsync
-				 */
 				SetConfigOption("fsync", "false", ctx, gucsource);
 				break;
 
 			case 'f':
+				if (!set_plan_disabling_options(optarg, ctx, gucsource))
+					errs++;
+				break;
 
-				/*
-				 * f - forbid generation of certain plans
-				 */
-				tmp = NULL;
-				switch (optarg[0])
-				{
-					case 's':	/* seqscan */
-						tmp = "enable_seqscan";
-						break;
-					case 'i':	/* indexscan */
-						tmp = "enable_indexscan";
-						break;
-					case 'b':	/* bitmapscan */
-						tmp = "enable_bitmapscan";
-						break;
-					case 't':	/* tidscan */
-						tmp = "enable_tidscan";
-						break;
-					case 'n':	/* nestloop */
-						tmp = "enable_nestloop";
-						break;
-					case 'm':	/* mergejoin */
-						tmp = "enable_mergejoin";
-						break;
-					case 'h':	/* hashjoin */
-						tmp = "enable_hashjoin";
-						break;
-					default:
-						errs++;
-				}
-				if (tmp)
-					SetConfigOption(tmp, "false", ctx, gucsource);
+			case 'h':
+				SetConfigOption("listen_addresses", optarg, ctx, gucsource);
 				break;
 
-			case 'N':
+			case 'i':
+				SetConfigOption("listen_addresses", "*", ctx, gucsource);
+				break;
 
-				/*
-				 * N - Don't use newline as a query delimiter
-				 */
+			case 'j':
 				UseNewLine = 0;
 				break;
 
-			case 'O':
+			case 'k':
+				SetConfigOption("unix_socket_directory", optarg, ctx, gucsource);
+				break;
 
-				/*
-				 * allow system table structure modifications
-				 */
-				if (secure)		/* XXX safe to allow from client??? */
-					allowSystemTableMods = true;
+			case 'l':
+				SetConfigOption("ssl", "true", ctx, gucsource);
 				break;
 
-			case 'P':
+			case 'N':
+				SetConfigOption("max_connections", optarg, ctx, gucsource);
+				break;
 
-				/*
-				 * ignore system indexes
-				 *
-				 * As of PG 7.4 this is safe to allow from the client, since
-				 * it only disables reading the system indexes, not writing
-				 * them. Worst case consequence is slowness.
-				 */
-				IgnoreSystemIndexes(true);
+			case 'n':
+				/* ignored for consistency with postmaster */
+				break;
+
+			case 'O':
+				SetConfigOption("allow_system_table_mods", "true", ctx, gucsource);
 				break;
 
 			case 'o':
+				errs++;
+				break;
 
-				/*
-				 * o - send output (stdout and stderr) to the given file
-				 */
-				if (secure)
-					StrNCpy(OutputFileName, optarg, MAXPGPATH);
+			case 'P':
+				SetConfigOption("ignore_system_indexes", "true", ctx, gucsource);
 				break;
 
 			case 'p':
+				SetConfigOption("port", optarg, ctx, gucsource);
+				break;
 
-				/*
-				 * p - special flag passed if backend was forked by a
-				 * postmaster.
-				 */
+			case 'r':
+				/* send output (stdout and stderr) to the given file */
 				if (secure)
-				{
-					dbname = strdup(optarg);
-
-					secure = false;		/* subsequent switches are NOT secure */
-					ctx = PGC_BACKEND;
-					gucsource = PGC_S_CLIENT;
-				}
+					StrNCpy(OutputFileName, optarg, MAXPGPATH);
 				break;
 
 			case 'S':
-
-				/*
-				 * S - amount of sort memory to use in 1k bytes
-				 */
 				SetConfigOption("work_mem", optarg, ctx, gucsource);
 				break;
 
 			case 's':
-
 				/*
-				 * s - report usage statistics (timings) after each query
-				 *
 				 * Since log options are SUSET, we need to postpone unless
 				 * still in secure context
 				 */
@@ -2686,35 +2685,13 @@ PostgresMain(int argc, char *argv[], const char *username)
 									ctx, gucsource);
 				break;
 
+			case 'T':
+				/* ignored for consistency with postmaster */
+				break;
+
 			case 't':
-				/* ---------------
-				 *	tell postgres to report usage statistics (timings) for
-				 *	each query
-				 *
-				 *	-tpa[rser] = print stats for parser time of each query
-				 *	-tpl[anner] = print stats for planner time of each query
-				 *	-te[xecutor] = print stats for executor time of each query
-				 *	caution: -s can not be used together with -t.
-				 * ----------------
-				 */
-				tmp = NULL;
-				switch (optarg[0])
-				{
-					case 'p':
-						if (optarg[1] == 'a')
-							tmp = "log_parser_stats";
-						else if (optarg[1] == 'l')
-							tmp = "log_planner_stats";
-						else
-							errs++;
-						break;
-					case 'e':
-						tmp = "log_executor_stats";
-						break;
-					default:
-						errs++;
-						break;
-				}
+			{
+				const char *tmp = get_stats_option_name(optarg);
 				if (tmp)
 				{
 					if (ctx == PGC_BACKEND)
@@ -2722,7 +2699,10 @@ PostgresMain(int argc, char *argv[], const char *username)
 					else
 						SetConfigOption(tmp, "true", ctx, gucsource);
 				}
+				else
+					errs++;
 				break;
+			}
 
 			case 'v':
 				if (secure)
@@ -2730,11 +2710,23 @@ PostgresMain(int argc, char *argv[], const char *username)
 				break;
 
 			case 'W':
+				SetConfigOption("post_auth_delay", optarg, ctx, gucsource);
+				break;
 
+
+			case 'y':
 				/*
-				 * wait N seconds to allow attach from a debugger
+				 * y - special flag passed if backend was forked by a
+				 * postmaster.
 				 */
-				pg_usleep(atoi(optarg) * 1000000L);
+				if (secure)
+				{
+					dbname = strdup(optarg);
+
+					secure = false;		/* subsequent switches are NOT secure */
+					ctx = PGC_BACKEND;
+					gucsource = PGC_S_CLIENT;
+				}
 				break;
 
 			case 'c':
@@ -2813,6 +2805,9 @@ PostgresMain(int argc, char *argv[], const char *username)
 		pg_timezone_initialize();
 	}
 
+	if (PostAuthDelay)
+		pg_usleep(PostAuthDelay * 1000000L);
+
 	/*
 	 * Set up signal handlers and masks.
 	 *
diff --git a/src/backend/utils/cache/relcache.c b/src/backend/utils/cache/relcache.c
index 9854291df8ccf583a19350fcbb956e7c534bbf65..216f1c852926199162c57960bfd0d833aaf263a8 100644
--- a/src/backend/utils/cache/relcache.c
+++ b/src/backend/utils/cache/relcache.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/utils/cache/relcache.c,v 1.233 2005/12/09 01:22:04 tgl Exp $
+ *	  $PostgreSQL: pgsql/src/backend/utils/cache/relcache.c,v 1.234 2006/01/05 10:07:46 petere Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -551,7 +551,7 @@ RelationBuildRuleLock(Relation relation)
 	 *
 	 * Note: since we scan the rules using RewriteRelRulenameIndexId, we will
 	 * be reading the rules in name order, except possibly during
-	 * emergency-recovery operations (ie, IsIgnoringSystemIndexes). This in
+	 * emergency-recovery operations (ie, IgnoreSystemIndexes). This in
 	 * turn ensures that rules will be fired in name order.
 	 */
 	rewrite_desc = heap_open(RewriteRelationId, AccessShareLock);
diff --git a/src/backend/utils/init/miscinit.c b/src/backend/utils/init/miscinit.c
index 5dd8a620643025b1ebd6a46b5ef1cf13d3275d3f..f75d013a810fed7703acdb63299782acd2d5998a 100644
--- a/src/backend/utils/init/miscinit.c
+++ b/src/backend/utils/init/miscinit.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/utils/init/miscinit.c,v 1.152 2006/01/05 03:01:36 momjian Exp $
+ *	  $PostgreSQL: pgsql/src/backend/utils/init/miscinit.c,v 1.153 2006/01/05 10:07:46 petere Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -62,27 +62,7 @@ static char socketLockFile[MAXPGPATH];
  * ----------------------------------------------------------------
  */
 
-static bool isIgnoringSystemIndexes = false;
-
-/*
- * IsIgnoringSystemIndexes
- *		True if ignoring system indexes.
- */
-bool
-IsIgnoringSystemIndexes(void)
-{
-	return isIgnoringSystemIndexes;
-}
-
-/*
- * IgnoreSystemIndexes
- *		Set true or false whether PostgreSQL ignores system indexes.
- */
-void
-IgnoreSystemIndexes(bool mode)
-{
-	isIgnoringSystemIndexes = mode;
-}
+bool IgnoreSystemIndexes = false;
 
 /* ----------------------------------------------------------------
  *		system index reindexing support
diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c
index 124d2609b3513b67b406631d03d6e7ad65164508..ffd49da69ef70c86ed93a438e420d5f49bcae036 100644
--- a/src/backend/utils/misc/guc.c
+++ b/src/backend/utils/misc/guc.c
@@ -10,7 +10,7 @@
  * Written by Peter Eisentraut <peter_e@gmx.net>.
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.305 2005/12/30 00:13:50 petere Exp $
+ *	  $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.306 2006/01/05 10:07:46 petere Exp $
  *
  *--------------------------------------------------------------------
  */
@@ -130,6 +130,7 @@ static const char *show_num_temp_buffers(void);
 static bool assign_phony_autocommit(bool newval, bool doit, GucSource source);
 static const char *assign_custom_variable_classes(const char *newval, bool doit,
 							   GucSource source);
+static bool assign_debug_assertions(bool newval, bool doit, GucSource source);
 static bool assign_ssl(bool newval, bool doit, GucSource source);
 static bool assign_stage_log_stats(bool newval, bool doit, GucSource source);
 static bool assign_log_stats(bool newval, bool doit, GucSource source);
@@ -316,7 +317,7 @@ const char *const config_group_names[] =
 	/* STATS_COLLECTOR */
 	gettext_noop("Statistics / Query and Index Statistics Collector"),
 	/* AUTOVACUUM */
-	gettext_noop("Auto Vacuum"),
+	gettext_noop("Autovacuum"),
 	/* CLIENT_CONN */
 	gettext_noop("Client Connection Defaults"),
 	/* CLIENT_CONN_STATEMENT */
@@ -560,8 +561,6 @@ static struct config_bool ConfigureNamesBool[] =
 		&Log_disconnections,
 		false, NULL, NULL
 	},
-
-#ifdef USE_ASSERT_CHECKING
 	{
 		{"debug_assertions", PGC_USERSET, DEVELOPER_OPTIONS,
 			gettext_noop("Turns on various assertion checks."),
@@ -569,10 +568,13 @@ static struct config_bool ConfigureNamesBool[] =
 			GUC_NOT_IN_SAMPLE
 		},
 		&assert_enabled,
-		true, NULL, NULL
-	},
+#ifdef USE_ASSERT_CHECKING
+		true,
+#else
+		false,
 #endif
-
+		assign_debug_assertions, NULL
+	},
 	{
 		/* currently undocumented, so don't show in SHOW ALL */
 		{"exit_on_error", PGC_USERSET, UNGROUPED,
@@ -978,6 +980,27 @@ static struct config_bool ConfigureNamesBool[] =
 		false, NULL, NULL
 	},
 
+	{
+		{"allow_system_table_mods", PGC_BACKEND, DEVELOPER_OPTIONS,
+		 gettext_noop("Allows modifications of the structure of system tables."),
+		 NULL,
+		 GUC_NOT_IN_SAMPLE
+		},
+		&allowSystemTableMods,
+		false, NULL, NULL
+	},
+
+	{
+		{"ignore_system_indexes", PGC_BACKEND, DEVELOPER_OPTIONS,
+		 gettext_noop("Disabled reading from system indexes."),
+		 gettext_noop("It does not prevent updating the indexes, so it is safe "
+					  "to use.  The worst consequence is slowness."),
+		 GUC_NOT_IN_SAMPLE
+		},
+		&IgnoreSystemIndexes,
+		false, NULL, NULL
+	},
+
 	/* End-of-list marker */
 	{
 		{NULL, 0, 0, NULL, NULL}, NULL, false, NULL, NULL
@@ -987,6 +1010,15 @@ static struct config_bool ConfigureNamesBool[] =
 
 static struct config_int ConfigureNamesInt[] =
 {
+	{
+		{"post_auth_delay", PGC_BACKEND, DEVELOPER_OPTIONS,
+		 gettext_noop("Waits N seconds on connection startup after authentication."),
+		 gettext_noop("This allows attaching a debugger to the process."),
+		 GUC_NOT_IN_SAMPLE
+		},
+		&PostAuthDelay,
+		0, 0, INT_MAX, NULL, NULL
+	},
 	{
 		{"default_statistics_target", PGC_USERSET, QUERY_TUNING_OTHER,
 			gettext_noop("Sets the default statistics target."),
@@ -5865,6 +5897,18 @@ assign_custom_variable_classes(const char *newval, bool doit, GucSource source)
 	return newval;
 }
 
+static bool
+assign_debug_assertions(bool newval, bool doit, GucSource source)
+{
+#ifndef USE_ASSERT_CHECKING
+	if (newval)
+		ereport(ERROR,
+				(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
+				 errmsg("assertion checking is not supported by this build")));
+#endif
+	return true;
+}
+
 static bool
 assign_ssl(bool newval, bool doit, GucSource source)
 {
diff --git a/src/bin/initdb/initdb.c b/src/bin/initdb/initdb.c
index 8aecb08a2c054ecc12acdf2e238e9a01fd19d791..367b3083e0d72349d43e81590504c051f9076df9 100644
--- a/src/bin/initdb/initdb.c
+++ b/src/bin/initdb/initdb.c
@@ -42,7 +42,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  * Portions taken from FreeBSD.
  *
- * $PostgreSQL: pgsql/src/bin/initdb/initdb.c,v 1.105 2006/01/05 03:01:36 momjian Exp $
+ * $PostgreSQL: pgsql/src/bin/initdb/initdb.c,v 1.106 2006/01/05 10:07:46 petere Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1686,10 +1686,10 @@ setup_sysviews(void)
 	sysviews_setup = readfile(system_views_file);
 
 	/*
-	 * We use -N here to avoid backslashing stuff in system_views.sql
+	 * We use -j here to avoid backslashing stuff in system_views.sql
 	 */
 	snprintf(cmd, sizeof(cmd),
-			 "\"%s\" %s -N template1 >%s",
+			 "\"%s\" %s -j template1 >%s",
 			 backend_exec, backend_options,
 			 DEVNULL);
 
@@ -1870,10 +1870,10 @@ setup_schema(void)
 	lines = readfile(info_schema_file);
 
 	/*
-	 * We use -N here to avoid backslashing stuff in information_schema.sql
+	 * We use -j here to avoid backslashing stuff in information_schema.sql
 	 */
 	snprintf(cmd, sizeof(cmd),
-			 "\"%s\" %s -N template1 >%s",
+			 "\"%s\" %s -j template1 >%s",
 			 backend_exec, backend_options,
 			 DEVNULL);
 
diff --git a/src/include/miscadmin.h b/src/include/miscadmin.h
index e354b816c2dd59982315fd97e217e838d411f977..ce56c22d4345ad43b76884d3da351168a30c0ec5 100644
--- a/src/include/miscadmin.h
+++ b/src/include/miscadmin.h
@@ -13,7 +13,7 @@
  * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/include/miscadmin.h,v 1.184 2005/11/22 18:17:29 momjian Exp $
+ * $PostgreSQL: pgsql/src/include/miscadmin.h,v 1.185 2006/01/05 10:07:46 petere Exp $
  *
  * NOTES
  *	  some of the information in this file should be moved to other files.
@@ -306,8 +306,7 @@ extern bool InitPostgres(const char *dbname, const char *username);
 extern void BaseInit(void);
 
 /* in utils/init/miscinit.c */
-extern void IgnoreSystemIndexes(bool mode);
-extern bool IsIgnoringSystemIndexes(void);
+extern bool IgnoreSystemIndexes;
 extern void SetReindexProcessing(Oid heapOid, Oid indexOid);
 extern void ResetReindexProcessing(void);
 extern bool ReindexIsProcessingHeap(Oid heapOid);
diff --git a/src/include/tcop/tcopprot.h b/src/include/tcop/tcopprot.h
index 1f03f546c8ed60eabc053c2e35229f6b6674fbb9..ebcfec26904dcc2b46c9746c994b7d205691bfcd 100644
--- a/src/include/tcop/tcopprot.h
+++ b/src/include/tcop/tcopprot.h
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/include/tcop/tcopprot.h,v 1.78 2005/10/15 02:49:46 momjian Exp $
+ * $PostgreSQL: pgsql/src/include/tcop/tcopprot.h,v 1.79 2006/01/05 10:07:46 petere Exp $
  *
  * OLD COMMENTS
  *	  This file was created so that other c files could get the two
@@ -28,6 +28,7 @@
 extern CommandDest whereToSendOutput;
 extern DLLIMPORT const char *debug_query_string;
 extern int	max_stack_depth;
+extern int	PostAuthDelay;
 
 /* GUC-configurable parameters */
 
@@ -67,5 +68,8 @@ extern void ResetUsage(void);
 extern void ShowUsage(const char *title);
 extern void set_debug_options(int debug_flag,
 				  GucContext context, GucSource source);
+extern bool set_plan_disabling_options(const char *arg,
+									  GucContext context, GucSource source);
+extern const char *get_stats_option_name(const char *arg);
 
 #endif   /* TCOPPROT_H */