|
|
|
@ -1,4 +1,4 @@ |
|
|
|
|
<!-- $PostgreSQL: pgsql/doc/src/sgml/release-9.0.sgml,v 2.35 2010/06/24 18:33:05 rhaas Exp $ --> |
|
|
|
|
<!-- $PostgreSQL: pgsql/doc/src/sgml/release-9.0.sgml,v 2.36 2010/06/29 21:20:19 tgl Exp $ --> |
|
|
|
|
|
|
|
|
|
<sect1 id="release-9-0"> |
|
|
|
|
<title>Release 9.0</title> |
|
|
|
@ -30,10 +30,11 @@ |
|
|
|
|
<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. |
|
|
|
|
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> |
|
|
|
|
|
|
|
|
@ -54,8 +55,9 @@ |
|
|
|
|
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, including support for Python3. |
|
|
|
|
parameters. PL/pgSQL is now installed by default, and PL/Perl and |
|
|
|
|
PL/Python have been enhanced in several ways, including support for |
|
|
|
|
Python3. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
@ -63,7 +65,7 @@ |
|
|
|
|
<para> |
|
|
|
|
Triggers now support two new features, |
|
|
|
|
SQL-compliant <link |
|
|
|
|
linkend="SQL-CREATETRIGGER">per-column triggers</link>, and |
|
|
|
|
linkend="SQL-CREATETRIGGER">per-column triggers</link>, and |
|
|
|
|
conditional trigger execution. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
@ -86,7 +88,7 @@ |
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
The <link linkend="SQL-LISTEN"><command>LISTEN</></link>/<link |
|
|
|
|
linkend="SQL-NOTIFY"><command>NOTIFY</></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 |
|
|
|
@ -134,16 +136,17 @@ |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
A dump/restore using <application>pg_dump</application> |
|
|
|
|
or use of <application>pg_upgrade</application> is required |
|
|
|
|
or use of <application>pg_upgrade</application> is required |
|
|
|
|
for those wishing to migrate data from any previous |
|
|
|
|
release. |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
Version 9.0 contains a number of changes which selectively break backwards compatibility |
|
|
|
|
in order to support new features and code quality improvements. Particularly, users |
|
|
|
|
who make extensive use of PL/pgSQL and/or PITR and Warm Standby should test their |
|
|
|
|
solutions for breakage. Observe the following incompatibilities: |
|
|
|
|
Version 9.0 contains a number of changes which selectively break backwards |
|
|
|
|
compatibility in order to support new features and code quality |
|
|
|
|
improvements. Particularly, users who make extensive use of PL/pgSQL |
|
|
|
|
and/or PITR and Warm Standby should test their solutions for breakage. |
|
|
|
|
Observe the following incompatibilities: |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<sect3> |
|
|
|
@ -270,15 +273,15 @@ |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
No longer change function input variable names via |
|
|
|
|
<command>REPLACE FUNCTION</command>(Pavel Stehule). |
|
|
|
|
<command>CREATE OR REPLACE FUNCTION</command> can no longer change |
|
|
|
|
the declared names of function parameters (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. |
|
|
|
|
In order to support named-parameter calls, it is |
|
|
|
|
no longer allowed to change the aliases for input variables |
|
|
|
|
in the declaration of an existing function. You now have to |
|
|
|
|
<command>DROP</command> and recreate the function. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
@ -287,46 +290,65 @@ |
|
|
|
|
</sect3> |
|
|
|
|
|
|
|
|
|
<sect3> |
|
|
|
|
<title>PL/pgSQL Variables</title> |
|
|
|
|
<title>PL/pgSQL</title> |
|
|
|
|
<itemizedlist> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Have PL/pgSQL throw an error if a variable name conflicts with a |
|
|
|
|
PL/pgSQL now throws an error if a variable name conflicts with a |
|
|
|
|
column name used in a query (Tom Lane) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
This behavior can be changed via the server variable <link |
|
|
|
|
The former behavior was to bind to variable names in preference to |
|
|
|
|
query column names, which often resulted in surprising misbehavior. |
|
|
|
|
Throwing an error allows easy detection of ambiguous situations. |
|
|
|
|
Although it's recommended that functions encountering this type of |
|
|
|
|
error be modified to remove the conflict, the old behavior can be |
|
|
|
|
restored if necessary via the configuration parameter <link |
|
|
|
|
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. |
|
|
|
|
or via the per-function option <literal>#variable_conflict</>. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Remove PL/pgSQL's <literal>RENAME</> declaration option (Tom Lane) |
|
|
|
|
PL/pgSQL no longer allows variable names that match SQL |
|
|
|
|
reserved words (Tom Lane) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
Instead, use <link |
|
|
|
|
linkend="plpgsql-declaration-parameters"><literal>ALIAS</></link>, |
|
|
|
|
which can now alias any variable, not just dollar sign |
|
|
|
|
variables, e.g. <literal>$1</>. |
|
|
|
|
This is a consequence of aligning the PL/pgSQL parser to match the |
|
|
|
|
core SQL parser more closely. If necessary, |
|
|
|
|
variable names can be double-quoted to avoid this restriction. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
PL/pgSQL no longer allows unquoted variables names that match SQL |
|
|
|
|
reserved words (Tom Lane) |
|
|
|
|
PL/pgSQL now requires columns of composite results to match the |
|
|
|
|
expected type modifier as well as base type (Pavel Stehule, Tom Lane) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
For example, if a column of the result type is declared as |
|
|
|
|
<literal>NUMERIC(30,2)</>, it is no longer acceptable to return a |
|
|
|
|
<literal>NUMERIC</> of some other precision in that column. Previous |
|
|
|
|
versions neglected to check the type modifier and would thus allow |
|
|
|
|
result rows that didn't actually conform to the declared restrictions. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Remove PL/pgSQL's <literal>RENAME</> declaration option (Tom Lane) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
Variables can be double-quoted to avoid this restriction. |
|
|
|
|
Instead of <literal>RENAME</>, use <link |
|
|
|
|
linkend="plpgsql-declaration-alias"><literal>ALIAS</></link>, |
|
|
|
|
which can now alias any variable, not just dollar sign |
|
|
|
|
parameter names (such as <literal>$1</>). |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
</itemizedlist> |
|
|
|
@ -339,12 +361,12 @@ |
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Remove support for platforms that don't have a working 64-bit |
|
|
|
|
integer data types (Tom Lane) |
|
|
|
|
integer data type (Tom Lane) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
It is believed all supported platforms have working 64-bit integer |
|
|
|
|
data types. |
|
|
|
|
It is believed all still-supported platforms have working 64-bit |
|
|
|
|
integer data types. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
</itemizedlist> |
|
|
|
@ -354,7 +376,7 @@ |
|
|
|
|
<sect2> |
|
|
|
|
<title>Changes</title> |
|
|
|
|
<para> |
|
|
|
|
Version 9.0 has an unprecedented number of new major features, |
|
|
|
|
Version 9.0 has an unprecedented number of new major features, |
|
|
|
|
and over 200 enhancements, improvements, new commands, |
|
|
|
|
new functions, and other changes. |
|
|
|
|
</para> |
|
|
|
@ -423,8 +445,9 @@ |
|
|
|
|
<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. |
|
|
|
|
Version 9.0 also contains several performance and optimizer enhancements |
|
|
|
|
to improve specific uses of PostgreSQL and remedy certain poor-performing |
|
|
|
|
cases. |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<itemizedlist> |
|
|
|
@ -469,7 +492,7 @@ |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
Outer joins where the inner side is unique and not referenced in |
|
|
|
|
the query are unnecessary and are therefore now removed. This will |
|
|
|
|
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> |
|
|
|
@ -651,7 +674,7 @@ |
|
|
|
|
<sect4> |
|
|
|
|
<title>Monitoring</title> |
|
|
|
|
<para> |
|
|
|
|
With increased use of PostgreSQL in high-end production systems, |
|
|
|
|
With increased use of PostgreSQL in high-end production systems, |
|
|
|
|
users need increased monitoring. PostgresSQL 9.0 continues to add |
|
|
|
|
more ways to monitor PostgreSQL applications. |
|
|
|
|
</para> |
|
|
|
@ -667,7 +690,7 @@ |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
This allows DBAs to characterize database traffic |
|
|
|
|
This allows DBAs to characterize database traffic |
|
|
|
|
and troubleshoot problems by source application. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
@ -746,7 +769,7 @@ |
|
|
|
|
in the new <structname>pg_db_role_setting</> system table. A new |
|
|
|
|
<application>psql</> <literal>\drds</> command shows these settings. |
|
|
|
|
Backwards-compatible system views do not show this information. |
|
|
|
|
The primary use of this feature is setting schema |
|
|
|
|
The primary use of this feature is setting schema |
|
|
|
|
<link linkend="guc-search-path"><varname>search_path</varname></link>. |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
@ -863,7 +886,7 @@ |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
For drivers which support this feature, this saves an entire |
|
|
|
|
For drivers that support this feature, this saves an entire |
|
|
|
|
round-trip to the client, allowing result counts and pagination |
|
|
|
|
to be calculated without a second <command>COUNT</command> query. |
|
|
|
|
</para> |
|
|
|
@ -1057,13 +1080,13 @@ |
|
|
|
|
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 |
|
|
|
|
or ranges of values. This supports data integrity at the |
|
|
|
|
table level for calendaring, time-management, and scientific |
|
|
|
|
applications. |
|
|
|
|
</para> |
|
|
|
@ -1134,7 +1157,7 @@ |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
LISTEN/NOTIFY may now be used as a full-featured, high-performance |
|
|
|
|
event queue system for PostgreSQL, with transactional support |
|
|
|
|
event queue system for PostgreSQL, with transactional support |
|
|
|
|
and guaranteed delivery. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
@ -1201,7 +1224,7 @@ |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
The new output formats will support the development of new tools |
|
|
|
|
The new output formats will support the development of new tools |
|
|
|
|
for analysis of EXPLAIN output. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
@ -1255,7 +1278,7 @@ |
|
|
|
|
</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> |
|
|
|
@ -1306,9 +1329,9 @@ |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
This feature supports GiST indexing of point operations on polygons, |
|
|
|
|
This feature supports GiST indexing of point operations on polygons, |
|
|
|
|
circles, and other points, such as "point is in polygon". Previously |
|
|
|
|
indexing only worked for bounding boxes. This should make many |
|
|
|
|
indexing only worked for bounding boxes. This should make many |
|
|
|
|
PostGIS queries faster. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
@ -1688,21 +1711,30 @@ |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Install server-side language PL/pgSQL by default (Bruce Momjian) |
|
|
|
|
Install PL/pgSQL by default (Bruce Momjian) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Allow PL/pgSQL to handle row types with dropped columns (Pavel Stehule) |
|
|
|
|
Improve PL/pgSQL's ability to handle row types with dropped columns |
|
|
|
|
(Pavel Stehule) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Allow <literal>IN</> parameters to be assigned values within |
|
|
|
|
Allow input parameters to be assigned values within |
|
|
|
|
PL/pgSQL functions (Steve Prentice) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
Formerly, input parameters were treated as being declared |
|
|
|
|
<literal>CONST</>. This restriction has been removed to simplify |
|
|
|
|
porting of functions from other DBMSes that do not impose the |
|
|
|
|
equivalent restriction. An input parameter now acts like a local |
|
|
|
|
variable initialized to the passed-in value. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
@ -1713,21 +1745,19 @@ |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Have PL/pgSQL use the main lexer, rather than a custom version (Tom Lane) |
|
|
|
|
Make PL/pgSQL use the main lexer, rather than its own version |
|
|
|
|
(Tom Lane) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
</itemizedlist> |
|
|
|
|
|
|
|
|
|
</sect4> |
|
|
|
|
|
|
|
|
|
<sect4> |
|
|
|
|
<title><link linkend="plpgsql-cursors">PL/pgSQL Cursors</link></title> |
|
|
|
|
<itemizedlist> |
|
|
|
|
<para> |
|
|
|
|
This ensures accurate tracking of the main system's behavior for details |
|
|
|
|
such as string escaping. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Add count and <literal>ALL</> options to <command>MOVE |
|
|
|
|
Add <replaceable>count</> and <literal>ALL</> options to <command>MOVE |
|
|
|
|
FORWARD</>/<literal>BACKWARD</> in PL/pgSQL (Pavel Stehule) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
@ -1741,8 +1771,8 @@ |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Add PL/pgSQL's <command>OPEN cursor FOR EXECUTE</> to use parameters |
|
|
|
|
(Pavel Stehule, Itagaki Takahiro) |
|
|
|
|
Allow PL/pgSQL's <command>OPEN <replaceable>cursor</> FOR EXECUTE</> to |
|
|
|
|
use parameters (Pavel Stehule, Itagaki Takahiro) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
@ -2482,7 +2512,7 @@ |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Enable the server lexer to be reentrant (Tom Lane) |
|
|
|
|
Enable the server's lexer to be reentrant (Tom Lane) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
@ -2796,9 +2826,8 @@ |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
This filter dictionary removes accents from tokens, and |
|
|
|
|
makes full-text searches over multiple languages much |
|
|
|
|
easier. |
|
|
|
|
This filter dictionary removes accents from letters, which |
|
|
|
|
makes full-text searches over multiple languages much easier. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|