mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-10-04 04:06:49 +02:00
5535 lines
149 KiB
Plaintext
5535 lines
149 KiB
Plaintext
<!-- doc/src/sgml/release-9.0.sgml -->
|
|
<!-- See header comment in release.sgml about typical markup -->
|
|
|
|
<sect1 id="release-9-0-6">
|
|
<title>Release 9.0.6</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2011-12-05</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 9.0.5.
|
|
For information about new features in the 9.0 major release, see
|
|
<xref linkend="release-9-0">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 9.0.6</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 9.0.X.
|
|
</para>
|
|
|
|
<para>
|
|
However, a longstanding error was discovered in the definition of the
|
|
<literal>information_schema.referential_constraints</> view. If you
|
|
rely on correct results from that view, you should replace its
|
|
definition as explained in the first changelog item below.
|
|
</para>
|
|
|
|
<para>
|
|
Also, if you are upgrading from a version earlier than 9.0.4,
|
|
see the release notes for 9.0.4.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix bugs in <literal>information_schema.referential_constraints</> view
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This view was being insufficiently careful about matching the
|
|
foreign-key constraint to the depended-on primary or unique key
|
|
constraint. That could result in failure to show a foreign key
|
|
constraint at all, or showing it multiple times, or claiming that it
|
|
depends on a different constraint than the one it really does.
|
|
</para>
|
|
|
|
<para>
|
|
Since the view definition is installed by <application>initdb</>,
|
|
merely upgrading will not fix the problem. If you need to fix this
|
|
in an existing installation, you can (as a superuser) drop the
|
|
<literal>information_schema</> schema then re-create it by sourcing
|
|
<filename><replaceable>SHAREDIR</>/information_schema.sql</filename>.
|
|
(Run <literal>pg_config --sharedir</> if you're uncertain where
|
|
<replaceable>SHAREDIR</> is.) This must be repeated in each database
|
|
to be fixed.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible crash during <command>UPDATE</> or <command>DELETE</> that
|
|
joins to the output of a scalar-returning function (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
A crash could only occur if the target row had been concurrently
|
|
updated, so this problem surfaced only intermittently.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix incorrect replay of WAL records for GIN index updates
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This could result in transiently failing to find index entries after
|
|
a crash, or on a hot-standby server. The problem would be repaired
|
|
by the next <command>VACUUM</> of the index, however.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix TOAST-related data corruption during <literal>CREATE TABLE dest AS
|
|
SELECT * FROM src</> or <literal>INSERT INTO dest SELECT * FROM src</>
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
If a table has been modified by <command>ALTER TABLE ADD COLUMN</>,
|
|
attempts to copy its data verbatim to another table could produce
|
|
corrupt results in certain corner cases.
|
|
The problem can only manifest in this precise form in 8.4 and later,
|
|
but we patched earlier versions as well in case there are other code
|
|
paths that could trigger the same bug.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible failures during hot standby startup (Simon Riggs)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Start hot standby faster when initial snapshot is incomplete
|
|
(Simon Riggs)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix race condition during toast table access from stale syscache entries
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
The typical symptom was transient errors like <quote>missing chunk
|
|
number 0 for toast value NNNNN in pg_toast_2619</>, where the cited
|
|
toast table would always belong to a system catalog.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Track dependencies of functions on items used in parameter default
|
|
expressions (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, a referenced object could be dropped without having dropped
|
|
or modified the function, leading to misbehavior when the function was
|
|
used. Note that merely installing this update will not fix the missing
|
|
dependency entries; to do that, you'd need to <command>CREATE OR
|
|
REPLACE</> each such function afterwards. If you have functions whose
|
|
defaults depend on non-built-in objects, doing so is recommended.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow inlining of set-returning SQL functions with multiple OUT
|
|
parameters (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Don't trust deferred-unique indexes for join removal (Tom Lane and Marti
|
|
Raudsepp)
|
|
</para>
|
|
|
|
<para>
|
|
A deferred uniqueness constraint might not hold intra-transaction,
|
|
so assuming that it does could give incorrect query results.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <function>DatumGetInetP()</> unpack inet datums that have a 1-byte
|
|
header, and add a new macro, <function>DatumGetInetPP()</>, that does
|
|
not (Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
This change affects no core code, but might prevent crashes in add-on
|
|
code that expects <function>DatumGetInetP()</> to produce an unpacked
|
|
datum as per usual convention.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve locale support in <type>money</> type's input and output
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Aside from not supporting all standard
|
|
<link linkend="guc-lc-monetary"><varname>lc_monetary</></link>
|
|
formatting options, the input and output functions were inconsistent,
|
|
meaning there were locales in which dumped <type>money</> values could
|
|
not be re-read.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Don't let <link
|
|
linkend="guc-transform-null-equals"><varname>transform_null_equals</></link>
|
|
affect <literal>CASE foo WHEN NULL ...</> constructs
|
|
(Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
<varname>transform_null_equals</> is only supposed to affect
|
|
<literal>foo = NULL</> expressions written directly by the user, not
|
|
equality checks generated internally by this form of <literal>CASE</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Change foreign-key trigger creation order to better support
|
|
self-referential foreign keys (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
For a cascading foreign key that references its own table, a row update
|
|
will fire both the <literal>ON UPDATE</> trigger and the
|
|
<literal>CHECK</> trigger as one event. The <literal>ON UPDATE</>
|
|
trigger must execute first, else the <literal>CHECK</> will check a
|
|
non-final state of the row and possibly throw an inappropriate error.
|
|
However, the firing order of these triggers is determined by their
|
|
names, which generally sort in creation order since the triggers have
|
|
auto-generated names following the convention
|
|
<quote>RI_ConstraintTrigger_NNNN</>. A proper fix would require
|
|
modifying that convention, which we will do in 9.2, but it seems risky
|
|
to change it in existing releases. So this patch just changes the
|
|
creation order of the triggers. Users encountering this type of error
|
|
should drop and re-create the foreign key constraint to get its
|
|
triggers into the right order.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid floating-point underflow while tracking buffer allocation rate
|
|
(Greg Matthews)
|
|
</para>
|
|
|
|
<para>
|
|
While harmless in itself, on certain platforms this would result in
|
|
annoying kernel log messages.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Preserve configuration file name and line number values when starting
|
|
child processes under Windows (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Formerly, these would not be displayed correctly in the
|
|
<structname>pg_settings</> view.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix incorrect field alignment in <application>ecpg</>'s SQLDA area
|
|
(Zoltan Boszormenyi)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Preserve blank lines within commands in <application>psql</>'s command
|
|
history (Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
The former behavior could cause problems if an empty line was removed
|
|
from within a string literal, for example.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>pg_dump</> to dump user-defined casts between
|
|
auto-generated types, such as table rowtypes (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Assorted fixes for <application>pg_upgrade</> (Bruce Momjian)
|
|
</para>
|
|
|
|
<para>
|
|
Handle exclusion constraints correctly, avoid failures on Windows,
|
|
don't complain about mismatched toast table names in 8.4 databases.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Use the preferred version of <application>xsubpp</> to build PL/Perl,
|
|
not necessarily the operating system's main copy
|
|
(David Wheeler and Alex Hunsaker)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix incorrect coding in <filename>contrib/dict_int</> and
|
|
<filename>contrib/dict_xsyn</> (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Some functions incorrectly assumed that memory returned by
|
|
<function>palloc()</> is guaranteed zeroed.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix assorted errors in <filename>contrib/unaccent</>'s configuration
|
|
file parsing (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Honor query cancel interrupts promptly in <function>pgstatindex()</>
|
|
(Robert Haas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix incorrect quoting of log file name in Mac OS X start script
|
|
(Sidar Lopez)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Ensure VPATH builds properly install all server header files
|
|
(Peter Eisentraut)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Shorten file names reported in verbose error messages (Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
Regular builds have always reported just the name of the C file
|
|
containing the error message call, but VPATH builds formerly
|
|
reported an absolute path name.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix interpretation of Windows timezone names for Central America
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Map <quote>Central America Standard Time</> to <literal>CST6</>, not
|
|
<literal>CST6CDT</>, because DST is generally not observed anywhere in
|
|
Central America.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update time zone data files to <application>tzdata</> release 2011n
|
|
for DST law changes in Brazil, Cuba, Fiji, Palestine, Russia, and Samoa;
|
|
also historical corrections for Alaska and British East Africa.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-9-0-5">
|
|
<title>Release 9.0.5</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2011-09-26</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 9.0.4.
|
|
For information about new features in the 9.0 major release, see
|
|
<xref linkend="release-9-0">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 9.0.5</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 9.0.X.
|
|
</para>
|
|
|
|
<para>
|
|
However, if you are upgrading from a version earlier than 9.0.4,
|
|
see the release notes for 9.0.4.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix catalog cache invalidation after a <command>VACUUM FULL</> or
|
|
<command>CLUSTER</> on a system catalog (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
In some cases the relocation of a system catalog row to another place
|
|
would not be recognized by concurrent server processes, allowing catalog
|
|
corruption to occur if they then tried to update that row. The
|
|
worst-case outcome could be as bad as complete loss of a table.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix incorrect order of operations during sinval reset processing,
|
|
and ensure that TOAST OIDs are preserved in system catalogs (Tom
|
|
Lane)
|
|
</para>
|
|
|
|
<para>
|
|
These mistakes could lead to transient failures after a <command>VACUUM
|
|
FULL</> or <command>CLUSTER</> on a system catalog.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix bugs in indexing of in-doubt HOT-updated tuples (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
These bugs could result in index corruption after reindexing a system
|
|
catalog. They are not believed to affect user indexes.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix multiple bugs in GiST index page split processing (Heikki
|
|
Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
The probability of occurrence was low, but these could lead to index
|
|
corruption.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible buffer overrun in <function>tsvector_concat()</>
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
The function could underestimate the amount of memory needed for its
|
|
result, leading to server crashes.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix crash in <function>xml_recv</> when processing a
|
|
<quote>standalone</> parameter (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <function>pg_options_to_table</> return NULL for an option with no
|
|
value (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Previously such cases would result in a server crash.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid possibly accessing off the end of memory in <command>ANALYZE</>
|
|
and in SJIS-2004 encoding conversion (Noah Misch)
|
|
</para>
|
|
|
|
<para>
|
|
This fixes some very-low-probability server crash scenarios.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Protect <function>pg_stat_reset_shared()</> against NULL input (Magnus
|
|
Hagander)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible failure when a recovery conflict deadlock is detected
|
|
within a sub-transaction (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid spurious conflicts while recycling btree index pages during hot
|
|
standby (Noah Misch, Simon Riggs)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Shut down WAL receiver if it's still running at end of recovery (Heikki
|
|
Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
The postmaster formerly panicked in this situation, but it's actually a
|
|
legitimate case.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix race condition in relcache init file invalidation (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
There was a window wherein a new backend process could read a stale init
|
|
file but miss the inval messages that would tell it the data is stale.
|
|
The result would be bizarre failures in catalog accesses, typically
|
|
<quote>could not read block 0 in file ...</> later during startup.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix memory leak at end of a GiST index scan (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Commands that perform many separate GiST index scans, such as
|
|
verification of a new GiST-based exclusion constraint on a table
|
|
already containing many rows, could transiently require large amounts of
|
|
memory due to this leak.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix memory leak when encoding conversion has to be done on incoming
|
|
command strings and <command>LISTEN</> is active (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix incorrect memory accounting (leading to possible memory bloat) in
|
|
tuplestores supporting holdable cursors and plpgsql's <literal>RETURN
|
|
NEXT</> command (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix trigger <literal>WHEN</> conditions when both <literal>BEFORE</> and
|
|
<literal>AFTER</> triggers exist (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Evaluation of <literal>WHEN</> conditions for <literal>AFTER ROW
|
|
UPDATE</> triggers could crash if there had been a <literal>BEFORE
|
|
ROW</> trigger fired for the same update.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix performance problem when constructing a large, lossy bitmap
|
|
(Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix join selectivity estimation for unique columns (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This fixes an erroneous planner heuristic that could lead to poor
|
|
estimates of the result size of a join.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix nested PlaceHolderVar expressions that appear only in sub-select
|
|
target lists (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This mistake could result in outputs of an outer join incorrectly
|
|
appearing as NULL.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow the planner to assume that empty parent tables really are empty
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Normally an empty table is assumed to have a certain minimum size for
|
|
planning purposes; but this heuristic seems to do more harm than good
|
|
for the parent table of an inheritance hierarchy, which often is
|
|
permanently empty.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow nested <literal>EXISTS</> queries to be optimized properly (Tom
|
|
Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix array- and path-creating functions to ensure padding bytes are
|
|
zeroes (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This avoids some situations where the planner will think that
|
|
semantically-equal constants are not equal, resulting in poor
|
|
optimization.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <command>EXPLAIN</> to handle gating Result nodes within
|
|
inner-indexscan subplans (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
The usual symptom of this oversight was <quote>bogus varno</> errors.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix btree preprocessing of <replaceable>indexedcol</> <literal>IS
|
|
NULL</> conditions (Dean Rasheed)
|
|
</para>
|
|
|
|
<para>
|
|
Such a condition is unsatisfiable if combined with any other type of
|
|
btree-indexable condition on the same index column. The case was
|
|
handled incorrectly in 9.0.0 and later, leading to query output where
|
|
there should be none.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Work around gcc 4.6.0 bug that breaks WAL replay (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This could lead to loss of committed transactions after a server crash.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix dump bug for <literal>VALUES</> in a view (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Disallow <literal>SELECT FOR UPDATE/SHARE</> on sequences (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This operation doesn't work as expected and can lead to failures.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <command>VACUUM</> so that it always updates
|
|
<literal>pg_class</>.<literal>reltuples</>/<literal>relpages</> (Tom
|
|
Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This fixes some scenarios where autovacuum could make increasingly poor
|
|
decisions about when to vacuum tables.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Defend against integer overflow when computing size of a hash table (Tom
|
|
Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix cases where <command>CLUSTER</> might attempt to access
|
|
already-removed TOAST data (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix premature timeout failures during initial authentication transaction
|
|
(Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix portability bugs in use of credentials control messages for
|
|
<quote>peer</> authentication (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix SSPI login when multiple roundtrips are required (Ahmed Shinwari,
|
|
Magnus Hagander)
|
|
</para>
|
|
|
|
<para>
|
|
The typical symptom of this problem was <quote>The function requested is
|
|
not supported</> errors during SSPI login.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix failure when adding a new variable of a custom variable class to
|
|
<filename>postgresql.conf</> (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Throw an error if <filename>pg_hba.conf</> contains <literal>hostssl</>
|
|
but SSL is disabled (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This was concluded to be more user-friendly than the previous behavior
|
|
of silently ignoring such lines.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix failure when <command>DROP OWNED BY</> attempts to remove default
|
|
privileges on sequences (Shigeru Hanada)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix typo in <function>pg_srand48</> seed initialization (Andres Freund)
|
|
</para>
|
|
|
|
<para>
|
|
This led to failure to use all bits of the provided seed. This function
|
|
is not used on most platforms (only those without <function>srandom</>),
|
|
and the potential security exposure from a less-random-than-expected
|
|
seed seems minimal in any case.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid integer overflow when the sum of <literal>LIMIT</> and
|
|
<literal>OFFSET</> values exceeds 2^63 (Heikki Linnakangas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add overflow checks to <type>int4</> and <type>int8</> versions of
|
|
<function>generate_series()</> (Robert Haas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix trailing-zero removal in <function>to_char()</> (Marti Raudsepp)
|
|
</para>
|
|
|
|
<para>
|
|
In a format with <literal>FM</> and no digit positions
|
|
after the decimal point, zeroes to the left of the decimal point could
|
|
be removed incorrectly.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <function>pg_size_pretty()</> to avoid overflow for inputs close to
|
|
2^63 (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Weaken plpgsql's check for typmod matching in record values (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
An overly enthusiastic check could lead to discarding length modifiers
|
|
that should have been kept.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Correctly handle quotes in locale names during <application>initdb</>
|
|
(Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
The case can arise with some Windows locales, such as <quote>People's
|
|
Republic of China</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
In <application>pg_upgrade</>, avoid dumping orphaned temporary tables
|
|
(Bruce Momjian)
|
|
</para>
|
|
|
|
<para>
|
|
This prevents situations wherein table OID assignments could get out of
|
|
sync between old and new installations.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>pg_upgrade</> to preserve toast tables' relfrozenxids
|
|
during an upgrade from 8.3 (Bruce Momjian)
|
|
</para>
|
|
|
|
<para>
|
|
Failure to do this could lead to <filename>pg_clog</> files being
|
|
removed too soon after the upgrade.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
In <application>pg_upgrade</>, fix the <literal>-l</> (log) option to
|
|
work on Windows (Bruce Momjian)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
In <application>pg_ctl</>, support silent mode for service registrations
|
|
on Windows (MauMau)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>psql</>'s counting of script file line numbers during
|
|
<literal>COPY</> from a different file (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>pg_restore</>'s direct-to-database mode for
|
|
<varname>standard_conforming_strings</> (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
<application>pg_restore</> could emit incorrect commands when restoring
|
|
directly to a database server from an archive file that had been made
|
|
with <varname>standard_conforming_strings</> set to <literal>on</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Be more user-friendly about unsupported cases for parallel
|
|
<application>pg_restore</> (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This change ensures that such cases are detected and reported before
|
|
any restore actions have been taken.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix write-past-buffer-end and memory leak in <application>libpq</>'s
|
|
LDAP service lookup code (Albe Laurenz)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
In <application>libpq</>, avoid failures when using nonblocking I/O
|
|
and an SSL connection (Martin Pihlak, Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve libpq's handling of failures during connection startup
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
In particular, the response to a server report of <function>fork()</>
|
|
failure during SSL connection startup is now saner.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve <application>libpq</>'s error reporting for SSL failures (Tom
|
|
Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <function>PQsetvalue()</> to avoid possible crash when adding a new
|
|
tuple to a <structname>PGresult</> originally obtained from a server
|
|
query (Andrew Chernow)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <application>ecpglib</> write <type>double</> values with 15 digits
|
|
precision (Akira Kurosawa)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
In <application>ecpglib</>, be sure <literal>LC_NUMERIC</> setting is
|
|
restored after an error (Michael Meskes)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Apply upstream fix for blowfish signed-character bug (CVE-2011-2483)
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
<filename>contrib/pg_crypto</>'s blowfish encryption code could give
|
|
wrong results on platforms where char is signed (which is most),
|
|
leading to encrypted passwords being weaker than they should be.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix memory leak in <filename>contrib/seg</> (Heikki Linnakangas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <function>pgstatindex()</> to give consistent results for empty
|
|
indexes (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow building with perl 5.14 (Alex Hunsaker)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix assorted issues with build and install file paths containing spaces
|
|
(Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update time zone data files to <application>tzdata</> release 2011i
|
|
for DST law changes in Canada, Egypt, Russia, Samoa, and South Sudan.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-9-0-4">
|
|
<title>Release 9.0.4</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2011-04-18</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 9.0.3.
|
|
For information about new features in the 9.0 major release, see
|
|
<xref linkend="release-9-0">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 9.0.4</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 9.0.X.
|
|
</para>
|
|
|
|
<para>
|
|
However, if your installation was upgraded from a previous major
|
|
release by running <application>pg_upgrade</>, you should take
|
|
action to prevent possible data loss due to a now-fixed bug in
|
|
<application>pg_upgrade</>. The recommended solution is to run
|
|
<command>VACUUM FREEZE</> on all TOAST tables.
|
|
More information is available at <ulink
|
|
url="http://wiki.postgresql.org/wiki/20110408pg_upgrade_fix">
|
|
http://wiki.postgresql.org/wiki/20110408pg_upgrade_fix</ulink>.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>pg_upgrade</>'s handling of TOAST tables
|
|
(Bruce Momjian)
|
|
</para>
|
|
|
|
<para>
|
|
The <structname>pg_class</>.<structfield>relfrozenxid</> value for
|
|
TOAST tables was not correctly copied into the new installation
|
|
during <application>pg_upgrade</>. This could later result in
|
|
<literal>pg_clog</> files being discarded while they were still
|
|
needed to validate tuples in the TOAST tables, leading to
|
|
<quote>could not access status of transaction</> failures.
|
|
</para>
|
|
|
|
<para>
|
|
This error poses a significant risk of data loss for installations
|
|
that have been upgraded with <application>pg_upgrade</>. This patch
|
|
corrects the problem for future uses of <application>pg_upgrade</>,
|
|
but does not in itself cure the issue in installations that have been
|
|
processed with a buggy version of <application>pg_upgrade</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Suppress incorrect <quote>PD_ALL_VISIBLE flag was incorrectly set</>
|
|
warning (Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
<command>VACUUM</> would sometimes issue this warning in cases that
|
|
are actually valid.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Use better SQLSTATE error codes for hot standby conflict cases
|
|
(Tatsuo Ishii and Simon Riggs)
|
|
</para>
|
|
|
|
<para>
|
|
All retryable conflict errors now have an error code that indicates
|
|
that a retry is possible. Also, session closure due to the database
|
|
being dropped on the master is now reported as
|
|
<literal>ERRCODE_DATABASE_DROPPED</>, rather than
|
|
<literal>ERRCODE_ADMIN_SHUTDOWN</>, so that connection poolers can
|
|
handle the situation correctly.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent intermittent hang in interactions of startup process with
|
|
bgwriter process (Simon Riggs)
|
|
</para>
|
|
|
|
<para>
|
|
This affected recovery in non-hot-standby cases.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Disallow including a composite type in itself (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This prevents scenarios wherein the server could recurse infinitely
|
|
while processing the composite type. While there are some possible
|
|
uses for such a structure, they don't seem compelling enough to
|
|
justify the effort required to make sure it always works safely.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid potential deadlock during catalog cache initialization
|
|
(Nikhil Sontakke)
|
|
</para>
|
|
|
|
<para>
|
|
In some cases the cache loading code would acquire share lock on a
|
|
system index before locking the index's catalog. This could deadlock
|
|
against processes trying to acquire exclusive locks in the other,
|
|
more standard order.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix dangling-pointer problem in <literal>BEFORE ROW UPDATE</> trigger
|
|
handling when there was a concurrent update to the target tuple
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This bug has been observed to result in intermittent <quote>cannot
|
|
extract system attribute from virtual tuple</> failures while trying to
|
|
do <literal>UPDATE RETURNING ctid</>. There is a very small probability
|
|
of more serious errors, such as generating incorrect index entries for
|
|
the updated tuple.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Disallow <command>DROP TABLE</> when there are pending deferred trigger
|
|
events for the table (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Formerly the <command>DROP</> would go through, leading to
|
|
<quote>could not open relation with OID nnn</> errors when the
|
|
triggers were eventually fired.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <quote>replication</> as a user name in
|
|
<filename>pg_hba.conf</> (Andrew Dunstan)
|
|
</para>
|
|
|
|
<para>
|
|
<quote>replication</> is special in the database name column, but it
|
|
was mistakenly also treated as special in the user name column.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent crash triggered by constant-false WHERE conditions during
|
|
GEQO optimization (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve planner's handling of semi-join and anti-join cases
|
|
(Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix handling of <literal>SELECT FOR UPDATE</> in a sub-SELECT
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This bug typically led to <quote>cannot extract system attribute from
|
|
virtual tuple</> errors.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix selectivity estimation for text search to account for NULLs
|
|
(Jesper Krogh)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix get_actual_variable_range() to support hypothetical indexes
|
|
injected by an index adviser plugin (Gurjeet Singh)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix PL/Python memory leak involving array slices (Daniel Popowich)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <application>libpq</>'s SSL initialization to succeed when
|
|
user's home directory is unavailable (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
If the SSL mode is such that a root certificate file is not required,
|
|
there is no need to fail. This change restores the behavior to what
|
|
it was in pre-9.0 releases.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>libpq</> to return a useful error message for errors
|
|
detected in <function>conninfo_array_parse</> (Joseph Adams)
|
|
</para>
|
|
|
|
<para>
|
|
A typo caused the library to return NULL, rather than the
|
|
<structname>PGconn</> structure containing the error message, to the
|
|
application.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>ecpg</> preprocessor's handling of float constants
|
|
(Heikki Linnakangas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix parallel <application>pg_restore</> to handle comments on
|
|
POST_DATA items correctly (Arnd Hannemann)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>pg_restore</> to cope with long lines (over 1KB) in
|
|
TOC files (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Put in more safeguards against crashing due to division-by-zero
|
|
with overly enthusiastic compiler optimization (Aurelien Jarno)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support use of dlopen() in FreeBSD and OpenBSD on MIPS (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
There was a hard-wired assumption that this system function was not
|
|
available on MIPS hardware on these systems. Use a compile-time test
|
|
instead, since more recent versions have it.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix compilation failures on HP-UX (Heikki Linnakangas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid crash when trying to write to the Windows console very early
|
|
in process startup (Rushabh Lathia)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support building with MinGW 64 bit compiler for Windows
|
|
(Andrew Dunstan)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix version-incompatibility problem with <application>libintl</> on
|
|
Windows (Hiroshi Inoue)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix usage of <application>xcopy</> in Windows build scripts to
|
|
work correctly under Windows 7 (Andrew Dunstan)
|
|
</para>
|
|
|
|
<para>
|
|
This affects the build scripts only, not installation or usage.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix path separator used by <application>pg_regress</> on Cygwin
|
|
(Andrew Dunstan)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update time zone data files to <application>tzdata</> release 2011f
|
|
for DST law changes in Chile, Cuba, Falkland Islands, Morocco, Samoa,
|
|
and Turkey; also historical corrections for South Australia, Alaska,
|
|
and Hawaii.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-9-0-3">
|
|
<title>Release 9.0.3</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2011-01-31</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 9.0.2.
|
|
For information about new features in the 9.0 major release, see
|
|
<xref linkend="release-9-0">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 9.0.3</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 9.0.X.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Before exiting <application>walreceiver</>, ensure all the received WAL
|
|
is fsync'd to disk (Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
Otherwise the standby server could replay some un-synced WAL, conceivably
|
|
leading to data corruption if the system crashes just at that point.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid excess fsync activity in <application>walreceiver</>
|
|
(Heikki Linnakangas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <command>ALTER TABLE</> revalidate uniqueness and exclusion
|
|
constraints when needed (Noah Misch)
|
|
</para>
|
|
|
|
<para>
|
|
This was broken in 9.0 by a change that was intended to suppress
|
|
revalidation during <command>VACUUM FULL</> and <command>CLUSTER</>,
|
|
but unintentionally affected <command>ALTER TABLE</> as well.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix EvalPlanQual for <command>UPDATE</> of an inheritance tree in which
|
|
the tables are not all alike (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Any variation in the table row types (including dropped columns present
|
|
in only some child tables) would confuse the EvalPlanQual code, leading
|
|
to misbehavior or even crashes. Since EvalPlanQual is only executed
|
|
during concurrent updates to the same row, the problem was only seen
|
|
intermittently.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid failures when <command>EXPLAIN</> tries to display a simple-form
|
|
<literal>CASE</> expression (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
If the <literal>CASE</>'s test expression was a constant, the planner
|
|
could simplify the <literal>CASE</> into a form that confused the
|
|
expression-display code, resulting in <quote>unexpected CASE WHEN
|
|
clause</> errors.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix assignment to an array slice that is before the existing range
|
|
of subscripts (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
If there was a gap between the newly added subscripts and the first
|
|
pre-existing subscript, the code miscalculated how many entries needed
|
|
to be copied from the old array's null bitmap, potentially leading to
|
|
data corruption or crash.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid unexpected conversion overflow in planner for very distant date
|
|
values (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
The <type>date</> type supports a wider range of dates than can be
|
|
represented by the <type>timestamp</> types, but the planner assumed it
|
|
could always convert a date to timestamp with impunity.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix PL/Python crash when an array contains null entries (Alex Hunsaker)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Remove <application>ecpg</>'s fixed length limit for constants defining
|
|
an array dimension (Michael Meskes)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix erroneous parsing of <type>tsquery</> values containing
|
|
<literal>... & !(subexpression) | ...</literal> (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Queries containing this combination of operators were not executed
|
|
correctly. The same error existed in <filename>contrib/intarray</>'s
|
|
<type>query_int</> type and <filename>contrib/ltree</>'s
|
|
<type>ltxtquery</> type.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix buffer overrun in <filename>contrib/intarray</>'s input function
|
|
for the <type>query_int</> type (Apple)
|
|
</para>
|
|
|
|
<para>
|
|
This bug is a security risk since the function's return address could
|
|
be overwritten. Thanks to Apple Inc's security team for reporting this
|
|
issue and supplying the fix. (CVE-2010-4015)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix bug in <filename>contrib/seg</>'s GiST picksplit algorithm
|
|
(Alexander Korotkov)
|
|
</para>
|
|
|
|
<para>
|
|
This could result in considerable inefficiency, though not actually
|
|
incorrect answers, in a GiST index on a <type>seg</> column.
|
|
If you have such an index, consider <command>REINDEX</>ing it after
|
|
installing this update. (This is identical to the bug that was fixed in
|
|
<filename>contrib/cube</> in the previous update.)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-9-0-2">
|
|
<title>Release 9.0.2</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2010-12-16</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 9.0.1.
|
|
For information about new features in the 9.0 major release, see
|
|
<xref linkend="release-9-0">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 9.0.2</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 9.0.X.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Force the default
|
|
<link linkend="guc-wal-sync-method"><varname>wal_sync_method</></link>
|
|
to be <literal>fdatasync</> on Linux (Tom Lane, Marti Raudsepp)
|
|
</para>
|
|
|
|
<para>
|
|
The default on Linux has actually been <literal>fdatasync</> for many
|
|
years, but recent kernel changes caused <productname>PostgreSQL</> to
|
|
choose <literal>open_datasync</> instead. This choice did not result
|
|
in any performance improvement, and caused outright failures on
|
|
certain filesystems, notably <literal>ext4</> with the
|
|
<literal>data=journal</> mount option.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <quote>too many KnownAssignedXids</> error during Hot Standby
|
|
replay (Heikki Linnakangas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix race condition in lock acquisition during Hot Standby (Simon Riggs)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid unnecessary conflicts during Hot Standby (Simon Riggs)
|
|
</para>
|
|
|
|
<para>
|
|
This fixes some cases where replay was considered to conflict with
|
|
standby queries (causing delay of replay or possibly cancellation of
|
|
the queries), but there was no real conflict.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix assorted bugs in WAL replay logic for GIN indexes (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This could result in <quote>bad buffer id: 0</> failures or
|
|
corruption of index contents during replication.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix recovery from base backup when the starting checkpoint WAL record
|
|
is not in the same WAL segment as its redo point (Jeff Davis)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix corner-case bug when streaming replication is enabled immediately
|
|
after creating the master database cluster (Heikki Linnakangas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix persistent slowdown of autovacuum workers when multiple workers
|
|
remain active for a long time (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
The effective <varname>vacuum_cost_limit</> for an autovacuum worker
|
|
could drop to nearly zero if it processed enough tables, causing it
|
|
to run extremely slowly.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix long-term memory leak in autovacuum launcher (Alvaro Herrera)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid failure when trying to report an impending transaction
|
|
wraparound condition from outside a transaction (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This oversight prevented recovery after transaction wraparound got
|
|
too close, because database startup processing would fail.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add support for detecting register-stack overrun on <literal>IA64</>
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
The <literal>IA64</> architecture has two hardware stacks. Full
|
|
prevention of stack-overrun failures requires checking both.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a check for stack overflow in <function>copyObject()</> (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Certain code paths could crash due to stack overflow given a
|
|
sufficiently complex query.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix detection of page splits in temporary GiST indexes (Heikki
|
|
Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
It is possible to have a <quote>concurrent</> page split in a
|
|
temporary index, if for example there is an open cursor scanning the
|
|
index when an insertion is done. GiST failed to detect this case and
|
|
hence could deliver wrong results when execution of the cursor
|
|
continued.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix error checking during early connection processing (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
The check for too many child processes was skipped in some cases,
|
|
possibly leading to postmaster crash when attempting to add the new
|
|
child process to fixed-size arrays.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve efficiency of window functions (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Certain cases where a large number of tuples needed to be read in
|
|
advance, but <varname>work_mem</> was large enough to allow them all
|
|
to be held in memory, were unexpectedly slow.
|
|
<function>percent_rank()</>, <function>cume_dist()</> and
|
|
<function>ntile()</> in particular were subject to this problem.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid memory leakage while <command>ANALYZE</>'ing complex index
|
|
expressions (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Ensure an index that uses a whole-row Var still depends on its table
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
An index declared like <literal>create index i on t (foo(t.*))</>
|
|
would not automatically get dropped when its table was dropped.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add missing support in <command>DROP OWNED BY</> for removing foreign
|
|
data wrapper/server privileges belonging to a user (Heikki Linnakangas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Do not <quote>inline</> a SQL function with multiple <literal>OUT</>
|
|
parameters (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This avoids a possible crash due to loss of information about the
|
|
expected result rowtype.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix crash when inline-ing a set-returning function whose argument list
|
|
contains a reference to an inline-able user function (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Behave correctly if <literal>ORDER BY</>, <literal>LIMIT</>,
|
|
<literal>FOR UPDATE</>, or <literal>WITH</> is attached to the
|
|
<literal>VALUES</> part of <literal>INSERT ... VALUES</> (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make the <literal>OFF</> keyword unreserved (Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
This prevents problems with using <literal>off</> as a variable name in
|
|
<application>PL/pgSQL</>. That worked before 9.0, but was now broken
|
|
because <application>PL/pgSQL</> now treats all core reserved words
|
|
as reserved.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix constant-folding of <literal>COALESCE()</> expressions (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
The planner would sometimes attempt to evaluate sub-expressions that
|
|
in fact could never be reached, possibly leading to unexpected errors.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <quote>could not find pathkey item to sort</> planner failure
|
|
with comparison of whole-row Vars (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix postmaster crash when connection acceptance
|
|
(<function>accept()</> or one of the calls made immediately after it)
|
|
fails, and the postmaster was compiled with GSSAPI support (Alexander
|
|
Chernikov)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Retry after receiving an invalid response packet from a RADIUS
|
|
authentication server (Magnus Hagander)
|
|
</para>
|
|
|
|
<para>
|
|
This fixes a low-risk potential denial of service condition.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix missed unlink of temporary files when <varname>log_temp_files</>
|
|
is active (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
If an error occurred while attempting to emit the log message, the
|
|
unlink was not done, resulting in accumulation of temp files.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add print functionality for <structname>InhRelation</> nodes (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This avoids a failure when <varname>debug_print_parse</> is enabled
|
|
and certain types of query are executed.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix incorrect calculation of distance from a point to a horizontal
|
|
line segment (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This bug affected several different geometric distance-measurement
|
|
operators.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix incorrect calculation of transaction status in
|
|
<application>ecpg</> (Itagaki Takahiro)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix errors in <application>psql</>'s Unicode-escape support (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Speed up parallel <application>pg_restore</> when the archive
|
|
contains many large objects (blobs) (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>PL/pgSQL</>'s handling of <quote>simple</>
|
|
expressions to not fail in recursion or error-recovery cases (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>PL/pgSQL</>'s error reporting for no-such-column
|
|
cases (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
As of 9.0, it would sometimes report <quote>missing FROM-clause entry
|
|
for table foo</> when <quote>record foo has no field bar</> would be
|
|
more appropriate.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>PL/Python</> to honor typmod (i.e., length or
|
|
precision restrictions) when assigning to tuple fields (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This fixes a regression from 8.4.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>PL/Python</>'s handling of set-returning functions
|
|
(Jan Urbanski)
|
|
</para>
|
|
|
|
<para>
|
|
Attempts to call SPI functions within the iterator generating a set
|
|
result would fail.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix bug in <filename>contrib/cube</>'s GiST picksplit algorithm
|
|
(Alexander Korotkov)
|
|
</para>
|
|
|
|
<para>
|
|
This could result in considerable inefficiency, though not actually
|
|
incorrect answers, in a GiST index on a <type>cube</> column.
|
|
If you have such an index, consider <command>REINDEX</>ing it after
|
|
installing this update.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Don't emit <quote>identifier will be truncated</> notices in
|
|
<filename>contrib/dblink</> except when creating new connections
|
|
(Itagaki Takahiro)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix potential coredump on missing public key in
|
|
<filename>contrib/pgcrypto</> (Marti Raudsepp)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix buffer overrun in <filename>contrib/pg_upgrade</> (Hernan Gonzalez)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix memory leak in <filename>contrib/xml2</>'s XPath query functions
|
|
(Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update time zone data files to <application>tzdata</> release 2010o
|
|
for DST law changes in Fiji and Samoa;
|
|
also historical corrections for Hong Kong.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-9-0-1">
|
|
<title>Release 9.0.1</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2010-10-04</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 9.0.0.
|
|
For information about new features in the 9.0 major release, see
|
|
<xref linkend="release-9-0">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 9.0.1</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 9.0.X.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Use a separate interpreter for each calling SQL userid in PL/Perl and
|
|
PL/Tcl (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This change prevents security problems that can be caused by subverting
|
|
Perl or Tcl code that will be executed later in the same session under
|
|
another SQL user identity (for example, within a <literal>SECURITY
|
|
DEFINER</> function). Most scripting languages offer numerous ways that
|
|
that might be done, such as redefining standard functions or operators
|
|
called by the target function. Without this change, any SQL user with
|
|
Perl or Tcl language usage rights can do essentially anything with the
|
|
SQL privileges of the target function's owner.
|
|
</para>
|
|
|
|
<para>
|
|
The cost of this change is that intentional communication among Perl
|
|
and Tcl functions becomes more difficult. To provide an escape hatch,
|
|
PL/PerlU and PL/TclU functions continue to use only one interpreter
|
|
per session. This is not considered a security issue since all such
|
|
functions execute at the trust level of a database superuser already.
|
|
</para>
|
|
|
|
<para>
|
|
It is likely that third-party procedural languages that claim to offer
|
|
trusted execution have similar security issues. We advise contacting
|
|
the authors of any PL you are depending on for security-critical
|
|
purposes.
|
|
</para>
|
|
|
|
<para>
|
|
Our thanks to Tim Bunce for pointing out this issue (CVE-2010-3433).
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve <function>pg_get_expr()</> security fix so that the function
|
|
can still be used on the output of a sub-select (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix incorrect placement of placeholder evaluation (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This bug could result in query outputs being non-null when they
|
|
should be null, in cases where the inner side of an outer join
|
|
is a sub-select with non-strict expressions in its output list.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix join removal's handling of placeholder expressions (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible duplicate scans of <literal>UNION ALL</> member relations
|
|
(Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent infinite loop in ProcessIncomingNotify() after unlistening
|
|
(Jeff Davis)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent show_session_authorization() from crashing within autovacuum
|
|
processes (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Re-allow input of Julian dates prior to 0001-01-01 AD (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Input such as <literal>'J100000'::date</> worked before 8.4,
|
|
but was unintentionally broken by added error-checking.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make psql recognize <command>DISCARD ALL</> as a command that should
|
|
not be encased in a transaction block in autocommit-off mode
|
|
(Itagaki Takahiro)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update build infrastructure and documentation to reflect the source code
|
|
repository's move from CVS to Git (Magnus Hagander and others)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-9-0">
|
|
<title>Release 9.0</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2010-09-20</simpara>
|
|
</note>
|
|
|
|
<sect2>
|
|
<title>Overview</title>
|
|
|
|
<para>
|
|
This release of
|
|
<productname>PostgreSQL</> adds features that have been requested
|
|
for years, such as easy-to-use replication, a mass permission-changing
|
|
facility, and anonymous code blocks. While past major releases have
|
|
been conservative in their scope, this release shows a
|
|
bold new desire to provide facilities that new and existing
|
|
users of <productname>PostgreSQL</> will embrace. This has all
|
|
been done with few incompatibilities. Major enhancements include:
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
|
|
<!-- This list duplicates items below, but without authors or details-->
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
Built-in replication based on log shipping. This advance consists of
|
|
two features: Streaming Replication, allowing continuous archive
|
|
(<acronym>WAL</>) files to be streamed over a network connection to a
|
|
standby server, and Hot Standby, allowing continuous archive standby
|
|
servers to execute read-only queries. The net effect is to support a
|
|
single master with multiple read-only slave servers.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Easier database object permissions management. <link
|
|
linkend="SQL-GRANT"><command>GRANT</>/<command>REVOKE IN
|
|
SCHEMA</></link> supports mass permissions changes on existing objects,
|
|
while <link linkend="SQL-ALTERDEFAULTPRIVILEGES"><command>ALTER DEFAULT
|
|
PRIVILEGES</></link> allows control of privileges for objects created in
|
|
the future. Large objects (BLOBs) now support permissions management as
|
|
well.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Broadly enhanced stored procedure support.
|
|
The <link linkend="SQL-DO"><command>DO</></link> statement supports
|
|
ad-hoc or <quote>anonymous</> code blocks.
|
|
Functions can now be called using named parameters.
|
|
<link linkend="plpgsql">PL/pgSQL</link> is now installed by default, and
|
|
<link linkend="plperl">PL/Perl</link> and <link
|
|
linkend="plpython">PL/Python</link> have been enhanced in several ways,
|
|
including support for Python3.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Full support for <link linkend="install-windows">64-bit
|
|
<productname>Windows</></link>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
More advanced reporting queries, including additional windowing options
|
|
(<literal>PRECEDING</> and <literal>FOLLOWING</>) and the ability to
|
|
control the order in which values are fed to aggregate functions.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
New trigger features, including
|
|
SQL-standard-compliant <link
|
|
linkend="SQL-CREATETRIGGER">per-column triggers</link> and
|
|
conditional trigger execution.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<link linkend="SQL-CREATETABLE-compatibility">Deferrable
|
|
unique constraints</link>. Mass updates to unique keys are now possible
|
|
without trickery.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<link linkend="ddl-constraints-exclusion">Exclusion constraints</link>.
|
|
These provide a generalized version of unique constraints, allowing
|
|
enforcement of complex conditions.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
New and enhanced security features, including RADIUS authentication,
|
|
LDAP authentication improvements, and a new contrib module
|
|
<link linkend="passwordcheck"><filename>passwordcheck</></link>
|
|
for testing password strength.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
New high-performance implementation of the
|
|
<link linkend="SQL-LISTEN"><command>LISTEN</></link>/<link
|
|
linkend="SQL-NOTIFY"><command>NOTIFY</></link> feature.
|
|
Pending events are now stored in a memory-based queue rather than
|
|
a table. Also, a <quote>payload</> string can be sent with each
|
|
event, rather than transmitting just an event name as before.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
New implementation of
|
|
<link linkend="SQL-VACUUM"><command>VACUUM FULL</></link>.
|
|
This command now rewrites the entire table and indexes, rather than
|
|
moving individual rows to compact space. It is substantially faster
|
|
in most cases, and no longer results in index bloat.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
New contrib module
|
|
<link linkend="pgupgrade"><filename>pg_upgrade</></link>
|
|
to support in-place upgrades from 8.3 or 8.4 to 9.0.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Multiple performance enhancements for specific types of queries,
|
|
including elimination of unnecessary joins. This helps optimize some
|
|
automatically-generated queries, such as those produced by
|
|
object-relational mappers (ORMs).
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<link linkend="SQL-EXPLAIN "><command>EXPLAIN</></link> enhancements.
|
|
The output is now available in JSON, XML, or YAML format, and includes
|
|
buffer utilization and other data not previously available.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<link linkend="hstore"><filename>hstore</></link> improvements,
|
|
including new functions and greater data capacity.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<para>
|
|
The above items are explained in more detail in the sections below.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
|
|
<title>Migration to Version 9.0</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.0 contains a number of changes that selectively break backwards
|
|
compatibility in order to support new features and code quality
|
|
improvements. In particular, users who make extensive use of PL/pgSQL,
|
|
Point-In-Time Recovery (PITR), or Warm Standby should test their
|
|
applications because of slight user-visible changes in those areas.
|
|
Observe the following incompatibilities:
|
|
</para>
|
|
|
|
<sect3>
|
|
<title>Server Settings</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Remove server parameter <varname>add_missing_from</>, which was
|
|
defaulted to off for many years (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Remove server parameter <varname>regex_flavor</>, which
|
|
was defaulted to <link
|
|
linkend="posix-syntax-details"><literal>advanced</></link>
|
|
for many years (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<link linkend="guc-archive-mode"><varname>archive_mode</></link>
|
|
now only affects <link
|
|
linkend="guc-archive-command"><varname>archive_command</></link>;
|
|
a new setting, <link
|
|
linkend="guc-wal-level"><varname>wal_level</></link>, affects
|
|
the contents of the write-ahead log (Heikki Linnakangas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<link linkend="guc-log-temp-files"><varname>log_temp_files</></link>
|
|
now uses default file size units of kilobytes (Robert Haas)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Queries</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
When querying a <link linkend="ddl-inherit">parent table</link>,
|
|
do not do any separate permission checks on child tables
|
|
scanned as part of the query (Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
The SQL standard specifies this behavior, and it is also much more
|
|
convenient in practice than the former behavior of checking permissions
|
|
on each child as well as the parent.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Data Types</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
<link linkend="datatype-binary"><type>bytea</></link> output now
|
|
appears in hex format by default (Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
The server parameter <link
|
|
linkend="guc-bytea-output"><varname>bytea_output</></link> can be
|
|
used to select the traditional output format if needed for
|
|
compatibility.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Array input now considers only plain ASCII whitespace characters
|
|
to be potentially ignorable; it will never ignore non-ASCII characters,
|
|
even if they are whitespace according to some locales (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This avoids some corner cases where array values could be interpreted
|
|
differently depending on the server's locale settings.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve standards compliance of <link
|
|
linkend="functions-similarto-regexp"><literal>SIMILAR TO</></link>
|
|
patterns and SQL-style <function>substring()</> patterns (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This includes treating <literal>?</> and <literal>{...}</> as
|
|
pattern metacharacters, while they were simple literal characters
|
|
before; that corresponds to new features added in SQL:2008.
|
|
Also, <literal>^</> and <literal>$</> are now treated as simple
|
|
literal characters; formerly they were treated as metacharacters,
|
|
as if the pattern were following POSIX rather than SQL rules.
|
|
Also, in SQL-standard <function>substring()</>, use of parentheses
|
|
for nesting no longer interferes with capturing of a substring.
|
|
Also, processing of bracket expressions (character classes) is
|
|
now more standards-compliant.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Reject negative length values in 3-parameter <link
|
|
linkend="functions-string-sql"><function>substring()</></link>
|
|
for bit strings, per the SQL standard (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <function>date_trunc</> truncate rather than round when reducing
|
|
precision of fractional seconds (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
The code always acted this way for integer-based dates/times.
|
|
Now float-based dates/times behave similarly.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Object Renaming</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Tighten enforcement of column name consistency during <command>RENAME</>
|
|
when a child table inherits the same column from multiple unrelated
|
|
parents (KaiGai Kohei)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
No longer automatically rename indexes and index columns when the
|
|
underlying table columns are renamed (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Administrators can still rename such indexes and columns manually.
|
|
This change will require an update of the JDBC driver, and possibly other
|
|
drivers, so that unique indexes are correctly recognized after a rename.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<command>CREATE OR REPLACE FUNCTION</command> can no longer change
|
|
the declared names of function parameters (Pavel Stehule)
|
|
</para>
|
|
|
|
<para>
|
|
In order to avoid creating ambiguity in named-parameter calls, it is
|
|
no longer allowed to change the aliases for input parameters
|
|
in the declaration of an existing function (although names can still
|
|
be assigned to previously unnamed parameters). You now have to
|
|
<command>DROP</command> and recreate the function to do that.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>PL/pgSQL</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
PL/pgSQL now throws an error if a variable name conflicts with a
|
|
column name used in a query (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
The former behavior was to bind ambiguous names to PL/pgSQL variables
|
|
in preference to query columns, which often resulted in surprising
|
|
misbehavior. Throwing an error allows easy detection of ambiguous
|
|
situations. Although it's recommended that functions encountering this
|
|
type of error be modified to remove the conflict, the old behavior can
|
|
be restored if necessary via the configuration parameter <link
|
|
linkend="plpgsql-var-subst"><varname>plpgsql.variable_conflict</></link>,
|
|
or via the per-function option <literal>#variable_conflict</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
PL/pgSQL no longer allows variable names that match certain SQL
|
|
reserved words (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This is a consequence of aligning the PL/pgSQL parser to match the
|
|
core SQL parser more closely. If necessary,
|
|
variable names can be double-quoted to avoid this restriction.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
PL/pgSQL now requires columns of composite results to match the
|
|
expected type modifier as well as base type (Pavel Stehule, Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
For example, if a column of the result type is declared as
|
|
<literal>NUMERIC(30,2)</>, it is no longer acceptable to return a
|
|
<literal>NUMERIC</> of some other precision in that column. Previous
|
|
versions neglected to check the type modifier and would thus allow
|
|
result rows that didn't actually conform to the declared restrictions.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
PL/pgSQL now treats selection into composite fields more consistently
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Formerly, a statement like
|
|
<literal>SELECT ... INTO <replaceable>rec</>.<replaceable>fld</> FROM ...</literal>
|
|
was treated as a scalar assignment even if the record field
|
|
<replaceable>fld</> was of composite type. Now it is treated as a
|
|
record assignment, the same as when the <literal>INTO</> target is a
|
|
regular variable of composite type. So the values to be assigned to the
|
|
field's subfields should be written as separate columns of the
|
|
<command>SELECT</> list, not as a <literal>ROW(...)</> construct as in
|
|
previous versions.
|
|
</para>
|
|
|
|
<para>
|
|
If you need to do this in a way that will work in both 9.0 and previous
|
|
releases, you can write something like
|
|
<literal><replaceable>rec</>.<replaceable>fld</> := ROW(...) FROM ...</literal>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Remove PL/pgSQL's <literal>RENAME</> declaration (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Instead of <literal>RENAME</>, use <link
|
|
linkend="plpgsql-declaration-alias"><literal>ALIAS</></link>,
|
|
which can now create an alias for any variable, not only dollar sign
|
|
parameter names (such as <literal>$1</>) as before.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Other Incompatibilities</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Deprecate use of <literal>=></> as an operator name (Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
Future versions of <productname>PostgreSQL</> will probably reject
|
|
this operator name entirely, in order to support the SQL-standard
|
|
notation for named function parameters. For the moment, it is
|
|
still allowed, but a warning is emitted when such an operator is
|
|
defined.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Remove support for platforms that don't have a working 64-bit
|
|
integer data type (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
It is believed all still-supported platforms have working 64-bit
|
|
integer data types.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
<para>
|
|
Version 9.0 has an unprecedented number of new major features,
|
|
and over 200 enhancements, improvements, new commands,
|
|
new functions, and other changes.
|
|
</para>
|
|
|
|
<sect3>
|
|
<title>Server</title>
|
|
|
|
<sect4>
|
|
<title>Continuous Archiving and Streaming Replication</title>
|
|
|
|
<para>
|
|
PostgreSQL's existing standby-server capability has been expanded both to
|
|
support read-only queries on standby servers and to greatly reduce
|
|
the lag between master and standby servers. For many users, this
|
|
will be a useful and low-administration form of replication, either
|
|
for high availability or for horizontal scalability.
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
Allow a standby server to accept read-only queries
|
|
(Simon Riggs, Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
This feature is called Hot Standby. There are new
|
|
<filename>postgresql.conf</> and <filename>recovery.conf</>
|
|
settings to control this feature, as well as extensive
|
|
<link linkend="hot-standby">documentation</link>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow write-ahead log (<acronym>WAL</>) data to be streamed to a
|
|
standby server (Fujii Masao, Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
This feature is called Streaming Replication.
|
|
Previously <acronym>WAL</> data could be sent to standby servers only
|
|
in units of entire <acronym>WAL</> files (normally 16 megabytes each).
|
|
Streaming Replication eliminates this inefficiency and allows updates
|
|
on the master to be propagated to standby servers with very little
|
|
delay. There are new <filename>postgresql.conf</> and
|
|
<filename>recovery.conf</> settings to control this feature, as well as
|
|
extensive <link linkend="streaming-replication">documentation</link>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link
|
|
linkend="functions-recovery-info-table"><function>pg_last_xlog_receive_location()</></link>
|
|
and <function>pg_last_xlog_replay_location()</>, which
|
|
can be used to monitor standby server <acronym>WAL</>
|
|
activity (Simon Riggs, Fujii Masao, Heikki Linnakangas)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Performance</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow per-tablespace values to be set for sequential and random page
|
|
cost estimates (<varname>seq_page_cost</>/<varname>random_page_cost</>)
|
|
via <link linkend="SQL-ALTERTABLESPACE"><command>ALTER TABLESPACE
|
|
... SET/RESET</></link> (Robert Haas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve performance and reliability of EvalPlanQual rechecks in join
|
|
queries (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
<command>UPDATE</>, <command>DELETE</>, and <command>SELECT FOR
|
|
UPDATE/SHARE</> queries that involve joins will now behave much better
|
|
when encountering freshly-updated rows.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve performance of <link
|
|
linkend="SQL-TRUNCATE"><command>TRUNCATE</></link> when
|
|
the table was created or truncated earlier in the same transaction
|
|
(Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve performance of finding inheritance child tables (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Optimizer</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Remove unnecessary <link linkend="queries-join">outer
|
|
joins</link> (Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
Outer joins where the inner side is unique and not referenced above
|
|
the join are unnecessary and are therefore now removed. This will
|
|
accelerate many automatically generated queries, such as those created
|
|
by object-relational mappers (ORMs).
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <literal>IS NOT NULL</> restrictions to use indexes (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This is particularly useful for finding
|
|
<function>MAX()</>/<function>MIN()</> values in indexes that
|
|
contain many null values.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve the optimizer's choices about when to use materialize nodes,
|
|
and when to use sorting versus hashing for <literal>DISTINCT</>
|
|
(Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve the optimizer's equivalence detection for expressions involving
|
|
<type>boolean</> <literal><></> operators (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title><link linkend="geqo">GEQO</link></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Use the same random seed every time GEQO plans a query (Andres
|
|
Freund)
|
|
</para>
|
|
|
|
<para>
|
|
While the Genetic Query Optimizer (GEQO) still selects
|
|
random plans, it now always selects the same random plans for identical
|
|
queries, thus giving more consistent performance. You can modify <link
|
|
linkend="guc-geqo-seed"><varname>geqo_seed</></link> to experiment with
|
|
alternative plans.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve GEQO plan selection (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This avoids the rare error <quote>failed to make a valid plan</>,
|
|
and should also improve planning speed.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Optimizer Statistics</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve <link linkend="SQL-ANALYZE"><command>ANALYZE</></link>
|
|
to support inheritance-tree statistics (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This is particularly useful for partitioned tables. However,
|
|
autovacuum does not yet automatically re-analyze parent tables
|
|
when child tables change.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve <link linkend="routine-vacuuming">autovacuum</link>'s
|
|
detection of when re-analyze is necessary (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve optimizer's estimation for greater/less-than comparisons
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
When looking up statistics for greater/less-than comparisons,
|
|
if the comparison value is in the first or last histogram bucket,
|
|
use an index (if available) to fetch the current actual column
|
|
minimum or maximum. This greatly improves the accuracy of estimates
|
|
for comparison values near the ends of the data range, particularly
|
|
if the range is constantly changing due to addition of new data.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow setting of number-of-distinct-values statistics using <link
|
|
linkend="SQL-ALTERTABLE"><command>ALTER TABLE</></link>
|
|
(Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
This allows users to override the estimated number or percentage of
|
|
distinct values for a column. This statistic is normally computed by
|
|
<command>ANALYZE</>, but the estimate can be poor, especially on tables
|
|
with very large numbers of rows.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Authentication</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add support for <link
|
|
linkend="auth-radius"><acronym>RADIUS</></link> (Remote
|
|
Authentication Dial In User Service) authentication
|
|
(Magnus Hagander)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <link linkend="auth-ldap"><acronym>LDAP</></link>
|
|
(Lightweight Directory Access Protocol) authentication
|
|
to operate in <quote>search/bind</> mode
|
|
(Robert Fleming, Magnus Hagander)
|
|
</para>
|
|
|
|
<para>
|
|
This allows the user to be looked up first, then the system uses
|
|
the <acronym>DN</> (Distinguished Name) returned for that user.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link
|
|
linkend="auth-pg-hba-conf"><literal>samehost</></link>
|
|
and <literal>samenet</> designations to
|
|
<filename>pg_hba.conf</> (Stef Walter)
|
|
</para>
|
|
|
|
<para>
|
|
These match the server's <acronym>IP</> address and subnet address
|
|
respectively.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Pass trusted SSL root certificate names to the client so the client
|
|
can return an appropriate client certificate (Craig Ringer)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Monitoring</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add the ability for clients to set an <link
|
|
linkend="libpq-connect-application-name">application
|
|
name</link>, which is displayed in
|
|
<structname>pg_stat_activity</> (Dave Page)
|
|
</para>
|
|
|
|
<para>
|
|
This allows administrators to characterize database traffic
|
|
and troubleshoot problems by source application.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a SQLSTATE option (<literal>%e</>) to <link
|
|
linkend="guc-log-line-prefix"><varname>log_line_prefix</></link>
|
|
(Guillaume Smet)
|
|
</para>
|
|
|
|
<para>
|
|
This allows users to compile statistics on errors and messages
|
|
by error code number.
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Write to the Windows event log in <acronym>UTF16</> encoding
|
|
(Itagaki Takahiro)
|
|
</para>
|
|
|
|
<para>
|
|
Now there is true multilingual support for PostgreSQL log messages
|
|
on Windows.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Statistics Counters</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link
|
|
linkend="monitoring-stats-funcs-table"><function>pg_stat_reset_shared('bgwriter')</></link>
|
|
to reset the cluster-wide shared statistics for the
|
|
background writer (Greg Smith)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link
|
|
linkend="monitoring-stats-funcs-table"><function>pg_stat_reset_single_table_counters()</></link>
|
|
and <function>pg_stat_reset_single_function_counters()</>
|
|
to allow resetting the statistics counters for individual
|
|
tables and functions (Magnus Hagander)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Server Settings</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow setting of configuration parameters based on <link
|
|
linkend="sql-alterrole">database/role combinations</link>
|
|
(Alvaro Herrera)
|
|
</para>
|
|
|
|
<para>
|
|
Previously only per-database and per-role settings were possible,
|
|
not combinations. All role and database settings are now stored
|
|
in the new <structname>pg_db_role_setting</> system catalog. A new
|
|
<application>psql</> command <literal>\drds</> shows these settings.
|
|
The legacy system views <structname>pg_roles</>,
|
|
<structname>pg_shadow</>, and <structname>pg_user</>
|
|
do not show combination settings, and therefore no longer
|
|
completely represent the configuration for a user or database.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add server parameter <link
|
|
linkend="guc-bonjour"><varname>bonjour</></link>, which
|
|
controls whether a Bonjour-enabled server advertises
|
|
itself via <productname>Bonjour</> (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
The default is off, meaning it does not advertise. This allows
|
|
packagers to distribute Bonjour-enabled builds without worrying
|
|
that individual users might not want the feature.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add server parameter <link
|
|
linkend="guc-enable-material"><varname>enable_material</></link>, which
|
|
controls the use of materialize nodes in the optimizer
|
|
(Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
The default is on. When off, the optimizer will not add
|
|
materialize nodes purely for performance reasons, though they
|
|
will still be used when necessary for correctness.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Change server parameter <link
|
|
linkend="guc-log-temp-files"><varname>log_temp_files</></link> to
|
|
use default file size units of kilobytes (Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
Previously this setting was interpreted in bytes if no units were
|
|
specified.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Log changes of parameter values when <filename>postgresql.conf</> is
|
|
reloaded (Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
This lets administrators and security staff audit changes of database
|
|
settings, and is also very convenient for checking the effects of
|
|
<filename>postgresql.conf</> edits.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Properly enforce superuser permissions for custom server parameters
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Non-superusers can no longer issue <command>ALTER
|
|
ROLE</>/<command>DATABASE SET</> for parameters that are not currently
|
|
known to the server. This allows the server to correctly check that
|
|
superuser-only parameters are only set by superusers. Previously,
|
|
the <literal>SET</> would be allowed and then ignored at session start,
|
|
making superuser-only custom parameters much less useful than they
|
|
should be.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Queries</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Perform <link linkend="SQL-FOR-UPDATE-SHARE"><command>SELECT
|
|
FOR UPDATE</>/<literal>SHARE</></link> processing after
|
|
applying <literal>LIMIT</>, so the number of rows returned
|
|
is always predictable (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, changes made by concurrent transactions could cause a
|
|
<command>SELECT FOR UPDATE</> to unexpectedly return fewer rows than
|
|
specified by its <literal>LIMIT</>. <literal>FOR UPDATE</> in combination
|
|
with <literal>ORDER BY</> can still produce surprising results, but that
|
|
can be corrected by placing <literal>FOR UPDATE</> in a subquery.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow mixing of traditional and SQL-standard <link
|
|
linkend="SQL-LIMIT"><literal>LIMIT</>/<literal>OFFSET</></link>
|
|
syntax (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Extend the supported frame options in <link
|
|
linkend="SQL-WINDOW">window functions</link> (Hitoshi
|
|
Harada)
|
|
</para>
|
|
|
|
<para>
|
|
Frames can now start with <literal>CURRENT ROW</>, and the <literal>ROWS
|
|
<replaceable>n</> PRECEDING</>/<literal>FOLLOWING</> options are now
|
|
supported.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <command>SELECT INTO</> and <command>CREATE TABLE AS</> return
|
|
row counts to the client in their command tags
|
|
(Boszormenyi Zoltan)
|
|
</para>
|
|
|
|
<para>
|
|
This can save an entire round-trip to the client, allowing result counts
|
|
and pagination to be calculated without an additional
|
|
<command>COUNT</command> query.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<sect4>
|
|
<title>Unicode Strings</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support Unicode surrogate pairs (dual 16-bit representation) in
|
|
<link
|
|
linkend="sql-syntax-strings-uescape"><literal>U&</></link>
|
|
strings and identifiers (Peter Eisentraut)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support Unicode escapes in <link
|
|
linkend="sql-syntax-strings-escape"><literal>E'...'</></link>
|
|
strings (Marko Kreen)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Object Manipulation</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Speed up <link linkend="SQL-CREATEDATABASE"><command>CREATE
|
|
DATABASE</></link> by deferring flushes to disk (Andres
|
|
Freund, Greg Stark)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <link linkend="SQL-COMMENT">comments</link> on
|
|
columns of tables, views, and composite types only, not other
|
|
relation types such as indexes and <acronym>TOAST</> tables (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow the creation of <link
|
|
linkend="SQL-CREATETYPE-enum">enumerated types</link> containing
|
|
no values (Bruce Momjian)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Let values of columns having storage type <literal>MAIN</> remain on
|
|
the main heap page unless the row cannot fit on a page (Kevin Grittner)
|
|
</para>
|
|
|
|
<para>
|
|
Previously <literal>MAIN</> values were forced out to <acronym>TOAST</>
|
|
tables until the row size was less than one-quarter of the page size.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<sect4>
|
|
<title><command>ALTER TABLE</></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Implement <literal>IF EXISTS</> for <literal>ALTER TABLE DROP COLUMN</>
|
|
and <literal>ALTER TABLE DROP CONSTRAINT </> (Andres Freund)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <command>ALTER TABLE</> commands that rewrite tables to skip
|
|
<acronym>WAL</> logging (Itagaki Takahiro)
|
|
</para>
|
|
|
|
<para>
|
|
Such operations either produce a new copy of the table or are rolled
|
|
back, so <acronym>WAL</> archiving can be skipped, unless running in
|
|
continuous archiving mode. This reduces I/O overhead and improves
|
|
performance.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix failure of <literal>ALTER TABLE <replaceable>table</> ADD COLUMN
|
|
<replaceable>col</> serial</literal> when done by non-owner of table
|
|
(Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title><link linkend="SQL-CREATETABLE"><command>CREATE TABLE</></link></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add support for copying <literal>COMMENTS</> and <literal>STORAGE</>
|
|
settings in <command>CREATE TABLE ... LIKE</> commands
|
|
(Itagaki Takahiro)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a shortcut for copying all properties in <command>CREATE
|
|
TABLE ... LIKE</> commands (Itagaki Takahiro)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add the SQL-standard
|
|
<literal>CREATE TABLE ... OF <replaceable>type</></literal> command
|
|
(Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
This allows creation of a table that matches an existing composite
|
|
type. Additional constraints and defaults can be specified in the
|
|
command.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Constraints</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link linkend="SQL-CREATETABLE-compatibility">deferrable
|
|
unique constraints</link> (Dean Rasheed)
|
|
</para>
|
|
|
|
<para>
|
|
This allows mass updates, such as
|
|
<literal>UPDATE tab SET col = col + 1</>,
|
|
to work reliably
|
|
on columns that have unique indexes or are marked as primary keys.
|
|
If the constraint is specified as <literal>DEFERRABLE</> it will be
|
|
checked at the end of the statement, rather than after each row is
|
|
updated. The constraint check can also be deferred until the end of the
|
|
current transaction, allowing such updates to be spread over multiple
|
|
SQL commands.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add
|
|
<link linkend="ddl-constraints-exclusion">exclusion constraints</link>
|
|
(Jeff Davis)
|
|
</para>
|
|
|
|
<para>
|
|
Exclusion constraints generalize uniqueness constraints by allowing
|
|
arbitrary comparison operators, not just equality. They are created
|
|
with the <link linkend="SQL-CREATETABLE-EXCLUDE"><command>CREATE
|
|
TABLE CONSTRAINT ... EXCLUDE</></link> clause.
|
|
The most common use of exclusion constraints is to specify that column
|
|
entries must not overlap, rather than simply not be equal. This is
|
|
useful for time periods and other ranges, as well as arrays.
|
|
This feature enhances checking of data integrity for many
|
|
calendaring, time-management, and scientific applications.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve uniqueness-constraint violation error messages to
|
|
report the values causing the failure (Itagaki Takahiro)
|
|
</para>
|
|
|
|
<para>
|
|
For example, a uniqueness constraint violation might now report
|
|
<literal>Key (x)=(2) already exists</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Object Permissions</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add the ability to make mass permission changes across a whole
|
|
schema using the new <link
|
|
linkend="SQL-GRANT"><command>GRANT</>/<command>REVOKE
|
|
IN SCHEMA</></link> clause (Petr Jelinek)
|
|
</para>
|
|
|
|
<para>
|
|
This simplifies management of object permissions
|
|
and makes it easier to utilize database roles for application
|
|
data security.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link linkend="SQL-ALTERDEFAULTPRIVILEGES"><command>ALTER
|
|
DEFAULT PRIVILEGES</></link> command to control privileges
|
|
of objects created later (Petr Jelinek)
|
|
</para>
|
|
|
|
<para>
|
|
This greatly simplifies the assignment of object privileges in a
|
|
complex database application. Default privileges can be set for
|
|
tables, views, sequences, and functions. Defaults may be assigned on a
|
|
per-schema basis, or database-wide.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add the ability to control large object (BLOB) permissions with
|
|
<command>GRANT</>/<command>REVOKE</> (KaiGai Kohei)
|
|
</para>
|
|
|
|
<para>
|
|
Formerly, any database user could read or modify any large object.
|
|
Read and write permissions can now be granted and revoked per
|
|
large object, and the ownership of large objects is tracked.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Utility Operations</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <link linkend="SQL-LISTEN"><command>LISTEN</></link>/<link
|
|
linkend="SQL-NOTIFY"><command>NOTIFY</></link> store pending events
|
|
in a memory queue, rather than in a system table (Joachim
|
|
Wieland)
|
|
</para>
|
|
|
|
<para>
|
|
This substantially improves performance, while retaining the existing
|
|
features of transactional support and guaranteed delivery.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <link linkend="SQL-NOTIFY"><command>NOTIFY</></link>
|
|
to pass an optional <quote>payload</> string to listeners
|
|
(Joachim Wieland)
|
|
</para>
|
|
|
|
<para>
|
|
This greatly improves the usefulness of
|
|
<command>LISTEN</>/<command>NOTIFY</> as a
|
|
general-purpose event queue system.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <link linkend="SQL-CLUSTER"><command>CLUSTER</></link>
|
|
on all per-database system catalogs (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Shared catalogs still cannot be clustered.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<sect4>
|
|
<title><link linkend="SQL-COPY"><command>COPY</></link></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Accept <literal>COPY ... CSV FORCE QUOTE *</>
|
|
(Itagaki Takahiro)
|
|
</para>
|
|
|
|
<para>
|
|
Now <literal>*</> can be used as shorthand for <quote>all columns</>
|
|
in the <literal>FORCE QUOTE</> clause.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add new <command>COPY</> syntax that allows options to be
|
|
specified inside parentheses (Robert Haas, Emmanuel Cecchet)
|
|
</para>
|
|
|
|
<para>
|
|
This allows greater flexibility for future <command>COPY</> options.
|
|
The old syntax is still supported, but only for pre-existing options.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title><link linkend="SQL-EXPLAIN"><command>EXPLAIN</></link></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <command>EXPLAIN</> to output in <acronym>XML</>,
|
|
<acronym>JSON</>, or <acronym>YAML</> format (Robert Haas, Greg
|
|
Sabino Mullane)
|
|
</para>
|
|
|
|
<para>
|
|
The new output formats are easily machine-readable, supporting the
|
|
development of new tools for analysis of <command>EXPLAIN</> output.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add new <literal>BUFFERS</> option to report query
|
|
buffer usage during <command>EXPLAIN ANALYZE</> (Itagaki Takahiro)
|
|
</para>
|
|
|
|
<para>
|
|
This allows better query profiling for individual queries.
|
|
Buffer usage is no longer reported in the output for <link
|
|
linkend="runtime-config-statistics-monitor">log_statement_stats</link>
|
|
and related settings.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add hash usage information to <command>EXPLAIN</> output (Robert
|
|
Haas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add new <command>EXPLAIN</> syntax that allows options to be
|
|
specified inside parentheses (Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
This allows greater flexibility for future <command>EXPLAIN</> options.
|
|
The old syntax is still supported, but only for pre-existing options.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title><link linkend="SQL-VACUUM"><command>VACUUM</></link></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Change <command>VACUUM FULL</> to rewrite the entire table and
|
|
rebuild its indexes, rather than moving individual rows around to
|
|
compact space (Itagaki Takahiro, Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
The previous method was usually slower and caused index bloat.
|
|
Note that the new method will use more disk space transiently
|
|
during <command>VACUUM FULL</>; potentially as much as twice
|
|
the space normally occupied by the table and its indexes.
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add new <command>VACUUM</> syntax that allows options to be
|
|
specified inside parentheses (Itagaki Takahiro)
|
|
</para>
|
|
|
|
<para>
|
|
This allows greater flexibility for future <command>VACUUM</> options.
|
|
The old syntax is still supported, but only for pre-existing options.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Indexes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow an index to be named automatically by omitting the index name in
|
|
<link linkend="SQL-CREATEINDEX"><command>CREATE INDEX</></link>
|
|
(Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
By default, multicolumn indexes are now named after all their columns;
|
|
and index expression columns are now named based on their expressions
|
|
(Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Reindexing shared system catalogs is now fully transactional
|
|
and crash-safe (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Formerly, reindexing a shared index was only allowed in standalone
|
|
mode, and a crash during the operation could leave the index in
|
|
worse condition than it was before.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <literal>point_ops</> operator class for <acronym>GiST</>
|
|
(Teodor Sigaev)
|
|
</para>
|
|
|
|
<para>
|
|
This feature permits <acronym>GiST</> indexing of <type>point</>
|
|
columns. The index can be used for several types of queries
|
|
such as <replaceable>point</> <literal><@</> <replaceable>polygon</>
|
|
(point is in polygon). This should make many
|
|
<productname>PostGIS</> queries faster.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Use red-black binary trees for <acronym>GIN</> index creation
|
|
(Teodor Sigaev)
|
|
</para>
|
|
|
|
<para>
|
|
Red-black trees are self-balancing. This avoids slowdowns in
|
|
cases where the input is in nonrandom order.
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Data Types</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <link linkend="datatype-binary"><type>bytea</></link> values
|
|
to be written in hex notation (Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
The server parameter <link
|
|
linkend="guc-bytea-output"><varname>bytea_output</></link> controls
|
|
whether hex or traditional format is used for <type>bytea</>
|
|
output. Libpq's <function>PQescapeByteaConn()</> function automatically
|
|
uses the hex format when connected to <productname>PostgreSQL</> 9.0
|
|
or newer servers. However, pre-9.0 libpq versions will not
|
|
correctly process hex format from newer servers.
|
|
</para>
|
|
|
|
<para>
|
|
The new hex format will be directly compatible with more applications
|
|
that use binary data, allowing them to store and retrieve it without
|
|
extra conversion. It is also significantly faster to read and write
|
|
than the traditional format.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow server parameter <link
|
|
linkend="guc-extra-float-digits">extra_float_digits</link>
|
|
to be increased to <literal>3</> (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
The previous maximum <varname>extra_float_digits</> setting was
|
|
<literal>2</>. There are cases where 3 digits are needed to dump and
|
|
restore <type>float4</> values exactly. <application>pg_dump</> will
|
|
now use the setting of 3 when dumping from a server that allows it.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Tighten input checking for <type>int2vector</> values (Caleb
|
|
Welton)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<sect4>
|
|
<title><link linkend="textsearch">Full Text Search</link></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add prefix support in <literal>synonym</> dictionaries
|
|
(Teodor Sigaev)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <firstterm>filtering</> dictionaries (Teodor Sigaev)
|
|
</para>
|
|
|
|
<para>
|
|
Filtering dictionaries allow tokens to be modified then passed to
|
|
subsequent dictionaries.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow underscores in email-address tokens (Teodor Sigaev)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Use more standards-compliant rules for parsing <acronym>URL</> tokens
|
|
(Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Functions</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow function calls to supply parameter names and match them to named
|
|
parameters in the function definition (Pavel Stehule)
|
|
</para>
|
|
|
|
<para>
|
|
For example, if a function is defined to take parameters <literal>a</>
|
|
and <literal>b</>, it can be called with <literal>func(a := 7, b
|
|
:= 12)</> or <literal>func(b := 12, a := 7)</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support locale-specific <link
|
|
linkend="functions-posix-regexp">regular expression</link>
|
|
processing with <acronym>UTF-8</> server encoding (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Locale-specific regular expression functionality includes
|
|
case-insensitive matching and locale-specific character classes.
|
|
Previously, these features worked correctly for non-<acronym>ASCII</>
|
|
characters only if the database used a single-byte server encoding (such
|
|
as LATIN1). They will still misbehave in multi-byte encodings other
|
|
than <acronym>UTF-8</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add support for scientific notation in <link
|
|
linkend="functions-formatting"><function>to_char()</></link>
|
|
(<link linkend="functions-formatting-numeric-table"><literal>EEEE</>
|
|
specification</link>)
|
|
(Pavel Stehule, Brendan Jurd)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <function>to_char()</> honor <link
|
|
linkend="functions-formatting-datetimemod-table"><literal>FM</></link>
|
|
(fill mode) in <literal>Y</>, <literal>YY</>, and
|
|
<literal>YYY</> specifications (Bruce Momjian, Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
It was already honored by <literal>YYYY</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <function>to_char()</> to output localized numeric and monetary
|
|
strings in the correct encoding on <productname>Windows</>
|
|
(Hiroshi Inoue, Itagaki Takahiro, Bruce Momjian)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Correct calculations of <link
|
|
linkend="functions-geometry-op-table"><quote>overlaps</quote></link>
|
|
and <quote>contains</quote> operations for polygons (Teodor Sigaev)
|
|
</para>
|
|
|
|
<para>
|
|
The polygon <literal>&&</> (overlaps) operator formerly just
|
|
checked to see if the two polygons' bounding boxes overlapped. It now
|
|
does a more correct check. The polygon <literal>@></> and
|
|
<literal><@</> (contains/contained by) operators formerly checked
|
|
to see if one polygon's vertexes were all contained in the other;
|
|
this can wrongly report <quote>true</> for some non-convex polygons.
|
|
Now they check that all line segments of one polygon are contained in
|
|
the other.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<sect4>
|
|
<title>Aggregates</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow aggregate functions to use <link
|
|
linkend="syntax-aggregates"><literal>ORDER BY</></link> (Andrew Gierth)
|
|
</para>
|
|
|
|
<para>
|
|
For example, this is now supported: <literal>array_agg(a ORDER BY
|
|
b)</>. This is useful with aggregates for which the order of input
|
|
values is significant, and eliminates the need to use a nonstandard
|
|
subquery to determine the ordering.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Multi-argument aggregate functions can now use <literal>DISTINCT</>
|
|
(Andrew Gierth)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add the <link
|
|
linkend="functions-aggregate-table"><function>string_agg()</></link>
|
|
aggregate function to combine values into a single
|
|
string (Pavel Stehule)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Aggregate functions that are called with <literal>DISTINCT</> are
|
|
now passed NULL values if the aggregate transition function is
|
|
not marked as <literal>STRICT</> (Andrew Gierth)
|
|
</para>
|
|
|
|
<para>
|
|
For example, <literal>agg(DISTINCT x)</> might pass a NULL <literal>x</>
|
|
value to <function>agg()</>. This is more consistent with the behavior
|
|
in non-<literal>DISTINCT</> cases.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Bit Strings</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link
|
|
linkend="functions-binarystring-other"><function>get_bit()</></link>
|
|
and <function>set_bit()</> functions for <type>bit</>
|
|
strings, mirroring those for <type>bytea</> (Leonardo
|
|
F)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Implement <link
|
|
linkend="functions-string-sql"><function>OVERLAY()</></link>
|
|
(replace) for <type>bit</> strings and <type>bytea</>
|
|
(Leonardo F)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Object Information Functions</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link
|
|
linkend="functions-admin-dbsize"><function>pg_table_size()</></link>
|
|
and <function>pg_indexes_size()</> to provide a more
|
|
user-friendly interface to the <function>pg_relation_size()</>
|
|
function (Bernd Helmle)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link
|
|
linkend="functions-info-access-table"><function>has_sequence_privilege()</></link>
|
|
for sequence permission checking (Abhijit Menon-Sen)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update the <link linkend="information-schema">information_schema</link>
|
|
views to conform to SQL:2008
|
|
(Peter Eisentraut)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make the <literal>information_schema</> views correctly display maximum
|
|
octet lengths for <type>char</> and <type>varchar</> columns (Peter
|
|
Eisentraut)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Speed up <literal>information_schema</> privilege views
|
|
(Joachim Wieland)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Function and Trigger Creation</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support execution of anonymous code blocks using the <link
|
|
linkend="SQL-DO"><command>DO</></link> statement
|
|
(Petr Jelinek, Joshua Tolley, Hannu Valtonen)
|
|
</para>
|
|
|
|
<para>
|
|
This allows execution of server-side code without the need to create
|
|
and delete a temporary function definition. Code can be executed in
|
|
any language for which the user has permissions to define a function.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Implement SQL-standard-compliant <link
|
|
linkend="SQL-CREATETRIGGER">per-column triggers</link>
|
|
(Itagaki Takahiro)
|
|
</para>
|
|
|
|
<para>
|
|
Such triggers are fired only when the specified column(s) are affected
|
|
by the query, e.g. appear in an <command>UPDATE</>'s <literal>SET</>
|
|
list.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add the <literal>WHEN</> clause to <link
|
|
linkend="SQL-CREATETRIGGER"><command>CREATE TRIGGER</></link>
|
|
to allow control over whether a trigger is fired (Itagaki
|
|
Takahiro)
|
|
</para>
|
|
|
|
<para>
|
|
While the same type of check can always be performed inside the
|
|
trigger, doing it in an external <literal>WHEN</> clause can have
|
|
performance benefits.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Server-Side Languages</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add the <literal>OR REPLACE</> clause to <link
|
|
linkend="SQL-CREATELANGUAGE"><command>CREATE LANGUAGE</></link>
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This is helpful to optionally install a language if it does not
|
|
already exist, and is particularly helpful now that PL/pgSQL is
|
|
installed by default.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<sect4>
|
|
<title><link linkend="plpgsql">PL/pgSQL</link> Server-Side
|
|
Language</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Install PL/pgSQL by default (Bruce Momjian)
|
|
</para>
|
|
|
|
<para>
|
|
The language can still be removed from a particular database if the
|
|
administrator has security or performance concerns about making it
|
|
available.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve handling of cases where PL/pgSQL variable names conflict with
|
|
identifiers used in queries within a function
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
The default behavior is now to throw an error when there is a conflict,
|
|
so as to avoid surprising behaviors. This can be modified, via the
|
|
configuration parameter <link
|
|
linkend="plpgsql-var-subst"><varname>plpgsql.variable_conflict</></link>
|
|
or the per-function option <literal>#variable_conflict</>, to allow
|
|
either the variable or the query-supplied column to be used. In any
|
|
case PL/pgSQL will no longer attempt to substitute variables in places
|
|
where they would not be syntactically valid.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make PL/pgSQL use the main lexer, rather than its own version
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This ensures accurate tracking of the main system's behavior for details
|
|
such as string escaping. Some user-visible details, such as the set
|
|
of keywords considered reserved in PL/pgSQL, have changed in
|
|
consequence.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid throwing an unnecessary error for an invalid record reference
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
An error is now thrown only if the reference is actually fetched,
|
|
rather than whenever the enclosing expression is reached. For
|
|
example, many people have tried to do this in triggers:
|
|
<programlisting>
|
|
if TG_OP = 'INSERT' and NEW.col1 = ... then
|
|
</programlisting>
|
|
This will now actually work as expected.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve PL/pgSQL's ability to handle row types with dropped columns
|
|
(Pavel Stehule)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow input parameters to be assigned values within
|
|
PL/pgSQL functions (Steve Prentice)
|
|
</para>
|
|
|
|
<para>
|
|
Formerly, input parameters were treated as being declared
|
|
<literal>CONST</>, so the function's code could not change their
|
|
values. This restriction has been removed to simplify
|
|
porting of functions from other DBMSes that do not impose the
|
|
equivalent restriction. An input parameter now acts like a local
|
|
variable initialized to the passed-in value.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve error location reporting in PL/pgSQL (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <replaceable>count</> and <literal>ALL</> options to <command>MOVE
|
|
FORWARD</>/<literal>BACKWARD</> in PL/pgSQL (Pavel Stehule)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow PL/pgSQL's <literal>WHERE CURRENT OF</> to use a cursor
|
|
variable (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow PL/pgSQL's <command>OPEN <replaceable>cursor</> FOR EXECUTE</> to
|
|
use parameters (Pavel Stehule, Itagaki Takahiro)
|
|
</para>
|
|
|
|
<para>
|
|
This is accomplished with a new <literal>USING</> clause.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title><link linkend="plperl">PL/Perl</link> Server-Side Language</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add new PL/Perl functions: <link
|
|
linkend="plperl-utility-functions"><function>quote_literal()</></link>,
|
|
<function>quote_nullable()</>, <function>quote_ident()</>,
|
|
<function>encode_bytea()</>, <function>decode_bytea()</>,
|
|
<function>looks_like_number()</>,
|
|
<function>encode_array_literal()</>,
|
|
<function>encode_array_constructor()</> (Tim Bunce)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add server parameter <link
|
|
linkend="guc-plperl-on-init"><varname>plperl.on_init</></link> to
|
|
specify a PL/Perl initialization function (Tim
|
|
Bunce)
|
|
</para>
|
|
|
|
<para>
|
|
<link
|
|
linkend="guc-plperl-on-plperl-init"><varname>plperl.on_plperl_init</></link>
|
|
and <link
|
|
linkend="guc-plperl-on-plperl-init"><varname>plperl.on_plperlu_init</></link>
|
|
are also available for initialization that is specific to the trusted
|
|
or untrusted language respectively.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support <command>END</> blocks in PL/Perl (Tim Bunce)
|
|
</para>
|
|
|
|
<para>
|
|
<command>END</> blocks do not currently allow database access.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <command>use strict</> in PL/Perl (Tim Bunce)
|
|
</para>
|
|
|
|
<para>
|
|
Perl <literal>strict</> checks can also be globally enabled with the
|
|
new server parameter <link
|
|
linkend="guc-plperl-use-strict"><varname>plperl.use_strict</></link>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <command>require</> in PL/Perl (Tim Bunce)
|
|
</para>
|
|
|
|
<para>
|
|
This basically tests to see if the module is loaded, and if not,
|
|
generates an error. It will not allow loading of modules that
|
|
the administrator has not preloaded via the initialization parameters.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <command>use feature</> in PL/Perl if Perl version 5.10 or
|
|
later is used (Tim Bunce)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Verify that PL/Perl return values are valid in the server encoding
|
|
(Andrew Dunstan)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title><link linkend="plpython">PL/Python</link> Server-Side Language</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add Unicode support in PL/Python (Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
Strings are automatically converted from/to the server encoding as
|
|
necessary.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve <type>bytea</> support in PL/Python (Caleb Welton)
|
|
</para>
|
|
|
|
<para>
|
|
<type>Bytea</> values passed into PL/Python are now represented as
|
|
binary, rather than the PostgreSQL <type>bytea</> text format.
|
|
<type>Bytea</> values containing null bytes are now also output
|
|
properly from PL/Python. Passing of boolean, integer, and float
|
|
values was also improved.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support <link linkend="plpython-arrays">arrays</link> as parameters and
|
|
return values in PL/Python (Peter Eisentraut)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve mapping of SQL domains to Python types (Peter Eisentraut)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <application>Python</> 3 support to PL/Python (Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
The new server-side language is called <link
|
|
linkend="plpython-python23"><literal>plpython3u</></link>. This
|
|
cannot be used in the same session with the
|
|
<application>Python</> 2 server-side language.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve error location and exception reporting in PL/Python (Peter Eisentraut)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Client Applications</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add an <option>--analyze-only</> option to <link
|
|
linkend="APP-VACUUMDB"><command>vacuumdb</></link>, to analyze without
|
|
vacuuming (Bruce Momjian)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<sect4>
|
|
<title><link linkend="APP-PSQL"><application>psql</></link></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add support for quoting/escaping the values of <application>psql</>
|
|
<link linkend="APP-PSQL-variables">variables</link> as SQL strings or
|
|
identifiers (Pavel Stehule, Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
For example, <literal>:'var'</> will produce the value of
|
|
<literal>var</> quoted and properly escaped as a literal string, while
|
|
<literal>:"var"</> will produce its value quoted and escaped as an
|
|
identifier.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Ignore a leading UTF-8-encoded Unicode byte-order marker in
|
|
script files read by <application>psql</> (Itagaki Takahiro)
|
|
</para>
|
|
|
|
<para>
|
|
This is enabled when the client encoding is <acronym>UTF-8</>.
|
|
It improves compatibility with certain editors, mostly on Windows,
|
|
that insist on inserting such markers.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <command>psql --file -</> to properly honor <link
|
|
linkend="R1-APP-PSQL-3"><option>--single-transaction</></link>
|
|
(Bruce Momjian)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid overwriting of <application>psql</>'s command-line history when
|
|
two <application>psql</> sessions are run concurrently (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve <application>psql</>'s tab completion support (Itagaki
|
|
Takahiro)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Show <literal>\timing</> output when it is enabled, regardless of
|
|
<quote>quiet</> mode (Peter Eisentraut)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<sect5>
|
|
<title><application>psql</> Display</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve display of wrapped columns in <application>psql</> (Roger
|
|
Leigh)
|
|
</para>
|
|
|
|
<para>
|
|
This behavior is now the default.
|
|
The previous formatting is available by using <command>\pset linestyle
|
|
old-ascii</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <application>psql</> to use fancy Unicode line-drawing
|
|
characters via <command>\pset linestyle unicode</> (Roger Leigh)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect5>
|
|
|
|
<sect5>
|
|
<title><application>psql</> <link
|
|
linkend="APP-PSQL-meta-commands"><command>\d</></link>
|
|
Commands</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <command>\d</> show child tables that inherit from the specified
|
|
parent (Damien Clochard)
|
|
</para>
|
|
|
|
<para>
|
|
<command>\d</> shows only the number of child tables, while
|
|
<command>\d+</> shows the names of all child tables.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Show definitions of index columns in <command>\d index_name</>
|
|
(Khee Chin)
|
|
</para>
|
|
|
|
<para>
|
|
The definition is useful for expression indexes.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Show a view's defining query only in
|
|
<command>\d+</>, not in <command>\d</> (Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
Always including the query was deemed overly verbose.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect5>
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title><link linkend="APP-PGDUMP"><application>pg_dump</></link></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <application>pg_dump</>/<application>pg_restore</>
|
|
<link linkend="pg-dump-options"><option>--clean</></link>
|
|
also remove large objects (Itagaki Takahiro)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>pg_dump</> to properly dump large objects when
|
|
<literal>standard_conforming_strings</> is enabled (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
The previous coding could fail when dumping to an archive file
|
|
and then generating script output from <application>pg_restore</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<application>pg_restore</> now emits large-object data in hex format
|
|
when generating script output (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This could cause compatibility problems if the script is then
|
|
loaded into a pre-9.0 server. To work around that, restore
|
|
directly to the server, instead.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <application>pg_dump</> to dump comments attached to columns
|
|
of composite types (Taro Minowa (Higepon))
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <application>pg_dump</> <link
|
|
linkend="pg-dump-options"><option>--verbose</></link>
|
|
output the <application>pg_dump</> and server versions
|
|
in text output mode (Jim Cox, Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
These were already provided in custom output mode.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<application>pg_restore</> now complains if any command-line arguments
|
|
remain after the switches and optional file name (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, it silently ignored any such arguments.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title><link
|
|
linkend="app-pg-ctl"><application>pg_ctl</></link></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <application>pg_ctl</> to be used safely to start the
|
|
<application>postmaster</> during a system reboot (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, <application>pg_ctl</>'s parent process could have been
|
|
mistakenly identified as a running <application>postmaster</> based on
|
|
a stale <application>postmaster</> lock file, resulting in a transient
|
|
failure to start the database.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Give <application>pg_ctl</> the ability to initialize the database
|
|
(by invoking <application>initdb</>) (Zdenek Kotala)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title><application>Development Tools</></title>
|
|
|
|
<sect4>
|
|
<title><link linkend="libpq"><application>libpq</></link></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add new <application>libpq</> functions
|
|
<link
|
|
linkend="libpq-connect"><function>PQconnectdbParams()</></link>
|
|
and <function>PQconnectStartParams()</> (Guillaume
|
|
Lelarge)
|
|
</para>
|
|
|
|
<para>
|
|
These functions are similar to <function>PQconnectdb()</> and
|
|
<function>PQconnectStart()</> except that they accept a null-terminated
|
|
array of connection options, rather than requiring all options to
|
|
be provided in a single string.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <application>libpq</> functions <link
|
|
linkend="libpq-exec-escape-string"><function>PQescapeLiteral()</></link>
|
|
and <function>PQescapeIdentifier()</> (Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
These functions return appropriately quoted and escaped SQL string
|
|
literals and identifiers. The caller is not required to pre-allocate
|
|
the string result, as is required by <function>PQescapeStringConn()</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add support for a per-user service file (<link
|
|
linkend="libpq-pgservice"><filename>.pg_service.conf</></link>),
|
|
which is checked before the site-wide service file
|
|
(Peter Eisentraut)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Properly report an error if the specified <application>libpq</> service
|
|
cannot be found (Peter Eisentraut)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link linkend="libpq-keepalives">TCP keepalive settings</link>
|
|
in libpq (Tollef Fog Heen, Fujii Masao, Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
Keepalive settings were already supported on the server end of
|
|
TCP connections.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid extra system calls to block and unblock <literal>SIGPIPE</>
|
|
in <application>libpq</>, on platforms that offer alternative methods
|
|
(Jeremy Kerr)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
When a <link linkend="libpq-pgpass"><filename>.pgpass</></link>-supplied
|
|
password fails, mention where the password came from in the error
|
|
message (Bruce Momjian)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Load all SSL certificates given in the client certificate file
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This improves support for indirectly-signed SSL certificates.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title><link linkend="ecpg"><application>ecpg</></link></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link linkend="ecpg-descriptors"><acronym>SQLDA</></link>
|
|
(SQL Descriptor Area) support to <application>ecpg</>
|
|
(Boszormenyi Zoltan)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add the <link linkend="ecpg-descriptors"><command>DESCRIBE</>
|
|
[ <literal>OUTPUT</> ]</link> statement to <application>ecpg</>
|
|
(Boszormenyi Zoltan)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add an <link linkend="ecpg-library">ECPGtransactionStatus</link>
|
|
function to return the current transaction status (Bernd Helmle)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add the <literal>string</> data type in <application>ecpg</>
|
|
Informix-compatibility mode (Boszormenyi Zoltan)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <application>ecpg</> to use <literal>new</> and <literal>old</>
|
|
variable names without restriction (Michael Meskes)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <application>ecpg</> to use variable names in
|
|
<function>free()</> (Michael Meskes)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <function>ecpg_dynamic_type()</> return zero for non-SQL3 data
|
|
types (Michael Meskes)
|
|
</para>
|
|
|
|
<para>
|
|
Previously it returned the negative of the data type OID.
|
|
This could be confused with valid type OIDs, however.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support <type>long long</> types on platforms that already have 64-bit
|
|
<type>long</> (Michael Meskes)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<sect5>
|
|
<title><application>ecpg</> Cursors</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add out-of-scope cursor support in <application>ecpg</>'s native mode
|
|
(Boszormenyi Zoltan)
|
|
</para>
|
|
|
|
<para>
|
|
This allows <command>DECLARE</> to use variables that are not in
|
|
scope when <command>OPEN</> is called. This facility already existed
|
|
in <application>ecpg</>'s Informix-compatibility mode.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow dynamic cursor names in <application>ecpg</> (Boszormenyi Zoltan)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <application>ecpg</> to use noise words <literal>FROM</> and
|
|
<literal>IN</> in <command>FETCH</> and <command>MOVE</> (Boszormenyi
|
|
Zoltan)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect5>
|
|
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Build Options</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Enable client thread safety by default (Bruce Momjian)
|
|
</para>
|
|
|
|
<para>
|
|
The thread-safety option can be disabled with <link
|
|
linkend="configure"><literal>configure</></link>
|
|
<option>--disable-thread-safety</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add support for controlling the Linux out-of-memory killer
|
|
(Alex Hunsaker, Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Now that <filename>/proc/self/oom_adj</> allows disabling
|
|
of the <productname>Linux</> out-of-memory (<acronym>OOM</>)
|
|
killer, it's recommendable to disable OOM kills for the postmaster.
|
|
It may then be desirable to re-enable OOM kills for the postmaster's
|
|
child processes. The new compile-time option <link
|
|
linkend="linux-memory-overcommit"><literal>LINUX_OOM_ADJ</></link>
|
|
allows the killer to be reactivated for child processes.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<sect4>
|
|
<title>Makefiles</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
New <filename>Makefile</> targets <link
|
|
linkend="build"><literal>world</></link>,
|
|
<literal>install-world</>, and <literal>installcheck-world</>
|
|
(Andrew Dunstan)
|
|
</para>
|
|
|
|
<para>
|
|
These are similar to the existing <literal>all</>, <literal>install</>,
|
|
and <literal>installcheck</> targets, but they also build the
|
|
<acronym>HTML</> documentation, build and test <filename>contrib</>,
|
|
and test server-side languages and <application>ecpg</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add data and documentation installation location control to
|
|
<acronym>PGXS</> Makefiles (Mark Cave-Ayland)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add Makefile rules to build the <productname>PostgreSQL</> documentation
|
|
as a single <acronym>HTML</> file or as a single plain-text file
|
|
(Peter Eisentraut, Bruce Momjian)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Windows</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support compiling on <link
|
|
linkend="install-windows">64-bit
|
|
<productname>Windows</></link> and running in 64-bit
|
|
mode (Tsutomu Yamada, Magnus Hagander)
|
|
</para>
|
|
|
|
<para>
|
|
This allows for large shared memory sizes on <productname>Windows</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support server builds using <link
|
|
linkend="install-windows-full"><productname>Visual Studio
|
|
2008</></link> (Magnus Hagander)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Source Code</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Distribute prebuilt documentation in a subdirectory tree, rather than
|
|
as tar archive files inside the distribution tarball
|
|
(Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
For example, the prebuilt <acronym>HTML</> documentation is now in
|
|
<filename>doc/src/sgml/html/</>; the manual pages are packaged
|
|
similarly.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make the server's lexer reentrant (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This was needed for use of the lexer by PL/pgSQL.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve speed of memory allocation (Tom Lane, Greg Stark)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
User-defined constraint triggers now have entries in
|
|
<structname>pg_constraint</> as well as <structname>pg_trigger</>
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Because of this change,
|
|
<structname>pg_constraint</>.<structfield>pgconstrname</> is now
|
|
redundant and has been removed.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add system catalog columns
|
|
<structname>pg_constraint</>.<structfield>conindid</> and
|
|
<structname>pg_trigger</>.<structfield>tgconstrindid</>
|
|
to better document the use of indexes for constraint
|
|
enforcement (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow multiple conditions to be communicated to backends using a single
|
|
operating system signal (Fujii Masao)
|
|
</para>
|
|
|
|
<para>
|
|
This allows new features to be added without a platform-specific
|
|
constraint on the number of signal conditions.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve source code test coverage, including <filename>contrib</>, PL/Python,
|
|
and PL/Perl (Peter Eisentraut, Andrew Dunstan)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Remove the use of flat files for system table bootstrapping
|
|
(Tom Lane, Alvaro Herrera)
|
|
</para>
|
|
|
|
<para>
|
|
This improves performance when using many roles or
|
|
databases, and eliminates some possible failure conditions.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Automatically generate the initial contents of
|
|
<structname>pg_attribute</> for <quote>bootstrapped</> catalogs
|
|
(John Naylor)
|
|
</para>
|
|
|
|
<para>
|
|
This greatly simplifies changes to these catalogs.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Split the processing of
|
|
<command>INSERT</>/<command>UPDATE</>/<command>DELETE</> operations out
|
|
of <filename>execMain.c</> (Marko Tiikkaja)
|
|
</para>
|
|
|
|
<para>
|
|
Updates are now executed in a separate ModifyTable node. This change is
|
|
necessary infrastructure for future improvements.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Simplify translation of <application>psql</>'s SQL help text
|
|
(Peter Eisentraut)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Reduce the lengths of some file names so that all file paths in the
|
|
distribution tarball are less than 100 characters (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Some decompression programs have problems with longer file paths.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a new <link
|
|
linkend="errcodes-table"><literal>ERRCODE_INVALID_PASSWORD</></link>
|
|
<literal>SQLSTATE</> error code (Bruce Momjian)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
With authors' permissions, remove the few remaining personal source code
|
|
copyright notices (Bruce Momjian)
|
|
</para>
|
|
|
|
<para>
|
|
The personal copyright notices were insignificant but the community
|
|
occasionally had to answer questions about them.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add new documentation <link linkend="non-durability">section</link>
|
|
about running <productname>PostgreSQL</> in non-durable mode
|
|
to improve performance (Bruce Momjian)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Restructure the <acronym>HTML</> documentation
|
|
<filename>Makefile</> rules to make their dependency checks work
|
|
correctly, avoiding unnecessary rebuilds (Peter Eisentraut)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Use <productname>DocBook</> <acronym>XSL</> stylesheets for man page
|
|
building, rather than <productname>Docbook2X</> (Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
This changes the set of tools needed to build the man pages.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve PL/Perl code structure (Tim Bunce)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve error context reports in PL/Perl (Alexey Klyukin)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<sect4>
|
|
<title>New Build Requirements</title>
|
|
|
|
<para>
|
|
Note that these requirements do not apply when building from a
|
|
distribution tarball, since tarballs include the files that these
|
|
programs are used to build.
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
Require <application>Autoconf</> 2.63 to build
|
|
<application>configure</> (Peter Eisentraut)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Require <application>Flex</> 2.5.31 or later to build
|
|
from a <acronym>CVS</> checkout (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Require <application>Perl</> version 5.8 or later to build
|
|
from a <acronym>CVS</> checkout (John Naylor, Andrew Dunstan)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Portability</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Use a more modern <acronym>API</> for <application>Bonjour</> (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Bonjour support now requires <productname>OS X</> 10.3 or later.
|
|
The older API has been deprecated by Apple.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add spinlock support for the <productname>SuperH</>
|
|
architecture (Nobuhiro Iwamatsu)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow non-<application>GCC</> compilers to use inline functions if
|
|
they support them (Kurt Harriman)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Remove support for platforms that don't have a working 64-bit
|
|
integer data type (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Restructure use of <literal>LDFLAGS</> to be more consistent
|
|
across platforms (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
<literal>LDFLAGS</> is now used for linking both executables and shared
|
|
libraries, and we add on <literal>LDFLAGS_EX</> when linking
|
|
executables, or <literal>LDFLAGS_SL</> when linking shared libraries.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Server Programming</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make backend header files safe to include in <productname>C++</>
|
|
(Kurt Harriman, Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
These changes remove keyword conflicts that previously made
|
|
<productname>C++</> usage difficult in backend code. However, there
|
|
are still other complexities when using <productname>C++</> for backend
|
|
functions. <literal>extern "C" { }</> is still necessary in
|
|
appropriate places, and memory management and error handling are
|
|
still problematic.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link
|
|
linkend="xaggr"><function>AggCheckCallContext()</></link>
|
|
for use in detecting if a <productname>C</> function is
|
|
being called as an aggregate (Hitoshi Harada)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Change calling convention for <function>SearchSysCache()</> and related
|
|
functions to avoid hard-wiring the maximum number of cache keys
|
|
(Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
Existing calls will still work for the moment, but can be expected to
|
|
break in 9.1 or later if not converted to the new style.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Require calls of <function>fastgetattr()</> and
|
|
<function>heap_getattr()</> backend macros to provide a non-NULL fourth
|
|
argument (Robert Haas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Custom typanalyze functions should no longer rely on
|
|
<structname>VacAttrStats</>.<structfield>attr</> to determine the type
|
|
of data they will be passed (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This was changed to allow collection of statistics on index columns
|
|
for which the storage type is different from the underlying column
|
|
data type. There are new fields that tell the actual datatype being
|
|
analyzed.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Server Hooks</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add parser hooks for processing ColumnRef and ParamRef nodes
|
|
(Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a ProcessUtility hook so loadable modules can control utility
|
|
commands (Itagaki Takahiro)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Binary Upgrade Support</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link linkend="pgupgrade"><filename>contrib/pg_upgrade</></link>
|
|
to support in-place upgrades (Bruce Momjian)
|
|
</para>
|
|
|
|
<para>
|
|
This avoids the requirement of dumping/reloading the database when
|
|
upgrading to a new major release of PostgreSQL, thus reducing downtime
|
|
by orders of magnitude. It supports upgrades to 9.0
|
|
from PostgreSQL 8.3 and 8.4.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add support for preserving relation <link
|
|
linkend="catalog-pg-class"><structname>relfilenode</></link> values
|
|
during binary upgrades (Bruce Momjian)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add support for preserving <structname>pg_type</>
|
|
and <structname>pg_enum</> OIDs during binary upgrades
|
|
(Bruce Momjian)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Move data files within tablespaces into
|
|
<productname>PostgreSQL</>-version-specific subdirectories
|
|
(Bruce Momjian)
|
|
</para>
|
|
|
|
<para>
|
|
This simplifies binary upgrades.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Contrib</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add multithreading option (<option>-j</>) to <link
|
|
linkend="pgbench"><filename>contrib/pgbench</></link>
|
|
(Itagaki Takahiro)
|
|
</para>
|
|
|
|
<para>
|
|
This allows multiple <acronym>CPU</>s to be used by pgbench,
|
|
reducing the risk of pgbench itself becoming the test bottleneck.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <command>\shell</> and <command>\setshell</> meta
|
|
commands to <link
|
|
linkend="pgbench"><filename>contrib/pgbench</></link>
|
|
(Michael Paquier)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
New features for <link
|
|
linkend="dict-xsyn"><filename>contrib/dict_xsyn</></link>
|
|
(Sergey Karpov)
|
|
</para>
|
|
|
|
<para>
|
|
The new options are <literal>matchorig</>, <literal>matchsynonyms</>,
|
|
and <literal>keepsynonyms</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add full text dictionary <link
|
|
linkend="unaccent"><filename>contrib/unaccent</></link>
|
|
(Teodor Sigaev)
|
|
</para>
|
|
|
|
<para>
|
|
This filtering dictionary removes accents from letters, which
|
|
makes full-text searches over multiple languages much easier.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link
|
|
linkend="CONTRIB-DBLINK-GET-NOTIFY"><function>dblink_get_notify()</></link>
|
|
to <filename>contrib/dblink</> (Marcus Kempe)
|
|
</para>
|
|
|
|
<para>
|
|
This allows asynchronous notifications in <productname>dblink</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve <filename>contrib/dblink</>'s handling of dropped columns
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This affects <link
|
|
linkend="CONTRIB-DBLINK-BUILD-SQL-INSERT"><function>dblink_build_sql_insert()</></link>
|
|
and related functions. These functions now number columns according
|
|
to logical not physical column numbers.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Greatly increase <link
|
|
linkend="hstore"><filename>contrib/hstore</></link>'s data
|
|
length limit, and add B-tree and hash support so <literal>GROUP
|
|
BY</> and <literal>DISTINCT</> operations are possible on
|
|
<type>hstore</> columns (Andrew Gierth)
|
|
</para>
|
|
|
|
<para>
|
|
New functions and operators were also added. These improvements
|
|
make <type>hstore</> a full-function key-value store embedded in
|
|
<productname>PostgreSQL</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link
|
|
linkend="passwordcheck"><filename>contrib/passwordcheck</></link>
|
|
to support site-specific password strength policies (Laurenz
|
|
Albe)
|
|
</para>
|
|
|
|
<para>
|
|
The source code of this module should be modified to implement
|
|
site-specific password policies.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link
|
|
linkend="pgarchivecleanup"><filename>contrib/pg_archivecleanup</></link>
|
|
tool (Simon Riggs)
|
|
</para>
|
|
|
|
<para>
|
|
This is designed to be used in the
|
|
<literal>archive_cleanup_command</literal>
|
|
server parameter, to remove no-longer-needed archive files.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add query text to <link
|
|
linkend="auto-explain"><filename>contrib/auto_explain</></link>
|
|
output (Andrew Dunstan)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add buffer access counters to <link
|
|
linkend="pgstatstatements"><filename>contrib/pg_stat_statements</></link>
|
|
(Itagaki Takahiro)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update <link
|
|
linkend="server-start"><filename>contrib/start-scripts/linux</></link>
|
|
to use <filename>/proc/self/oom_adj</> to disable the
|
|
<link linkend="linux-memory-overcommit"><productname>Linux</>
|
|
out-of-memory</link> (<acronym>OOM</>) killer (Alex
|
|
Hunsaker, Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
</sect2>
|
|
</sect1>
|