I have just applied the attached patch from Josh Berkus to update the
9.0 release notes.
--
Bruce Momjian <bruce@momjian.us> http://momjian.us
EnterpriseDB http://enterprisedb.com
+ None of us is going to be here forever. +
Index: doc/src/sgml/release-9.0.sgml
===================================================================
RCS file: /cvsroot/pgsql/doc/src/sgml/release-9.0.sgml,v
retrieving revision 2.28
diff -c -c -r2.28 release-9.0.sgml
*** doc/src/sgml/release-9.0.sgml 7 Jun 2010 02:01:08 -0000 2.28
--- doc/src/sgml/release-9.0.sgml 10 Jun 2010 21:42:05 -0000
***************
*** 8,17 ****
<simpara>2010-??-??</simpara>
</note>
- <!-- beta2 notes
- recovery_connections -> hot_standby
- -->
-
<sect2>
<title>Overview</title>
--- 8,13 ----
***************
*** 32,154 ****
<!-- 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>
</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
</para>
</listitem>
<listitem>
<para>
! Allow <link linkend="SQL-NOTIFY"><command>NOTIFY</></link>
! to pass an optional string to listeners
</para>
</listitem>
<listitem>
<para>
! Change <command>VACUUM FULL</> to rewrite the entire table and
! indexes, rather than moving around single rows to compact space
</para>
</listitem>
<listitem>
<para>
! Add prefix support for the full text search synonym dictionary
</para>
</listitem>
<listitem>
<para>
! Use red-black trees for <acronym>GIN</> index creation
</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</>
</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</>
</para>
</listitem>
--- 28,105 ----
<!-- This list duplicates items below, but without authors or details-->
<listitem>
<para>
! 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>
! 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>
! 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>
! Triggers now support two new features,
! SQL-compliant <link
! linkend="SQL-CREATETRIGGER">per-column triggers</link>, and
! conditional trigger execution.
</para>
</listitem>
<listitem>
<para>
! <link linkend="SQL-CREATETABLE-compatibility">Deferrable
! unique constraints, now permit mass updates to unique keys.</link>
</para>
</listitem>
<listitem>
<para>
! 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>
! 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>
! 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,170 ****
<listitem>
<para>
Add <link linkend="pgupgrade"><filename>/contrib/pg_upgrade</></link>
! to support in-place upgrades
</para>
</listitem>
--- 115,121 ----
<listitem>
<para>
Add <link linkend="pgupgrade"><filename>/contrib/pg_upgrade</></link>
! to support in-place upgrades from 8.3 or 8.4 to 9.0.
</para>
</listitem>
***************
*** 208,214 ****
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)
</para>
</listitem>
--- 159,165 ----
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)
</para>
</listitem>
***************
*** 307,315 ****
</para>
<para>
! Administrators still can rename such columns manually. Expression
! index names are also not renamed. WHY ARE EXPRESSION INDEXES
! SIGNIFICANT?
</para>
</listitem>
--- 258,280 ----
</para>
<para>
! 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,339 ****
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.
</para>
</listitem>
--- 298,305 ----
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, but not consistently. Stored procedures
! with naming conflicts will probably need to be refactored.
</para>
</listitem>
***************
*** 357,363 ****
</para>
<para>
! Variables can be double-quoted to avoid this restriction.
</para>
</listitem>
</itemizedlist>
--- 323,329 ----
</para>
<para>
! Variables can be double-quoted to avoid this restriction.
</para>
</listitem>
</itemizedlist>
***************
*** 372,380 ****
<title>Server</title>
<sect4>
! <title>Continuous Archiving</title>
! <itemizedlist>
<listitem>
<para>
Allow continuous archive standby systems to accept read-only queries
--- 338,354 ----
<title>Server</title>
<sect4>
! <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,401 ****
--- 370,376 ----
</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,426 ****
--- 396,407 ----
<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,480 ****
<title>Optimizer</title>
<itemizedlist>
<listitem>
<para>
! Allow <literal>IS NOT NULL</> restrictions to use indexes (Tom Lane)
</para>
<para>
! This is particularly useful for finding
! <function>MAX()</>/<function>MIN()</> values in indexes that also
! contain NULLs.
</para>
</listitem>
<listitem>
<para>
! Remove unnecessary <link linkend="queries-join">outer
! joins</link> (Robert Haas)
</para>
<para>
! Outer joins where the inner side is unique and not referenced in
! the query are unnecessary and are therefore now removed.
</para>
</listitem>
--- 435,464 ----
<title>Optimizer</title>
<itemizedlist>
+
<listitem>
<para>
! Remove unnecessary <link linkend="queries-join">outer
! joins</link> (Robert Haas)
</para>
<para>
! 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>
! Allow <literal>IS NOT NULL</> restrictions to use indexes (Tom Lane)
</para>
<para>
! This is particularly useful for finding
! <function>MAX()</>/<function>MIN()</> values in indexes that also
! contain NULLs.
</para>
</listitem>
***************
*** 567,573 ****
<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</>.
</para>
</listitem>
--- 551,559 ----
<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</>. Database administrators
! can use this feature to fix some poor statistics, especially on
! tables with millions or billions of rows.
</para>
</listitem>
***************
*** 900,907 ****
</para>
<para>
! It currently supports tables, views, sequences, and functions, and
! also has per-schema control.
</para>
</listitem>
--- 886,895 ----
</para>
<para>
! 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,1002 ****
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.
</para>
</listitem>
<listitem>
--- 983,999 ----
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.
! </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,1031 ****
--- 1023,1035 ----
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,1061 ****
</para>
<para>
! This greatly improves performance for these operations.
</para>
</listitem>
--- 1059,1067 ----
</para>
<para>
! 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>
***************
*** 1116,1126 ****
--- 1122,1145 ----
<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
activity (Itagaki Takahiro)
</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.
***************
*** 1136,1148 ****
<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
(Robert Haas)
</para>
--- 1155,1160 ----
***************
*** 1169,1176 ****
</para>
<para>
! The previous method was usually slower and caused index bloat.
</para>
</listitem>
<listitem>
--- 1181,1191 ----
</para>
<para>
! 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,1236 ****
</para>
<para>
! Red-black trees are self-balanced so allow for faster index
! creation.
</para>
</listitem>
</itemizedlist>
--- 1243,1252 ----
</para>
<para>
! Red-black trees are self-balanced. This means much faster
! GIN index creation.
</para>
+
</listitem>
</itemizedlist>