Thread: SGML cleanup

SGML cleanup

From
Neil Conway
Date:
This patch fixes various minor issues with the SGML docs:

- SGML markup police: <command> for SQL commands, <productname> for the
formal name "PostgreSQL", <type> for type names, and so on

- untabify release.sgml and runtime.sgml (I'll do a more thorough
untabification later)

- add a section "Deprecated Features" to the release notes, and move the
to_char(interval) notice to it. Also added a notice about the
planned-in-8.1 change of default_use_oids to false by default. Does
anyone know of any more deprecated features in 8.0 that we have active
plans to get rid of?

- other minor improvements

Barring any objections, I intend to apply this patch within the next 48
hours or so.

-Neil

Index: doc/src/sgml/errcodes.sgml
===================================================================
RCS file: /Users/neilc/local/cvs/pgsql-server/doc/src/sgml/errcodes.sgml,v
retrieving revision 1.7
diff -c -r1.7 errcodes.sgml
*** doc/src/sgml/errcodes.sgml    31 Jul 2004 23:04:54 -0000    1.7
--- doc/src/sgml/errcodes.sgml    21 Aug 2004 12:49:31 -0000
***************
*** 1133,1139 ****

  <row>
  <entry>Class 58</entry>
! <entry>System Error (errors external to PostgreSQL itself)</entry>
  </row>

  <row>
--- 1133,1139 ----

  <row>
  <entry>Class 58</entry>
! <entry>System Error (errors external to <productname>PostgreSQL</> itself)</entry>
  </row>

  <row>
Index: doc/src/sgml/problems.sgml
===================================================================
RCS file: /Users/neilc/local/cvs/pgsql-server/doc/src/sgml/problems.sgml,v
retrieving revision 2.18
diff -c -r2.18 problems.sgml
*** doc/src/sgml/problems.sgml    9 Mar 2004 16:57:46 -0000    2.18
--- doc/src/sgml/problems.sgml    21 Aug 2004 12:47:10 -0000
***************
*** 11,18 ****
    <productname>PostgreSQL</productname> more reliable because even the utmost
    care cannot guarantee that every part of
    <productname>PostgreSQL</productname>
!   will work on every
!   platform under every circumstance.
   </para>

   <para>
--- 11,17 ----
    <productname>PostgreSQL</productname> more reliable because even the utmost
    care cannot guarantee that every part of
    <productname>PostgreSQL</productname>
!   will work on every platform under every circumstance.
   </para>

   <para>
***************
*** 241,249 ****
        in each new release, so it is quite possible that a bug you have
        encountered in an older release of <productname>PostgreSQL</>
        has already been fixed. We can only provide limited support for
!       sites using older releases of PostgreSQL; if you require more
!       than we can provide, consider acquiring a commercial support
!       contract.
       </para>
       <para>
       </para>
--- 240,248 ----
        in each new release, so it is quite possible that a bug you have
        encountered in an older release of <productname>PostgreSQL</>
        has already been fixed. We can only provide limited support for
!       sites using older releases of <productname>PostgreSQL</>; if you
!       require more than we can provide, consider acquiring a
!       commercial support contract.
       </para>
       <para>
       </para>
Index: doc/src/sgml/release.sgml
===================================================================
RCS file: /Users/neilc/local/cvs/pgsql-server/doc/src/sgml/release.sgml,v
retrieving revision 1.287
diff -c -r1.287 release.sgml
*** doc/src/sgml/release.sgml    21 Aug 2004 03:25:34 -0000    1.287
--- doc/src/sgml/release.sgml    22 Aug 2004 19:03:39 -0000
***************
*** 27,103 ****

        <listitem>
         <para>
!         This is the first PostgreSQL release to natively run on Microsoft
!         Windows as a server. It can run as a Windows service. This release
!     supports NT-based Windows releases like Win2000, XP, Win2003.
!         Older releases like Windows 95, 98, and ME are not supported because
!     these operating systems do not have the infrastructure to
!     support PostgreSQL.  A separate installer project has been created
!         to ease installation on Windows:
          <ulink url="http://pgfoundry.org/projects/pginstaller">
!     http://pgfoundry.org/projects/pginstaller</ulink>.
         </para>
         <para>
          Previous releases required the Unix emulation toolkit Cygwin for
!         Win32 server support. PostgreSQL has always supported clients on Win32.
         </para>
        </listitem>
       </varlistentry>

       <varlistentry>
        <term>
!        Savepoints Improve Transaction Control
        </term>

        <listitem>
         <para>
          Savepoints allow specific parts of a transaction to be aborted
          without affecting the remainder of the transaction. Prior
!         releases had no such capability; there was no way to recover from
!         a statement failure within a transaction except by aborting the whole
!     transaction. This feature is valuable
!         for application writers who require error recovery within a
!     complex transaction.
         </para>
        </listitem>
       </varlistentry>

       <varlistentry>
        <term>
!        Point-In-Time Recovery Increases Reliability
        </term>

        <listitem>
         <para>
!         Though PostgreSQL is very reliable, in previous releases there
!         was no way to recover from disk drive failure except to restore
!         from a previous backup or use a standby replication server.
!     Point-in-time recovery allows continuous backup of the server.
!     You can recover either to the point of failure or to some
!     transaction in the past.
         </para>
        </listitem>
       </varlistentry>

       <varlistentry>
        <term>
!        Tablespaces Simplify Disk Layout
        </term>

        <listitem>
         <para>
!         Tablespaces allow administrators
!         to select the file systems used for storage of databases,
!         schemas, tables, or indexes. This improves performance and
!         control over disk space usage. Prior releases used
!         <literal>initlocation</> and manual symlink management for such tasks.
         </para>
        </listitem>
       </varlistentry>

       <varlistentry>
        <term>
!        Improved Buffer Management, CHECKPOINT, VACUUM
        </term>

        <listitem>
--- 27,106 ----

        <listitem>
         <para>
!         This is the first <productname>PostgreSQL</productname>
!         release to natively run on Microsoft Windows as a server. It
!         can run as a Windows service. This release supports NT-based
!         Windows releases like Win2000, XP, Win2003.  Older releases
!         like Windows 95, 98, and ME are not supported because these
!         operating systems do not have the infrastructure to support
!         <productname>PostgreSQL</productname>.  A separate installer
!         project has been created to ease installation on Windows:
          <ulink url="http://pgfoundry.org/projects/pginstaller">
!         http://pgfoundry.org/projects/pginstaller</ulink>.
         </para>
         <para>
          Previous releases required the Unix emulation toolkit Cygwin for
!         Win32 server support. <productname>PostgreSQL</productname>
!         has always supported clients on Win32.
         </para>
        </listitem>
       </varlistentry>

       <varlistentry>
        <term>
!        Savepoints
        </term>

        <listitem>
         <para>
          Savepoints allow specific parts of a transaction to be aborted
          without affecting the remainder of the transaction. Prior
!         releases had no such capability; there was no way to recover
!         from a statement failure within a transaction except by
!         aborting the whole transaction. This feature is valuable for
!         application writers who require error recovery within a
!         complex transaction.
         </para>
        </listitem>
       </varlistentry>

       <varlistentry>
        <term>
!        Point-In-Time Recovery
        </term>

        <listitem>
         <para>
!         Though <productname>PostgreSQL</productname> is very reliable,
!         in previous releases there was no way to recover from disk
!         drive failure except to restore from a previous backup or use
!         a standby replication server.  Point-in-time recovery allows
!         continuous backup of the server.  You can recover either to
!         the point of failure or to some transaction in the past.
         </para>
        </listitem>
       </varlistentry>

       <varlistentry>
        <term>
!        Tablespaces
        </term>

        <listitem>
         <para>
!         Tablespaces allow administrators to select the file systems
!         used for storage of databases, schemas, tables, or
!         indexes. This improves performance and control over disk space
!         usage. Prior releases used <application>initlocation</> and
!         manual symlink management for such tasks.
         </para>
        </listitem>
       </varlistentry>

       <varlistentry>
        <term>
!        Improved Buffer Management, <command>CHECKPOINT</command>,
!        <command>VACUUM</command>
        </term>

        <listitem>
***************
*** 117,123 ****

        <listitem>
         <para>
!         A column's data type can now be changed with ALTER TABLE.
         </para>
        </listitem>
       </varlistentry>
--- 120,127 ----

        <listitem>
         <para>
!         A column's data type can now be changed with <command>ALTER
!         TABLE</command>.
         </para>
        </listitem>
       </varlistentry>
***************
*** 130,151 ****
        <listitem>
         <para>
          A new version of the <application>plperl</> server-side language now
!     supports a persistent shared storage area, triggers, returning records
!     and arrays of records, and SPI calls to access the database.
         </para>
        </listitem>
       </varlistentry>

       <varlistentry>
        <term>
!        COPY Handles Comma-Separated-Value Files
        </term>

        <listitem>
         <para>
!         COPY can now read and write comma-separated-value (CSV) files. It
!         has the flexibility to interpret non-standard quoting and
!         separation characters too.
         </para>
        </listitem>
       </varlistentry>
--- 134,155 ----
        <listitem>
         <para>
          A new version of the <application>plperl</> server-side language now
!         supports a persistent shared storage area, triggers, returning records
!         and arrays of records, and SPI calls to access the database.
         </para>
        </listitem>
       </varlistentry>

       <varlistentry>
        <term>
!         CSV support in <command>COPY</command>
        </term>

        <listitem>
         <para>
!         <command>COPY</command> can now read and write
!         comma-separated-value (CSV) files. It has the flexibility to
!         interpret non-standard quoting and separation characters too.
         </para>
        </listitem>
       </varlistentry>
***************
*** 181,189 ****
       <listitem>
        <para>
         Server configuration parameters <varname>SortMem</> and
!        <varname>VacuumMem</> have been renamed to <varname>work_mem</> and
!        <varname>maintenance_work_mem</> to better reflect their use. The
!        original names are still supported in SET and SHOW.
        </para>
       </listitem>

--- 185,194 ----
       <listitem>
        <para>
         Server configuration parameters <varname>SortMem</> and
!        <varname>VacuumMem</> have been renamed to <varname>work_mem</>
!        and <varname>maintenance_work_mem</> to better reflect their
!        use. The original names are still supported in
!        <command>SET</command> and <command>SHOW</command>.
        </para>
       </listitem>

***************
*** 246,253 ****

       <listitem>
        <para>
!        The server now warns of empty strings passed to oid/float4/float8
!        data types. In the next major release, doing this will generate an
         error.
        </para>
       </listitem>
--- 251,259 ----

       <listitem>
        <para>
!        The server now warns of empty strings passed to
!        <type>oid</type>/<type>float4</type>/<type>float8</type> data
!        types. In the next major release, doing this will generate an
         error.
        </para>
       </listitem>
***************
*** 292,299 ****

       <listitem>
        <para>
!        EXECUTE now returns a completion tag that matches the executed
!        statement.
        </para>
       </listitem>

--- 298,305 ----

       <listitem>
        <para>
!        <command>EXECUTE</command> now returns a completion tag that
!        matches the executed statement.
        </para>
       </listitem>

***************
*** 307,314 ****

       <listitem>
        <para>
!        Now that tablespaces have been implemented, initlocation has been
!        removed.
        </para>
       </listitem>

--- 313,320 ----

       <listitem>
        <para>
!        Now that tablespaces have been implemented,
!        <application>initlocation</> has been removed.
        </para>
       </listitem>

***************
*** 321,338 ****
         ignored as well as leading whitespace (which has always been ignored).
        </para>
       </listitem>
-
-      <listitem>
-       <para>
-        The 8.1 release will remove the function <literal>to_char(interval)
-        </literal>.
-       </para>
-      </listitem>
      </itemizedlist>
     </para>
    </sect2>

    <sect2>
     <title>Changes</title>

     <para>
--- 327,372 ----
         ignored as well as leading whitespace (which has always been ignored).
        </para>
       </listitem>
      </itemizedlist>
     </para>
    </sect2>

    <sect2>
+    <title>Deprecated Features</title>
+
+    <para>
+     Some aspects of <productname>PostgreSQL</productname>'s behavior
+     have been determined to be suboptimal. For the sake of backward
+     compatibility these have not been removed in 8.0, but they are
+     considered deprecated and will be removed in the next major
+     release.
+     </para>
+
+    <itemizedlist>
+     <listitem>
+      <para>
+       The 8.1 release will remove the function
+        <literal>to_char(interval)</literal>.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       By default, tables in <productname>PostgreSQL</productname> 8.0
+       and earlier are created with OIDs. In the next release, this
+       will <emphasis>not</emphasis> be the case: to create a table
+       that contains OIDs, the <literal>WITH OIDS</literal> clause must
+       be specified or the <varname>default_use_oids</varname>
+       configuration parameter must be enabled. Users are encouraged to
+       explicitely use <literal>WITH OIDS</literal> if their tables
+       require OIDs for compatibility with future releases of
+       <productname>PostgreSQL</productname>.
+      </para>
+     </listitem>
+    </itemizedlist>
+   </sect2>
+
+   <sect2>
     <title>Changes</title>

     <para>
***************
*** 396,405 ****
        Add ability to prolong vacuum to reduce performance impact (Jan)
       </para>
       <para>
!       On busy systems, VACUUM performs many I/O requests which can hurt
!       performance for other users. This release allows you to slow down
!       VACUUM to reduce its impact on other users, though this increases the
!       total duration of VACUUM.
       </para>
      </listitem>

--- 430,440 ----
        Add ability to prolong vacuum to reduce performance impact (Jan)
       </para>
       <para>
!       On busy systems, <command>VACUUM</command> performs many I/O
!       requests which can hurt performance for other users. This
!       release allows you to slow down <command>VACUUM</command> to
!       reduce its impact on other users, though this increases the
!       total duration of <command>VACUUM</command>.
       </para>
      </listitem>

***************
*** 469,475 ****

      <listitem>
       <para>
!       Add type-specific ANALYZE statistics capability (Mark Cave-Ayland)
       </para>
       <para>
        This feature allows more flexibility in generating statistics
--- 504,511 ----

      <listitem>
       <para>
!       Add type-specific <command>ANALYZE</command> statistics
!       capability (Mark Cave-Ayland)
       </para>
       <para>
        This feature allows more flexibility in generating statistics
***************
*** 479,485 ****

      <listitem>
       <para>
!       Allow collection of ANALYZE statistics for expression indexes (Tom)
       </para>
       <para>
        Expression indexes (also called functional indexes) allow users to
--- 515,522 ----

      <listitem>
       <para>
!       Allow collection of <command>ANALYZE</command> statistics for
!       expression indexes (Tom)
       </para>
       <para>
        Expression indexes (also called functional indexes) allow users to
***************
*** 493,499 ****

      <listitem>
       <para>
!       New two-stage sampling method for ANALYZE (Manfred Koizar)
       </para>
       <para>
        This gives better statistics for asymmetric data distributions.
--- 530,537 ----

      <listitem>
       <para>
!       New two-stage sampling method for <command>ANALYZE</command>
!       (Manfred Koizar)
       </para>
       <para>
        This gives better statistics for asymmetric data distributions.
***************
*** 502,512 ****

      <listitem>
       <para>
!       Speed up TRUNCATE (Tom)
       </para>
       <para>
        This buys back some of the performance loss observed in 7.4, while still
!       keeping TRUNCATE transaction-safe.
       </para>
      </listitem>

--- 540,550 ----

      <listitem>
       <para>
!       Speed up <command>TRUNCATE</command> (Tom)
       </para>
       <para>
        This buys back some of the performance loss observed in 7.4, while still
!       keeping <command>TRUNCATE</command> transaction-safe.
       </para>
      </listitem>

***************
*** 671,693 ****

      <listitem>
       <para>
!       Allow DECLARE CURSOR to take parameters (Oliver Jowett)
       </para>
       <para>
!       It is now useful to issue DECLARE CURSOR in a Parse message with
!       parameters.  The parameter values sent at Bind time will be substituted
!       into the execution of the cursor's query.
       </para>
      </listitem>

      <listitem>
       <para>
!       Fix hash joins and aggregates of INET and CIDR data types (Tom)
       </para>
       <para>
!       Release 7.4 handled hashing of mixed INET and CIDR values incorrectly.
!       (This bug did not exist in prior releases because they wouldn't try
!       to hash either datatype.)
       </para>
      </listitem>

--- 709,735 ----

      <listitem>
       <para>
!       Allow <command>DECLARE CURSOR</command> to take parameters
!       (Oliver Jowett)
       </para>
       <para>
!       It is now useful to issue <command>DECLARE CURSOR</command> in a
!       Parse message with parameters.  The parameter values sent at
!       Bind time will be substituted into the execution of the cursor's
!       query.
       </para>
      </listitem>

      <listitem>
       <para>
!       Fix hash joins and aggregates of <type>inet</type> and
!       <type>cidr</type> data types (Tom)
       </para>
       <para>
!       Release 7.4 handled hashing of mixed <type>inet</type> and
!       <type>cidr</type> values incorrectly.  (This bug did not exist
!       in prior releases because they wouldn't try to hash either
!       datatype.)
       </para>
      </listitem>

***************
*** 719,726 ****

      <listitem>
       <para>
!       Allow BEGIN WORK to specify transaction isolation levels like START
!       TRANSACTION (Bruce)
       </para>
      </listitem>

--- 761,769 ----

      <listitem>
       <para>
!       Allow <command>BEGIN WORK</command> to specify transaction
!       isolation levels like <command>START TRANSACTION</command> does
!       (Bruce)
       </para>
      </listitem>

***************
*** 824,835 ****

      <listitem>
       <para>
!       Change EXECUTE to return a completion tag matching the executed statement
!       (Kris Jurka)
       </para>
       <para>
!       Previous releases return an EXECUTE tag for any EXECUTE call. In
!       this release, the tag returned will reflect the command executed.
       </para>
      </listitem>

--- 867,879 ----

      <listitem>
       <para>
!       Change <command>EXECUTE</command> to return a completion tag
!       matching the executed statement (Kris Jurka)
       </para>
       <para>
!       Previous releases return an <command>EXECUTE</command> tag for
!       any <command>EXECUTE</command> call. In this release, the tag
!       returned will reflect the command executed.
       </para>
      </listitem>

***************
*** 864,877 ****
        control whether tables are created with OIDs by default (Neil)
       </para>
       <para>
!       This allows administrators to default all CREATE TABLE commands to
!       create tables without OID columns.
       </para>
      </listitem>

      <listitem>
       <para>
!       Add WITH / WITHOUT OIDS clause to CREATE TABLE AS (Neil)
       </para>
      </listitem>

--- 908,922 ----
        control whether tables are created with OIDs by default (Neil)
       </para>
       <para>
!       This allows administrators to default all <command>CREATE
!       TABLE</command> commands to create tables without OID columns.
       </para>
      </listitem>

      <listitem>
       <para>
!       Add WITH / WITHOUT OIDS clause to <command>CREATE TABLE
!       AS</command> (Neil)
       </para>
      </listitem>

***************
*** 911,917 ****

      <listitem>
       <para>
!       Allow multiple ALTER actions in a single ALTER TABLE command (Rod)
       </para>
       <para>
        This is particularly useful for ALTER commands that rewrite the
--- 956,963 ----

      <listitem>
       <para>
!       Allow multiple ALTER actions in a single <command>ALTER
!       TABLE</command> command (Rod)
       </para>
       <para>
        This is particularly useful for ALTER commands that rewrite the
***************
*** 923,929 ****

      <listitem>
       <para>
!       Allow ALTER TABLE to add SERIAL columns (Tom)
       </para>
       <para>
        This is related to the new capability of adding defaults for new
--- 969,976 ----

      <listitem>
       <para>
!       Allow <command>ALTER TABLE</command> to add <type>serial</type>
!       columns (Tom)
       </para>
       <para>
        This is related to the new capability of adding defaults for new
***************
*** 996,1008 ****

      <listitem>
       <para>
!       Allow CREATE SCHEMA to create triggers, indexes, and sequences (Neil)
       </para>
      </listitem>

      <listitem>
       <para>
!       Add ALSO keyword to CREATE RULE (Fabien Coelho)
       </para>
       <para>
        This allows ALSO to be added to rule creation to contrast it with
--- 1043,1057 ----

      <listitem>
       <para>
!       Allow <command>CREATE SCHEMA</command> to create triggers,
!       indexes, and sequences (Neil)
       </para>
      </listitem>

      <listitem>
       <para>
!       Add ALSO keyword to <command>CREATE RULE</command> (Fabien
!       Coelho)
       </para>
       <para>
        This allows ALSO to be added to rule creation to contrast it with
***************
*** 1012,1034 ****

      <listitem>
       <para>
!       Add NOWAIT option to LOCK command (Tatsuo)
       </para>
       <para>
!       This allows the LOCK command to fail if it would have to wait for
!       the requested lock.
       </para>
      </listitem>

      <listitem>
       <para>
!       Allow COPY to read and write comma-separated-value (CSV) files (Andrew, Bruce)
       </para>
      </listitem>

      <listitem>
       <para>
!       Generate error if the COPY delimiter and NULL string conflict (Bruce)
       </para>
      </listitem>

--- 1061,1085 ----

      <listitem>
       <para>
!       Add NOWAIT option to <command>LOCK</command> (Tatsuo)
       </para>
       <para>
!       This allows the <command>LOCK</command> command to fail if it
!       would have to wait for the requested lock.
       </para>
      </listitem>

      <listitem>
       <para>
!       Allow <command>COPY</command> to read and write
!       comma-separated-value (CSV) files (Andrew, Bruce)
       </para>
      </listitem>

      <listitem>
       <para>
!       Generate error if the <command>COPY</command> delimiter and NULL
!       string conflict (Bruce)
       </para>
      </listitem>

***************
*** 1040,1046 ****

      <listitem>
       <para>
!       Avoid locking conflict between CREATE INDEX and CHECKPOINT (Tom)
       </para>
       <para>
        In 7.3 and 7.4, a long-running btree index build could block concurrent
--- 1091,1098 ----

      <listitem>
       <para>
!       Avoid locking conflict between <command>CREATE INDEX</command>
!       and <command>CHECKPOINT</command> (Tom)
       </para>
       <para>
        In 7.3 and 7.4, a long-running btree index build could block concurrent
***************
*** 1051,1064 ****

      <listitem>
       <para>
!       Database-wide ANALYZE does not hold locks across tables (Tom)
       </para>
       <para>
!       This reduces the potential for deadlocks against other backends that
!       want exclusive locks on tables.  To get the benefit of this change,
!       do not execute database-wide ANALYZE inside a transaction block
!       (BEGIN block); it must be able to commit and start a new transaction
!       for each table.
       </para>
      </listitem>

--- 1103,1118 ----

      <listitem>
       <para>
!       Database-wide <command>ANALYZE</command> does not hold locks
!       across tables (Tom)
       </para>
       <para>
!       This reduces the potential for deadlocks against other backends
!       that want exclusive locks on tables.  To get the benefit of this
!       change, do not execute database-wide <command>ANALYZE</command>
!       inside a transaction block (<command>BEGIN</command> block); it
!       must be able to commit and start a new transaction for each
!       table.
       </para>
      </listitem>

***************
*** 1067,1077 ****
        Erase MD5 user passwords when a user is renamed (Bruce)
       </para>
       <para>
!       PostgreSQL uses the user name as salt when encrypting passwords
!       via MD5. When a user name is changed, their salt no longer matches
!       the stored MD5 password, so the stored password becomes useless.
!       In this release a notice is generated and the password
!       is cleared.  A new password must then be assigned.
       </para>
      </listitem>

--- 1121,1132 ----
        Erase MD5 user passwords when a user is renamed (Bruce)
       </para>
       <para>
!       <productname>PostgreSQL</productname> uses the user name as salt
!       when encrypting passwords via MD5. When a user name is changed,
!       their salt no longer matches the stored MD5 password, so the
!       stored password becomes useless.  In this release a notice is
!       generated and the password is cleared.  A new password must then
!       be assigned.
       </para>
      </listitem>

***************
*** 1127,1133 ****
        Reject non-rectangular array literals as erroneous (Joe)
       </para>
       <para>
!       Formerly, array_in would silently build a surprising result.
       </para>
      </listitem>

--- 1182,1189 ----
        Reject non-rectangular array literals as erroneous (Joe)
       </para>
       <para>
!       Formerly, <literal>array_in</literal> would silently build a
!       surprising result.
       </para>
      </listitem>

***************
*** 1174,1184 ****

      <listitem>
       <para>
!       Change factorial function to return NUMERIC (Gavin)
       </para>
       <para>
!       Returning NUMERIC allows the factorial function to work for a wider
!       range of input values.
       </para>
      </listitem>

--- 1230,1240 ----

      <listitem>
       <para>
!       Change factorial function to return <type>numeric</type> (Gavin)
       </para>
       <para>
!       Returning <type>numeric</type> allows the factorial function to
!       work for a wider range of input values.
       </para>
      </listitem>

***************
*** 1217,1223 ****

      <listitem>
       <para>
!       Better support for IEEE Infinity and NaN values in float4, float8 (Neil)
       </para>
       <para>
        These should now work on all platforms that support IEEE-compliant
--- 1273,1280 ----

      <listitem>
       <para>
!       Better support for IEEE Infinity and NaN values in
!       <type>float4</type>, <type>float8</type> (Neil)
       </para>
       <para>
        These should now work on all platforms that support IEEE-compliant
***************
*** 1448,1454 ****

      <listitem>
       <para>
!       Make psql \copy match COPY command syntax fully (Tom)
       </para>
      </listitem>

--- 1505,1512 ----

      <listitem>
       <para>
!       Make psql \copy match <command>COPY</command> command syntax
!       fully (Tom)
       </para>
      </listitem>

***************
*** 1460,1466 ****

      <listitem>
       <para>
!       Add CLUSTER information to psql \d display (Bruce)
       </para>
      </listitem>

--- 1518,1525 ----

      <listitem>
       <para>
!       Add <command>CLUSTER</command> information to psql \d display
!       (Bruce)
       </para>
      </listitem>

***************
*** 1478,1484 ****

      <listitem>
       <para>
!       Add global psql config file, psqlrc.sample (Bruce)
       </para>
       <para>
        This allows a central file where global psql startup commands can
--- 1537,1544 ----

      <listitem>
       <para>
!       Add global psql config file, <filename>psqlrc.sample</filename>
!       (Bruce)
       </para>
       <para>
        This allows a central file where global psql startup commands can
***************
*** 1594,1601 ****

      <listitem>
       <para>
!       Allow PQoidValue(), PQcmdTuples(), and PQoidStatus() to work
!       on EXECUTE commands (Neil)
       </para>
      </listitem>

--- 1654,1661 ----

      <listitem>
       <para>
!       Allow PQoidValue(), PQcmdTuples(), and PQoidStatus() to work on
!       <command>EXECUTE</command> commands (Neil)
       </para>
      </listitem>

***************
*** 1665,1674 ****
        New "PostgreSQL" CVS tag (Marc)
       </para>
       <para>
!       This was done to make it easier for organizations to manage their own
!       copies of the PostgreSQL CVS repository.  File version stamps from the
!       master repository will not get munged by checking into or out of
!       a copied repository.
       </para>
      </listitem>

--- 1725,1735 ----
        New "PostgreSQL" CVS tag (Marc)
       </para>
       <para>
!       This was done to make it easier for organizations to manage
!       their own copies of the <productname>PostgreSQL</productname>
!       CVS repository.  File version stamps from the master repository
!       will not get munged by checking into or out of a copied
!       repository.
       </para>
      </listitem>

***************
*** 1880,1886 ****

      <listitem>
       <para>
!       New /contrib/trgm, trigram matching for PostgreSQL (Teodor)
       </para>
      </listitem>

--- 1941,1948 ----

      <listitem>
       <para>
!       New /contrib/trgm, trigram matching for
!       <productname>PostgreSQL</productname> (Teodor)
       </para>
      </listitem>

***************
*** 2037,2043 ****
  <para>
    This fixes a difficult-to-exploit security hole.
  </para></listitem>
! <listitem><para>Avoid locking conflict between ANALYZE and LISTEN/NOTIFY</para></listitem>
  <listitem><para>Numerous translation updates (various contributors)</para></listitem>
  </itemizedlist>

--- 2099,2105 ----
  <para>
    This fixes a difficult-to-exploit security hole.
  </para></listitem>
! <listitem><para>Avoid locking conflict between <command>ANALYZE</command> and
<command>LISTEN</command>/<command>NOTIFY</command></para></listitem>
  <listitem><para>Numerous translation updates (various contributors)</para></listitem>
  </itemizedlist>

Index: doc/src/sgml/runtime.sgml
===================================================================
RCS file: /Users/neilc/local/cvs/pgsql-server/doc/src/sgml/runtime.sgml,v
retrieving revision 1.278
diff -c -r1.278 runtime.sgml
*** doc/src/sgml/runtime.sgml    16 Aug 2004 02:12:29 -0000    1.278
--- doc/src/sgml/runtime.sgml    22 Aug 2004 05:26:00 -0000
***************
*** 1206,1222 ****
         <listitem>
          <para>
           Specifies the delay between activity rounds for the
!          background writer.  In each round the writer issues writes for some
!          number of dirty buffers (controllable by the following parameters).
!          The selected buffers will always be the
!          least recently used ones among the currently dirty buffers.
!          It then sleeps for <varname>bgwriter_delay</varname> milliseconds,
!          and repeats.
!          Note that on many systems, the effective resolution
!          of sleep delays is 10 milliseconds; setting
!          <varname>bgwriter_delay</varname> to a value that is
!          not a multiple of 10 may have the same results as setting it
!          to the next higher multiple of 10.
           This option can only be set at server start or in the
           <filename>postgresql.conf</filename> file.
          </para>
--- 1206,1221 ----
         <listitem>
          <para>
           Specifies the delay between activity rounds for the
!          background writer.  In each round the writer issues writes
!          for some number of dirty buffers (controllable by the
!          following parameters).  The selected buffers will always be
!          the least recently used ones among the currently dirty
!          buffers.  It then sleeps for <varname>bgwriter_delay</>
!          milliseconds, and repeats.  The default value is 200. Note
!          that on many systems, the effective resolution of sleep
!          delays is 10 milliseconds; setting <varname>bgwriter_delay</>
!          to a value that is not a multiple of 10 may have the same
!          results as setting it to the next higher multiple of 10.
           This option can only be set at server start or in the
           <filename>postgresql.conf</filename> file.
          </para>
***************
*** 1227,1236 ****
         <term><varname>bgwriter_percent</varname> (<type>integer</type>)</term>
         <listitem>
          <para>
!          In each round, no more than this percentage of the currently dirty
!          buffers will be written (rounding up any fraction to the next whole
!          number of buffers).
!          This option can only be set at server start or in the
           <filename>postgresql.conf</filename> file.
          </para>
         </listitem>
--- 1226,1235 ----
         <term><varname>bgwriter_percent</varname> (<type>integer</type>)</term>
         <listitem>
          <para>
!          In each round, no more than this percentage of the currently
!          dirty buffers will be written (rounding up any fraction to
!          the next whole number of buffers).  The default value is
!          1. This option can only be set at server start or in the
           <filename>postgresql.conf</filename> file.
          </para>
         </listitem>
***************
*** 1240,1247 ****
         <term><varname>bgwriter_maxpages</varname> (<type>integer</type>)</term>
         <listitem>
          <para>
!          In each round, no more than this many dirty buffers will be written.
!          This option can only be set at server start or in the
           <filename>postgresql.conf</filename> file.
          </para>
         </listitem>
--- 1239,1247 ----
         <term><varname>bgwriter_maxpages</varname> (<type>integer</type>)</term>
         <listitem>
          <para>
!          In each round, no more than this many dirty buffers will be
!          written. The default value is 100. This option can only be
!          set at server start or in the
           <filename>postgresql.conf</filename> file.
          </para>
         </listitem>
***************
*** 1250,1258 ****

       <para>
        Smaller values of <varname>bgwriter_percent</varname> and
!       <varname>bgwriter_maxpages</varname> reduce the extra I/O load caused by
!       the background writer, but leave more work to be done at checkpoint
!       time.  To reduce load spikes at checkpoints, increase the values.
       </para>
      </sect3>

--- 1250,1259 ----

       <para>
        Smaller values of <varname>bgwriter_percent</varname> and
!       <varname>bgwriter_maxpages</varname> reduce the extra I/O load
!       caused by the background writer, but leave more work to be done
!       at checkpoint time.  To reduce load spikes at checkpoints,
!       increase the values.
       </para>
      </sect3>

***************
*** 1448,1454 ****
         </para>
         <para>
          It is important for the command to return a zero exit status only if
!     it succeeds.  Examples:
  <programlisting>
  archive_command = 'cp "%p" /mnt/server/archivedir/"%f"'
  archive_command = 'copy "%p" /mnt/server/archivedir/"%f"'  # Win32
--- 1449,1455 ----
         </para>
         <para>
          It is important for the command to return a zero exit status only if
!         it succeeds.  Examples:
  <programlisting>
  archive_command = 'cp "%p" /mnt/server/archivedir/"%f"'
  archive_command = 'copy "%p" /mnt/server/archivedir/"%f"'  # Win32
***************
*** 1880,1893 ****
        <term><varname>log_destination</varname> (<type>string</type>)</term>
        <listitem>
         <para>
!     <productname>PostgreSQL</productname> supports several methods
!      for logging server messages, including
!      <systemitem>stderr</systemitem> and
!      <systemitem>syslog</systemitem>. On Windows,
!      <systemitem>eventlog</systemitem> is also supported. Set this
!      option to a list of desired log destinations separated by
!      commas. The default is to log to <systemitem>stderr</systemitem>
!      only.
           This option can only be set at server start or in the
           <filename>postgresql.conf</filename> configuration file.
         </para>
--- 1881,1894 ----
        <term><varname>log_destination</varname> (<type>string</type>)</term>
        <listitem>
         <para>
!         <productname>PostgreSQL</productname> supports several methods
!          for logging server messages, including
!          <systemitem>stderr</systemitem> and
!          <systemitem>syslog</systemitem>. On Windows,
!          <systemitem>eventlog</systemitem> is also supported. Set this
!          option to a list of desired log destinations separated by
!          commas. The default is to log to <systemitem>stderr</systemitem>
!          only.
           This option can only be set at server start or in the
           <filename>postgresql.conf</filename> configuration file.
         </para>
***************
*** 1898,1911 ****
        <term><varname>redirect_stderr</varname> (<type>boolean</type>)</term>
         <listitem>
          <para>
!       This option allows messages sent to <application>stderr</> to be
!       captured and redirected into log files.
!       This option, in combination with logging to <application>stderr</>,
!       is often more useful than
!       logging to <application>syslog</>, since some types of messages
!       may not appear in <application>syslog</> output (a common example
!       is dynamic-linker failure messages).
!       This option can only be set at server start.
          </para>
         </listitem>
       </varlistentry>
--- 1899,1912 ----
        <term><varname>redirect_stderr</varname> (<type>boolean</type>)</term>
         <listitem>
          <para>
!           This option allows messages sent to <application>stderr</> to be
!           captured and redirected into log files.
!           This option, in combination with logging to <application>stderr</>,
!           is often more useful than
!           logging to <application>syslog</>, since some types of messages
!           may not appear in <application>syslog</> output (a common example
!           is dynamic-linker failure messages).
!           This option can only be set at server start.
          </para>
         </listitem>
       </varlistentry>
***************
*** 1914,1923 ****
        <term><varname>log_directory</varname> (<type>string</type>)</term>
         <listitem>
          <para>
!       When <varname>redirect_stderr</> is enabled, this option
            determines the directory in which log files will be created.
!       It may be specified as an absolute path, or relative to the
!       cluster data directory.
           This option can only be set at server start or in the
           <filename>postgresql.conf</filename> configuration file.
          </para>
--- 1915,1924 ----
        <term><varname>log_directory</varname> (<type>string</type>)</term>
         <listitem>
          <para>
!           When <varname>redirect_stderr</> is enabled, this option
            determines the directory in which log files will be created.
!           It may be specified as an absolute path, or relative to the
!           cluster data directory.
           This option can only be set at server start or in the
           <filename>postgresql.conf</filename> configuration file.
          </para>
***************
*** 1928,1937 ****
        <term><varname>log_filename_prefix</varname> (<type>string</type>)</term>
         <listitem>
          <para>
!       When <varname>redirect_stderr</> is enabled, this option
            sets the prefix of the file names of the created log files.
!       The postmaster PID and the current time are appended to this
!       prefix to form an exact log file name.
           This option can only be set at server start or in the
           <filename>postgresql.conf</filename> configuration file.
          </para>
--- 1929,1938 ----
        <term><varname>log_filename_prefix</varname> (<type>string</type>)</term>
         <listitem>
          <para>
!           When <varname>redirect_stderr</> is enabled, this option
            sets the prefix of the file names of the created log files.
!           The postmaster PID and the current time are appended to this
!           prefix to form an exact log file name.
           This option can only be set at server start or in the
           <filename>postgresql.conf</filename> configuration file.
          </para>
***************
*** 1942,1952 ****
        <term><varname>log_rotation_age</varname> (<type>integer</type>)</term>
         <listitem>
          <para>
!       When <varname>redirect_stderr</> is enabled, this option
!       determines the maximum lifetime of an individual log file.
!       After this many minutes have elapsed, a new log file will
!       be created.  Set to zero to disable time-based creation of
!       new log files.
           This option can only be set at server start or in the
           <filename>postgresql.conf</filename> configuration file.
          </para>
--- 1943,1953 ----
        <term><varname>log_rotation_age</varname> (<type>integer</type>)</term>
         <listitem>
          <para>
!           When <varname>redirect_stderr</> is enabled, this option
!           determines the maximum lifetime of an individual log file.
!           After this many minutes have elapsed, a new log file will
!           be created.  Set to zero to disable time-based creation of
!           new log files.
           This option can only be set at server start or in the
           <filename>postgresql.conf</filename> configuration file.
          </para>
***************
*** 1957,1967 ****
        <term><varname>log_rotation_size</varname> (<type>integer</type>)</term>
         <listitem>
          <para>
!       When <varname>redirect_stderr</> is enabled, this option
!       determines the maximum size of an individual log file.
!       After this many kilobytes have been emitted into a log file,
!       a new log file will be created.  Set to zero to disable size-based
!       creation of new log files.
           This option can only be set at server start or in the
           <filename>postgresql.conf</filename> configuration file.
          </para>
--- 1958,1968 ----
        <term><varname>log_rotation_size</varname> (<type>integer</type>)</term>
         <listitem>
          <para>
!           When <varname>redirect_stderr</> is enabled, this option
!           determines the maximum size of an individual log file.
!           After this many kilobytes have been emitted into a log file,
!           a new log file will be created.  Set to zero to disable size-based
!           creation of new log files.
           This option can only be set at server start or in the
           <filename>postgresql.conf</filename> configuration file.
          </para>
***************
*** 1981,1987 ****
            the default is <literal>LOCAL0</>. See also the
            documentation of your system's
            <application>syslog</application> daemon.
!       This option can only be set at server start.
          </para>
         </listitem>
       </varlistentry>
--- 1982,1988 ----
            the default is <literal>LOCAL0</>. See also the
            documentation of your system's
            <application>syslog</application> daemon.
!           This option can only be set at server start.
          </para>
         </listitem>
       </varlistentry>
***************
*** 1995,2001 ****
           <productname>PostgreSQL</productname> messages in
           <application>syslog</application> logs. The default is
           <literal>postgres</literal>.
!       This option can only be set at server start.
          </para>
         </listitem>
        </varlistentry>
--- 1996,2002 ----
           <productname>PostgreSQL</productname> messages in
           <application>syslog</application> logs. The default is
           <literal>postgres</literal>.
!           This option can only be set at server start.
          </para>
         </listitem>
        </varlistentry>
***************
*** 2107,2115 ****
          terminals are disassociated (same effect as
          <command>postmaster</>'s <option>-S</option> option).
          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
!     <varname>redirect_stderr</> is enabled, using this option
          is discouraged because it makes it impossible to see error messages.
         </para>
        </listitem>
--- 2108,2116 ----
          terminals are disassociated (same effect as
          <command>postmaster</>'s <option>-S</option> option).
          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
!         <varname>redirect_stderr</> is enabled, using this option
          is discouraged because it makes it impossible to see error messages.
         </para>
        </listitem>
***************
*** 2271,2365 ****
        <term><varname>log_line_prefix</varname> (<type>string</type>)</term>
        <listitem>
         <para>
!      This is a <function>printf</>-style string that is output at the
!      beginning of each log line. The default is an empty string.
!      Each recognized escape is replaced as outlined
!      below - anything else that looks like an escape is ignored. Other
!      characters are copied straight to the log line. Some escapes are
!      only recognised by session processes, and do not apply to
!      background processes such as the postmaster. <application>Syslog</>
           produces its own
!      timestamp and process ID information, so you probably do not want to
!      use those escapes if you are using <application>syslog</>.
!      This option can only be set at server start or in the
           <filename>postgresql.conf</filename> configuration file.

!      <informaltable>
!       <tgroup cols="3">
!        <thead>
!         <row>
!          <entry>Escape</entry>
!          <entry>Effect</entry>
!          <entry>Session only</entry>
!          </row>
!         </thead>
!        <tbody>
!         <row>
!          <entry><literal>%u</literal></entry>
!          <entry>User Name</entry>
!          <entry>Yes</entry>
!         </row>
!         <row>
!          <entry><literal>%d</literal></entry>
!          <entry>Database Name</entry>
!          <entry>Yes</entry>
!         </row>
!         <row>
!          <entry><literal>%r</literal></entry>
!          <entry>Remote Hostname or IP address, and Remote Port</entry>
!          <entry>Yes</entry>
!         </row>
!         <row>
!          <entry><literal>%p</literal></entry>
!          <entry>Process ID</entry>
!          <entry>No</entry>
!         </row>
!         <row>
!          <entry><literal>%t</literal></entry>
!          <entry>Timestamp</entry>
!          <entry>No</entry>
!         </row>
!         <row>
!          <entry><literal>%i</literal></entry>
!          <entry>Command Tag. This is the command which generated the log
!           line.</entry>
!          <entry>Yes</entry>
!         </row>
!         <row>
!          <entry><literal>%c</literal></entry>
!          <entry>Session ID. A unique identifier for each session.
!          It is 2 4-byte hexadecimal numbers (without leading zeros)
               separated by a dot. The numbers
!          are the Session Start Time and the Process ID, so this can also
!          be used as a space saving way of printing these items.</entry>
!          <entry>Yes</entry>
!         </row>
!         <row>
!          <entry><literal>%l</literal></entry>
!          <entry>Number of the log line for each process,
!           starting at 1</entry>
!          <entry>No</entry>
!         </row>
!         <row>
!          <entry><literal>%s</literal></entry>
!          <entry>Session Start Timestamp</entry>
!          <entry>Yes</entry>
!         </row>
!         <row>
!          <entry><literal>%x</literal></entry>
!          <entry>Does not produce any output, but tells non-session
!          processes to stop at this point in the string. Ignored by
!          session processes.</entry>
!          <entry>No</entry>
!         </row>
!         <row>
!          <entry><literal>%%</literal></entry>
!          <entry>Literal <literal>%</></entry>
!          <entry>No</entry>
!         </row>
!        </tbody>
!       </tgroup>
!      </informaltable>
         </para>
        </listitem>
       </varlistentry>
--- 2272,2366 ----
        <term><varname>log_line_prefix</varname> (<type>string</type>)</term>
        <listitem>
         <para>
!          This is a <function>printf</>-style string that is output at the
!          beginning of each log line. The default is an empty string.
!          Each recognized escape is replaced as outlined
!          below - anything else that looks like an escape is ignored. Other
!          characters are copied straight to the log line. Some escapes are
!          only recognised by session processes, and do not apply to
!          background processes such as the postmaster. <application>Syslog</>
           produces its own
!          timestamp and process ID information, so you probably do not want to
!          use those escapes if you are using <application>syslog</>.
!          This option can only be set at server start or in the
           <filename>postgresql.conf</filename> configuration file.

!          <informaltable>
!           <tgroup cols="3">
!            <thead>
!             <row>
!              <entry>Escape</entry>
!              <entry>Effect</entry>
!              <entry>Session only</entry>
!              </row>
!             </thead>
!            <tbody>
!             <row>
!              <entry><literal>%u</literal></entry>
!              <entry>User Name</entry>
!              <entry>Yes</entry>
!             </row>
!             <row>
!              <entry><literal>%d</literal></entry>
!              <entry>Database Name</entry>
!              <entry>Yes</entry>
!             </row>
!             <row>
!              <entry><literal>%r</literal></entry>
!              <entry>Remote Hostname or IP address, and Remote Port</entry>
!              <entry>Yes</entry>
!             </row>
!             <row>
!              <entry><literal>%p</literal></entry>
!              <entry>Process ID</entry>
!              <entry>No</entry>
!             </row>
!             <row>
!              <entry><literal>%t</literal></entry>
!              <entry>Timestamp</entry>
!              <entry>No</entry>
!             </row>
!             <row>
!              <entry><literal>%i</literal></entry>
!              <entry>Command Tag. This is the command which generated the log
!               line.</entry>
!              <entry>Yes</entry>
!             </row>
!             <row>
!              <entry><literal>%c</literal></entry>
!              <entry>Session ID. A unique identifier for each session.
!              It is 2 4-byte hexadecimal numbers (without leading zeros)
               separated by a dot. The numbers
!              are the Session Start Time and the Process ID, so this can also
!              be used as a space saving way of printing these items.</entry>
!              <entry>Yes</entry>
!             </row>
!             <row>
!              <entry><literal>%l</literal></entry>
!              <entry>Number of the log line for each process,
!               starting at 1</entry>
!              <entry>No</entry>
!             </row>
!             <row>
!              <entry><literal>%s</literal></entry>
!              <entry>Session Start Timestamp</entry>
!              <entry>Yes</entry>
!             </row>
!             <row>
!              <entry><literal>%x</literal></entry>
!              <entry>Does not produce any output, but tells non-session
!              processes to stop at this point in the string. Ignored by
!              session processes.</entry>
!              <entry>No</entry>
!             </row>
!             <row>
!              <entry><literal>%%</literal></entry>
!              <entry>Literal <literal>%</></entry>
!              <entry>No</entry>
!             </row>
!            </tbody>
!           </tgroup>
!          </informaltable>
         </para>
        </listitem>
       </varlistentry>
***************
*** 2861,2867 ****
         <para>
          The value for <varname>dynamic_library_path</varname> has to be a
          list of absolute directory paths separated by colons (or semi-colons
!     on Windows).  If a list element starts
          with the special string <literal>$libdir</literal>, the
          compiled-in <productname>PostgreSQL</productname> package
          library directory is substituted for <literal>$libdir</literal>. This
--- 2862,2868 ----
         <para>
          The value for <varname>dynamic_library_path</varname> has to be a
          list of absolute directory paths separated by colons (or semi-colons
!         on Windows).  If a list element starts
          with the special string <literal>$libdir</literal>, the
          compiled-in <productname>PostgreSQL</productname> package
          library directory is substituted for <literal>$libdir</literal>. This
***************
*** 3138,3145 ****
        <listitem>
         <para>
          Shows the locale in which sorting of textual data is done.
!     See <xref linkend="locale"> for more information.
!     The value is determined when the database cluster is initialized.
         </para>
        </listitem>
       </varlistentry>
--- 3139,3146 ----
        <listitem>
         <para>
          Shows the locale in which sorting of textual data is done.
!         See <xref linkend="locale"> for more information.
!         The value is determined when the database cluster is initialized.
         </para>
        </listitem>
       </varlistentry>
***************
*** 3149,3158 ****
        <listitem>
         <para>
          Shows the locale that determines character classifications.
!     See <xref linkend="locale"> for more information.
!     The value is determined when the database cluster is initialized.
!     Ordinarily this will be the same as <varname>lc_collate</varname>,
!     but for special applications it might be set differently.
         </para>
        </listitem>
       </varlistentry>
--- 3150,3159 ----
        <listitem>
         <para>
          Shows the locale that determines character classifications.
!         See <xref linkend="locale"> for more information.
!         The value is determined when the database cluster is initialized.
!         Ordinarily this will be the same as <varname>lc_collate</varname>,
!         but for special applications it might be set differently.
         </para>
        </listitem>
       </varlistentry>
***************
*** 3240,3246 ****
          variable is a variable not normally known
          to <productname>PostgreSQL</productname> proper but used by some
          add-on module.  Such variables must have names consisting of a class
!     name, a dot, and a variable name.  <varname>custom_variable_classes</>
          specifies all the class names in use in a particular installation.
          This option can only be set at server start or in the
          <filename>postgresql.conf</filename> configuration file.
--- 3241,3247 ----
          variable is a variable not normally known
          to <productname>PostgreSQL</productname> proper but used by some
          add-on module.  Such variables must have names consisting of a class
!         name, a dot, and a variable name.  <varname>custom_variable_classes</>
          specifies all the class names in use in a particular installation.
          This option can only be set at server start or in the
          <filename>postgresql.conf</filename> configuration file.
Index: doc/src/sgml/xfunc.sgml
===================================================================
RCS file: /Users/neilc/local/cvs/pgsql-server/doc/src/sgml/xfunc.sgml,v
retrieving revision 1.85
diff -c -r1.85 xfunc.sgml
*** doc/src/sgml/xfunc.sgml    30 Jul 2004 12:26:39 -0000    1.85
--- doc/src/sgml/xfunc.sgml    21 Aug 2004 12:51:52 -0000
***************
*** 1618,1634 ****
     </indexterm>

     <para>
!     If you are thinking about distributing your PostgreSQL extension
!     modules, setting up a portable build system for them can be fairly
!     difficult.  Therefore the PostgreSQL installation provides a build
      infrastructure for extensions, called <acronym>PGXS</acronym>, so
      that simple extension modules can be built simply against an
      already installed server.  Note that this infrastructure is not
      intended to be a universal build system framework that can be used
!     to build all software interfacing to PostgreSQL; it simply
!     automates common build rules for simple server extension modules.
!     For more complicated packages, you need to write your own build
!     system.
     </para>

     <para>
--- 1618,1635 ----
     </indexterm>

     <para>
!     If you are thinking about distributing your
!     <productname>PostgreSQL</> extension modules, setting up a
!     portable build system for them can be fairly difficult.  Therefore
!     the <productname>PostgreSQL</> installation provides a build
      infrastructure for extensions, called <acronym>PGXS</acronym>, so
      that simple extension modules can be built simply against an
      already installed server.  Note that this infrastructure is not
      intended to be a universal build system framework that can be used
!     to build all software interfacing to <productname>PostgreSQL</>;
!     it simply automates common build rules for simple server extension
!     modules.  For more complicated packages, you need to write your
!     own build system.
     </para>

     <para>
***************
*** 1807,1820 ****
      <title>Composite-Type Arguments in C-Language Functions</title>

      <para>
!      Composite types do not  have  a  fixed  layout  like  C
!      structures.   Instances of a composite type may contain
!      null fields.  In addition,  composite  types  that  are
!      part  of  an  inheritance  hierarchy may have different
!      fields than other members of the same inheritance hierarchy.
!      Therefore,  <productname>PostgreSQL</productname>  provides
!      a function interface for accessing fields of composite types
!      from C.
      </para>

      <para>
--- 1808,1820 ----
      <title>Composite-Type Arguments in C-Language Functions</title>

      <para>
!      Composite types do not have a fixed layout like C structures.
!      Instances of a composite type may contain null fields.  In
!      addition, composite types that are part of an inheritance
!      hierarchy may have different fields than other members of the
!      same inheritance hierarchy.  Therefore,
!      <productname>PostgreSQL</productname> provides a function
!      interface for accessing fields of composite types from C.
      </para>

      <para>
Index: doc/src/sgml/ref/alter_index.sgml
===================================================================
RCS file: /Users/neilc/local/cvs/pgsql-server/doc/src/sgml/ref/alter_index.sgml,v
retrieving revision 1.3
diff -c -r1.3 alter_index.sgml
*** doc/src/sgml/ref/alter_index.sgml    21 Aug 2004 16:16:04 -0000    1.3
--- doc/src/sgml/ref/alter_index.sgml    22 Aug 2004 21:13:23 -0000
***************
*** 167,173 ****
    <title>Compatibility</title>

    <para>
!     <literal>ALTER INDEX</> is a PostgreSQL extension.
    </para>
   </refsect1>
  </refentry>
--- 167,174 ----
    <title>Compatibility</title>

    <para>
!    <command>ALTER INDEX</> is a <productname>PostgreSQL</productname>
!    extension.
    </para>
   </refsect1>
  </refentry>
Index: doc/src/sgml/ref/alter_sequence.sgml
===================================================================
RCS file: /Users/neilc/local/cvs/pgsql-server/doc/src/sgml/ref/alter_sequence.sgml,v
retrieving revision 1.7
diff -c -r1.7 alter_sequence.sgml
*** doc/src/sgml/ref/alter_sequence.sgml    29 Nov 2003 19:51:38 -0000    1.7
--- doc/src/sgml/ref/alter_sequence.sgml    21 Aug 2004 20:54:48 -0000
***************
*** 14,20 ****
     ALTER SEQUENCE
    </refname>
    <refpurpose>
!    alter the definition of a sequence generator
    </refpurpose>
   </refnamediv>

--- 14,20 ----
     ALTER SEQUENCE
    </refname>
    <refpurpose>
!    change the definition of a sequence generator
    </refpurpose>
   </refnamediv>

Index: doc/src/sgml/ref/create_table_as.sgml
===================================================================
RCS file: /Users/neilc/local/cvs/pgsql-server/doc/src/sgml/ref/create_table_as.sgml,v
retrieving revision 1.22
diff -c -r1.22 create_table_as.sgml
*** doc/src/sgml/ref/create_table_as.sgml    4 Aug 2004 21:33:42 -0000    1.22
--- doc/src/sgml/ref/create_table_as.sgml    21 Aug 2004 20:55:17 -0000
***************
*** 11,17 ****

   <refnamediv>
    <refname>CREATE TABLE AS</refname>
!   <refpurpose>create a new table from the results of a query</refpurpose>
   </refnamediv>

   <indexterm zone="sql-createtableas">
--- 11,17 ----

   <refnamediv>
    <refname>CREATE TABLE AS</refname>
!   <refpurpose>define a new table from the results of a query</refpurpose>
   </refnamediv>

   <indexterm zone="sql-createtableas">
Index: doc/src/sgml/ref/create_tablespace.sgml
===================================================================
RCS file: /Users/neilc/local/cvs/pgsql-server/doc/src/sgml/ref/create_tablespace.sgml,v
retrieving revision 1.3
diff -c -r1.3 create_tablespace.sgml
*** doc/src/sgml/ref/create_tablespace.sgml    2 Aug 2004 04:25:37 -0000    1.3
--- doc/src/sgml/ref/create_tablespace.sgml    21 Aug 2004 19:57:35 -0000
***************
*** 34,41 ****
    </para>

    <para>
!    A tablespace allows superusers to define an alternative location on the
!    file system where the data files representing database objects
     (such as tables and indexes) may reside.
    </para>

--- 34,41 ----
    </para>

    <para>
!    A tablespace allows superusers to define an alternative location on
!    the file system where the data files containing database objects
     (such as tables and indexes) may reside.
    </para>

Index: doc/src/sgml/ref/psql-ref.sgml
===================================================================
RCS file: /Users/neilc/local/cvs/pgsql-server/doc/src/sgml/ref/psql-ref.sgml,v
retrieving revision 1.120
diff -c -r1.120 psql-ref.sgml
*** doc/src/sgml/ref/psql-ref.sgml    14 Aug 2004 23:49:07 -0000    1.120
--- doc/src/sgml/ref/psql-ref.sgml    21 Aug 2004 12:43:46 -0000
***************
*** 771,777 ****
          <listitem>
          <para>
          Shows the copyright and distribution terms of
!         <application>PostgreSQL</application>.
          </para>
          </listitem>
        </varlistentry>
--- 771,777 ----
          <listitem>
          <para>
          Shows the copyright and distribution terms of
!         <productname>PostgreSQL</productname>.
          </para>
          </listitem>
        </varlistentry>
Index: doc/src/sgml/ref/release_savepoint.sgml
===================================================================
RCS file: /Users/neilc/local/cvs/pgsql-server/doc/src/sgml/ref/release_savepoint.sgml,v
retrieving revision 1.1
diff -c -r1.1 release_savepoint.sgml
*** doc/src/sgml/ref/release_savepoint.sgml    12 Aug 2004 19:12:21 -0000    1.1
--- doc/src/sgml/ref/release_savepoint.sgml    21 Aug 2004 20:08:03 -0000
***************
*** 77,83 ****

    <para>
     It is not possible to release a savepoint when the transaction is in
!    aborted state.
    </para>

    <para>
--- 77,83 ----

    <para>
     It is not possible to release a savepoint when the transaction is in
!    an aborted state.
    </para>

    <para>
***************
*** 108,116 ****
    <title>Compatibility</title>

    <para>
!    The SQL2003 standard specifies that the keyword SAVEPOINT is mandatory.
!    <productname>PostgreSQL</productname> allows the SAVEPOINT keyword to be
!    omitted. Otherwise, this command is fully conforming.
    </para>
   </refsect1>

--- 108,118 ----
    <title>Compatibility</title>

    <para>
!    The SQL2003 standard specifies that the keyword
!    <literal>SAVEPOINT</literal> is mandatory.
!    <productname>PostgreSQL</productname> allows the
!    <literal>SAVEPOINT</literal> keyword to be omitted. Otherwise, this
!    command is fully conforming.
    </para>
   </refsect1>

Index: doc/src/sgml/ref/rollback_to.sgml
===================================================================
RCS file: /Users/neilc/local/cvs/pgsql-server/doc/src/sgml/ref/rollback_to.sgml,v
retrieving revision 1.2
diff -c -r1.2 rollback_to.sgml
*** doc/src/sgml/ref/rollback_to.sgml    12 Aug 2004 19:12:21 -0000    1.2
--- doc/src/sgml/ref/rollback_to.sgml    21 Aug 2004 20:54:02 -0000
***************
*** 128,140 ****
    <title>Compatibility</title>

    <para>
!    The SQL2003 standard specifies that the keyword SAVEPOINT is mandatory.
!    <productname>PostgreSQL</productname> and <productname>Oracle</productname>
!    allow the SAVEPOINT keyword to be omitted.  SQL2003 allows only
!    WORK, not TRANSACTION, as a noise word after ROLLBACK.  Also, SQL2003
!    has an optional clause AND [ NO ] CHAIN which is not currently supported
!    by <productname>PostgreSQL</productname>.  Otherwise, this command is
!    fully conforming.
    </para>
   </refsect1>

--- 128,142 ----
    <title>Compatibility</title>

    <para>
!    The SQL2003 standard specifies that the keyword
!    <literal>SAVEPOINT</> is mandatory.  <productname>PostgreSQL</> and
!    <productname>Oracle</> allow the <literal>SAVEPOINT</literal>
!    keyword to be omitted.  SQL2003 allows only <literal>WORK</>, not
!    <literal>TRANSACTION</>, as a noise word after
!    <literal>ROLLBACK</>.  Also, SQL2003 has an optional clause
!    <literal>AND [ NO ] CHAIN</> which is not currently supported by
!    <productname>PostgreSQL</>.  Otherwise, this command is fully
!    conforming.
    </para>
   </refsect1>

Index: doc/src/sgml/ref/select_into.sgml
===================================================================
RCS file: /Users/neilc/local/cvs/pgsql-server/doc/src/sgml/ref/select_into.sgml,v
retrieving revision 1.29
diff -c -r1.29 select_into.sgml
*** doc/src/sgml/ref/select_into.sgml    4 Aug 2004 21:33:42 -0000    1.29
--- doc/src/sgml/ref/select_into.sgml    21 Aug 2004 20:56:36 -0000
***************
*** 11,17 ****

   <refnamediv>
    <refname>SELECT INTO</refname>
!   <refpurpose>create a new table from the results of a query</refpurpose>
   </refnamediv>

   <indexterm zone="sql-selectinto">
--- 11,17 ----

   <refnamediv>
    <refname>SELECT INTO</refname>
!   <refpurpose>define a new table from the results of a query</refpurpose>
   </refnamediv>

   <indexterm zone="sql-selectinto">

Re: SGML cleanup

From
Neil Conway
Date:
Neil Conway wrote:
> This patch fixes various minor issues with the SGML docs:

Woops, I forgot we renamed default_use_oids to default_with_oids.
Updated patch attached.

-Neil

Index: doc/src/sgml/errcodes.sgml
===================================================================
RCS file: /Users/neilc/local/cvs/pgsql-server/doc/src/sgml/errcodes.sgml,v
retrieving revision 1.7
diff -c -r1.7 errcodes.sgml
*** doc/src/sgml/errcodes.sgml    31 Jul 2004 23:04:54 -0000    1.7
--- doc/src/sgml/errcodes.sgml    21 Aug 2004 12:49:31 -0000
***************
*** 1133,1139 ****

  <row>
  <entry>Class 58</entry>
! <entry>System Error (errors external to PostgreSQL itself)</entry>
  </row>

  <row>
--- 1133,1139 ----

  <row>
  <entry>Class 58</entry>
! <entry>System Error (errors external to <productname>PostgreSQL</> itself)</entry>
  </row>

  <row>
Index: doc/src/sgml/problems.sgml
===================================================================
RCS file: /Users/neilc/local/cvs/pgsql-server/doc/src/sgml/problems.sgml,v
retrieving revision 2.18
diff -c -r2.18 problems.sgml
*** doc/src/sgml/problems.sgml    9 Mar 2004 16:57:46 -0000    2.18
--- doc/src/sgml/problems.sgml    21 Aug 2004 12:47:10 -0000
***************
*** 11,18 ****
    <productname>PostgreSQL</productname> more reliable because even the utmost
    care cannot guarantee that every part of
    <productname>PostgreSQL</productname>
!   will work on every
!   platform under every circumstance.
   </para>

   <para>
--- 11,17 ----
    <productname>PostgreSQL</productname> more reliable because even the utmost
    care cannot guarantee that every part of
    <productname>PostgreSQL</productname>
!   will work on every platform under every circumstance.
   </para>

   <para>
***************
*** 241,249 ****
        in each new release, so it is quite possible that a bug you have
        encountered in an older release of <productname>PostgreSQL</>
        has already been fixed. We can only provide limited support for
!       sites using older releases of PostgreSQL; if you require more
!       than we can provide, consider acquiring a commercial support
!       contract.
       </para>
       <para>
       </para>
--- 240,248 ----
        in each new release, so it is quite possible that a bug you have
        encountered in an older release of <productname>PostgreSQL</>
        has already been fixed. We can only provide limited support for
!       sites using older releases of <productname>PostgreSQL</>; if you
!       require more than we can provide, consider acquiring a
!       commercial support contract.
       </para>
       <para>
       </para>
Index: doc/src/sgml/release.sgml
===================================================================
RCS file: /Users/neilc/local/cvs/pgsql-server/doc/src/sgml/release.sgml,v
retrieving revision 1.287
diff -c -r1.287 release.sgml
*** doc/src/sgml/release.sgml    21 Aug 2004 03:25:34 -0000    1.287
--- doc/src/sgml/release.sgml    22 Aug 2004 21:17:11 -0000
***************
*** 27,103 ****

        <listitem>
         <para>
!         This is the first PostgreSQL release to natively run on Microsoft
!         Windows as a server. It can run as a Windows service. This release
!     supports NT-based Windows releases like Win2000, XP, Win2003.
!         Older releases like Windows 95, 98, and ME are not supported because
!     these operating systems do not have the infrastructure to
!     support PostgreSQL.  A separate installer project has been created
!         to ease installation on Windows:
          <ulink url="http://pgfoundry.org/projects/pginstaller">
!     http://pgfoundry.org/projects/pginstaller</ulink>.
         </para>
         <para>
          Previous releases required the Unix emulation toolkit Cygwin for
!         Win32 server support. PostgreSQL has always supported clients on Win32.
         </para>
        </listitem>
       </varlistentry>

       <varlistentry>
        <term>
!        Savepoints Improve Transaction Control
        </term>

        <listitem>
         <para>
          Savepoints allow specific parts of a transaction to be aborted
          without affecting the remainder of the transaction. Prior
!         releases had no such capability; there was no way to recover from
!         a statement failure within a transaction except by aborting the whole
!     transaction. This feature is valuable
!         for application writers who require error recovery within a
!     complex transaction.
         </para>
        </listitem>
       </varlistentry>

       <varlistentry>
        <term>
!        Point-In-Time Recovery Increases Reliability
        </term>

        <listitem>
         <para>
!         Though PostgreSQL is very reliable, in previous releases there
!         was no way to recover from disk drive failure except to restore
!         from a previous backup or use a standby replication server.
!     Point-in-time recovery allows continuous backup of the server.
!     You can recover either to the point of failure or to some
!     transaction in the past.
         </para>
        </listitem>
       </varlistentry>

       <varlistentry>
        <term>
!        Tablespaces Simplify Disk Layout
        </term>

        <listitem>
         <para>
!         Tablespaces allow administrators
!         to select the file systems used for storage of databases,
!         schemas, tables, or indexes. This improves performance and
!         control over disk space usage. Prior releases used
!         <literal>initlocation</> and manual symlink management for such tasks.
         </para>
        </listitem>
       </varlistentry>

       <varlistentry>
        <term>
!        Improved Buffer Management, CHECKPOINT, VACUUM
        </term>

        <listitem>
--- 27,106 ----

        <listitem>
         <para>
!         This is the first <productname>PostgreSQL</productname>
!         release to natively run on Microsoft Windows as a server. It
!         can run as a Windows service. This release supports NT-based
!         Windows releases like Win2000, XP, Win2003.  Older releases
!         like Windows 95, 98, and ME are not supported because these
!         operating systems do not have the infrastructure to support
!         <productname>PostgreSQL</productname>.  A separate installer
!         project has been created to ease installation on Windows:
          <ulink url="http://pgfoundry.org/projects/pginstaller">
!         http://pgfoundry.org/projects/pginstaller</ulink>.
         </para>
         <para>
          Previous releases required the Unix emulation toolkit Cygwin for
!         Win32 server support. <productname>PostgreSQL</productname>
!         has always supported clients on Win32.
         </para>
        </listitem>
       </varlistentry>

       <varlistentry>
        <term>
!        Savepoints
        </term>

        <listitem>
         <para>
          Savepoints allow specific parts of a transaction to be aborted
          without affecting the remainder of the transaction. Prior
!         releases had no such capability; there was no way to recover
!         from a statement failure within a transaction except by
!         aborting the whole transaction. This feature is valuable for
!         application writers who require error recovery within a
!         complex transaction.
         </para>
        </listitem>
       </varlistentry>

       <varlistentry>
        <term>
!        Point-In-Time Recovery
        </term>

        <listitem>
         <para>
!         Though <productname>PostgreSQL</productname> is very reliable,
!         in previous releases there was no way to recover from disk
!         drive failure except to restore from a previous backup or use
!         a standby replication server.  Point-in-time recovery allows
!         continuous backup of the server.  You can recover either to
!         the point of failure or to some transaction in the past.
         </para>
        </listitem>
       </varlistentry>

       <varlistentry>
        <term>
!        Tablespaces
        </term>

        <listitem>
         <para>
!         Tablespaces allow administrators to select the file systems
!         used for storage of databases, schemas, tables, or
!         indexes. This improves performance and control over disk space
!         usage. Prior releases used <application>initlocation</> and
!         manual symlink management for such tasks.
         </para>
        </listitem>
       </varlistentry>

       <varlistentry>
        <term>
!        Improved Buffer Management, <command>CHECKPOINT</command>,
!        <command>VACUUM</command>
        </term>

        <listitem>
***************
*** 117,123 ****

        <listitem>
         <para>
!         A column's data type can now be changed with ALTER TABLE.
         </para>
        </listitem>
       </varlistentry>
--- 120,127 ----

        <listitem>
         <para>
!         A column's data type can now be changed with <command>ALTER
!         TABLE</command>.
         </para>
        </listitem>
       </varlistentry>
***************
*** 130,151 ****
        <listitem>
         <para>
          A new version of the <application>plperl</> server-side language now
!     supports a persistent shared storage area, triggers, returning records
!     and arrays of records, and SPI calls to access the database.
         </para>
        </listitem>
       </varlistentry>

       <varlistentry>
        <term>
!        COPY Handles Comma-Separated-Value Files
        </term>

        <listitem>
         <para>
!         COPY can now read and write comma-separated-value (CSV) files. It
!         has the flexibility to interpret non-standard quoting and
!         separation characters too.
         </para>
        </listitem>
       </varlistentry>
--- 134,155 ----
        <listitem>
         <para>
          A new version of the <application>plperl</> server-side language now
!         supports a persistent shared storage area, triggers, returning records
!         and arrays of records, and SPI calls to access the database.
         </para>
        </listitem>
       </varlistentry>

       <varlistentry>
        <term>
!         CSV support in <command>COPY</command>
        </term>

        <listitem>
         <para>
!         <command>COPY</command> can now read and write
!         comma-separated-value (CSV) files. It has the flexibility to
!         interpret non-standard quoting and separation characters too.
         </para>
        </listitem>
       </varlistentry>
***************
*** 181,189 ****
       <listitem>
        <para>
         Server configuration parameters <varname>SortMem</> and
!        <varname>VacuumMem</> have been renamed to <varname>work_mem</> and
!        <varname>maintenance_work_mem</> to better reflect their use. The
!        original names are still supported in SET and SHOW.
        </para>
       </listitem>

--- 185,194 ----
       <listitem>
        <para>
         Server configuration parameters <varname>SortMem</> and
!        <varname>VacuumMem</> have been renamed to <varname>work_mem</>
!        and <varname>maintenance_work_mem</> to better reflect their
!        use. The original names are still supported in
!        <command>SET</command> and <command>SHOW</command>.
        </para>
       </listitem>

***************
*** 246,253 ****

       <listitem>
        <para>
!        The server now warns of empty strings passed to oid/float4/float8
!        data types. In the next major release, doing this will generate an
         error.
        </para>
       </listitem>
--- 251,259 ----

       <listitem>
        <para>
!        The server now warns of empty strings passed to
!        <type>oid</type>/<type>float4</type>/<type>float8</type> data
!        types. In the next major release, doing this will generate an
         error.
        </para>
       </listitem>
***************
*** 292,299 ****

       <listitem>
        <para>
!        EXECUTE now returns a completion tag that matches the executed
!        statement.
        </para>
       </listitem>

--- 298,305 ----

       <listitem>
        <para>
!        <command>EXECUTE</command> now returns a completion tag that
!        matches the executed statement.
        </para>
       </listitem>

***************
*** 307,314 ****

       <listitem>
        <para>
!        Now that tablespaces have been implemented, initlocation has been
!        removed.
        </para>
       </listitem>

--- 313,320 ----

       <listitem>
        <para>
!        Now that tablespaces have been implemented,
!        <application>initlocation</> has been removed.
        </para>
       </listitem>

***************
*** 321,338 ****
         ignored as well as leading whitespace (which has always been ignored).
        </para>
       </listitem>
-
-      <listitem>
-       <para>
-        The 8.1 release will remove the function <literal>to_char(interval)
-        </literal>.
-       </para>
-      </listitem>
      </itemizedlist>
     </para>
    </sect2>

    <sect2>
     <title>Changes</title>

     <para>
--- 327,372 ----
         ignored as well as leading whitespace (which has always been ignored).
        </para>
       </listitem>
      </itemizedlist>
     </para>
    </sect2>

    <sect2>
+    <title>Deprecated Features</title>
+
+    <para>
+     Some aspects of <productname>PostgreSQL</productname>'s behavior
+     have been determined to be suboptimal. For the sake of backward
+     compatibility these have not been removed in 8.0, but they are
+     considered deprecated and will be removed in the next major
+     release.
+     </para>
+
+    <itemizedlist>
+     <listitem>
+      <para>
+       The 8.1 release will remove the function
+        <literal>to_char(interval)</literal>.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       By default, tables in <productname>PostgreSQL</productname> 8.0
+       and earlier are created with OIDs. In the next release, this
+       will <emphasis>not</emphasis> be the case: to create a table
+       that contains OIDs, the <literal>WITH OIDS</literal> clause must
+       be specified or the <varname>default_with_oids</varname>
+       configuration parameter must be enabled. Users are encouraged to
+       explicitely specify <literal>WITH OIDS</literal> if their tables
+       require OIDs for compatibility with future releases of
+       <productname>PostgreSQL</productname>.
+      </para>
+     </listitem>
+    </itemizedlist>
+   </sect2>
+
+   <sect2>
     <title>Changes</title>

     <para>
***************
*** 396,405 ****
        Add ability to prolong vacuum to reduce performance impact (Jan)
       </para>
       <para>
!       On busy systems, VACUUM performs many I/O requests which can hurt
!       performance for other users. This release allows you to slow down
!       VACUUM to reduce its impact on other users, though this increases the
!       total duration of VACUUM.
       </para>
      </listitem>

--- 430,440 ----
        Add ability to prolong vacuum to reduce performance impact (Jan)
       </para>
       <para>
!       On busy systems, <command>VACUUM</command> performs many I/O
!       requests which can hurt performance for other users. This
!       release allows you to slow down <command>VACUUM</command> to
!       reduce its impact on other users, though this increases the
!       total duration of <command>VACUUM</command>.
       </para>
      </listitem>

***************
*** 469,475 ****

      <listitem>
       <para>
!       Add type-specific ANALYZE statistics capability (Mark Cave-Ayland)
       </para>
       <para>
        This feature allows more flexibility in generating statistics
--- 504,511 ----

      <listitem>
       <para>
!       Add type-specific <command>ANALYZE</command> statistics
!       capability (Mark Cave-Ayland)
       </para>
       <para>
        This feature allows more flexibility in generating statistics
***************
*** 479,485 ****

      <listitem>
       <para>
!       Allow collection of ANALYZE statistics for expression indexes (Tom)
       </para>
       <para>
        Expression indexes (also called functional indexes) allow users to
--- 515,522 ----

      <listitem>
       <para>
!       Allow collection of <command>ANALYZE</command> statistics for
!       expression indexes (Tom)
       </para>
       <para>
        Expression indexes (also called functional indexes) allow users to
***************
*** 493,499 ****

      <listitem>
       <para>
!       New two-stage sampling method for ANALYZE (Manfred Koizar)
       </para>
       <para>
        This gives better statistics for asymmetric data distributions.
--- 530,537 ----

      <listitem>
       <para>
!       New two-stage sampling method for <command>ANALYZE</command>
!       (Manfred Koizar)
       </para>
       <para>
        This gives better statistics for asymmetric data distributions.
***************
*** 502,512 ****

      <listitem>
       <para>
!       Speed up TRUNCATE (Tom)
       </para>
       <para>
        This buys back some of the performance loss observed in 7.4, while still
!       keeping TRUNCATE transaction-safe.
       </para>
      </listitem>

--- 540,550 ----

      <listitem>
       <para>
!       Speed up <command>TRUNCATE</command> (Tom)
       </para>
       <para>
        This buys back some of the performance loss observed in 7.4, while still
!       keeping <command>TRUNCATE</command> transaction-safe.
       </para>
      </listitem>

***************
*** 671,693 ****

      <listitem>
       <para>
!       Allow DECLARE CURSOR to take parameters (Oliver Jowett)
       </para>
       <para>
!       It is now useful to issue DECLARE CURSOR in a Parse message with
!       parameters.  The parameter values sent at Bind time will be substituted
!       into the execution of the cursor's query.
       </para>
      </listitem>

      <listitem>
       <para>
!       Fix hash joins and aggregates of INET and CIDR data types (Tom)
       </para>
       <para>
!       Release 7.4 handled hashing of mixed INET and CIDR values incorrectly.
!       (This bug did not exist in prior releases because they wouldn't try
!       to hash either datatype.)
       </para>
      </listitem>

--- 709,735 ----

      <listitem>
       <para>
!       Allow <command>DECLARE CURSOR</command> to take parameters
!       (Oliver Jowett)
       </para>
       <para>
!       It is now useful to issue <command>DECLARE CURSOR</command> in a
!       Parse message with parameters.  The parameter values sent at
!       Bind time will be substituted into the execution of the cursor's
!       query.
       </para>
      </listitem>

      <listitem>
       <para>
!       Fix hash joins and aggregates of <type>inet</type> and
!       <type>cidr</type> data types (Tom)
       </para>
       <para>
!       Release 7.4 handled hashing of mixed <type>inet</type> and
!       <type>cidr</type> values incorrectly.  (This bug did not exist
!       in prior releases because they wouldn't try to hash either
!       datatype.)
       </para>
      </listitem>

***************
*** 719,726 ****

      <listitem>
       <para>
!       Allow BEGIN WORK to specify transaction isolation levels like START
!       TRANSACTION (Bruce)
       </para>
      </listitem>

--- 761,769 ----

      <listitem>
       <para>
!       Allow <command>BEGIN WORK</command> to specify transaction
!       isolation levels like <command>START TRANSACTION</command> does
!       (Bruce)
       </para>
      </listitem>

***************
*** 824,835 ****

      <listitem>
       <para>
!       Change EXECUTE to return a completion tag matching the executed statement
!       (Kris Jurka)
       </para>
       <para>
!       Previous releases return an EXECUTE tag for any EXECUTE call. In
!       this release, the tag returned will reflect the command executed.
       </para>
      </listitem>

--- 867,879 ----

      <listitem>
       <para>
!       Change <command>EXECUTE</command> to return a completion tag
!       matching the executed statement (Kris Jurka)
       </para>
       <para>
!       Previous releases return an <command>EXECUTE</command> tag for
!       any <command>EXECUTE</command> call. In this release, the tag
!       returned will reflect the command executed.
       </para>
      </listitem>

***************
*** 864,877 ****
        control whether tables are created with OIDs by default (Neil)
       </para>
       <para>
!       This allows administrators to default all CREATE TABLE commands to
!       create tables without OID columns.
       </para>
      </listitem>

      <listitem>
       <para>
!       Add WITH / WITHOUT OIDS clause to CREATE TABLE AS (Neil)
       </para>
      </listitem>

--- 908,922 ----
        control whether tables are created with OIDs by default (Neil)
       </para>
       <para>
!       This allows administrators to default all <command>CREATE
!       TABLE</command> commands to create tables without OID columns.
       </para>
      </listitem>

      <listitem>
       <para>
!       Add WITH / WITHOUT OIDS clause to <command>CREATE TABLE
!       AS</command> (Neil)
       </para>
      </listitem>

***************
*** 911,917 ****

      <listitem>
       <para>
!       Allow multiple ALTER actions in a single ALTER TABLE command (Rod)
       </para>
       <para>
        This is particularly useful for ALTER commands that rewrite the
--- 956,963 ----

      <listitem>
       <para>
!       Allow multiple ALTER actions in a single <command>ALTER
!       TABLE</command> command (Rod)
       </para>
       <para>
        This is particularly useful for ALTER commands that rewrite the
***************
*** 923,929 ****

      <listitem>
       <para>
!       Allow ALTER TABLE to add SERIAL columns (Tom)
       </para>
       <para>
        This is related to the new capability of adding defaults for new
--- 969,976 ----

      <listitem>
       <para>
!       Allow <command>ALTER TABLE</command> to add <type>serial</type>
!       columns (Tom)
       </para>
       <para>
        This is related to the new capability of adding defaults for new
***************
*** 996,1008 ****

      <listitem>
       <para>
!       Allow CREATE SCHEMA to create triggers, indexes, and sequences (Neil)
       </para>
      </listitem>

      <listitem>
       <para>
!       Add ALSO keyword to CREATE RULE (Fabien Coelho)
       </para>
       <para>
        This allows ALSO to be added to rule creation to contrast it with
--- 1043,1057 ----

      <listitem>
       <para>
!       Allow <command>CREATE SCHEMA</command> to create triggers,
!       indexes, and sequences (Neil)
       </para>
      </listitem>

      <listitem>
       <para>
!       Add ALSO keyword to <command>CREATE RULE</command> (Fabien
!       Coelho)
       </para>
       <para>
        This allows ALSO to be added to rule creation to contrast it with
***************
*** 1012,1034 ****

      <listitem>
       <para>
!       Add NOWAIT option to LOCK command (Tatsuo)
       </para>
       <para>
!       This allows the LOCK command to fail if it would have to wait for
!       the requested lock.
       </para>
      </listitem>

      <listitem>
       <para>
!       Allow COPY to read and write comma-separated-value (CSV) files (Andrew, Bruce)
       </para>
      </listitem>

      <listitem>
       <para>
!       Generate error if the COPY delimiter and NULL string conflict (Bruce)
       </para>
      </listitem>

--- 1061,1085 ----

      <listitem>
       <para>
!       Add NOWAIT option to <command>LOCK</command> (Tatsuo)
       </para>
       <para>
!       This allows the <command>LOCK</command> command to fail if it
!       would have to wait for the requested lock.
       </para>
      </listitem>

      <listitem>
       <para>
!       Allow <command>COPY</command> to read and write
!       comma-separated-value (CSV) files (Andrew, Bruce)
       </para>
      </listitem>

      <listitem>
       <para>
!       Generate error if the <command>COPY</command> delimiter and NULL
!       string conflict (Bruce)
       </para>
      </listitem>

***************
*** 1040,1046 ****

      <listitem>
       <para>
!       Avoid locking conflict between CREATE INDEX and CHECKPOINT (Tom)
       </para>
       <para>
        In 7.3 and 7.4, a long-running btree index build could block concurrent
--- 1091,1098 ----

      <listitem>
       <para>
!       Avoid locking conflict between <command>CREATE INDEX</command>
!       and <command>CHECKPOINT</command> (Tom)
       </para>
       <para>
        In 7.3 and 7.4, a long-running btree index build could block concurrent
***************
*** 1051,1064 ****

      <listitem>
       <para>
!       Database-wide ANALYZE does not hold locks across tables (Tom)
       </para>
       <para>
!       This reduces the potential for deadlocks against other backends that
!       want exclusive locks on tables.  To get the benefit of this change,
!       do not execute database-wide ANALYZE inside a transaction block
!       (BEGIN block); it must be able to commit and start a new transaction
!       for each table.
       </para>
      </listitem>

--- 1103,1118 ----

      <listitem>
       <para>
!       Database-wide <command>ANALYZE</command> does not hold locks
!       across tables (Tom)
       </para>
       <para>
!       This reduces the potential for deadlocks against other backends
!       that want exclusive locks on tables.  To get the benefit of this
!       change, do not execute database-wide <command>ANALYZE</command>
!       inside a transaction block (<command>BEGIN</command> block); it
!       must be able to commit and start a new transaction for each
!       table.
       </para>
      </listitem>

***************
*** 1067,1077 ****
        Erase MD5 user passwords when a user is renamed (Bruce)
       </para>
       <para>
!       PostgreSQL uses the user name as salt when encrypting passwords
!       via MD5. When a user name is changed, their salt no longer matches
!       the stored MD5 password, so the stored password becomes useless.
!       In this release a notice is generated and the password
!       is cleared.  A new password must then be assigned.
       </para>
      </listitem>

--- 1121,1132 ----
        Erase MD5 user passwords when a user is renamed (Bruce)
       </para>
       <para>
!       <productname>PostgreSQL</productname> uses the user name as salt
!       when encrypting passwords via MD5. When a user name is changed,
!       their salt no longer matches the stored MD5 password, so the
!       stored password becomes useless.  In this release a notice is
!       generated and the password is cleared.  A new password must then
!       be assigned.
       </para>
      </listitem>

***************
*** 1127,1133 ****
        Reject non-rectangular array literals as erroneous (Joe)
       </para>
       <para>
!       Formerly, array_in would silently build a surprising result.
       </para>
      </listitem>

--- 1182,1189 ----
        Reject non-rectangular array literals as erroneous (Joe)
       </para>
       <para>
!       Formerly, <literal>array_in</literal> would silently build a
!       surprising result.
       </para>
      </listitem>

***************
*** 1174,1184 ****

      <listitem>
       <para>
!       Change factorial function to return NUMERIC (Gavin)
       </para>
       <para>
!       Returning NUMERIC allows the factorial function to work for a wider
!       range of input values.
       </para>
      </listitem>

--- 1230,1240 ----

      <listitem>
       <para>
!       Change factorial function to return <type>numeric</type> (Gavin)
       </para>
       <para>
!       Returning <type>numeric</type> allows the factorial function to
!       work for a wider range of input values.
       </para>
      </listitem>

***************
*** 1217,1223 ****

      <listitem>
       <para>
!       Better support for IEEE Infinity and NaN values in float4, float8 (Neil)
       </para>
       <para>
        These should now work on all platforms that support IEEE-compliant
--- 1273,1280 ----

      <listitem>
       <para>
!       Better support for IEEE Infinity and NaN values in
!       <type>float4</type>, <type>float8</type> (Neil)
       </para>
       <para>
        These should now work on all platforms that support IEEE-compliant
***************
*** 1448,1454 ****

      <listitem>
       <para>
!       Make psql \copy match COPY command syntax fully (Tom)
       </para>
      </listitem>

--- 1505,1512 ----

      <listitem>
       <para>
!       Make psql \copy match <command>COPY</command> command syntax
!       fully (Tom)
       </para>
      </listitem>

***************
*** 1460,1466 ****

      <listitem>
       <para>
!       Add CLUSTER information to psql \d display (Bruce)
       </para>
      </listitem>

--- 1518,1525 ----

      <listitem>
       <para>
!       Add <command>CLUSTER</command> information to psql \d display
!       (Bruce)
       </para>
      </listitem>

***************
*** 1478,1484 ****

      <listitem>
       <para>
!       Add global psql config file, psqlrc.sample (Bruce)
       </para>
       <para>
        This allows a central file where global psql startup commands can
--- 1537,1544 ----

      <listitem>
       <para>
!       Add global psql config file, <filename>psqlrc.sample</filename>
!       (Bruce)
       </para>
       <para>
        This allows a central file where global psql startup commands can
***************
*** 1594,1601 ****

      <listitem>
       <para>
!       Allow PQoidValue(), PQcmdTuples(), and PQoidStatus() to work
!       on EXECUTE commands (Neil)
       </para>
      </listitem>

--- 1654,1661 ----

      <listitem>
       <para>
!       Allow PQoidValue(), PQcmdTuples(), and PQoidStatus() to work on
!       <command>EXECUTE</command> commands (Neil)
       </para>
      </listitem>

***************
*** 1665,1674 ****
        New "PostgreSQL" CVS tag (Marc)
       </para>
       <para>
!       This was done to make it easier for organizations to manage their own
!       copies of the PostgreSQL CVS repository.  File version stamps from the
!       master repository will not get munged by checking into or out of
!       a copied repository.
       </para>
      </listitem>

--- 1725,1735 ----
        New "PostgreSQL" CVS tag (Marc)
       </para>
       <para>
!       This was done to make it easier for organizations to manage
!       their own copies of the <productname>PostgreSQL</productname>
!       CVS repository.  File version stamps from the master repository
!       will not get munged by checking into or out of a copied
!       repository.
       </para>
      </listitem>

***************
*** 1880,1886 ****

      <listitem>
       <para>
!       New /contrib/trgm, trigram matching for PostgreSQL (Teodor)
       </para>
      </listitem>

--- 1941,1948 ----

      <listitem>
       <para>
!       New /contrib/trgm, trigram matching for
!       <productname>PostgreSQL</productname> (Teodor)
       </para>
      </listitem>

***************
*** 2037,2043 ****
  <para>
    This fixes a difficult-to-exploit security hole.
  </para></listitem>
! <listitem><para>Avoid locking conflict between ANALYZE and LISTEN/NOTIFY</para></listitem>
  <listitem><para>Numerous translation updates (various contributors)</para></listitem>
  </itemizedlist>

--- 2099,2105 ----
  <para>
    This fixes a difficult-to-exploit security hole.
  </para></listitem>
! <listitem><para>Avoid locking conflict between <command>ANALYZE</command> and
<command>LISTEN</command>/<command>NOTIFY</command></para></listitem>
  <listitem><para>Numerous translation updates (various contributors)</para></listitem>
  </itemizedlist>

Index: doc/src/sgml/runtime.sgml
===================================================================
RCS file: /Users/neilc/local/cvs/pgsql-server/doc/src/sgml/runtime.sgml,v
retrieving revision 1.278
diff -c -r1.278 runtime.sgml
*** doc/src/sgml/runtime.sgml    16 Aug 2004 02:12:29 -0000    1.278
--- doc/src/sgml/runtime.sgml    22 Aug 2004 05:26:00 -0000
***************
*** 1206,1222 ****
         <listitem>
          <para>
           Specifies the delay between activity rounds for the
!          background writer.  In each round the writer issues writes for some
!          number of dirty buffers (controllable by the following parameters).
!          The selected buffers will always be the
!          least recently used ones among the currently dirty buffers.
!          It then sleeps for <varname>bgwriter_delay</varname> milliseconds,
!          and repeats.
!          Note that on many systems, the effective resolution
!          of sleep delays is 10 milliseconds; setting
!          <varname>bgwriter_delay</varname> to a value that is
!          not a multiple of 10 may have the same results as setting it
!          to the next higher multiple of 10.
           This option can only be set at server start or in the
           <filename>postgresql.conf</filename> file.
          </para>
--- 1206,1221 ----
         <listitem>
          <para>
           Specifies the delay between activity rounds for the
!          background writer.  In each round the writer issues writes
!          for some number of dirty buffers (controllable by the
!          following parameters).  The selected buffers will always be
!          the least recently used ones among the currently dirty
!          buffers.  It then sleeps for <varname>bgwriter_delay</>
!          milliseconds, and repeats.  The default value is 200. Note
!          that on many systems, the effective resolution of sleep
!          delays is 10 milliseconds; setting <varname>bgwriter_delay</>
!          to a value that is not a multiple of 10 may have the same
!          results as setting it to the next higher multiple of 10.
           This option can only be set at server start or in the
           <filename>postgresql.conf</filename> file.
          </para>
***************
*** 1227,1236 ****
         <term><varname>bgwriter_percent</varname> (<type>integer</type>)</term>
         <listitem>
          <para>
!          In each round, no more than this percentage of the currently dirty
!          buffers will be written (rounding up any fraction to the next whole
!          number of buffers).
!          This option can only be set at server start or in the
           <filename>postgresql.conf</filename> file.
          </para>
         </listitem>
--- 1226,1235 ----
         <term><varname>bgwriter_percent</varname> (<type>integer</type>)</term>
         <listitem>
          <para>
!          In each round, no more than this percentage of the currently
!          dirty buffers will be written (rounding up any fraction to
!          the next whole number of buffers).  The default value is
!          1. This option can only be set at server start or in the
           <filename>postgresql.conf</filename> file.
          </para>
         </listitem>
***************
*** 1240,1247 ****
         <term><varname>bgwriter_maxpages</varname> (<type>integer</type>)</term>
         <listitem>
          <para>
!          In each round, no more than this many dirty buffers will be written.
!          This option can only be set at server start or in the
           <filename>postgresql.conf</filename> file.
          </para>
         </listitem>
--- 1239,1247 ----
         <term><varname>bgwriter_maxpages</varname> (<type>integer</type>)</term>
         <listitem>
          <para>
!          In each round, no more than this many dirty buffers will be
!          written. The default value is 100. This option can only be
!          set at server start or in the
           <filename>postgresql.conf</filename> file.
          </para>
         </listitem>
***************
*** 1250,1258 ****

       <para>
        Smaller values of <varname>bgwriter_percent</varname> and
!       <varname>bgwriter_maxpages</varname> reduce the extra I/O load caused by
!       the background writer, but leave more work to be done at checkpoint
!       time.  To reduce load spikes at checkpoints, increase the values.
       </para>
      </sect3>

--- 1250,1259 ----

       <para>
        Smaller values of <varname>bgwriter_percent</varname> and
!       <varname>bgwriter_maxpages</varname> reduce the extra I/O load
!       caused by the background writer, but leave more work to be done
!       at checkpoint time.  To reduce load spikes at checkpoints,
!       increase the values.
       </para>
      </sect3>

***************
*** 1448,1454 ****
         </para>
         <para>
          It is important for the command to return a zero exit status only if
!     it succeeds.  Examples:
  <programlisting>
  archive_command = 'cp "%p" /mnt/server/archivedir/"%f"'
  archive_command = 'copy "%p" /mnt/server/archivedir/"%f"'  # Win32
--- 1449,1455 ----
         </para>
         <para>
          It is important for the command to return a zero exit status only if
!         it succeeds.  Examples:
  <programlisting>
  archive_command = 'cp "%p" /mnt/server/archivedir/"%f"'
  archive_command = 'copy "%p" /mnt/server/archivedir/"%f"'  # Win32
***************
*** 1880,1893 ****
        <term><varname>log_destination</varname> (<type>string</type>)</term>
        <listitem>
         <para>
!     <productname>PostgreSQL</productname> supports several methods
!      for logging server messages, including
!      <systemitem>stderr</systemitem> and
!      <systemitem>syslog</systemitem>. On Windows,
!      <systemitem>eventlog</systemitem> is also supported. Set this
!      option to a list of desired log destinations separated by
!      commas. The default is to log to <systemitem>stderr</systemitem>
!      only.
           This option can only be set at server start or in the
           <filename>postgresql.conf</filename> configuration file.
         </para>
--- 1881,1894 ----
        <term><varname>log_destination</varname> (<type>string</type>)</term>
        <listitem>
         <para>
!         <productname>PostgreSQL</productname> supports several methods
!          for logging server messages, including
!          <systemitem>stderr</systemitem> and
!          <systemitem>syslog</systemitem>. On Windows,
!          <systemitem>eventlog</systemitem> is also supported. Set this
!          option to a list of desired log destinations separated by
!          commas. The default is to log to <systemitem>stderr</systemitem>
!          only.
           This option can only be set at server start or in the
           <filename>postgresql.conf</filename> configuration file.
         </para>
***************
*** 1898,1911 ****
        <term><varname>redirect_stderr</varname> (<type>boolean</type>)</term>
         <listitem>
          <para>
!       This option allows messages sent to <application>stderr</> to be
!       captured and redirected into log files.
!       This option, in combination with logging to <application>stderr</>,
!       is often more useful than
!       logging to <application>syslog</>, since some types of messages
!       may not appear in <application>syslog</> output (a common example
!       is dynamic-linker failure messages).
!       This option can only be set at server start.
          </para>
         </listitem>
       </varlistentry>
--- 1899,1912 ----
        <term><varname>redirect_stderr</varname> (<type>boolean</type>)</term>
         <listitem>
          <para>
!           This option allows messages sent to <application>stderr</> to be
!           captured and redirected into log files.
!           This option, in combination with logging to <application>stderr</>,
!           is often more useful than
!           logging to <application>syslog</>, since some types of messages
!           may not appear in <application>syslog</> output (a common example
!           is dynamic-linker failure messages).
!           This option can only be set at server start.
          </para>
         </listitem>
       </varlistentry>
***************
*** 1914,1923 ****
        <term><varname>log_directory</varname> (<type>string</type>)</term>
         <listitem>
          <para>
!       When <varname>redirect_stderr</> is enabled, this option
            determines the directory in which log files will be created.
!       It may be specified as an absolute path, or relative to the
!       cluster data directory.
           This option can only be set at server start or in the
           <filename>postgresql.conf</filename> configuration file.
          </para>
--- 1915,1924 ----
        <term><varname>log_directory</varname> (<type>string</type>)</term>
         <listitem>
          <para>
!           When <varname>redirect_stderr</> is enabled, this option
            determines the directory in which log files will be created.
!           It may be specified as an absolute path, or relative to the
!           cluster data directory.
           This option can only be set at server start or in the
           <filename>postgresql.conf</filename> configuration file.
          </para>
***************
*** 1928,1937 ****
        <term><varname>log_filename_prefix</varname> (<type>string</type>)</term>
         <listitem>
          <para>
!       When <varname>redirect_stderr</> is enabled, this option
            sets the prefix of the file names of the created log files.
!       The postmaster PID and the current time are appended to this
!       prefix to form an exact log file name.
           This option can only be set at server start or in the
           <filename>postgresql.conf</filename> configuration file.
          </para>
--- 1929,1938 ----
        <term><varname>log_filename_prefix</varname> (<type>string</type>)</term>
         <listitem>
          <para>
!           When <varname>redirect_stderr</> is enabled, this option
            sets the prefix of the file names of the created log files.
!           The postmaster PID and the current time are appended to this
!           prefix to form an exact log file name.
           This option can only be set at server start or in the
           <filename>postgresql.conf</filename> configuration file.
          </para>
***************
*** 1942,1952 ****
        <term><varname>log_rotation_age</varname> (<type>integer</type>)</term>
         <listitem>
          <para>
!       When <varname>redirect_stderr</> is enabled, this option
!       determines the maximum lifetime of an individual log file.
!       After this many minutes have elapsed, a new log file will
!       be created.  Set to zero to disable time-based creation of
!       new log files.
           This option can only be set at server start or in the
           <filename>postgresql.conf</filename> configuration file.
          </para>
--- 1943,1953 ----
        <term><varname>log_rotation_age</varname> (<type>integer</type>)</term>
         <listitem>
          <para>
!           When <varname>redirect_stderr</> is enabled, this option
!           determines the maximum lifetime of an individual log file.
!           After this many minutes have elapsed, a new log file will
!           be created.  Set to zero to disable time-based creation of
!           new log files.
           This option can only be set at server start or in the
           <filename>postgresql.conf</filename> configuration file.
          </para>
***************
*** 1957,1967 ****
        <term><varname>log_rotation_size</varname> (<type>integer</type>)</term>
         <listitem>
          <para>
!       When <varname>redirect_stderr</> is enabled, this option
!       determines the maximum size of an individual log file.
!       After this many kilobytes have been emitted into a log file,
!       a new log file will be created.  Set to zero to disable size-based
!       creation of new log files.
           This option can only be set at server start or in the
           <filename>postgresql.conf</filename> configuration file.
          </para>
--- 1958,1968 ----
        <term><varname>log_rotation_size</varname> (<type>integer</type>)</term>
         <listitem>
          <para>
!           When <varname>redirect_stderr</> is enabled, this option
!           determines the maximum size of an individual log file.
!           After this many kilobytes have been emitted into a log file,
!           a new log file will be created.  Set to zero to disable size-based
!           creation of new log files.
           This option can only be set at server start or in the
           <filename>postgresql.conf</filename> configuration file.
          </para>
***************
*** 1981,1987 ****
            the default is <literal>LOCAL0</>. See also the
            documentation of your system's
            <application>syslog</application> daemon.
!       This option can only be set at server start.
          </para>
         </listitem>
       </varlistentry>
--- 1982,1988 ----
            the default is <literal>LOCAL0</>. See also the
            documentation of your system's
            <application>syslog</application> daemon.
!           This option can only be set at server start.
          </para>
         </listitem>
       </varlistentry>
***************
*** 1995,2001 ****
           <productname>PostgreSQL</productname> messages in
           <application>syslog</application> logs. The default is
           <literal>postgres</literal>.
!       This option can only be set at server start.
          </para>
         </listitem>
        </varlistentry>
--- 1996,2002 ----
           <productname>PostgreSQL</productname> messages in
           <application>syslog</application> logs. The default is
           <literal>postgres</literal>.
!           This option can only be set at server start.
          </para>
         </listitem>
        </varlistentry>
***************
*** 2107,2115 ****
          terminals are disassociated (same effect as
          <command>postmaster</>'s <option>-S</option> option).
          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
!     <varname>redirect_stderr</> is enabled, using this option
          is discouraged because it makes it impossible to see error messages.
         </para>
        </listitem>
--- 2108,2116 ----
          terminals are disassociated (same effect as
          <command>postmaster</>'s <option>-S</option> option).
          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
!         <varname>redirect_stderr</> is enabled, using this option
          is discouraged because it makes it impossible to see error messages.
         </para>
        </listitem>
***************
*** 2271,2365 ****
        <term><varname>log_line_prefix</varname> (<type>string</type>)</term>
        <listitem>
         <para>
!      This is a <function>printf</>-style string that is output at the
!      beginning of each log line. The default is an empty string.
!      Each recognized escape is replaced as outlined
!      below - anything else that looks like an escape is ignored. Other
!      characters are copied straight to the log line. Some escapes are
!      only recognised by session processes, and do not apply to
!      background processes such as the postmaster. <application>Syslog</>
           produces its own
!      timestamp and process ID information, so you probably do not want to
!      use those escapes if you are using <application>syslog</>.
!      This option can only be set at server start or in the
           <filename>postgresql.conf</filename> configuration file.

!      <informaltable>
!       <tgroup cols="3">
!        <thead>
!         <row>
!          <entry>Escape</entry>
!          <entry>Effect</entry>
!          <entry>Session only</entry>
!          </row>
!         </thead>
!        <tbody>
!         <row>
!          <entry><literal>%u</literal></entry>
!          <entry>User Name</entry>
!          <entry>Yes</entry>
!         </row>
!         <row>
!          <entry><literal>%d</literal></entry>
!          <entry>Database Name</entry>
!          <entry>Yes</entry>
!         </row>
!         <row>
!          <entry><literal>%r</literal></entry>
!          <entry>Remote Hostname or IP address, and Remote Port</entry>
!          <entry>Yes</entry>
!         </row>
!         <row>
!          <entry><literal>%p</literal></entry>
!          <entry>Process ID</entry>
!          <entry>No</entry>
!         </row>
!         <row>
!          <entry><literal>%t</literal></entry>
!          <entry>Timestamp</entry>
!          <entry>No</entry>
!         </row>
!         <row>
!          <entry><literal>%i</literal></entry>
!          <entry>Command Tag. This is the command which generated the log
!           line.</entry>
!          <entry>Yes</entry>
!         </row>
!         <row>
!          <entry><literal>%c</literal></entry>
!          <entry>Session ID. A unique identifier for each session.
!          It is 2 4-byte hexadecimal numbers (without leading zeros)
               separated by a dot. The numbers
!          are the Session Start Time and the Process ID, so this can also
!          be used as a space saving way of printing these items.</entry>
!          <entry>Yes</entry>
!         </row>
!         <row>
!          <entry><literal>%l</literal></entry>
!          <entry>Number of the log line for each process,
!           starting at 1</entry>
!          <entry>No</entry>
!         </row>
!         <row>
!          <entry><literal>%s</literal></entry>
!          <entry>Session Start Timestamp</entry>
!          <entry>Yes</entry>
!         </row>
!         <row>
!          <entry><literal>%x</literal></entry>
!          <entry>Does not produce any output, but tells non-session
!          processes to stop at this point in the string. Ignored by
!          session processes.</entry>
!          <entry>No</entry>
!         </row>
!         <row>
!          <entry><literal>%%</literal></entry>
!          <entry>Literal <literal>%</></entry>
!          <entry>No</entry>
!         </row>
!        </tbody>
!       </tgroup>
!      </informaltable>
         </para>
        </listitem>
       </varlistentry>
--- 2272,2366 ----
        <term><varname>log_line_prefix</varname> (<type>string</type>)</term>
        <listitem>
         <para>
!          This is a <function>printf</>-style string that is output at the
!          beginning of each log line. The default is an empty string.
!          Each recognized escape is replaced as outlined
!          below - anything else that looks like an escape is ignored. Other
!          characters are copied straight to the log line. Some escapes are
!          only recognised by session processes, and do not apply to
!          background processes such as the postmaster. <application>Syslog</>
           produces its own
!          timestamp and process ID information, so you probably do not want to
!          use those escapes if you are using <application>syslog</>.
!          This option can only be set at server start or in the
           <filename>postgresql.conf</filename> configuration file.

!          <informaltable>
!           <tgroup cols="3">
!            <thead>
!             <row>
!              <entry>Escape</entry>
!              <entry>Effect</entry>
!              <entry>Session only</entry>
!              </row>
!             </thead>
!            <tbody>
!             <row>
!              <entry><literal>%u</literal></entry>
!              <entry>User Name</entry>
!              <entry>Yes</entry>
!             </row>
!             <row>
!              <entry><literal>%d</literal></entry>
!              <entry>Database Name</entry>
!              <entry>Yes</entry>
!             </row>
!             <row>
!              <entry><literal>%r</literal></entry>
!              <entry>Remote Hostname or IP address, and Remote Port</entry>
!              <entry>Yes</entry>
!             </row>
!             <row>
!              <entry><literal>%p</literal></entry>
!              <entry>Process ID</entry>
!              <entry>No</entry>
!             </row>
!             <row>
!              <entry><literal>%t</literal></entry>
!              <entry>Timestamp</entry>
!              <entry>No</entry>
!             </row>
!             <row>
!              <entry><literal>%i</literal></entry>
!              <entry>Command Tag. This is the command which generated the log
!               line.</entry>
!              <entry>Yes</entry>
!             </row>
!             <row>
!              <entry><literal>%c</literal></entry>
!              <entry>Session ID. A unique identifier for each session.
!              It is 2 4-byte hexadecimal numbers (without leading zeros)
               separated by a dot. The numbers
!              are the Session Start Time and the Process ID, so this can also
!              be used as a space saving way of printing these items.</entry>
!              <entry>Yes</entry>
!             </row>
!             <row>
!              <entry><literal>%l</literal></entry>
!              <entry>Number of the log line for each process,
!               starting at 1</entry>
!              <entry>No</entry>
!             </row>
!             <row>
!              <entry><literal>%s</literal></entry>
!              <entry>Session Start Timestamp</entry>
!              <entry>Yes</entry>
!             </row>
!             <row>
!              <entry><literal>%x</literal></entry>
!              <entry>Does not produce any output, but tells non-session
!              processes to stop at this point in the string. Ignored by
!              session processes.</entry>
!              <entry>No</entry>
!             </row>
!             <row>
!              <entry><literal>%%</literal></entry>
!              <entry>Literal <literal>%</></entry>
!              <entry>No</entry>
!             </row>
!            </tbody>
!           </tgroup>
!          </informaltable>
         </para>
        </listitem>
       </varlistentry>
***************
*** 2861,2867 ****
         <para>
          The value for <varname>dynamic_library_path</varname> has to be a
          list of absolute directory paths separated by colons (or semi-colons
!     on Windows).  If a list element starts
          with the special string <literal>$libdir</literal>, the
          compiled-in <productname>PostgreSQL</productname> package
          library directory is substituted for <literal>$libdir</literal>. This
--- 2862,2868 ----
         <para>
          The value for <varname>dynamic_library_path</varname> has to be a
          list of absolute directory paths separated by colons (or semi-colons
!         on Windows).  If a list element starts
          with the special string <literal>$libdir</literal>, the
          compiled-in <productname>PostgreSQL</productname> package
          library directory is substituted for <literal>$libdir</literal>. This
***************
*** 3138,3145 ****
        <listitem>
         <para>
          Shows the locale in which sorting of textual data is done.
!     See <xref linkend="locale"> for more information.
!     The value is determined when the database cluster is initialized.
         </para>
        </listitem>
       </varlistentry>
--- 3139,3146 ----
        <listitem>
         <para>
          Shows the locale in which sorting of textual data is done.
!         See <xref linkend="locale"> for more information.
!         The value is determined when the database cluster is initialized.
         </para>
        </listitem>
       </varlistentry>
***************
*** 3149,3158 ****
        <listitem>
         <para>
          Shows the locale that determines character classifications.
!     See <xref linkend="locale"> for more information.
!     The value is determined when the database cluster is initialized.
!     Ordinarily this will be the same as <varname>lc_collate</varname>,
!     but for special applications it might be set differently.
         </para>
        </listitem>
       </varlistentry>
--- 3150,3159 ----
        <listitem>
         <para>
          Shows the locale that determines character classifications.
!         See <xref linkend="locale"> for more information.
!         The value is determined when the database cluster is initialized.
!         Ordinarily this will be the same as <varname>lc_collate</varname>,
!         but for special applications it might be set differently.
         </para>
        </listitem>
       </varlistentry>
***************
*** 3240,3246 ****
          variable is a variable not normally known
          to <productname>PostgreSQL</productname> proper but used by some
          add-on module.  Such variables must have names consisting of a class
!     name, a dot, and a variable name.  <varname>custom_variable_classes</>
          specifies all the class names in use in a particular installation.
          This option can only be set at server start or in the
          <filename>postgresql.conf</filename> configuration file.
--- 3241,3247 ----
          variable is a variable not normally known
          to <productname>PostgreSQL</productname> proper but used by some
          add-on module.  Such variables must have names consisting of a class
!         name, a dot, and a variable name.  <varname>custom_variable_classes</>
          specifies all the class names in use in a particular installation.
          This option can only be set at server start or in the
          <filename>postgresql.conf</filename> configuration file.
Index: doc/src/sgml/xfunc.sgml
===================================================================
RCS file: /Users/neilc/local/cvs/pgsql-server/doc/src/sgml/xfunc.sgml,v
retrieving revision 1.85
diff -c -r1.85 xfunc.sgml
*** doc/src/sgml/xfunc.sgml    30 Jul 2004 12:26:39 -0000    1.85
--- doc/src/sgml/xfunc.sgml    21 Aug 2004 12:51:52 -0000
***************
*** 1618,1634 ****
     </indexterm>

     <para>
!     If you are thinking about distributing your PostgreSQL extension
!     modules, setting up a portable build system for them can be fairly
!     difficult.  Therefore the PostgreSQL installation provides a build
      infrastructure for extensions, called <acronym>PGXS</acronym>, so
      that simple extension modules can be built simply against an
      already installed server.  Note that this infrastructure is not
      intended to be a universal build system framework that can be used
!     to build all software interfacing to PostgreSQL; it simply
!     automates common build rules for simple server extension modules.
!     For more complicated packages, you need to write your own build
!     system.
     </para>

     <para>
--- 1618,1635 ----
     </indexterm>

     <para>
!     If you are thinking about distributing your
!     <productname>PostgreSQL</> extension modules, setting up a
!     portable build system for them can be fairly difficult.  Therefore
!     the <productname>PostgreSQL</> installation provides a build
      infrastructure for extensions, called <acronym>PGXS</acronym>, so
      that simple extension modules can be built simply against an
      already installed server.  Note that this infrastructure is not
      intended to be a universal build system framework that can be used
!     to build all software interfacing to <productname>PostgreSQL</>;
!     it simply automates common build rules for simple server extension
!     modules.  For more complicated packages, you need to write your
!     own build system.
     </para>

     <para>
***************
*** 1807,1820 ****
      <title>Composite-Type Arguments in C-Language Functions</title>

      <para>
!      Composite types do not  have  a  fixed  layout  like  C
!      structures.   Instances of a composite type may contain
!      null fields.  In addition,  composite  types  that  are
!      part  of  an  inheritance  hierarchy may have different
!      fields than other members of the same inheritance hierarchy.
!      Therefore,  <productname>PostgreSQL</productname>  provides
!      a function interface for accessing fields of composite types
!      from C.
      </para>

      <para>
--- 1808,1820 ----
      <title>Composite-Type Arguments in C-Language Functions</title>

      <para>
!      Composite types do not have a fixed layout like C structures.
!      Instances of a composite type may contain null fields.  In
!      addition, composite types that are part of an inheritance
!      hierarchy may have different fields than other members of the
!      same inheritance hierarchy.  Therefore,
!      <productname>PostgreSQL</productname> provides a function
!      interface for accessing fields of composite types from C.
      </para>

      <para>
Index: doc/src/sgml/ref/alter_index.sgml
===================================================================
RCS file: /Users/neilc/local/cvs/pgsql-server/doc/src/sgml/ref/alter_index.sgml,v
retrieving revision 1.3
diff -c -r1.3 alter_index.sgml
*** doc/src/sgml/ref/alter_index.sgml    21 Aug 2004 16:16:04 -0000    1.3
--- doc/src/sgml/ref/alter_index.sgml    22 Aug 2004 21:13:23 -0000
***************
*** 167,173 ****
    <title>Compatibility</title>

    <para>
!     <literal>ALTER INDEX</> is a PostgreSQL extension.
    </para>
   </refsect1>
  </refentry>
--- 167,174 ----
    <title>Compatibility</title>

    <para>
!    <command>ALTER INDEX</> is a <productname>PostgreSQL</productname>
!    extension.
    </para>
   </refsect1>
  </refentry>
Index: doc/src/sgml/ref/alter_sequence.sgml
===================================================================
RCS file: /Users/neilc/local/cvs/pgsql-server/doc/src/sgml/ref/alter_sequence.sgml,v
retrieving revision 1.7
diff -c -r1.7 alter_sequence.sgml
*** doc/src/sgml/ref/alter_sequence.sgml    29 Nov 2003 19:51:38 -0000    1.7
--- doc/src/sgml/ref/alter_sequence.sgml    21 Aug 2004 20:54:48 -0000
***************
*** 14,20 ****
     ALTER SEQUENCE
    </refname>
    <refpurpose>
!    alter the definition of a sequence generator
    </refpurpose>
   </refnamediv>

--- 14,20 ----
     ALTER SEQUENCE
    </refname>
    <refpurpose>
!    change the definition of a sequence generator
    </refpurpose>
   </refnamediv>

Index: doc/src/sgml/ref/create_table_as.sgml
===================================================================
RCS file: /Users/neilc/local/cvs/pgsql-server/doc/src/sgml/ref/create_table_as.sgml,v
retrieving revision 1.22
diff -c -r1.22 create_table_as.sgml
*** doc/src/sgml/ref/create_table_as.sgml    4 Aug 2004 21:33:42 -0000    1.22
--- doc/src/sgml/ref/create_table_as.sgml    21 Aug 2004 20:55:17 -0000
***************
*** 11,17 ****

   <refnamediv>
    <refname>CREATE TABLE AS</refname>
!   <refpurpose>create a new table from the results of a query</refpurpose>
   </refnamediv>

   <indexterm zone="sql-createtableas">
--- 11,17 ----

   <refnamediv>
    <refname>CREATE TABLE AS</refname>
!   <refpurpose>define a new table from the results of a query</refpurpose>
   </refnamediv>

   <indexterm zone="sql-createtableas">
Index: doc/src/sgml/ref/create_tablespace.sgml
===================================================================
RCS file: /Users/neilc/local/cvs/pgsql-server/doc/src/sgml/ref/create_tablespace.sgml,v
retrieving revision 1.3
diff -c -r1.3 create_tablespace.sgml
*** doc/src/sgml/ref/create_tablespace.sgml    2 Aug 2004 04:25:37 -0000    1.3
--- doc/src/sgml/ref/create_tablespace.sgml    21 Aug 2004 19:57:35 -0000
***************
*** 34,41 ****
    </para>

    <para>
!    A tablespace allows superusers to define an alternative location on the
!    file system where the data files representing database objects
     (such as tables and indexes) may reside.
    </para>

--- 34,41 ----
    </para>

    <para>
!    A tablespace allows superusers to define an alternative location on
!    the file system where the data files containing database objects
     (such as tables and indexes) may reside.
    </para>

Index: doc/src/sgml/ref/psql-ref.sgml
===================================================================
RCS file: /Users/neilc/local/cvs/pgsql-server/doc/src/sgml/ref/psql-ref.sgml,v
retrieving revision 1.120
diff -c -r1.120 psql-ref.sgml
*** doc/src/sgml/ref/psql-ref.sgml    14 Aug 2004 23:49:07 -0000    1.120
--- doc/src/sgml/ref/psql-ref.sgml    21 Aug 2004 12:43:46 -0000
***************
*** 771,777 ****
          <listitem>
          <para>
          Shows the copyright and distribution terms of
!         <application>PostgreSQL</application>.
          </para>
          </listitem>
        </varlistentry>
--- 771,777 ----
          <listitem>
          <para>
          Shows the copyright and distribution terms of
!         <productname>PostgreSQL</productname>.
          </para>
          </listitem>
        </varlistentry>
Index: doc/src/sgml/ref/release_savepoint.sgml
===================================================================
RCS file: /Users/neilc/local/cvs/pgsql-server/doc/src/sgml/ref/release_savepoint.sgml,v
retrieving revision 1.1
diff -c -r1.1 release_savepoint.sgml
*** doc/src/sgml/ref/release_savepoint.sgml    12 Aug 2004 19:12:21 -0000    1.1
--- doc/src/sgml/ref/release_savepoint.sgml    21 Aug 2004 20:08:03 -0000
***************
*** 77,83 ****

    <para>
     It is not possible to release a savepoint when the transaction is in
!    aborted state.
    </para>

    <para>
--- 77,83 ----

    <para>
     It is not possible to release a savepoint when the transaction is in
!    an aborted state.
    </para>

    <para>
***************
*** 108,116 ****
    <title>Compatibility</title>

    <para>
!    The SQL2003 standard specifies that the keyword SAVEPOINT is mandatory.
!    <productname>PostgreSQL</productname> allows the SAVEPOINT keyword to be
!    omitted. Otherwise, this command is fully conforming.
    </para>
   </refsect1>

--- 108,118 ----
    <title>Compatibility</title>

    <para>
!    The SQL2003 standard specifies that the keyword
!    <literal>SAVEPOINT</literal> is mandatory.
!    <productname>PostgreSQL</productname> allows the
!    <literal>SAVEPOINT</literal> keyword to be omitted. Otherwise, this
!    command is fully conforming.
    </para>
   </refsect1>

Index: doc/src/sgml/ref/rollback_to.sgml
===================================================================
RCS file: /Users/neilc/local/cvs/pgsql-server/doc/src/sgml/ref/rollback_to.sgml,v
retrieving revision 1.2
diff -c -r1.2 rollback_to.sgml
*** doc/src/sgml/ref/rollback_to.sgml    12 Aug 2004 19:12:21 -0000    1.2
--- doc/src/sgml/ref/rollback_to.sgml    21 Aug 2004 20:54:02 -0000
***************
*** 128,140 ****
    <title>Compatibility</title>

    <para>
!    The SQL2003 standard specifies that the keyword SAVEPOINT is mandatory.
!    <productname>PostgreSQL</productname> and <productname>Oracle</productname>
!    allow the SAVEPOINT keyword to be omitted.  SQL2003 allows only
!    WORK, not TRANSACTION, as a noise word after ROLLBACK.  Also, SQL2003
!    has an optional clause AND [ NO ] CHAIN which is not currently supported
!    by <productname>PostgreSQL</productname>.  Otherwise, this command is
!    fully conforming.
    </para>
   </refsect1>

--- 128,142 ----
    <title>Compatibility</title>

    <para>
!    The SQL2003 standard specifies that the keyword
!    <literal>SAVEPOINT</> is mandatory.  <productname>PostgreSQL</> and
!    <productname>Oracle</> allow the <literal>SAVEPOINT</literal>
!    keyword to be omitted.  SQL2003 allows only <literal>WORK</>, not
!    <literal>TRANSACTION</>, as a noise word after
!    <literal>ROLLBACK</>.  Also, SQL2003 has an optional clause
!    <literal>AND [ NO ] CHAIN</> which is not currently supported by
!    <productname>PostgreSQL</>.  Otherwise, this command is fully
!    conforming.
    </para>
   </refsect1>

Index: doc/src/sgml/ref/select_into.sgml
===================================================================
RCS file: /Users/neilc/local/cvs/pgsql-server/doc/src/sgml/ref/select_into.sgml,v
retrieving revision 1.29
diff -c -r1.29 select_into.sgml
*** doc/src/sgml/ref/select_into.sgml    4 Aug 2004 21:33:42 -0000    1.29
--- doc/src/sgml/ref/select_into.sgml    21 Aug 2004 20:56:36 -0000
***************
*** 11,17 ****

   <refnamediv>
    <refname>SELECT INTO</refname>
!   <refpurpose>create a new table from the results of a query</refpurpose>
   </refnamediv>

   <indexterm zone="sql-selectinto">
--- 11,17 ----

   <refnamediv>
    <refname>SELECT INTO</refname>
!   <refpurpose>define a new table from the results of a query</refpurpose>
   </refnamediv>

   <indexterm zone="sql-selectinto">

Re: SGML cleanup

From
Alvaro Herrera
Date:
On Sun, Aug 22, 2004 at 02:48:23PM -0700, Neil Conway wrote:

While you are at it ...


>         <listitem>
>          <para>
>           A new version of the <application>plperl</> server-side language now
> !         supports a persistent shared storage area, triggers, returning records
> !         and arrays of records, and SPI calls to access the database.
>          </para>
>         </listitem>

"arrays of records" seems inaccurate; how about "set of records"
instead?

>     <para>
> !    The SQL2003 standard specifies that the keyword
> !    <literal>SAVEPOINT</> is mandatory.  <productname>PostgreSQL</> and
> !    <productname>Oracle</> allow the <literal>SAVEPOINT</literal>
> !    keyword to be omitted.  SQL2003 allows only <literal>WORK</>, not

Why are we mentioning Oracle behavior at all?

--
Alvaro Herrera (<alvherre[a]dcc.uchile.cl>)
"El número de instalaciones de UNIX se ha elevado a 10,
y se espera que este número aumente" (UPM, 1972)


Re: SGML cleanup

From
Oliver Jowett
Date:
Alvaro Herrera wrote:

>>    <para>
>>!    The SQL2003 standard specifies that the keyword
>>!    <literal>SAVEPOINT</> is mandatory.  <productname>PostgreSQL</> and
>>!    <productname>Oracle</> allow the <literal>SAVEPOINT</literal>
>>!    keyword to be omitted.  SQL2003 allows only <literal>WORK</>, not
>
>
> Why are we mentioning Oracle behavior at all?

One of the influences on the SAVEPOINT/ROLLBACK syntax was avoiding
gratuitous incompatibility with Oracle; doesn't it make sense to
document this?

-O

Re: SGML cleanup

From
Neil Conway
Date:
Alvaro Herrera wrote:
> "arrays of records" seems inaccurate; how about "set of records"
> instead?

Okay, I'll check this in separately this evening/tomorrow.

> Why are we mentioning Oracle behavior at all?

I don't have a strong opinion on this -- is there a consensus we don't
want to do it?

-Neil


Re: SGML cleanup

From
Neil Conway
Date:
Neil Conway wrote:
> Woops, I forgot we renamed default_use_oids to default_with_oids.
> Updated patch attached.

Applied to HEAD.

-Neil


Re: SGML cleanup

From
Tom Lane
Date:
Neil Conway <neilc@samurai.com> writes:
> Alvaro Herrera wrote:
>> Why are we mentioning Oracle behavior at all?

> I don't have a strong opinion on this -- is there a consensus we don't
> want to do it?

I think the existing mention is fine.  It's silly to pretend that these
decisions are not motivated by Oracle compatibility, especially when we
are deliberately deviating from the spec syntax.

            regards, tom lane