mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-08-22 14:53:23 +02:00
7235 lines
193 KiB
Plaintext
7235 lines
193 KiB
Plaintext
<!-- doc/src/sgml/release-8.3.sgml -->
|
|
<!-- See header comment in release.sgml about typical markup -->
|
|
|
|
<sect1 id="release-8-3-17">
|
|
<title>Release 8.3.17</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2011-12-05</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 8.3.16.
|
|
For information about new features in the 8.3 major release, see
|
|
<xref linkend="release-8-3">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 8.3.17</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 8.3.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 8.3.8,
|
|
see the release notes for 8.3.8.
|
|
</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 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 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>
|
|
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 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>
|
|
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>
|
|
Honor query cancel interrupts promptly in <function>pgstatindex()</>
|
|
(Robert Haas)
|
|
</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-8-3-16">
|
|
<title>Release 8.3.16</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2011-09-26</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 8.3.15.
|
|
For information about new features in the 8.3 major release, see
|
|
<xref linkend="release-8-3">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 8.3.16</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 8.3.X.
|
|
However, if you are upgrading from a version earlier than 8.3.8,
|
|
see the release notes for 8.3.8.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<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>
|
|
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>
|
|
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 performance problem when constructing a large, lossy bitmap
|
|
(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>
|
|
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>
|
|
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 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 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>
|
|
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>
|
|
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>
|
|
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>
|
|
Update configure script's method for probing existence of system
|
|
functions (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
The version of autoconf we used in 8.3 and 8.2 could be fooled by
|
|
compilers that perform link-time optimization.
|
|
</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-8-3-15">
|
|
<title>Release 8.3.15</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2011-04-18</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 8.3.14.
|
|
For information about new features in the 8.3 major release, see
|
|
<xref linkend="release-8-3">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 8.3.15</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 8.3.X.
|
|
However, if you are upgrading from a version earlier than 8.3.8,
|
|
see the release notes for 8.3.8.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<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>
|
|
Fix PL/Python memory leak involving array slices (Daniel Popowich)
|
|
</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>
|
|
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-8-3-14">
|
|
<title>Release 8.3.14</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2011-01-31</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 8.3.13.
|
|
For information about new features in the 8.3 major release, see
|
|
<xref linkend="release-8-3">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 8.3.14</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 8.3.X.
|
|
However, if you are upgrading from a version earlier than 8.3.8,
|
|
see the release notes for 8.3.8.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<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 <application>pg_restore</>'s text output for large objects (BLOBs)
|
|
when <varname>standard_conforming_strings</> is on (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Although restoring directly to a database worked correctly, string
|
|
escaping was incorrect if <application>pg_restore</> was asked for
|
|
SQL text output and <varname>standard_conforming_strings</> had been
|
|
enabled in the source database.
|
|
</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-8-3-13">
|
|
<title>Release 8.3.13</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2010-12-16</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 8.3.12.
|
|
For information about new features in the 8.3 major release, see
|
|
<xref linkend="release-8-3">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 8.3.13</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 8.3.X.
|
|
However, if you are upgrading from a version earlier than 8.3.8,
|
|
see the release notes for 8.3.8.
|
|
</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 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 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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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 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>
|
|
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 <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/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 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-8-3-12">
|
|
<title>Release 8.3.12</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2010-10-04</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 8.3.11.
|
|
For information about new features in the 8.3 major release, see
|
|
<xref linkend="release-8-3">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 8.3.12</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 8.3.X.
|
|
However, if you are upgrading from a version earlier than 8.3.8,
|
|
see the release notes for 8.3.8.
|
|
</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>
|
|
Prevent possible crashes in <function>pg_get_expr()</> by disallowing
|
|
it from being called with an argument that is not one of the system
|
|
catalog columns it's intended to be used with
|
|
(Heikki Linnakangas, Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Treat exit code 128 (<literal>ERROR_WAIT_NO_CHILDREN</>) as non-fatal on
|
|
Windows (Magnus Hagander)
|
|
</para>
|
|
|
|
<para>
|
|
Under high load, Windows processes will sometimes fail at startup with
|
|
this error code. Formerly the postmaster treated this as a panic
|
|
condition and restarted the whole database, but that seems to be
|
|
an overreaction.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix incorrect usage of non-strict OR joinclauses in Append indexscans
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This is a back-patch of an 8.4 fix that was missed in the 8.3 branch.
|
|
This corrects an error introduced in 8.3.8 that could cause incorrect
|
|
results for outer joins when the inner relation is an inheritance tree
|
|
or <literal>UNION ALL</> subquery.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible duplicate scans of <literal>UNION ALL</> member relations
|
|
(Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <quote>cannot handle unplanned sub-select</quote> error (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This occurred when a sub-select contains a join alias reference that
|
|
expands into an expression containing another sub-select.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix failure to mark cached plans as transient (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
If a plan is prepared while <command>CREATE INDEX CONCURRENTLY</> is
|
|
in progress for one of the referenced tables, it is supposed to be
|
|
re-planned once the index is ready for use. This was not happening
|
|
reliably.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Reduce PANIC to ERROR in some occasionally-reported btree failure cases,
|
|
and provide additional detail in the resulting error messages
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This should improve the system's robustness with corrupted indexes.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent show_session_authorization() from crashing within autovacuum
|
|
processes (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Defend against functions returning setof record where not all the
|
|
returned rows are actually of the same rowtype (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible failure when hashing a pass-by-reference function result
|
|
(Tao Ma, Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve merge join's handling of NULLs in the join columns (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
A merge join can now stop entirely upon reaching the first NULL,
|
|
if the sort order is such that NULLs sort high.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Take care to fsync the contents of lockfiles (both
|
|
<filename>postmaster.pid</> and the socket lockfile) while writing them
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This omission could result in corrupted lockfile contents if the
|
|
machine crashes shortly after postmaster start. That could in turn
|
|
prevent subsequent attempts to start the postmaster from succeeding,
|
|
until the lockfile is manually removed.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid recursion while assigning XIDs to heavily-nested
|
|
subtransactions (Andres Freund, Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
The original coding could result in a crash if there was limited
|
|
stack space.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid holding open old WAL segments in the walwriter process
|
|
(Magnus Hagander, Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
The previous coding would prevent removal of no-longer-needed segments.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <varname>log_line_prefix</>'s <literal>%i</> escape,
|
|
which could produce junk early in backend startup (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible data corruption in <command>ALTER TABLE ... SET
|
|
TABLESPACE</> when archiving is enabled (Jeff Davis)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <command>CREATE DATABASE</> and <command>ALTER DATABASE ... SET
|
|
TABLESPACE</> to be interrupted by query-cancel (Guillaume Lelarge)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <command>REASSIGN OWNED</> to handle operator classes and families
|
|
(Asko Tiidumaa)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible core dump when comparing two empty <type>tsquery</> values
|
|
(Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <literal>LIKE</>'s handling of patterns containing <literal>%</>
|
|
followed by <literal>_</> (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
We've fixed this before, but there were still some incorrectly-handled
|
|
cases.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
In PL/Python, defend against null pointer results from
|
|
<function>PyCObject_AsVoidPtr</> and <function>PyCObject_FromVoidPtr</>
|
|
(Peter Eisentraut)
|
|
</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>
|
|
Fix <application>ecpg</> to process data from <literal>RETURNING</>
|
|
clauses correctly (Michael Meskes)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve <filename>contrib/dblink</>'s handling of tables containing
|
|
dropped columns (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix connection leak after <quote>duplicate connection name</quote>
|
|
errors in <filename>contrib/dblink</> (Itagaki Takahiro)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <filename>contrib/dblink</> to handle connection names longer than
|
|
62 bytes correctly (Itagaki Takahiro)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <function>hstore(text, text)</>
|
|
function to <filename>contrib/hstore</> (Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
This function is the recommended substitute for the now-deprecated
|
|
<literal>=></> operator. It was back-patched so that future-proofed
|
|
code can be used with older server versions. Note that the patch will
|
|
be effective only after <filename>contrib/hstore</> is installed or
|
|
reinstalled in a particular database. Users might prefer to execute
|
|
the <command>CREATE FUNCTION</> command by hand, instead.
|
|
</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>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update time zone data files to <application>tzdata</> release 2010l
|
|
for DST law changes in Egypt and Palestine; also historical corrections
|
|
for Finland.
|
|
</para>
|
|
|
|
<para>
|
|
This change also adds new names for two Micronesian timezones:
|
|
Pacific/Chuuk is now preferred over Pacific/Truk (and the preferred
|
|
abbreviation is CHUT not TRUT) and Pacific/Pohnpei is preferred over
|
|
Pacific/Ponape.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make Windows' <quote>N. Central Asia Standard Time</> timezone map to
|
|
Asia/Novosibirsk, not Asia/Almaty (Magnus Hagander)
|
|
</para>
|
|
|
|
<para>
|
|
Microsoft changed the DST behavior of this zone in the timezone update
|
|
from KB976098. Asia/Novosibirsk is a better match to its new behavior.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-8-3-11">
|
|
<title>Release 8.3.11</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2010-05-17</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 8.3.10.
|
|
For information about new features in the 8.3 major release, see
|
|
<xref linkend="release-8-3">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 8.3.11</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 8.3.X.
|
|
However, if you are upgrading from a version earlier than 8.3.8,
|
|
see the release notes for 8.3.8.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Enforce restrictions in <literal>plperl</> using an opmask applied to
|
|
the whole interpreter, instead of using <filename>Safe.pm</>
|
|
(Tim Bunce, Andrew Dunstan)
|
|
</para>
|
|
|
|
<para>
|
|
Recent developments have convinced us that <filename>Safe.pm</> is too
|
|
insecure to rely on for making <literal>plperl</> trustable. This
|
|
change removes use of <filename>Safe.pm</> altogether, in favor of using
|
|
a separate interpreter with an opcode mask that is always applied.
|
|
Pleasant side effects of the change include that it is now possible to
|
|
use Perl's <literal>strict</> pragma in a natural way in
|
|
<literal>plperl</>, and that Perl's <literal>$a</> and <literal>$b</>
|
|
variables work as expected in sort routines, and that function
|
|
compilation is significantly faster. (CVE-2010-1169)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent PL/Tcl from executing untrustworthy code from
|
|
<structname>pltcl_modules</> (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
PL/Tcl's feature for autoloading Tcl code from a database table
|
|
could be exploited for trojan-horse attacks, because there was no
|
|
restriction on who could create or insert into that table. This change
|
|
disables the feature unless <structname>pltcl_modules</> is owned by a
|
|
superuser. (However, the permissions on the table are not checked, so
|
|
installations that really need a less-than-secure modules table can
|
|
still grant suitable privileges to trusted non-superusers.) Also,
|
|
prevent loading code into the unrestricted <quote>normal</> Tcl
|
|
interpreter unless we are really going to execute a <literal>pltclu</>
|
|
function. (CVE-2010-1170)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible crash if a cache reset message is received during
|
|
rebuild of a relcache entry (Heikki)
|
|
</para>
|
|
|
|
<para>
|
|
This error was introduced in 8.3.10 while fixing a related failure.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Apply per-function GUC settings while running the language validator
|
|
for the function (Itagaki Takahiro)
|
|
</para>
|
|
|
|
<para>
|
|
This avoids failures if the function's code is invalid without the
|
|
setting; an example is that SQL functions may not parse if the
|
|
<varname>search_path</> is not correct.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Do not allow an unprivileged user to reset superuser-only parameter
|
|
settings (Alvaro)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, if an unprivileged user ran <literal>ALTER USER ... RESET
|
|
ALL</> for himself, or <literal>ALTER DATABASE ... RESET ALL</> for
|
|
a database he owns, this would remove all special parameter settings
|
|
for the user or database, even ones that are only supposed to be
|
|
changeable by a superuser. Now, the <command>ALTER</> will only
|
|
remove the parameters that the user has permission to change.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid possible crash during backend shutdown if shutdown occurs
|
|
when a <literal>CONTEXT</> addition would be made to log entries (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
In some cases the context-printing function would fail because the
|
|
current transaction had already been rolled back when it came time
|
|
to print a log message.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Ensure the archiver process responds to changes in
|
|
<varname>archive_command</> as soon as possible (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update pl/perl's <filename>ppport.h</> for modern Perl versions
|
|
(Andrew)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix assorted memory leaks in pl/python (Andreas Freund, Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent infinite recursion in <application>psql</> when expanding
|
|
a variable that refers to itself (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>psql</>'s <literal>\copy</> to not add spaces around
|
|
a dot within <literal>\copy (select ...)</> (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
Addition of spaces around the decimal point in a numeric literal would
|
|
result in a syntax error.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix unnecessary <quote>GIN indexes do not support whole-index scans</>
|
|
errors for unsatisfiable queries using <filename>contrib/intarray</>
|
|
operators (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Ensure that <filename>contrib/pgstattuple</> functions respond to cancel
|
|
interrupts promptly (Tatsuhito Kasahara)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make server startup deal properly with the case that
|
|
<function>shmget()</> returns <literal>EINVAL</> for an existing
|
|
shared memory segment (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This behavior has been observed on BSD-derived kernels including OS X.
|
|
It resulted in an entirely-misleading startup failure complaining that
|
|
the shared memory request size was too large.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid possible crashes in syslogger process on Windows (Heikki)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Deal more robustly with incomplete time zone information in the
|
|
Windows registry (Magnus)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update the set of known Windows time zone names (Magnus)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update time zone data files to <application>tzdata</> release 2010j
|
|
for DST law changes in Argentina, Australian Antarctic, Bangladesh,
|
|
Mexico, Morocco, Pakistan, Palestine, Russia, Syria, Tunisia;
|
|
also historical corrections for Taiwan.
|
|
</para>
|
|
|
|
<para>
|
|
Also, add <literal>PKST</> (Pakistan Summer Time) to the default set of
|
|
timezone abbreviations.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-8-3-10">
|
|
<title>Release 8.3.10</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2010-03-15</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 8.3.9.
|
|
For information about new features in the 8.3 major release, see
|
|
<xref linkend="release-8-3">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 8.3.10</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 8.3.X.
|
|
However, if you are upgrading from a version earlier than 8.3.8,
|
|
see the release notes for 8.3.8.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add new configuration parameter <varname>ssl_renegotiation_limit</> to
|
|
control how often we do session key renegotiation for an SSL connection
|
|
(Magnus)
|
|
</para>
|
|
|
|
<para>
|
|
This can be set to zero to disable renegotiation completely, which may
|
|
be required if a broken SSL library is used. In particular, some
|
|
vendors are shipping stopgap patches for CVE-2009-3555 that cause
|
|
renegotiation attempts to fail.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible deadlock during backend startup (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible crashes due to not handling errors during relcache reload
|
|
cleanly (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible crash due to use of dangling pointer to a cached plan
|
|
(Tatsuo)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible crashes when trying to recover from a failure in
|
|
subtransaction start (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix server memory leak associated with use of savepoints and a client
|
|
encoding different from server's encoding (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix incorrect WAL data emitted during end-of-recovery cleanup of a GIST
|
|
index page split (Yoichi Hirai)
|
|
</para>
|
|
|
|
<para>
|
|
This would result in index corruption, or even more likely an error
|
|
during WAL replay, if we were unlucky enough to crash during
|
|
end-of-recovery cleanup after having completed an incomplete GIST
|
|
insertion.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <function>substring()</> for <type>bit</> types treat any negative
|
|
length as meaning <quote>all the rest of the string</> (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
The previous coding treated only -1 that way, and would produce an
|
|
invalid result value for other negative values, possibly leading to
|
|
a crash (CVE-2010-0442).
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix integer-to-bit-string conversions to handle the first fractional
|
|
byte correctly when the output bit width is wider than the given
|
|
integer by something other than a multiple of 8 bits (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix some cases of pathologically slow regular expression matching (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix assorted crashes in <type>xml</> processing caused by sloppy
|
|
memory management (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This is a back-patch of changes first applied in 8.4. The 8.3 code
|
|
was known buggy, but the new code was sufficiently different to not
|
|
want to back-patch it until it had gotten some field testing.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix bug with trying to update a field of an element of a
|
|
composite-type array column (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix the <literal>STOP WAL LOCATION</> entry in backup history files to
|
|
report the next WAL segment's name when the end location is exactly at a
|
|
segment boundary (Itagaki Takahiro)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix some more cases of temporary-file leakage (Heikki)
|
|
</para>
|
|
|
|
<para>
|
|
This corrects a problem introduced in the previous minor release.
|
|
One case that failed is when a plpgsql function returning set is
|
|
called within another function's exception handler.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve constraint exclusion processing of boolean-variable cases,
|
|
in particular make it possible to exclude a partition that has a
|
|
<quote>bool_column = false</> constraint (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
When reading <filename>pg_hba.conf</> and related files, do not treat
|
|
<literal>@something</> as a file inclusion request if the <literal>@</>
|
|
appears inside quote marks; also, never treat <literal>@</> by itself
|
|
as a file inclusion request (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This prevents erratic behavior if a role or database name starts with
|
|
<literal>@</>. If you need to include a file whose path name
|
|
contains spaces, you can still do so, but you must write
|
|
<literal>@"/path to/file"</> rather than putting the quotes around
|
|
the whole construct.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent infinite loop on some platforms if a directory is named as
|
|
an inclusion target in <filename>pg_hba.conf</> and related files
|
|
(Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible infinite loop if <function>SSL_read</> or
|
|
<function>SSL_write</> fails without setting <varname>errno</> (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This is reportedly possible with some Windows versions of
|
|
<application>openssl</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Disallow <acronym>GSSAPI</> authentication on local connections,
|
|
since it requires a hostname to function correctly (Magnus)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <application>ecpg</> report the proper SQLSTATE if the connection
|
|
disappears (Michael)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>psql</>'s <literal>numericlocale</> option to not
|
|
format strings it shouldn't in latex and troff output formats (Heikki)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <application>psql</> return the correct exit status (3) when
|
|
<literal>ON_ERROR_STOP</> and <literal>--single-transaction</> are
|
|
both specified and an error occurs during the implied <command>COMMIT</>
|
|
(Bruce)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix plpgsql failure in one case where a composite column is set to NULL
|
|
(Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible failure when calling PL/Perl functions from PL/PerlU
|
|
or vice versa (Tim Bunce)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <literal>volatile</> markings in PL/Python to avoid possible
|
|
compiler-specific misbehavior (Zdenek Kotala)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Ensure PL/Tcl initializes the Tcl interpreter fully (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
The only known symptom of this oversight is that the Tcl
|
|
<literal>clock</> command misbehaves if using Tcl 8.5 or later.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent crash in <filename>contrib/dblink</> when too many key
|
|
columns are specified to a <function>dblink_build_sql_*</> function
|
|
(Rushabh Lathia, Joe Conway)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow zero-dimensional arrays in <filename>contrib/ltree</> operations
|
|
(Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This case was formerly rejected as an error, but it's more convenient to
|
|
treat it the same as a zero-element array. In particular this avoids
|
|
unnecessary failures when an <type>ltree</> operation is applied to the
|
|
result of <literal>ARRAY(SELECT ...)</> and the sub-select returns no
|
|
rows.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix assorted crashes in <filename>contrib/xml2</> caused by sloppy
|
|
memory management (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make building of <filename>contrib/xml2</> more robust on Windows
|
|
(Andrew)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix race condition in Windows signal handling (Radu Ilie)
|
|
</para>
|
|
|
|
<para>
|
|
One known symptom of this bug is that rows in <structname>pg_listener</>
|
|
could be dropped under heavy load.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update time zone data files to <application>tzdata</> release 2010e
|
|
for DST law changes in Bangladesh, Chile, Fiji, Mexico, Paraguay, Samoa.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-8-3-9">
|
|
<title>Release 8.3.9</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2009-12-14</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 8.3.8.
|
|
For information about new features in the 8.3 major release, see
|
|
<xref linkend="release-8-3">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 8.3.9</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 8.3.X.
|
|
However, if you are upgrading from a version earlier than 8.3.8,
|
|
see the release notes for 8.3.8.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Protect against indirect security threats caused by index functions
|
|
changing session-local state (Gurjeet Singh, Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This change prevents allegedly-immutable index functions from possibly
|
|
subverting a superuser's session (CVE-2009-4136).
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Reject SSL certificates containing an embedded null byte in the common
|
|
name (CN) field (Magnus)
|
|
</para>
|
|
|
|
<para>
|
|
This prevents unintended matching of a certificate to a server or client
|
|
name during SSL validation (CVE-2009-4034).
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible crash during backend-startup-time cache initialization (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid crash on empty thesaurus dictionary (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent signals from interrupting <literal>VACUUM</> at unsafe times
|
|
(Alvaro)
|
|
</para>
|
|
|
|
<para>
|
|
This fix prevents a PANIC if a <literal>VACUUM FULL</> is canceled
|
|
after it's already committed its tuple movements, as well as transient
|
|
errors if a plain <literal>VACUUM</> is interrupted after having
|
|
truncated the table.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible crash due to integer overflow in hash table size
|
|
calculation (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This could occur with extremely large planner estimates for the size of
|
|
a hashjoin's result.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix very rare crash in <type>inet</>/<type>cidr</> comparisons (Chris
|
|
Mikkelson)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Ensure that shared tuple-level locks held by prepared transactions are
|
|
not ignored (Heikki)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix premature drop of temporary files used for a cursor that is accessed
|
|
within a subtransaction (Heikki)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix memory leak in syslogger process when rotating to a new CSV logfile
|
|
(Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix Windows permission-downgrade logic (Jesse Morris)
|
|
</para>
|
|
|
|
<para>
|
|
This fixes some cases where the database failed to start on Windows,
|
|
often with misleading error messages such as <quote>could not locate
|
|
matching postgres executable</quote>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix incorrect logic for GiST index page splits, when the split depends
|
|
on a non-first column of the index (Paul Ramsey)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Don't error out if recycling or removing an old WAL file fails at the
|
|
end of checkpoint (Heikki)
|
|
</para>
|
|
|
|
<para>
|
|
It's better to treat the problem as non-fatal and allow the checkpoint
|
|
to complete. Future checkpoints will retry the removal. Such problems
|
|
are not expected in normal operation, but have been seen to be
|
|
caused by misdesigned Windows anti-virus and backup software.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Ensure WAL files aren't repeatedly archived on Windows (Heikki)
|
|
</para>
|
|
|
|
<para>
|
|
This is another symptom that could happen if some other process
|
|
interfered with deletion of a no-longer-needed file.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix PAM password processing to be more robust (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
The previous code is known to fail with the combination of the Linux
|
|
<literal>pam_krb5</> PAM module with Microsoft Active Directory as the
|
|
domain controller. It might have problems elsewhere too, since it was
|
|
making unjustified assumptions about what arguments the PAM stack would
|
|
pass to it.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Raise the maximum authentication token (Kerberos ticket) size in GSSAPI
|
|
and SSPI authentication methods (Ian Turner)
|
|
</para>
|
|
|
|
<para>
|
|
While the old 2000-byte limit was more than enough for Unix Kerberos
|
|
implementations, tickets issued by Windows Domain Controllers can be
|
|
much larger.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Re-enable collection of access statistics for sequences (Akira Kurosawa)
|
|
</para>
|
|
|
|
<para>
|
|
This used to work but was broken in 8.3.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix processing of ownership dependencies during <literal>CREATE OR
|
|
REPLACE FUNCTION</> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix incorrect handling of <literal>WHERE</>
|
|
<replaceable>x</>=<replaceable>x</> conditions (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
In some cases these could get ignored as redundant, but they aren't
|
|
— they're equivalent to <replaceable>x</> <literal>IS NOT NULL</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make text search parser accept underscores in XML attributes (Peter)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix encoding handling in <type>xml</> binary input (Heikki)
|
|
</para>
|
|
|
|
<para>
|
|
If the XML header doesn't specify an encoding, we now assume UTF-8 by
|
|
default; the previous handling was inconsistent.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix bug with calling <literal>plperl</> from <literal>plperlu</> or vice
|
|
versa (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
An error exit from the inner function could result in crashes due to
|
|
failure to re-select the correct Perl interpreter for the outer function.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix session-lifespan memory leak when a PL/Perl function is redefined
|
|
(Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Ensure that Perl arrays are properly converted to
|
|
<productname>PostgreSQL</> arrays when returned by a set-returning
|
|
PL/Perl function (Andrew Dunstan, Abhijit Menon-Sen)
|
|
</para>
|
|
|
|
<para>
|
|
This worked correctly already for non-set-returning functions.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix rare crash in exception processing in PL/Python (Peter)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
In <filename>contrib/pg_standby</>, disable triggering failover with a
|
|
signal on Windows (Fujii Masao)
|
|
</para>
|
|
|
|
<para>
|
|
This never did anything useful, because Windows doesn't have Unix-style
|
|
signals, but recent changes made it actually crash.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Ensure <application>psql</>'s flex module is compiled with the correct
|
|
system header definitions (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This fixes build failures on platforms where
|
|
<literal>--enable-largefile</> causes incompatible changes in the
|
|
generated code.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make the postmaster ignore any <literal>application_name</> parameter in
|
|
connection request packets, to improve compatibility with future libpq
|
|
versions (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update the timezone abbreviation files to match current reality (Joachim
|
|
Wieland)
|
|
</para>
|
|
|
|
<para>
|
|
This includes adding <literal>IDT</> and <literal>SGT</> to the default
|
|
timezone abbreviation set.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update time zone data files to <application>tzdata</> release 2009s
|
|
for DST law changes in Antarctica, Argentina, Bangladesh, Fiji,
|
|
Novokuznetsk, Pakistan, Palestine, Samoa, Syria; also historical
|
|
corrections for Hong Kong.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-8-3-8">
|
|
<title>Release 8.3.8</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2009-09-09</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 8.3.7.
|
|
For information about new features in the 8.3 major release, see
|
|
<xref linkend="release-8-3">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 8.3.8</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 8.3.X.
|
|
However, if you have any hash indexes on <type>interval</> columns,
|
|
you must <command>REINDEX</> them after updating to 8.3.8.
|
|
Also, if you are upgrading from a version earlier than 8.3.5,
|
|
see the release notes for 8.3.5.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix Windows shared-memory allocation code (Tsutomu Yamada, Magnus)
|
|
</para>
|
|
|
|
<para>
|
|
This bug led to the often-reported <quote>could not reattach
|
|
to shared memory</> error message.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Force WAL segment switch during <function>pg_start_backup()</>
|
|
(Heikki)
|
|
</para>
|
|
|
|
<para>
|
|
This avoids corner cases that could render a base backup unusable.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Disallow <command>RESET ROLE</> and <command>RESET SESSION
|
|
AUTHORIZATION</> inside security-definer functions (Tom, Heikki)
|
|
</para>
|
|
|
|
<para>
|
|
This covers a case that was missed in the previous patch that
|
|
disallowed <command>SET ROLE</> and <command>SET SESSION
|
|
AUTHORIZATION</> inside security-definer functions.
|
|
(See CVE-2007-6600)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <command>LOAD</> of an already-loaded loadable module
|
|
into a no-op (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
Formerly, <command>LOAD</> would attempt to unload and re-load the
|
|
module, but this is unsafe and not all that useful.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Disallow empty passwords during LDAP authentication (Magnus)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix handling of sub-SELECTs appearing in the arguments of
|
|
an outer-level aggregate function (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix bugs associated with fetching a whole-row value from the
|
|
output of a Sort or Materialize plan node (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent <varname>synchronize_seqscans</> from changing the results of
|
|
scrollable and <literal>WITH HOLD</> cursors (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Revert planner change that disabled partial-index and constraint
|
|
exclusion optimizations when there were more than 100 clauses in
|
|
an AND or OR list (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix hash calculation for data type <type>interval</> (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This corrects wrong results for hash joins on interval values.
|
|
It also changes the contents of hash indexes on interval columns.
|
|
If you have any such indexes, you must <command>REINDEX</> them
|
|
after updating.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Treat <function>to_char(..., 'TH')</> as an uppercase ordinal
|
|
suffix with <literal>'HH'</>/<literal>'HH12'</> (Heikki)
|
|
</para>
|
|
|
|
<para>
|
|
It was previously handled as <literal>'th'</> (lowercase).
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix overflow for <literal>INTERVAL '<replaceable>x</> ms'</literal>
|
|
when <replaceable>x</> is more than 2 million and integer
|
|
datetimes are in use (Alex Hunsaker)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix calculation of distance between a point and a line segment (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This led to incorrect results from a number of geometric operators.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <type>money</> data type to work in locales where currency
|
|
amounts have no fractional digits, e.g. Japan (Itagaki Takahiro)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <literal>LIKE</> for case where pattern contains <literal>%_</>
|
|
(Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Properly round datetime input like
|
|
<literal>00:12:57.9999999999999999999999999999</> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix memory leaks in XML operations (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix poor choice of page split point in GiST R-tree operator classes
|
|
(Teodor)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Ensure that a <quote>fast shutdown</> request will forcibly terminate
|
|
open sessions, even if a <quote>smart shutdown</> was already in progress
|
|
(Fujii Masao)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid performance degradation in bulk inserts into GIN indexes
|
|
when the input values are (nearly) in sorted order (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Correctly enforce NOT NULL domain constraints in some contexts in
|
|
PL/pgSQL (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix portability issues in plperl initialization (Andrew Dunstan)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>pg_ctl</> to not go into an infinite loop if
|
|
<filename>postgresql.conf</> is empty (Jeff Davis)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve <application>pg_dump</>'s efficiency when there are
|
|
many large objects (Tamas Vincze)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Use <literal>SIGUSR1</>, not <literal>SIGQUIT</>, as the
|
|
failover signal for <application>pg_standby</> (Heikki)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <application>pg_standby</>'s <literal>maxretries</> option
|
|
behave as documented (Fujii Masao)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <filename>contrib/hstore</> throw an error when a key or
|
|
value is too long to fit in its data structure, rather than
|
|
silently truncating it (Andrew Gierth)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <filename>contrib/xml2</>'s <function>xslt_process()</> to
|
|
properly handle the maximum number of parameters (twenty) (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve robustness of <application>libpq</>'s code to recover
|
|
from errors during <command>COPY FROM STDIN</> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid including conflicting readline and editline header files
|
|
when both libraries are installed (Zdenek Kotala)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update time zone data files to <application>tzdata</> release 2009l
|
|
for DST law changes in Bangladesh, Egypt, Jordan, Pakistan,
|
|
Argentina/San_Luis, Cuba, Jordan (historical correction only),
|
|
Mauritius, Morocco, Palestine, Syria, Tunisia.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-8-3-7">
|
|
<title>Release 8.3.7</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2009-03-16</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 8.3.6.
|
|
For information about new features in the 8.3 major release, see
|
|
<xref linkend="release-8-3">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 8.3.7</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 8.3.X.
|
|
However, if you are upgrading from a version earlier than 8.3.5,
|
|
see the release notes for 8.3.5.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent error recursion crashes when encoding conversion fails (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This change extends fixes made in the last two minor releases for
|
|
related failure scenarios. The previous fixes were narrowly tailored
|
|
for the original problem reports, but we have now recognized that
|
|
<emphasis>any</> error thrown by an encoding conversion function could
|
|
potentially lead to infinite recursion while trying to report the
|
|
error. The solution therefore is to disable translation and encoding
|
|
conversion and report the plain-ASCII form of any error message,
|
|
if we find we have gotten into a recursive error reporting situation.
|
|
(CVE-2009-0922)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Disallow <command>CREATE CONVERSION</> with the wrong encodings
|
|
for the specified conversion function (Heikki)
|
|
</para>
|
|
|
|
<para>
|
|
This prevents one possible scenario for encoding conversion failure.
|
|
The previous change is a backstop to guard against other kinds of
|
|
failures in the same area.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <function>xpath()</> to not modify the path expression unless
|
|
necessary, and to make a saner attempt at it when necessary (Andrew)
|
|
</para>
|
|
|
|
<para>
|
|
The SQL standard suggests that <function>xpath</> should work on data
|
|
that is a document fragment, but <application>libxml</> doesn't support
|
|
that, and indeed it's not clear that this is sensible according to the
|
|
XPath standard. <function>xpath</> attempted to work around this
|
|
mismatch by modifying both the data and the path expression, but the
|
|
modification was buggy and could cause valid searches to fail. Now,
|
|
<function>xpath</> checks whether the data is in fact a well-formed
|
|
document, and if so invokes <application>libxml</> with no change to the
|
|
data or path expression. Otherwise, a different modification method
|
|
that is somewhat less likely to fail is used.
|
|
</para>
|
|
|
|
<note>
|
|
<para>
|
|
The new modification method is still not 100% satisfactory, and it
|
|
seems likely that no real solution is possible. This patch should
|
|
therefore be viewed as a band-aid to keep from breaking existing
|
|
applications unnecessarily. It is likely that
|
|
<productname>PostgreSQL</> 8.4 will simply reject use of
|
|
<function>xpath</> on data that is not a well-formed document.
|
|
</para>
|
|
</note>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix core dump when <function>to_char()</> is given format codes that
|
|
are inappropriate for the type of the data argument (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible failure in text search when C locale is used with
|
|
a multi-byte encoding (Teodor)
|
|
</para>
|
|
|
|
<para>
|
|
Crashes were possible on platforms where <type>wchar_t</> is narrower
|
|
than <type>int</>; Windows in particular.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix extreme inefficiency in text search parser's handling of an
|
|
email-like string containing multiple <literal>@</> characters (Heikki)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix planner problem with sub-<command>SELECT</> in the output list
|
|
of a larger subquery (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
The known symptom of this bug is a <quote>failed to locate grouping
|
|
columns</> error that is dependent on the datatype involved;
|
|
but there could be other issues as well.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix decompilation of <literal>CASE WHEN</> with an implicit coercion
|
|
(Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This mistake could lead to Assert failures in an Assert-enabled build,
|
|
or an <quote>unexpected CASE WHEN clause</> error message in other
|
|
cases, when trying to examine or dump a view.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible misassignment of the owner of a TOAST table's rowtype (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
If <command>CLUSTER</> or a rewriting variant of <command>ALTER TABLE</>
|
|
were executed by someone other than the table owner, the
|
|
<structname>pg_type</> entry for the table's TOAST table would end up
|
|
marked as owned by that someone. This caused no immediate problems,
|
|
since the permissions on the TOAST rowtype aren't examined by any
|
|
ordinary database operation. However, it could lead to unexpected
|
|
failures if one later tried to drop the role that issued the command
|
|
(in 8.1 or 8.2), or <quote>owner of data type appears to be invalid</>
|
|
warnings from <application>pg_dump</> after having done so (in 8.3).
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Change <command>UNLISTEN</> to exit quickly if the current session has
|
|
never executed any <command>LISTEN</> command (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
Most of the time this is not a particularly useful optimization, but
|
|
since <command>DISCARD ALL</> invokes <command>UNLISTEN</>, the previous
|
|
coding caused a substantial performance problem for applications that
|
|
made heavy use of <command>DISCARD ALL</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix PL/pgSQL to not treat <literal>INTO</> after <command>INSERT</> as
|
|
an INTO-variables clause anywhere in the string, not only at the start;
|
|
in particular, don't fail for <command>INSERT INTO</> within
|
|
<command>CREATE RULE</> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Clean up PL/pgSQL error status variables fully at block exit
|
|
(Ashesh Vashi and Dave Page)
|
|
</para>
|
|
|
|
<para>
|
|
This is not a problem for PL/pgSQL itself, but the omission could cause
|
|
the PL/pgSQL Debugger to crash while examining the state of a function.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Retry failed calls to <function>CallNamedPipe()</> on Windows
|
|
(Steve Marshall, Magnus)
|
|
</para>
|
|
|
|
<para>
|
|
It appears that this function can sometimes fail transiently;
|
|
we previously treated any failure as a hard error, which could
|
|
confuse <command>LISTEN</>/<command>NOTIFY</> as well as other
|
|
operations.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <literal>MUST</> (Mauritius Island Summer Time) to the default list
|
|
of known timezone abbreviations (Xavier Bugaud)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-8-3-6">
|
|
<title>Release 8.3.6</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2009-02-02</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 8.3.5.
|
|
For information about new features in the 8.3 major release, see
|
|
<xref linkend="release-8-3">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 8.3.6</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 8.3.X.
|
|
However, if you are upgrading from a version earlier than 8.3.5,
|
|
see the release notes for 8.3.5.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <command>DISCARD ALL</> release advisory locks, in addition
|
|
to everything it already did (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This was decided to be the most appropriate behavior. This could
|
|
affect existing applications, however.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix whole-index GiST scans to work correctly (Teodor)
|
|
</para>
|
|
|
|
<para>
|
|
This error could cause rows to be lost if a table is clustered
|
|
on a GiST index.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix crash of <literal>xmlconcat(NULL)</> (Peter)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible crash in <literal>ispell</> dictionary if high-bit-set
|
|
characters are used as flags (Teodor)
|
|
</para>
|
|
|
|
<para>
|
|
This is known to be done by one widely available Norwegian dictionary,
|
|
and the same condition may exist in others.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix misordering of <application>pg_dump</> output for composite types
|
|
(Tom)
|
|
</para>
|
|
|
|
<para>
|
|
The most likely problem was for user-defined operator classes to
|
|
be dumped after indexes or views that needed them.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve handling of URLs in <function>headline()</> function (Teodor)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve handling of overlength headlines in <function>headline()</>
|
|
function (Teodor)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent possible Assert failure or misconversion if an encoding
|
|
conversion is created with the wrong conversion function for the
|
|
specified pair of encodings (Tom, Heikki)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible Assert failure if a statement executed in PL/pgSQL is
|
|
rewritten into another kind of statement, for example if an
|
|
<command>INSERT</> is rewritten into an <command>UPDATE</> (Heikki)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Ensure that a snapshot is available to datatype input functions (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This primarily affects domains that are declared with <literal>CHECK</>
|
|
constraints involving user-defined stable or immutable functions. Such
|
|
functions typically fail if no snapshot has been set.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make it safer for SPI-using functions to be used within datatype I/O;
|
|
in particular, to be used in domain check constraints (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid unnecessary locking of small tables in <command>VACUUM</>
|
|
(Heikki)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix a problem that sometimes kept <command>ALTER TABLE ENABLE/DISABLE
|
|
RULE</> from being recognized by active sessions (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix a problem that made <literal>UPDATE RETURNING tableoid</>
|
|
return zero instead of the correct OID (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow functions declared as taking <type>ANYARRAY</> to work on
|
|
the <structname>pg_statistic</> columns of that type (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This used to work, but was unintentionally broken in 8.3.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix planner misestimation of selectivity when transitive equality
|
|
is applied to an outer-join clause (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This could result in bad plans for queries like
|
|
<literal>... from a left join b on a.a1 = b.b1 where a.a1 = 42 ...</>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve optimizer's handling of long <literal>IN</> lists (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This change avoids wasting large amounts of time on such lists
|
|
when constraint exclusion is enabled.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent synchronous scan during GIN index build (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
Because GIN is optimized for inserting tuples in increasing TID order,
|
|
choosing to use a synchronous scan could slow the build by a factor of
|
|
three or more.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Ensure that the contents of a holdable cursor don't depend on the
|
|
contents of TOAST tables (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, large field values in a cursor result might be represented
|
|
as TOAST pointers, which would fail if the referenced table got dropped
|
|
before the cursor is read, or if the large value is deleted and then
|
|
vacuumed away. This cannot happen with an ordinary cursor,
|
|
but it could with a cursor that is held past its creating transaction.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix memory leak when a set-returning function is terminated without
|
|
reading its whole result (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix encoding conversion problems in XML functions when the database
|
|
encoding isn't UTF-8 (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <filename>contrib/dblink</>'s
|
|
<function>dblink_get_result(text,bool)</> function (Joe)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible garbage output from <filename>contrib/sslinfo</> functions
|
|
(Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix incorrect behavior of <filename>contrib/tsearch2</> compatibility
|
|
trigger when it's fired more than once in a command (Teodor)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible mis-signaling in autovacuum (Heikki)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support running as a service on Windows 7 beta (Dave and Magnus)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>ecpg</>'s handling of varchar structs (Michael)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>configure</> script to properly report failure when
|
|
unable to obtain linkage information for PL/Perl (Andrew)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make all documentation reference <literal>pgsql-bugs</> and/or
|
|
<literal>pgsql-hackers</> as appropriate, instead of the
|
|
now-decommissioned <literal>pgsql-ports</> and <literal>pgsql-patches</>
|
|
mailing lists (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update time zone data files to <application>tzdata</> release 2009a (for
|
|
Kathmandu and historical DST corrections in Switzerland, Cuba)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-8-3-5">
|
|
<title>Release 8.3.5</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2008-11-03</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 8.3.4.
|
|
For information about new features in the 8.3 major release, see
|
|
<xref linkend="release-8-3">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 8.3.5</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 8.3.X.
|
|
However, if you are upgrading from a version earlier than 8.3.1,
|
|
see the release notes for 8.3.1. Also, if you were running a previous
|
|
8.3.X release, it is recommended to <command>REINDEX</> all GiST
|
|
indexes after the upgrade.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix GiST index corruption due to marking the wrong index entry
|
|
<quote>dead</> after a deletion (Teodor)
|
|
</para>
|
|
|
|
<para>
|
|
This would result in index searches failing to find rows they
|
|
should have found. Corrupted indexes can be fixed with
|
|
<command>REINDEX</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix backend crash when the client encoding cannot represent a localized
|
|
error message (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
We have addressed similar issues before, but it would still fail if
|
|
the <quote>character has no equivalent</> message itself couldn't
|
|
be converted. The fix is to disable localization and send the plain
|
|
ASCII error message when we detect such a situation.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible crash in <type>bytea</>-to-XML mapping (Michael McMaster)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible crash when deeply nested functions are invoked from
|
|
a trigger (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve optimization of <replaceable>expression</> <literal>IN</>
|
|
(<replaceable>expression-list</>) queries (Tom, per an idea from Robert
|
|
Haas)
|
|
</para>
|
|
|
|
<para>
|
|
Cases in which there are query variables on the right-hand side had been
|
|
handled less efficiently in 8.2.x and 8.3.x than in prior versions.
|
|
The fix restores 8.1 behavior for such cases.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix mis-expansion of rule queries when a sub-<literal>SELECT</> appears
|
|
in a function call in <literal>FROM</>, a multi-row <literal>VALUES</>
|
|
list, or a <literal>RETURNING</> list (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
The usual symptom of this problem is an <quote>unrecognized node type</>
|
|
error.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix Assert failure during rescan of an <literal>IS NULL</>
|
|
search of a GiST index (Teodor)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix memory leak during rescan of a hashed aggregation plan (Neil)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Ensure an error is reported when a newly-defined PL/pgSQL trigger
|
|
function is invoked as a normal function (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Force a checkpoint before <command>CREATE DATABASE</> starts to copy
|
|
files (Heikki)
|
|
</para>
|
|
|
|
<para>
|
|
This prevents a possible failure if files had recently been deleted
|
|
in the source database.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent possible collision of <structfield>relfilenode</> numbers
|
|
when moving a table to another tablespace with <command>ALTER SET
|
|
TABLESPACE</> (Heikki)
|
|
</para>
|
|
|
|
<para>
|
|
The command tried to re-use the existing filename, instead of
|
|
picking one that is known unused in the destination directory.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix incorrect text search headline generation when single query
|
|
item matches first word of text (Sushant Sinha)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix improper display of fractional seconds in interval values when
|
|
using a non-ISO datestyle in an <option>--enable-integer-datetimes</>
|
|
build (Ron Mayer)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <literal>ILIKE</> compare characters case-insensitively
|
|
even when they're escaped (Andrew)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Ensure <command>DISCARD</> is handled properly by statement logging (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix incorrect logging of last-completed-transaction time during
|
|
PITR recovery (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Ensure <function>SPI_getvalue</> and <function>SPI_getbinval</>
|
|
behave correctly when the passed tuple and tuple descriptor have
|
|
different numbers of columns (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This situation is normal when a table has had columns added or removed,
|
|
but these two functions didn't handle it properly.
|
|
The only likely consequence is an incorrect error indication.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Mark <varname>SessionReplicationRole</> as <literal>PGDLLIMPORT</>
|
|
so it can be used by <application>Slony</> on Windows (Magnus)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix small memory leak when using <application>libpq</>'s
|
|
<literal>gsslib</> parameter (Magnus)
|
|
</para>
|
|
|
|
<para>
|
|
The space used by the parameter string was not freed at connection
|
|
close.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Ensure <application>libgssapi</> is linked into <application>libpq</>
|
|
if needed (Markus Schaaf)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>ecpg</>'s parsing of <command>CREATE ROLE</> (Michael)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix recent breakage of <literal>pg_ctl restart</> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Ensure <filename>pg_control</> is opened in binary mode
|
|
(Itagaki Takahiro)
|
|
</para>
|
|
|
|
<para>
|
|
<application>pg_controldata</> and <application>pg_resetxlog</>
|
|
did this incorrectly, and so could fail on Windows.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update time zone data files to <application>tzdata</> release 2008i (for
|
|
DST law changes in Argentina, Brazil, Mauritius, Syria)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-8-3-4">
|
|
<title>Release 8.3.4</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2008-09-22</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 8.3.3.
|
|
For information about new features in the 8.3 major release, see
|
|
<xref linkend="release-8-3">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 8.3.4</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 8.3.X.
|
|
However, if you are upgrading from a version earlier than 8.3.1,
|
|
see the release notes for 8.3.1.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix bug in btree WAL recovery code (Heikki)
|
|
</para>
|
|
|
|
<para>
|
|
Recovery failed if the WAL ended partway through a page split operation.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix potential use of wrong cutoff XID for HOT page pruning (Alvaro)
|
|
</para>
|
|
|
|
<para>
|
|
This error created a risk of corruption in system
|
|
catalogs that are consulted by <command>VACUUM</>: dead tuple versions
|
|
might be removed too soon. The impact of this on actual database
|
|
operations would be minimal, since the system doesn't follow MVCC
|
|
rules while examining catalogs, but it might result in transiently
|
|
wrong output from <application>pg_dump</> or other client programs.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix potential miscalculation of <structfield>datfrozenxid</> (Alvaro)
|
|
</para>
|
|
|
|
<para>
|
|
This error may explain some recent reports of failure to remove old
|
|
<structname>pg_clog</> data.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix incorrect HOT updates after <structname>pg_class</> is reindexed
|
|
(Tom)
|
|
</para>
|
|
|
|
<para>
|
|
Corruption of <structname>pg_class</> could occur if <literal>REINDEX
|
|
TABLE pg_class</> was followed in the same session by an <literal>ALTER
|
|
TABLE RENAME</> or <literal>ALTER TABLE SET SCHEMA</> command.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix missed <quote>combo cid</> case (Karl Schnaitter)
|
|
</para>
|
|
|
|
<para>
|
|
This error made rows incorrectly invisible to a transaction in which they
|
|
had been deleted by multiple subtransactions that all aborted.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent autovacuum from crashing if the table it's currently
|
|
checking is deleted at just the wrong time (Alvaro)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Widen local lock counters from 32 to 64 bits (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This responds to reports that the counters could overflow in
|
|
sufficiently long transactions, leading to unexpected <quote>lock is
|
|
already held</> errors.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible duplicate output of tuples during a GiST index scan (Teodor)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Regenerate foreign key checking queries from scratch when either
|
|
table is modified (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, 8.3 would attempt to replan the query, but would work from
|
|
previously generated query text. This led to failures if a
|
|
table or column was renamed.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix missed permissions checks when a view contains a simple
|
|
<literal>UNION ALL</> construct (Heikki)
|
|
</para>
|
|
|
|
<para>
|
|
Permissions for the referenced tables were checked properly, but not
|
|
permissions for the view itself.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add checks in executor startup to ensure that the tuples produced by an
|
|
<command>INSERT</> or <command>UPDATE</> will match the target table's
|
|
current rowtype (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This situation is believed to be impossible in 8.3, but it can happen in
|
|
prior releases, so a check seems prudent.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible repeated drops during <command>DROP OWNED</> (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This would typically result in strange errors such as <quote>cache
|
|
lookup failed for relation NNN</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix several memory leaks in XML operations (Kris Jurka, Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <function>xmlserialize()</> to raise error properly for
|
|
unacceptable target data type (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix a couple of places that mis-handled multibyte characters in text
|
|
search configuration file parsing (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
Certain characters occurring in configuration files would always cause
|
|
<quote>invalid byte sequence for encoding</> failures.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Provide file name and line number location for all errors reported
|
|
in text search configuration files (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <literal>AT TIME ZONE</> to first try to interpret its timezone
|
|
argument as a timezone abbreviation, and only try it as a full timezone
|
|
name if that fails, rather than the other way around as formerly (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
The timestamp input functions have always resolved ambiguous zone names
|
|
in this order. Making <literal>AT TIME ZONE</> do so as well improves
|
|
consistency, and fixes a compatibility bug introduced in 8.1:
|
|
in ambiguous cases we now behave the same as 8.0 and before did,
|
|
since in the older versions <literal>AT TIME ZONE</> accepted
|
|
<emphasis>only</> abbreviations.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix datetime input functions to correctly detect integer overflow when
|
|
running on a 64-bit platform (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent integer overflows during units conversion when displaying a
|
|
configuration parameter that has units (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve performance of writing very long log messages to syslog (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow spaces in the suffix part of an LDAP URL in
|
|
<filename>pg_hba.conf</> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix bug in backwards scanning of a cursor on a <literal>SELECT DISTINCT
|
|
ON</> query (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix planner bug that could improperly push down <literal>IS NULL</>
|
|
tests below an outer join (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This was triggered by occurrence of <literal>IS NULL</> tests for
|
|
the same relation in all arms of an upper <literal>OR</> clause.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix planner bug with nested sub-select expressions (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
If the outer sub-select has no direct dependency on the parent query,
|
|
but the inner one does, the outer value might not get recalculated
|
|
for new parent query rows.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix planner to estimate that <literal>GROUP BY</> expressions yielding
|
|
boolean results always result in two groups, regardless of the
|
|
expressions' contents (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This is very substantially more accurate than the regular <literal>GROUP
|
|
BY</> estimate for certain boolean tests like <replaceable>col</>
|
|
<literal>IS NULL</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix PL/pgSQL to not fail when a <literal>FOR</> loop's target variable
|
|
is a record containing composite-type fields (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix PL/Tcl to behave correctly with Tcl 8.5, and to be more careful
|
|
about the encoding of data sent to or from Tcl (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve performance of <function>PQescapeBytea()</> (Rudolf Leitgeb)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
On Windows, work around a Microsoft bug by preventing
|
|
<application>libpq</> from trying to send more than 64kB per system call
|
|
(Magnus)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>ecpg</> to handle variables properly in <command>SET</>
|
|
commands (Michael)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve <application>pg_dump</> and <application>pg_restore</>'s
|
|
error reporting after failure to send a SQL command (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>pg_ctl</> to properly preserve postmaster
|
|
command-line arguments across a <literal>restart</> (Bruce)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix erroneous WAL file cutoff point calculation in
|
|
<application>pg_standby</> (Simon)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update time zone data files to <application>tzdata</> release 2008f (for
|
|
DST law changes in Argentina, Bahamas, Brazil, Mauritius, Morocco,
|
|
Pakistan, Palestine, and Paraguay)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-8-3-3">
|
|
<title>Release 8.3.3</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2008-06-12</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains one serious and one minor bug fix over 8.3.2.
|
|
For information about new features in the 8.3 major release, see
|
|
<xref linkend="release-8-3">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 8.3.3</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 8.3.X.
|
|
However, if you are upgrading from a version earlier than 8.3.1,
|
|
see the release notes for 8.3.1.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <function>pg_get_ruledef()</> parenthesize negative constants (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
Before this fix, a negative constant in a view or rule might be dumped
|
|
as, say, <literal>-42::integer</>, which is subtly incorrect: it should
|
|
be <literal>(-42)::integer</> due to operator precedence rules.
|
|
Usually this would make little difference, but it could interact with
|
|
another recent patch to cause
|
|
<productname>PostgreSQL</> to reject what had been a valid
|
|
<command>SELECT DISTINCT</> view query. Since this could result in
|
|
<application>pg_dump</> output failing to reload, it is being treated
|
|
as a high-priority fix. The only released versions in which dump
|
|
output is actually incorrect are 8.3.1 and 8.2.7.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <command>ALTER AGGREGATE ... OWNER TO</> update
|
|
<structname>pg_shdepend</> (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This oversight could lead to problems if the aggregate was later
|
|
involved in a <command>DROP OWNED</> or <command>REASSIGN OWNED</>
|
|
operation.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-8-3-2">
|
|
<title>Release 8.3.2</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>never released</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 8.3.1.
|
|
For information about new features in the 8.3 major release, see
|
|
<xref linkend="release-8-3">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 8.3.2</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 8.3.X.
|
|
However, if you are upgrading from a version earlier than 8.3.1,
|
|
see the release notes for 8.3.1.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <literal>ERRORDATA_STACK_SIZE exceeded</literal> crash that
|
|
occurred on Windows when using UTF-8 database encoding and a different
|
|
client encoding (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix incorrect archive truncation point calculation for the
|
|
<literal>%r</> macro in <varname>recovery_command</> parameters
|
|
(Simon)
|
|
</para>
|
|
|
|
<para>
|
|
This could lead to data loss if a warm-standby script relied on
|
|
<literal>%r</> to decide when to throw away WAL segment files.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <command>ALTER TABLE ADD COLUMN ... PRIMARY KEY</> so that the new
|
|
column is correctly checked to see if it's been initialized to all
|
|
non-nulls (Brendan Jurd)
|
|
</para>
|
|
|
|
<para>
|
|
Previous versions neglected to check this requirement at all.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <command>REASSIGN OWNED</> so that it works on procedural
|
|
languages too (Alvaro)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix problems with <command>SELECT FOR UPDATE/SHARE</> occurring as a
|
|
subquery in a query with a non-<command>SELECT</> top-level operation
|
|
(Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible <command>CREATE TABLE</> failure when inheriting the
|
|
<quote>same</> constraint from multiple parent relations that
|
|
inherited that constraint from a common ancestor (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <function>pg_get_ruledef()</> to show the alias, if any, attached
|
|
to the target table of an <command>UPDATE</> or <command>DELETE</>
|
|
(Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Restore the pre-8.3 behavior that an out-of-range block number in a
|
|
TID being used in a TidScan plan results in silently not matching any
|
|
rows (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
8.3.0 and 8.3.1 threw an error instead.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix GIN bug that could result in a <literal>too many LWLocks
|
|
taken</literal> failure (Teodor)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix broken GiST comparison function for <type>tsquery</> (Teodor)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <function>tsvector_update_trigger()</> and <function>ts_stat()</>
|
|
to accept domains over the types they expect to work with (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix failure to support enum data types as foreign keys (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid possible crash when decompressing corrupted data
|
|
(Zdenek Kotala)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix race conditions between delayed unlinks and <command>DROP
|
|
DATABASE</> (Heikki)
|
|
</para>
|
|
|
|
<para>
|
|
In the worst case this could result in deleting a newly created table
|
|
in a new database that happened to get the same OID as the
|
|
recently-dropped one; but of course that is an extremely
|
|
low-probability scenario.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Repair two places where SIGTERM exit of a backend could leave corrupted
|
|
state in shared memory (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
Neither case is very important if SIGTERM is used to shut down the
|
|
whole database cluster together, but there was a problem if someone
|
|
tried to SIGTERM individual backends.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible crash due to incorrect plan generated for an
|
|
<literal><replaceable>x</> IN (SELECT <replaceable>y</>
|
|
FROM ...)</literal> clause when <replaceable>x</> and <replaceable>y</>
|
|
have different data types; and make sure the behavior is semantically
|
|
correct when the conversion from <replaceable>y</>'s type to
|
|
<replaceable>x</>'s type is lossy (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix oversight that prevented the planner from substituting known Param
|
|
values as if they were constants (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This mistake partially disabled optimization of unnamed
|
|
extended-Query statements in 8.3.0 and 8.3.1: in particular the
|
|
LIKE-to-indexscan optimization would never be applied if the LIKE
|
|
pattern was passed as a parameter, and constraint exclusion
|
|
depending on a parameter value didn't work either.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix planner failure when an indexable <function>MIN</> or
|
|
<function>MAX</> aggregate is used with <literal>DISTINCT</> or
|
|
<literal>ORDER BY</> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix planner to ensure it never uses a <quote>physical tlist</> for a
|
|
plan node that is feeding a Sort node (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This led to the sort having to push around more data than it really
|
|
needed to, since unused column values were included in the sorted
|
|
data.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid unnecessary copying of query strings (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This fixes a performance problem introduced in 8.3.0 when a very large
|
|
number of commands are submitted as a single query string.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <function>TransactionIdIsCurrentTransactionId()</> use binary
|
|
search instead of linear search when checking child-transaction XIDs
|
|
(Heikki)
|
|
</para>
|
|
|
|
<para>
|
|
This fixes some cases in which 8.3.0 was significantly
|
|
slower than earlier releases.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix conversions between ISO-8859-5 and other encodings to handle
|
|
Cyrillic <quote>Yo</> characters (<literal>e</> and <literal>E</> with
|
|
two dots) (Sergey Burladyan)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix several datatype input functions, notably <function>array_in()</>,
|
|
that were allowing unused bytes in their results to contain
|
|
uninitialized, unpredictable values (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This could lead to failures in which two apparently identical literal
|
|
values were not seen as equal, resulting in the parser complaining
|
|
about unmatched <literal>ORDER BY</> and <literal>DISTINCT</>
|
|
expressions.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix a corner case in regular-expression substring matching
|
|
(<literal>substring(<replaceable>string</> from
|
|
<replaceable>pattern</>)</literal>) (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
The problem occurs when there is a match to the pattern overall but
|
|
the user has specified a parenthesized subexpression and that
|
|
subexpression hasn't got a match. An example is
|
|
<literal>substring('foo' from 'foo(bar)?')</>.
|
|
This should return NULL, since <literal>(bar)</> isn't matched, but
|
|
it was mistakenly returning the whole-pattern match instead (ie,
|
|
<literal>foo</>).
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent cancellation of an auto-vacuum that was launched to prevent
|
|
XID wraparound (Alvaro)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve <command>ANALYZE</>'s handling of in-doubt tuples (those
|
|
inserted or deleted by a not-yet-committed transaction) so that the
|
|
counts it reports to the stats collector are more likely to be correct
|
|
(Pavan Deolasee)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>initdb</> to reject a relative path for its
|
|
<literal>--xlogdir</> (<literal>-X</>) option (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <application>psql</> print tab characters as an appropriate
|
|
number of spaces, rather than <literal>\x09</literal> as was done in
|
|
8.3.0 and 8.3.1 (Bruce)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update time zone data files to <application>tzdata</> release 2008c (for
|
|
DST law changes in Morocco, Iraq, Choibalsan, Pakistan, Syria, Cuba, and
|
|
Argentina/San_Luis)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <function>ECPGget_PGconn()</> function to
|
|
<application>ecpglib</> (Michael)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix incorrect result from <application>ecpg</>'s
|
|
<function>PGTYPEStimestamp_sub()</> function (Michael)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix handling of continuation line markers in <application>ecpg</>
|
|
(Michael)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible crashes in <filename>contrib/cube</> functions (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix core dump in <filename>contrib/xml2</>'s
|
|
<function>xpath_table()</> function when the input query returns a
|
|
NULL value (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <filename>contrib/xml2</>'s makefile to not override
|
|
<literal>CFLAGS</>, and make it auto-configure properly for
|
|
<application>libxslt</> present or not (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-8-3-1">
|
|
<title>Release 8.3.1</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2008-03-17</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 8.3.0.
|
|
For information about new features in the 8.3 major release, see
|
|
<xref linkend="release-8-3">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 8.3.1</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 8.3.X.
|
|
However, you might need to <command>REINDEX</> indexes on textual
|
|
columns after updating, if you are affected by the Windows locale
|
|
issue described below.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix character string comparison for Windows locales that consider
|
|
different character combinations as equal (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This fix applies only on Windows and only when using UTF-8
|
|
database encoding. The same fix was made for all other cases
|
|
over two years ago, but Windows with UTF-8 uses a separate code
|
|
path that was not updated. If you are using a locale that
|
|
considers some non-identical strings as equal, you may need to
|
|
<command>REINDEX</> to fix existing indexes on textual columns.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Repair corner-case bugs in <command>VACUUM FULL</> (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
A potential deadlock between concurrent <command>VACUUM FULL</>
|
|
operations on different system catalogs was introduced in 8.2.
|
|
This has now been corrected. 8.3 made this worse because the
|
|
deadlock could occur within a critical code section, making it
|
|
a PANIC rather than just ERROR condition.
|
|
</para>
|
|
|
|
<para>
|
|
Also, a <command>VACUUM FULL</> that failed partway through
|
|
vacuuming a system catalog could result in cache corruption in
|
|
concurrent database sessions.
|
|
</para>
|
|
|
|
<para>
|
|
Another <command>VACUUM FULL</> bug introduced in 8.3 could
|
|
result in a crash or out-of-memory report when dealing with
|
|
pages containing no live tuples.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix misbehavior of foreign key checks involving <type>character</>
|
|
or <type>bit</> columns (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
If the referencing column were of a different but compatible type
|
|
(for instance <type>varchar</>), the constraint was enforced incorrectly.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid needless deadlock failures in no-op foreign-key checks (Stephan
|
|
Szabo, Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible core dump when re-planning a prepared query (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This bug affected only protocol-level prepare operations, not
|
|
SQL <command>PREPARE</>, and so tended to be seen only with
|
|
JDBC, DBI, and other client-side drivers that use prepared
|
|
statements heavily.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible failure when re-planning a query that calls an SPI-using
|
|
function (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix failure in row-wise comparisons involving columns of different
|
|
datatypes (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix longstanding <command>LISTEN</>/<command>NOTIFY</>
|
|
race condition (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
In rare cases a session that had just executed a
|
|
<command>LISTEN</> might not get a notification, even though
|
|
one would be expected because the concurrent transaction executing
|
|
<command>NOTIFY</> was observed to commit later.
|
|
</para>
|
|
|
|
<para>
|
|
A side effect of the fix is that a transaction that has executed
|
|
a not-yet-committed <command>LISTEN</> command will not see any
|
|
row in <structname>pg_listener</> for the <command>LISTEN</>,
|
|
should it choose to look; formerly it would have. This behavior
|
|
was never documented one way or the other, but it is possible that
|
|
some applications depend on the old behavior.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Disallow <command>LISTEN</> and <command>UNLISTEN</> within a
|
|
prepared transaction (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This was formerly allowed but trying to do it had various unpleasant
|
|
consequences, notably that the originating backend could not exit
|
|
as long as an <command>UNLISTEN</> remained uncommitted.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Disallow dropping a temporary table within a
|
|
prepared transaction (Heikki)
|
|
</para>
|
|
|
|
<para>
|
|
This was correctly disallowed by 8.1, but the check was inadvertently
|
|
broken in 8.2 and 8.3.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix rare crash when an error occurs during a query using a hash index
|
|
(Heikki)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix incorrect comparison of <type>tsquery</> values (Teodor)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix incorrect behavior of <literal>LIKE</> with non-ASCII characters
|
|
in single-byte encodings (Rolf Jentsch)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Disable <function>xmlvalidate</> (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This function should have been removed before 8.3 release, but
|
|
was inadvertently left in the source code. It poses a small
|
|
security risk since unprivileged users could use it to read the
|
|
first few characters of any file accessible to the server.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix memory leaks in certain usages of set-returning functions (Neil)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <function>encode(<replaceable>bytea</>, 'escape')</> convert all
|
|
high-bit-set byte values into <literal>\</><replaceable>nnn</> octal
|
|
escape sequences (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This is necessary to avoid encoding problems when the database
|
|
encoding is multi-byte. This change could pose compatibility issues
|
|
for applications that are expecting specific results from
|
|
<function>encode</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix input of datetime values for February 29 in years BC (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
The former coding was mistaken about which years were leap years.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <quote>unrecognized node type</> error in some variants of
|
|
<command>ALTER OWNER</> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid tablespace permissions errors in <command>CREATE TABLE LIKE
|
|
INCLUDING INDEXES</> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Ensure <structname>pg_stat_activity</>.<structfield>waiting</> flag
|
|
is cleared when a lock wait is aborted (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix handling of process permissions on Windows Vista (Dave, Magnus)
|
|
</para>
|
|
|
|
<para>
|
|
In particular, this fix allows starting the server as the Administrator
|
|
user.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update time zone data files to <application>tzdata</> release 2008a
|
|
(in particular, recent Chile changes); adjust timezone abbreviation
|
|
<literal>VET</> (Venezuela) to mean UTC-4:30, not UTC-4:00 (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>ecpg</> problems with arrays (Michael)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>pg_ctl</> to correctly extract the postmaster's port
|
|
number from command-line options (Itagaki Takahiro, Tom)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, <literal>pg_ctl start -w</> could try to contact the
|
|
postmaster on the wrong port, leading to bogus reports of startup
|
|
failure.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Use <option>-fwrapv</> to defend against possible misoptimization
|
|
in recent <application>gcc</> versions (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This is known to be necessary when building <productname>PostgreSQL</>
|
|
with <application>gcc</> 4.3 or later.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Enable building <filename>contrib/uuid-ossp</> with MSVC (Hiroshi Saito)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-8-3">
|
|
<title>Release 8.3</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2008-02-04</simpara>
|
|
</note>
|
|
|
|
<sect2>
|
|
<title>Overview</title>
|
|
|
|
<para>
|
|
With significant new functionality and performance enhancements,
|
|
this release represents a major leap forward for
|
|
<productname>PostgreSQL</>. This was made possible by a growing
|
|
community that has dramatically accelerated the pace of
|
|
development. This release adds the following major features:
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Full text search is integrated into the core database system
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support for the SQL/XML standard, including new operators and an
|
|
<type>XML</type> data type
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Enumerated data types (<type>ENUM</type>)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Arrays of composite types
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Universally Unique Identifier (<type>UUID</>) data type
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add control over whether <literal>NULL</>s sort first or last
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Updatable cursors
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Server configuration parameters can now be set on a per-function
|
|
basis
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
User-defined types can now have type modifiers
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Automatically re-plan cached queries when table
|
|
definitions change or statistics are updated
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Numerous improvements in logging and statistics collection
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support Security Service Provider Interface (<acronym>SSPI</>) for
|
|
authentication on Windows
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support multiple concurrent autovacuum processes, and other
|
|
autovacuum improvements
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow the whole <productname>PostgreSQL</> distribution to be compiled
|
|
with <productname>Microsoft Visual C++</>
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<para>
|
|
Major performance improvements are listed below. Most of
|
|
these enhancements are automatic and do not require user changes or
|
|
tuning:
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Asynchronous commit delays writes to WAL during transaction commit
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Checkpoint writes can be spread over a longer time period to smooth
|
|
the I/O spike during each checkpoint
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Heap-Only Tuples (<acronym>HOT</>) accelerate space reuse for
|
|
most <command>UPDATE</>s and <command>DELETE</>s
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Just-in-time background writer strategy improves disk write
|
|
efficiency
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Using non-persistent transaction IDs for read-only transactions
|
|
reduces overhead and <command>VACUUM</> requirements
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Per-field and per-row storage overhead has been reduced
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Large sequential scans no longer force out frequently used
|
|
cached pages
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Concurrent large sequential scans can now share disk reads
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<literal>ORDER BY ... LIMIT</> can be done without sorting
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<para>
|
|
The above items are explained in more detail in the sections below.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 8.3</title>
|
|
|
|
<para>
|
|
A dump/restore using <application>pg_dump</application> is
|
|
required for those wishing to migrate data from any previous
|
|
release.
|
|
</para>
|
|
|
|
<para>
|
|
Observe the following incompatibilities:
|
|
</para>
|
|
|
|
<sect3>
|
|
<title>General</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Non-character data types are no longer automatically cast to
|
|
<type>TEXT</> (Peter, Tom)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, if a non-character value was supplied to an operator or
|
|
function that requires <type>text</> input, it was automatically
|
|
cast to <type>text</>, for most (though not all) built-in data types.
|
|
This no longer happens: an explicit cast to <type>text</> is now
|
|
required for all non-character-string types. For example, these
|
|
expressions formerly worked:
|
|
|
|
<programlisting>
|
|
substr(current_date, 1, 4)
|
|
23 LIKE '2%'
|
|
</programlisting>
|
|
|
|
but will now draw <quote>function does not exist</> and <quote>operator
|
|
does not exist</> errors respectively. Use an explicit cast instead:
|
|
|
|
<programlisting>
|
|
substr(current_date::text, 1, 4)
|
|
23::text LIKE '2%'
|
|
</programlisting>
|
|
|
|
(Of course, you can use the more verbose <literal>CAST()</> syntax too.)
|
|
The reason for the change is that these automatic casts too often caused
|
|
surprising behavior. An example is that in previous releases, this
|
|
expression was accepted but did not do what was expected:
|
|
|
|
<programlisting>
|
|
current_date < 2017-11-17
|
|
</programlisting>
|
|
|
|
This is actually comparing a date to an integer, which should be
|
|
(and now is) rejected — but in the presence of automatic
|
|
casts both sides were cast to <type>text</> and a textual comparison
|
|
was done, because the <literal>text < text</> operator was able
|
|
to match the expression when no other <literal><</> operator could.
|
|
</para>
|
|
|
|
<para>
|
|
Types <type>char(<replaceable>n</>)</type> and
|
|
<type>varchar(<replaceable>n</>)</type> still cast to <type>text</>
|
|
automatically. Also, automatic casting to <type>text</> still works for
|
|
inputs to the concatenation (<literal>||</>) operator, so long as least
|
|
one input is a character-string type.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Full text search features from <filename>contrib/tsearch2</> have
|
|
been moved into the core server, with some minor syntax changes
|
|
</para>
|
|
|
|
<para>
|
|
<filename>contrib/tsearch2</> now contains a compatibility
|
|
interface.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<literal>ARRAY(SELECT ...)</literal>, where the <command>SELECT</>
|
|
returns no rows, now returns an empty array, rather than NULL
|
|
(Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
The array type name for a base data type is no longer always the base
|
|
type's name with an underscore prefix
|
|
</para>
|
|
|
|
<para>
|
|
The old naming convention is still honored when possible, but
|
|
application code should no longer depend on it. Instead
|
|
use the new <literal>pg_type.typarray</literal> column to
|
|
identify the array data type associated with a given type.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<literal>ORDER BY ... USING</> <replaceable>operator</> must now
|
|
use a less-than or greater-than <replaceable>operator</> that is
|
|
defined in a btree operator class
|
|
</para>
|
|
|
|
<para>
|
|
This restriction was added to prevent inconsistent results.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<command>SET LOCAL</command> changes now persist until
|
|
the end of the outermost transaction, unless rolled back (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
Previously <command>SET LOCAL</command>'s effects were lost
|
|
after subtransaction commit (<command>RELEASE SAVEPOINT</>
|
|
or exit from a PL/pgSQL exception block).
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Commands rejected in transaction blocks are now also rejected in
|
|
multiple-statement query strings (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
For example, <literal>"BEGIN; DROP DATABASE; COMMIT"</> will now be
|
|
rejected even if submitted as a single query message.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<command>ROLLBACK</> outside a transaction block now
|
|
issues <literal>NOTICE</> instead of <literal>WARNING</> (Bruce)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent <command>NOTIFY</command>/<command>LISTEN</command>/<command>UNLISTEN</command>
|
|
from accepting schema-qualified names (Bruce)
|
|
</para>
|
|
|
|
<para>
|
|
Formerly, these commands accepted <literal>schema.relation</> but
|
|
ignored the schema part, which was confusing.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<command>ALTER SEQUENCE</> no longer affects the sequence's
|
|
<function>currval()</> state (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Foreign keys now must match indexable conditions for
|
|
cross-data-type references (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This improves semantic consistency and helps avoid
|
|
performance problems.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Restrict object size functions to users who have reasonable
|
|
permissions to view such information (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
For example, <function>pg_database_size()</function> now requires
|
|
<literal>CONNECT</> permission, which is granted to everyone by
|
|
default. <function>pg_tablespace_size()</function> requires
|
|
<literal>CREATE</> permission in the tablespace, or is allowed if
|
|
the tablespace is the default tablespace for the database.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Remove the undocumented <literal>!!=</> (not in) operator (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
<literal>NOT IN (SELECT ...)</literal> is the proper way to
|
|
perform this operation.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Internal hashing functions are now more uniformly-distributed (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
If application code was computing and storing hash values using
|
|
internal <productname>PostgreSQL</> hashing functions, the hash
|
|
values must be regenerated.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
C-code conventions for handling variable-length data values
|
|
have changed (Greg Stark, Tom)
|
|
</para>
|
|
|
|
<para>
|
|
The new <function>SET_VARSIZE()</> macro <emphasis>must</> be used
|
|
to set the length of generated <type>varlena</> values. Also, it
|
|
might be necessary to expand (<quote>de-TOAST</quote>) input values
|
|
in more cases.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Continuous archiving no longer reports each successful archive
|
|
operation to the server logs unless <literal>DEBUG</> level is used
|
|
(Simon)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Configuration Parameters</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Numerous changes in administrative server parameters
|
|
</para>
|
|
|
|
<para>
|
|
<varname>bgwriter_lru_percent</>,
|
|
<varname>bgwriter_all_percent</>,
|
|
<varname>bgwriter_all_maxpages</>,
|
|
<varname>stats_start_collector</>, and
|
|
<varname>stats_reset_on_server_start</> are removed.
|
|
<varname>redirect_stderr</> is renamed to
|
|
<varname>logging_collector</>.
|
|
<varname>stats_command_string</> is renamed to
|
|
<varname>track_activities</>.
|
|
<varname>stats_block_level</> and <varname>stats_row_level</>
|
|
are merged into <varname>track_counts</>.
|
|
A new boolean configuration parameter, <varname>archive_mode</>,
|
|
controls archiving. Autovacuum's default settings have changed.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Remove <varname>stats_start_collector</varname> parameter (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
We now always start the collector process, unless <acronym>UDP</>
|
|
socket creation fails.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Remove <varname>stats_reset_on_server_start</varname> parameter (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This was removed because <function>pg_stat_reset()</function>
|
|
can be used for this purpose.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Commenting out a parameter in <filename>postgresql.conf</> now
|
|
causes it to revert to its default value (Joachim Wieland)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, commenting out an entry left the parameter's value unchanged
|
|
until the next server restart.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
|
|
<sect3>
|
|
<title>Character Encodings</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add more checks for invalidly-encoded data (Andrew)
|
|
</para>
|
|
|
|
<para>
|
|
This change plugs some holes that existed in literal backslash
|
|
escape string processing and <command>COPY</command> escape
|
|
processing. Now the de-escaped string is rechecked to see if the
|
|
result created an invalid multi-byte character.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Disallow database encodings that are inconsistent with the server's
|
|
locale setting (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
On most platforms, <literal>C</> locale is the only locale that
|
|
will work with any database encoding. Other locale settings imply
|
|
a specific encoding and will misbehave if the database encoding
|
|
is something different. (Typical symptoms include bogus textual
|
|
sort order and wrong results from <function>upper()</> or
|
|
<function>lower()</>.) The server now rejects attempts to create
|
|
databases that have an incompatible encoding.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Ensure that <function>chr()</function> cannot create
|
|
invalidly-encoded values (Andrew)
|
|
</para>
|
|
|
|
<para>
|
|
In UTF8-encoded databases the argument of <function>chr()</function> is
|
|
now treated as a Unicode code point. In other multi-byte encodings
|
|
<function>chr()</function>'s argument must designate a 7-bit ASCII
|
|
character. Zero is no longer accepted.
|
|
<function>ascii()</function> has been adjusted to match.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Adjust <function>convert()</function> behavior to ensure encoding
|
|
validity (Andrew)
|
|
</para>
|
|
|
|
<para>
|
|
The two argument form of <function>convert()</function> has been
|
|
removed. The three argument form now takes a <type>bytea</type>
|
|
first argument and returns a <type>bytea</type>. To cover the
|
|
loss of functionality, three new functions have been added:
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
<function>convert_from(bytea, name)</function> returns
|
|
<type>text</> — converts the first argument from the named
|
|
encoding to the database encoding
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<function>convert_to(text, name)</function> returns
|
|
<type>bytea</> — converts the first argument from the
|
|
database encoding to the named encoding
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<function>length(bytea, name)</function> returns
|
|
<type>integer</> — gives the length of the first
|
|
argument in characters in the named encoding
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Remove <literal>convert(argument USING conversion_name)</literal>
|
|
(Andrew)
|
|
</para>
|
|
|
|
<para>
|
|
Its behavior did not match the SQL standard.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make JOHAB encoding client-only (Tatsuo)
|
|
</para>
|
|
|
|
<para>
|
|
JOHAB is not safe as a server-side encoding.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<para>
|
|
Below you will find a detailed account of the
|
|
changes between <productname>PostgreSQL</productname> 8.3 and
|
|
the previous major release.
|
|
</para>
|
|
|
|
<sect3>
|
|
<title>Performance</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Asynchronous commit delays writes to WAL during transaction commit
|
|
(Simon)
|
|
</para>
|
|
|
|
<para>
|
|
This feature dramatically increases performance for short data-modifying
|
|
transactions. The disadvantage is that because disk writes are delayed,
|
|
if the database or operating system crashes before data is written to
|
|
the disk, committed data will be lost. This feature is useful for
|
|
applications that can accept some data loss. Unlike turning off
|
|
<varname>fsync</varname>, using asynchronous commit does not put
|
|
database consistency at risk; the worst case is that after a crash the
|
|
last few reportedly-committed transactions might not be committed after
|
|
all.
|
|
This feature is enabled by turning off <varname>synchronous_commit</>
|
|
(which can be done per-session or per-transaction, if some transactions
|
|
are critical and others are not).
|
|
<varname>wal_writer_delay</> can be adjusted to control the maximum
|
|
delay before transactions actually reach disk.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Checkpoint writes can be spread over a longer time period to smooth
|
|
the I/O spike during each checkpoint (Itagaki Takahiro and Heikki
|
|
Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
Previously all modified buffers were forced to disk as quickly as
|
|
possible during a
|
|
checkpoint, causing an I/O spike that decreased server performance.
|
|
This new approach spreads out disk writes during checkpoints,
|
|
reducing peak I/O usage. (User-requested and shutdown checkpoints
|
|
are still written as quickly as possible.)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Heap-Only Tuples (<acronym>HOT</>) accelerate space reuse for most
|
|
<command>UPDATE</>s and <command>DELETE</>s (Pavan Deolasee, with
|
|
ideas from many others)
|
|
</para>
|
|
|
|
<para>
|
|
<command>UPDATE</>s and <command>DELETE</>s leave dead tuples
|
|
behind, as do failed <command>INSERT</>s. Previously only
|
|
<command>VACUUM</> could reclaim space taken by dead tuples. With
|
|
<acronym>HOT</> dead tuple space can be automatically reclaimed at
|
|
the time of <command>INSERT</> or <command>UPDATE</> if no changes
|
|
are made to indexed columns. This allows for more consistent
|
|
performance. Also, <acronym>HOT</> avoids adding duplicate index
|
|
entries.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Just-in-time background writer strategy improves disk write
|
|
efficiency (Greg Smith, Itagaki Takahiro)
|
|
</para>
|
|
|
|
<para>
|
|
This greatly reduces the need for manual tuning of the background
|
|
writer.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Per-field and per-row storage overhead have been reduced
|
|
(Greg Stark, Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
Variable-length data types with data values less than 128 bytes long
|
|
will see a storage decrease of 3 to 6 bytes. For example, two adjacent
|
|
<type>char(1)</type> fields now use 4 bytes instead of 16. Row headers
|
|
are also 4 bytes shorter than before.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Using non-persistent transaction IDs for read-only transactions
|
|
reduces overhead and <command>VACUUM</> requirements (Florian Pflug)
|
|
</para>
|
|
|
|
<para>
|
|
Non-persistent transaction IDs do not increment the global
|
|
transaction counter. Therefore, they reduce the load on
|
|
<structname>pg_clog</> and increase the time between forced
|
|
vacuums to prevent transaction ID wraparound.
|
|
Other performance
|
|
improvements were also made that should improve concurrency.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid incrementing the command counter after a read-only command (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
There was formerly a hard limit of 2<superscript>32</>
|
|
(4 billion) commands per transaction. Now only commands that
|
|
actually changed the database count, so while this limit still
|
|
exists, it should be significantly less annoying.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Create a dedicated <acronym>WAL</> writer process to off-load
|
|
work from backends (Simon)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Skip unnecessary WAL writes for <command>CLUSTER</command> and
|
|
<command>COPY</command> (Simon)
|
|
</para>
|
|
|
|
<para>
|
|
Unless WAL archiving is enabled, the system now avoids WAL writes
|
|
for <command>CLUSTER</command> and just <function>fsync()</>s the
|
|
table at the end of the command. It also does the same for
|
|
<command>COPY</command> if the table was created in the same
|
|
transaction.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Large sequential scans no longer force out frequently used
|
|
cached pages (Simon, Heikki, Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Concurrent large sequential scans can now share disk reads (Jeff Davis)
|
|
</para>
|
|
|
|
<para>
|
|
This is accomplished by starting the new sequential scan in the
|
|
middle of the table (where another sequential scan is already
|
|
in-progress) and wrapping around to the beginning to finish. This
|
|
can affect the order of returned rows in a query that does not
|
|
specify <literal>ORDER BY</>. The <varname>synchronize_seqscans</>
|
|
configuration parameter can be used to disable this if necessary.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<literal>ORDER BY ... LIMIT</> can be done without sorting
|
|
(Greg Stark)
|
|
</para>
|
|
|
|
<para>
|
|
This is done by sequentially scanning the table and tracking just
|
|
the <quote>top N</> candidate rows, rather than performing a
|
|
full sort of the entire table. This is useful when there is no
|
|
matching index and the <literal>LIMIT</> is not large.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Put a rate limit on messages sent to the statistics
|
|
collector by backends
|
|
(Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This reduces overhead for short transactions, but might sometimes
|
|
increase the delay before statistics are tallied.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve hash join performance for cases with many NULLs (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Speed up operator lookup for cases with non-exact datatype matches (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Server</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Autovacuum is now enabled by default (Alvaro)
|
|
</para>
|
|
|
|
<para>
|
|
Several changes were made to eliminate disadvantages of having
|
|
autovacuum enabled, thereby justifying the change in default.
|
|
Several other autovacuum parameter defaults were also modified.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support multiple concurrent autovacuum processes (Alvaro, Itagaki
|
|
Takahiro)
|
|
</para>
|
|
|
|
<para>
|
|
This allows multiple vacuums to run concurrently. This prevents
|
|
vacuuming of a large table from delaying vacuuming of smaller tables.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Automatically re-plan cached queries when table
|
|
definitions change or statistics are updated (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
Previously PL/pgSQL functions that referenced temporary tables
|
|
would fail if the temporary table was dropped and recreated
|
|
between function invocations, unless <literal>EXECUTE</> was
|
|
used. This improvement fixes that problem and many related issues.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a <varname>temp_tablespaces</varname> parameter to control
|
|
the tablespaces for temporary tables and files (Jaime Casanova,
|
|
Albert Cervera, Bernd Helmle)
|
|
</para>
|
|
|
|
<para>
|
|
This parameter defines a list of tablespaces to be used. This
|
|
enables spreading the I/O load across multiple tablespaces. A random
|
|
tablespace is chosen each time a temporary object is created.
|
|
Temporary files are no longer stored in per-database
|
|
<filename>pgsql_tmp/</filename> directories but in per-tablespace
|
|
directories.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Place temporary tables' TOAST tables in special schemas named
|
|
<literal>pg_toast_temp_<replaceable>nnn</></literal> (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This allows low-level code to recognize these tables as temporary,
|
|
which enables various optimizations such as not WAL-logging changes
|
|
and using local rather than shared buffers for access. This also
|
|
fixes a bug wherein backends unexpectedly held open file references
|
|
to temporary TOAST tables.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix problem that a constant flow of new connection requests could
|
|
indefinitely delay the postmaster from completing a shutdown or
|
|
a crash restart (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Guard against a very-low-probability data loss scenario by preventing
|
|
re-use of a deleted table's relfilenode until after the next
|
|
checkpoint (Heikki)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <command>CREATE CONSTRAINT TRIGGER</>
|
|
to convert old-style foreign key trigger definitions into regular
|
|
foreign key constraints (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This will ease porting of foreign key constraints carried forward from
|
|
pre-7.3 databases, if they were never converted using
|
|
<filename>contrib/adddepend</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <literal>DEFAULT NULL</> to override inherited defaults (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
<literal>DEFAULT NULL</> was formerly considered a noise phrase, but it
|
|
should (and now does) override non-null defaults that would otherwise
|
|
be inherited from a parent table or domain.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add new encodings EUC_JIS_2004 and SHIFT_JIS_2004 (Tatsuo)
|
|
</para>
|
|
|
|
<para>
|
|
These new encodings can be converted to and from UTF-8.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Change server startup log message from <quote>database system is
|
|
ready</quote> to <quote>database system is ready to accept
|
|
connections</quote>, and adjust its timing
|
|
</para>
|
|
|
|
<para>
|
|
The message now appears only when the postmaster is really ready
|
|
to accept connections.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Monitoring</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <varname>log_autovacuum_min_duration</varname> parameter to
|
|
support configurable logging of autovacuum activity (Simon, Alvaro)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <varname>log_lock_waits</varname> parameter to log lock waiting
|
|
(Simon)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <varname>log_temp_files</varname> parameter to log temporary
|
|
file usage (Bill Moran)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <varname>log_checkpoints</varname> parameter to improve logging
|
|
of checkpoints (Greg Smith, Heikki)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<varname>log_line_prefix</varname> now supports
|
|
<literal>%s</literal> and <literal>%c</literal> escapes in all
|
|
processes (Andrew)
|
|
</para>
|
|
|
|
<para>
|
|
Previously these escapes worked only for user sessions, not for
|
|
background database processes.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <varname>log_restartpoints</varname> to control logging of
|
|
point-in-time recovery restart points (Simon)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Last transaction end time is now logged at end of recovery and at
|
|
each logged restart point (Simon)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Autovacuum now reports its activity start time in
|
|
<literal>pg_stat_activity</literal> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow server log output in comma-separated value (CSV) format (Arul
|
|
Shaji, Greg Smith, Andrew Dunstan)
|
|
</para>
|
|
|
|
<para>
|
|
CSV-format log files can easily be loaded into a database table for
|
|
subsequent analysis.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Use PostgreSQL-supplied timezone support for formatting timestamps
|
|
displayed in the server log (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This avoids Windows-specific problems with localized time zone
|
|
names that are in the wrong encoding. There is a new
|
|
<varname>log_timezone</> parameter that controls the timezone
|
|
used in log messages, independently of the client-visible
|
|
<varname>timezone</> parameter.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
New system view <literal>pg_stat_bgwriter</literal> displays
|
|
statistics about background writer activity (Magnus)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add new columns for database-wide tuple statistics to
|
|
<literal>pg_stat_database</literal> (Magnus)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add an <literal>xact_start</literal> (transaction start time) column to
|
|
<literal>pg_stat_activity</literal> (Neil)
|
|
</para>
|
|
|
|
<para>
|
|
This makes it easier to identify long-running transactions.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <literal>n_live_tuples</> and <literal>n_dead_tuples</> columns
|
|
to <literal>pg_stat_all_tables</literal> and related views (Glen
|
|
Parker)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Merge <varname>stats_block_level</> and <varname>stats_row_level</>
|
|
parameters into a single parameter <varname>track_counts</>, which
|
|
controls all messages sent to the statistics collector process
|
|
(Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Rename <varname>stats_command_string</varname> parameter to
|
|
<varname>track_activities</varname> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix statistical counting of live and dead tuples to recognize that
|
|
committed and aborted transactions have different effects (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Authentication</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support Security Service Provider Interface (<acronym>SSPI</>) for
|
|
authentication on Windows (Magnus)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support GSSAPI authentication (Henry Hotz, Magnus)
|
|
</para>
|
|
|
|
<para>
|
|
This should be preferred to native Kerberos authentication because
|
|
GSSAPI is an industry standard.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support a global SSL configuration file (Victor Wagner)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <varname>ssl_ciphers</> parameter to control accepted SSL ciphers
|
|
(Victor Wagner)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a Kerberos realm parameter, <varname>krb_realm</> (Magnus)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Write-Ahead Log (<acronym>WAL</>) and Continuous Archiving</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Change the timestamps recorded in transaction WAL records from
|
|
time_t to TimestampTz representation (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This provides sub-second resolution in WAL, which can be useful for
|
|
point-in-time recovery.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Reduce WAL disk space needed by warm standby servers (Simon)
|
|
</para>
|
|
|
|
<para>
|
|
This change allows a warm standby server to pass the name of the earliest
|
|
still-needed WAL file to the recovery script, allowing automatic removal
|
|
of no-longer-needed WAL files. This is done using <literal>%r</> in
|
|
the <varname>restore_command</varname> parameter of
|
|
<filename>recovery.conf</filename>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
New boolean configuration parameter, <varname>archive_mode</>,
|
|
controls archiving (Simon)
|
|
</para>
|
|
|
|
<para>
|
|
Previously setting <varname>archive_command</> to an empty string
|
|
turned off archiving. Now <varname>archive_mode</> turns archiving
|
|
on and off, independently of <varname>archive_command</>. This is
|
|
useful for stopping archiving temporarily.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Queries</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Full text search is integrated into the core database
|
|
system (Teodor, Oleg)
|
|
</para>
|
|
|
|
<para>
|
|
Text search has been improved, moved into the core code, and is now
|
|
installed by default. <filename>contrib/tsearch2</> now contains
|
|
a compatibility interface.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add control over whether <literal>NULL</>s sort first or last (Teodor, Tom)
|
|
</para>
|
|
|
|
<para>
|
|
The syntax is <literal>ORDER BY ... NULLS FIRST/LAST</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow per-column ascending/descending (<literal>ASC</>/<literal>DESC</>)
|
|
ordering options for indexes (Teodor, Tom)
|
|
</para>
|
|
|
|
<para>
|
|
Previously a query using <literal>ORDER BY</> with mixed
|
|
<literal>ASC</>/<literal>DESC</> specifiers could not fully use
|
|
an index. Now an index can be fully used in such cases if the
|
|
index was created with matching
|
|
<literal>ASC</>/<literal>DESC</> specifications.
|
|
<literal>NULL</> sort order within an index can be controlled, too.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <literal>col IS NULL</> to use an index (Teodor)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Updatable cursors (Arul Shaji, Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This eliminates the need to reference a primary key to
|
|
<command>UPDATE</> or <command>DELETE</> rows returned by a cursor.
|
|
The syntax is <literal>UPDATE/DELETE WHERE CURRENT OF</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <literal>FOR UPDATE</literal> in cursors (Arul Shaji, Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Create a general mechanism that supports casts to and from the
|
|
standard string types (<type>TEXT</type>, <type>VARCHAR</type>,
|
|
<type>CHAR</type>) for <emphasis>every</emphasis> datatype, by
|
|
invoking the datatype's I/O functions (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, such casts were available only for types that had
|
|
specialized function(s) for the purpose.
|
|
These new casts are assignment-only in the to-string direction,
|
|
explicit-only in the other direction, and therefore should create no
|
|
surprising behavior.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <literal>UNION</> and related constructs to return a domain
|
|
type, when all inputs are of that domain type (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
Formerly, the output would be considered to be of the domain's base
|
|
type.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow limited hashing when using two different data types (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This allows hash joins, hash indexes, hashed subplans, and hash
|
|
aggregation to be used in situations involving cross-data-type
|
|
comparisons, if the data types have compatible hash functions.
|
|
Currently, cross-data-type hashing support exists for
|
|
<type>smallint</type>/<type>integer</type>/<type>bigint</type>,
|
|
and for <type>float4</type>/<type>float8</type>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve optimizer logic for detecting when variables are equal
|
|
in a <literal>WHERE</> clause (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This allows mergejoins to work with descending sort orders, and
|
|
improves recognition of redundant sort columns.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve performance when planning large inheritance trees in
|
|
cases where most tables are excluded by constraints (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Object Manipulation</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
Arrays of composite types (David Fetter, Andrew, Tom)
|
|
</para>
|
|
|
|
<para>
|
|
In addition to arrays of explicitly-declared composite types,
|
|
arrays of the rowtypes of regular tables and views are now
|
|
supported, except for rowtypes of system catalogs, sequences, and TOAST
|
|
tables.
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Server configuration parameters can now be set on a per-function
|
|
basis (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
For example, functions can now set their own
|
|
<varname>search_path</> to prevent unexpected behavior if a
|
|
different <varname>search_path</> exists at run-time. Security
|
|
definer functions should set <varname>search_path</varname> to
|
|
avoid security loopholes.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<command>CREATE/ALTER FUNCTION</command> now supports
|
|
<literal>COST</literal> and <literal>ROWS</literal> options (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
<literal>COST</literal> allows specification of the cost of a
|
|
function call. <literal>ROWS</literal> allows specification of
|
|
the average number or rows returned by a set-returning function.
|
|
These values are used by the optimizer in choosing the best plan.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Implement <command>CREATE TABLE LIKE ... INCLUDING
|
|
INDEXES</command> (Trevor Hardcastle, Nikhil Sontakke, Neil)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <command>CREATE INDEX CONCURRENTLY</command> to ignore
|
|
transactions in other databases (Simon)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <command>ALTER VIEW ... RENAME TO</command> and <command>ALTER
|
|
SEQUENCE ... RENAME TO</command> (David Fetter, Neil)
|
|
</para>
|
|
|
|
<para>
|
|
Previously this could only be done via <command>ALTER TABLE ...
|
|
RENAME TO</command>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <command>CREATE/DROP/RENAME DATABASE</> wait briefly for
|
|
conflicting backends to exit before failing (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This increases the likelihood that these commands will succeed.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow triggers and rules to be deactivated in groups using a
|
|
configuration parameter, for replication purposes (Jan)
|
|
</para>
|
|
|
|
<para>
|
|
This allows replication systems to disable triggers and rewrite
|
|
rules as a group without modifying the system catalogs directly.
|
|
The behavior is controlled by <command>ALTER TABLE</> and a new
|
|
parameter <varname>session_replication_role</varname>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
User-defined types can now have type modifiers (Teodor, Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This allows a user-defined type to take a modifier, like
|
|
<type>ssnum(7)</>. Previously only built-in
|
|
data types could have modifiers.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Utility Commands</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Non-superuser database owners now are able to add trusted procedural
|
|
languages to their databases by default (Jeremy Drake)
|
|
</para>
|
|
|
|
<para>
|
|
While this is reasonably safe, some administrators might wish to
|
|
revoke the privilege. It is controlled by
|
|
<structname>pg_pltemplate</>.<structfield>tmpldbacreate</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow a session's current parameter setting to be used as the
|
|
default for future sessions (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This is done with <literal>SET ... FROM CURRENT</literal> in
|
|
<command>CREATE/ALTER FUNCTION</command>, <command>ALTER
|
|
DATABASE</command>, or <command>ALTER ROLE</command>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Implement new commands <command>DISCARD ALL</command>,
|
|
<command>DISCARD PLANS</command>, <command>DISCARD
|
|
TEMPORARY</command>, <command>CLOSE ALL</command>, and
|
|
<command>DEALLOCATE ALL</command> (Marko Kreen, Neil)
|
|
</para>
|
|
|
|
<para>
|
|
These commands simplify resetting a database session to its initial
|
|
state, and are particularly useful for connection-pooling software.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <command>CLUSTER</command> MVCC-safe (Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
Formerly, <command>CLUSTER</command> would discard all tuples
|
|
that were committed dead, even if there were still transactions
|
|
that should be able to see them under MVCC visibility rules.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add new <command>CLUSTER</command> syntax: <literal>CLUSTER
|
|
<replaceable>table</> USING <replaceable>index</></literal>
|
|
(Holger Schurig)
|
|
</para>
|
|
|
|
<para>
|
|
The old <command>CLUSTER</command> syntax is still supported, but
|
|
the new form is considered more logical.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <command>EXPLAIN</command> so it can show complex plans
|
|
more accurately (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
References to subplan outputs are now always shown correctly,
|
|
instead of using <literal>?column<replaceable>N</>?</literal>
|
|
for complicated cases.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Limit the amount of information reported when a user is dropped
|
|
(Alvaro)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, dropping (or attempting to drop) a user who owned many
|
|
objects could result in large <literal>NOTICE</literal> or
|
|
<literal>ERROR</literal> messages listing all these objects; this
|
|
caused problems for some client applications. The length of the
|
|
message is now limited, although a full list is still sent to the
|
|
server log.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Data Types</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support for the SQL/XML standard, including new operators and an
|
|
<type>XML</type> data type (Nikolay Samokhvalov, Pavel Stehule, Peter)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Enumerated data types (<type>ENUM</type>) (Tom Dunstan)
|
|
</para>
|
|
|
|
<para>
|
|
This feature provides convenient support for fields that have a
|
|
small, fixed set of allowed values. An example of creating an
|
|
<literal>ENUM</> type is
|
|
<literal>CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy')</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Universally Unique Identifier (<type>UUID</>) data type (Gevik
|
|
Babakhani, Neil)
|
|
</para>
|
|
|
|
<para>
|
|
This closely matches <acronym>RFC</> 4122.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Widen the <type>MONEY</type> data type to 64 bits (D'Arcy Cain)
|
|
</para>
|
|
|
|
<para>
|
|
This greatly increases the range of supported <type>MONEY</>
|
|
values.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <type>float4</type>/<type>float8</type> to handle
|
|
<literal>Infinity</> and <literal>NAN</> (Not A Number)
|
|
consistently (Bruce)
|
|
</para>
|
|
|
|
<para>
|
|
The code formerly was not consistent about distinguishing
|
|
<literal>Infinity</> from overflow conditions.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow leading and trailing whitespace during input of
|
|
<type>boolean</type> values (Neil)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent <command>COPY</> from using digits and lowercase letters as
|
|
delimiters (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Functions</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add new regular expression functions
|
|
<function>regexp_matches()</function>,
|
|
<function>regexp_split_to_array()</function>, and
|
|
<function>regexp_split_to_table()</function> (Jeremy Drake, Neil)
|
|
</para>
|
|
|
|
<para>
|
|
These functions provide extraction of regular expression
|
|
subexpressions and allow splitting a string using a POSIX regular
|
|
expression.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <function>lo_truncate()</function> for large object truncation
|
|
(Kris Jurka)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Implement <function>width_bucket()</function> for the <type>float8</>
|
|
data type (Neil)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <function>pg_stat_clear_snapshot()</function> to discard
|
|
statistics snapshots collected during the current transaction
|
|
(Tom)
|
|
</para>
|
|
|
|
<para>
|
|
The first request for statistics in a transaction takes a statistics
|
|
snapshot that does not change during the transaction. This function
|
|
allows the snapshot to be discarded and a new snapshot loaded during
|
|
the next statistics query. This is particularly useful for PL/pgSQL
|
|
functions, which are confined to a single transaction.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <literal>isodow</> option to <function>EXTRACT()</> and
|
|
<function>date_part()</> (Bruce)
|
|
</para>
|
|
|
|
<para>
|
|
This returns the day of the week, with Sunday as seven.
|
|
(<literal>dow</> returns Sunday as zero.)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <literal>ID</> (ISO day of week) and <literal>IDDD</> (ISO
|
|
day of year) format codes for <function>to_char()</>,
|
|
<function>to_date()</>, and <function>to_timestamp()</> (Brendan
|
|
Jurd)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <function>to_timestamp()</> and <function>to_date()</>
|
|
assume <literal>TM</literal> (trim) option for potentially
|
|
variable-width fields (Bruce)
|
|
</para>
|
|
|
|
<para>
|
|
This matches <productname>Oracle</>'s behavior.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix off-by-one conversion error in
|
|
<function>to_date()</function>/<function>to_timestamp()</function>
|
|
<literal>D</> (non-ISO day of week) fields (Bruce)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <function>setseed()</function> return void, rather than a
|
|
useless integer value (Neil)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a hash function for <type>NUMERIC</type> (Neil)
|
|
</para>
|
|
|
|
<para>
|
|
This allows hash indexes and hash-based plans to be used with
|
|
<type>NUMERIC</type> columns.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve efficiency of
|
|
<literal>LIKE</literal>/<literal>ILIKE</literal>, especially for
|
|
multi-byte character sets like UTF-8 (Andrew, Itagaki Takahiro)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <function>currtid()</function> functions require
|
|
<literal>SELECT</literal> privileges on the target table (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add several <function>txid_*()</function> functions to query
|
|
active transaction IDs (Jan)
|
|
</para>
|
|
|
|
<para>
|
|
This is useful for various replication solutions.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>PL/pgSQL Server-Side Language</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add scrollable cursor support, including directional control in
|
|
<command>FETCH</command> (Pavel Stehule)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <literal>IN</literal> as an alternative to
|
|
<literal>FROM</literal> in PL/pgSQL's <command>FETCH</command>
|
|
statement, for consistency with the backend's
|
|
<command>FETCH</command> command (Pavel Stehule)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <command>MOVE</command> to PL/pgSQL (Magnus, Pavel Stehule,
|
|
Neil)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Implement <command>RETURN QUERY</command> (Pavel Stehule, Neil)
|
|
</para>
|
|
|
|
<para>
|
|
This adds convenient syntax for PL/pgSQL set-returning functions
|
|
that want to return the result of a query. <command>RETURN QUERY</>
|
|
is easier and more efficient than a loop
|
|
around <command>RETURN NEXT</command>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow function parameter names to be qualified with the
|
|
function's name (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
For example, <literal>myfunc.myvar</>. This is particularly
|
|
useful for specifying variables in a query where the variable
|
|
name might match a column name.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make qualification of variables with block labels work properly (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
Formerly, outer-level block labels could unexpectedly interfere with
|
|
recognition of inner-level record or row references.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Tighten requirements for <literal>FOR</literal> loop
|
|
<literal>STEP</> values (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
Prevent non-positive <literal>STEP</> values, and handle
|
|
loop overflows.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve accuracy when reporting syntax error locations (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Other Server-Side Languages</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow type-name arguments to PL/Perl
|
|
<function>spi_prepare()</function> to be data type aliases in
|
|
addition to names found in <literal>pg_type</literal> (Andrew)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow type-name arguments to PL/Python
|
|
<function>plpy.prepare()</function> to be data type aliases in
|
|
addition to names found in <literal>pg_type</literal> (Andrew)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow type-name arguments to PL/Tcl <function>spi_prepare</> to
|
|
be data type aliases in addition to names found in
|
|
<literal>pg_type</literal> (Andrew)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Enable PL/PythonU to compile on Python 2.5 (Marko Kreen)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support a true PL/Python boolean type in compatible Python versions
|
|
(Python 2.3 and later) (Marko Kreen)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix PL/Tcl problems with thread-enabled <filename>libtcl</> spawning
|
|
multiple threads within the backend (Steve Marshall, Paul Bayer,
|
|
Doug Knight)
|
|
</para>
|
|
|
|
<para>
|
|
This caused all sorts of unpleasantness.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title><link linkend="APP-PSQL"><application>psql</></link></title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
List disabled triggers separately in <literal>\d</literal> output
|
|
(Brendan Jurd)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
In <literal>\d</literal> patterns, always match <literal>$</literal>
|
|
literally (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Show aggregate return types in <literal>\da</literal> output
|
|
(Greg Sabino Mullane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add the function's volatility status to the output of
|
|
<literal>\df+</literal> (Neil)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <literal>\prompt</literal> capability (Chad Wagner)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <literal>\pset</literal>, <literal>\t</literal>, and
|
|
<literal>\x</literal> to specify <literal>on</> or <literal>off</>,
|
|
rather than just toggling (Chad Wagner)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <literal>\sleep</> capability (Jan)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Enable <literal>\timing</> output for <literal>\copy</> (Andrew)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve <literal>\timing</literal> resolution on Windows
|
|
(Itagaki Takahiro)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Flush <literal>\o</> output after each backslash command (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Correctly detect and report errors while reading a <literal>-f</>
|
|
input file (Peter)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Remove <literal>-u</> option (this option has long been deprecated)
|
|
(Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title><link linkend="APP-PGDUMP"><application>pg_dump</></link></title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <literal>--tablespaces-only</> and <literal>--roles-only</>
|
|
options to <application>pg_dumpall</application> (Dave Page)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add an output file option to
|
|
<application>pg_dumpall</application> (Dave Page)
|
|
</para>
|
|
|
|
<para>
|
|
This is primarily useful on Windows, where output redirection of
|
|
child <application>pg_dump</application> processes does not work.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <application>pg_dumpall</> to accept an initial-connection
|
|
database name rather than the default
|
|
<literal>template1</literal> (Dave Page)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
In <literal>-n</> and <literal>-t</> switches, always match
|
|
<literal>$</literal> literally (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve performance when a database has thousands of objects (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Remove <literal>-u</> option (this option has long been deprecated)
|
|
(Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Other Client Applications</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
In <application>initdb</>, allow the location of the
|
|
<filename>pg_xlog</filename> directory to be specified
|
|
(Euler Taveira de Oliveira)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Enable server core dump generation in <application>pg_regress</>
|
|
on supported operating systems (Andrew)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a <literal>-t</> (timeout) parameter to <application>pg_ctl</>
|
|
(Bruce)
|
|
</para>
|
|
|
|
<para>
|
|
This controls how long <application>pg_ctl</> will wait when waiting
|
|
for server startup or shutdown. Formerly the timeout was hard-wired
|
|
as 60 seconds.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a <application>pg_ctl</> option to control generation
|
|
of server core dumps (Andrew)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow Control-C to cancel <application>clusterdb</>,
|
|
<application>reindexdb</>, and <application>vacuumdb</> (Itagaki
|
|
Takahiro, Magnus)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Suppress command tag output for <application>createdb</>,
|
|
<application>createuser</>, <application>dropdb</>, and
|
|
<application>dropuser</> (Peter)
|
|
</para>
|
|
|
|
<para>
|
|
The <literal>--quiet</> option is ignored and will be removed in 8.4.
|
|
Progress messages when acting on all databases now go to stdout
|
|
instead of stderr because they are not actually errors.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title><link linkend="libpq"><application>libpq</></link></title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Interpret the <literal>dbName</> parameter of
|
|
<function>PQsetdbLogin()</> as a <literal>conninfo</> string if
|
|
it contains an equals sign (Andrew)
|
|
</para>
|
|
|
|
<para>
|
|
This allows use of <literal>conninfo</> strings in client
|
|
programs that still use <literal>PQsetdbLogin()</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support a global <acronym>SSL</> configuration file (Victor
|
|
Wagner)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add environment variable <varname>PGSSLKEY</> to control
|
|
<acronym>SSL</> hardware keys (Victor Wagner)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <function>lo_truncate()</function> for large object
|
|
truncation (Kris Jurka)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <function>PQconnectionNeedsPassword()</function> that returns
|
|
true if the server required a password but none was supplied
|
|
(Joe Conway, Tom)
|
|
</para>
|
|
|
|
<para>
|
|
If this returns true after a failed connection attempt, a client
|
|
application should prompt the user for a password. In the past
|
|
applications have had to check for a specific error message string to
|
|
decide whether a password is needed; that approach is now
|
|
deprecated.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <function>PQconnectionUsedPassword()</function> that returns
|
|
true if the supplied password was actually used
|
|
(Joe Conway, Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This is useful in some security contexts where it is important
|
|
to know whether a user-supplied password is actually valid.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title><link linkend="ecpg"><application>ecpg</></link></title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Use V3 frontend/backend protocol (Michael)
|
|
</para>
|
|
|
|
<para>
|
|
This adds support for server-side prepared statements.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Use native threads, instead of pthreads, on Windows (Magnus)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve thread-safety of ecpglib (Itagaki Takahiro)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make the ecpg libraries export only necessary API symbols (Michael)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title><application>Windows</> Port</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow the whole <productname>PostgreSQL</> distribution to be compiled
|
|
with <productname>Microsoft Visual C++</> (Magnus and others)
|
|
</para>
|
|
|
|
<para>
|
|
This allows Windows-based developers to use familiar development
|
|
and debugging tools.
|
|
Windows executables made with Visual C++ might also have better
|
|
stability and performance than those made with other tool sets.
|
|
The client-only Visual C++ build scripts have been removed.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Drastically reduce postmaster's memory usage when it has many child
|
|
processes (Magnus)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow regression tests to be started by an administrative
|
|
user (Magnus)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add native shared memory implementation (Magnus)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Server Programming Interface (<acronym>SPI</>)</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add cursor-related functionality in SPI (Pavel Stehule)
|
|
</para>
|
|
|
|
<para>
|
|
Allow access to the cursor-related planning options, and add
|
|
<command>FETCH</>/<command>MOVE</> routines.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow execution of cursor commands through
|
|
<function>SPI_execute</function> (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
The macro <literal>SPI_ERROR_CURSOR</> still exists but will
|
|
never be returned.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
SPI plan pointers are now declared as <literal>SPIPlanPtr</> instead of
|
|
<literal>void *</> (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This does not break application code, but switching is
|
|
recommended to help catch simple programming mistakes.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Build Options</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <application>configure</> option <literal>--enable-profiling</>
|
|
to enable code profiling (works only with <application>gcc</>)
|
|
(Korry Douglas and Nikhil Sontakke)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <application>configure</> option <literal>--with-system-tzdata</>
|
|
to use the operating system's time zone database (Peter)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <acronym>PGXS</> so extensions can be built against PostgreSQL
|
|
installations whose <application>pg_config</> program does not
|
|
appear first in the <varname>PATH</> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support <command>gmake draft</command> when building the
|
|
<acronym>SGML</> documentation (Bruce)
|
|
</para>
|
|
|
|
<para>
|
|
Unless <literal>draft</> is used, the documentation build will
|
|
now be repeated if necessary to ensure the index is up-to-date.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Source Code</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Rename macro <literal>DLLIMPORT</> to <literal>PGDLLIMPORT</> to
|
|
avoid conflicting with third party includes (like Tcl) that
|
|
define <literal>DLLIMPORT</> (Magnus)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Create <quote>operator families</quote> to improve planning of
|
|
queries involving cross-data-type comparisons (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update GIN <function>extractQuery()</> API to allow signalling
|
|
that nothing can satisfy the query (Teodor)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Move <literal>NAMEDATALEN</> definition from
|
|
<filename>postgres_ext.h</> to <filename>pg_config_manual.h</>
|
|
(Peter)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Provide <function>strlcpy()</function> and
|
|
<function>strlcat()</function> on all platforms, and replace
|
|
error-prone uses of <function>strncpy()</function>,
|
|
<function>strncat()</function>, etc (Peter)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Create hooks to let an external plugin monitor (or even replace) the
|
|
planner and create plans for hypothetical situations (Gurjeet
|
|
Singh, Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Create a function variable <literal>join_search_hook</> to let plugins
|
|
override the join search order portion of the planner (Julius
|
|
Stroffek)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <function>tas()</> support for Renesas' M32R processor
|
|
(Kazuhiro Inaoka)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<function>quote_identifier()</function> and
|
|
<application>pg_dump</application> no longer quote keywords that are
|
|
unreserved according to the grammar (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Change the on-disk representation of the <type>NUMERIC</type>
|
|
data type so that the <structfield>sign_dscale</> word comes
|
|
before the weight (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Use <acronym>SYSV</> semaphores rather than POSIX on Darwin
|
|
>= 6.0, i.e., OS X 10.2 and up (Chris Marcellino)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link linkend="acronyms">acronym</link> and <link
|
|
linkend="creating-cluster-nfs">NFS</link> documentation
|
|
sections (Bruce)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
"Postgres" is now documented as an accepted alias for
|
|
"PostgreSQL" (Peter)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add documentation about preventing database server spoofing when
|
|
the server is down (Bruce)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Contrib</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Move <filename>contrib</> <filename>README</> content into the
|
|
main <productname>PostgreSQL</> documentation (Albert Cervera i
|
|
Areny)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <filename>contrib/pageinspect</filename> module for low-level
|
|
page inspection (Simon, Heikki)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <filename>contrib/pg_standby</filename> module for controlling
|
|
warm standby operation (Simon)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <filename>contrib/uuid-ossp</filename> module for generating
|
|
<type>UUID</> values using the OSSP UUID library (Peter)
|
|
</para>
|
|
|
|
<para>
|
|
Use <application>configure</>
|
|
<literal>--with-ossp-uuid</literal> to activate. This takes
|
|
advantage of the new <type>UUID</type> builtin type.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <filename>contrib/dict_int</filename>,
|
|
<filename>contrib/dict_xsyn</filename>, and
|
|
<filename>contrib/test_parser</filename> modules to provide
|
|
sample add-on text search dictionary templates and parsers
|
|
(Sergey Karpov)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <application>contrib/pgbench</> to set the fillfactor (Pavan
|
|
Deolasee)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add timestamps to <application>contrib/pgbench</> <literal>-l</>
|
|
(Greg Smith)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add usage count statistics to
|
|
<filename>contrib/pgbuffercache</filename> (Greg Smith)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add GIN support for <filename>contrib/hstore</> (Teodor)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add GIN support for <filename>contrib/pg_trgm</> (Guillaume Smet, Teodor)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update OS/X startup scripts in
|
|
<filename>contrib/start-scripts</filename> (Mark Cotner, David
|
|
Fetter)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Restrict <function>pgrowlocks()</function> and
|
|
<function>dblink_get_pkey()</function> to users who have
|
|
<literal>SELECT</literal> privilege on the target table (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Restrict <filename>contrib/pgstattuple</filename> functions to
|
|
superusers (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<filename>contrib/xml2</filename> is deprecated and planned for
|
|
removal in 8.4 (Peter)
|
|
</para>
|
|
|
|
<para>
|
|
The new XML support in core PostgreSQL supersedes this module.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
</sect2>
|
|
</sect1>
|