Update text of 9.0 release notes
Josh Berkus
This commit is contained in:
parent
56834fc759
commit
c46f861c0d
@ -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">
|
<sect1 id="release-9-0">
|
||||||
<title>Release 9.0</title>
|
<title>Release 9.0</title>
|
||||||
@ -8,10 +8,6 @@
|
|||||||
<simpara>2010-??-??</simpara>
|
<simpara>2010-??-??</simpara>
|
||||||
</note>
|
</note>
|
||||||
|
|
||||||
<!-- beta2 notes
|
|
||||||
recovery_connections -> hot_standby
|
|
||||||
-->
|
|
||||||
|
|
||||||
<sect2>
|
<sect2>
|
||||||
<title>Overview</title>
|
<title>Overview</title>
|
||||||
|
|
||||||
@ -32,123 +28,78 @@ recovery_connections -> hot_standby
|
|||||||
<!-- This list duplicates items below, but without authors or details-->
|
<!-- This list duplicates items below, but without authors or details-->
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
Allow continuous archive standby systems to accept read-only queries
|
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>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Allow continuous archive (<acronym>WAL</>) files to be streamed to a
|
Easier database object permissions management. <link
|
||||||
standby system
|
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>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Add the ability to make mass permission changes per
|
Broadly enhanced stored procedure support.
|
||||||
schema using the new <link
|
The <link linkend="SQL-DO"><command>DO</></link> statement permits
|
||||||
linkend="SQL-GRANT"><command>GRANT</>/<command>REVOKE
|
ad-hoc or anonymous code blocks. Functions can now be called using named
|
||||||
IN SCHEMA</></link> clause
|
parameters. PL/pgSQL is now installed by default, and PL/Perl and PL/Python
|
||||||
|
have been enhanced in several ways.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Add the ability to control large object permissions with
|
Triggers now support two new features,
|
||||||
<command>GRANT</>/<command>REVOKE</>
|
SQL-compliant <link
|
||||||
|
linkend="SQL-CREATETRIGGER">per-column triggers</link>, and
|
||||||
|
conditional trigger execution.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Implement anonymous functions using the <link
|
<link linkend="SQL-CREATETABLE-compatibility">Deferrable
|
||||||
linkend="SQL-DO"><command>DO</></link> statement
|
unique constraints, now permit mass updates to unique keys.</link>
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Allow function calls to supply parameter names and match them to named
|
Exclusion constraints let database designers define uniqueness
|
||||||
parameters in the function definition (Pavel Stehule)
|
based on complex criteria, including for non-scalar data such
|
||||||
|
as time periods, ranges and arrays.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Install server-side language PL/pgSQL by default
|
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>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Major PL/Perl enhancements
|
As part of our decade-long effort to eliminate the pain of VACUUM,
|
||||||
</para>
|
<command>VACUUM FULL</> is not substantially faster by
|
||||||
</listitem>
|
rewriting the entire table and
|
||||||
|
indexes, rather than moving around single rows to compact space.
|
||||||
<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>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
@ -164,7 +115,7 @@ recovery_connections -> hot_standby
|
|||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Add <link linkend="pgupgrade"><filename>/contrib/pg_upgrade</></link>
|
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>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
@ -208,7 +159,7 @@ recovery_connections -> hot_standby
|
|||||||
Remove server variable <varname>regex_flavor</>, which
|
Remove server variable <varname>regex_flavor</>, which
|
||||||
was defaulted to <link
|
was defaulted to <link
|
||||||
linkend="posix-syntax-details"><literal>advanced</></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>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
@ -307,9 +258,23 @@ recovery_connections -> hot_standby
|
|||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
Administrators still can rename such columns manually. Expression
|
Administrators still can rename such columns manually. This change
|
||||||
index names are also not renamed. WHY ARE EXPRESSION INDEXES
|
will require an update of the JDBC driver and possibly other drivers
|
||||||
SIGNIFICANT?
|
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>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
@ -333,7 +298,8 @@ recovery_connections -> hot_standby
|
|||||||
linkend="plpgsql-var-subst"><varname>plpgsql.variable_conflict</></link>,
|
linkend="plpgsql-var-subst"><varname>plpgsql.variable_conflict</></link>,
|
||||||
or by the per-function option <literal>#variable_conflict</>.
|
or by the per-function option <literal>#variable_conflict</>.
|
||||||
The former behavior was to bind to variable names over
|
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>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
@ -372,9 +338,17 @@ recovery_connections -> hot_standby
|
|||||||
<title>Server</title>
|
<title>Server</title>
|
||||||
|
|
||||||
<sect4>
|
<sect4>
|
||||||
<title>Continuous Archiving</title>
|
<title>Continuous Archiving and Binary Replication</title>
|
||||||
<itemizedlist>
|
|
||||||
|
|
||||||
|
<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>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Allow continuous archive standby systems to accept read-only queries
|
Allow continuous archive standby systems to accept read-only queries
|
||||||
@ -396,6 +370,7 @@ recovery_connections -> hot_standby
|
|||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
|
This feature is called Streaming Replication.
|
||||||
Previously <acronym>WAL</> files could be sent to standby systems only
|
Previously <acronym>WAL</> files could be sent to standby systems only
|
||||||
as 16 megabytes files; this allows master changes to be sent to the
|
as 16 megabytes files; this allows master changes to be sent to the
|
||||||
standby with very little delay. There are new <filename>postgresql.conf</>
|
standby with very little delay. There are new <filename>postgresql.conf</>
|
||||||
@ -421,6 +396,12 @@ recovery_connections -> hot_standby
|
|||||||
|
|
||||||
<sect4>
|
<sect4>
|
||||||
<title>Performance</title>
|
<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>
|
<itemizedlist>
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
@ -454,17 +435,6 @@ recovery_connections -> hot_standby
|
|||||||
<title>Optimizer</title>
|
<title>Optimizer</title>
|
||||||
|
|
||||||
<itemizedlist>
|
<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>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
@ -474,7 +444,21 @@ recovery_connections -> hot_standby
|
|||||||
|
|
||||||
<para>
|
<para>
|
||||||
Outer joins where the inner side is unique and not referenced in
|
Outer joins where the inner side is unique and not referenced in
|
||||||
the query are unnecessary and are therefore now removed.
|
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>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
@ -567,7 +551,9 @@ recovery_connections -> hot_standby
|
|||||||
<para>
|
<para>
|
||||||
This allows user-override of the number or percentage of distinct
|
This allows user-override of the number or percentage of distinct
|
||||||
values for a column and optionally its child tables. This value
|
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>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
@ -900,8 +886,10 @@ recovery_connections -> hot_standby
|
|||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
It currently supports tables, views, sequences, and functions, and
|
This greatly simplifies the assignment of object priveleges in
|
||||||
also has per-schema control.
|
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>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
@ -997,6 +985,15 @@ recovery_connections -> hot_standby
|
|||||||
the real value of this feature is in using complex
|
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>
|
||||||
|
|
||||||
|
<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>
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
@ -1026,6 +1023,13 @@ recovery_connections -> hot_standby
|
|||||||
linkend="SQL-GRANT"><command>GRANT</>/<command>REVOKE
|
linkend="SQL-GRANT"><command>GRANT</>/<command>REVOKE
|
||||||
IN SCHEMA</></link> clause (Petr Jelinek)
|
IN SCHEMA</></link> clause (Petr Jelinek)
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
This simplifies the assignment of object permissions
|
||||||
|
and makes it easier to utilize database roles for application
|
||||||
|
data security.
|
||||||
|
</para>
|
||||||
|
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
@ -1055,7 +1059,9 @@ recovery_connections -> hot_standby
|
|||||||
</para>
|
</para>
|
||||||
|
|
||||||
<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>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
@ -1114,6 +1120,18 @@ recovery_connections -> hot_standby
|
|||||||
<title><link linkend="SQL-EXPLAIN"><command>EXPLAIN</></link></title>
|
<title><link linkend="SQL-EXPLAIN"><command>EXPLAIN</></link></title>
|
||||||
<itemizedlist>
|
<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>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Add new <command>EXPLAIN (BUFFERS)</> to report query buffer
|
Add new <command>EXPLAIN (BUFFERS)</> to report query buffer
|
||||||
@ -1121,6 +1139,7 @@ recovery_connections -> hot_standby
|
|||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
|
This allows better query profiling for individual queries.
|
||||||
log_*_stats log output, e.g. <link
|
log_*_stats log output, e.g. <link
|
||||||
linkend="runtime-config-statistics-monitor">log_statement_stats</link>,
|
linkend="runtime-config-statistics-monitor">log_statement_stats</link>,
|
||||||
no longer shows this information.
|
no longer shows this information.
|
||||||
@ -1134,13 +1153,6 @@ recovery_connections -> hot_standby
|
|||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
<listitem>
|
|
||||||
<para>
|
|
||||||
Allow <command>EXPLAIN</> output in <acronym>XML</>, <acronym>JSON</>,
|
|
||||||
and <acronym>YAML</> formats (Robert Haas, Greg Sabino Mullane)
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
Allow <command>EXPLAIN</> options to be specified inside parentheses
|
Allow <command>EXPLAIN</> options to be specified inside parentheses
|
||||||
@ -1170,7 +1182,10 @@ 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>
|
</para>
|
||||||
|
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
@ -1228,9 +1243,10 @@ recovery_connections -> hot_standby
|
|||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
Red-black trees are self-balanced so allow for faster index
|
Red-black trees are self-balanced. This means much faster
|
||||||
creation.
|
GIN index creation.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user