2010-09-20 22:08:53 +02:00
|
|
|
<!-- doc/src/sgml/release-9.1.sgml -->
|
2010-09-02 19:30:06 +02:00
|
|
|
|
2011-03-19 21:39:17 +01:00
|
|
|
<sect1 id="release-9-1">
|
|
|
|
<title>Release 9.1</title>
|
|
|
|
|
|
|
|
<note>
|
|
|
|
<title>Release Date</title>
|
|
|
|
<simpara>2011-??-??</simpara>
|
|
|
|
</note>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Overview</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This release of
|
|
|
|
<productname>PostgreSQL</> adds ... Major enhancements include:
|
|
|
|
</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>
|
|
|
|
|
|
|
|
<title>Migration to Version 9.1</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
A dump/restore using <application>pg_dump</application>,
|
|
|
|
or use of <application>pg_upgrade</application>, is required
|
|
|
|
for those wishing to migrate data from any previous
|
|
|
|
release.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Version 9.1 contains a number of changes that ...
|
|
|
|
Observe the following incompatibilities:
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<sect3>
|
|
|
|
<title>Server Settings</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Change pg_last_xlog_receive_location() so it never moves
|
|
|
|
backwards (Fujii Masao)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Previously pg_last_xlog_receive_location() could move backward
|
|
|
|
when streaming replication is restarted.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Have logging of replication connections honor log_connections
|
|
|
|
(Magnus Hagander)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Previously replication connections were always logged.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect3>
|
|
|
|
|
|
|
|
<sect3>
|
|
|
|
<title>Strings</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Change the default value of standard_conforming_strings to on
|
|
|
|
(Robert Haas)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This removes a long-standing incompatibility with the SQL
|
|
|
|
standard; escape_string_warning has produced warnings about
|
|
|
|
this usage for years. E'' strings the proper way to embed
|
|
|
|
escapes in strings and is unaffected by this change.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect3>
|
|
|
|
|
|
|
|
<sect3>
|
|
|
|
<title>Casting</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Disallow functional or attribute string data type casts for
|
|
|
|
composite types (Tom Lane)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
For example, disallow composite_name.text and text(composite_name).
|
|
|
|
CAST and '::' are still available for casting.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Tighten casting checks for domains based on arrays (Tom Lane)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
**Details?
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect3>
|
|
|
|
|
|
|
|
<sect3>
|
|
|
|
<title>Arrays</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Change string_to_array to return an empty array for for a
|
|
|
|
zero-length string (Pavel Stehule)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Previously this returned NULL.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Change string_to_array so a NULL separator splits the string
|
|
|
|
into characters (Pavel Stehule)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Previously this returned NULL.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect3>
|
|
|
|
|
|
|
|
<sect3>
|
|
|
|
<title>Object Modification</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix improper checks for before/after triggers (Tom Lane)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
**Tom, I need more details on the impact of this for existing
|
|
|
|
installs.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Require superuser or CREATEROLE permissions to set role
|
|
|
|
comments (Tom Lane)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect3>
|
|
|
|
|
|
|
|
<sect3>
|
|
|
|
<title>PL/pgSQL</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Change PL/pgSQL's RAISE command without parameters to be
|
|
|
|
catchable by the attached exception block (Piyush Newe)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Previously RAISE in a code block always scoped to an attached
|
|
|
|
exception block, so it was uncatchable at the same scope.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Adjust PL/pgsql's error line reporting code to be consistent
|
|
|
|
with SQL error line reporting (Pavel Stehule)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Previously error numbering was off by one.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect3>
|
|
|
|
|
|
|
|
<sect3>
|
|
|
|
<title>Other Incompatibilities</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Have pg_stat_reset() reset all database-level statistics (Tom
|
|
|
|
Lane)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Some counters were not being reset.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix some information_schema.triggers column names to match
|
|
|
|
the new SQL-standard names (Dean Rasheed)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Treat ecpg cursor names as case-insensitive (Zoltan Boszormenyi)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect3>
|
|
|
|
</sect2>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Changes, current as of 2011-03-15</title>
|
|
|
|
<para>
|
|
|
|
Version 9.1 has ...
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<sect3>
|
|
|
|
<title>Server</title>
|
|
|
|
|
|
|
|
<sect4>
|
|
|
|
<title>Continuous Archiving and Streaming Replication</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add a synchronous replication option (Simon Riggs, Fujii Masao)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This allows the primary to wait for the standby to receive
|
|
|
|
transaction information before acknowledging the commit.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add variable hot_standby_feedback to enable standbys to
|
|
|
|
communicate their needed snapshots to the primary (Simon Riggs)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This helps avoid cancelling long-running queries on the standby.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add support for sending file system backups to standbys using
|
|
|
|
the streaming replication network connection (Magnus Hagander,
|
|
|
|
Heikki Linnakangas)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This avoids the requirement of manually transferring a file
|
|
|
|
system backup when creating a standby server.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add command-line tool pg_basebackup for creating a new standby
|
|
|
|
server or database backup (Magnus Hagander)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add new "replication" permission for roles (Magnus Hagander)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This is a read-only permission used for streaming replication
|
|
|
|
and allows non-super users to initiate replication connections.
|
|
|
|
Previously only super-users could initiate replication
|
|
|
|
connections; super-users have this permission by default.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
<sect5>
|
|
|
|
<title>Monitoring</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add system view pg_stat_replication which displays activity
|
|
|
|
of WAL sender processes (Itagaki Takahiro, Simon Riggs)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This reports that status of all connected standby servers.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add monitoring function pg_last_xact_replay_timestamp (Fujii
|
|
|
|
Masao)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This returns the time on the primary that generated the most
|
|
|
|
recently commit or abort record applied on the standby.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect5>
|
|
|
|
|
|
|
|
<sect5>
|
|
|
|
<title>Recovery Control</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add functions to control streaming replication replay (Simon
|
|
|
|
Riggs)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
The new functions are pg_xlog_replay_pause(),
|
|
|
|
pg_xlog_replay_resume(), and the status function
|
|
|
|
pg_is_xlog_replay_paused().
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add named restore points for recovery which can be specified
|
|
|
|
in recovery.conf (Jaime Casanova)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
The function pg_create_restore_point() allows recovery targets
|
|
|
|
to be named for later designation during recovery.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add recovery.conf setting pause_at_recovery_target to pause
|
|
|
|
recovery at target (Simon Riggs)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This allows a recovery server to be queried to check if the
|
|
|
|
recovery point is the one desired.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow standby recovery to switch to a new timeline automatically
|
|
|
|
(Heikki Linnakangas)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Now standby servers scan the archive directory for new
|
|
|
|
timelines periodically.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow recovery.conf to use the same quoting behavior as
|
|
|
|
postgresql.conf (Dimitri Fontaine)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Previously all values had to be quoted.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect5>
|
|
|
|
|
|
|
|
</sect4>
|
|
|
|
|
|
|
|
<sect4>
|
|
|
|
<title>Performance</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow unlogged tables (Robert Haas)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
These tables are optimized for performance but are cleared in
|
|
|
|
case of a server crash.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Support RIGHT and FULL OUTER JOIN in hash joins (Tom Lane)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Previously hash joins could not be considered for outer joins;
|
|
|
|
this provides additional query optimization possibilities.
|
|
|
|
**What about LEFT joins?
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Merge duplicate fsync requests on busy systems (Robert Haas,
|
|
|
|
Greg Smith)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Improve performance of commit_siblings (Greg Smith)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This allows the use of commit_siblings with fewer delays.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect4>
|
|
|
|
|
|
|
|
<sect4>
|
|
|
|
<title>Optimizer</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow inheritance table queries to return meaningfully-sorted
|
|
|
|
results (Greg Stark, Hans-Jurgen Schonig, Robert Haas, Tom
|
|
|
|
Lane)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This allows optimization of ORDER BY and LIMIT clauses in
|
|
|
|
inheritance table queries.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow optimizations of MIN/MAX for inheritance table queries
|
|
|
|
(Tom Lane)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow hash joins for array values (Tom Lane)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This provides additional query optimization possibilities.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Improve GIN index scan cost estimation (Teodor Sigaev)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect4>
|
|
|
|
|
|
|
|
<sect4>
|
|
|
|
<title>Authentication</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Support host names and host suffixes (e.g. .example.com) in
|
|
|
|
pg_hba.conf (Peter Eisentraut)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Previously only host IP addresses and CIDR values were supported.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Support they keyword 'all' in the host column of pg_hba.conf
|
|
|
|
(Peter Eisentraut)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Previously people used '0.0.0.0/0' or '::/0' for this.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow GSSAPI to be used to authenticate to servers via SSPI
|
|
|
|
(Christian Ullrich)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Specifically this allows Unix-based GSSAPI clients to authenticate
|
|
|
|
to Windows SSPI servers.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect4>
|
|
|
|
|
|
|
|
<sect4>
|
|
|
|
<title>Monitoring</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add details to the logging of restart points and checkpoints,
|
|
|
|
which is controlled by log_checkpoints (Fujii Masao, Greg
|
|
|
|
Smith)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
New details show WAL file and sync activity.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add log_file_mode which controls the permissions on log files
|
|
|
|
created by the logging_collector (Martin Pihlak)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect4>
|
|
|
|
|
|
|
|
<sect4>
|
|
|
|
<title>Statistical Views</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add client_hostname field to pg_stat_activity (Peter Eisentraut)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Previously only the client address was reported.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add pg_stat_xact_* statistic functions and views (Joel Jacobson)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This are like the database-wide statistics counter views but
|
|
|
|
reflect counts for only the current transaction.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add the pg_stat_database_conflicts system view to show queries
|
|
|
|
that have been canceled and the reason (Magnus Hagander)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Cancelations can occur because of dropped tablespaces, lock
|
|
|
|
timeouts, old snapshots, pinned buffers, and deadlocks.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add a "conflicts" count to pg_stat_database (Magnus Hagander)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This is the number of conflicts that occurred in the database.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add record of last reset for database and background writer-level
|
|
|
|
statistics (Tomas Vondra)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add columns showing the number of vacuum and analyze operations
|
|
|
|
in pg_stat_*_tables views (Magnus Hagander)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add new buffers_backend_fsync field to pg_stat_bgwriter (Greg
|
|
|
|
Smith)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This new field counts the number of times a backend fsyncs a
|
|
|
|
buffer.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect4>
|
|
|
|
|
|
|
|
<sect4>
|
|
|
|
<title>Server Settings</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow auto-tuning of wal_buffers (Greg Smith)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
wal_buffers is now auto-tuned by default based on the size of
|
|
|
|
shared_buffers.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add restart_after_crash which disables server restart after
|
|
|
|
a backend crash (Robert Haas)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This is designed for cluster managers that want to control
|
|
|
|
restarts.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect4>
|
|
|
|
|
|
|
|
</sect3>
|
|
|
|
|
|
|
|
<sect3>
|
|
|
|
<title>Queries</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow data-modification commands (INSERT/UPDATE/DELETE) in
|
|
|
|
WITH clauses (Marko Tiikkaja, Hitoshi Harada)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This allows INSERT/UPDATE/DELETE RETURNING in WITH clauses to
|
|
|
|
pass rows to outer queries.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow WITH clauses to be fed into INSERT, UPDATE, DELETE
|
|
|
|
statements (Marko Tiikkaja, Hitoshi Harada)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Specifically, let SELECT query results be feed into INSERT,
|
|
|
|
UPDATE, DELETE statements.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow non-GROUP BY columns in the query target list when the
|
|
|
|
primary key is specified in the GROUP BY clause (Peter
|
|
|
|
Eisentraut)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Some other database system already allowed this behavior, and
|
|
|
|
because of the primary key, the result is unambiguous..
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow the use of the keyword DISTINCT in UNION/INTERSECT/EXCEPT
|
|
|
|
clauses (Tom Lane)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
DISTINCT is the default behavior so use of this keyword is
|
|
|
|
redundant.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
<sect4>
|
|
|
|
<title>Strings</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add per-column collation support (Peter Eisentraut, Tom Lane)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Previously collation could only be set at the database level.
|
|
|
|
Collation can now be set per column, domain, index, or
|
|
|
|
expression.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect4>
|
|
|
|
|
|
|
|
</sect3>
|
|
|
|
|
|
|
|
<sect3>
|
|
|
|
<title>Object Manipulation</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add support for foreign tables (Shigeru Hanada, Robert Haas,
|
|
|
|
Jan Urbanski, Heikki Linnakangas)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This allows data stored in foreign sources to be used like
|
|
|
|
native Postgres-stored data.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add ALTER TYPE ... ADD/DROP/ALTER/RENAME ATTRIBUTE (Peter
|
|
|
|
Eisentraut)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This allows modification of composite types.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
<sect4>
|
|
|
|
<title><command>ALTER Object</></title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add RESTRICT/CASCADE to ALTER TYPE operations on typed tables
|
|
|
|
(Peter Eisentraut)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This controls ADD/DROP/ALTER/RENAME ATTRIBUTE cascading
|
|
|
|
behavior.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add support for more object types in ALTER object ... SET SCHEMA commands (Dimitri Fontaine)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect4>
|
|
|
|
|
|
|
|
<sect4>
|
|
|
|
<title><link linkend="SQL-CREATETABLE"><command>CREATE TABLE</></link></title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add CREATE TABLE IF NOT EXISTS syntax (Robert Haas)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This allows table creation without causing an error if the
|
|
|
|
table already exists.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add ALTER TABLE ADD UNIQUE/PRIMARY KEY USING INDEX (Gurjeet
|
|
|
|
Singh)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This allows existing unique indexes to be used as primary
|
|
|
|
keys, including indexes that were created concurrently.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow ALTER TABLE to add foreign keys without validation (Simon
|
|
|
|
Riggs)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
The new option is called NOT VALID, which can later be modified
|
|
|
|
to VALIDATED and validation checks performed.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow ALTER TABLE .. SET DATA TYPE to avoid table rewrites in
|
|
|
|
appropriate cases (Noah Misch, Robert Haas)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
For example, converting a varchar column to text no longer
|
|
|
|
requires a rewrite of the table. **Length changes require
|
|
|
|
rewrite?
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect4>
|
|
|
|
|
|
|
|
<sect4>
|
|
|
|
<title>Object Permissions</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add a SECURITY LABEL command (KaiGai Kohei)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This allows security labels to be assigned to objects.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect4>
|
|
|
|
|
|
|
|
</sect3>
|
|
|
|
|
|
|
|
<sect3>
|
|
|
|
<title>Utility Operations</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add true a serializable isolation level (Kevin Grittner, Dan
|
|
|
|
Ports)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Previously asking for serializable isolation level produced
|
|
|
|
snapshot isolation, which had certain documented anomalies.
|
|
|
|
The old snapshot isolation is still accessible by the requesting
|
|
|
|
repeatable read isolation level.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add transaction-level advisory locks (Marko Tiikkaja)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This is similar to the existing session-level advisory locks,
|
|
|
|
but are freed at transaction end.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Make TRUNCATE ... RESTART IDENTITY restart sequences transactionally
|
|
|
|
(Steve Singer)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Previously the counter could have been left out of sync if a
|
|
|
|
backend crashed between the on-commit truncation activity and
|
|
|
|
commit completion.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
<sect4>
|
|
|
|
<title><link linkend="SQL-COPY"><command>COPY</></link></title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add ENCODING option to COPY TO/FROM (Hitoshi Harada, Itagaki
|
|
|
|
Takahiro)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This allows the COPY file encoding to be specified separately
|
|
|
|
from client encoding.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add bidirectional COPY protocol support (Fujii Masao)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This is currently only used by streaming replication.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect4>
|
|
|
|
|
|
|
|
<sect4>
|
|
|
|
<title><link linkend="SQL-EXPLAIN"><command>EXPLAIN</></link></title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Have EXPLAIN show the function call expression in VERBOSE
|
|
|
|
mode (Tom Lane)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix EXPLAIN ANALYZE with rules to use the same snapshot behavior
|
|
|
|
as ordinary queries (Marko Tiikkaja)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Previously EXPLAIN ANALYZE used a slightly different snapshot
|
|
|
|
for queries involving rules.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect4>
|
|
|
|
|
|
|
|
<sect4>
|
|
|
|
<title><link linkend="SQL-VACUUM"><command>VACUUM</></link></title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add additional details to the output of VACUUM FULL VERBOSE
|
|
|
|
and CLUSTER VERBOSE (Itagaki Takahiro)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
New information includes the live/dead tuple count and whether
|
|
|
|
CLUSTER is using an index to rebuild.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Prevent autovacuum from waiting if it cannot acquire a lock
|
|
|
|
(Robert Haas)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
It will try to vacuum later.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect4>
|
|
|
|
|
|
|
|
<sect4>
|
|
|
|
<title>Indexes</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add nearest-neighbor (order-by-operator) searching to GIST
|
|
|
|
indexes (Teodor Sigaev, Tom Lane)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This allows GIST indexes to quickly return LIMIT-specified
|
|
|
|
closest values.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow GIN indexes to index null and empty values (Tom Lane)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This allows full GIN index scans.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix GiST indexes to be fully crash-safe (Heikki Linnakangas)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Previously there were rare cases where a REINDEX would be
|
|
|
|
required (you would be informed).
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect4>
|
|
|
|
|
|
|
|
</sect3>
|
|
|
|
|
|
|
|
<sect3>
|
|
|
|
<title>Data Types</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow numeric to use a more compact, 2-byte header in many
|
|
|
|
cases (Robert Haas)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Previously all numeric values had 4-byte headers; this saves
|
|
|
|
on disk storage.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow new values to be added to an existing enum type (Andrew
|
|
|
|
Dunstan)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add support for dividing money by money (Andy Balholm)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
<sect4>
|
|
|
|
<title>Casting</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add support for casting between money and numeric (Andy Balholm)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow casting a table's row type to the table's supertype if
|
|
|
|
it's a typed table (Peter Eisentraut)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
**Needs description.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect4>
|
|
|
|
|
|
|
|
<sect4>
|
|
|
|
<title><link linkend="functions-xml">XML</link></title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add XML function XMLEXISTS and xpath_exists() functions (Mike
|
|
|
|
Fowler)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This is used for xpath matching.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add XML functions xml_is_well_formed, xml_is_well_formed_document,
|
|
|
|
xml_is_well_formed_content (Mike Fowler)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
These check whether the input is properly-formed XML.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect4>
|
|
|
|
|
|
|
|
</sect3>
|
|
|
|
|
|
|
|
<sect3>
|
|
|
|
<title>Functions</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add new SQL function, format(text), which behaves like C's
|
|
|
|
printf() (Pavel Stehule, Robert Haas)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
It currently supports formats for strings, SQL literals, and
|
|
|
|
SQL identifiers.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add string functions: concat(), concat_ws(), left(), right(),
|
|
|
|
and reverse() (Pavel Stehule)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
**Why were these added?
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add function pg_read_binary_file() to read binary files
|
|
|
|
(Dimitri Fontaine, Itagaki Takahiro)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add single-parameter version of function pg_read_file() to
|
|
|
|
read an entire file (Dimitri Fontaine, Itagaki Takahiro)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add three-parameter forms of array_to_string and string_to_array
|
|
|
|
for NULL processing control (Pavel Stehule)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
<sect4>
|
|
|
|
<title>Object Information Functions</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add pg_describe_object function (Alvaro Herrera)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This function is used to obtain comments on objects. **Alvaro,
|
|
|
|
why is this useful for pg_depend?
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Update comments for built-in operators and their underlying
|
|
|
|
functions (Tom Lane)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add variable quote_all_identifiers to force the quoting of
|
|
|
|
all identifiers in EXPLAIN and system catalog functions like
|
|
|
|
pg_get_viewdef() (Robert Haas)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This makes exporting schemas to tools and other databases with
|
|
|
|
different quoting rules easier.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add fields to the information_schema.sequences system view
|
|
|
|
(Peter Eisentraut)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Previously, though the view existed, all of these view fields
|
|
|
|
were unimplemented.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow 'public' as a pseudo-role name in has_table_privilege()
|
|
|
|
and and related functions (Alvaro Herrera)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This allows checking for public permissions.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add ERRCODE_T_R_DATABASE_DROPPED error code to report recovery
|
|
|
|
conflicts due to dropped databases (Tatsuo Ishii)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This is useful for connection pooling software.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect4>
|
|
|
|
|
|
|
|
<sect4>
|
|
|
|
<title>Function and Trigger Creation</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow INSTEAD OF triggers on views (Dean Rasheed)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This feature can be used to implement updatable views.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Reduce lock levels for CREATE TRIGGER and some ALTER TABLE,
|
|
|
|
CREATE RULE actions (Simon Riggs)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This improves concurrency.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect4>
|
|
|
|
|
|
|
|
</sect3>
|
|
|
|
|
|
|
|
<sect3>
|
|
|
|
<title>Server-Side Languages</title>
|
|
|
|
|
|
|
|
<sect4>
|
|
|
|
<title><link linkend="plpgsql">PL/pgSQL</link> Server-Side Language</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add FOREACH IN ARRAY to plpgsql to allow array interation
|
|
|
|
(Pavel Stehule)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This is more efficient than previous methods.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect4>
|
|
|
|
|
|
|
|
<sect4>
|
|
|
|
<title><link linkend="plperl">PL/Perl</link> Server-Side Language</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow generic record arguments to plperl functions (Andrew
|
|
|
|
Dunstan)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
**Andrew, I need details on this.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Convert PL/Perl input arguments to Perl arrays (Alexey Klyukin,
|
|
|
|
Alex Hunsaker)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
String representations are still available.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Convert PL/Perl row and composite type arguments to Perl hashes
|
|
|
|
(Alexey Klyukin, Alex Hunsaker)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
String representations are still available.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect4>
|
|
|
|
|
|
|
|
<sect4>
|
|
|
|
<title><link linkend="plpython">PL/Python</link> Server-Side Language</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add table function support for PL/Python (Jan Urbanski)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
PL/Python now can return multiple OUT parameters and record
|
|
|
|
sets.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add validator to PL/Python (Jan Urbanski)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This allows PL/Python functions to be validated at function
|
|
|
|
creation time.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow exceptions for SQL queries in PL/Python (Jan Urbanski)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This allows access to SQL-generated exception error codes from
|
|
|
|
PL/Python exception blocks.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow PL/Python to access SQLSTATE exception values (Jan
|
|
|
|
Urbanski)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
**Is this the same as the item above?
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add PL/Python explicit subtransactions (Jan Urbanski)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add PL/Python functions for quoting strings (Jan Urbanski)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
The functions are plpy.quote_ident, plpy.quote_literal, and
|
|
|
|
plpy.quote_nullable.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Report PL/Python errors from iterators with PLy_elog (Jan
|
|
|
|
Urbanski)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Overhaul of PL/Python (Jan Urbanski)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This includes exception support for Python 3. **More?
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect4>
|
|
|
|
|
|
|
|
</sect3>
|
|
|
|
|
|
|
|
<sect3>
|
|
|
|
<title>Client Applications</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Mark createlang/droplang as deprecated now that they use the
|
|
|
|
extension framework (Tom Lane)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
<sect4>
|
|
|
|
<title><link linkend="APP-PSQL"><application>psql</></link></title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add the \conninfo command to psql, to show current connection
|
|
|
|
information (David Christensen)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow psql's \e and \ef commands to accept a line number to
|
|
|
|
be used to position the cursor in the editor (Pavel Stehule)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This is passed to the editor using the EDITOR_LINENUMBER_SWITCH
|
|
|
|
environment variable.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add psql command \sf command to show a function's definition
|
|
|
|
(Pavel Stehule)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add system table ("S") option to psql \dn (schemas) (Tom Lane)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
\dn without "S" now suppresses system schemas.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add new psql \dL command \dL to list languages (Fernando Ike)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Have psql set the client encoding from the operating system
|
|
|
|
locale by default (Heikki Linnakangas)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This only happens if the PGCLIENTENCODING environment variable
|
|
|
|
is not set.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow tab completion of psql variables (Pavel Stehule)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
More psql tab completion support (Itagaki Takahiro)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect4>
|
|
|
|
|
|
|
|
<sect4>
|
|
|
|
<title><link linkend="APP-PGDUMP"><application>pg_dump</></link></title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add pg_dump and pg_dumpall option --quote-all-identifiers to
|
|
|
|
force quoting of all identifiers (Robert Haas)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add 'directory' format to pg_dump (Joachim Wieland, Heikki
|
|
|
|
Linnakangas)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This is internally similar to the 'tar' pg_dump format.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect4>
|
|
|
|
|
|
|
|
<sect4>
|
|
|
|
<title><link linkend="APP-PG-CTL"><application>pg_ctl</></link></title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix pg_ctl so it no longer incorrectly reports that the server
|
|
|
|
is not running (Bruce Momjian)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Previously this could happen if the server was running but
|
|
|
|
pg_ctl could not authenticate.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Improve pg_ctl start's "wait" mode to handle non-standard port
|
|
|
|
numbers, non-standard unix-domain socket locations, permission
|
|
|
|
problems, and stale postmaster lock files (Bruce Momjian)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add 'promote' option to pg_ctl to change a standby server to
|
|
|
|
primary (Fujii Masao)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect4>
|
|
|
|
|
|
|
|
</sect3>
|
|
|
|
|
|
|
|
<sect3>
|
|
|
|
<title><application>Development Tools</></title>
|
|
|
|
|
|
|
|
<sect4>
|
|
|
|
<title><link linkend="libpq"><application>libpq</></link></title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add a libpq connection option client_encoding which behaves
|
|
|
|
like the PGCLIENTENCODING environment variable (Heikki
|
|
|
|
Linnakangas)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
The value 'auto' sets the client encoding based on the operating
|
|
|
|
system locale.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add PQlibVersion() function which returns the libpq library
|
|
|
|
version (Magnus Hagander)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
libpq already had PQserverVersion() which returns the server
|
|
|
|
version.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow libpq database clients to use Unix-domain sockets to
|
|
|
|
check the user name of the server process using requirepeer
|
|
|
|
(Peter Eisentraut)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
PostgreSQL already allowed servers to determine the client
|
|
|
|
user name via Unix-domain sockets.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add PQping and PQpingParams to libpq (Bruce Momjian, Tom Lane)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
The allow detection of the server's status without creating
|
|
|
|
a new session.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect4>
|
|
|
|
|
|
|
|
</sect3>
|
|
|
|
|
|
|
|
<sect3>
|
|
|
|
<title>Build Options</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add extensions which allow packaged additions to Postgres
|
|
|
|
(Dimitri Fontaine, Tom Lane)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This is controlled by the new CREATE/ALTER/DROP EXTENSION
|
|
|
|
command; this replaces a more manual method of adding features
|
|
|
|
to PostgreSQL.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
<sect4>
|
|
|
|
<title>Makefiles</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Require GNU make 3.80 or newer (Peter Eisentraut)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Improved parallel make support (Peter Eisentraut)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This allows for faster compiles. Also, make -k and make -q
|
|
|
|
now work properly. **When was recursive make supported?
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect4>
|
|
|
|
|
|
|
|
<sect4>
|
|
|
|
<title>Windows</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
On Windows, allow pg_ctl to register the service as auto-start
|
|
|
|
or start-on-demand (Quan Zongliang)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add support for collecting crash dumps on Windows (Craig
|
|
|
|
Ringer, Magnus Hagander)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
<productname>minidumps</> can now be generated by non-debug
|
|
|
|
Windows binaries and analyzed by standard debugging tools.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Enable building with the Mingw64 compiler (Andrew Dunstan)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This allows building 64-bit Windows binaries even on non-Windows
|
|
|
|
platforms with cross-compiling.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect4>
|
|
|
|
|
|
|
|
</sect3>
|
|
|
|
|
|
|
|
<sect3>
|
|
|
|
<title>Source Code</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add latches to the source code to wait for events (Heikki
|
|
|
|
Linnakangas)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Centralize DML permissions-checking logic (KaiGai Kohei)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add missing get_{object}_oid functions, for consistency
|
|
|
|
(Robert Haas)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Improve ability to use C++ compilers for backend compiles by
|
|
|
|
removing conflicting keywords (Tom Lane)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add support for DragonFly BSD (Rumko)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Expose quote_literal_cstr() for backend use (Robert Haas)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Run regression tests in the default encoding (Peter Eisentraut)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Regression tests were previously always run with SQL_ASCII
|
|
|
|
encoding.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add src/tools/git_changelog to replace cvs2cl and pgcvslog
|
|
|
|
(Robert Haas, Tom Lane)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add git-external-diff script to src/tools (Bruce Momjian)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This is used to generate context diffs from git.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
<sect4>
|
|
|
|
<title>Server Hooks</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add source code hooks to check permissions (Robert Haas,
|
|
|
|
Stephen Frost)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add post-object-creation function hooks for use by security
|
|
|
|
frameworks (KaiGai Kohei)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add a client authentication hook (KaiGai Kohei)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect4>
|
|
|
|
|
|
|
|
</sect3>
|
|
|
|
|
|
|
|
<sect3>
|
|
|
|
<title>Contrib</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Modify /contrib modules and stored procedure languages to
|
|
|
|
install via the new extension mechanism (Tom Lane, Dimitri
|
|
|
|
Fontaine)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This replaces a more manual method of installation.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add contrib/file_fdw foreign-data wrapper for reading files
|
|
|
|
via COPY (Shigeru Hanada)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This adds foreign table support for flat-file.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add nearest-neighbor support to contrib/pg_trgm and
|
|
|
|
contrib/btree_gist (Teodor Sigaev)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add contrib/btree_gist support for searching on "not equals"
|
|
|
|
(Jeff Davis)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow contrib/fuzzystrmatch's levenshtein() function handle
|
|
|
|
multi-byte characters (Alexander Korotkov)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add ssl_cipher() and ssl_version() functions to contrib/sslinfo
|
|
|
|
(Robert Haas)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix contrib/intarray and contrib/hstore to give consistent
|
|
|
|
results with indexed empty arrays (Tom Lane)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Previously a empty-array query that used an index might return
|
|
|
|
different results from one that used a sequential scan.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
In contrib/xml2, remove arbitrary limit on the number of
|
|
|
|
parameter=value pairs that can be handled by xslt_process()
|
|
|
|
(Pavel Stehule)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
The previous limit was 20.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
<sect4>
|
|
|
|
<title>Security</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add contrib/sepgsql to interface permission checks with SE-Linux
|
|
|
|
(KaiGai Kohei)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This uses the new SECURITY LABEL facility.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
New contrib module, auth_delay (KaiGai Kohei)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This causes the server to pause before returning authentication
|
|
|
|
failure; it is designed to make brute force password attacks
|
|
|
|
more difficult.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add dummy_seclabel contrib module (KaiGai Kohei)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This is used for permission regression testing.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect4>
|
|
|
|
|
|
|
|
<sect4>
|
|
|
|
<title>Performance</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add support for LIKE and ILIKE index searches to contrib/pg_trgm
|
|
|
|
(Alexander Korotkov)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add levenshtein_less_equal function, which is optimized for
|
|
|
|
small distances (Alexander Korotkov)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Improve performance of index lookups on contrib/seg columns
|
|
|
|
(Alexander Korotkov)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
**Confirm this does not affect pg_upgrade
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Improve performance of pg_upgrade for databases with many
|
|
|
|
relations (Bruce Momjian)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add flag to pgbench to report per-statement latencies (Florian
|
|
|
|
Pflug)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect4>
|
|
|
|
|
|
|
|
<sect4>
|
|
|
|
<title>Fsync Testing</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Move src/tools/test_fsync to contrib/pg_test_fsync (Bruce
|
|
|
|
Momjian, Tom Lane)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add O_DIRECT support to contrib/pg_test_fsync (Bruce Momjian)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This matches the use of O_DIRECT by wal_sync_method.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add new tests to contrib/pg_test_fsync (Bruce Momjian)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect4>
|
|
|
|
|
|
|
|
</sect3>
|
|
|
|
|
|
|
|
<sect3>
|
|
|
|
<title>Documentation</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Extensive ECPG documentation improvements (Satoshi Nagayasu)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add documentation for exit_on_error (Robert Haas)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This parameter causes sessions to exit on any error.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add documentation for pg_options_to_table() (Josh Berkus)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This parameter shows table storage options.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Document that it is possible to access all composite fields
|
|
|
|
using (compositeval).* syntax (Peter Eisentraut)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
**Is this syntax new in 9.1?
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Document that translate() removes characters in "from" that
|
|
|
|
don't have a corresponding "to" character (Josh Kupershmidt)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Merge docs for CREATE CONSTRAINT TRIGGER and CREATE TRIGGER
|
|
|
|
(Alvaro Herrera)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Centralize permission and upgrade documentation (Bruce Momjian)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add kernel tuning docs for Solaris 10 (Josh Berkus)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Previously only Solaris 9 kernel tuning was documented.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect3>
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-03-09 05:59:52 +01:00
|
|
|
<!-- This is (hopefully) up-to-date with commits through 2011-03-08 -->
|
2010-09-02 19:30:06 +02:00
|
|
|
|
2011-03-19 21:39:17 +01:00
|
|
|
|
|
|
|
<sect1 id="release-9-1-alpha">
|
2011-03-05 15:36:19 +01:00
|
|
|
<title>Release 9.1alpha4</title>
|
2010-09-02 19:30:06 +02:00
|
|
|
<sect2>
|
|
|
|
<title>Overview</title>
|
|
|
|
<para>
|
2011-03-19 21:39:17 +01:00
|
|
|
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.
|
2010-09-02 19:30:06 +02:00
|
|
|
</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>
|
2011-03-09 02:55:29 +01:00
|
|
|
|
|
|
|
<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 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>
|
|
|
|
|
2011-03-09 05:59:52 +01:00
|
|
|
<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>
|
2011-03-09 12:00:11 +01:00
|
|
|
<emphasis>When recovery_target_timeline='latest', periodically
|
2011-03-09 05:59:52 +01:00
|
|
|
rescan the archive for new timelines</emphasis>
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
2011-03-09 02:55:29 +01:00
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
|
2010-09-02 19:30:06 +02:00
|
|
|
<sect3>
|
|
|
|
<title>SQL Features</title>
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2011-03-05 13:36:35 +01:00
|
|
|
Add ALTER ... SET SCHEMA support for conversions,
|
2010-12-24 12:49:47 +01:00
|
|
|
operators, operator classes, operator families, text search
|
|
|
|
configurations, text search dictionaries, text search
|
2011-03-05 13:36:35 +01:00
|
|
|
parsers, and text search templates
|
2010-10-28 16:42:58 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2011-03-05 13:36:35 +01:00
|
|
|
Make TRUNCATE ... RESTART IDENTITY restart sequences transactionally
|
2010-12-24 12:49:47 +01:00
|
|
|
</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>
|
2011-03-05 13:36:35 +01:00
|
|
|
Prevent invoking I/O conversion casts via
|
|
|
|
functional/attribute notation
|
2010-12-24 12:49:47 +01:00
|
|
|
</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
|
2010-10-28 16:42:58 +02:00
|
|
|
</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>
|
2010-12-24 12:49:47 +01:00
|
|
|
Allow WITH clauses to be attached to INSERT, UPDATE, DELETE
|
|
|
|
statements
|
2010-10-28 16:42:58 +02:00
|
|
|
</para>
|
2011-03-05 15:36:19 +01:00
|
|
|
</listitem>
|
2010-10-28 16:42:58 +02:00
|
|
|
|
2011-03-05 15:36:19 +01:00
|
|
|
<listitem>
|
2010-10-28 16:42:58 +02:00
|
|
|
<para>
|
2011-03-05 15:36:19 +01:00
|
|
|
<emphasis>Allow INSERT/UPDATE/DELETE to be used inside a WITH
|
|
|
|
clause</emphasis>
|
2010-10-28 16:42:58 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2010-12-24 12:49:47 +01:00
|
|
|
Allow new values to be added to an existing enum type
|
2010-10-28 16:42:58 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Recognize functional dependency on primary
|
|
|
|
keys
|
2010-09-02 19:30:06 +02:00
|
|
|
</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>
|
2010-10-28 16:42:58 +02:00
|
|
|
Add CREATE TABLE IF NOT EXISTS
|
2010-09-02 19:30:06 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
2011-03-05 15:36:19 +01:00
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
<emphasis>Allow a table's row type to be cast to the table's supertype
|
2011-03-09 06:06:02 +01:00
|
|
|
if it's a type table</emphasis>
|
2011-03-05 15:36:19 +01:00
|
|
|
</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
|
2011-03-09 06:06:02 +01:00
|
|
|
TABLEs</emphasis>
|
2011-03-05 15:36:19 +01:00
|
|
|
</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
|
2011-03-09 06:06:02 +01:00
|
|
|
using an existing index</emphasis>
|
2011-03-05 15:36:19 +01:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2011-03-07 19:57:06 +01:00
|
|
|
<emphasis>Implement Serializable Snapshot Isolation, in order to
|
2011-03-09 06:06:02 +01:00
|
|
|
provide a more robust serializable transaction mode</emphasis>
|
2011-03-07 19:57:06 +01:00
|
|
|
</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.
|
2011-03-05 15:36:19 +01:00
|
|
|
</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>
|
2011-03-09 06:06:02 +01:00
|
|
|
<emphasis>Teach ALTER TABLE ... SET DATA TYPE to avoid a table write
|
2011-03-05 15:36:19 +01:00
|
|
|
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>
|
|
|
|
|
2010-09-02 19:30:06 +02:00
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
|
|
<title>Performance</title>
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2011-03-05 13:36:35 +01:00
|
|
|
Optimize the commit_siblings configuration parameter
|
2010-12-24 12:49:47 +01:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2011-03-05 13:36:35 +01:00
|
|
|
KNN GiST, otherwise known as order-by-operator support for GiST
|
2010-12-24 12:49:47 +01:00
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This can be used to optimize nearest-neighbor searches.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
2011-03-05 15:36:19 +01:00
|
|
|
|
2010-12-24 12:49:47 +01:00
|
|
|
<listitem>
|
|
|
|
<para>
|
2011-03-05 13:36:35 +01:00
|
|
|
Improve process shutdown speed
|
2010-12-24 12:49:47 +01:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2011-03-05 13:36:35 +01:00
|
|
|
Speed up conversion of signed integers to C strings
|
2010-12-24 12:49:47 +01:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Support MergeAppend plans, to allow sorted output
|
|
|
|
from append relations
|
2010-10-28 16:42:58 +02:00
|
|
|
</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>
|
|
|
|
|
2011-03-05 15:36:19 +01:00
|
|
|
<listitem>
|
|
|
|
<para>
|
2011-03-09 06:06:02 +01:00
|
|
|
<emphasis>Support unlogged tables</emphasis>
|
2011-03-05 15:36:19 +01:00
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
The contents of an unlogged table are not WAL-logged; thus, they
|
2011-03-05 15:53:05 +01:00
|
|
|
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.
|
2011-03-05 15:36:19 +01:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2011-03-09 06:06:02 +01:00
|
|
|
<emphasis>Hash joins now support right and full outer joins</emphasis>
|
2011-03-05 15:36:19 +01:00
|
|
|
</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>
|
|
|
|
|
2010-10-28 16:42:58 +02:00
|
|
|
<listitem>
|
|
|
|
<para>
|
2010-12-24 12:49:47 +01:00
|
|
|
Reduce the memory requirement for large ispell dictionaries
|
2010-10-28 16:42:58 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2010-12-24 12:49:47 +01:00
|
|
|
Teach CLUSTER to use seqscan-and-sort when it's faster than
|
|
|
|
indexscan
|
2010-09-02 19:30:06 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2010-12-24 12:49:47 +01:00
|
|
|
Improve GIN indexscan cost estimation
|
2010-09-02 19:30:06 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
2011-03-05 15:36:19 +01:00
|
|
|
<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>
|
|
|
|
|
2010-09-02 19:30:06 +02:00
|
|
|
<listitem>
|
|
|
|
<para>
|
2010-12-24 12:49:47 +01:00
|
|
|
Performance improvements in pg_upgrade for uses with many tables
|
2010-10-28 16:42:58 +02:00
|
|
|
</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
|
2010-09-02 19:30:06 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
2011-03-05 15:36:19 +01:00
|
|
|
<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>
|
|
|
|
|
2010-09-02 19:30:06 +02:00
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
|
|
<title>Server Settings</title>
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2010-10-28 16:42:58 +02:00
|
|
|
Change the default value of
|
2010-09-02 19:30:06 +02:00
|
|
|
<literal>standard_conforming_strings</> to
|
2010-10-28 16:42:58 +02:00
|
|
|
<literal>on</>
|
2010-09-02 19:30:06 +02:00
|
|
|
</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>
|
2010-10-28 16:42:58 +02:00
|
|
|
Add <literal>log_file_mode</> parameter
|
2010-09-02 19:30:06 +02:00
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
This allows control of the file permissions set on log files created
|
|
|
|
by the syslogger process.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2010-10-28 16:42:58 +02:00
|
|
|
Add <literal>restart_after_crash</> parameter
|
2010-09-02 19:30:06 +02:00
|
|
|
</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>
|
|
|
|
|
2011-03-05 15:36:19 +01:00
|
|
|
<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>
|
|
|
|
|
2010-09-02 19:30:06 +02:00
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
|
|
<title>Administration and Monitoring</title>
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2011-03-05 13:36:35 +01:00
|
|
|
Instrument checkpoint sync calls
|
2010-12-24 12:49:47 +01:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2011-03-05 13:36:35 +01:00
|
|
|
Use the same lexer for recovery.conf that has been used for postgresql.conf
|
2010-12-24 12:49:47 +01:00
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Among other things, this allows values in recovery.conf to be unquoted.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2011-03-05 13:36:35 +01:00
|
|
|
Add column buffers_backend_fsync to pg_stat_bgwriter
|
2010-12-24 12:49:47 +01:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2011-03-05 13:36:35 +01:00
|
|
|
Add monitoring function pg_last_xact_replay_timestamp()
|
2010-12-24 12:49:47 +01:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow pg_ctl to register the service in either AUTO or DEMAND start
|
|
|
|
type
|
2010-10-28 16:42:58 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2011-03-09 06:06:02 +01:00
|
|
|
Support host names and host key word <literal>all</literal>
|
2010-12-24 12:49:47 +01:00
|
|
|
in <filename>pg_hba.conf</filename>
|
2010-10-28 16:42:58 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Make EXPLAIN show the function call expression of a
|
|
|
|
FunctionScan plan node, but only in VERBOSE mode
|
2010-09-02 19:30:06 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2010-10-28 16:42:58 +02:00
|
|
|
Make EXPLAIN print PARAM_EXEC Params as
|
|
|
|
the referenced expressions, rather than just $N
|
2010-09-02 19:30:06 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2010-10-28 16:42:58 +02:00
|
|
|
Add vacuum and analyze counters to pg_stat_*_tables
|
|
|
|
views
|
2010-09-02 19:30:06 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2010-10-28 16:42:58 +02:00
|
|
|
Add stats functions and views to provide access to a
|
|
|
|
transaction's own statistics counts
|
2010-09-02 19:30:06 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
2011-03-05 15:36:19 +01:00
|
|
|
<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
|
2011-03-09 06:06:02 +01:00
|
|
|
relation without blocking, skip the relation</emphasis>
|
2011-03-05 15:36:19 +01:00
|
|
|
</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>
|
|
|
|
|
2010-09-02 19:30:06 +02:00
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
|
|
<title>Security</title>
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2010-12-24 12:49:47 +01:00
|
|
|
Add SECURITY LABEL command
|
2010-10-28 16:42:58 +02:00
|
|
|
</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
|
2010-09-02 19:30:06 +02:00
|
|
|
</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>
|
|
|
|
|
2011-03-05 15:36:19 +01:00
|
|
|
<listitem>
|
|
|
|
<para>
|
2011-03-09 06:06:02 +01:00
|
|
|
<emphasis>Add REPLICATION privilege for ROLEs</emphasis>
|
2011-03-05 15:36:19 +01:00
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
This makes it possible for replication to be performed by a
|
|
|
|
non-superuser account.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
2010-09-02 19:30:06 +02:00
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
2011-02-01 23:00:26 +01:00
|
|
|
<title>Built-in Functions</title>
|
2010-09-02 19:30:06 +02:00
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2011-03-05 13:36:35 +01:00
|
|
|
Add pg_read_binary_file() and whole-file-at-once
|
|
|
|
versions of pg_read_file()
|
2010-12-24 12:49:47 +01:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2011-03-05 13:36:35 +01:00
|
|
|
Add new function format(), for sprintf-like string formatting
|
2010-12-24 12:49:47 +01:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2011-03-05 13:36:35 +01:00
|
|
|
Add pg_describe_object() function to obtain textual
|
|
|
|
descriptions of objects as stored in pg_depend
|
2010-12-24 12:49:47 +01:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Accept <literal>public</literal> as a pseudo-role
|
2010-10-28 16:42:58 +02:00
|
|
|
name in <literal>has_table_privilege()</literal> and friends
|
|
|
|
to see if a particular privilege has been granted to
|
2010-12-24 12:49:47 +01:00
|
|
|
<literal>PUBLIC</literal>
|
2010-09-02 19:30:06 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2010-10-28 16:42:58 +02:00
|
|
|
Add string functions: concat(), concat_ws(), left(),
|
|
|
|
right(), and reverse()
|
2010-09-02 19:30:06 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2010-10-28 16:42:58 +02:00
|
|
|
Add three-parameter forms of array_to_string and
|
|
|
|
string_to_array
|
2010-09-02 19:30:06 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2010-10-28 16:42:58 +02:00
|
|
|
Add XMLEXISTS function
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add xpath_exists() function
|
2010-09-02 19:30:06 +02:00
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
This is equivalent to XMLEXISTS except that it offers support for
|
|
|
|
namespace mapping.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2010-10-28 16:42:58 +02:00
|
|
|
Add xml_is_well_formed, xml_is_well_formed_document,
|
2010-09-02 19:30:06 +02:00
|
|
|
xml_is_well_formed_content functions to the core XML
|
2010-10-28 16:42:58 +02:00
|
|
|
code
|
2010-09-02 19:30:06 +02:00
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
These supersede a version previously offered by contrib/xml2.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
2011-03-05 15:36:19 +01:00
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
<emphasis>Change pg_last_xlog_receive_location not to move
|
2011-03-09 06:06:02 +01:00
|
|
|
backwards</emphasis>
|
2011-03-05 15:36:19 +01:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
2010-09-02 19:30:06 +02:00
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
|
|
<title>Data Types</title>
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2010-10-28 16:42:58 +02:00
|
|
|
Allow numeric to use a more compact, 2-byte header in
|
|
|
|
many cases
|
2010-09-02 19:30:06 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2010-10-28 16:42:58 +02:00
|
|
|
Add support for dividing money by money (yielding a
|
|
|
|
float8 result) and for casting between money and numeric
|
2010-09-02 19:30:06 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
|
|
<title>Server Tools</title>
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2010-10-28 16:42:58 +02:00
|
|
|
Add options to force quoting of all
|
|
|
|
identifiers
|
2010-09-02 19:30:06 +02:00
|
|
|
</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>
|
|
|
|
|
2011-03-05 15:36:19 +01:00
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
<emphasis>Add a directory output format to pg_dump</emphasis>
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
2010-09-02 19:30:06 +02:00
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
|
|
<title>psql</title>
|
|
|
|
<itemizedlist>
|
|
|
|
|
2010-12-24 12:49:47 +01:00
|
|
|
<listitem>
|
|
|
|
<para>
|
2011-03-05 13:36:35 +01:00
|
|
|
Add <quote>S</quote> option to \dn command in psql
|
2010-12-24 12:49:47 +01:00
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
System schemas are now hidden by default by \dn.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
2010-09-02 19:30:06 +02:00
|
|
|
<listitem>
|
|
|
|
<para>
|
2010-10-28 16:42:58 +02:00
|
|
|
Add \conninfo command to psql, to show current connection
|
|
|
|
info
|
2010-09-02 19:30:06 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2010-10-28 16:42:58 +02:00
|
|
|
Extend psql's \e and \ef commands so that a line number
|
2010-09-02 19:30:06 +02:00
|
|
|
can be specified, and the editor's cursor will be initially placed
|
2010-10-28 16:42:58 +02:00
|
|
|
on that line
|
2010-09-02 19:30:06 +02:00
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
To avoid assumptions about what switch the user's editor takes for
|
|
|
|
this purpose, there is a new psql variable EDITOR_LINENUMBER_SWITCH
|
|
|
|
with (at present) no default value.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2010-10-28 16:42:58 +02:00
|
|
|
Add a \sf (show function) command to psql, for those
|
2010-09-02 19:30:06 +02:00
|
|
|
times when you need to look at a function but don't wish to fire up
|
2010-10-28 16:42:58 +02:00
|
|
|
an editor
|
2010-09-02 19:30:06 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2010-10-28 16:42:58 +02:00
|
|
|
Make psql distinguish between unique indices and unique
|
|
|
|
constraints in \d printout
|
2010-09-02 19:30:06 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
2011-03-05 15:36:19 +01:00
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
<emphasis>Add a \dL command to psql, to list procedural
|
|
|
|
languages</emphasis>
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
<emphasis>Allow psql to automatically deduce the client encoding from
|
|
|
|
the locale</emphasis>
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
2010-09-02 19:30:06 +02:00
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
2010-12-24 12:49:47 +01:00
|
|
|
<sect3>
|
|
|
|
<title>libpq</title>
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2011-03-05 13:36:35 +01:00
|
|
|
Add PQlibVersion() function
|
2010-12-24 12:49:47 +01:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2011-03-05 13:36:35 +01:00
|
|
|
When reporting the server as not responding, if the
|
|
|
|
hostname was supplied, also print the IP address
|
2010-12-24 12:49:47 +01:00
|
|
|
</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>
|
2011-03-05 13:36:35 +01:00
|
|
|
Add functions PQping and PQpingParams to allow
|
2010-12-24 12:49:47 +01:00
|
|
|
detection of the server's status, including a status where
|
2011-03-05 13:36:35 +01:00
|
|
|
the server is running but refuses ordinary connections
|
2010-12-24 12:49:47 +01:00
|
|
|
</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>
|
2011-03-05 15:36:19 +01:00
|
|
|
<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>
|
2010-09-02 19:30:06 +02:00
|
|
|
<sect3>
|
|
|
|
<title>Procedural Languages</title>
|
|
|
|
<sect4>
|
|
|
|
<title>PL/pgSQL</title>
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2010-10-28 16:42:58 +02:00
|
|
|
Modify the handling of RAISE without parameters so that
|
2010-09-02 19:30:06 +02:00
|
|
|
the error it throws can be caught in the same places that could
|
2010-10-28 16:42:58 +02:00
|
|
|
catch an ordinary RAISE ERROR in the same location
|
2010-09-02 19:30:06 +02:00
|
|
|
</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>
|
2010-10-28 16:42:58 +02:00
|
|
|
Remove ancient PL/pgSQL line numbering hack
|
2010-09-02 19:30:06 +02:00
|
|
|
</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>
|
2010-10-30 21:34:20 +02:00
|
|
|
|
|
|
|
<sect4>
|
|
|
|
<title>PL/Perl</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2010-12-24 12:49:47 +01:00
|
|
|
Allow generic record arguments to PL/Perl functions
|
2010-10-30 21:34:20 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
2011-03-05 15:36:19 +01:00
|
|
|
|
|
|
|
<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>
|
2011-03-09 05:59:52 +01:00
|
|
|
<emphasis>Make plpy.Fatal() raise FATAL, rather than ERROR</emphasis>
|
2011-03-05 15:36:19 +01:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2011-03-09 05:59:52 +01:00
|
|
|
<emphasis>Skip dropped attributes when converting Python objects to
|
|
|
|
tuples</emphasis>
|
2011-03-05 15:36:19 +01:00
|
|
|
</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>
|
2011-03-09 05:59:52 +01:00
|
|
|
<emphasis>Improve error reporting</emphasis>
|
2011-03-05 15:36:19 +01:00
|
|
|
</para>
|
2011-03-09 05:59:52 +01:00
|
|
|
<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.
|
2011-03-05 15:36:19 +01:00
|
|
|
</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>
|
2010-10-30 21:34:20 +02:00
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
2010-09-02 19:30:06 +02:00
|
|
|
</sect3>
|
2011-03-05 15:36:19 +01:00
|
|
|
|
2010-09-02 19:30:06 +02:00
|
|
|
<sect3>
|
|
|
|
<title>Additional Supplied Modules</title>
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2011-03-05 13:36:35 +01:00
|
|
|
New module contrib/auth_delay
|
2010-12-24 12:49:47 +01:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
2011-03-05 15:36:19 +01:00
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
<emphasis>New module contrib/sepgsql, an SE-Linux integration for
|
|
|
|
PostgreSQL</emphasis>
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
2010-12-24 12:49:47 +01:00
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Updates to contrib/isn ISBN tables
|
2010-10-28 16:42:58 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add the ability to compute per-statement latencies (ie,
|
|
|
|
average execution times) to pgbench
|
2010-09-02 19:30:06 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2010-10-28 16:42:58 +02:00
|
|
|
Teach levenshtein() about multi-byte
|
|
|
|
characters
|
2010-09-02 19:30:06 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2010-10-28 16:42:58 +02:00
|
|
|
Add btree_gist support for searching on <quote>not
|
|
|
|
equals</quote>
|
2010-09-02 19:30:06 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2010-10-28 16:42:58 +02:00
|
|
|
Add ssl_cipher() and ssl_version() functions to
|
|
|
|
contrib/sslinfo
|
2010-09-02 19:30:06 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2010-10-28 16:42:58 +02:00
|
|
|
Remove the arbitrary (and undocumented) limit on the
|
2010-09-02 19:30:06 +02:00
|
|
|
number of parameter=value pairs that can be handled by
|
2010-10-28 16:42:58 +02:00
|
|
|
xslt_process()
|
2010-09-02 19:30:06 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
2011-03-05 15:36:19 +01:00
|
|
|
<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>
|
|
|
|
|
2010-09-02 19:30:06 +02:00
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
|
|
<title>Source Code, Build Options</title>
|
|
|
|
<itemizedlist>
|
|
|
|
|
2010-12-24 12:49:47 +01:00
|
|
|
<listitem>
|
|
|
|
<para>
|
2011-03-05 13:36:35 +01:00
|
|
|
Rewrite the GiST insertion logic so that the
|
2010-12-24 12:49:47 +01:00
|
|
|
post-recovery cleanup stage to finish incomplete inserts or
|
2011-03-05 13:36:35 +01:00
|
|
|
splits is not needed anymore
|
2010-12-24 12:49:47 +01:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2011-03-05 13:36:35 +01:00
|
|
|
Add support for collecting <quote>minidump</quote>-style crash dumps
|
|
|
|
on Windows
|
2010-12-24 12:49:47 +01:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2011-03-05 13:36:35 +01:00
|
|
|
Replace pg_class.relistemp column with relpersistence
|
2010-12-24 12:49:47 +01:00
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This is for upcoming work on unlogged and global temporary tables.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2011-03-05 13:36:35 +01:00
|
|
|
GNU make 3.80 or newer is now required
|
2010-12-24 12:49:47 +01:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2011-03-05 13:36:35 +01:00
|
|
|
Improved support for parallel make, make -k, and make -q
|
2010-12-24 12:49:47 +01:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
2010-09-02 19:30:06 +02:00
|
|
|
<listitem>
|
|
|
|
<para>
|
2010-10-28 16:42:58 +02:00
|
|
|
Include the backend ID in the relpath of temporary
|
|
|
|
relations
|
2010-09-02 19:30:06 +02:00
|
|
|
</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>
|
2010-10-28 16:42:58 +02:00
|
|
|
Rewrite COMMENT ON <replaceable>object</> code for better
|
|
|
|
modularity, and add necessary locking
|
2010-09-02 19:30:06 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2010-10-28 16:42:58 +02:00
|
|
|
Add a hook in ExecCheckRTPerms() for eventual use by
|
|
|
|
external security-checking modules
|
2010-09-02 19:30:06 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2010-10-28 16:42:58 +02:00
|
|
|
Standardize names and calling conventions of
|
|
|
|
get_whatever_oid functions
|
2010-09-02 19:30:06 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2010-10-28 16:42:58 +02:00
|
|
|
Make NestLoop plan nodes pass outer-relation variables
|
2010-09-02 19:30:06 +02:00
|
|
|
into their inner relation using the general PARAM_EXEC executor
|
|
|
|
parameter mechanism, rather than the ad-hoc kluge of passing the
|
2010-10-28 16:42:58 +02:00
|
|
|
outer tuple down through ExecReScan
|
2010-09-02 19:30:06 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2010-10-28 16:42:58 +02:00
|
|
|
Make details of the Numeric representation private to
|
|
|
|
numeric.c
|
2010-09-02 19:30:06 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2010-10-28 16:42:58 +02:00
|
|
|
Suppress some compiler warnings from
|
|
|
|
<literal>clang</>
|
2010-09-02 19:30:06 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
2011-03-05 15:36:19 +01:00
|
|
|
<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>
|
|
|
|
|
2010-09-02 19:30:06 +02:00
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
</sect2>
|
2011-03-19 21:39:17 +01:00
|
|
|
</sect1>
|
|
|
|
|