mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-10-03 02:06:52 +02:00
dad5f8a3d5
This includes code comments and documentation. No backpatch as this is cosmetic even if there are documentation changes which are user-facing. Author: Daniel Gustafsson Discussion: https://postgr.es/m/BB89928E-2BC7-489E-A5E4-6D204B3954CF@yesql.se
7078 lines
194 KiB
Plaintext
7078 lines
194 KiB
Plaintext
<!-- doc/src/sgml/release-8.2.sgml -->
|
|
<!-- See header comment in release.sgml about typical markup -->
|
|
|
|
<sect1 id="release-8-2-23">
|
|
<title>Release 8.2.23</title>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2011-12-05</para>
|
|
</formalpara>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 8.2.22.
|
|
For information about new features in the 8.2 major release, see
|
|
<xref linkend="release-8-2"/>.
|
|
</para>
|
|
|
|
<para>
|
|
This is expected to be the last <productname>PostgreSQL</productname> release
|
|
in the 8.2.X series. Users are encouraged to update to a newer
|
|
release branch soon.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 8.2.23</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 8.2.X.
|
|
</para>
|
|
|
|
<para>
|
|
However, a longstanding error was discovered in the definition of the
|
|
<literal>information_schema.referential_constraints</literal> 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.2.14,
|
|
see <xref linkend="release-8-2-14"/>.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix bugs in <literal>information_schema.referential_constraints</literal> 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</application>,
|
|
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</literal> schema then re-create it by sourcing
|
|
<filename><replaceable>SHAREDIR</replaceable>/information_schema.sql</filename>.
|
|
(Run <literal>pg_config --sharedir</literal> if you're uncertain where
|
|
<replaceable>SHAREDIR</replaceable> 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</literal> or <literal>INSERT INTO dest SELECT * FROM src</literal>
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
If a table has been modified by <command>ALTER TABLE ADD COLUMN</command>,
|
|
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</quote>, where the cited
|
|
toast table would always belong to a system catalog.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve locale support in <type>money</type> type's input and output
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Aside from not supporting all standard
|
|
<link linkend="guc-lc-monetary"><varname>lc_monetary</varname></link>
|
|
formatting options, the input and output functions were inconsistent,
|
|
meaning there were locales in which dumped <type>money</type> values could
|
|
not be re-read.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Don't let <link
|
|
linkend="guc-transform-null-equals"><varname>transform_null_equals</varname></link>
|
|
affect <literal>CASE foo WHEN NULL ...</literal> constructs
|
|
(Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
<varname>transform_null_equals</varname> is only supposed to affect
|
|
<literal>foo = NULL</literal> expressions written directly by the user, not
|
|
equality checks generated internally by this form of <literal>CASE</literal>.
|
|
</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</literal> trigger and the
|
|
<literal>CHECK</literal> trigger as one event. The <literal>ON UPDATE</literal>
|
|
trigger must execute first, else the <literal>CHECK</literal> 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</quote>. 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>
|
|
Preserve blank lines within commands in <application>psql</application>'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>
|
|
Use the preferred version of <application>xsubpp</application> to build PL/Perl,
|
|
not necessarily the operating system's main copy
|
|
(David Wheeler and Alex Hunsaker)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Honor query cancel interrupts promptly in <function>pgstatindex()</function>
|
|
(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</quote> to <literal>CST6</literal>, not
|
|
<literal>CST6CDT</literal>, because DST is generally not observed anywhere in
|
|
Central America.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update time zone data files to <application>tzdata</application> 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-2-22">
|
|
<title>Release 8.2.22</title>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2011-09-26</para>
|
|
</formalpara>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 8.2.21.
|
|
For information about new features in the 8.2 major release, see
|
|
<xref linkend="release-8-2"/>.
|
|
</para>
|
|
|
|
<para>
|
|
The <productname>PostgreSQL</productname> community will stop releasing updates
|
|
for the 8.2.X release series in December 2011.
|
|
Users are encouraged to update to a newer release branch soon.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 8.2.22</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 8.2.X.
|
|
However, if you are upgrading from a version earlier than 8.2.14,
|
|
see <xref linkend="release-8-2-14"/>.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<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>
|
|
Avoid possibly accessing off the end of memory in <command>ANALYZE</command>
|
|
(Noah Misch)
|
|
</para>
|
|
|
|
<para>
|
|
This fixes a very-low-probability server crash scenario.
|
|
</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 ...</quote> 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</literal> in a view (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Disallow <literal>SELECT FOR UPDATE/SHARE</literal> 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 portability bugs in use of credentials control messages for
|
|
<quote>peer</quote> authentication (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix typo in <function>pg_srand48</function> 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</function>),
|
|
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</literal> and
|
|
<literal>OFFSET</literal> values exceeds 2^63 (Heikki Linnakangas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add overflow checks to <type>int4</type> and <type>int8</type> versions of
|
|
<function>generate_series()</function> (Robert Haas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix trailing-zero removal in <function>to_char()</function> (Marti Raudsepp)
|
|
</para>
|
|
|
|
<para>
|
|
In a format with <literal>FM</literal> 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()</function> to avoid overflow for inputs close to
|
|
2^63 (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>psql</application>'s counting of script file line numbers during
|
|
<literal>COPY</literal> from a different file (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>pg_restore</application>'s direct-to-database mode for
|
|
<varname>standard_conforming_strings</varname> (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
<application>pg_restore</application> could emit incorrect commands when restoring
|
|
directly to a database server from an archive file that had been made
|
|
with <varname>standard_conforming_strings</varname> set to <literal>on</literal>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix write-past-buffer-end and memory leak in <application>libpq</application>'s
|
|
LDAP service lookup code (Albe Laurenz)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
In <application>libpq</application>, 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()</function>
|
|
failure during SSL connection startup is now saner.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <application>ecpglib</application> write <type>double</type> values with 15 digits
|
|
precision (Akira Kurosawa)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Apply upstream fix for blowfish signed-character bug (CVE-2011-2483)
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
<filename>contrib/pg_crypto</filename>'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</filename> (Heikki Linnakangas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <function>pgstatindex()</function> 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</application> release 2011i
|
|
for DST law changes in Canada, Egypt, Russia, Samoa, and South Sudan.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-8-2-21">
|
|
<title>Release 8.2.21</title>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2011-04-18</para>
|
|
</formalpara>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 8.2.20.
|
|
For information about new features in the 8.2 major release, see
|
|
<xref linkend="release-8-2"/>.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 8.2.21</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 8.2.X.
|
|
However, if you are upgrading from a version earlier than 8.2.14,
|
|
see <xref linkend="release-8-2-14"/>.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<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</literal> 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</quote> failures while trying to
|
|
do <literal>UPDATE RETURNING ctid</literal>. 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</command> when there are pending deferred trigger
|
|
events for the table (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Formerly the <command>DROP</command> would go through, leading to
|
|
<quote>could not open relation with OID nnn</quote> 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</application> 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 path separator used by <application>pg_regress</application> on Cygwin
|
|
(Andrew Dunstan)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update time zone data files to <application>tzdata</application> 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-2-20">
|
|
<title>Release 8.2.20</title>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2011-01-31</para>
|
|
</formalpara>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 8.2.19.
|
|
For information about new features in the 8.2 major release, see
|
|
<xref linkend="release-8-2"/>.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 8.2.20</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 8.2.X.
|
|
However, if you are upgrading from a version earlier than 8.2.14,
|
|
see <xref linkend="release-8-2-14"/>.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid failures when <command>EXPLAIN</command> tries to display a simple-form
|
|
<literal>CASE</literal> expression (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
If the <literal>CASE</literal>'s test expression was a constant, the planner
|
|
could simplify the <literal>CASE</literal> into a form that confused the
|
|
expression-display code, resulting in <quote>unexpected CASE WHEN
|
|
clause</quote> 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> type supports a wider range of dates than can be
|
|
represented by the <type>timestamp</type> types, but the planner assumed it
|
|
could always convert a date to timestamp with impunity.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>pg_restore</application>'s text output for large objects (BLOBs)
|
|
when <varname>standard_conforming_strings</varname> is on (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Although restoring directly to a database worked correctly, string
|
|
escaping was incorrect if <application>pg_restore</application> was asked for
|
|
SQL text output and <varname>standard_conforming_strings</varname> had been
|
|
enabled in the source database.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix erroneous parsing of <type>tsquery</type> 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</filename>'s
|
|
<type>query_int</type> type and <filename>contrib/ltree</filename>'s
|
|
<type>ltxtquery</type> type.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix buffer overrun in <filename>contrib/intarray</filename>'s input function
|
|
for the <type>query_int</type> 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</filename>'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</type> column.
|
|
If you have such an index, consider <command>REINDEX</command>ing it after
|
|
installing this update. (This is identical to the bug that was fixed in
|
|
<filename>contrib/cube</filename> in the previous update.)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-8-2-19">
|
|
<title>Release 8.2.19</title>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2010-12-16</para>
|
|
</formalpara>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 8.2.18.
|
|
For information about new features in the 8.2 major release, see
|
|
<xref linkend="release-8-2"/>.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 8.2.19</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 8.2.X.
|
|
However, if you are upgrading from a version earlier than 8.2.14,
|
|
see <xref linkend="release-8-2-14"/>.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Force the default
|
|
<link linkend="guc-wal-sync-method"><varname>wal_sync_method</varname></link>
|
|
to be <literal>fdatasync</literal> on Linux (Tom Lane, Marti Raudsepp)
|
|
</para>
|
|
|
|
<para>
|
|
The default on Linux has actually been <literal>fdatasync</literal> for many
|
|
years, but recent kernel changes caused <productname>PostgreSQL</productname> to
|
|
choose <literal>open_datasync</literal> instead. This choice did not result
|
|
in any performance improvement, and caused outright failures on
|
|
certain filesystems, notably <literal>ext4</literal> with the
|
|
<literal>data=journal</literal> 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</quote> 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>
|
|
Add support for detecting register-stack overrun on <literal>IA64</literal>
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
The <literal>IA64</literal> 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()</function> (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</quote> 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</command>'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.*))</literal>
|
|
would not automatically get dropped when its table was dropped.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Do not <quote>inline</quote> a SQL function with multiple <literal>OUT</literal>
|
|
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>, <literal>LIMIT</literal>,
|
|
<literal>FOR UPDATE</literal>, or <literal>WITH</literal> is attached to the
|
|
<literal>VALUES</literal> part of <literal>INSERT ... VALUES</literal> (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix constant-folding of <literal>COALESCE()</literal> 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>
|
|
Add print functionality for <structname>InhRelation</structname> nodes (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This avoids a failure when <varname>debug_print_parse</varname> 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</application>'s handling of <quote>simple</quote>
|
|
expressions to not fail in recursion or error-recovery cases (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>PL/Python</application>'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</filename>'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</type> column.
|
|
If you have such an index, consider <command>REINDEX</command>ing it after
|
|
installing this update.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Don't emit <quote>identifier will be truncated</quote> notices in
|
|
<filename>contrib/dblink</filename> except when creating new connections
|
|
(Itagaki Takahiro)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix potential coredump on missing public key in
|
|
<filename>contrib/pgcrypto</filename> (Marti Raudsepp)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix memory leak in <filename>contrib/xml2</filename>'s XPath query functions
|
|
(Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update time zone data files to <application>tzdata</application> 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-2-18">
|
|
<title>Release 8.2.18</title>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2010-10-04</para>
|
|
</formalpara>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 8.2.17.
|
|
For information about new features in the 8.2 major release, see
|
|
<xref linkend="release-8-2"/>.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 8.2.18</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 8.2.X.
|
|
However, if you are upgrading from a version earlier than 8.2.14,
|
|
see <xref linkend="release-8-2-14"/>.
|
|
</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</literal> 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()</function> 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>
|
|
Fix Windows shared-memory allocation code
|
|
(Tsutomu Yamada, Magnus Hagander)
|
|
</para>
|
|
|
|
<para>
|
|
This bug led to the often-reported <quote>could not reattach to shared
|
|
memory</quote> error message. This is a back-patch of a fix that was
|
|
applied to newer branches some time ago.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Treat exit code 128 (<literal>ERROR_WAIT_NO_CHILDREN</literal>) 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 possible duplicate scans of <literal>UNION ALL</literal> 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>
|
|
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>
|
|
Take care to fsync the contents of lockfiles (both
|
|
<filename>postmaster.pid</filename> 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>
|
|
Fix <varname>log_line_prefix</varname>'s <literal>%i</literal> 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</command> when archiving is enabled (Jeff Davis)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <command>CREATE DATABASE</command> and <command>ALTER DATABASE ... SET
|
|
TABLESPACE</command> to be interrupted by query-cancel (Guillaume Lelarge)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
In PL/Python, defend against null pointer results from
|
|
<function>PyCObject_AsVoidPtr</function> and <function>PyCObject_FromVoidPtr</function>
|
|
(Peter Eisentraut)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve <filename>contrib/dblink</filename>'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</filename> (Itagaki Takahiro)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <filename>contrib/dblink</filename> to handle connection names longer than
|
|
62 bytes correctly (Itagaki Takahiro)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <function>hstore(text, text)</function>
|
|
function to <filename>contrib/hstore</filename> (Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
This function is the recommended substitute for the now-deprecated
|
|
<literal>=></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</filename> is installed or
|
|
reinstalled in a particular database. Users might prefer to execute
|
|
the <command>CREATE FUNCTION</command> 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</application> 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</quote> 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-2-17">
|
|
<title>Release 8.2.17</title>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2010-05-17</para>
|
|
</formalpara>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 8.2.16.
|
|
For information about new features in the 8.2 major release, see
|
|
<xref linkend="release-8-2"/>.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 8.2.17</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 8.2.X.
|
|
However, if you are upgrading from a version earlier than 8.2.14,
|
|
see <xref linkend="release-8-2-14"/>.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Enforce restrictions in <literal>plperl</literal> using an opmask applied to
|
|
the whole interpreter, instead of using <filename>Safe.pm</filename>
|
|
(Tim Bunce, Andrew Dunstan)
|
|
</para>
|
|
|
|
<para>
|
|
Recent developments have convinced us that <filename>Safe.pm</filename> is too
|
|
insecure to rely on for making <literal>plperl</literal> trustable. This
|
|
change removes use of <filename>Safe.pm</filename> 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</literal> pragma in a natural way in
|
|
<literal>plperl</literal>, and that Perl's <literal>$a</literal> and <literal>$b</literal>
|
|
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</structname> (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</structname> 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</quote> Tcl
|
|
interpreter unless we are really going to execute a <literal>pltclu</literal>
|
|
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.2.16 while fixing a related failure.
|
|
</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</literal> for himself, or <literal>ALTER DATABASE ... RESET ALL</literal> 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</command> 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</literal> 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>
|
|
Update PL/Perl's <filename>ppport.h</filename> 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</application> when expanding
|
|
a variable that refers to itself (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>psql</application>'s <literal>\copy</literal> to not add spaces around
|
|
a dot within <literal>\copy (select ...)</literal> (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
Addition of spaces around the decimal point in a numeric literal would
|
|
result in a syntax error.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Ensure that <filename>contrib/pgstattuple</filename> functions respond to cancel
|
|
interrupts promptly (Tatsuhito Kasahara)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make server startup deal properly with the case that
|
|
<function>shmget()</function> returns <literal>EINVAL</literal> for an existing
|
|
shared memory segment (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This behavior has been observed on BSD-derived kernels including macOS.
|
|
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</application> 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</literal> (Pakistan Summer Time) to the default set of
|
|
timezone abbreviations.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-8-2-16">
|
|
<title>Release 8.2.16</title>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2010-03-15</para>
|
|
</formalpara>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 8.2.15.
|
|
For information about new features in the 8.2 major release, see
|
|
<xref linkend="release-8-2"/>.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 8.2.16</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 8.2.X.
|
|
However, if you are upgrading from a version earlier than 8.2.14,
|
|
see <xref linkend="release-8-2-14"/>.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add new configuration parameter <varname>ssl_renegotiation_limit</varname> 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 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()</function> for <type>bit</type> types treat any negative
|
|
length as meaning <quote>all the rest of the string</quote> (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 the <literal>STOP WAL LOCATION</literal> 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</quote> constraint (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
When reading <filename>pg_hba.conf</filename> and related files, do not treat
|
|
<literal>@something</literal> as a file inclusion request if the <literal>@</literal>
|
|
appears inside quote marks; also, never treat <literal>@</literal> by itself
|
|
as a file inclusion request (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This prevents erratic behavior if a role or database name starts with
|
|
<literal>@</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"</literal> 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</filename> and related files
|
|
(Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible infinite loop if <function>SSL_read</function> or
|
|
<function>SSL_write</function> fails without setting <varname>errno</varname> (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This is reportedly possible with some Windows versions of
|
|
<application>OpenSSL</application>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>psql</application>'s <literal>numericlocale</literal> option to not
|
|
format strings it shouldn't in latex and troff output formats (Heikki)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <application>psql</application> return the correct exit status (3) when
|
|
<literal>ON_ERROR_STOP</literal> and <literal>--single-transaction</literal> are
|
|
both specified and an error occurs during the implied <command>COMMIT</command>
|
|
(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</literal> 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</literal> command misbehaves if using Tcl 8.5 or later.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent crash in <filename>contrib/dblink</filename> when too many key
|
|
columns are specified to a <function>dblink_build_sql_*</function> function
|
|
(Rushabh Lathia, Joe Conway)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix assorted crashes in <filename>contrib/xml2</filename> caused by sloppy
|
|
memory management (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make building of <filename>contrib/xml2</filename> 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</structname>
|
|
could be dropped under heavy load.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update time zone data files to <application>tzdata</application> release 2010e
|
|
for DST law changes in Bangladesh, Chile, Fiji, Mexico, Paraguay, Samoa.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-8-2-15">
|
|
<title>Release 8.2.15</title>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2009-12-14</para>
|
|
</formalpara>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 8.2.14.
|
|
For information about new features in the 8.2 major release, see
|
|
<xref linkend="release-8-2"/>.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 8.2.15</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 8.2.X.
|
|
However, if you are upgrading from a version earlier than 8.2.14,
|
|
see <xref linkend="release-8-2-14"/>.
|
|
</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>
|
|
Prevent signals from interrupting <literal>VACUUM</literal> at unsafe times
|
|
(Alvaro)
|
|
</para>
|
|
|
|
<para>
|
|
This fix prevents a PANIC if a <literal>VACUUM FULL</literal> is canceled
|
|
after it's already committed its tuple movements, as well as transient
|
|
errors if a plain <literal>VACUUM</literal> 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>/<type>cidr</type> 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 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</literal> 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>
|
|
Fix processing of ownership dependencies during <literal>CREATE OR
|
|
REPLACE FUNCTION</literal> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix bug with calling <literal>plperl</literal> from <literal>plperlu</literal> 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</productname> 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>
|
|
Ensure <application>psql</application>'s flex module is compiled with the correct
|
|
system header definitions (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This fixes build failures on platforms where
|
|
<literal>--enable-largefile</literal> causes incompatible changes in the
|
|
generated code.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make the postmaster ignore any <literal>application_name</literal> 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</literal> and <literal>SGT</literal> to the default
|
|
timezone abbreviation set.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update time zone data files to <application>tzdata</application> 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-2-14">
|
|
<title>Release 8.2.14</title>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2009-09-09</para>
|
|
</formalpara>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 8.2.13.
|
|
For information about new features in the 8.2 major release, see
|
|
<xref linkend="release-8-2"/>.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 8.2.14</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 8.2.X.
|
|
However, if you have any hash indexes on <type>interval</type> columns,
|
|
you must <command>REINDEX</command> them after updating to 8.2.14.
|
|
Also, if you are upgrading from a version earlier than 8.2.11,
|
|
see <xref linkend="release-8-2-11"/>.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Force WAL segment switch during <function>pg_start_backup()</function>
|
|
(Heikki)
|
|
</para>
|
|
|
|
<para>
|
|
This avoids corner cases that could render a base backup unusable.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Disallow <command>RESET ROLE</command> and <command>RESET SESSION
|
|
AUTHORIZATION</command> inside security-definer functions (Tom, Heikki)
|
|
</para>
|
|
|
|
<para>
|
|
This covers a case that was missed in the previous patch that
|
|
disallowed <command>SET ROLE</command> and <command>SET SESSION
|
|
AUTHORIZATION</command> inside security-definer functions.
|
|
(See CVE-2007-6600)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <command>LOAD</command> of an already-loaded loadable module
|
|
into a no-op (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
Formerly, <command>LOAD</command> 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>
|
|
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</type> (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</command> them
|
|
after updating.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Treat <function>to_char(..., 'TH')</function> as an uppercase ordinal
|
|
suffix with <literal>'HH'</literal>/<literal>'HH12'</literal> (Heikki)
|
|
</para>
|
|
|
|
<para>
|
|
It was previously handled as <literal>'th'</literal> (lowercase).
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix overflow for <literal>INTERVAL '<replaceable>x</replaceable> ms'</literal>
|
|
when <replaceable>x</replaceable> 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</type> data type to work in locales where currency
|
|
amounts have no fractional digits, e.g. Japan (Itagaki Takahiro)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Properly round datetime input like
|
|
<literal>00:12:57.9999999999999999999999999999</literal> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix poor choice of page split point in GiST R-tree operator classes
|
|
(Teodor)
|
|
</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</application> to not go into an infinite loop if
|
|
<filename>postgresql.conf</filename> is empty (Jeff Davis)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <filename>contrib/hstore</filename> 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</filename>'s <function>xslt_process()</function> to
|
|
properly handle the maximum number of parameters (twenty) (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve robustness of <application>libpq</application>'s code to recover
|
|
from errors during <command>COPY FROM STDIN</command> (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</application> 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-2-13">
|
|
<title>Release 8.2.13</title>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2009-03-16</para>
|
|
</formalpara>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 8.2.12.
|
|
For information about new features in the 8.2 major release, see
|
|
<xref linkend="release-8-2"/>.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 8.2.13</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 8.2.X.
|
|
However, if you are upgrading from a version earlier than 8.2.11,
|
|
see <xref linkend="release-8-2-11"/>.
|
|
</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</emphasis> 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</command> 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 core dump when <function>to_char()</function> is given format codes that
|
|
are inappropriate for the type of the data argument (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible failure in <filename>contrib/tsearch2</filename> when C locale is
|
|
used with a multi-byte encoding (Teodor)
|
|
</para>
|
|
|
|
<para>
|
|
Crashes were possible on platforms where <type>wchar_t</type> is narrower
|
|
than <type>int</type>; Windows in particular.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix extreme inefficiency in <filename>contrib/tsearch2</filename> parser's
|
|
handling of an email-like string containing multiple <literal>@</literal>
|
|
characters (Heikki)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix decompilation of <literal>CASE WHEN</literal> 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</quote> 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</command> or a rewriting variant of <command>ALTER TABLE</command>
|
|
were executed by someone other than the table owner, the
|
|
<structname>pg_type</structname> 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</quote>
|
|
warnings from <application>pg_dump</application> after having done so (in 8.3).
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix PL/pgSQL to not treat <literal>INTO</literal> after <command>INSERT</command> as
|
|
an INTO-variables clause anywhere in the string, not only at the start;
|
|
in particular, don't fail for <command>INSERT INTO</command> within
|
|
<command>CREATE RULE</command> (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()</function> 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>/<command>NOTIFY</command> as well as other
|
|
operations.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <literal>MUST</literal> (Mauritius Island Summer Time) to the default list
|
|
of known timezone abbreviations (Xavier Bugaud)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-8-2-12">
|
|
<title>Release 8.2.12</title>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2009-02-02</para>
|
|
</formalpara>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 8.2.11.
|
|
For information about new features in the 8.2 major release, see
|
|
<xref linkend="release-8-2"/>.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 8.2.12</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 8.2.X.
|
|
However, if you are upgrading from a version earlier than 8.2.11,
|
|
see <xref linkend="release-8-2-11"/>.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve handling of URLs in <function>headline()</function> function (Teodor)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve handling of overlength headlines in <function>headline()</function>
|
|
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</command> is rewritten into an <command>UPDATE</command> (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</literal>
|
|
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</command>
|
|
(Heikki)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix a problem that made <literal>UPDATE RETURNING tableoid</literal>
|
|
return zero instead of the correct OID (Tom)
|
|
</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 ...</literal>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve optimizer's handling of long <literal>IN</literal> lists (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This change avoids wasting large amounts of time on such lists
|
|
when constraint exclusion is enabled.
|
|
</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 <filename>contrib/dblink</filename>'s
|
|
<function>dblink_get_result(text,bool)</function> function (Joe)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible garbage output from <filename>contrib/sslinfo</filename> functions
|
|
(Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>configure</application> 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</literal> and/or
|
|
<literal>pgsql-hackers</literal> as appropriate, instead of the
|
|
now-decommissioned <literal>pgsql-ports</literal> and <literal>pgsql-patches</literal>
|
|
mailing lists (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update time zone data files to <application>tzdata</application> release 2009a (for
|
|
Kathmandu and historical DST corrections in Switzerland, Cuba)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-8-2-11">
|
|
<title>Release 8.2.11</title>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2008-11-03</para>
|
|
</formalpara>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 8.2.10.
|
|
For information about new features in the 8.2 major release, see
|
|
<xref linkend="release-8-2"/>.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 8.2.11</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 8.2.X.
|
|
However, if you are upgrading from a version earlier than 8.2.7,
|
|
see <xref linkend="release-8-2-7"/>. Also, if you were running a previous
|
|
8.2.X release, it is recommended to <command>REINDEX</command> 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</quote> 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</command>.
|
|
</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</quote> 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 when deeply nested functions are invoked from
|
|
a trigger (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve optimization of <replaceable>expression</replaceable> <literal>IN</literal>
|
|
(<replaceable>expression-list</replaceable>) 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</literal> appears
|
|
in a function call in <literal>FROM</literal>, a multi-row <literal>VALUES</literal>
|
|
list, or a <literal>RETURNING</literal> list (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
The usual symptom of this problem is an <quote>unrecognized node type</quote>
|
|
error.
|
|
</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>
|
|
Prevent possible collision of <structfield>relfilenode</structfield> numbers
|
|
when moving a table to another tablespace with <command>ALTER SET
|
|
TABLESPACE</command> (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 tsearch2 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</option>
|
|
build (Ron Mayer)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Ensure <function>SPI_getvalue</function> and <function>SPI_getbinval</function>
|
|
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>
|
|
Fix <application>ecpg</application>'s parsing of <command>CREATE ROLE</command> (Michael)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix recent breakage of <literal>pg_ctl restart</literal> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Ensure <filename>pg_control</filename> is opened in binary mode
|
|
(Itagaki Takahiro)
|
|
</para>
|
|
|
|
<para>
|
|
<application>pg_controldata</application> and <application>pg_resetxlog</application>
|
|
did this incorrectly, and so could fail on Windows.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update time zone data files to <application>tzdata</application> release 2008i (for
|
|
DST law changes in Argentina, Brazil, Mauritius, Syria)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-8-2-10">
|
|
<title>Release 8.2.10</title>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2008-09-22</para>
|
|
</formalpara>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 8.2.9.
|
|
For information about new features in the 8.2 major release, see
|
|
<xref linkend="release-8-2"/>.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 8.2.10</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 8.2.X.
|
|
However, if you are upgrading from a version earlier than 8.2.7,
|
|
see <xref linkend="release-8-2-7"/>.
|
|
</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 miscalculation of <structfield>datfrozenxid</structfield> (Alvaro)
|
|
</para>
|
|
|
|
<para>
|
|
This error may explain some recent reports of failure to remove old
|
|
<structname>pg_clog</structname> data.
|
|
</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</quote> errors.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible duplicate output of tuples during a GiST index scan (Teodor)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix missed permissions checks when a view contains a simple
|
|
<literal>UNION ALL</literal> 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</command> or <command>UPDATE</command> will match the target table's
|
|
current rowtype (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
<command>ALTER COLUMN TYPE</command>, followed by re-use of a previously
|
|
cached plan, could produce this type of situation. The check protects
|
|
against data corruption and/or crashes that could ensue.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible repeated drops during <command>DROP OWNED</command> (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This would typically result in strange errors such as <quote>cache
|
|
lookup failed for relation NNN</quote>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <literal>AT TIME ZONE</literal> 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</literal> 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</literal> accepted
|
|
<emphasis>only</emphasis> 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</filename> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix bug in backwards scanning of a cursor on a <literal>SELECT DISTINCT
|
|
ON</literal> query (Tom)
|
|
</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</literal> 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</literal> estimate for certain boolean tests like <replaceable>col</replaceable>
|
|
<literal>IS NULL</literal>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix PL/pgSQL to not fail when a <literal>FOR</literal> 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>
|
|
On Windows, work around a Microsoft bug by preventing
|
|
<application>libpq</application> from trying to send more than 64kB per system call
|
|
(Magnus)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve <application>pg_dump</application> and <application>pg_restore</application>'s
|
|
error reporting after failure to send a SQL command (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>pg_ctl</application> to properly preserve postmaster
|
|
command-line arguments across a <literal>restart</literal> (Bruce)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update time zone data files to <application>tzdata</application> 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-2-9">
|
|
<title>Release 8.2.9</title>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2008-06-12</para>
|
|
</formalpara>
|
|
|
|
<para>
|
|
This release contains one serious and one minor bug fix over 8.2.8.
|
|
For information about new features in the 8.2 major release, see
|
|
<xref linkend="release-8-2"/>.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 8.2.9</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 8.2.X.
|
|
However, if you are upgrading from a version earlier than 8.2.7,
|
|
see <xref linkend="release-8-2-7"/>.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <function>pg_get_ruledef()</function> 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</literal>, which is subtly incorrect: it should
|
|
be <literal>(-42)::integer</literal> due to operator precedence rules.
|
|
Usually this would make little difference, but it could interact with
|
|
another recent patch to cause
|
|
<productname>PostgreSQL</productname> to reject what had been a valid
|
|
<command>SELECT DISTINCT</command> view query. Since this could result in
|
|
<application>pg_dump</application> 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</command> update
|
|
<structname>pg_shdepend</structname> (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This oversight could lead to problems if the aggregate was later
|
|
involved in a <command>DROP OWNED</command> or <command>REASSIGN OWNED</command>
|
|
operation.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-8-2-8">
|
|
<title>Release 8.2.8</title>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>never released</para>
|
|
</formalpara>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 8.2.7.
|
|
For information about new features in the 8.2 major release, see
|
|
<xref linkend="release-8-2"/>.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 8.2.8</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 8.2.X.
|
|
However, if you are upgrading from a version earlier than 8.2.7,
|
|
see <xref linkend="release-8-2-7"/>.
|
|
</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 <command>ALTER TABLE ADD COLUMN ... PRIMARY KEY</command> 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 possible <command>CREATE TABLE</command> failure when inheriting the
|
|
<quote>same</quote> constraint from multiple parent relations that
|
|
inherited that constraint from a common ancestor (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <function>pg_get_ruledef()</function> to show the alias, if any, attached
|
|
to the target table of an <command>UPDATE</command> or <command>DELETE</command>
|
|
(Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix GIN bug that could result in a <literal>too many LWLocks
|
|
taken</literal> failure (Teodor)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid possible crash when decompressing corrupted data
|
|
(Zdenek Kotala)
|
|
</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 conversions between ISO-8859-5 and other encodings to handle
|
|
Cyrillic <quote>Yo</quote> characters (<literal>e</literal> and <literal>E</literal> with
|
|
two dots) (Sergey Burladyan)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix several datatype input functions, notably <function>array_in()</function>,
|
|
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</literal> and <literal>DISTINCT</literal>
|
|
expressions.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix a corner case in regular-expression substring matching
|
|
(<literal>substring(<replaceable>string</replaceable> from
|
|
<replaceable>pattern</replaceable>)</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)?')</literal>.
|
|
This should return NULL, since <literal>(bar)</literal> isn't matched, but
|
|
it was mistakenly returning the whole-pattern match instead (ie,
|
|
<literal>foo</literal>).
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update time zone data files to <application>tzdata</application> release 2008c (for
|
|
DST law changes in Morocco, Iraq, Choibalsan, Pakistan, Syria, Cuba, and
|
|
Argentina/San_Luis)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix incorrect result from <application>ecpg</application>'s
|
|
<function>PGTYPEStimestamp_sub()</function> function (Michael)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix broken GiST comparison function for <filename>contrib/tsearch2</filename>'s
|
|
<type>tsquery</type> type (Teodor)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible crashes in <filename>contrib/cube</filename> functions (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix core dump in <filename>contrib/xml2</filename>'s
|
|
<function>xpath_table()</function> function when the input query returns a
|
|
NULL value (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <filename>contrib/xml2</filename>'s makefile to not override
|
|
<literal>CFLAGS</literal> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <literal>DatumGetBool</literal> macro to not fail with <application>gcc</application>
|
|
4.3 (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This problem affects <quote>old style</quote> (V0) C functions that
|
|
return boolean. The fix is already in 8.3, but the need to
|
|
back-patch it was not realized at the time.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-8-2-7">
|
|
<title>Release 8.2.7</title>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2008-03-17</para>
|
|
</formalpara>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 8.2.6.
|
|
For information about new features in the 8.2 major release, see
|
|
<xref linkend="release-8-2"/>.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 8.2.7</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 8.2.X.
|
|
However, you might need to <command>REINDEX</command> 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</command> to fix existing indexes on textual columns.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Repair potential deadlock between concurrent <command>VACUUM FULL</command>
|
|
operations on different system catalogs (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix longstanding <command>LISTEN</command>/<command>NOTIFY</command>
|
|
race condition (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
In rare cases a session that had just executed a
|
|
<command>LISTEN</command> might not get a notification, even though
|
|
one would be expected because the concurrent transaction executing
|
|
<command>NOTIFY</command> 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> command will not see any
|
|
row in <structname>pg_listener</structname> for the <command>LISTEN</command>,
|
|
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</command> and <command>UNLISTEN</command> 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</command> 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.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix rare crash when an error occurs during a query using a hash index
|
|
(Heikki)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix memory leaks in certain usages of set-returning functions (Neil)
|
|
</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</quote> error in some variants of
|
|
<command>ALTER OWNER</command> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Ensure <structname>pg_stat_activity</structname>.<structfield>waiting</structfield> 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</application> release 2008a
|
|
(in particular, recent Chile changes); adjust timezone abbreviation
|
|
<literal>VET</literal> (Venezuela) to mean UTC-4:30, not UTC-4:00 (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>pg_ctl</application> to correctly extract the postmaster's port
|
|
number from command-line options (Itagaki Takahiro, Tom)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, <literal>pg_ctl start -w</literal> could try to contact the
|
|
postmaster on the wrong port, leading to bogus reports of startup
|
|
failure.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Use <option>-fwrapv</option> to defend against possible misoptimization
|
|
in recent <application>gcc</application> versions (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This is known to be necessary when building <productname>PostgreSQL</productname>
|
|
with <application>gcc</application> 4.3 or later.
|
|
</para>
|
|
</listitem>
|
|
|
|
|
|
<listitem>
|
|
<para>
|
|
Correctly enforce <varname>statement_timeout</varname> values longer
|
|
than <literal>INT_MAX</literal> microseconds (about 35 minutes) (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This bug affects only builds with <option>--enable-integer-datetimes</option>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <quote>unexpected PARAM_SUBLINK ID</quote> planner error when
|
|
constant-folding simplifies a sub-select (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix logical errors in constraint-exclusion handling of <literal>IS
|
|
NULL</literal> and <literal>NOT</literal> expressions (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
The planner would sometimes exclude partitions that should not
|
|
have been excluded because of the possibility of NULL results.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix another cause of <quote>failed to build any N-way joins</quote>
|
|
planner errors (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This could happen in cases where a clauseless join needed to be
|
|
forced before a join clause could be exploited.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix incorrect constant propagation in outer-join planning (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
The planner could sometimes incorrectly conclude that a variable
|
|
could be constrained to be equal to a constant, leading
|
|
to wrong query results.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix display of constant expressions in <literal>ORDER BY</literal>
|
|
and <literal>GROUP BY</literal> (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
An explicitly casted constant would be shown incorrectly. This could
|
|
for example lead to corruption of a view definition during
|
|
dump and reload.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>libpq</application> to handle NOTICE messages correctly
|
|
during COPY OUT (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This failure has only been observed to occur when a user-defined
|
|
datatype's output routine issues a NOTICE, but there is no
|
|
guarantee it couldn't happen due to other causes.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-8-2-6">
|
|
<title>Release 8.2.6</title>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2008-01-07</para>
|
|
</formalpara>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 8.2.5,
|
|
including fixes for significant security issues.
|
|
For information about new features in the 8.2 major release, see
|
|
<xref linkend="release-8-2"/>.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 8.2.6</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 8.2.X.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent functions in indexes from executing with the privileges of
|
|
the user running <command>VACUUM</command>, <command>ANALYZE</command>, etc (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
Functions used in index expressions and partial-index
|
|
predicates are evaluated whenever a new table entry is made. It has
|
|
long been understood that this poses a risk of trojan-horse code
|
|
execution if one modifies a table owned by an untrustworthy user.
|
|
(Note that triggers, defaults, check constraints, etc. pose the
|
|
same type of risk.) But functions in indexes pose extra danger
|
|
because they will be executed by routine maintenance operations
|
|
such as <command>VACUUM FULL</command>, which are commonly performed
|
|
automatically under a superuser account. For example, a nefarious user
|
|
can execute code with superuser privileges by setting up a
|
|
trojan-horse index definition and waiting for the next routine vacuum.
|
|
The fix arranges for standard maintenance operations
|
|
(including <command>VACUUM</command>, <command>ANALYZE</command>, <command>REINDEX</command>,
|
|
and <command>CLUSTER</command>) to execute as the table owner rather than
|
|
the calling user, using the same privilege-switching mechanism already
|
|
used for <literal>SECURITY DEFINER</literal> functions. To prevent bypassing
|
|
this security measure, execution of <command>SET SESSION
|
|
AUTHORIZATION</command> and <command>SET ROLE</command> is now forbidden within a
|
|
<literal>SECURITY DEFINER</literal> context. (CVE-2007-6600)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Repair assorted bugs in the regular-expression package (Tom, Will Drewry)
|
|
</para>
|
|
|
|
<para>
|
|
Suitably crafted regular-expression patterns could cause crashes,
|
|
infinite or near-infinite looping, and/or massive memory consumption,
|
|
all of which pose denial-of-service hazards for applications that
|
|
accept regex search patterns from untrustworthy sources.
|
|
(CVE-2007-4769, CVE-2007-4772, CVE-2007-6067)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Require non-superusers who use <filename>/contrib/dblink</filename> to use only
|
|
password authentication, as a security measure (Joe)
|
|
</para>
|
|
|
|
<para>
|
|
The fix that appeared for this in 8.2.5 was incomplete, as it plugged
|
|
the hole for only some <filename>dblink</filename> functions. (CVE-2007-6601,
|
|
CVE-2007-3278)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix bugs in WAL replay for GIN indexes (Teodor)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix GIN index build to work properly when
|
|
<varname>maintenance_work_mem</varname> is 4GB or more (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update time zone data files to <application>tzdata</application> release 2007k
|
|
(in particular, recent Argentina changes) (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve planner's handling of LIKE/regex estimation in non-C locales
|
|
(Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix planning-speed problem for deep outer-join nests, as well as
|
|
possible poor choice of join order (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix planner failure in some cases of <literal>WHERE false AND var IN
|
|
(SELECT ...)</literal> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <command>CREATE TABLE ... SERIAL</command> and
|
|
<command>ALTER SEQUENCE ... OWNED BY</command> not change the
|
|
<function>currval()</function> state of the sequence (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Preserve the tablespace and storage parameters of indexes that are
|
|
rebuilt by <command>ALTER TABLE ... ALTER COLUMN TYPE</command> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make archive recovery always start a new WAL timeline, rather than only
|
|
when a recovery stop time was used (Simon)
|
|
</para>
|
|
|
|
<para>
|
|
This avoids a corner-case risk of trying to overwrite an existing
|
|
archived copy of the last WAL segment, and seems simpler and cleaner
|
|
than the original definition.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <command>VACUUM</command> not use all of <varname>maintenance_work_mem</varname>
|
|
when the table is too small for it to be useful (Alvaro)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix potential crash in <function>translate()</function> when using a multibyte
|
|
database encoding (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <function>corr()</function> return the correct result for negative
|
|
correlation values (Neil)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix overflow in <literal>extract(epoch from interval)</literal> for intervals
|
|
exceeding 68 years (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix PL/Perl to not fail when a UTF-8 regular expression is used
|
|
in a trusted function (Andrew)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix PL/Perl to cope when platform's Perl defines type <literal>bool</literal>
|
|
as <literal>int</literal> rather than <literal>char</literal> (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
While this could theoretically happen anywhere, no standard build of
|
|
Perl did things this way ... until <productname>macOS</productname> 10.5.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix PL/Python to work correctly with Python 2.5 on 64-bit machines
|
|
(Marko Kreen)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix PL/Python to not crash on long exception messages (Alvaro)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>pg_dump</application> to correctly handle inheritance child tables
|
|
that have default expressions different from their parent's (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>libpq</application> crash when <varname>PGPASSFILE</varname> refers
|
|
to a file that is not a plain file (Martin Pitt)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<application>ecpg</application> parser fixes (Michael)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <filename>contrib/pgcrypto</filename> defend against
|
|
<application>OpenSSL</application> libraries that fail on keys longer than 128
|
|
bits; which is the case at least on some Solaris versions (Marko Kreen)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <filename>contrib/tablefunc</filename>'s <function>crosstab()</function> handle
|
|
NULL rowid as a category in its own right, rather than crashing (Joe)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <type>tsvector</type> and <type>tsquery</type> output routines to
|
|
escape backslashes correctly (Teodor, Bruce)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix crash of <function>to_tsvector()</function> on huge input strings (Teodor)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Require a specific version of <productname>Autoconf</productname> to be used
|
|
when re-generating the <command>configure</command> script (Peter)
|
|
</para>
|
|
|
|
<para>
|
|
This affects developers and packagers only. The change was made
|
|
to prevent accidental use of untested combinations of
|
|
<productname>Autoconf</productname> and <productname>PostgreSQL</productname> versions.
|
|
You can remove the version check if you really want to use a
|
|
different <productname>Autoconf</productname> version, but it's
|
|
your responsibility whether the result works or not.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update <function>gettimeofday</function> configuration check so that
|
|
<productname>PostgreSQL</productname> can be built on newer versions of
|
|
<productname>MinGW</productname> (Magnus)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-8-2-5">
|
|
<title>Release 8.2.5</title>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2007-09-17</para>
|
|
</formalpara>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 8.2.4.
|
|
For information about new features in the 8.2 major release, see
|
|
<xref linkend="release-8-2"/>.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 8.2.5</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 8.2.X.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent index corruption when a transaction inserts rows and
|
|
then aborts close to the end of a concurrent <command>VACUUM</command>
|
|
on the same table (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <literal>ALTER DOMAIN ADD CONSTRAINT</literal> for cases involving
|
|
domains over domains (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <command>CREATE DOMAIN ... DEFAULT NULL</command> work properly (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix some planner problems with outer joins, notably poor
|
|
size estimation for <literal>t1 LEFT JOIN t2 WHERE t2.col IS NULL</literal>
|
|
(Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow the <type>interval</type> data type to accept input consisting only of
|
|
milliseconds or microseconds (Neil)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow timezone name to appear before the year in <type>timestamp</type> input (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fixes for <acronym>GIN</acronym> indexes used by <filename>/contrib/tsearch2</filename> (Teodor)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Speed up rtree index insertion (Teodor)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix excessive logging of <acronym>SSL</acronym> error messages (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix logging so that log messages are never interleaved when using
|
|
the syslogger process (Andrew)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix crash when <varname>log_min_error_statement</varname> logging runs out
|
|
of memory (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix incorrect handling of some foreign-key corner cases (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <function>stddev_pop(numeric)</function> and <function>var_pop(numeric)</function> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent <command>REINDEX</command> and <command>CLUSTER</command> from failing
|
|
due to attempting to process temporary tables of other sessions (Alvaro)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update the time zone database rules, particularly New Zealand's upcoming changes (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Windows socket and semaphore improvements (Magnus)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <command>pg_ctl -w</command> work properly in Windows service mode (Dave Page)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix memory allocation bug when using <application>MIT Kerberos</application> on Windows (Magnus)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Suppress timezone name (<literal>%Z</literal>) in log timestamps on Windows
|
|
because of possible encoding mismatches (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Require non-superusers who use <filename>/contrib/dblink</filename> to use only
|
|
password authentication, as a security measure (Joe)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Restrict <filename>/contrib/pgstattuple</filename> functions to superusers, for security reasons (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Do not let <filename>/contrib/intarray</filename> try to make its GIN opclass
|
|
the default (this caused problems at dump/restore) (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-8-2-4">
|
|
<title>Release 8.2.4</title>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2007-04-23</para>
|
|
</formalpara>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 8.2.3,
|
|
including a security fix.
|
|
For information about new features in the 8.2 major release, see
|
|
<xref linkend="release-8-2"/>.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 8.2.4</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 8.2.X.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support explicit placement of the temporary-table schema within
|
|
<varname>search_path</varname>, and disable searching it for functions
|
|
and operators (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This is needed to allow a security-definer function to set a
|
|
truly secure value of <varname>search_path</varname>. Without it,
|
|
an unprivileged SQL user can use temporary objects to execute code
|
|
with the privileges of the security-definer function (CVE-2007-2138).
|
|
See <command>CREATE FUNCTION</command> for more information.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <varname>shared_preload_libraries</varname> for Windows
|
|
by forcing reload in each backend (Korry Douglas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <function>to_char()</function> so it properly upper/lower cases localized day or month
|
|
names (Pavel Stehule)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<filename>/contrib/tsearch2</filename> crash fixes (Teodor)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Require <command>COMMIT PREPARED</command> to be executed in the same
|
|
database as the transaction was prepared in (Heikki)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <command>pg_dump</command> to do binary backups larger than two gigabytes
|
|
on Windows (Magnus)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
New traditional (Taiwan) Chinese <acronym>FAQ</acronym> (Zhou Daojing)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent the statistics collector from writing to disk too frequently (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix potential-data-corruption bug in how <command>VACUUM FULL</command> handles
|
|
<command>UPDATE</command> chains (Tom, Pavan Deolasee)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix bug in domains that use array types (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <command>pg_dump</command> so it can dump a serial column's sequence
|
|
using <option>-t</option> when not also dumping the owning table
|
|
(Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Planner fixes, including improving outer join and bitmap scan
|
|
selection logic (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible wrong answers or crash when a PL/pgSQL function tries
|
|
to <literal>RETURN</literal> from within an <literal>EXCEPTION</literal> block
|
|
(Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix PANIC during enlargement of a hash index (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix POSIX-style timezone specs to follow new USA DST rules (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-8-2-3">
|
|
<title>Release 8.2.3</title>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2007-02-07</para>
|
|
</formalpara>
|
|
|
|
<para>
|
|
This release contains two fixes from 8.2.2.
|
|
For information about new features in the 8.2 major release, see
|
|
<xref linkend="release-8-2"/>.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 8.2.3</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 8.2.X.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Remove overly-restrictive check for type length in constraints and
|
|
functional indexes(Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix optimization so MIN/MAX in subqueries can again use indexes (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-8-2-2">
|
|
<title>Release 8.2.2</title>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2007-02-05</para>
|
|
</formalpara>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 8.2.1, including
|
|
a security fix.
|
|
For information about new features in the 8.2 major release, see
|
|
<xref linkend="release-8-2"/>.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 8.2.2</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 8.2.X.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Remove security vulnerabilities that allowed connected users
|
|
to read backend memory (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
The vulnerabilities involve suppressing the normal check that a SQL
|
|
function returns the data type it's declared to, and changing the
|
|
data type of a table column (CVE-2007-0555, CVE-2007-0556). These
|
|
errors can easily be exploited to cause a backend crash, and in
|
|
principle might be used to read database content that the user
|
|
should not be able to access.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix not-so-rare-anymore bug wherein btree index page splits could fail
|
|
due to choosing an infeasible split point (Heikki Linnakangas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix Borland C compile scripts (L Bayuk)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Properly handle <function>to_char('CC')</function> for years ending in
|
|
<literal>00</literal> (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
Year 2000 is in the twentieth century, not the twenty-first.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<filename>/contrib/tsearch2</filename> localization improvements (Tatsuo, Teodor)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix incorrect permission check in
|
|
<literal>information_schema.key_column_usage</literal> view (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
The symptom is <quote>relation with OID nnnnn does not exist</quote> errors.
|
|
To get this fix without using <command>initdb</command>, use <command>CREATE OR
|
|
REPLACE VIEW</command> to install the corrected definition found in
|
|
<filename>share/information_schema.sql</filename>. Note you will need to do
|
|
this in each database.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve <command>VACUUM</command> performance for databases with many tables (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix for rare Assert() crash triggered by <literal>UNION</literal> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix potentially incorrect results from index searches using
|
|
<literal>ROW</literal> inequality conditions (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Tighten security of multi-byte character processing for UTF8 sequences
|
|
over three bytes long (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix bogus <quote>permission denied</quote> failures occurring on Windows
|
|
due to attempts to fsync already-deleted files (Magnus, Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix bug that could cause the statistics collector
|
|
to hang on Windows (Magnus)
|
|
</para>
|
|
|
|
<para>
|
|
This would in turn lead to autovacuum not working.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible crashes when an already-in-use PL/pgSQL function is
|
|
updated (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve PL/pgSQL handling of domain types (Sergiy Vyshnevetskiy, Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible errors in processing PL/pgSQL exception blocks (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-8-2-1">
|
|
<title>Release 8.2.1</title>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2007-01-08</para>
|
|
</formalpara>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 8.2.
|
|
For information about new features in the 8.2 major release, see
|
|
<xref linkend="release-8-2"/>.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 8.2.1</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 8.2.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix crash with <literal>SELECT</literal> ... <literal>LIMIT ALL</literal> (also
|
|
<literal>LIMIT NULL</literal>) (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<filename>Several /contrib/tsearch2</filename> fixes (Teodor)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
On Windows, make log messages coming from the operating system use
|
|
<acronym>ASCII</acronym> encoding (Hiroshi Saito)
|
|
</para>
|
|
|
|
<para>
|
|
This fixes a conversion problem when there is a mismatch between
|
|
the encoding of the operating system and database server.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix Windows linking of <application>pg_dump</application> using
|
|
<filename>win32.mak</filename>
|
|
(Hiroshi Saito)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix planner mistakes for outer join queries (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix several problems in queries involving sub-SELECTs (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix potential crash in SPI during subtransaction abort (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This affects all PL functions since they all use SPI.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve build speed of <acronym>PDF</acronym> documentation (Peter)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Re-add <acronym>JST</acronym> (Japan) timezone abbreviation (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve optimization decisions related to index scans (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Have <application>psql</application> print multi-byte combining characters as
|
|
before, rather than output as <literal>\u</literal> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve index usage of regular expressions that use parentheses (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This improves <application>psql</application> <literal>\d</literal> performance also.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <application>pg_dumpall</application> assume that databases have public
|
|
<literal>CONNECT</literal> privilege, when dumping from a pre-8.2 server (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This preserves the previous behavior that anyone can connect to a
|
|
database if allowed by <filename>pg_hba.conf</filename>.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-8-2">
|
|
<title>Release 8.2</title>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2006-12-05</para>
|
|
</formalpara>
|
|
|
|
<sect2>
|
|
<title>Overview</title>
|
|
|
|
<para>
|
|
This release adds many functionality and performance improvements that
|
|
were requested by users, including:
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Query language enhancements including <command>INSERT/UPDATE/DELETE
|
|
RETURNING</command>, multirow <literal>VALUES</literal> lists, and
|
|
optional target-table alias in
|
|
<command>UPDATE</command>/<command>DELETE</command>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Index creation without blocking concurrent
|
|
<command>INSERT</command>/<command>UPDATE</command>/<command>DELETE</command>
|
|
operations
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Many query optimization improvements, including support for
|
|
reordering outer joins
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improved sorting performance with lower memory usage
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
More efficient locking with better concurrency
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
More efficient vacuuming
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Easier administration of warm standby servers
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
New <literal>FILLFACTOR</literal> support for tables and indexes
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Monitoring, logging, and performance tuning additions
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
More control over creating and dropping objects
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Table inheritance relationships can be defined
|
|
for and removed from pre-existing tables
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<command>COPY TO</command> can copy the output of an arbitrary
|
|
<command>SELECT</command> statement
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Array improvements, including nulls in arrays
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Aggregate-function improvements, including multiple-input
|
|
aggregates and SQL:2003 statistical functions
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Many <filename>contrib/</filename> improvements
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 8.2</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>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Set <link
|
|
linkend="guc-escape-string-warning"><varname>escape_string_warning</varname></link>
|
|
to <literal>on</literal> by default (Bruce)
|
|
</para>
|
|
|
|
<para>
|
|
This issues a warning if backslash escapes are used in
|
|
<link linkend="sql-syntax-strings">non-escape (non-<literal>E''</literal>)
|
|
strings</link>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Change the <link linkend="sql-syntax-row-constructors">row
|
|
constructor syntax</link> (<literal>ROW(...)</literal>) so that
|
|
list elements <literal>foo.*</literal> will be expanded to a list
|
|
of their member fields, rather than creating a nested
|
|
row type field as formerly (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
The new behavior is substantially more useful since it
|
|
allows, for example, triggers to check for data changes
|
|
with <literal>IF row(new.*) IS DISTINCT FROM row(old.*)</literal>.
|
|
The old behavior is still available by omitting <literal>.*</literal>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <link linkend="row-wise-comparison">row comparisons</link>
|
|
follow <acronym>SQL</acronym> standard semantics and allow them
|
|
to be used in index scans (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, row = and <> comparisons followed the
|
|
standard but < <= > >= did not. A row comparison
|
|
can now be used as an index constraint for a multicolumn
|
|
index matching the row value.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <link linkend="functions-comparison">row <literal>IS <optional>NOT</optional> NULL</literal></link>
|
|
tests follow <acronym>SQL</acronym> standard semantics (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
The former behavior conformed to the standard for simple cases
|
|
with <literal>IS NULL</literal>, but <literal>IS NOT NULL</literal> would return
|
|
true if any row field was non-null, whereas the standard says it
|
|
should return true only when all fields are non-null.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <link linkend="sql-set-constraints"><command>SET
|
|
CONSTRAINT</command></link> affect only one constraint (Kris Jurka)
|
|
</para>
|
|
|
|
<para>
|
|
In previous releases, <command>SET CONSTRAINT</command> modified
|
|
all constraints with a matching name. In this release,
|
|
the schema search path is used to modify only the first
|
|
matching constraint. A schema specification is also
|
|
supported. This more nearly conforms to the SQL standard.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Remove <literal>RULE</literal> permission for tables, for security reasons
|
|
(Tom)
|
|
</para>
|
|
|
|
<para>
|
|
As of this release, only a table's owner can create or modify
|
|
rules for the table. For backwards compatibility,
|
|
<command>GRANT</command>/<command>REVOKE RULE</command> is still accepted,
|
|
but it does nothing.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Array comparison improvements (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
Now array dimensions are also compared.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Change <link linkend="functions-array">array concatenation</link>
|
|
to match documented behavior (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This changes the previous behavior where concatenation
|
|
would modify the array lower bound.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make command-line options of <application>postmaster</application>
|
|
and <link linkend="app-postgres"><application>postgres</application></link>
|
|
identical (Peter)
|
|
</para>
|
|
|
|
<para>
|
|
This allows the postmaster to pass arguments to each backend
|
|
without using <literal>-o</literal>. Note that some options are now
|
|
only available as long-form options, because there were conflicting
|
|
single-letter options.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Deprecate use of <application>postmaster</application> symbolic link (Peter)
|
|
</para>
|
|
|
|
<para>
|
|
<application>postmaster</application> and <application>postgres</application>
|
|
commands now act identically, with the behavior determined
|
|
by command-line options. The <application>postmaster</application> symbolic link is
|
|
kept for compatibility, but is not really needed.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Change <link
|
|
linkend="guc-log-duration"><varname>log_duration</varname></link>
|
|
to output even if the query is not output (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
In prior releases, <varname>log_duration</varname> only printed if
|
|
the query appeared earlier in the log.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <link
|
|
linkend="functions-formatting"><function>to_char(time)</function></link>
|
|
and <link
|
|
linkend="functions-formatting"><function>to_char(interval)</function></link>
|
|
treat <literal>HH</literal> and <literal>HH12</literal> as 12-hour
|
|
intervals
|
|
</para>
|
|
|
|
<para>
|
|
Most applications should use <literal>HH24</literal> unless they
|
|
want a 12-hour display.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Zero unmasked bits in conversion from <link
|
|
linkend="datatype-inet"><type>INET</type></link> to <link
|
|
linkend="datatype-inet"><type>CIDR</type></link> (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This ensures that the converted value is actually valid for
|
|
<type>CIDR</type>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Remove <varname>australian_timezones</varname> configuration variable
|
|
(Joachim Wieland)
|
|
</para>
|
|
|
|
<para>
|
|
This variable has been superseded by a more general facility
|
|
for configuring timezone abbreviations.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve cost estimation for nested-loop index scans (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This might eliminate the need to set unrealistically small
|
|
values of <link
|
|
linkend="guc-random-page-cost"><varname>random_page_cost</varname></link>.
|
|
If you have been using a very small <varname>random_page_cost</varname>,
|
|
please recheck your test cases.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Change behavior of <command>pg_dump</command> <literal>-n</literal> and
|
|
<literal>-t</literal> options. (Greg Sabino Mullane)
|
|
</para>
|
|
<para>
|
|
See the <command>pg_dump</command> manual page for details.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Change <link linkend="libpq"><application>libpq</application></link>
|
|
<function>PQdsplen()</function> to return a useful value (Martijn
|
|
van Oosterhout)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Declare <link linkend="libpq"><application>libpq</application></link>
|
|
<function>PQgetssl()</function> as returning <literal>void *</literal>,
|
|
rather than <literal>SSL *</literal> (Martijn van Oosterhout)
|
|
</para>
|
|
|
|
<para>
|
|
This allows applications to use the function without including
|
|
the OpenSSL headers.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
C-language loadable modules must now include a
|
|
<link linkend="xfunc-c-dynload"><literal>PG_MODULE_MAGIC</literal></link>
|
|
macro call for version compatibility checking
|
|
(Martijn van Oosterhout)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
For security's sake, modules used by a PL/PerlU function are no
|
|
longer available to PL/Perl functions (Andrew)
|
|
</para>
|
|
<note>
|
|
<para>
|
|
This also implies that data can no longer be shared between a PL/Perl
|
|
function and a PL/PerlU function.
|
|
Some Perl installations have not been compiled with the correct flags
|
|
to allow multiple interpreters to exist within a single process.
|
|
In this situation PL/Perl and PL/PerlU cannot both be used in a
|
|
single backend. The solution is to get a Perl installation which
|
|
supports multiple interpreters.
|
|
</para>
|
|
</note>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
In <filename>contrib/xml2/</filename>, rename <function>xml_valid()</function> to
|
|
<function>xml_is_well_formed()</function> (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
<function>xml_valid()</function> will remain for backward compatibility,
|
|
but its behavior will change to do schema checking in a future
|
|
release.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Remove <filename>contrib/ora2pg/</filename>, now at <ulink
|
|
url="http://www.samse.fr/GPL/ora2pg"></ulink>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Remove contrib modules that have been migrated to PgFoundry:
|
|
<filename>adddepend</filename>, <filename>dbase</filename>, <filename>dbmirror</filename>,
|
|
<filename>fulltextindex</filename>, <filename>mac</filename>, <filename>userlock</filename>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Remove abandoned contrib modules:
|
|
<filename>mSQL-interface</filename>, <filename>tips</filename>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Remove <acronym>QNX</acronym> and <acronym>BEOS</acronym> ports (Bruce)
|
|
</para>
|
|
|
|
<para>
|
|
These ports no longer had active maintainers.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<para>
|
|
Below you will find a detailed account of the
|
|
changes between <productname>PostgreSQL</productname> 8.2 and
|
|
the previous major release.
|
|
</para>
|
|
|
|
<sect3>
|
|
<title>Performance Improvements</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow the planner to reorder <link linkend="queries-join">outer
|
|
joins</link> in some circumstances (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
In previous releases, outer joins would always be evaluated in
|
|
the order written in the query. This change allows the
|
|
query optimizer to consider reordering outer joins, in cases where
|
|
it can determine that the join order can be changed without
|
|
altering the meaning of the query. This can make a
|
|
considerable performance difference for queries involving
|
|
multiple outer joins or mixed inner and outer joins.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve efficiency of <link
|
|
linkend="functions-comparisons"><literal>IN</literal>
|
|
(list-of-expressions)</link> clauses (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve sorting speed and reduce memory usage (Simon, Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve subtransaction performance (Alvaro, Itagaki Takahiro,
|
|
Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <literal>FILLFACTOR</literal> to <link
|
|
linkend="sql-createtable">table</link> and <link
|
|
linkend="sql-createindex">index</link> creation (ITAGAKI
|
|
Takahiro)
|
|
</para>
|
|
|
|
<para>
|
|
This leaves extra free space in each table or index page,
|
|
allowing improved performance as the database grows. This
|
|
is particularly valuable to maintain clustering.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Increase default values for <link
|
|
linkend="guc-shared-buffers"><varname>shared_buffers</varname></link>
|
|
and <varname>max_fsm_pages</varname>
|
|
(Andrew)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve locking performance by breaking the lock manager tables into
|
|
sections
|
|
(Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This allows locking to be more fine-grained, reducing
|
|
contention.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Reduce locking requirements of sequential scans (Qingqing
|
|
Zhou)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Reduce locking required for database creation and destruction
|
|
(Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve the optimizer's selectivity estimates for <link
|
|
linkend="functions-like"><literal>LIKE</literal></link>, <link
|
|
linkend="functions-like"><literal>ILIKE</literal></link>, and
|
|
<link linkend="functions-posix-regexp">regular expression</link>
|
|
operations (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve planning of joins to <link linkend="ddl-inherit">inherited
|
|
tables</link> and <link linkend="queries-union"><literal>UNION
|
|
ALL</literal></link> views (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <link linkend="guc-constraint-exclusion">constraint
|
|
exclusion</link> to be applied to <link
|
|
linkend="ddl-inherit">inherited</link> <command>UPDATE</command> and
|
|
<command>DELETE</command> queries (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
<command>SELECT</command> already honored constraint exclusion.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve planning of constant <literal>WHERE</literal> clauses, such as
|
|
a condition that depends only on variables inherited from an
|
|
outer query level (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Protocol-level unnamed prepared statements are re-planned
|
|
for each set of <literal>BIND</literal> values (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This improves performance because the exact parameter values
|
|
can be used in the plan.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Speed up vacuuming of B-Tree indexes (Heikki Linnakangas,
|
|
Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid extra scan of tables without indexes during <link
|
|
linkend="sql-vacuum"><command>VACUUM</command></link> (Greg Stark)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve multicolumn <link linkend="gist"><acronym>GiST</acronym></link>
|
|
indexing (Oleg, Teodor)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Remove dead index entries before B-Tree page split (Junji
|
|
Teramoto)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Server Changes</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow a forced switch to a new transaction log file (Simon, Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This is valuable for keeping warm standby slave servers
|
|
in sync with the master. Transaction log file switching now also happens
|
|
automatically during <link
|
|
linkend="functions-admin"><function>pg_stop_backup()</function></link>.
|
|
This ensures that all
|
|
transaction log files needed for recovery can be archived immediately.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <acronym>WAL</acronym> informational functions (Simon)
|
|
</para>
|
|
|
|
<para>
|
|
Add functions for interrogating the current transaction log insertion
|
|
point and determining <acronym>WAL</acronym> filenames from the
|
|
hex <acronym>WAL</acronym> locations displayed by <link
|
|
linkend="functions-admin"><function>pg_stop_backup()</function></link>
|
|
and related functions.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve recovery from a crash during <acronym>WAL</acronym> replay (Simon)
|
|
</para>
|
|
|
|
<para>
|
|
The server now does periodic checkpoints during <acronym>WAL</acronym>
|
|
recovery, so if there is a crash, future <acronym>WAL</acronym>
|
|
recovery is shortened. This also eliminates the need for
|
|
warm standby servers to replay the entire log since the
|
|
base backup if they crash.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve reliability of long-term <acronym>WAL</acronym> replay
|
|
(Heikki, Simon, Tom)
|
|
</para>
|
|
|
|
<para>
|
|
Formerly, trying to roll forward through more than 2 billion
|
|
transactions would not work due to XID wraparound. This meant
|
|
warm standby servers had to be reloaded
|
|
from fresh base backups periodically.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link
|
|
linkend="guc-archive-timeout"><varname>archive_timeout</varname></link>
|
|
to force transaction log file switches at a given interval (Simon)
|
|
</para>
|
|
|
|
<para>
|
|
This enforces a maximum replication delay for warm standby servers.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add native <link linkend="auth-ldap"><acronym>LDAP</acronym></link>
|
|
authentication (Magnus Hagander)
|
|
</para>
|
|
|
|
<para>
|
|
This is particularly useful for platforms that do not
|
|
support <acronym>PAM</acronym>, such as Windows.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link linkend="sql-grant-description-objects"><literal>GRANT
|
|
CONNECT ON DATABASE</literal></link> (Gevik Babakhani)
|
|
</para>
|
|
|
|
<para>
|
|
This gives SQL-level control over database access. It works as
|
|
an additional filter on top of the existing
|
|
<link linkend="auth-pg-hba-conf"><filename>pg_hba.conf</filename></link>
|
|
controls.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add support for <link linkend="ssl-tcp"><acronym>SSL</acronym>
|
|
Certificate Revocation List</link> (<acronym>CRL</acronym>) files
|
|
(Libor Hohoš)
|
|
</para>
|
|
|
|
<para>
|
|
The server and <application>libpq</application> both recognize <acronym>CRL</acronym>
|
|
files now.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<link linkend="gist"><acronym>GiST</acronym></link> indexes are
|
|
now clusterable (Teodor)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Remove routine autovacuum server log entries (Bruce)
|
|
</para>
|
|
|
|
<para>
|
|
<link
|
|
linkend="monitoring-stats-views-table"><literal>pg_stat_activity</literal></link>
|
|
now shows autovacuum activity.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Track maximum XID age within individual tables, instead of whole databases (Alvaro)
|
|
</para>
|
|
|
|
<para>
|
|
This reduces the overhead involved in preventing transaction
|
|
ID wraparound, by avoiding unnecessary VACUUMs.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add last vacuum and analyze timestamp columns to the stats
|
|
collector (Larry Rosenman)
|
|
</para>
|
|
|
|
<para>
|
|
These values now appear in the <link
|
|
linkend="monitoring-stats-views-table"><literal>pg_stat_*_tables</literal></link>
|
|
system views.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve performance of statistics monitoring, especially
|
|
<varname>stats_command_string</varname>
|
|
(Tom, Bruce)
|
|
</para>
|
|
|
|
<para>
|
|
This release enables <varname>stats_command_string</varname> by
|
|
default, now that its overhead is minimal. This means
|
|
<link
|
|
linkend="monitoring-stats-views-table"><literal>pg_stat_activity</literal></link>
|
|
will now show all active queries by default.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a <literal>waiting</literal> column to <link
|
|
linkend="monitoring-stats-views-table"><literal>pg_stat_activity</literal></link>
|
|
(Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This allows <structname>pg_stat_activity</structname> to show all the
|
|
information included in the <application>ps</application> display.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add configuration parameter <link
|
|
linkend="guc-update-process-title"><varname>update_process_title</varname></link>
|
|
to control whether the <application>ps</application> display is updated
|
|
for every command (Bruce)
|
|
</para>
|
|
|
|
<para>
|
|
On platforms where it is expensive to update the <application>ps</application>
|
|
display, it might be worthwhile to turn this off and rely solely on
|
|
<structname>pg_stat_activity</structname> for status information.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow units to be specified in configuration settings
|
|
(Peter)
|
|
</para>
|
|
|
|
<para>
|
|
For example, you can now set <link
|
|
linkend="guc-shared-buffers"><varname>shared_buffers</varname></link>
|
|
to <literal>32MB</literal> rather than mentally converting sizes.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add support for <link linkend="config-setting">include
|
|
directives</link> in <filename>postgresql.conf</filename> (Joachim
|
|
Wieland)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve logging of protocol-level prepare/bind/execute
|
|
messages (Bruce, Tom)
|
|
</para>
|
|
|
|
<para>
|
|
Such logging now shows statement names, bind parameter
|
|
values, and the text of the query being executed. Also,
|
|
the query text is properly included in logged error messages
|
|
when enabled by <varname>log_min_error_statement</varname>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent <link
|
|
linkend="guc-max-stack-depth"><varname>max_stack_depth</varname></link>
|
|
from being set to unsafe values
|
|
</para>
|
|
|
|
<para>
|
|
On platforms where we can determine the actual kernel stack depth
|
|
limit (which is most), make sure that the initial default value of
|
|
<varname>max_stack_depth</varname> is safe, and reject attempts to set it
|
|
to unsafely large values.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Enable highlighting of error location in query in more
|
|
cases (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
The server is now able to report a specific error location for
|
|
some semantic errors (such as unrecognized column name), rather
|
|
than just for basic syntax errors as before.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <quote>failed to re-find parent key</quote> errors in
|
|
<command>VACUUM</command> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Clean out <filename>pg_internal.init</filename> cache files during server
|
|
restart (Simon)
|
|
</para>
|
|
|
|
<para>
|
|
This avoids a hazard that the cache files might contain stale
|
|
data after PITR recovery.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix race condition for truncation of a large relation across a
|
|
gigabyte boundary by <command>VACUUM</command> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix bug causing needless deadlock errors on row-level locks (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix bugs affecting multi-gigabyte hash indexes (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Each backend process is now its own process group leader (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This allows query cancel to abort subprocesses invoked from a
|
|
backend or archive/recovery process.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Query Changes</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link linkend="sql-insert"><command>INSERT</command></link>/<link
|
|
linkend="sql-update"><command>UPDATE</command></link>/<link
|
|
linkend="sql-delete"><command>DELETE</command></link>
|
|
<literal>RETURNING</literal> (Jonah Harris, Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This allows these commands to return values, such as the
|
|
computed serial key for a new row. In the <command>UPDATE</command>
|
|
case, values from the updated version of the row are returned.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add support for multiple-row <link
|
|
linkend="queries-values"><literal>VALUES</literal></link> clauses,
|
|
per SQL standard (Joe, Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This allows <command>INSERT</command> to insert multiple rows of
|
|
constants, or queries to generate result sets using constants.
|
|
For example, <literal>INSERT ... VALUES (...), (...),
|
|
....</literal>, and <literal>SELECT * FROM (VALUES (...), (...),
|
|
....) AS alias(f1, ...)</literal>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <link linkend="sql-update"><command>UPDATE</command></link>
|
|
and <link linkend="sql-delete"><command>DELETE</command></link>
|
|
to use an alias for the target table (Atsushi Ogawa)
|
|
</para>
|
|
|
|
<para>
|
|
The SQL standard does not permit an alias in these commands, but
|
|
many database systems allow one anyway for notational convenience.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <link linkend="sql-update"><command>UPDATE</command></link>
|
|
to set multiple columns with a list of values (Susanne
|
|
Ebrecht)
|
|
</para>
|
|
|
|
<para>
|
|
This is basically a short-hand for assigning the columns
|
|
and values in pairs. The syntax is <literal>UPDATE tab
|
|
SET (<replaceable>column</replaceable>, ...) = (<replaceable>val</replaceable>, ...)</literal>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make row comparisons work per standard (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
The forms <, <=, >, >= now compare rows lexicographically,
|
|
that is, compare the first elements, if equal compare the second
|
|
elements, and so on. Formerly they expanded to an AND condition
|
|
across all the elements, which was neither standard nor very useful.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link linkend="sql-truncate"><literal>CASCADE</literal></link>
|
|
option to <command>TRUNCATE</command> (Joachim Wieland)
|
|
</para>
|
|
|
|
<para>
|
|
This causes <command>TRUNCATE</command> to automatically include all tables
|
|
that reference the specified table(s) via foreign keys. While
|
|
convenient, this is a dangerous tool — use with caution!
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support <literal>FOR UPDATE</literal> and <literal>FOR SHARE</literal>
|
|
in the same <link linkend="sql-insert"><literal>SELECT</literal></link>
|
|
command (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link linkend="functions-comparisons"><literal>IS NOT
|
|
DISTINCT FROM</literal></link> (Pavel Stehule)
|
|
</para>
|
|
|
|
<para>
|
|
This operator is similar to equality (<literal>=</literal>), but
|
|
evaluates to true when both left and right operands are
|
|
<literal>NULL</literal>, and to false when just one is, rather than
|
|
yielding <literal>NULL</literal> in these cases.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve the length output used by <link
|
|
linkend="queries-union"><literal>UNION</literal></link>/<literal>INTERSECT</literal>/<literal>EXCEPT</literal>
|
|
(Tom)
|
|
</para>
|
|
|
|
<para>
|
|
When all corresponding columns are of the same defined length, that
|
|
length is used for the result, rather than a generic length.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <link linkend="functions-like"><literal>ILIKE</literal></link>
|
|
to work for multi-byte encodings (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
Internally, <literal>ILIKE</literal> now calls <function>lower()</function>
|
|
and then uses <literal>LIKE</literal>. Locale-specific regular
|
|
expression patterns still do not work in these encodings.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Enable <link
|
|
linkend="guc-standard-conforming-strings"><varname>standard_conforming_strings</varname></link>
|
|
to be turned <literal>on</literal> (Kevin Grittner)
|
|
</para>
|
|
|
|
<para>
|
|
This allows backslash escaping in strings to be disabled,
|
|
making <productname>PostgreSQL</productname> more
|
|
standards-compliant. The default is <literal>off</literal> for backwards
|
|
compatibility, but future releases will default this to <literal>on</literal>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Do not flatten subqueries that contain <literal>volatile</literal>
|
|
functions in their target lists (Jaime Casanova)
|
|
</para>
|
|
|
|
<para>
|
|
This prevents surprising behavior due to multiple evaluation
|
|
of a <literal>volatile</literal> function (such as <function>random()</function>
|
|
or <function>nextval()</function>). It might cause performance
|
|
degradation in the presence of functions that are unnecessarily
|
|
marked as <literal>volatile</literal>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add system views <link
|
|
linkend="view-pg-prepared-statements"><literal>pg_prepared_statements</literal></link>
|
|
and <link
|
|
linkend="view-pg-cursors"><literal>pg_cursors</literal></link>
|
|
to show prepared statements and open cursors (Joachim Wieland, Neil)
|
|
</para>
|
|
|
|
<para>
|
|
These are very useful in pooled connection setups.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support portal parameters in <link
|
|
linkend="sql-explain"><command>EXPLAIN</command></link> and <link
|
|
linkend="sql-execute"><command>EXECUTE</command></link> (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This allows, for example, <acronym>JDBC</acronym> <literal>?</literal> parameters to
|
|
work in these commands.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
If <acronym>SQL</acronym>-level <link
|
|
linkend="sql-prepare"><command>PREPARE</command></link> parameters
|
|
are unspecified, infer their types from the content of the
|
|
query (Neil)
|
|
</para>
|
|
|
|
<para>
|
|
Protocol-level <command>PREPARE</command> already did this.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <literal>LIMIT</literal> and <literal>OFFSET</literal> to exceed
|
|
two billion (Dhanaraj M)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Object Manipulation Changes</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <literal>TABLESPACE</literal> clause to <link
|
|
linkend="sql-createtableas"><command>CREATE TABLE AS</command></link>
|
|
(Neil)
|
|
</para>
|
|
|
|
<para>
|
|
This allows a tablespace to be specified for the new table.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <literal>ON COMMIT</literal> clause to <link
|
|
linkend="sql-createtableas"><command>CREATE TABLE AS</command></link>
|
|
(Neil)
|
|
</para>
|
|
|
|
<para>
|
|
This allows temporary tables to be truncated or dropped on
|
|
transaction commit. The default behavior is for the table
|
|
to remain until the session ends.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <literal>INCLUDING CONSTRAINTS</literal> to <link
|
|
linkend="sql-createtable"><command>CREATE TABLE LIKE</command></link>
|
|
(Greg Stark)
|
|
</para>
|
|
|
|
<para>
|
|
This allows easy copying of <literal>CHECK</literal> constraints to a new
|
|
table.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow the creation of placeholder (shell) <link
|
|
linkend="sql-createtype">types</link> (Martijn van Oosterhout)
|
|
</para>
|
|
|
|
<para>
|
|
A shell type declaration creates a type name, without specifying
|
|
any of the details of the type. Making a shell type is useful
|
|
because it allows cleaner declaration of the type's input/output
|
|
functions, which must exist before the type can be defined <quote>for
|
|
real</quote>. The syntax is <command>CREATE TYPE <replaceable
|
|
class="parameter">typename</replaceable></command>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<link linkend="sql-createaggregate">Aggregate functions</link>
|
|
now support multiple input parameters (Sergey Koposov, Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add new aggregate creation <link
|
|
linkend="sql-createaggregate">syntax</link> (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
The new syntax is <command>CREATE AGGREGATE
|
|
<replaceable>aggname</replaceable> (<replaceable>input_type</replaceable>)
|
|
(<replaceable>parameter_list</replaceable>)</command>. This more
|
|
naturally supports the new multi-parameter aggregate
|
|
functionality. The previous syntax is still supported.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link
|
|
linkend="sql-alterrole"><command>ALTER ROLE PASSWORD NULL</command></link>
|
|
to remove a previously set role password (Peter)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <command>DROP</command> object <literal>IF EXISTS</literal> for many
|
|
object types (Andrew)
|
|
</para>
|
|
|
|
<para>
|
|
This allows <command>DROP</command> operations on non-existent
|
|
objects without generating an error.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link linkend="sql-drop-owned"><literal>DROP OWNED</literal></link>
|
|
to drop all objects owned by a role (Alvaro)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link linkend="sql-reassign-owned"><literal>REASSIGN
|
|
OWNED</literal></link> to reassign ownership of all objects owned
|
|
by a role (Alvaro)
|
|
</para>
|
|
|
|
<para>
|
|
This, and <literal>DROP OWNED</literal> above, facilitate dropping
|
|
roles.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link linkend="sql-grant"><command>GRANT ON SEQUENCE</command></link>
|
|
syntax (Bruce)
|
|
</para>
|
|
|
|
<para>
|
|
This was added for setting sequence-specific permissions.
|
|
<literal>GRANT ON TABLE</literal> for sequences is still supported
|
|
for backward compatibility.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link linkend="sql-grant"><literal>USAGE</literal></link>
|
|
permission for sequences that allows only <function>currval()</function>
|
|
and <function>nextval()</function>, not <function>setval()</function>
|
|
(Bruce)
|
|
</para>
|
|
|
|
<para>
|
|
<literal>USAGE</literal> permission allows more fine-grained
|
|
control over sequence access. Granting <literal>USAGE</literal>
|
|
allows users to increment
|
|
a sequence, but prevents them from setting the sequence to
|
|
an arbitrary value using <function>setval()</function>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link linkend="sql-altertable"><literal>ALTER TABLE
|
|
[ NO ] INHERIT</literal></link> (Greg Stark)
|
|
</para>
|
|
|
|
<para>
|
|
This allows inheritance to be adjusted dynamically, rather than
|
|
just at table creation and destruction. This is very valuable
|
|
when using inheritance to implement table partitioning.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <link linkend="sql-comment">comments</link> on global
|
|
objects to be stored globally (Kris Jurka)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, comments attached to databases were stored in individual
|
|
databases, making them ineffective, and there was no provision
|
|
at all for comments on roles or tablespaces. This change adds a new
|
|
shared catalog <link
|
|
linkend="catalog-pg-shdescription"><structname>pg_shdescription</structname></link>
|
|
and stores comments on databases, roles, and tablespaces therein.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Utility Command Changes</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add option to allow indexes to be created without blocking
|
|
concurrent writes to the table (Greg Stark, Tom)
|
|
</para>
|
|
|
|
<para>
|
|
The new syntax is <link linkend="sql-createindex"><command>CREATE
|
|
INDEX CONCURRENTLY</command></link>. The default behavior is
|
|
still to block table modification while an index is being
|
|
created.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Provide <link linkend="functions-advisory-locks">advisory
|
|
locking</link> functionality (Abhijit Menon-Sen, Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This is a new locking API designed to replace what used to be
|
|
in /contrib/userlock. The userlock code is now on pgfoundry.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <link linkend="sql-copy"><command>COPY</command></link> to
|
|
dump a <command>SELECT</command> query (Zoltan Boszormenyi, Karel
|
|
Zak)
|
|
</para>
|
|
|
|
<para>
|
|
This allows <command>COPY</command> to dump arbitrary <acronym>SQL</acronym>
|
|
queries. The syntax is <literal>COPY (SELECT ...) TO</literal>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make the <link linkend="sql-copy"><command>COPY</command></link>
|
|
command return a command tag that includes the number of
|
|
rows copied (Volkan YAZICI)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <link linkend="sql-vacuum"><command>VACUUM</command></link>
|
|
to expire rows without being affected by other concurrent
|
|
<command>VACUUM</command> operations (Hannu Krossing, Alvaro, Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <link linkend="app-initdb"><application>initdb</application></link>
|
|
detect the operating system locale and set the default
|
|
<varname>DateStyle</varname> accordingly (Peter)
|
|
</para>
|
|
|
|
<para>
|
|
This makes it more likely that the installed
|
|
<filename>postgresql.conf</filename> <varname>DateStyle</varname> value will
|
|
be as desired.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Reduce number of progress messages displayed by <application>initdb</application> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Date/Time Changes</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow full timezone names in <link
|
|
linkend="datatype-datetime"><type>timestamp</type></link> input values
|
|
(Joachim Wieland)
|
|
</para>
|
|
|
|
<para>
|
|
For example, <literal>'2006-05-24 21:11
|
|
America/New_York'::timestamptz</literal>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support configurable timezone abbreviations (Joachim Wieland)
|
|
</para>
|
|
|
|
<para>
|
|
A desired set of timezone abbreviations can be chosen via the
|
|
configuration parameter <link
|
|
linkend="guc-timezone-abbreviations"><varname>timezone_abbreviations</varname></link>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link
|
|
linkend="view-pg-timezone-abbrevs"><varname>pg_timezone_abbrevs</varname></link>
|
|
and <link
|
|
linkend="view-pg-timezone-names"><varname>pg_timezone_names</varname></link>
|
|
views to show supported timezones (Magnus Hagander)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link
|
|
linkend="functions-datetime-table"><function>clock_timestamp()</function></link>,
|
|
<link
|
|
linkend="functions-datetime-table"><function>statement_timestamp()</function></link>,
|
|
and <link
|
|
linkend="functions-datetime-table"><function>transaction_timestamp()</function></link>
|
|
(Bruce)
|
|
</para>
|
|
|
|
<para>
|
|
<function>clock_timestamp()</function> is the current wall-clock time,
|
|
<function>statement_timestamp()</function> is the time the current
|
|
statement arrived at the server, and
|
|
<function>transaction_timestamp()</function> is an alias for
|
|
<function>now()</function>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <link
|
|
linkend="functions-formatting"><function>to_char()</function></link>
|
|
to print localized month and day names (Euler Taveira de
|
|
Oliveira)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <link
|
|
linkend="functions-formatting"><function>to_char(time)</function></link>
|
|
and <link
|
|
linkend="functions-formatting"><function>to_char(interval)</function></link>
|
|
to output <acronym>AM</acronym>/<acronym>PM</acronym> specifications
|
|
(Bruce)
|
|
</para>
|
|
|
|
<para>
|
|
Intervals and times are treated as 24-hour periods, e.g.
|
|
<literal>25 hours</literal> is considered <acronym>AM</acronym>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add new function <link
|
|
linkend="functions-datetime-table"><function>justify_interval()</function></link>
|
|
to adjust interval units (Mark Dilger)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow timezone offsets up to 14:59 away from GMT
|
|
</para>
|
|
|
|
<para>
|
|
Kiribati uses GMT+14, so we'd better accept that.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Interval computation improvements (Michael Glaesemann, Bruce)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Other Data Type and Function Changes</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow arrays to contain <literal>NULL</literal> elements (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow assignment to array elements not contiguous with the existing
|
|
entries (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
The intervening array positions will be filled with nulls.
|
|
This is per SQL standard.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
New built-in <link linkend="functions-array">operators</link>
|
|
for array-subset comparisons (<literal>@></literal>,
|
|
<literal><@</literal>, <literal>&&</literal>) (Teodor, Tom)
|
|
</para>
|
|
|
|
<para>
|
|
These operators can be indexed for many data types using
|
|
<acronym>GiST</acronym> or <acronym>GIN</acronym> indexes.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add convenient arithmetic <link
|
|
linkend="cidr-inet-operators-table">operations</link> on
|
|
<type>INET</type>/<type>CIDR</type> values (Stephen R. van den
|
|
Berg)
|
|
</para>
|
|
|
|
<para>
|
|
The new operators are <literal>&</literal> (and), <literal>|</literal>
|
|
(or), <literal>~</literal> (not), <type>inet</type> <literal>+</literal> <type>int8</type>,
|
|
<type>inet</type> <literal>-</literal> <type>int8</type>, and
|
|
<type>inet</type> <literal>-</literal> <type>inet</type>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add new <link
|
|
linkend="functions-aggregate-statistics-table">aggregate functions</link>
|
|
from SQL:2003 (Neil)
|
|
</para>
|
|
|
|
<para>
|
|
The new functions are <function>var_pop()</function>,
|
|
<function>var_samp()</function>, <function>stddev_pop()</function>, and
|
|
<function>stddev_samp()</function>. <function>var_samp()</function> and
|
|
<function>stddev_samp()</function> are merely renamings of the
|
|
existing aggregates <function>variance()</function> and
|
|
<function>stddev()</function>. The latter names remain available
|
|
for backward compatibility.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add SQL:2003 statistical <link
|
|
linkend="functions-aggregate-statistics-table">aggregates</link>
|
|
(Sergey Koposov)
|
|
</para>
|
|
|
|
<para>
|
|
New functions: <function>regr_intercept()</function>,
|
|
<function>regr_slope()</function>, <function>regr_r2()</function>,
|
|
<function>corr()</function>, <function>covar_samp()</function>,
|
|
<function>covar_pop()</function>, <function>regr_avgx()</function>,
|
|
<function>regr_avgy()</function>, <function>regr_sxy()</function>,
|
|
<function>regr_sxx()</function>, <function>regr_syy()</function>,
|
|
<function>regr_count()</function>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <link linkend="sql-createdomain">domains</link> to be
|
|
based on other domains (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Properly enforce domain <link
|
|
linkend="ddl-constraints"><literal>CHECK</literal></link> constraints
|
|
everywhere (Neil, Tom)
|
|
</para>
|
|
|
|
<para>
|
|
For example, the result of a user-defined function that is
|
|
declared to return a domain type is now checked against the
|
|
domain's constraints. This closes a significant hole in the domain
|
|
implementation.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix problems with dumping renamed <link
|
|
linkend="datatype-serial"><type>SERIAL</type></link> columns
|
|
(Tom)
|
|
</para>
|
|
|
|
<para>
|
|
The fix is to dump a <type>SERIAL</type> column by explicitly
|
|
specifying its <literal>DEFAULT</literal> and sequence elements,
|
|
and reconstructing the <type>SERIAL</type> column on reload
|
|
using a new <link linkend="sql-altersequence"><command>ALTER
|
|
SEQUENCE OWNED BY</command></link> command. This also allows
|
|
dropping a <type>SERIAL</type> column specification.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a server-side sleep function <link
|
|
linkend="functions-datetime-delay"><function>pg_sleep()</function></link>
|
|
(Joachim Wieland)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add all comparison operators for the <link
|
|
linkend="datatype-oid"><type>tid</type></link> (tuple id) data
|
|
type (Mark Kirkwood, Greg Stark, Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>PL/pgSQL Server-Side Language Changes</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <literal>TG_table_name</literal> and <literal>TG_table_schema</literal> to
|
|
trigger parameters (Andrew)
|
|
</para>
|
|
|
|
<para>
|
|
<literal>TG_relname</literal> is now deprecated. Comparable
|
|
changes have been made in the trigger parameters for the other
|
|
PLs as well.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <literal>FOR</literal> statements to return values to scalars
|
|
as well as records and row types (Pavel Stehule)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a <literal>BY</literal> clause to the <literal>FOR</literal> loop,
|
|
to control the iteration increment (Jaime Casanova)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <literal>STRICT</literal> to <link
|
|
linkend="plpgsql-statements-sql-onerow"><command>SELECT
|
|
INTO</command></link> (Matt Miller)
|
|
</para>
|
|
|
|
<para>
|
|
<literal>STRICT</literal> mode throws an exception if more or less
|
|
than one row is returned by the <command>SELECT</command>, for
|
|
<productname>Oracle PL/SQL</productname> compatibility.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>PL/Perl Server-Side Language Changes</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <literal>table_name</literal> and <literal>table_schema</literal> to
|
|
trigger parameters (Adam Sjøgren)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add prepared queries (Dmitry Karasik)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <literal>$_TD</literal> trigger data a global variable (Andrew)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, it was lexical, which caused unexpected sharing
|
|
violations.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Run PL/Perl and PL/PerlU in separate interpreters, for security
|
|
reasons (Andrew)
|
|
</para>
|
|
<para>
|
|
In consequence, they can no longer share data nor loaded modules.
|
|
Also, if Perl has not been compiled with the requisite flags to
|
|
allow multiple interpreters, only one of these languages can be used
|
|
in any given backend process.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>PL/Python Server-Side Language Changes</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Named parameters are passed as ordinary variables, as well as in the
|
|
<literal>args[]</literal> array (Sven Suursoho)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <literal>table_name</literal> and <literal>table_schema</literal> to
|
|
trigger parameters (Andrew)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow returning of composite types and result sets (Sven Suursoho)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Return result-set as <literal>list</literal>, <literal>iterator</literal>,
|
|
or <literal>generator </literal>(Sven Suursoho)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow functions to return <literal>void</literal> (Neil)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Python 2.5 is now supported (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title><link linkend="app-psql"><application>psql</application></link> Changes</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add new command <literal>\password</literal> for changing role
|
|
password with client-side password encryption (Peter)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <literal>\c</literal> to connect to a new host and port
|
|
number (David, Volkan YAZICI)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add tablespace display to <literal>\l+</literal> (Philip Yarra)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve <literal>\df</literal> slash command to include the argument
|
|
names and modes (<literal>OUT</literal> or <literal>INOUT</literal>) of
|
|
the function (David Fetter)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support binary <command>COPY</command> (Andreas Pflug)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add option to run the entire session in a single transaction
|
|
(Simon)
|
|
</para>
|
|
|
|
<para>
|
|
Use option <literal>-1</literal> or <literal>--single-transaction</literal>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support for automatically retrieving <command>SELECT</command>
|
|
results in batches using a cursor (Chris Mair)
|
|
</para>
|
|
|
|
<para>
|
|
This is enabled using <command>\set FETCH_COUNT
|
|
<replaceable>n</replaceable></command>. This
|
|
feature allows large result sets to be retrieved in
|
|
<application>psql</application> without attempting to buffer the entire
|
|
result set in memory.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make multi-line values align in the proper column
|
|
(Martijn van Oosterhout)
|
|
</para>
|
|
|
|
<para>
|
|
Field values containing newlines are now displayed in a more
|
|
readable fashion.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Save multi-line statements as a single entry, rather than
|
|
one line at a time (Sergey E. Koposov)
|
|
</para>
|
|
|
|
<para>
|
|
This makes up-arrow recall of queries easier. (This is
|
|
not available on Windows, because that platform uses the native
|
|
command-line editing present in the operating system.)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make the line counter 64-bit so it can handle files with more
|
|
than two billion lines (David Fetter)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Report both the returned data and the command status tag
|
|
for <command>INSERT</command>/<command>UPDATE</command>/<command>DELETE
|
|
RETURNING</command> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title><link linkend="app-pgdump"><application>pg_dump</application></link> Changes</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow complex selection of objects to be included or excluded
|
|
by <application>pg_dump</application> (Greg Sabino Mullane)
|
|
</para>
|
|
|
|
<para>
|
|
<application>pg_dump</application> now supports multiple <literal>-n</literal>
|
|
(schema) and <literal>-t</literal> (table) options, and adds
|
|
<literal>-N</literal> and <literal>-T</literal> options to exclude objects.
|
|
Also, the arguments of these switches can now be wild-card expressions
|
|
rather than single object names, for example
|
|
<literal>-t 'foo*'</literal>, and a schema can be part of
|
|
a <literal>-t</literal> or <literal>-T</literal> switch, for example
|
|
<literal>-t schema1.table1</literal>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link linkend="app-pgrestore"><application>pg_restore</application></link>
|
|
<literal>--no-data-for-failed-tables</literal> option to suppress
|
|
loading data if table creation failed (i.e., the table already
|
|
exists) (Martin Pitt)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link linkend="app-pgrestore"><application>pg_restore</application></link>
|
|
option to run the entire session in a single transaction
|
|
(Simon)
|
|
</para>
|
|
|
|
<para>
|
|
Use option <literal>-1</literal> or <literal>--single-transaction</literal>.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title><link linkend="libpq"><application>libpq</application></link> Changes</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link
|
|
linkend="libpq-misc"><function>PQencryptPassword()</function></link>
|
|
to encrypt passwords (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This allows passwords to be sent pre-encrypted for commands
|
|
like <link linkend="sql-alterrole"><command>ALTER ROLE ...
|
|
PASSWORD</command></link>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add function <link
|
|
linkend="libpq-threading"><function>PQisthreadsafe()</function></link>
|
|
(Bruce)
|
|
</para>
|
|
|
|
<para>
|
|
This allows applications to query the thread-safety status
|
|
of the library.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link
|
|
linkend="libpq-exec-main"><function>PQdescribePrepared()</function></link>,
|
|
<link
|
|
linkend="libpq-exec-main"><function>PQdescribePortal()</function></link>,
|
|
and related functions to return information about previously
|
|
prepared statements and open cursors (Volkan YAZICI)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <link linkend="libpq-ldap"><acronym>LDAP</acronym></link> lookups
|
|
from <link
|
|
linkend="libpq-pgservice"><filename>pg_service.conf</filename></link>
|
|
(Laurenz Albe)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow a hostname in <link
|
|
linkend="libpq-pgpass"><filename>~/.pgpass</filename></link>
|
|
to match the default socket directory (Bruce)
|
|
</para>
|
|
|
|
<para>
|
|
A blank hostname continues to match any Unix-socket connection,
|
|
but this addition allows entries that are specific to one of
|
|
several postmasters on the machine.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title><link linkend="ecpg"><application>ecpg</application></link> Changes</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <link linkend="sql-show"><command>SHOW</command></link> to
|
|
put its result into a variable (Joachim Wieland)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link linkend="sql-copy"><command>COPY TO STDOUT</command></link>
|
|
(Joachim Wieland)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add regression tests (Joachim Wieland, Michael)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Major source code cleanups (Joachim Wieland, Michael)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title><application>Windows</application> Port</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <acronym>MSVC</acronym> to compile the <productname>PostgreSQL</productname>
|
|
server (Magnus, Hiroshi Saito)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <acronym>MSVC</acronym> support for utility commands and <link
|
|
linkend="app-pgdump"><application>pg_dump</application></link> (Hiroshi
|
|
Saito)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add support for Windows code pages <literal>1253</literal>,
|
|
<literal>1254</literal>, <literal>1255</literal>, and <literal>1257</literal>
|
|
(Kris Jurka)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Drop privileges on startup, so that the server can be started from
|
|
an administrative account (Magnus)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Stability fixes (Qingqing Zhou, Magnus)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add native semaphore implementation (Qingqing Zhou)
|
|
</para>
|
|
|
|
<para>
|
|
The previous code mimicked SysV semaphores.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Source Code Changes</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link linkend="gin"><acronym>GIN</acronym></link> (Generalized
|
|
Inverted iNdex) index access method (Teodor, Oleg)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Remove R-tree indexing (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
Rtree has been re-implemented using <link
|
|
linkend="gist"><acronym>GiST</acronym></link>. Among other
|
|
differences, this means that rtree indexes now have support
|
|
for crash recovery via write-ahead logging (WAL).
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Reduce libraries needlessly linked into the backend (Martijn
|
|
van Oosterhout, Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a configure flag to allow libedit to be preferred over
|
|
<acronym>GNU</acronym> readline (Bruce)
|
|
</para>
|
|
|
|
<para>
|
|
Use configure <link
|
|
linkend="configure"><literal>--with-libedit-preferred</literal></link>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow installation into directories containing spaces
|
|
(Peter)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve ability to relocate installation directories (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add support for <productname>Solaris x86_64</productname> using the
|
|
<productname>Solaris</productname> compiler (Pierre Girard, Theo
|
|
Schlossnagle, Bruce)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <application>DTrace</application> support (Robert Lor)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <literal>PG_VERSION_NUM</literal> for use by third-party
|
|
applications wanting to test the backend version in C using >
|
|
and < comparisons (Bruce)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <literal>XLOG_BLCKSZ</literal> as independent from <literal>BLCKSZ</literal>
|
|
(Mark Wong)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <literal>LWLOCK_STATS</literal> define to report locking
|
|
activity (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Emit warnings for unknown <application>configure</application> options
|
|
(Martijn van Oosterhout)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add server support for <quote>plugin</quote> libraries
|
|
that can be used for add-on tasks such as debugging and performance
|
|
measurement (Korry Douglas)
|
|
</para>
|
|
|
|
<para>
|
|
This consists of two features: a table of <quote>rendezvous
|
|
variables</quote> that allows separately-loaded shared libraries to
|
|
communicate, and a new configuration parameter <link
|
|
linkend="guc-local-preload-libraries"><varname>local_preload_libraries</varname></link>
|
|
that allows libraries to be loaded into specific sessions without
|
|
explicit cooperation from the client application. This allows
|
|
external add-ons to implement features such as a PL/pgSQL debugger.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Rename existing configuration parameter
|
|
<varname>preload_libraries</varname> to <link
|
|
linkend="guc-shared-preload-libraries"><varname>shared_preload_libraries</varname></link>
|
|
(Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This was done for clarity in comparison to
|
|
<varname>local_preload_libraries</varname>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add new configuration parameter <link
|
|
linkend="guc-server-version-num"><varname>server_version_num</varname></link>
|
|
(Greg Sabino Mullane)
|
|
</para>
|
|
|
|
<para>
|
|
This is like <varname>server_version</varname>, but is an
|
|
integer, e.g. <literal>80200</literal>. This allows applications to
|
|
make version checks more easily.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a configuration parameter <link
|
|
linkend="guc-seq-page-cost"><varname>seq_page_cost</varname></link>
|
|
(Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Re-implement the <link linkend="regress">regression test</link> script as a C program
|
|
(Magnus, Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow loadable modules to allocate shared memory and
|
|
lightweight locks (Marc Munro)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add automatic initialization and finalization of dynamically
|
|
loaded libraries (Ralf Engelschall, Tom)
|
|
</para>
|
|
|
|
<para>
|
|
New <link linkend="xfunc-c-dynload">functions</link>
|
|
<function>_PG_init()</function> and <function>_PG_fini()</function> are
|
|
called if the library defines such symbols. Hence we no
|
|
longer need to specify an initialization function in
|
|
<varname>shared_preload_libraries</varname>; we can assume that
|
|
the library used the <function>_PG_init()</function> convention
|
|
instead.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link
|
|
linkend="xfunc-c-dynload"><literal>PG_MODULE_MAGIC</literal></link>
|
|
header block to all shared object files (Martijn van
|
|
Oosterhout)
|
|
</para>
|
|
|
|
<para>
|
|
The magic block prevents version mismatches between loadable object
|
|
files and servers.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add shared library support for AIX (Laurenz Albe)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
New <link linkend="datatype-xml"><acronym>XML</acronym></link>
|
|
documentation section (Bruce)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Contrib Changes</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Major tsearch2 improvements (Oleg, Teodor)
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
multibyte encoding support, including <acronym>UTF8</acronym>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
query rewriting support
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
improved ranking functions
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
thesaurus dictionary support
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Ispell dictionaries now recognize <application>MySpell</application>
|
|
format, used by <application>OpenOffice</application>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<acronym>GIN</acronym> support
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add adminpack module containing <application>Pgadmin</application> administration
|
|
functions (Dave)
|
|
</para>
|
|
|
|
<para>
|
|
These functions provide additional file system access
|
|
routines not present in the default <productname>PostgreSQL</productname>
|
|
server.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add sslinfo module (Victor Wagner)
|
|
</para>
|
|
|
|
<para>
|
|
Reports information about the current connection's <acronym>SSL</acronym>
|
|
certificate.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add pgrowlocks module (Tatsuo)
|
|
</para>
|
|
|
|
<para>
|
|
This shows row locking information for a specified table.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add hstore module (Oleg, Teodor)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add isn module, replacing isbn_issn (Jeremy Kronuz)
|
|
</para>
|
|
|
|
<para>
|
|
This new implementation supports <acronym>EAN13</acronym>, <acronym>UPC</acronym>,
|
|
<acronym>ISBN</acronym> (books), <acronym>ISMN</acronym> (music), and
|
|
<acronym>ISSN</acronym> (serials).
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add index information functions to pgstattuple (ITAGAKI Takahiro,
|
|
Satoshi Nagayasu)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add pg_freespacemap module to display free space map information
|
|
(Mark Kirkwood)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
pgcrypto now has all planned functionality (Marko Kreen)
|
|
</para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
Include iMath library in pgcrypto to have the public-key encryption
|
|
functions always available.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Add SHA224 algorithm that was missing in OpenBSD code.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Activate builtin code for SHA224/256/384/512 hashes on older
|
|
OpenSSL to have those algorithms always available.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
New function gen_random_bytes() that returns cryptographically strong
|
|
randomness. Useful for generating encryption keys.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Remove digest_exists(), hmac_exists() and cipher_exists() functions.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improvements to cube module (Joshua Reich)
|
|
</para>
|
|
|
|
<para>
|
|
New functions are <function>cube(float[])</function>,
|
|
<function>cube(float[], float[])</function>, and
|
|
<function>cube_subset(cube, int4[])</function>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add async query capability to dblink (Kai Londenberg,
|
|
Joe Conway)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
New operators for array-subset comparisons (<literal>@></literal>,
|
|
<literal><@</literal>, <literal>&&</literal>) (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
Various contrib packages already had these operators for their
|
|
datatypes, but the naming wasn't consistent. We have now added
|
|
consistently named array-subset comparison operators to the core code
|
|
and all the contrib packages that have such functionality.
|
|
(The old names remain available, but are deprecated.)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add uninstall scripts for all contrib packages that have install
|
|
scripts (David, Josh Drake)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
</sect2>
|
|
</sect1>
|