]> granicus.if.org Git - postgresql/commitdiff
Remove alpha release notes.
authorRobert Haas <rhaas@postgresql.org>
Fri, 25 Mar 2011 15:52:11 +0000 (11:52 -0400)
committerRobert Haas <rhaas@postgresql.org>
Fri, 25 Mar 2011 15:52:11 +0000 (11:52 -0400)
Temporarily move some of the alpha release note disclaimers into the regular
release notes, for the sake of alpha5.

doc/src/sgml/release-9.1.sgml

index 1a1bac1e10dc4c8eabf874d28760b3a2235b9e04..272304972d093cce4923f02e0dbf11e1a1d00a6f 100644 (file)
@@ -1,8 +1,42 @@
 <!-- doc/src/sgml/release-9.1.sgml -->
 
  <sect1 id="release-9-1">
-  <title>Release 9.1</title>
+  <title>Release 9.1alpha5</title>
 
+  <sect2>
+    <title>Overview</title>
+    <para>
+      PostgreSQL alpha releases are snapshots of development code.
+      They are intended to preview and test upcoming features and to
+      provide the possibility for early feedback. They should not be
+      used in production installations or active development projects.
+      While the PostgreSQL code is continuously subject to a number
+      of automated and manual tests, alpha releases might have serious
+      bugs. Also features may be changed incompatibly or removed at
+      any time during the development cycle.
+    </para>
+    <para>
+      The development cycle of a PostgreSQL major release alternates
+      between periods of development and periods of integration work,
+      called commit fests, normally one month each. Alpha releases are
+      planned to be produced at the end of every commit fest, thus every
+      two months. Since the first commit fest starts within a month from
+      the beginning of development altogether, early alpha releases are
+      not indicative of the likely feature set of the final release.
+    </para>
+  </sect2>
+  <sect2>
+    <title>Testing</title>
+    <para>
+      The primary reason we release alphas is to get users to test new
+      features as early as possible.  If you are interested in helping
+      with organized testing, please see
+      <ulink url="http://wiki.postgresql.org/wiki/HowToBetaTest">the
+      testing information page</ulink>.
+      </para>
+  </sect2>
+
+<!--
   <note>
    <title>Release Date</title>
    <simpara>2011-??-??</simpara>
    <para>
     This release of
     <productname>PostgreSQL</> adds ...  Major enhancements include:
+    (This list duplicates items below, but without authors or details)
    </para>
 
-    <!-- This list duplicates items below, but without authors or details-->
 
    <para>
     The above items are explained in more detail in the sections below.
    </para>
 
   </sect2>
+-->
 
   <sect2>
 
 
   </sect2>
  </sect1>
-
-
-
-<!-- This is (hopefully) up-to-date with commits through 2011-03-08 -->
-
-
- <sect1 id="release-9-1-alpha">
-  <title>Release 9.1alpha4</title>
-  <sect2>
-    <title>Overview</title>
-    <para>
-      PostgreSQL alpha releases are snapshots of development code.
-      They are intended to preview and test upcoming features and to
-      provide the possibility for early feedback. They should not be
-      used in production installations or active development projects.
-      While the PostgreSQL code is continuously subject to a number
-      of automated and manual tests, alpha releases might have serious
-      bugs. Also features may be changed incompatibly or removed at
-      any time during the development cycle.
-    </para>
-    <para>
-      The development cycle of a PostgreSQL major release alternates
-      between periods of development and periods of integration work,
-      called commit fests, normally one month each. Alpha releases are
-      planned to be produced at the end of every commit fest, thus every
-      two months. Since the first commit fest starts within a month from
-      the beginning of development altogether, early alpha releases are
-      not indicative of the likely feature set of the final release.
-    </para>
-    <para>
-      The release notes below highlight user visible changes and new
-      features. There are normally numerous bug fixes and performance
-      improvements in every new snapshot of PostgreSQL, and it would be
-      too bulky to attempt to list them all. Note that many bug fixes are
-      also backported to stable releases of PostgreSQL, and you should be
-      using those if you are looking for bug-fix-only upgrades for your
-      current installations.
-    </para>
-    <para>
-      These notes are cumulative over all alpha releases of the current
-      development cycle.  Items that are new in the latest alpha release are
-      <emphasis>emphasized</emphasis>.
-    </para>
-  </sect2>
-  <sect2>
-    <title>Migration</title>
-    <para>
-      To upgrade from any release to an alpha release or from an alpha
-      release to any other release will most likely require a
-      dump/restore upgrade procedure. It may happen that this is not
-      necessary in particular cases, but that is not verified beforehand.
-      (The server will warn you in any case when a dump/restore is
-      necessary if you attempt to use it with an old data directory.)
-      Note, however, that the dump/restore upgrade procedure is expected
-      to work for alpha releases, and problems in this area should be
-      reported.
-    </para>
-  </sect2>
-  <sect2>
-    <title>Testing</title>
-    <para>
-      The primary reason we release alphas is to get users to test new
-      features as early as possible.  If you are interested in helping
-      with organized testing, please see
-      <ulink url="http://wiki.postgresql.org/wiki/HowToBetaTest">the
-      testing information page</ulink>.
-      </para>
-  </sect2>
-  <sect2>
-    <title>Changes</title>
-
-    <sect3>
-      <title>Replication and Recovery</title>
-      <itemizedlist>
-
-       <listitem>
-        <para>
-         <emphasis>Support named restore points</emphasis>
-        </para>
-        <para>
-         Named restore points can be created using a new server function,
-         pg_create_restore_point.  A new recovery.conf parameter,
-         recovery_target_name, allows recovery to stop at a named restore
-         point.
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>Add new <filename>recovery.conf</> parameter, pause_at_recovery_target,
-         which defaults to on</emphasis>
-        </para>
-        <para>
-         This is a behavior change from previous releases, which entered normal
-         running upon reaching the recovery target.
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>Add pg_is_xlog_replay_paused, pg_xlog_replay_pause, and
-         pg_xlog_replay_resume functions</emphasis>
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>Allow standby servers to send information on running
-         transactions back to the master</emphasis>
-        </para>
-        <para>
-         When enabled, this prevents most recovery conflicts on the slave,
-         but may cause MVCC bloat on the master.
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>Support streaming base backups</emphasis>
-        </para>
-        <para>
-         A new client, pg_basebackup, can be used to perform a streaming base
-         backup.
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>Synchronous replication</emphasis>
-        </para>
-        <para>
-         When enabled, transaction commit will wait for WAL records to be
-         replicated before informing the client that a transaction has
-         successfully committed.
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>When recovery_target_timeline='latest', periodically
-         rescan the archive for new timelines</emphasis>
-        </para>
-       </listitem>
-
-      </itemizedlist>
-    </sect3>
-
-    <sect3>
-      <title>SQL Features</title>
-      <itemizedlist>
-
-       <listitem>
-        <para>
-         Add ALTER ... SET SCHEMA support for conversions,
-         operators, operator classes, operator families, text search
-         configurations, text search dictionaries, text search
-         parsers, and text search templates
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Make TRUNCATE ... RESTART IDENTITY restart sequences transactionally
-        </para>
-
-        <para>
-         Previously, the sequence restart did not roll back on error.
-         This meant that an error between truncating and committing
-         left the sequences out of sync with the table contents, with
-         potentially bad consequences as were noted in a Warning on
-         the TRUNCATE man page.
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Prevent invoking I/O conversion casts via
-         functional/attribute notation
-        </para>
-        <para>
-         This was found to be confusing in some cases.  The
-         functionality is still available via cast syntax.
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Add ALTER TYPE ... ADD/DROP/ALTER/RENAME ATTRIBUTE
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Support triggers on views
-        </para>
-
-        <para>
-         This adds the SQL-standard concept of an INSTEAD OF trigger,
-         which is fired instead of performing a physical
-         insert/update/delete.  The trigger function is passed the
-         entire old and/or new rows of the view, and must figure out
-         what to do to the underlying tables to implement the update.
-         So this feature can be used to implement updatable views
-         using trigger programming style rather than rule hacking.
-         </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Allow WITH clauses to be attached to INSERT, UPDATE, DELETE
-         statements
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>Allow INSERT/UPDATE/DELETE to be used inside a WITH
-         clause</emphasis>
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Allow new values to be added to an existing enum type
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Recognize functional dependency on primary
-         keys
-        </para>
-        <para>
-         This allows a table's other columns to be referenced without listing
-         them in GROUP BY, so long as the primary key column(s) are listed in
-         GROUP BY.
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Add CREATE TABLE IF NOT EXISTS
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>Allow a table's row type to be cast to the table's supertype
-         if it's a type table</emphasis>
-        </para>
-        <para>
-         This is analagous to the existing facility that allows casting a row
-         type to a supertable's row type.
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>Make foreign data wrappers functional, and support FOREIGN
-         TABLEs</emphasis>
-        </para>
-        <para>
-         Foreign tables are component of SQL/MED, and provide a framework to
-         allow data stored outside the database to be accessed via SQL.
-         contrib/file_fdw is provided as a sample foreign data wrapper.
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>Allow a unique or primary key constraint to be created
-         using an existing index</emphasis>
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>Implement Serializable Snapshot Isolation, in order to
-         provide a more robust serializable transaction mode</emphasis>
-        </para>
-        <para>
-         In previous releases, the REPEATABLE READ and SERIALIZABLE isolation
-         levels were identical.  The historical behavior of REPEATABLE READ is
-         unchanged in this release, but SERIALIZABLE now provides stronger
-         guarantees.
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>Allow foreign key constraints to be added as initially
-         NOT VALID, and validated later</emphasis>
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>Allow multiple collations to be used within a single
-         database</emphasis>
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>Support extensions, which provide a cleaner method for
-         installing and upgrading add-on modules, such as those in contrib
-         </emphasis>
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>Teach ALTER TABLE ... SET DATA TYPE to avoid a table write
-         in some cases where it isn't necessary
-         </emphasis>
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>Add ENCODING option to COPY TO/FROM</emphasis>
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>Allow binary I/O of type "void"</emphasis>
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>Rearrange snapshot handlling to make rule expansion more
-         consistent</emphasis>
-        </para>
-        <para>
-         Portals, SQL functions, and SPI all now agree that a completely new
-         MVCC snapshot should be obtained only after fully executing each
-         original query.  This is equivalent to the prior behavior of EXPLAIN
-         ANALYZE.  It eliminates one source of concurrency hazards for
-         rules, and should also be marginally faster.
-        </para>
-       </listitem>
-
-      </itemizedlist>
-    </sect3>
-    <sect3>
-      <title>Performance</title>
-      <itemizedlist>
-
-       <listitem>
-        <para>
-         Optimize the commit_siblings configuration parameter
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         KNN GiST, otherwise known as order-by-operator support for GiST
-        </para>
-
-        <para>
-         This can be used to optimize nearest-neighbor searches.
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Improve process shutdown speed
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Speed up conversion of signed integers to C strings
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Support MergeAppend plans, to allow sorted output
-         from append relations
-        </para>
-
-        <para>
-         This eliminates the former need to sort the output of an
-         Append scan when an ordered scan of an inheritance tree is
-         wanted.  This should be particularly useful for fast-start
-         cases such as queries with LIMIT.
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>Support unlogged tables</emphasis>
-        </para>
-        <para>
-         The contents of an unlogged table are not WAL-logged; thus, they
-         are not replicated and are truncated whenever the database system
-         enters recovery.  Indexes on unlogged tables are also unlogged, but
-         GIST indexes on unlogged tables are not currently supported.
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>Hash joins now support right and full outer joins</emphasis>
-        </para>
-        <para>
-         Previously, full joins could be implemented only as a merge join,
-         and left and right outer joins could only hash the table on the
-         nullable side of the join.  This optimization is particularly
-         advantageous when the non-nullable side of a left or right outer
-         join is much smaller than the nullable side.
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Reduce the memory requirement for large ispell dictionaries
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Teach CLUSTER to use seqscan-and-sort when it's faster than
-         indexscan
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Improve GIN indexscan cost estimation
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>Fix GIN to support null keys, empty and null items, and
-         full index scans</emphasis>
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>Teach GIN to combine duplicate keys even across different
-         quals</emphasis>
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Performance improvements in pg_upgrade for uses with many tables
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Reduce lock levels of CREATE TRIGGER and some ALTER
-         TABLE, CREATE RULE actions
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Add some knowledge about prefix matches to
-         tsmatchsel()
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Replace the naive HYPOT() macro with a
-         standards-conformant hypotenuse function
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>Avoid unnecessary detoast when comparing unequal-length text
-         or bytea values for equality or inequality</emphasis>
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>Try to compact the background writer's fsync queue when
-         it overflows, instead of doing an fsync per block written</emphasis>
-        </para>
-       </listitem>
-
-      </itemizedlist>
-    </sect3>
-    <sect3>
-      <title>Server Settings</title>
-      <itemizedlist>
-
-       <listitem>
-        <para>
-         Change the default value of
-         <literal>standard_conforming_strings</> to
-         <literal>on</>
-        </para>
-        <warning>
-         <para>
-          This is a significant incompatibility with previous releases,
-          because it may break unwary applications in security-critical ways.
-         </para>
-        </warning>
-       </listitem>
-
-       <listitem>
-        <para>
-         Add <literal>log_file_mode</> parameter
-        </para>
-        <para>
-         This allows control of the file permissions set on log files created
-         by the syslogger process.
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Add <literal>restart_after_crash</> parameter
-        </para>
-        <para>
-         Normally, we automatically restart after a backend crash, but in
-         some cases when PostgreSQL is invoked by clusterware it may be
-         desirable to suppress this behavior, so we now provide an option which
-         does that.
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>Teach replication connections to respect the value of
-         log_connections</emphasis>
-        </para>
-        <para>
-         Previously, they were always logged.
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>Log restartpoints in the same fashion as
-         checkpoints</emphasis>
-        </para>
-        <para>
-         Previously, less information was logged for restartpoints.
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>By default, set wal_buffers to a reasonable value, based
-         on the setting for shared_buffers</emphasis>
-        </para>
-       </listitem>
-
-      </itemizedlist>
-    </sect3>
-    <sect3>
-      <title>Administration and Monitoring</title>
-      <itemizedlist>
-
-       <listitem>
-        <para>
-         Instrument checkpoint sync calls
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Use the same lexer for recovery.conf that has been used for
-         <filename>postgresql.conf</> (Dimitri Fontaine)
-        </para>
-
-        <para>
-         Among other things, this allows values in recovery.conf to be unquoted.
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Add column buffers_backend_fsync to pg_stat_bgwriter
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Add monitoring function pg_last_xact_replay_timestamp()
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Allow pg_ctl to register the service in either AUTO or DEMAND start
-         type
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Support host names and host key word <literal>all</literal>
-         in <filename>pg_hba.conf</filename>
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Make EXPLAIN show the function call expression of a
-         FunctionScan plan node, but only in VERBOSE mode
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Make EXPLAIN print PARAM_EXEC Params as
-         the referenced expressions, rather than just $N
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Add vacuum and analyze counters to pg_stat_*_tables
-         views
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Add stats functions and views to provide access to a
-         transaction's own statistics counts
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>Implement remaining fields of
-         information_schema.sequences view</emphasis>
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>Add a "conflicts" column to pg_stat_database</emphasis>
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>New system view pg_stat_database_conflicts</emphasis>
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>New system view pg_stat_replication</emphasis>
-        </para>
-        <para>
-         This view shows which replication slaves are connected to the master,
-         and reports their status and replication progress.
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>When an autovacuum worker (other than one performing an
-         anti-wraparound vacuum) is unable to obtain a lock on the target
-         relation without blocking, skip the relation</emphasis>
-        </para>
-        <para>
-         This avoids pinning down an autovacuum worker.  The next autovacuum
-         cycle will try again. 
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>Track time of last statistics reset on databases and
-         bgwriter</emphasis>
-        </para>
-       </listitem>
-
-      </itemizedlist>
-    </sect3>
-    <sect3>
-      <title>Security</title>
-      <itemizedlist>
-
-       <listitem>
-        <para>
-         Add SECURITY LABEL command
-        </para>
-        <para>
-         This is intended as infrastructure to support integration
-         with label-based mandatory access control systems such as
-         SE-Linux.
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Add server authentication over Unix-domain
-         sockets
-        </para>
-        <para>
-         This adds a libpq connection parameter <literal>requirepeer</> that
-         specifies the user name that the server process is expected to run
-         under.
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>Add REPLICATION privilege for ROLEs</emphasis>
-        </para>
-        <para>
-         This makes it possible for replication to be performed by a
-         non-superuser account.
-        </para>
-       </listitem>
-
-      </itemizedlist>
-    </sect3>
-    <sect3>
-      <title>Built-in Functions</title>
-      <itemizedlist>
-
-       <listitem>
-        <para>
-         Add pg_read_binary_file() and whole-file-at-once
-         versions of pg_read_file()
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Add new function format(), for sprintf-like string formatting
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Add pg_describe_object() function to obtain textual
-         descriptions of objects as stored in pg_depend
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Accept <literal>public</literal> as a pseudo-role
-         name in <literal>has_table_privilege()</literal> and friends
-         to see if a particular privilege has been granted to
-         <literal>PUBLIC</literal>
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Add string functions: concat(), concat_ws(), left(),
-         right(), and reverse()
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Add three-parameter forms of array_to_string and
-         string_to_array
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Add XMLEXISTS function
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Add xpath_exists() function
-        </para>
-        <para>
-         This is equivalent to XMLEXISTS except that it offers support for
-         namespace mapping.
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Add xml_is_well_formed, xml_is_well_formed_document,
-         xml_is_well_formed_content functions to the core XML
-         code
-        </para>
-        <para>
-         These supersede a version previously offered by contrib/xml2.
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>Change pg_last_xlog_receive_location not to move
-         backwards</emphasis>
-        </para>
-       </listitem>
-
-      </itemizedlist>
-    </sect3>
-    <sect3>
-      <title>Data Types</title>
-      <itemizedlist>
-
-       <listitem>
-        <para>
-         Allow numeric to use a more compact, 2-byte header in
-         many cases
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Add support for dividing money by money (yielding a
-         float8 result) and for casting between money and numeric
-        </para>
-       </listitem>
-
-      </itemizedlist>
-    </sect3>
-    <sect3>
-      <title>Server Tools</title>
-      <itemizedlist>
-
-       <listitem>
-        <para>
-         Add options to force quoting of all
-         identifiers
-        </para>
-        <para>
-         This includes a quote_all_identifiers parameter which affects the
-         behavior of the backend, and a --quote-all-identifiers argument to
-         pg_dump and pg_dumpall which sets the parameter and also affects the
-         quoting done internally by those applications.
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>Add a directory output format to pg_dump</emphasis>
-        </para>
-       </listitem>
-
-      </itemizedlist>
-    </sect3>
-    <sect3>
-      <title><application>psql</></title>
-      <itemizedlist>
-
-       <listitem>
-        <para>
-         Add <quote>S</quote> option to \dn command in <application>psql</>
-        </para>
-        <para>
-         System schemas are now hidden by default by \dn.
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Add \conninfo command to <application>psql</>, to show current connection
-         info
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Extend <application>psql</>'s \e and \ef commands so that a line number
-         can be specified, and the editor's cursor will be initially placed
-         on that line
-        </para>
-        <para>
-         To avoid assumptions about what switch the user's editor takes for
-         this purpose, there is a new <application>psql</> variable EDITOR_LINENUMBER_SWITCH
-         with (at present) no default value.
-        </para>
-       </listitem>
-       <listitem>
-        <para>
-         Add a \sf (show function) command to <application>psql</>, for those
-         times when you need to look at a function but don't wish to fire up
-         an editor
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Make <application>psql</> distinguish between unique indices and unique
-         constraints in \d printout
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>Add a \dL command to <application>psql</>, to list procedural
-         languages</emphasis>
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>Allow <application>psql</> to automatically deduce the client encoding from
-         the locale</emphasis>
-        </para>
-       </listitem>
-
-      </itemizedlist>
-    </sect3>
-    <sect3>
-      <title>libpq</title>
-      <itemizedlist>
-
-       <listitem>
-        <para>
-         Add PQlibVersion() function
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         When reporting the server as not responding, if the
-         hostname was supplied, also print the IP address
-        </para>
-        <para>
-         This allows IPv4 and IPv6 failures to be distinguished.  Also
-         useful when a hostname resolves to multiple IP addresses.
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Add functions PQping and PQpingParams to allow
-         detection of the server's status, including a status where
-         the server is running but refuses ordinary connections
-        </para>
-        <para>
-         pg_ctl uses the new function.  This fixes the case where
-         pg_ctl reports that the server is not running (cannot
-         connect) but in fact it is running.
-        </para>
-       </listitem>
-
-      </itemizedlist>
-    </sect3>
-    <sect3>
-      <title>ecpg</title>
-      <itemizedlist>
-       <listitem>
-        <para>
-         <emphasis>Allow ecpg to accept dynamic cursor names even in WHERE
-         CURRENT OF clauses</emphasis>
-        </para>
-       </listitem>
-      </itemizedlist>
-    </sect3>
-    <sect3>
-      <title>Procedural Languages</title>
-      <sect4>
-       <title>PL/pgSQL</title>
-      <itemizedlist>
-
-       <listitem>
-        <para>
-         Modify the handling of RAISE without parameters so that
-         the error it throws can be caught in the same places that could
-         catch an ordinary RAISE ERROR in the same location
-        </para>
-        <para>
-         The previous coding insisted on throwing the error from the block
-         containing the active exception handler; which is arguably more
-         surprising, and definitely unlike Oracle's behavior.
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Remove ancient PL/pgSQL line numbering hack
-        </para>
-        <para>
-         PL/pgSQL used to count the second line of the function body as
-         <quote>line 1</>, if the first line was zero-length.
-         While this hack arguably has some benefit in terms of making
-         PL/pgsql's line numbering match the programmer's expectations, it
-         also makes PL/pgsql inconsistent with the remaining PLs, making it
-         difficult for clients to reliably determine where the error
-         actually is.  On balance, it seems better to be consistent.
-        </para>
-       </listitem>
-
-      </itemizedlist>
-      </sect4>
-
-      <sect4>
-       <title>PL/Perl</title>
-
-       <itemizedlist>
-        <listitem>
-         <para>
-          Allow generic record arguments to PL/Perl functions
-         </para>
-        </listitem>
-
-        <listitem>
-         <para>
-          <emphasis>Convert PostgreSQL arrays passed to PL/perl functions to
-          Perl arrays</emphasis>
-         </para>
-        </listitem>
-       </itemizedlist>
-      </sect4>
-
-      <sect4>
-       <title>PL/Python</title>
-       <itemizedlist>
-
-        <listitem>
-         <para>
-          <emphasis>Fix an error when a set-returning function fails halfway
-          through</emphasis>
-         </para>
-        </listitem>
-
-        <listitem>
-         <para>
-          <emphasis>Make plpy.Fatal() raise FATAL, rather than ERROR</emphasis>
-         </para>
-        </listitem>
-
-        <listitem>
-         <para>
-          <emphasis>Skip dropped attributes when converting Python objects to
-          tuples</emphasis>
-         </para>
-        </listitem>
-
-        <listitem>
-         <para>
-          <emphasis>Improve the handling of exceptions</emphasis>
-         </para>
-         <para>
-          Fix the way that exceptions are handled by the plpy module for Python
-          3.  Get rid of the global variable holding the error state, and
-          instead arrange to report PostgreSQL errors to Python immediately.
-          Call PLy_spi_execute_fetch_result inside the try/catch block, so that
-          errors from fetching tuples are correct reported as errors in the
-          SPI call.  Use the built-in TypeError, not SPIError, for errors
-          having to do with argument counts or types.  Use SPIError, not simply
-          plpy.Error, for errors in PLy_spi_execute_plan.  Do not set
-          a Python exception if PyArg_ParseTuple failed, as it already sets
-          the correct exception.
-         </para>
-        </listitem>
-
-        <listitem>
-         <para>
-          <emphasis>Improve error reporting</emphasis>
-         </para>
-         <para>Better error messages for errors in compiling anonymous
-          PL/Python blocks.  Avoid prefixing error messages with the string
-          "PL/Python: ", which is redundant, given the error
-          context.  Provide a separate exception class for each error code
-          the backend defines, and make it possible to get the SQLSTATE from
-          the exception object.  Report Python errors from iterators
-          using PLy_elog, so that the Python exception is included in the
-          exception, and to avoid setting the errcode to
-          ERRCODE_DATA_EXCEPTION.
-         </para>
-        </listitem>
-
-        <listitem>
-         <para>
-          <emphasis>Check PL/Python functions for syntax errors at creation
-          time</emphasis>
-         </para>
-         <para>
-          Previously, even gross syntax errors would not be detected until
-          the function was executed.
-         </para>
-        </listitem>
-
-        <listitem>
-         <para>
-          <emphasis>Allow Python try/catch blocks to catch exceptions arising
-          from SPI calls</emphasis>
-         </para>
-        </listitem>
-
-        <listitem>
-         <para>
-          <emphasis>Invalidate PL/python functions with composite type
-          arguments when the type changes</emphasis>
-         </para>
-        </listitem>
-
-        <listitem>
-         <para>
-          <emphasis>Add quoting functions plpy.quote_ident, plpy.quote_literal,
-          and plpy.quote_nullable</emphasis>
-         </para>
-        </listitem>
-
-        <listitem>
-         <para>
-          <emphasis>Support table functions</emphasis>
-         </para>
-        </listitem>
-
-        <listitem>
-         <para>
-          <emphasis>Add a plpy.subtransaction() context manager</emphasis>
-         </para>
-        </listitem>
-
-        <listitem>
-         <para>
-          <emphasis>Assorted code cleanup</emphasis>
-         </para>
-         <para>
-          We now use HTABs instead of Python dictionary objects to cache
-          procedures.  palloc is used in TopMemoryContext instead of malloc.
-          Avoid use of undocumented API PyObject_NEW.  Free plan values in
-          the PlyPlanObject dealloc function.  Add braces around an if block,
-          for readability.  Refactor PLy_spi_prepare to save two levels of
-          indentation.  Avoid palloc(0).
-         </para>
-        </listitem>
-       </itemizedlist>
-      </sect4>
-    </sect3>
-
-    <sect3>
-      <title>Additional Supplied Modules</title>
-      <itemizedlist>
-
-       <listitem>
-        <para>
-         New module contrib/auth_delay
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>New module contrib/sepgsql, an SE-Linux integration for
-         PostgreSQL</emphasis>
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Updates to contrib/isn ISBN tables
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Add the ability to compute per-statement latencies (ie,
-         average execution times) to pgbench
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Teach levenshtein() about multi-byte
-         characters
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Add btree_gist support for searching on <quote>not
-         equals</quote>
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Add ssl_cipher() and ssl_version() functions to
-         contrib/sslinfo
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Remove the arbitrary (and undocumented) limit on the
-         number of parameter=value pairs that can be handled by
-         xslt_process()
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>New module contrib/pg_test_fsync, replacing
-         src/tools/test_fsync</emphasis>
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>In contrib/pageinspect, fix the heap_page_item to return
-         infomasks as 32 bit values</emphasis>
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>In contrib/btree_gist, support KNN GiST searches</emphasis>
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>In contrib/pg_trgm, support LIKE, ILIKE, and KNN GiST
-         searches</emphasis>
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>Several improvements to contrib/intarray</emphasis>
-        </para>
-        <para>
-         Correct the behavior of array containment operators, so that an empty
-         array is contained in any other array.  Fix bogus failures where
-         operators would claim that nulls were present when they really
-         weren't.  Remove arbitrary restriction to 1-D arrays.
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>Fix pg_upgrade not to insist on pg_dumpall and psql in the
-         old cluster, since we don't need them, but do check for pg_resetxlog
-         in the old and new clusters, since we do.  Avoid a useless attempt
-         to call pg_config in the old cluster.</emphasis>
-        </para>
-       </listitem>
-
-      </itemizedlist>
-    </sect3>
-    <sect3>
-      <title>Source Code, Build Options</title>
-      <itemizedlist>
-
-       <listitem>
-        <para>
-         Rewrite the GiST insertion logic so that the
-         post-recovery cleanup stage to finish incomplete inserts or
-         splits is not needed anymore
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Add support for collecting <quote>minidump</quote>-style crash dumps
-         on Windows
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Replace pg_class.relistemp column with relpersistence
-        </para>
-
-        <para>
-         This is for upcoming work on unlogged and global temporary tables.
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         GNU make 3.80 or newer is now required
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Improved support for parallel make, make -k, and make -q
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Include the backend ID in the relpath of temporary
-         relations
-        </para>
-        <para>
-         This allows us to reliably remove all leftover temporary relation
-         files on cluster startup without reference to system catalogs or
-         WAL; therefore, we no longer include temporary relations in
-         XLOG_XACT_COMMIT and XLOG_XACT_ABORT WAL records.
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Rewrite COMMENT ON <replaceable>object</> code for better
-         modularity, and add necessary locking
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Add a hook in ExecCheckRTPerms() for eventual use by
-         external security-checking modules
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Standardize names and calling conventions of
-         get_whatever_oid functions
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Make NestLoop plan nodes pass outer-relation variables
-         into their inner relation using the general PARAM_EXEC executor
-         parameter mechanism, rather than the ad-hoc kluge of passing the
-         outer tuple down through ExecReScan
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Make details of the Numeric representation private to
-         numeric.c
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         Suppress some compiler warnings from
-         <literal>clang</>
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>Allow make check in PL directories</emphasis>
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>Add a make check-world target</emphasis>
-        </para>
-       </listitem>
-
-       <listitem>
-        <para>
-         <emphasis>PGXS support for contrib/hstore</emphasis>
-        </para>
-       </listitem>
-
-      </itemizedlist>
-    </sect3>
-  </sect2>
- </sect1>
-