diff --git a/doc/src/sgml/release-9.0.sgml b/doc/src/sgml/release-9.0.sgml
index 8777a2c90403a788b8509807b736fb2c6a85045d..e5002c13415b8038ae835ff8c26e17e1f1d27bf0 100644
--- a/doc/src/sgml/release-9.0.sgml
+++ b/doc/src/sgml/release-9.0.sgml
@@ -1,4 +1,4 @@
-<!-- $PostgreSQL: pgsql/doc/src/sgml/release-9.0.sgml,v 2.28 2010/06/07 02:01:08 itagaki Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/release-9.0.sgml,v 2.29 2010/06/10 21:48:28 momjian Exp $ -->
 
  <sect1 id="release-9-0">
   <title>Release 9.0</title>
@@ -8,10 +8,6 @@
    <simpara>2010-??-??</simpara>
   </note>
 
-<!-- beta2 notes
-recovery_connections -> hot_standby
--->
-
   <sect2>
    <title>Overview</title>
 
@@ -32,123 +28,78 @@ recovery_connections -> hot_standby
     <!-- This list duplicates items below, but without authors or details-->
 
     <listitem>
-     <para>
-      Allow continuous archive standby systems to accept read-only queries
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Allow continuous archive (<acronym>WAL</>) files to be streamed to a
-      standby system
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Add the ability to make mass permission changes per
-       schema using the new <link
-       linkend="SQL-GRANT"><command>GRANT</>/<command>REVOKE
-       IN SCHEMA</></link> clause
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Add the ability to control large object permissions with
-      <command>GRANT</>/<command>REVOKE</>
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Implement anonymous functions using the <link
-      linkend="SQL-DO"><command>DO</></link> statement
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Allow function calls to supply parameter names and match them to named
-      parameters in the function definition (Pavel Stehule)
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Install server-side language PL/pgSQL by default
-     </para>
-    </listitem>
-
-    <listitem>
-     <para>
-      Major PL/Perl enhancements
-     </para>
-    </listitem>
 
-    <listitem>
-     <para>
-      Allow SQL-compliant <link
-      linkend="SQL-CREATETRIGGER">per-column triggers</link>
-     </para>
-    </listitem>
-
-    <listitem>
      <para>
-      Add <link linkend="SQL-CREATETABLE-compatibility">deferrable
-      unique constraints</link>
+      Built-in, binary, log-based replication.  This advance consists of two features:
+      Hot Standby allows continuous archive standby database servers to accept read-only
+      queries, and Streaming Replication allows continuous archive (<acronym>WAL</>) files 
+      to be streamed over a network port to a standby database server.
      </para>
     </listitem>
 
     <listitem>
      <para>
-      Have <link linkend="SQL-LISTEN"><command>LISTEN</></link>/<link
-      linkend="SQL-NOTIFY"><command>NOTIFY</></link> store events
-      in a memory queue, rather than a system table
+      Easier database object permissions management. <link
+      linkend="SQL-GRANT"><command>GRANT</>/<command>REVOKE
+      IN SCHEMA</></link> supports mass permissions changes, and
+      the <link linkend="SQL-ALTERDEFAULTPRIVILEGES"><command>ALTER
+      DEFAULT PRIVILEGES</></link> command controls privileges
+      of all newly-created objects.  Large object permissions now
+      support <command>GRANT</>/<command>REVOKE</> as well.
      </para>
     </listitem>
 
     <listitem>
      <para>
-      Allow <link linkend="SQL-NOTIFY"><command>NOTIFY</></link>
-      to pass an optional string to listeners
+      Broadly enhanced stored procedure support.
+      The <link linkend="SQL-DO"><command>DO</></link> statement permits
+      ad-hoc or anonymous code blocks.  Functions can now be called using named
+      parameters.  PL/pgSQL is now installed by default, and PL/Perl and PL/Python
+      have been enhanced in several ways.
      </para>
     </listitem>
 
     <listitem>
      <para>
-      Change <command>VACUUM FULL</> to rewrite the entire table and
-      indexes, rather than moving around single rows to compact space
+      Triggers now support two new features,
+      SQL-compliant <link
+      linkend="SQL-CREATETRIGGER">per-column triggers</link>, and 
+      conditional trigger execution.
      </para>
     </listitem>
 
     <listitem>
      <para>
-      Add prefix support for the full text search synonym dictionary
+      <link linkend="SQL-CREATETABLE-compatibility">Deferrable
+      unique constraints, now permit mass updates to unique keys.</link>
      </para>
     </listitem>
 
     <listitem>
      <para>
-      Use red-black trees for <acronym>GIN</> index creation
+      Exclusion constraints let database designers define uniqueness
+      based on complex criteria, including for non-scalar data such
+      as time periods, ranges and arrays.
      </para>
     </listitem>
 
     <listitem>
      <para>
-      Add <link
-      linkend="functions-binarystring-other"><function>get_bit()</></link>
-      and <function>set_bit()</> functions for <type>bit</>
-      strings, mirroring those for <type>bytea</>
+      The <link linkend="SQL-LISTEN"><command>LISTEN</></link>/<link
+      linkend="SQL-NOTIFY"><command>NOTIFY</></link> 
+      feature has been overhauled to make it into
+      a high-performance event queuing system.  It now stores
+      events in a memory-based queue, and it now allows delivery
+      of a string payload to listeners with each event.
      </para>
     </listitem>
 
     <listitem>
      <para>
-      Add the ability for clients to set an <link
-      linkend="libpq-connect-application-name">application
-      name</link>, which is displayed in
-      <structname>pg_stat_activity</>
+      As part of our decade-long effort to eliminate the pain of VACUUM,
+      <command>VACUUM FULL</> is not substantially faster by
+      rewriting the entire table and
+      indexes, rather than moving around single rows to compact space.
      </para>
     </listitem>
 
@@ -164,7 +115,7 @@ recovery_connections -> hot_standby
     <listitem>
      <para>
       Add <link linkend="pgupgrade"><filename>/contrib/pg_upgrade</></link>
-      to support in-place upgrades
+      to support in-place upgrades from 8.3 or 8.4 to 9.0.
      </para>
     </listitem>
 
@@ -208,7 +159,7 @@ recovery_connections -> hot_standby
       Remove server variable <varname>regex_flavor</>, which
       was defaulted to <link
       linkend="posix-syntax-details"><literal>advanced</></link>
-      (e.g. Perl-regex compatible) for many years (Tom Lane)
+      (e.g. Perl-regex compatible) for many years. (Tom Lane)
      </para>
     </listitem>
 
@@ -307,9 +258,23 @@ recovery_connections -> hot_standby
      </para>
 
      <para>
-      Administrators still can rename such columns manually. Expression
-      index names are also not renamed. WHY ARE EXPRESSION INDEXES
-      SIGNIFICANT?
+      Administrators still can rename such columns manually.  This change
+      will require an update of the JDBC driver and possibly other drivers
+      so that unique indexes are correctly recognized.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      No longer change function input variable names via 
+      <command>REPLACE FUNCTION</command>(Pavel Stehule).
+     </para>
+
+     <para>
+      In order to support names parameter calls, it is
+      no longer possible to change the aliases for input variables
+      in the function declaration in place.  You now have to <command>DROP
+      </command> and recreate the function.
      </para>
     </listitem>
 
@@ -333,7 +298,8 @@ recovery_connections -> hot_standby
       linkend="plpgsql-var-subst"><varname>plpgsql.variable_conflict</></link>,
       or by the per-function option <literal>#variable_conflict</>.
       The former behavior was to bind to variable names over
-      column names.
+      column names, but not consistently.  Stored procedures
+      with naming conflicts will probably need to be refactored.
      </para>
     </listitem>
 
@@ -357,7 +323,7 @@ recovery_connections -> hot_standby
      </para>
 
      <para>
-      Variables can be double-quoted to avoid this restriction.
+      Variables can be double-quoted to avoid this restriction.  
      </para>
     </listitem>
    </itemizedlist>
@@ -372,9 +338,17 @@ recovery_connections -> hot_standby
    <title>Server</title>
 
    <sect4>
-    <title>Continuous Archiving</title>
-    <itemizedlist>
+    <title>Continuous Archiving and Binary Replication</title>
+
+    <para>
+     PostgreSQL's native standby capability has been expanded both to
+     support read-only queries on standby slaves and to greatly reduce
+     the lag between master and standby servers.  For many users, this
+     will be a useful and low-administration form of replication, either
+     for high availability or for horizontal scalability.
+    </para>
 
+    <itemizedlist>
      <listitem>
       <para>
        Allow continuous archive standby systems to accept read-only queries
@@ -396,6 +370,7 @@ recovery_connections -> hot_standby
       </para>
 
       <para>
+       This feature is called Streaming Replication.
        Previously <acronym>WAL</> files could be sent to standby systems only
        as 16 megabytes files; this allows master changes to be sent to the
        standby with very little delay. There are new <filename>postgresql.conf</>
@@ -421,6 +396,12 @@ recovery_connections -> hot_standby
 
    <sect4>
     <title>Performance</title>
+
+    <para>
+     Version 9.0 also contains several performance and optimizer enhancements to 
+     improve specific uses of PostgreSQL and remedy certain poor-performing cases.
+    </para>
+
     <itemizedlist>
 
      <listitem>
@@ -454,27 +435,30 @@ recovery_connections -> hot_standby
     <title>Optimizer</title>
 
     <itemizedlist>
+
      <listitem>
       <para>
-       Allow <literal>IS NOT NULL</> restrictions to use indexes (Tom Lane)
+       Remove unnecessary <link linkend="queries-join">outer
+       joins</link> (Robert Haas)
       </para>
 
       <para>
-       This is particularly useful for finding
-       <function>MAX()</>/<function>MIN()</> values in indexes that also
-       contain NULLs.
+       Outer joins where the inner side is unique and not referenced in
+       the query are unnecessary and are therefore now removed.  This will 
+       accelerate many automatically generated queries, such as those created
+       by object-relational mappers.
       </para>
      </listitem>
 
      <listitem>
       <para>
-       Remove unnecessary <link linkend="queries-join">outer
-       joins</link> (Robert Haas)
+       Allow <literal>IS NOT NULL</> restrictions to use indexes (Tom Lane)
       </para>
 
       <para>
-       Outer joins where the inner side is unique and not referenced in
-       the query are unnecessary and are therefore now removed.
+       This is particularly useful for finding
+       <function>MAX()</>/<function>MIN()</> values in indexes that also
+       contain NULLs.
       </para>
      </listitem>
 
@@ -567,7 +551,9 @@ recovery_connections -> hot_standby
       <para>
        This allows user-override of the number or percentage of distinct
        values for a column and optionally its child tables. This value
-       is normally computed by <command>ANALYZE</>.
+       is normally computed by <command>ANALYZE</>.  Database administrators
+       can use this feature to fix some poor statistics, especially on
+       tables with millions or billions of rows.
       </para>
      </listitem>
 
@@ -900,8 +886,10 @@ recovery_connections -> hot_standby
       </para>
 
       <para>
-       It currently supports tables, views, sequences, and functions, and
-       also has per-schema control.
+       This greatly simplifies the assignment of object priveleges in
+       a complex database application.  Defaults currently support tables
+       views, sequences, and functions. Defaults may be assigned on a
+       per-schema basis or database-wide.
       </para>
      </listitem>
 
@@ -995,8 +983,17 @@ recovery_connections -> hot_standby
        TABLE CONSTRAINT ... EXCLUDE</></link> clause. While
        uniqueness checks could be specified using this syntax,
        the real value of this feature is in using complex
-       operators that do not have built-in constraints.
+       operators that do not have built-in constraints. 
+      </para>
+
+      <para>
+       The primary use of exclusion constraints is to allow defining
+       non-overlapping uniqueness, such as for time periods, arrays
+       or ranges of values. This supports data integrity at the 
+       table level for calendaring, time-management, and scientific
+       applications.
       </para>
+
      </listitem>
 
      <listitem>
@@ -1026,6 +1023,13 @@ recovery_connections -> hot_standby
        linkend="SQL-GRANT"><command>GRANT</>/<command>REVOKE
        IN SCHEMA</></link> clause (Petr Jelinek)
       </para>
+
+      <para>
+       This simplifies the assignment of object permissions
+       and makes it easier to utilize database roles for application
+       data security.
+      </para>
+
      </listitem>
 
      <listitem>
@@ -1055,7 +1059,9 @@ recovery_connections -> hot_standby
      </para>
 
      <para>
-      This greatly improves performance for these operations.
+      LISTEN/NOTIFY may now be used as a full-featured, high-performance
+      event queue system for PostgreSQL, with transactional support 
+      and guaranteed delivery.
      </para>
     </listitem>
 
@@ -1114,6 +1120,18 @@ recovery_connections -> hot_standby
     <title><link linkend="SQL-EXPLAIN"><command>EXPLAIN</></link></title>
     <itemizedlist>
 
+     <listitem>
+      <para>
+       Allow <command>EXPLAIN</> output in <acronym>XML</>, <acronym>JSON</>,
+       and <acronym>YAML</> formats (Robert Haas, Greg Sabino Mullane)
+      </para>
+
+      <para>
+       The new output formats will support the development of new tools 
+       for analysis of EXPLAIN output.
+      </para>
+     </listitem>
+
      <listitem>
       <para>
        Add new <command>EXPLAIN (BUFFERS)</> to report query buffer
@@ -1121,6 +1139,7 @@ recovery_connections -> hot_standby
       </para>
 
       <para>
+       This allows better query profiling for individual queries.
        log_*_stats log output, e.g. <link
        linkend="runtime-config-statistics-monitor">log_statement_stats</link>,
        no longer shows this information.
@@ -1134,13 +1153,6 @@ recovery_connections -> hot_standby
       </para>
      </listitem>
 
-     <listitem>
-      <para>
-       Allow <command>EXPLAIN</> output in <acronym>XML</>, <acronym>JSON</>,
-       and <acronym>YAML</> formats (Robert Haas, Greg Sabino Mullane)
-      </para>
-     </listitem>
-
      <listitem>
       <para>
        Allow <command>EXPLAIN</> options to be specified inside parentheses
@@ -1169,8 +1181,11 @@ recovery_connections -> hot_standby
       </para>
 
       <para>
-       The previous method was usually slower and caused index bloat.
+       The previous method was usually slower and caused index bloat.  
+       Note that the new method may use more disk space during VACUUM
+       FULL.
       </para>
+
      </listitem>
 
      <listitem>
@@ -1228,9 +1243,10 @@ recovery_connections -> hot_standby
       </para>
 
       <para>
-       Red-black trees are self-balanced so allow for faster index
-     creation.
+       Red-black trees are self-balanced.  This means much faster
+       GIN index creation.
       </para>
+
      </listitem>
 
     </itemizedlist>