]> granicus.if.org Git - postgresql/blobdiff - doc/src/sgml/release.sgml
Document change in large object snapshotting behavior as a version
[postgresql] / doc / src / sgml / release.sgml
index 22c2bd52b135398acde9f138d77a9d7af21c60f7..7660d338f40d0f11ede3898f4efadc9f9abd3e27 100644 (file)
@@ -1,5 +1,15 @@
 <!--
-$PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.343 2005/08/23 12:46:35 momjian Exp $
+$PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.375 2005/09/24 20:35:21 tgl Exp $
+
+Typical markup:
+
+[A-Z][A-Z ]+[A-Z]               <command>
+[A-Za-z_][A-Za-z0-9_]+()        <function>
+[A-Za-z_]/[A-Za-z_]+            <filename>
+PostgreSQL                      <productname>
+pg_[A-Za-z0-9_]                 <application>
+[A-Z][A-Z]                      <type>, <envar>, <literal>
+&<>                             use &
 -->
 
 <appendix id="release">
@@ -10,9 +20,9 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.343 2005/08/23 12:46:35 momjian
 
    <note>
     <title>Release date</title>
-    <simpara>2005-1?-??, Current as of 2005-08-16</simpara>
+    <simpara>2005-1?-??, Current as of 2005-09-15</simpara>
    </note>
+
    <sect2>
     <title>Overview</title>
  
@@ -29,94 +39,201 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.343 2005/08/23 12:46:35 momjian
 
       <listitem>
        <para>
-        This was accomplished by eliminating global locks and using a clock
-       sweep algorithm to find free buffers.
-       </para> 
+        Access to the shared buffer cache was identified as a
+        significant scalability problem, particularly on multi-CPU
+        systems. In this release, the way that locking is done in the
+        buffer manager has been overhauled to reduce lock contention
+        and improve scalability. The buffer manager has also been
+        changed to use a <quote>clock sweep</quote> replacement
+        policy.
+       </para>
       </listitem>
      </varlistentry>
 
      <varlistentry>
       <term>
-       Allow indexes to be used for MIN/MAX (Tom)
+       Allow index scans to use an intermediate in-memory bitmap (Tom)
       </term>
+
       <listitem>
        <para>
-        In previous releases, the only way to use index for MIN/MAX was to rewrite
-        the query as SELECT col FROM tab ORDER BY col LIMIT 1. This now happens
-        automatically.
-       </para> 
+        In previous releases, only a single index could be used to do
+        lookups on a table. With this feature, if a query has
+        <command>WHERE tab.col1 = 4 and tab.col2 = 9</>, and there is
+        no multicolumn index on <literal>col1</> and <literal>col2</>,
+        but there is an index on <literal>col1</> and another on
+        <literal>col2</>, it is possible to search both indexes and
+        combine the results in memory, then do heap fetches for only
+        the rows matching both the <literal>col1</> and
+        <literal>col2</> restrictions. This is very useful in
+        environments that have a lot of unstructured queries where it
+        is impossible to create indexes that match all possible access
+        conditions.  Bitmap scans are useful even with a single index,
+        as they reduce the amount of random access needed; a bitmap
+        index scan is efficient for retrieving fairly large fractions
+        of the complete table, whereas plain index scans are not.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term>
+       Add two-phase commit (Heikki Linnakangas, Alvaro, Tom)
+      </term>
+      
+      <listitem>
+       <para>
+        Two-phase commit allows transactions to be "prepared" on several
+        computers, and once all computers have successfully prepared
+        their transactions (none failed), all transactions can be
+        committed. Even if a machine crashes after a prepare, the
+        prepared transaction can be committed after the machine is
+        restarted. New syntax includes <command>PREPARE TRANSACTION</> and
+        <command>COMMIT/ROLLBACK PREPARED</>. A new system view
+        <literal>pg_prepared_xacts</> has also been added.
+       </para>
       </listitem>
      </varlistentry>
 
      <varlistentry>
       <term>
-       Add in-memory bitmaps which allows multiple indexes to be merged in a
-       single query (Tom)
+       Create a new role system that replaces users and groups 
+       (Stephen Frost)
       </term>
 
       <listitem>
        <para>
-        This allows multiple indexes to be combined to access a single
-        table.
+        Roles are a combination of users and groups. Like users, they
+        can have login capability, and like groups, a role can have
+        other roles as members. Roles basically remove the distinction
+        between users and groups. For example, a role can:
+       </para>
+
+       <itemizedlist>
+  
+        <listitem>
+         <para>
+           Have login capability (optionally)
+         </para>
+        </listitem>
+
+        <listitem>
+         <para>
+          Own objects
+         </para>
+        </listitem>
+
+        <listitem>
+         <para>
+          Hold access permissions for database objects
+         </para>
+        </listitem>
+
+        <listitem>
+         <para>
+          Inherit permissions from other roles it is a member of
+         </para>
+        </listitem>
+
+       </itemizedlist>
+       <para>
+        Once a user logs into a role, she obtains capabilities of
+        the login role plus any inherited roles, and can use
+        <command>SET ROLE</> to switch to other roles she is a member of.
+        This feature is a generalization of the SQL standard's concept of
+        roles.
+        This change also replaces <structname>pg_shadow</> and 
+        <structname>pg_group</> by new role-capable catalogs 
+        <structname>pg_authid</> and <structname>pg_auth_members</>. The old
+        tables are redefined as read-only views on the new role tables.
        </para>
       </listitem>
      </varlistentry>
 
      <varlistentry>
       <term>
-       Add two-phase commit (Heikki Linnakangas, Alvaro, Tom)
+       Automatically use indexes for <function>MIN()</> and
+       <function>MAX()</> (Tom)
       </term>
-      
       <listitem>
        <para>
-        Two-phase commit allows transactions to be "prepared" on several
-        computers, and once all computers have successfully prepared their
-        transactions (and can not be rolled back) all transactions can be
-        committed. Even if a machine crashes after a prepare, the prepared
-        transaction can be committed after it is restarted. New syntax
-        includes PREPARE TRANSACTION and COMMIT/ROLLBACK PREPARED. A new
-        system view pg_prepared_xacts has also been added.
+        In previous releases, the only way to use an index for
+        <function>MIN()</> or <function>MAX()</> was to rewrite the
+        query as <command>SELECT col FROM tab ORDER BY col LIMIT 1</>.
+        Index usage now happens automatically.
+       </para> 
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term>
+       Move <filename>/contrib/pg_autovacuum</> into the main server
+       (Alvaro)
+      </term>
+
+      <listitem>
+       <para>
+        Integrating autovacuum into the server allows it to be
+        automatically started and stopped in sync with the database
+        server, and allows autovacuum to be configured from
+        <filename>postgresql.conf</>.
        </para>
       </listitem>
      </varlistentry>
 
      <varlistentry>
       <term>
-       Replace pg_shadow and pg_group by new role-capable catalogs pg_authid
-       and pg_auth_members.                                                   
+       Add shared row level locks using <command>SELECT ... FOR SHARE</>
+       (Alvaro)
       </term>
 
       <listitem>
        <para>
-        Add SET ROLE (Stephen Frost)
+        While <productname>PostgreSQL</productname>'s MVCC locking
+        allows <command>SELECT</> to never be blocked by writers and
+        therefore does not need shared row locks for typical operations,
+        shared locks are useful for applications that require shared row
+        locking.  In particular this reduces the locking requirements
+        imposed by referential integrity checks.
        </para>
       </listitem>
      </varlistentry>
 
      <varlistentry>
       <term>
-       Move /contrib/pgautovacuum into the main server (Alvaro Herrera)
+       Add dependencies on shared objects, specifically roles
+       (Alvaro)
       </term>
 
       <listitem>
        <para>
-        Add SET ROLE (Stephen Frost)
+        This extension of the dependency mechanism prevents roles from
+        being dropped while there are still database objects they own.
+        Formerly it was possible to accidentally <quote>orphan</> objects by
+        deleting their owner.  While this could be recovered from, it
+        was messy and unpleasant.
        </para>
       </listitem>
      </varlistentry>
 
      <varlistentry>
       <term>
-       Add shared row level locks using SELECT ... FOR SHARE (Alvaro)
+       Improve performance for partitioned tables (Simon)
       </term>
 
       <listitem>
        <para>
-        While PostgreSQL's MVCC locking allows SELECT to never be blocked by writers
-        and therefore does not need shared row locks for typical operations,
-        shared locks are useful for applications that require shared row locking,
-        and to reduce the locking requirements to maintain referential integrity.
+        The new <varname>constraint_exclusion</varname> configuration
+        parameter avoids lookups on child tables where constraints indicate
+        that no matching rows exist in the child table.
+       </para>
+       <para>
+        This allows for a basic type of table partitioning. If child tables
+        store separate key ranges and this is enforced using appropriate
+        <command>CHECK</> constraints, the optimizer will skip child
+        table accesses when the constraint guarantees no matching rows
+        exist in the child table.
        </para>
       </listitem>
      </varlistentry>
@@ -128,16 +245,15 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.343 2005/08/23 12:46:35 momjian
     <title>Migration to version 8.1</title>
                                        
     <para>
-     A dump/restore using <application>pg_dump</application> is
-     required for those wishing to migrate data from any previous
-     release.
+     A dump/restore using <application>pg_dump</application> is required
+     for those wishing to migrate data from any previous release.
     </para>
     
     <para>
      The 8.0 release announced that the <function>to_char()</> function
-     for intervals would be removed in 8.1.  However, since no better API has been
-     suggested, to_char(interval) has been enhanced in 8.1 and will remain in the
-     server.
+     for intervals would be removed in 8.1. However, since no better API
+     has been suggested, <function>to_char(interval)</> has been enhanced in
+     8.1 and will remain in the server.
     </para>
 
     <para>
@@ -148,151 +264,234 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.343 2005/08/23 12:46:35 momjian
 
      <listitem>
       <para>
-       Change add_missing_from to 'false'
+       <varname>add_missing_from</> is now false by default (Neil)
       </para>
       <para>
-       Generate an error if a table used in a query without a FROM reference (Neil)
-       No more SELECT pg_class.*;
+       By default, we now generate an error if a table is used in a query
+       without a <command>FROM</> reference.  The old behavior is still
+       available, but the parameter must be set to 'true' to obtain it.
       </para>
      </listitem>
 
      <listitem>
       <para>
-       Cause input of a zero-length string ('') for float4/float8/oid to throw
-       an error, rather than treat it as a zero (Neil)
+       Cause input of a zero-length string ('') for float4/float8/oid
+       to throw an error, rather than treating it as a zero (Neil)
       </para>
       <para>
-       This change is consistent with the current handling of zero-length
-       strings for integers.  The schedule for this change was announced in 8.0.
+       This change is consistent with the current handling of
+       zero-length strings for integers. The schedule for this change
+       was announced in 8.0.
       </para>
      </listitem>
 
      <listitem>
       <para>
-       Make default_with_oids default to false (Neil)
+       <varname>default_with_oids</> is now false by default (Neil)
       </para>
       <para>
-       With this option set to false, user-created tables no 
-       have an the usually-invisible OID column unless WITH OIDS
-       is specified in CREATE TABLE. Though OIDs have existed in all previous
-       releases of PostgreSQL, their use is limited because they are only four
-       bytes long and the counter is unique across all installed databases.
-       The preferred way of uniquely identifying rows is via sequences and
-       SERIAL, which has been supported since PostgreSQL 6.4.
+       With this option set to false, user-created tables no longer
+       have an OID column unless <command>WITH OIDS</> is specified in
+       <command>CREATE TABLE</>. Though OIDs have existed in all
+       releases of <productname>PostgreSQL</>, their use is limited
+       because they are only four bytes long and the counter is shared
+       across all installed databases. The preferred way of uniquely
+       identifying rows is via sequences and the <type>SERIAL</> type,
+       which have been supported since <productname>PostgreSQL</> 6.4.
       </para>
      </listitem>
 
      <listitem>
       <para>
-       Add E'' syntax so eventually normal strings can treat backslashes
-       literally (Bruce)
+       Add <literal>E''</> syntax so eventually ordinary strings can
+       treat backslashes literally (Bruce)
+      </para>
+      <para>
+       Currently <productname>PostgreSQL</productname> processes a
+       backslash in a string literal as introducing a special escape sequence,
+       e.g. <literal>\n</> or <literal>\010</>.
+       While this allows easy entry of special values, it is
+       non-standard and makes porting of applications from other
+       databases more difficult. For this reason, the
+       <productname>PostgreSQL</productname> project is planning to
+       remove the special meaning of backslashes in strings. For
+       backward compatibility and for users who want special backslash
+       processing, a new string syntax has been created. This new string
+       syntax is formed by writing an <literal>E</> immediately preceding the
+       single quote that starts the string, e.g. <literal>E'hi\n'</>. While
+       this release does not change the handling of backslashes in strings, it
+       does add new configuration parameters to help users migrate applications
+       for future releases:
+      </para>
+      <itemizedlist>
+
+       <listitem>
+        <para>
+         <varname>standard_conforming_strings</> &mdash; does this release
+         treat backslashes literally in ordinary strings?
+        </para>
+       </listitem>
+  
+       <listitem>
+       <para>
+        <varname>escape_string_warning</> &mdash; warn about backslashes in
+        ordinary (non-E) strings
+       </para>
+      </listitem>
+
+      </itemizedlist>
+
+      <para>
+       The <varname>standard_conforming_strings</> value is read-only.
+       Applications can retrieve the value to know how backslashes are
+       processed.  (Presence of the parameter can also be taken as an
+       indication that <literal>E''</> string syntax is supported.)
+       In a future release, <varname>standard_conforming_strings</>
+       will be true, meaning backslashes will be treated literally in
+       non-E strings. To prepare for this change, use <literal>E''</>
+       strings in places that need special backslash processing, and
+       turn on <varname>escape_string_warning</> to find additional
+       strings that need to be converted to use <literal>E''</>.
+       Also, use two single-quotes (<literal>''</>) to embed a literal
+       single-quote in a string, rather than the
+       <productname>PostgreSQL</productname>-supported syntax of
+       backslash single-quote (<literal>\'</>).  The former is
+       standards-conforming and does not require the use of the
+       <literal>E''</> string syntax.  You can also use the
+       <literal>$$</> string syntax, which does not treat backslashes
+       specially.
       </para>
+     </listitem>
+
+     <listitem>
       <para>
-       Currently PostgreSQL considers a backslash to be a special character
-       so the character after the backslash is treated specially. While this
-       allows easy entry of special values, it is non-standard and makes
-       porting of application from other databases more difficult. For this
-       reason, the PostgreSQL project is moving to remove the special meaning
-       of backslashes in strings, and allow only an E preceeding a string to
-       turn on the special handling of backslashes. For this reason, this
-       release adds several new GUC variables related to backslash
-       processing:
-
-        escape_string_warning - warn about backslashes in non-E strings
-        escape_string_syntax - does this release support the E'' syntax?
-        standard_conforming_strings - does this release treat backslashes 
-        literally in non-E strings
+       Make <command>REINDEX DATABASE</> reindex all indexes in the
+       database (Tom)
       </para>
       <para>
-       The last two values are read-only and should assist in the porting of
-       applications. Applications can retrieve these values to know how
-       backslashes are processed. In a later release,
-       standard_conforming_strings will be true, meaning backslashes will be
-       treated literally in non-E strings. To prepare for this change, use
-       E'' strings in places that need special backslash processing, and turn
-       on escape_string_warning to find additional strings that need to be
-       converted to use E''.
+       Formerly, <command>REINDEX DATABASE</> reindexed only
+       system tables. This new behavior seems more intuitive. A new
+       command <command>REINDEX SYSTEM</> provides the old functionality
+       of reindexing just the system tables.
       </para>
      </listitem>
 
      <listitem>
       <para>
-       Make REINDEX DATABASE reindex all indexes in the database (Tom)
+       Read-only large object descriptors now obey MVCC snapshot semantics
       </para>
       <para>
-       The old behavior of REINDEX database reindexed only system tables.
-       This new behavior seems more intuitive. A new command REINDEX SYSTEM
-       allows for reindexing just the system tables.
+       When a large object is opened with <literal>INV_READ</> (and not
+       <literal>INV_WRITE</>), the data read from the descriptor will now
+       reflect a <quote>snapshot</> of the large object's state at the
+       time of the transaction snapshot in use by the query that called
+       <function>lo_open()</>.  To obtain the old behavior of always
+       returning the latest committed data, include <literal>INV_WRITE</>
+       in the mode flags for <function>lo_open()</>.
       </para>
      </listitem>
 
      <listitem>
       <para>
-       In psql, treat unquoted \{digit}+ sequences as octal (Bruce)
+       In <application>psql</application>, treat unquoted
+       <literal>\{digit}+</> sequences as octal (Bruce)
       </para>
       <para>
-       In previous releases, \{digit}+ sequences were treated as
-       decimal, and only \0{digit}+ were treated as octal.  This
-       change was made for consistency.
+       In previous releases, <literal>\{digit}+</> sequences were
+       treated as decimal, and only <literal>\0{digit}+</> were treated
+       as octal. This change was made for consistency.
       </para>
      </listitem>
 
      <listitem>
       <para>
-       Remove grammar productions for prefix and postfix % and ^ operators
+       Remove grammar productions for prefix and postfix <literal>%</>
+       and <literal>^</> operators
        (Tom)
       </para>
       <para>
-       These have never been documented and complicated the use of modulus
-       (%) with negative numbers.
+       These have never been documented and complicated the use of the
+       modulus operator (<literal>%</>) with negative numbers.
+      </para>
+     </listitem>
+
+     <listitem>
+      <para>
+       Make <literal>&amp;&lt;</> and <literal>&amp;&gt;</> for polygons
+       consistent with the box "over" operators (Tom)
       </para>
      </listitem>
 
      <listitem>
       <para>
-       Make "&amp;&lt;" and "&amp;&gt;" for polygons consistent with the box 
-       "over" operators (Tom)
+       <command>CREATE LANGUAGE</> may ignore the provided arguments
+       in favor of information from <structname>pg_pltemplate</>
+       (Tom)
+      </para>
+      <para>
+       A new system catalog <structname>pg_pltemplate</> has been defined
+       to carry information about the preferred definitions of procedural
+       languages (such as whether they have validator functions).  When
+       an entry exists in this catalog for the language being created,
+       <command>CREATE LANGUAGE</> will ignore all its parameters except the
+       language name and instead use the catalog information.  This measure
+       was taken because of increasing problems with obsolete language
+       definitions being loaded by old dump files.  As of 8.1,
+       <application>pg_dump</> will dump procedural language definitions as
+       just <command>CREATE LANGUAGE <replaceable>name</></command>, relying
+       on a template entry to exist at load time.  We expect this will be a
+       more future-proof representation.
       </para>
      </listitem>
 
+     <listitem>
+      <para>
+       Make <function>pg_cancel_backend(int)</function> return a
+       <type>boolean</type> rather than an <type>integer</type> (Neil)
+      </para>
+     </listitem>
     </itemizedlist>
    </sect2>
  
    <sect2>
-    <title>Changes</title>
+    <title>Additional Changes</title>
  
     <para>
-     Below you will find a detailed account of the changes between
-     release 8.1 and the previous major release.
+     Below you will find a detailed account of the additional changes
+     between <productname>PostgreSQL</productname> 8.1 and the
+     previous major release.
     </para>
  
     <sect3>
      <title>Performance Improvements</title>
      <itemizedlist>
-  
+
       <listitem>
        <para>
-        Improve rtree index capabilities and performance (Neil)
-        Replaced by contrib?
+        Improve GiST and rtree index performance (Neil)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Improve the optimizer, including auto-resizing of hash joins (Tom)
+        Improve the optimizer, including auto-resizing of hash joins
+        (Tom)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Overhaul internal API in several areas to improve performance
+        Overhaul internal API in several areas
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Change WAL CRC records from 64bit to 32bit to improve performance
-        (Tom)
+        Change WAL record CRCs from 64-bit to 32-bit (Tom)
+       </para>
+       <para>
+        We determined that the extra cost of computing 64-bit CRCs was
+        significant, and the gain in reliability too marginal to justify it.
        </para>
       </listitem>
 
@@ -304,149 +503,166 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.343 2005/08/23 12:46:35 momjian
 
       <listitem>
        <para>
-        Allow non-consecutive index columns to be used in a multi-column index
-        (Tom)
+        Allow non-consecutive index columns to be used in a multi-column
+        index (Tom)
        </para>
        <para>
-        For example, this allows an index on columns a,b,c to be used in a
-        query with WHERE a = 4 and c = 10
+        For example, this allows an index on columns a,b,c to be used in
+        a query with <command>WHERE a = 4 and c = 10</>.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Skip WAL logging for CREATE TABLE AS / SELECT INTO (Simon)
+        Skip WAL logging for <command>CREATE TABLE AS</> /
+        <command>SELECT INTO</> (Simon)
        </para>
        <para>
-        Since a crash during CREATE TABLE would cause the table to be dropped
-        during recovery, there is no reason to WAL log as the table is loaded.
+        Since a crash during <command>CREATE TABLE AS</> would cause the
+        table to be dropped during recovery, there is no reason to WAL
+        log as the table is loaded.  (Logging still happens if WAL
+        archiving is enabled, however.)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Allow concurrent GIST index access, greatly improving performance
-        (Teodor, Oleg)
+        Allow concurrent GIST index access (Teodor, Oleg)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add GUC full_page_writes to control writing full pages to WAL (Bruce)
+        Add configuration parameter <varname>full_page_writes</> to
+        control writing full pages to WAL (Bruce)
        </para>
        <para>
         To prevent partial disk writes from corrupting the database,
-        PostgreSQL writes a complete copy of each database disk page to WAL
-        the first time it is modified after a checkpoint. This turns off that
-        functionality for users with battery-backed disk caches where partial
-        page writes can not happen.
+        <productname>PostgreSQL</productname> writes a complete copy of
+        each database disk page to WAL the first time it is modified
+        after a checkpoint. This option turns off that functionality for more
+        speed.  This is safe to use with battery-backed disk caches where
+        partial page writes cannot happen.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add constraint_exclusion to restrict child table lookups based on
-        table constraints (Simon)
+        Use <literal>O_DIRECT</> if available when using
+        <literal>O_SYNC</> for <varname>wal_sync_method</varname>
+        (Itagaki Takahiro)
        </para>
        <para>
-        This allows for a type of table partitioning.  If child table placed
-        in a different tablespaces using appropriate CHECK constraints, the
-        optimizer will skip child table accesses if the constraint guarantees
-        no matching rows exist in the child table.
+        <literal>O_DIRECT</> causes disk writes to bypass the kernel
+        cache, and for WAL writes, this improves performance.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Use O_DIRECT if available when using O_SYNC for wal_sync_method (ITAGAKI
-        Takahiro)
+        Improve <command>COPY FROM</> performance (Alon Goldshuv)
        </para>
        <para>
-        O_DIRECT causes disk writes to bypass the kernel cache, and for WAL
-        writes, this improves performance.
+        This was accomplished by reading <command>COPY</> input in
+        larger chunks, rather than character by character.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Improve COPY FROM performance (Alon Goldshuv)
-       </para>
-       <para>
-        This was accomplished by reading COPY input in larger chunks, rather
-        than character by character. 
+        Improve the performance of <function>COUNT()</function>,
+        <function>SUM</function>, <function>AVG()</function>,
+        <function>STDDEV()</function>, and
+        <function>VARIANCE()</function> (Neil, Tom)
        </para>
       </listitem>
-  
      </itemizedlist>
     </sect3>
-  
-  
+
     <sect3>
      <title>Server Changes</title>
      <itemizedlist>
-  
+
       <listitem>
        <para>
-        Prevent problems due to transaction ID wraparound (Tom)
+        Prevent problems due to transaction ID (XID) wraparound (Tom)
        </para>
        <para>
-        This was accomplished by warning the transaction counter is 
-        near the the earliest transaction id determined by the 
-        database whose last vacuum is the oldest.  If the limit is 
-        reached, the server will no longer accept queries.
+        The server will now warn when the transaction counter approaches
+        the wraparound point.  If the counter becomes too close to wraparound,
+        the server will stop accepting queries.  This ensures that data is
+        not lost before needed vacuuming is performed.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Fix problem of OID wraparound conflicting with existing system objects
-        (Tom)
+        Fix problems with object IDs (OIDs) conflicting with existing system
+        objects after the OID counter has wrapped around (Tom)
        </para>
       </listitem>
   
       <listitem>
        <para>
-        Add warning about the need to increase "max_fsm_relations" and
-        "max_fsm_pages" during VACUUM (Ron Mayer)
+        Add warning about the need to increase
+        <varname>max_fsm_relations</> and <varname>max_fsm_pages</>
+        during <command>VACUUM</> (Ron Mayer)
+       </para>
+      </listitem>
+
+      <listitem>
+       <para>
+        Add <varname>temp_buffers</> configuration parameter to allow
+        users to determine the size of the local buffer area for
+        temporary table access (Tom)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add temp_buffers GUC variable to allow users to determine the size
-        of the local buffer area for temporary table access (Tom)
+        Add session start time and client IP address to
+        <literal>pg_stat_activity</> (Magnus)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add session start time and client IP address to pg_stat_activity (Magnus)
+        Enhance <literal>pg_locks</> display (Tom)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Enhance pg_locks display (Tom)
+        Log queries for client-side <command>PREPARE</> and
+        <command>EXECUTE</> (Simon)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Log queries for client-side PREPARE and EXECUTE (Simon)
+        Allow Kerberos name and user name case sensitivity to be
+        specified in <filename>postgresql.conf</> (Magnus)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Allow Kerberos name and user name case sensitivity to be specified from
-        postgresql.conf (Magnus)
+        Add configuration parameter <varname>krb_server_hostname</> so
+        that the server hostname can be specified as part of service
+        principal (Todd Kover)
+       </para>
+       <para>
+        If not set, any service principal matching an entry in the
+        keytab can be used. This is new Kerberos matching behavior in
+        this release.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add log_line_prefix options for millisecond timestamps (%m) and 
-        remote host (%h) (Ed L.)
+        Add <varname>log_line_prefix</> options for millisecond
+        timestamps (<literal>%m</>) and remote host (<literal>%h</>) (Ed
+        L.)
        </para>
       </listitem>
 
@@ -455,41 +671,56 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.343 2005/08/23 12:46:35 momjian
         Add WAL logging for GIST indexes (Teodor, Oleg)
        </para>
        <para>
-        GIST indexes now work for online backup and crash recovery
+        GIST indexes are now safe for crash and point-in-time recovery.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add GUC krb_server_hostname so the server hostname can be specified as
-        part of service principal (Todd Kover)
+        Remove old <filename>*.backup</> files when we do
+        <function>pg_stop_backup()</> (Bruce)
        </para>
        <para>
-        If not set, any service principal matching an entry in the keytab 
-        can be used.  This is new Kerberos matching behavior in this release.
+        This prevents a large number of <filename>*.backup</> files from
+        existing in <filename>/pg_xlog</>.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Remove old *.backup files when we do pg_stop_backup() (Bruce)
+        Add configuration parameters to control TCP/IP keep-alive
+        times for idle, interval, and count (Oliver Jowett)
        </para>
+
        <para>
-        This prevents a large number of *.backup files from existing in 
-         pg_xlog/.
+        These values can be changed to allow more rapid detection of
+        lost client connections.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add GUC variables to control keep-alive times for idle, interval, and
-        count (Oliver Jowett)
+        Add per-user and per-database connection limits (Petr Jelinek)
+       </para>
+       <para>
+        Using <command>ALTER USER</> and <command>ALTER DATABASE</>,
+        limits can now be enforced on the maximum number of sessions that
+        can concurrently connect as a specific user or to a specific database.
+        Setting the limit to zero disables user or database connections.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add per-user and per-database connection limits (Petr Jelinek)
+        Allow more than two gigabytes of shared memory and per-backend
+        work memory on 64-bit machines (Koichi Suzuki)
+       </para>
+      </listitem>
+
+      <listitem>
+       <para>
+        New system catalog <structname>pg_pltemplate</> allows overriding
+        obsolete procedural-language definitions in dump files (Tom)
        </para>
       </listitem>
 
@@ -503,58 +734,71 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.343 2005/08/23 12:46:35 momjian
   
       <listitem>
        <para>
-        Add temporary views (Koju Iijima) 
+        Add temporary views (Koju Iijima, Neil
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Fix HAVING without aggregate functions and no GROUP BY to behave 
-        as if the main query returns a single group (Tom)
+        Fix <command>HAVING</> without any aggregate functions or
+        <command>GROUP BY</> so that the query returns a single group (Tom)
+       </para>
+       <para>
+        Previously, such a case would treat the <command>HAVING</>
+        clause the same as a <command>WHERE</> clause.  This was not per spec.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add USING clause to allow additional tables to be specified to DELETE 
-        (Euler Taveira de Oliveira)
+        Add <command>USING</> clause to allow additional tables to be
+        specified to <command>DELETE</> (Euler Taveira de Oliveira, Neil)
+       </para>
+       <para>
+        In prior releases, there was no clear method for specifying
+        additional tables to be used for joins in a <command>DELETE</>
+        statement. <command>UPDATE</> already has a <literal>FROM</>
+        clause for this purpose.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add support for \x hex escapes in backend and ecpg strings (Bruce)
+        Add support for <literal>\x</> hex escapes in backend and ecpg
+        strings (Bruce)
        </para>
        <para>
-        This supports the typical C standard \x escape.  Octal was already 
-        supported.  
+        This is just like the standard C <literal>\x</> escape syntax.
+        Octal escapes were already supported.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add BETWEEN SYMMETRIC query syntax (Pavel Stehule)
+        Add <command>BETWEEN SYMMETRIC</> query syntax (Pavel Stehule)
        </para>
        <para>
-        This feature allows BETWEEN comparisons without requiring the first
-        value to be less than the second.  For example, 2 BETWEEN [ASYMMETRIC] 3 AND 1
-        returns false, while 2 BETWEEN SYMMETRIC 3 AND 1 returns true.  BETWEEN
-        ASYMMETRIC was already supported.
+        This feature allows <command>BETWEEN</> comparisons without
+        requiring the first value to be less than the second. For
+        example, <command>2 BETWEEN [ASYMMETRIC] 3 AND 1</> returns
+        false, while <command>2 BETWEEN SYMMETRIC 3 AND 1</> returns
+        true. <command>BETWEEN ASYMMETRIC</> was already supported.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add NOWAIT option to SELECT ... FOR UPDATE/SHARE (Hans-Juergen Schoenig)
+        Add <command>NOWAIT</> option to <command>SELECT ... FOR
+        UPDATE/SHARE</> (Hans-Juergen Schoenig)
        </para>
        <para>
-        While SET statement_timeout allows a query taking over a certain
-        amount of time to be cancelled, the NO WAIT option allows a query to
-        be canceled as soon as a SELECT ... FOR UPDATE/SHARE can not
-        immediately acquire a row lock.
+        While the <varname>statement_timeout</> configuration
+        parameter allows a query taking more than a certain amount of
+        time to be cancelled, the <command>NOWAIT</> option allows a
+        query to be canceled as soon as a <command>SELECT ... FOR
+        UPDATE/SHARE</> command cannot immediately acquire a row lock.
        </para>
       </listitem>
-
      </itemizedlist>
     </sect3>
   
@@ -568,37 +812,48 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.343 2005/08/23 12:46:35 momjian
         Track dependencies of shared objects (Alvaro)
        </para>
        <para>
-        PostgreSQL allows global tables (users, databases, tablespaces) to
-        reference information in multiple databases. This addition adds
-        dependency information for global tables, so, for example, user
-        ownership can be tracked across databases, so a user who owns
-        something in any database can no longer be removed. Dependency
-        tracking already existed for database-local objects.
+        <productname>PostgreSQL</productname> allows global tables
+        (users, databases, tablespaces) to reference information in
+        multiple databases. This addition adds dependency information
+        for global tables, so, for example, user ownership can be
+        tracked across databases, so a user who owns something in any
+        database can no longer be removed. Dependency tracking already
+        existed for database-local objects.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Allow ALTER OWNER commands to be performed by the object owner as
-        well as the superuser (Stephen Frost)
+        Allow limited <command>ALTER OWNER</> commands to be performed 
+        by the object owner (Stephen Frost)
        </para>
        <para>
-        Prior releases only allowed super-user to change object owners, even
-        if the current owner was executing the command and the new owner
-        have permission to create objects of that type.
+        Prior releases allowed only superusers to change object owners.
+        Now, ownership can be transferred if the user executing the command
+        owns the object and would be able to create it as the new owner
+        (that is, the user is a member of the new owning role and that role
+        has the CREATE permission that would be needed to create the object
+        afresh).
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add ALTER object SET SCHEMA capability for some object types
-        (tables, functions, types)  (Bernd Helmle)
+        Add <command>ALTER</> object <command>SET SCHEMA</> capability
+        for some object types (tables, functions, types) (Bernd Helmle)
        </para>
        <para>
         This allows objects to be moved to different schemas.
        </para>
       </listitem>
     
+      <listitem>
+       <para>
+        Add <command>ALTER TABLE ENABLE/DISABLE TRIGGER</command> to
+        disable triggers (Satoshi Nagayasu)
+       </para>
+      </listitem>
+
      </itemizedlist>
     </sect3>
   
@@ -609,62 +864,67 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.343 2005/08/23 12:46:35 momjian
   
       <listitem>
        <para>
-        Allow TRUNCATE to truncate multiple files in a single command (Alvaro)
+        Allow <command>TRUNCATE</> to truncate multiple tables in a
+        single command (Alvaro)
        </para>
        <para>
-        Because of referential integrity checks, it is impossible to truncate
-        a table that is part of a referential integrity constraint. Using this
-        new functionality, TRUNCATE can be used to truncate all tables
-        involved in referential integrity if they are truncated in a
-        single TRUNCATE command.
+        Because of referential integrity checks, it is not allowed to
+        truncate a table that is part of a referential integrity
+        constraint. Using this new functionality, <command>TRUNCATE</>
+        can be used to truncate such tables, if both tables involved in
+        a referential integrity constraint are truncated in a single
+        <command>TRUNCATE</> command.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Properly process carriage returns and line feeds in COPY CSV mode
-        (Andrew Dunstan)
+        Properly process carriage returns and line feeds in
+        <command>COPY CSV</> mode (Andrew)
        </para>
        <para>
-        In release 8.0, carriage returns and line feeds in CSV COPY TO were
-        processed in an inconsistent manner. (This was documented on the TODO
-        list.)
+        In release 8.0, carriage returns and line feeds in <command>CSV
+        COPY TO</> were processed in an inconsistent manner. (This was
+        documented on the TODO list.)
        </para>
       </listitem>
 
       <listitem>
        <para>
-
-        Add COPY WITH CSV HEADER to allow a heading line as the first line in
-        COPY (Andrew)
+        Add <command>COPY WITH CSV HEADER</> to allow a header line as
+        the first line in <command>COPY</> (Andrew)
        </para>
        <para>
-        This allows handling of the common CSV usage of placing the column
-        names on the first line of the data file. For COPY TO, the first line
-        contains the column names, and for COPY FROM, the first line is
-        ignored.
+        This allows handling of the common <command>CSV</> usage of
+        placing the column names on the first line of the data file. For
+        <command>COPY TO</>, the first line contains the column names,
+        and for <command>COPY FROM</>, the first line is ignored.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        On Win32, display better sub-second precision in EXPLAIN ANALYZE (Magnus)
+        On Windows, display better sub-second precision in
+        <command>EXPLAIN ANALYZE</> (Magnus)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add trigger duration display to EXPLAIN ANALYZE (Tom)
+        Add trigger duration display to <command>EXPLAIN ANALYZE</>
+        (Tom)
        </para>
        <para>
-        Prior releases lumped trigger execution time into the total execution
-        time.
+        Prior releases included trigger execution time as part of the
+        total execution time, but did not show it separately.  It is now
+        possible to see how much time is spent in each trigger.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add support for \x hex escapes in COPY (Sergey Ten)
+        Add support for <literal>\x</> hex escapes in <command>COPY</>
+        (Sergey Ten)
        </para>
        <para>
         Previous releases only supported octal escapes.
@@ -673,35 +933,40 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.343 2005/08/23 12:46:35 momjian
 
       <listitem>
        <para>
-        Have SHOW ALL include variable descriptions (Matthias Schmidt)
+        Make <command>SHOW ALL</> include variable descriptions
+        (Matthias Schmidt)
        </para>
        <para>
-        SHOW varname still only displays the variable's value and does not
-        include the description.
+        <command>SHOW</> varname still only displays the variable's
+        value and does not include the description.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Have initdb create new standard database called "postgres" and
-        convert utilities to use "postgres" rather than "template1" for
+        Make <application>initdb</application> create a new standard
+        database called <literal>postgres</>, and convert utilities to
+        use <literal>postgres</> rather than <literal>template1</> for
         standard lookups (Dave)
        </para>
        <para>
-        In prior releases, template1 was used both as a default
-        connection for utilities like createuser, and as a template for
-        new databases. This caused CREATE DATABASE to sometimes fail
-        because a new database cannot be created if anyone else is in
-        the template database. With this change, the default connection
-        database is now 'postgres', meaning it is much less likely
-        someone will be using template1 during CREATE DATABASE.
+        In prior releases, <literal>template1</> was used both as a
+        default connection for utilities like
+        <application>createuser</application>, and as a template for
+        new databases. This caused <command>CREATE DATABASE</> to
+        sometimes fail, because a new database cannot be created if
+        anyone else is in the template database. With this change, the
+        default connection database is now <literal>postgres</>,
+        meaning it is much less likely someone will be using
+        <literal>template1</> during <command>CREATE DATABASE</>.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Create new reindexdb command-line utility by moving /contrib/reindexdb 
-        into the server (Euler Taveira de Oliveira)
+        Create new <application>reindexdb</application> command-line
+        utility by moving <filename>/contrib/reindexdb</> into the
+        server (Euler Taveira de Oliveira)
        </para>
       </listitem>
 
@@ -715,139 +980,145 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.343 2005/08/23 12:46:35 momjian
   
       <listitem>
        <para>
-        Add MAX() and MIN() aggregates for array types (Koju Iijima)
-       </para>
-       <para>
-        How does this work?
+        Add <function>MAX()</> and <function>MIN()</> aggregates for
+        array types (Koju Iijima)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Fix to_date() and to_timestamp() to behave reasonably when 
-        CC and YY fields are both used (Karel Zak)
+        Fix <function>to_date()</> and <function>to_timestamp()</> to
+        behave reasonably when <literal>CC</> and <literal>YY</> fields
+        are both used (Karel Zak)
        </para>
        <para>
-        If the format specification contains CC and a year specification is
-        YYY or longer, ignore the CC. If the year specification is 
-        YY or shorter, interpret CC as the previous century. ?
+        If the format specification contains <literal>CC</> and a year
+        specification is <literal>YYY</> or longer, ignore the
+        <literal>CC</>. If the year specification is <literal>YY</> or
+        shorter, interpret <literal>CC</> as the previous century.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add md5(bytea) (Abhijit Menon-Sen)
+        Add <function>md5(bytea)</> (Abhijit Menon-Sen)
        </para>
        <para>
-        md5(text) already existed.
+        <function>md5(text)</> already existed.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Fix CHAR() to properly pad out to the specified length when
-        using a multiple-byte character set (Yoshiyuki Asaba)
+        Fix <type>CHAR()</> to properly pad spaces to the specified
+        length when using a multiple-byte character set (Yoshiyuki
+        Asaba)
        </para>
        <para>
-        In prior releases, the padding of CHAR() was incorrect because it only
-        padded to the specified number of bytes without considering how many
-        characters were stored.
+        In prior releases, the padding of <type>CHAR()</> was incorrect
+        because it only padded to the specified number of bytes without
+        considering how many characters were stored.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add support for NUMERIC ^ NUMERIC based on power(numeric, numeric)
+        Add support for <command>numeric ^ numeric</> based on
+        <function>power(numeric, numeric)</>
        </para>
        <para>
-        The function already existed, but there was no operator assigned to
-        it.
+        The function already existed, but there was no operator assigned
+        to it.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Fix NUMERIC modulus by properly truncating the quotient during
-        computation (Bruce)
+        Fix <type>NUMERIC</> modulus by properly truncating the quotient
+        during computation (Bruce)
        </para>
        <para>
-        In previous releases, modulus for large values sometimes returned
-        negative results due to the rounding of the quotient.
+        In previous releases, modulus for large values sometimes
+        returned negative results due to rounding of the quotient.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add a function lastval(), which returns the value returned by the
-        last nextval() or setval() performed by the current session. (Dennis
-        Björklund)
+        Add a function <function>lastval()</>(Dennis Björklund)
        </para>
        <para>
-        lastval() is a simplified version of currval(). It automatically 
-        determines the proper sequence name based on the most recent 
-         nextval() call.
+        <function>lastval()</> is a simplified version of
+        <function>currval()</>. It automatically determines the proper
+        sequence name based on the most recent <function>nextval()</> or
+        <function>setval()</> call performed by the current session.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add to_timestamp(double precision) 
+        Add <function>to_timestamp(DOUBLE PRECISION)</>
        </para>
        <para>
-        Converts Unix seconds since 1970 to a timestamp with timezone.
+        Converts Unix seconds since 1970 to a <type>TIMESTAMP WITH
+        TIMEZONE</>.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add pg_postmaster_start_time() function (Euler Taveira de Oliveira, 
-        Matthias Schmidt)
+        Add <function>pg_postmaster_start_time()</> function (Euler
+        Taveira de Oliveira, Matthias Schmidt)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Allow the full use of time zone names in "AT TIME ZONE", not just 
-        the short list previously available (Magnus)
-       </para>
-       <para>
-        Previously, only a predefined list of time zone names were supported
-        by AT TIME ZONE.  Now any supported time zone name can be used, e.g.:
+        Allow the full use of time zone names in <command>AT TIME
+        ZONE</>, not just the short list previously available (Magnus)
        </para>
        <para>
+        Previously, only a predefined list of time zone names were
+        supported by <command>AT TIME ZONE</>. Now any supported time
+        zone name can be used, e.g.:
+        <programlisting>
          SELECT CURRENT_TIMESTAMP AT TIME ZONE 'Europe/London';
-        In the above query, the daylight savings time rules were in effect on
-        that date are used.
+        </programlisting>
+        In the above query, the time zone used is adjusted based on the
+        daylight savings time rules that were in effect on the supplied
+        date.
        </para>
       </listitem>
 
       <listitem>
        <para>
-
-        Add Oracle-compatible GREATEST and LEAST functions (Pavel Stehule)
+        Add <function>GREATEST()</> and <function>LEAST()</> variadic
+        functions (Pavel Stehule)
        </para>
        <para>
-        These functions take a variable number of arguments and return the
-        greatest or least value.
+        These functions take a variable number of arguments and return
+        the greatest or least value among the arguments.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add pg_column_size() to return storage size of a column, including
-        possible compression (Mark Kirkwood)
+        Add <function>pg_column_size()</> (Mark Kirkwood)
+       </para>
+       <para>
+        This returns storage size of a column, including any
+        compression used.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add regexp_replace() (Atsushi Ogawa)
+        Add <function>regexp_replace()</> (Atsushi Ogawa)
        </para>
        <para>
-        This allows regular expression replacement, like sed. A four-argument
-        version also allows for global (replace all) and case-insensitive
-        modes.
+        This allows regular expression replacement, like sed. An optional
+        flag argument allows selection of global (replace all) and
+        case-insensitive modes.
        </para>
       </listitem>
 
@@ -856,94 +1127,138 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.343 2005/08/23 12:46:35 momjian
         Fix interval division and multiplication (Bruce)
        </para>
        <para>
-        Previous versions sometimes returned unjustified results, like 
-        '4 months'::interval / 5 returning '1 mon -6 days'.
+        Previous versions sometimes returned unjustified results, like
+        <command>'4 months'::interval / 5</> returning <command>'1 mon
+        -6 days'</>.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add internal 'day' field to INTERVAL so a 1 day interval can be 
-        distinguished from a 24 hour interval (Michael Glaesemann)
+        Add an internal day field to <type>INTERVAL</> so a one day
+        interval can be distinguished from a 24 hour interval (Michael
+        Glaesemann)
        </para>
        <para>
-        Days that contain a daylight savings time adjustment are not 24 hours,
-        but typically 23 or 25 hours. This change allows days (not fixed
-        24-hour periods) to be added to dates who's result includes a daylight
-        savings time adjustment period. Therefore, while in previous releases
-        '1 day' and '24 hours' where interchangeable interval periods, in this
-        release they are treated differently, e.g.
+        Days that contain a daylight savings time adjustment are not 24
+        hours, but typically 23 or 25 hours. This change allows days
+        (not fixed 24-hour periods) to be added to dates who's result
+        includes a daylight savings time adjustment period. Therefore,
+        while in previous releases <literal>1 day</> and <literal>24
+        hours</> were interchangeable interval values, in this release
+        they are treated differently, e.g.
+        <programlisting>
+         '2005-05-03 00:00:00 EST' + '1 day' = '2005-05-04 00:00:00-04'
+         '2005-05-03 00:00:00 EST' + '24 hours' = '2005-05-04 01:00:00-04'
+        </programlisting>
        </para>
       </listitem>
 
       <listitem>
        <para>
-        '2005-05-03 00:00:00 EST' + '1 day' = '2005-05-04 00:00:00-04'
+        Add <function>justify_days()</> and <function>justify_hours()</>
+        (Michael Glaesemann)
        </para>
-      </listitem>
-
-      <listitem>
        <para>
-        '2005-05-03 00:00:00 EST' + '24 hours' = '2005-05-04 01:00:00-04'
+        These functions, respectively, adjust days to an appropriate
+        number of full months and days, and adjust hours to an
+        appropriate number of full days and hours.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Move /contrib/dbsize into the backend, and rename some of the functions
-        (Dave Page, Andreas Pflug)
+        Move <filename>/contrib/dbsize</> into the backend, and rename
+        some of the functions (Dave Page, Andreas Pflug)
        </para>
        <para>
-        The new functions are:
-        pg_tablespace_size()
-        pg_database_size()
-        pg_relation_size()
-        pg_complete_relation_size()
-        pg_size_pretty()
+        <itemizedlist>
+  
+         <listitem>
+          <para>
+            <function>pg_tablespace_size()</>
+          </para>
+         </listitem>
+
+         <listitem>
+          <para>
+           <function>pg_database_size()</>
+          </para>
+         </listitem>
+
+         <listitem>
+          <para>
+           <function>pg_relation_size()</>
+          </para>
+         </listitem>
+
+         <listitem>
+          <para>
+           <function>pg_total_relation_size()</>
+          </para>
+         </listitem>
+
+         <listitem>
+          <para>
+           <function>pg_size_pretty()</>
+          </para>
+         </listitem>
+        </itemizedlist>
        </para>
        <para>
-        complete_relation_size() includes indexes and TOAST tables.
+        <function>pg_total_relation_size()</> includes indexes and TOAST
+        tables.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add justify_days() and justify_hours (Michael Glaesemann)
+        Add functions for read-only file access to the cluster directory
+        (Dave Page, Andreas Pflug)
        </para>
        <para>
-        These functions, respectively, adjust days to an appropriate number of
-        full months and dayss, and adjust hours to an appropriate number
-        of full days and hours.
-       </para>
-      </listitem>
+        <itemizedlist>
+  
+         <listitem>
+          <para>
+           <function>pg_stat_file()</>
+          </para>
+         </listitem>
 
-      <listitem>
-       <para>
-        Add files to do read-only I/O on the cluster directory (Dave Page,
-        Andreas Pflug)
-        pg_stat_file()
-        pg_read_file()
-        pg_ls_dir()
+         <listitem>
+          <para>
+           <function>pg_read_file()</>
+          </para>
+         </listitem>
+
+         <listitem>
+          <para>
+           <function>pg_ls_dir()</>
+          </para>
+         </listitem>
+
+        </itemizedlist>
        </para>
       </listitem>
-
+      
       <listitem>
        <para>
-        Add pg_reload_conf() to force reloading of the configuration files (Dave Page,
-        Andreas Pflug)
+        Add <function>pg_reload_conf()</> to force reloading of the
+        configuration files (Dave Page, Andreas Pflug)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add pg_rotate_logfile() to force rotation of the server log file (Dave Page,
+        Add <function>pg_rotate_logfile()</> to force rotation of the
+        server log file (Dave Page, Andreas Pflug)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Change pg_stat_* views to show TOAST tables (Tom)
+        Change <literal>pg_stat_*</> views to include TOAST tables (Tom)
        </para>
       </listitem>
 
@@ -957,16 +1272,39 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.343 2005/08/23 12:46:35 momjian
   
       <listitem>
        <para>
-        Rename some encodings to be more consistent and to follow international
-        standards(Bruce)
+        Rename some encodings to be more consistent and to follow
+        international standards (Bruce)
        </para>
        <para>
-        Encoding name changes were:
-        UNICODE is now UTF8
-        ALT is now WIN866
-        WIN is now WIN1251
-        TCVN is now WIN1258
+        <itemizedlist>
+  
+         <listitem>
+          <para>
+           <literal>UNICODE</> is now <literal>UTF8</>
+          </para>
+         </listitem>
+
+         <listitem>
+          <para>
+           <literal>ALT</> is now <literal>WIN866</>
+          </para>
+         </listitem>
+
+         <listitem>
+          <para>
+           <literal>WIN</> is now <literal>WIN1251</>
+          </para>
+         </listitem>
+
+         <listitem>
+          <para>
+          <literal>TCVN</> is now <literal>WIN1258</>
+          </para>
+         </listitem>
+
+        </itemizedlist>
        </para>
+
        <para>
         The original names still work.
        </para>
@@ -974,24 +1312,36 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.343 2005/08/23 12:46:35 momjian
 
       <listitem>
        <para>
-        Add support for Win1252 encoding (Roland Volkmann)
+        Add support for <literal>WIN1252</> encoding (Roland Volkmann)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add support for 3 and 4-byte UTF8 characters (John Hansen)
+        Add support for 3 and 4-byte <literal>UTF8</> characters (John
+        Hansen)
        </para>
        <para>
-        Previously only one and two-byte UTF8 characters were supported.
-        This is particularly important for support for some Chinese character.
+        Previously only one and two-byte <literal>UTF8</> characters
+        were supported. This is particularly important for support for
+        some Chinese characters.
+       </para>
+      </listitem>
+
+      <listitem>
+       <para>
+        Allow direct conversion between <literal>EUC_JP</> and
+        <literal>SJIS</> to improve performance (Atsushi Ogawa)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Allow direct conversion between EUC_JP and SJIS to improve performance (Atsushi
-        Ogawa)
+        Allow the UTF8 encoding to work on Windows (Magnus)
+       </para>
+       <para>
+        This is done by mapping UTF8 to the Windows-native UTF16 
+        implementation.
        </para>
       </listitem>
 
@@ -1005,14 +1355,14 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.343 2005/08/23 12:46:35 momjian
   
       <listitem>
        <para>
-        Fix ALTER LANGUAGE RENAME (Sergey Yatskevich)
+        Fix <command>ALTER LANGUAGE RENAME</> (Sergey Yatskevich)
        </para>
       </listitem>
 
       <listitem>
        <para>
         Allow function characteristics, like strictness and volatility,
-        to be modified via ALTER FUNCTION (Neil)
+        to be modified via <command>ALTER FUNCTION</> (Neil)
        </para>
       </listitem>
 
@@ -1024,14 +1374,34 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.343 2005/08/23 12:46:35 momjian
 
       <listitem>
        <para>
-        Allow SQL, plperl, PL/PgSQL functions to use OUT and INOUT parameters (Tom)
+        Allow SQL and PL/PgSQL functions to use <command>OUT</> and
+        <command>INOUT</> parameters (Tom)
+       </para>
+       <para>
+        <command>OUT</> is an alternate way for a function to return
+        values. Instead of using <command>RETURN</>, values can be
+        returned by assigning to parameters declared as <command>OUT</> or
+        <command>INOUT</>.  This is notationally simpler in some cases,
+        particularly so when multiple values need to be returned.
+        While returning multiple values from a function
+        was possible in previous releases, this greatly simplifies the
+        process.  (The feature will be extended to other server-side
+        languages in future releases.)
+       </para>
+      </listitem>
+
+      <listitem>
+       <para>
+        Move language handler functions into the <literal>pg_catalog</> schema
+       </para>
+       <para>
+        This makes it easier to drop the public schema if desired.
        </para>
+      </listitem>
+
+      <listitem>
        <para>
-        OUT is an alternate way for a function to return values. Instead of
-        using RETURNS, the function's parameters can be specified as OUT or
-        INOUT, allowing multiple values to be returned by the function. While
-        returning multiple values from a function was possible in previous
-        releases, this greatly simplifies the process.
+        Add <function>SPI_getnspname()</function> to SPI (Neil)
        </para>
       </listitem>
 
@@ -1044,73 +1414,80 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.343 2005/08/23 12:46:35 momjian
   
       <listitem>
        <para>
-        Reduce memory usage of PL/PgSQL functions (Neil)
+        Overhaul the memory management of PL/PgSQL functions (Neil)
        </para>
        <para>
-        Each function now has its own memory context that can be freed when
-        the function exits.
+        The parsetree of each function is now stored in a separate
+        memory context. This allows this memory to be easily reclaimed
+        when it is no longer needed.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Check function syntax as CREATE FUNCTION time, rather than at runtime
-        (Neil)
+        Check function syntax at <command>CREATE FUNCTION</> time,
+        rather than at runtime (Neil)
        </para>
        <para>
-        Previously, syntax errors were reported only when the function was 
-        executed.
+        Previously, most syntax errors were reported only when the
+        function was executed.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Allow OPEN to open non-SELECT queries like EXPLAIN and SHOW (Tom)
+        Allow <command>OPEN</> to open non-<command>SELECT</> queries
+        like <command>EXPLAIN</> and <command>SHOW</> (Tom)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        No longer require functions to issue a RETURN statement (Tom)
+        No longer require functions to issue a <command>RETURN</>
+        statement (Tom)
        </para>
        <para>
-        This is a byproduct of the newly added OUT and INOUT functionality.
+        This is a byproduct of the newly added <command>OUT</> and
+        <command>INOUT</> functionality.  <command>RETURN</> can
+        be omitted when it is not needed to provide the function's
+        return value.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add support for an optional INTO clause to PL/PgSQL's EXECUTE command
-        (Pavel Stehule)
+        Add support for an optional <command>INTO</> clause to
+        PL/PgSQL's <command>EXECUTE</> statement (Pavel Stehule, Neil)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Make CREATE TABLE AS set ROW_COUNT (Tom)
+        Make <command>CREATE TABLE AS</> set <command>ROW_COUNT</> (Tom)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Define SQLSTATE and SQLERRM to return the SQLSTATE and 
-        error message of the current exception (Pavel Stehule)
+        Define <literal>SQLSTATE</> and <literal>SQLERRM</> to return
+        the <literal>SQLSTATE</> and error message of the current
+        exception (Pavel Stehule, Neil)
        </para>
        <para>
-        These variables are only accessable inside exception blocks.
+        These variables are only defined inside exception blocks.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Allow the parameters to the RAISE statement to be expressions
-        (Pavel Stehule)
+        Allow the parameters to the <command>RAISE</> statement to be
+        expressions (Pavel Stehule, Neil)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add a loop CONTINUE statement (Pavel Stehule)
+        Add a loop <command>CONTINUE</> statement (Pavel Stehule, Neil)
        </para>
       </listitem>
 
@@ -1130,28 +1507,30 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.343 2005/08/23 12:46:35 momjian
 
       <listitem>
        <para>
-        Allow large result sets to be returned efficiently (Abhijit Menon-Sen)
+        Allow large result sets to be returned efficiently (Abhijit
+        Menon-Sen)
        </para>
        <para>
-        This allows functions to use return_next() to avoid building
-        the entire result set in memory.
+        This allows functions to use <function>return_next()</> to avoid
+        building the entire result set in memory.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Allow one-row-at-a-time retrieval of query results (Abhijit)
+        Allow one-row-at-a-time retrieval of query results (Abhijit Menon-Sen)
        </para>
        <para>
-        This allows functions to use spi_query() and spi_fetchrow() to
-        avoid accumulating the entire result set in memory.
+        This allows functions to use <function>spi_query()</> and
+        <function>spi_fetchrow()</> to avoid accumulating the entire
+        result set in memory.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Force PL/Perl to handle strings as UTF8 if the server encoding is UTF8
-        (David Kamholz)
+        Force PL/Perl to handle strings as <literal>UTF8</> if the
+        server encoding is <literal>UTF8</> (David Kamholz)
        </para>
       </listitem>
 
@@ -1160,42 +1539,59 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.343 2005/08/23 12:46:35 momjian
         Add a validator function for PL/Perl (Andrew)
        </para>
        <para>
-        This allows syntax errors to be reported at definition time, rather
-        than execution time.
+        This allows syntax errors to be reported at definition time,
+        rather than execution time.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Allow PL/Perl to return a Perl array when the function returns an array
-        type (Andrew)
+        Allow PL/Perl to return a Perl array when the function returns
+        an array type (Andrew)
        </para>
        <para>
-        This basically maps PostgreSQL arrays to Perl arrays.
+        This basically maps <productname>PostgreSQL</productname> arrays
+        to Perl arrays.
+       </para>
+      </listitem>
+
+      <listitem>
+       <para>
+        Allow Perl non-fatal warnings to generate <command>NOTICE</>
+        messages (Andrew)
+       </para>
+      </listitem>
+
+      <listitem>
+       <para>
+        Allow Perl's <literal>strict</> mode to be enabled (Andrew)
        </para>
       </listitem>
 
      </itemizedlist>
     </sect3>
-  
-  
+
+
     <sect3>
      <title><application>psql</> Changes</title>
      <itemizedlist>
   
       <listitem>
        <para>
-        Add psql \set ON_ERROR_ROLLBACK to allow statements in a transaction to
-        error without affecting the rest of the transaction (Greg Sabino Mullane)
+        Add <command>\set ON_ERROR_ROLLBACK</> to allow statements in
+        a transaction to error without affecting the rest of the
+        transaction (Greg Sabino Mullane)
        </para>
        <para>
-        This is basically implemented by wrapping every statement in a subtransaction.
+        This is basically implemented by wrapping every statement in a
+        sub-transaction.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add support for \x hex strings in psql variables (Bruce)
+        Add support for <literal>\x</> hex strings in
+        <application>psql</> variables (Bruce)
        </para>
        <para>
         Octal escapes were already supported.
@@ -1204,14 +1600,15 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.343 2005/08/23 12:46:35 momjian
 
       <listitem>
        <para>
-        Add psql support for troff "-ms" output format (Roger Leigh)
+        Add support for <command>troff -ms</> output format (Roger
+        Leigh)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Allow psql's history file location to be controlled by HISTFILE (Andreas
-        Seltenreich)
+        Allow the history file location to be controlled by
+        <envar>HISTFILE</> (Andreas Seltenreich)
        </para>
        <para>
         This allows configuration of per-database history storage.
@@ -1220,14 +1617,15 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.343 2005/08/23 12:46:35 momjian
 
       <listitem>
        <para>
-        Prevent psql \x (expanded mode) from affecting other backslash output
-        (Neil)
+        Prevent <command>\x</> (expanded mode) from affecting
+        backslash-command displays (Neil)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add -L option to psql to log sessions (Lorne Sunley)
+        Add <option>-L</> option to <application>psql</application> to
+        log sessions (Lorne Sunley)
        </para>
        <para>
         This option was added because some operating systems do not have
@@ -1237,31 +1635,45 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.343 2005/08/23 12:46:35 momjian
 
       <listitem>
        <para>
-        Have psql \d show tablespace of indexes (Qingqing Zhou)
+        Make <command>\d</> show the tablespaces of indexes (Qingqing
+        Zhou)
+       </para>
+      </listitem>
+
+      <listitem>
+       <para>
+        Allow <application>psql</application> help (<command>\h</>) to
+        make a best guess on the proper help information (Greg Sabino
+        Mullane)
+       </para>
+       <para>
+        This allows the user to just add <command>\h</> to the front of
+        the syntax error query and get help on the supported syntax.
+        Previously any additional query text beyond the command name
+        had to be removed to use <command>\h</>.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Allow psql \h to make a best guess on the proper help information (Greg
-        Sabino Mullane)
+        Add <command>\pset numericlocale</> to allow numbers to be
+        output in a locale-aware format (Eugen Nedelcu)
        </para>
        <para>
-        This allows the user to just add \h to the front of the syntax error
-        query and get help on the supported syntax. Previously any additional
-        query text beyond the help topics supported had to be removed to use
-        \h.
+        For example, using <literal>C</> locale <literal>100000</> would
+        be output as <literal>100,000.0</> while a European locale might
+        output this value as <literal>100.000,0</>.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add psql \pset numericlocale to allow numbers to be output in a
-        locale-aware format (Eugen Nedelcu)
+        Make startup banner show both server version number and
+        <application>psql</>'s version number, when they are different (Bruce)
        </para>
        <para>
-        For example, using C locale 100000 would be output as 100,000.0 and
-        European locale might output this value as 100.000,0.
+        Also, a warning will be shown if the server and <application>psql</>
+        are from different major releases.
        </para>
       </listitem>
 
@@ -1275,7 +1687,8 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.343 2005/08/23 12:46:35 momjian
   
       <listitem>
        <para>
-        Add -n / --schema switch to pg_restore (Richard van den Bergg)
+        Add <option>-n</> / <option>--schema</> switch to 
+        <application>pg_restore</> (Richard van den Berg)
        </para>
        <para>
         This allows only objects from a specified schema to be restored.
@@ -1284,13 +1697,15 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.343 2005/08/23 12:46:35 momjian
 
       <listitem>
        <para>
-        Allow pg_dump to dump a consistent snapshot of large objects (Tom)
+        Allow <application>pg_dump</> to dump a consistent snapshot of 
+        large objects (Tom)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Allow pg_dump to dump large objects even in text mode (Tom)
+        Allow <application>pg_dump</> to dump large objects even in 
+        text mode (Tom)
        </para>
       </listitem>
 
@@ -1302,12 +1717,27 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.343 2005/08/23 12:46:35 momjian
 
       <listitem>
        <para>
-        Add --encoding to pg_dump (Magnus Hagander)
+        Add <option>--encoding</> to <application>pg_dump</> 
+        (Magnus Hagander)
+       </para>
+       <para>
+        This allows a database to be dumped in an encoding that is
+        different from the server's encoding. This is valuable when
+        transferring the dump to a machine with a different encoding.
+       </para>
+      </listitem>
+
+      <listitem>
+       <para>
+        Rely on <structname>pg_pltemplate</> for procedural languages (Tom)
        </para>
        <para>
-        This allows a database to be dumped in an encoding that is different
-        from the server's encoding. This is valuable when transferring the dump
-        to a machine with a different encoding.
+        If the call handler for a procedural language is in the
+        <literal>pg_catalog</> schema, <application>pg_dump</> does not
+        dump the handler.  Instead, it dumps the language using just
+        <command>CREATE LANGUAGE <replaceable>name</></command>,
+        relying on the <structname>pg_pltemplate</> catalog to provide
+        the language's creation parameters at load time.
        </para>
       </listitem>
 
@@ -1316,23 +1746,31 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.343 2005/08/23 12:46:35 momjian
   
   
     <sect3>
-     <title>libpq Changes</title>
+     <title><application>libpq</application> Changes</title>
      <itemizedlist>
   
       <listitem>
        <para>
-        Add a "PGPASSFILE" environment variable to specify the password
-        file's filename (Andrew Dunstan)
+        Add a <envar>PGPASSFILE</> environment variable to specify the
+        password file's filename (Andrew)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add lo_create(), that is similar to lo_creat() but allows the OID of the large
-        object to be specified (Tom)
+        Add <function>lo_create()</>, that is similar to
+        <function>lo_creat()</> but allows the OID of the large object
+        to be specified (Tom)
        </para>
       </listitem>
 
+      <listitem>
+       <para>
+        Make <application>libpq</application> consistently return an error
+        to the client application on <function>malloc()</function>
+        failure (Neil)
+       </para>
+      </listitem>
      </itemizedlist>
     </sect3>
   
@@ -1343,14 +1781,14 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.343 2005/08/23 12:46:35 momjian
   
       <listitem>
        <para>
-        Add spinlock support for the Itanium processor using Intel compiler (Vikram
-        Kalsi)
+        Add spinlock support for the Itanium processor using Intel
+        compiler (Vikram Kalsi)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add Kerberos 5 support for Win32 (Magnus)
+        Add Kerberos 5 support for Windows (Magnus)
        </para>
       </listitem>
 
@@ -1362,29 +1800,31 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.343 2005/08/23 12:46:35 momjian
 
       <listitem>
        <para>
-        Rename Rendezvous to Bonjour to match OS/X feature renaming (Bruce)
+        Rename Rendezvous to Bonjour to match OS/X feature renaming
+        (Bruce)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Add support for wal_fsync_writethrough for Darwin (Chris Campbell)
+        Add support for <literal>fsync_writethrough</literal> on
+        Darwin (Chris Campbell)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Streamline the passing of information within the server, the optimizer,
-        and the lock system (Tom)
+        Streamline the passing of information within the server, the
+        optimizer, and the lock system (Tom)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Allow pg_config to be compiled using MSVC (Andrew Dunstan)
+        Allow <application>pg_config</> to be compiled using MSVC (Andrew)
        </para>
        <para>
-        This is required to build DBD::Pg using MSVC.
+        This is required to build DBD::Pg using <application>MSVC</>.
        </para>
       </listitem>
 
@@ -1393,50 +1833,87 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.343 2005/08/23 12:46:35 momjian
         Remove support for Kerberos V4 (Magnus)
        </para>
        <para>
-        Kerberos 4 had security vulnerabilities and is no longer being
-        maintained by the authors.
+        Kerberos 4 had security vulnerabilities and is no longer
+        maintained.
+       </para>
+      </listitem>
+
+      <listitem>
+       <para>
+        Code cleanups (Coverity static analysis performed by
+        EnterpriseDB)
+       </para>
+      </listitem>
+
+      <listitem>
+       <para>
+        Modify <filename>postgresql.conf</> to use documentation defaults
+        <literal>on</>/<literal>off</> rather than
+        <literal>true</>/<literal>false</> (Bruce)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Code cleanups (Coverity static analysis performed by EnterpriseDB)
+        Enhance <application>pg_config</> to be able to report more
+        build-time values (Tom)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Modify postgresql.conf to use documention defaults on/off rather 
-        than true/false (Bruce)
+        Allow <application>libpq</application> to be built thread-safe
+        on Windows (Dave Page)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Enhance pg_config to be able to report more build-time values (Tom)
+        Allow IPv6 connections to be used on Win32 (Andrew)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Replace rtree index code with code from /contrib/rtree_gist (Tom)
+        Move private declarations from <filename>gist.h</filename> to
+        <filename>gist_private.h</filename> (Neil)
        </para>
+
        <para>
-        The improved capabilities of GIST indexes made this possible.
+        In previous releases, <filename>gist.h</> contained both the
+        public GiST API (intended for use by authors of GiST index
+        implementations) as well as some private declarations used by
+        the implementation of GiST itself. The latter have been moved
+        to a separate file, <filename>gist_private.h</>. Most GiST
+        index implementations should be unaffected.
        </para>
       </listitem>
 
+      <listitem>
+       <para>
+        Overhaul GiST memory management (Neil)
+       </para>
+
+       <para>
+        GiST methods are now always invoked in a short-lived memory
+        context. Therefore, memory allocated via <function>palloc()</>
+        will be reclaimed automatically, so GiST index implementations
+        do not need to manually release allocated memory via
+        <function>pfree()</>.
+       </para>
+      </listitem>
      </itemizedlist>
     </sect3>
-  
-  
+
+
     <sect3>
      <title>Contrib Changes</title>
      <itemizedlist>
   
       <listitem>
        <para>
-        Add /contrib/pg_buffercache contrib module (Mark Kirkwood)
+        Add <filename>/contrib/pg_buffercache</> contrib module (Mark
+        Kirkwood)
        </para>
        <para>
         This displays the contents of the buffer cache, for debugging and
@@ -1446,25 +1923,28 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.343 2005/08/23 12:46:35 momjian
 
       <listitem>
        <para>
-        Remove /contrib/array because it is obsolete (Tom)
+        Remove <filename>/contrib/array</> because it is obsolete (Tom)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Cleanup the contrib/lo module (Tom)
+        Clean up the <filename>/contrib/lo</> module (Tom)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Move /contrib/findoidjoins to src/tools (Tom)
+        Move <filename>/contrib/findoidjoins</> to
+        <filename>/src/tools</> (Tom)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Remove the &lt;&lt, &gt;&gt;, &amp;&lt, and &amp;&gt; operators for contrib/cube
+        Remove the <literal>&lt;&lt</>, <literal>&gt;&gt;</>,
+        <literal>&amp;&lt</>, and <literal>&amp;&gt;</> operators from
+        <filename>/contrib/cube</>
        </para>
        <para>
         These operators were not useful.
@@ -1473,29 +1953,56 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.343 2005/08/23 12:46:35 momjian
 
       <listitem>
        <para>
-        Improve /contrib/btree_gist (Janko Richter)
+        Improve <filename>/contrib/btree_gist</> (Janko Richter)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        /contrib/pgcrypto - Remove support for libmhash/libmcrypt (Marko Kreen)
+        Improve <filename>/contrib/pgcrypto</> (Marko Kreen)
        </para>
-      </listitem>
 
-      <listitem>
-       <para>
-        /contrib/pgcrypto - Add support for new encryption methods (Marko Kreen)
-       </para>
-       <para>
-        3des and AES
-        SHA2 (SHA256, SHA384, SHA512)
-        Fortuna PRNG
-        PGP encryption
-        RSA key
-       </para>
+       <itemizedlist>
+  
+        <listitem>
+         <para>
+          Implementation of OpenPGP symmetric-key and public-key encryption
+         </para>
+         <para>
+          Both RSA and Elgamal public-key algorithms are supported.
+         </para>
+        </listitem>
+
+        <listitem>
+         <para>
+          Stand alone build: include SHA256/384/512 hashes, Fortuna PRNG
+         </para>
+        </listitem>
+
+        <listitem>
+         <para>
+          OpenSSL build: support 3DES, use internal AES with OpenSSL &lt; 0.9.7
+         </para>
+        </listitem>
+
+        <listitem>
+         <para>
+          Take build parameters (OpenSSL, zlib) from <filename>configure</> result
+         </para>
+         <para>
+          There is no need to edit the <filename>Makefile</> anymore.
+         </para>
+        </listitem>
+
+        <listitem>
+         <para>
+          Remove support for <filename>libmhash</> and <filename>libmcrypt</>
+         </para>
+        </listitem>
+
+       </itemizedlist>
       </listitem>
-        
+
      </itemizedlist>
     </sect3>
   
@@ -1538,7 +2045,7 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.343 2005/08/23 12:46:35 momjian
 
     <para>
      The lesser problem is that the <filename>contrib/tsearch2</> module
-     creates several functions that are misdeclared to return
+     creates several functions that are improperly declared to return
      <type>internal</> when they do not accept <type>internal</> arguments.
      This breaks type safety for all functions using <type>internal</>
      arguments.