2010-09-20 22:08:53 +02:00
|
|
|
<!-- doc/src/sgml/release-8.0.sgml -->
|
2009-05-02 22:17:19 +02:00
|
|
|
<!-- See header comment in release.sgml about typical markup -->
|
|
|
|
|
2010-09-30 20:27:15 +02:00
|
|
|
<sect1 id="release-8-0-26">
|
|
|
|
<title>Release 8.0.26</title>
|
|
|
|
|
|
|
|
<note>
|
2011-01-29 19:00:18 +01:00
|
|
|
<title>Release Date</title>
|
2010-09-30 20:27:15 +02:00
|
|
|
<simpara>2010-10-04</simpara>
|
|
|
|
</note>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This release contains a variety of fixes from 8.0.25.
|
|
|
|
For information about new features in the 8.0 major release, see
|
|
|
|
<xref linkend="release-8-0">.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This is expected to be the last <productname>PostgreSQL</> release
|
|
|
|
in the 8.0.X series. Users are encouraged to update to a newer
|
|
|
|
release branch soon.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Migration to Version 8.0.26</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
A dump/restore is not required for those running 8.0.X.
|
|
|
|
However, if you are upgrading from a version earlier than 8.0.22,
|
|
|
|
see the release notes for 8.0.22.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Changes</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
2010-09-30 23:18:51 +02:00
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Use a separate interpreter for each calling SQL userid in PL/Perl and
|
|
|
|
PL/Tcl (Tom Lane)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This change prevents security problems that can be caused by subverting
|
|
|
|
Perl or Tcl code that will be executed later in the same session under
|
|
|
|
another SQL user identity (for example, within a <literal>SECURITY
|
|
|
|
DEFINER</> function). Most scripting languages offer numerous ways that
|
|
|
|
that might be done, such as redefining standard functions or operators
|
|
|
|
called by the target function. Without this change, any SQL user with
|
|
|
|
Perl or Tcl language usage rights can do essentially anything with the
|
|
|
|
SQL privileges of the target function's owner.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
The cost of this change is that intentional communication among Perl
|
|
|
|
and Tcl functions becomes more difficult. To provide an escape hatch,
|
|
|
|
PL/PerlU and PL/TclU functions continue to use only one interpreter
|
|
|
|
per session. This is not considered a security issue since all such
|
|
|
|
functions execute at the trust level of a database superuser already.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
It is likely that third-party procedural languages that claim to offer
|
|
|
|
trusted execution have similar security issues. We advise contacting
|
|
|
|
the authors of any PL you are depending on for security-critical
|
|
|
|
purposes.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Our thanks to Tim Bunce for pointing out this issue (CVE-2010-3433).
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
2010-09-30 20:27:15 +02:00
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Prevent possible crashes in <function>pg_get_expr()</> by disallowing
|
|
|
|
it from being called with an argument that is not one of the system
|
|
|
|
catalog columns it's intended to be used with
|
|
|
|
(Heikki Linnakangas, Tom Lane)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
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>
|
|
|
|
Defend against functions returning setof record where not all the
|
|
|
|
returned rows are actually of the same rowtype (Tom Lane)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Take care to fsync the contents of lockfiles (both
|
|
|
|
<filename>postmaster.pid</> and the socket lockfile) while writing them
|
|
|
|
(Tom Lane)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This omission could result in corrupted lockfile contents if the
|
|
|
|
machine crashes shortly after postmaster start. That could in turn
|
|
|
|
prevent subsequent attempts to start the postmaster from succeeding,
|
|
|
|
until the lockfile is manually removed.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Avoid recursion while assigning XIDs to heavily-nested
|
|
|
|
subtransactions (Andres Freund, Robert Haas)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
The original coding could result in a crash if there was limited
|
|
|
|
stack space.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix <varname>log_line_prefix</>'s <literal>%i</> escape,
|
|
|
|
which could produce junk early in backend startup (Tom Lane)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix possible data corruption in <command>ALTER TABLE ... SET
|
|
|
|
TABLESPACE</> when archiving is enabled (Jeff Davis)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow <command>CREATE DATABASE</> and <command>ALTER DATABASE ... SET
|
|
|
|
TABLESPACE</> to be interrupted by query-cancel (Guillaume Lelarge)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
In PL/Python, defend against null pointer results from
|
|
|
|
<function>PyCObject_AsVoidPtr</> and <function>PyCObject_FromVoidPtr</>
|
|
|
|
(Peter Eisentraut)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Improve <filename>contrib/dblink</>'s handling of tables containing
|
|
|
|
dropped columns (Tom Lane)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix connection leak after <quote>duplicate connection name</quote>
|
|
|
|
errors in <filename>contrib/dblink</> (Itagaki Takahiro)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix <filename>contrib/dblink</> to handle connection names longer than
|
|
|
|
62 bytes correctly (Itagaki Takahiro)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Update build infrastructure and documentation to reflect the source code
|
|
|
|
repository's move from CVS to Git (Magnus Hagander and others)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Update time zone data files to <application>tzdata</> release 2010l
|
|
|
|
for DST law changes in Egypt and Palestine; also historical corrections
|
|
|
|
for Finland.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This change also adds new names for two Micronesian timezones:
|
|
|
|
Pacific/Chuuk is now preferred over Pacific/Truk (and the preferred
|
|
|
|
abbreviation is CHUT not TRUT) and Pacific/Pohnpei is preferred over
|
|
|
|
Pacific/Ponape.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|
|
|
|
|
2010-05-13 01:20:49 +02:00
|
|
|
<sect1 id="release-8-0-25">
|
|
|
|
<title>Release 8.0.25</title>
|
|
|
|
|
|
|
|
<note>
|
2011-01-29 19:00:18 +01:00
|
|
|
<title>Release Date</title>
|
2010-05-13 01:20:49 +02:00
|
|
|
<simpara>2010-05-17</simpara>
|
|
|
|
</note>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This release contains a variety of fixes from 8.0.24.
|
|
|
|
For information about new features in the 8.0 major release, see
|
|
|
|
<xref linkend="release-8-0">.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
The <productname>PostgreSQL</> community will stop releasing updates
|
|
|
|
for the 8.0.X release series in July 2010.
|
|
|
|
Users are encouraged to update to a newer release branch soon.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Migration to Version 8.0.25</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
A dump/restore is not required for those running 8.0.X.
|
|
|
|
However, if you are upgrading from a version earlier than 8.0.22,
|
|
|
|
see the release notes for 8.0.22.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Changes</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
2010-05-13 23:26:59 +02:00
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Enforce restrictions in <literal>plperl</> using an opmask applied to
|
|
|
|
the whole interpreter, instead of using <filename>Safe.pm</>
|
|
|
|
(Tim Bunce, Andrew Dunstan)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Recent developments have convinced us that <filename>Safe.pm</> is too
|
|
|
|
insecure to rely on for making <literal>plperl</> trustable. This
|
|
|
|
change removes use of <filename>Safe.pm</> altogether, in favor of using
|
|
|
|
a separate interpreter with an opcode mask that is always applied.
|
|
|
|
Pleasant side effects of the change include that it is now possible to
|
|
|
|
use Perl's <literal>strict</> pragma in a natural way in
|
|
|
|
<literal>plperl</>, and that Perl's <literal>$a</> and <literal>$b</>
|
|
|
|
variables work as expected in sort routines, and that function
|
|
|
|
compilation is significantly faster. (CVE-2010-1169)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Prevent PL/Tcl from executing untrustworthy code from
|
|
|
|
<structname>pltcl_modules</> (Tom)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
PL/Tcl's feature for autoloading Tcl code from a database table
|
|
|
|
could be exploited for trojan-horse attacks, because there was no
|
|
|
|
restriction on who could create or insert into that table. This change
|
|
|
|
disables the feature unless <structname>pltcl_modules</> is owned by a
|
|
|
|
superuser. (However, the permissions on the table are not checked, so
|
|
|
|
installations that really need a less-than-secure modules table can
|
|
|
|
still grant suitable privileges to trusted non-superusers.) Also,
|
|
|
|
prevent loading code into the unrestricted <quote>normal</> Tcl
|
|
|
|
interpreter unless we are really going to execute a <literal>pltclu</>
|
|
|
|
function. (CVE-2010-1170)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
2010-05-13 01:20:49 +02:00
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Do not allow an unprivileged user to reset superuser-only parameter
|
|
|
|
settings (Alvaro)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Previously, if an unprivileged user ran <literal>ALTER USER ... RESET
|
|
|
|
ALL</> for himself, or <literal>ALTER DATABASE ... RESET ALL</> for
|
|
|
|
a database he owns, this would remove all special parameter settings
|
|
|
|
for the user or database, even ones that are only supposed to be
|
|
|
|
changeable by a superuser. Now, the <command>ALTER</> will only
|
|
|
|
remove the parameters that the user has permission to change.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Avoid possible crash during backend shutdown if shutdown occurs
|
|
|
|
when a <literal>CONTEXT</> addition would be made to log entries (Tom)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
In some cases the context-printing function would fail because the
|
|
|
|
current transaction had already been rolled back when it came time
|
|
|
|
to print a log message.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Update pl/perl's <filename>ppport.h</> for modern Perl versions
|
|
|
|
(Andrew)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix assorted memory leaks in pl/python (Andreas Freund, Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Prevent infinite recursion in <application>psql</> when expanding
|
|
|
|
a variable that refers to itself (Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Ensure that <filename>contrib/pgstattuple</> functions respond to cancel
|
|
|
|
interrupts promptly (Tatsuhito Kasahara)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Make server startup deal properly with the case that
|
|
|
|
<function>shmget()</> returns <literal>EINVAL</> for an existing
|
|
|
|
shared memory segment (Tom)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This behavior has been observed on BSD-derived kernels including OS X.
|
|
|
|
It resulted in an entirely-misleading startup failure complaining that
|
|
|
|
the shared memory request size was too large.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Update time zone data files to <application>tzdata</> release 2010j
|
|
|
|
for DST law changes in Argentina, Australian Antarctic, Bangladesh,
|
|
|
|
Mexico, Morocco, Pakistan, Palestine, Russia, Syria, Tunisia;
|
|
|
|
also historical corrections for Taiwan.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|
|
|
|
|
2010-03-10 02:58:11 +01:00
|
|
|
<sect1 id="release-8-0-24">
|
|
|
|
<title>Release 8.0.24</title>
|
|
|
|
|
|
|
|
<note>
|
2011-01-29 19:00:18 +01:00
|
|
|
<title>Release Date</title>
|
2010-03-10 02:58:11 +01:00
|
|
|
<simpara>2010-03-15</simpara>
|
|
|
|
</note>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This release contains a variety of fixes from 8.0.23.
|
|
|
|
For information about new features in the 8.0 major release, see
|
|
|
|
<xref linkend="release-8-0">.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
The <productname>PostgreSQL</> community will stop releasing updates
|
|
|
|
for the 8.0.X release series in July 2010.
|
|
|
|
Users are encouraged to update to a newer release branch soon.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Migration to Version 8.0.24</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
A dump/restore is not required for those running 8.0.X.
|
|
|
|
However, if you are upgrading from a version earlier than 8.0.22,
|
|
|
|
see the release notes for 8.0.22.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Changes</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add new configuration parameter <varname>ssl_renegotiation_limit</> to
|
|
|
|
control how often we do session key renegotiation for an SSL connection
|
|
|
|
(Magnus)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This can be set to zero to disable renegotiation completely, which may
|
|
|
|
be required if a broken SSL library is used. In particular, some
|
|
|
|
vendors are shipping stopgap patches for CVE-2009-3555 that cause
|
|
|
|
renegotiation attempts to fail.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix possible 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>
|
|
|
|
Make <function>substring()</> for <type>bit</> types treat any negative
|
|
|
|
length as meaning <quote>all the rest of the string</> (Tom)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
The previous coding treated only -1 that way, and would produce an
|
|
|
|
invalid result value for other negative values, possibly leading to
|
|
|
|
a crash (CVE-2010-0442).
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix integer-to-bit-string conversions to handle the first fractional
|
|
|
|
byte correctly when the output bit width is wider than the given
|
|
|
|
integer by something other than a multiple of 8 bits (Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix some cases of pathologically slow regular expression matching (Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix the <literal>STOP WAL LOCATION</> entry in backup history files to
|
|
|
|
report the next WAL segment's name when the end location is exactly at a
|
|
|
|
segment boundary (Itagaki Takahiro)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
When reading <filename>pg_hba.conf</> and related files, do not treat
|
|
|
|
<literal>@something</> as a file inclusion request if the <literal>@</>
|
|
|
|
appears inside quote marks; also, never treat <literal>@</> by itself
|
|
|
|
as a file inclusion request (Tom)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This prevents erratic behavior if a role or database name starts with
|
|
|
|
<literal>@</>. If you need to include a file whose path name
|
|
|
|
contains spaces, you can still do so, but you must write
|
|
|
|
<literal>@"/path to/file"</> rather than putting the quotes around
|
|
|
|
the whole construct.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Prevent infinite loop on some platforms if a directory is named as
|
|
|
|
an inclusion target in <filename>pg_hba.conf</> and related files
|
|
|
|
(Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix plpgsql failure in one case where a composite column is set to NULL
|
|
|
|
(Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add <literal>volatile</> markings in PL/Python to avoid possible
|
|
|
|
compiler-specific misbehavior (Zdenek Kotala)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Ensure PL/Tcl initializes the Tcl interpreter fully (Tom)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
The only known symptom of this oversight is that the Tcl
|
|
|
|
<literal>clock</> command misbehaves if using Tcl 8.5 or later.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Prevent crash in <filename>contrib/dblink</> when too many key
|
|
|
|
columns are specified to a <function>dblink_build_sql_*</> function
|
|
|
|
(Rushabh Lathia, Joe Conway)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix assorted crashes in <filename>contrib/xml2</> caused by sloppy
|
|
|
|
memory management (Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Update time zone data files to <application>tzdata</> release 2010e
|
|
|
|
for DST law changes in Bangladesh, Chile, Fiji, Mexico, Paraguay, Samoa.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|
|
|
|
|
2009-12-10 01:31:14 +01:00
|
|
|
<sect1 id="release-8-0-23">
|
|
|
|
<title>Release 8.0.23</title>
|
|
|
|
|
|
|
|
<note>
|
2011-01-29 19:00:18 +01:00
|
|
|
<title>Release Date</title>
|
2009-12-10 01:31:14 +01:00
|
|
|
<simpara>2009-12-14</simpara>
|
|
|
|
</note>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This release contains a variety of fixes from 8.0.22.
|
|
|
|
For information about new features in the 8.0 major release, see
|
|
|
|
<xref linkend="release-8-0">.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Migration to Version 8.0.23</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
A dump/restore is not required for those running 8.0.X.
|
|
|
|
However, if you are upgrading from a version earlier than 8.0.22,
|
|
|
|
see the release notes for 8.0.22.
|
|
|
|
</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</> at unsafe times
|
|
|
|
(Alvaro)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
2011-06-29 08:26:14 +02:00
|
|
|
This fix prevents a PANIC if a <literal>VACUUM FULL</> is canceled
|
2009-12-10 01:31:14 +01:00
|
|
|
after it's already committed its tuple movements, as well as transient
|
|
|
|
errors if a plain <literal>VACUUM</> is interrupted after having
|
|
|
|
truncated the table.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix possible crash due to integer overflow in hash table size
|
|
|
|
calculation (Tom)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This could occur with extremely large planner estimates for the size of
|
|
|
|
a hashjoin's result.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix very rare crash in <type>inet</>/<type>cidr</> comparisons (Chris
|
|
|
|
Mikkelson)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix premature drop of temporary files used for a cursor that is accessed
|
|
|
|
within a subtransaction (Heikki)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix PAM password processing to be more robust (Tom)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
The previous code is known to fail with the combination of the Linux
|
|
|
|
<literal>pam_krb5</> PAM module with Microsoft Active Directory as the
|
|
|
|
domain controller. It might have problems elsewhere too, since it was
|
|
|
|
making unjustified assumptions about what arguments the PAM stack would
|
|
|
|
pass to it.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix rare crash in exception processing in PL/Python (Peter)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Ensure <application>psql</>'s flex module is compiled with the correct
|
|
|
|
system header definitions (Tom)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This fixes build failures on platforms where
|
|
|
|
<literal>--enable-largefile</> causes incompatible changes in the
|
|
|
|
generated code.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Make the postmaster ignore any <literal>application_name</> parameter in
|
|
|
|
connection request packets, to improve compatibility with future libpq
|
|
|
|
versions (Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Update time zone data files to <application>tzdata</> release 2009s
|
|
|
|
for DST law changes in Antarctica, Argentina, Bangladesh, Fiji,
|
|
|
|
Novokuznetsk, Pakistan, Palestine, Samoa, Syria; also historical
|
|
|
|
corrections for Hong Kong.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|
|
|
|
|
2009-08-27 03:27:34 +02:00
|
|
|
<sect1 id="release-8-0-22">
|
|
|
|
<title>Release 8.0.22</title>
|
|
|
|
|
|
|
|
<note>
|
2011-01-29 19:00:18 +01:00
|
|
|
<title>Release Date</title>
|
2009-09-04 00:13:47 +02:00
|
|
|
<simpara>2009-09-09</simpara>
|
2009-08-27 03:27:34 +02:00
|
|
|
</note>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This release contains a variety of fixes from 8.0.21.
|
|
|
|
For information about new features in the 8.0 major release, see
|
|
|
|
<xref linkend="release-8-0">.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Migration to Version 8.0.22</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
A dump/restore is not required for those running 8.0.X.
|
2009-09-04 00:13:47 +02:00
|
|
|
However, if you have any hash indexes on <type>interval</> columns,
|
|
|
|
you must <command>REINDEX</> them after updating to 8.0.22.
|
|
|
|
Also, if you are upgrading from a version earlier than 8.0.6,
|
|
|
|
see the release notes for 8.0.6.
|
2009-08-27 03:27:34 +02:00
|
|
|
</para>
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Changes</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
2009-09-04 00:13:47 +02:00
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Disallow <command>RESET ROLE</> and <command>RESET SESSION
|
|
|
|
AUTHORIZATION</> inside security-definer functions (Tom, Heikki)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This covers a case that was missed in the previous patch that
|
|
|
|
disallowed <command>SET ROLE</> and <command>SET SESSION
|
|
|
|
AUTHORIZATION</> inside security-definer functions.
|
|
|
|
(See CVE-2007-6600)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix handling of sub-SELECTs appearing in the arguments of
|
|
|
|
an outer-level aggregate function (Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix hash calculation for data type <type>interval</> (Tom)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This corrects wrong results for hash joins on interval values.
|
|
|
|
It also changes the contents of hash indexes on interval columns.
|
|
|
|
If you have any such indexes, you must <command>REINDEX</> them
|
|
|
|
after updating.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
2009-08-27 03:27:34 +02:00
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Treat <function>to_char(..., 'TH')</> as an uppercase ordinal
|
|
|
|
suffix with <literal>'HH'</>/<literal>'HH12'</> (Heikki)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
It was previously handled as <literal>'th'</> (lowercase).
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2009-09-04 00:13:47 +02:00
|
|
|
Fix overflow for <literal>INTERVAL '<replaceable>x</> ms'</literal>
|
|
|
|
when <replaceable>x</> is more than 2 million and integer
|
|
|
|
datetimes are in use (Alex Hunsaker)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix calculation of distance between a point and a line segment (Tom)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This led to incorrect results from a number of geometric operators.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix <type>money</> data type to work in locales where currency
|
|
|
|
amounts have no fractional digits, e.g. Japan (Itagaki Takahiro)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Properly round datetime input like
|
|
|
|
<literal>00:12:57.9999999999999999999999999999</> (Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix poor choice of page split point in GiST R-tree operator classes
|
|
|
|
(Teodor)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix portability issues in plperl initialization (Andrew Dunstan)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix <application>pg_ctl</> to not go into an infinite loop if
|
|
|
|
<filename>postgresql.conf</> is empty (Jeff Davis)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix <filename>contrib/xml2</>'s <function>xslt_process()</> to
|
2009-08-27 03:27:34 +02:00
|
|
|
properly handle the maximum number of parameters (twenty) (Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2009-09-04 00:13:47 +02:00
|
|
|
Improve robustness of <application>libpq</>'s code to recover
|
|
|
|
from errors during <command>COPY FROM STDIN</> (Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Avoid including conflicting readline and editline header files
|
|
|
|
when both libraries are installed (Zdenek Kotala)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Update time zone data files to <application>tzdata</> release 2009l
|
|
|
|
for DST law changes in Bangladesh, Egypt, Jordan, Pakistan,
|
|
|
|
Argentina/San_Luis, Cuba, Jordan (historical correction only),
|
|
|
|
Mauritius, Morocco, Palestine, Syria, Tunisia.
|
2009-08-27 03:27:34 +02:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|
|
|
|
|
2009-05-02 22:17:19 +02:00
|
|
|
<sect1 id="release-8-0-21">
|
|
|
|
<title>Release 8.0.21</title>
|
|
|
|
|
|
|
|
<note>
|
2011-01-29 19:00:18 +01:00
|
|
|
<title>Release Date</title>
|
2009-05-02 22:17:19 +02:00
|
|
|
<simpara>2009-03-16</simpara>
|
|
|
|
</note>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This release contains a variety of fixes from 8.0.20.
|
|
|
|
For information about new features in the 8.0 major release, see
|
|
|
|
<xref linkend="release-8-0">.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Migration to Version 8.0.21</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
A dump/restore is not required for those running 8.0.X.
|
|
|
|
However, if you are upgrading from a version earlier than 8.0.6,
|
|
|
|
see the release notes for 8.0.6.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Changes</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Prevent error recursion crashes when encoding conversion fails (Tom)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This change extends fixes made in the last two minor releases for
|
|
|
|
related failure scenarios. The previous fixes were narrowly tailored
|
|
|
|
for the original problem reports, but we have now recognized that
|
|
|
|
<emphasis>any</> error thrown by an encoding conversion function could
|
|
|
|
potentially lead to infinite recursion while trying to report the
|
|
|
|
error. The solution therefore is to disable translation and encoding
|
|
|
|
conversion and report the plain-ASCII form of any error message,
|
|
|
|
if we find we have gotten into a recursive error reporting situation.
|
|
|
|
(CVE-2009-0922)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Disallow <command>CREATE CONVERSION</> with the wrong encodings
|
|
|
|
for the specified conversion function (Heikki)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This prevents one possible scenario for encoding conversion failure.
|
|
|
|
The previous change is a backstop to guard against other kinds of
|
|
|
|
failures in the same area.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix core dump when <function>to_char()</> is given format codes that
|
|
|
|
are inappropriate for the type of the data argument (Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add <literal>MUST</> (Mauritius Island Summer Time) to the default list
|
|
|
|
of known timezone abbreviations (Xavier Bugaud)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|
|
|
|
|
|
|
|
<sect1 id="release-8-0-20">
|
|
|
|
<title>Release 8.0.20</title>
|
|
|
|
|
|
|
|
<note>
|
2011-01-29 19:00:18 +01:00
|
|
|
<title>Release Date</title>
|
2009-05-02 22:17:19 +02:00
|
|
|
<simpara>2009-02-02</simpara>
|
|
|
|
</note>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This release contains a variety of fixes from 8.0.19.
|
|
|
|
For information about new features in the 8.0 major release, see
|
|
|
|
<xref linkend="release-8-0">.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Migration to Version 8.0.20</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
A dump/restore is not required for those running 8.0.X.
|
|
|
|
However, if you are upgrading from a version earlier than 8.0.6,
|
|
|
|
see the release notes for 8.0.6.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Changes</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Improve handling of URLs in <function>headline()</> function (Teodor)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Improve handling of overlength headlines in <function>headline()</>
|
|
|
|
function (Teodor)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Prevent possible Assert failure or misconversion if an encoding
|
|
|
|
conversion is created with the wrong conversion function for the
|
|
|
|
specified pair of encodings (Tom, Heikki)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Avoid unnecessary locking of small tables in <command>VACUUM</>
|
|
|
|
(Heikki)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix uninitialized variables in <filename>contrib/tsearch2</>'s
|
|
|
|
<function>get_covers()</> function (Teodor)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Make all documentation reference <literal>pgsql-bugs</> and/or
|
|
|
|
<literal>pgsql-hackers</> as appropriate, instead of the
|
|
|
|
now-decommissioned <literal>pgsql-ports</> and <literal>pgsql-patches</>
|
|
|
|
mailing lists (Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Update time zone data files to <application>tzdata</> release 2009a (for
|
|
|
|
Kathmandu and historical DST corrections in Switzerland, Cuba)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|
|
|
|
|
|
|
|
<sect1 id="release-8-0-19">
|
|
|
|
<title>Release 8.0.19</title>
|
|
|
|
|
|
|
|
<note>
|
2011-01-29 19:00:18 +01:00
|
|
|
<title>Release Date</title>
|
2009-05-02 22:17:19 +02:00
|
|
|
<simpara>2008-11-03</simpara>
|
|
|
|
</note>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This release contains a variety of fixes from 8.0.18.
|
|
|
|
For information about new features in the 8.0 major release, see
|
|
|
|
<xref linkend="release-8-0">.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Migration to Version 8.0.19</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
A dump/restore is not required for those running 8.0.X.
|
|
|
|
However, if you are upgrading from a version earlier than 8.0.6,
|
|
|
|
see the release notes for 8.0.6.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Changes</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix backend crash when the client encoding cannot represent a localized
|
|
|
|
error message (Tom)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
We have addressed similar issues before, but it would still fail if
|
|
|
|
the <quote>character has no equivalent</> message itself couldn't
|
|
|
|
be converted. The fix is to disable localization and send the plain
|
|
|
|
ASCII error message when we detect such a situation.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix possible crash when deeply nested functions are invoked from
|
|
|
|
a trigger (Tom)
|
|
|
|
</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>
|
|
|
|
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</>
|
|
|
|
build (Ron Mayer)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Ensure <function>SPI_getvalue</> and <function>SPI_getbinval</>
|
|
|
|
behave correctly when the passed tuple and tuple descriptor have
|
|
|
|
different numbers of columns (Tom)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This situation is normal when a table has had columns added or removed,
|
|
|
|
but these two functions didn't handle it properly.
|
|
|
|
The only likely consequence is an incorrect error indication.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix <application>ecpg</>'s parsing of <command>CREATE USER</> (Michael)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix recent breakage of <literal>pg_ctl restart</> (Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Update time zone data files to <application>tzdata</> release 2008i (for
|
|
|
|
DST law changes in Argentina, Brazil, Mauritius, Syria)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|
|
|
|
|
|
|
|
<sect1 id="release-8-0-18">
|
|
|
|
<title>Release 8.0.18</title>
|
|
|
|
|
|
|
|
<note>
|
2011-01-29 19:00:18 +01:00
|
|
|
<title>Release Date</title>
|
2009-05-02 22:17:19 +02:00
|
|
|
<simpara>2008-09-22</simpara>
|
|
|
|
</note>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This release contains a variety of fixes from 8.0.17.
|
|
|
|
For information about new features in the 8.0 major release, see
|
|
|
|
<xref linkend="release-8-0">.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Migration to Version 8.0.18</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
A dump/restore is not required for those running 8.0.X.
|
|
|
|
However, if you are upgrading from a version earlier than 8.0.6,
|
|
|
|
see the release notes for 8.0.6.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Changes</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Widen local lock counters from 32 to 64 bits (Tom)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This responds to reports that the counters could overflow in
|
|
|
|
sufficiently long transactions, leading to unexpected <quote>lock is
|
|
|
|
already held</> errors.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add checks in executor startup to ensure that the tuples produced by an
|
|
|
|
<command>INSERT</> or <command>UPDATE</> will match the target table's
|
|
|
|
current rowtype (Tom)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
<command>ALTER COLUMN TYPE</>, 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 datetime input functions to correctly detect integer overflow when
|
|
|
|
running on a 64-bit platform (Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Improve performance of writing very long log messages to syslog (Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix bug in backwards scanning of a cursor on a <literal>SELECT DISTINCT
|
|
|
|
ON</> query (Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix planner to estimate that <literal>GROUP BY</> expressions yielding
|
|
|
|
boolean results always result in two groups, regardless of the
|
|
|
|
expressions' contents (Tom)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This is very substantially more accurate than the regular <literal>GROUP
|
|
|
|
BY</> estimate for certain boolean tests like <replaceable>col</>
|
|
|
|
<literal>IS NULL</>.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix PL/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>
|
|
|
|
Fix PL/Python to work with Python 2.5
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This is a back-port of fixes made during the 8.2 development cycle.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Improve <application>pg_dump</> and <application>pg_restore</>'s
|
|
|
|
error reporting after failure to send a SQL command (Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix <application>pg_ctl</> to properly preserve postmaster
|
|
|
|
command-line arguments across a <literal>restart</> (Bruce)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Update time zone data files to <application>tzdata</> release 2008f (for
|
|
|
|
DST law changes in Argentina, Bahamas, Brazil, Mauritius, Morocco,
|
|
|
|
Pakistan, Palestine, and Paraguay)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|
|
|
|
|
|
|
|
<sect1 id="release-8-0-17">
|
|
|
|
<title>Release 8.0.17</title>
|
|
|
|
|
|
|
|
<note>
|
2011-01-29 19:00:18 +01:00
|
|
|
<title>Release Date</title>
|
2009-05-02 22:17:19 +02:00
|
|
|
<simpara>2008-06-12</simpara>
|
|
|
|
</note>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This release contains one serious bug fix over 8.0.16.
|
|
|
|
For information about new features in the 8.0 major release, see
|
|
|
|
<xref linkend="release-8-0">.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Migration to Version 8.0.17</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
A dump/restore is not required for those running 8.0.X.
|
|
|
|
However, if you are upgrading from a version earlier than 8.0.6,
|
|
|
|
see the release notes for 8.0.6.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Changes</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Make <function>pg_get_ruledef()</> parenthesize negative constants (Tom)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Before this fix, a negative constant in a view or rule might be dumped
|
|
|
|
as, say, <literal>-42::integer</>, which is subtly incorrect: it should
|
|
|
|
be <literal>(-42)::integer</> due to operator precedence rules.
|
|
|
|
Usually this would make little difference, but it could interact with
|
|
|
|
another recent patch to cause
|
|
|
|
<productname>PostgreSQL</> to reject what had been a valid
|
|
|
|
<command>SELECT DISTINCT</> view query. Since this could result in
|
|
|
|
<application>pg_dump</> output failing to reload, it is being treated
|
|
|
|
as a high-priority fix. The only released versions in which dump
|
|
|
|
output is actually incorrect are 8.3.1 and 8.2.7.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|
|
|
|
|
|
|
|
<sect1 id="release-8-0-16">
|
|
|
|
<title>Release 8.0.16</title>
|
|
|
|
|
|
|
|
<note>
|
2011-01-29 19:00:18 +01:00
|
|
|
<title>Release Date</title>
|
2009-05-02 22:17:19 +02:00
|
|
|
<simpara>never released</simpara>
|
|
|
|
</note>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This release contains a variety of fixes from 8.0.15.
|
|
|
|
For information about new features in the 8.0 major release, see
|
|
|
|
<xref linkend="release-8-0">.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Migration to Version 8.0.16</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
A dump/restore is not required for those running 8.0.X.
|
|
|
|
However, if you are upgrading from a version earlier than 8.0.6,
|
|
|
|
see the release notes for 8.0.6.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Changes</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix <command>ALTER TABLE ADD COLUMN ... PRIMARY KEY</> so that the new
|
|
|
|
column is correctly checked to see if it's been initialized to all
|
|
|
|
non-nulls (Brendan Jurd)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Previous versions neglected to check this requirement at all.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix possible <command>CREATE TABLE</> failure when inheriting the
|
|
|
|
<quote>same</> constraint from multiple parent relations that
|
|
|
|
inherited that constraint from a common ancestor (Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix conversions between ISO-8859-5 and other encodings to handle
|
|
|
|
Cyrillic <quote>Yo</> characters (<literal>e</> and <literal>E</> with
|
|
|
|
two dots) (Sergey Burladyan)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix a few datatype input functions
|
|
|
|
that were allowing unused bytes in their results to contain
|
|
|
|
uninitialized, unpredictable values (Tom)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This could lead to failures in which two apparently identical literal
|
|
|
|
values were not seen as equal, resulting in the parser complaining
|
|
|
|
about unmatched <literal>ORDER BY</> and <literal>DISTINCT</>
|
|
|
|
expressions.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix a corner case in regular-expression substring matching
|
|
|
|
(<literal>substring(<replaceable>string</> from
|
|
|
|
<replaceable>pattern</>)</literal>) (Tom)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
The problem occurs when there is a match to the pattern overall but
|
|
|
|
the user has specified a parenthesized subexpression and that
|
|
|
|
subexpression hasn't got a match. An example is
|
|
|
|
<literal>substring('foo' from 'foo(bar)?')</>.
|
|
|
|
This should return NULL, since <literal>(bar)</> isn't matched, but
|
|
|
|
it was mistakenly returning the whole-pattern match instead (ie,
|
|
|
|
<literal>foo</>).
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Update time zone data files to <application>tzdata</> release 2008c (for
|
|
|
|
DST law changes in Morocco, Iraq, Choibalsan, Pakistan, Syria, Cuba,
|
|
|
|
Argentina/San_Luis, and Chile)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix incorrect result from <application>ecpg</>'s
|
|
|
|
<function>PGTYPEStimestamp_sub()</> function (Michael)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix core dump in <filename>contrib/xml2</>'s
|
|
|
|
<function>xpath_table()</> function when the input query returns a
|
|
|
|
NULL value (Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix <filename>contrib/xml2</>'s makefile to not override
|
|
|
|
<literal>CFLAGS</> (Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix <literal>DatumGetBool</> macro to not fail with <application>gcc</>
|
|
|
|
4.3 (Tom)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This problem affects <quote>old style</> (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>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix longstanding <command>LISTEN</>/<command>NOTIFY</>
|
|
|
|
race condition (Tom)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
In rare cases a session that had just executed a
|
|
|
|
<command>LISTEN</> might not get a notification, even though
|
|
|
|
one would be expected because the concurrent transaction executing
|
|
|
|
<command>NOTIFY</> was observed to commit later.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
A side effect of the fix is that a transaction that has executed
|
|
|
|
a not-yet-committed <command>LISTEN</> command will not see any
|
|
|
|
row in <structname>pg_listener</> for the <command>LISTEN</>,
|
|
|
|
should it choose to look; formerly it would have. This behavior
|
|
|
|
was never documented one way or the other, but it is possible that
|
|
|
|
some applications depend on the old behavior.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix rare crash when an error occurs during a query using a hash index
|
|
|
|
(Heikki)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix input of datetime values for February 29 in years BC (Tom)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
The former coding was mistaken about which years were leap years.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix <quote>unrecognized node type</> error in some variants of
|
|
|
|
<command>ALTER OWNER</> (Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix <application>pg_ctl</> to correctly extract the postmaster's port
|
|
|
|
number from command-line options (Itagaki Takahiro, Tom)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Previously, <literal>pg_ctl start -w</> could try to contact the
|
|
|
|
postmaster on the wrong port, leading to bogus reports of startup
|
|
|
|
failure.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Use <option>-fwrapv</> to defend against possible misoptimization
|
|
|
|
in recent <application>gcc</> versions (Tom)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This is known to be necessary when building <productname>PostgreSQL</>
|
|
|
|
with <application>gcc</> 4.3 or later.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix display of constant expressions in <literal>ORDER BY</>
|
|
|
|
and <literal>GROUP BY</> (Tom)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
2012-04-24 04:43:09 +02:00
|
|
|
An explicitly casted constant would be shown incorrectly. This could
|
2009-05-02 22:17:19 +02:00
|
|
|
for example lead to corruption of a view definition during
|
|
|
|
dump and reload.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix <application>libpq</> 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-0-15">
|
|
|
|
<title>Release 8.0.15</title>
|
|
|
|
|
|
|
|
<note>
|
2011-01-29 19:00:18 +01:00
|
|
|
<title>Release Date</title>
|
2009-05-02 22:17:19 +02:00
|
|
|
<simpara>2008-01-07</simpara>
|
|
|
|
</note>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This release contains a variety of fixes from 8.0.14,
|
|
|
|
including fixes for significant security issues.
|
|
|
|
For information about new features in the 8.0 major release, see
|
|
|
|
<xref linkend="release-8-0">.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This is the last 8.0.X release for which the <productname>PostgreSQL</>
|
|
|
|
community will produce binary packages for <productname>Windows</>.
|
|
|
|
Windows users are encouraged to move to 8.2.X or later,
|
|
|
|
since there are Windows-specific fixes in 8.2.X that
|
|
|
|
are impractical to back-port. 8.0.X will continue to
|
|
|
|
be supported on other platforms.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Migration to Version 8.0.15</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
A dump/restore is not required for those running 8.0.X. However,
|
|
|
|
if you are upgrading from a version earlier than 8.0.6, see the release
|
|
|
|
notes for 8.0.6.
|
|
|
|
</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>ANALYZE</>, 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</>, 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>ANALYZE</>, <command>REINDEX</>,
|
|
|
|
and <command>CLUSTER</>) to execute as the table owner rather than
|
|
|
|
the calling user, using the same privilege-switching mechanism already
|
|
|
|
used for <literal>SECURITY DEFINER</> functions. To prevent bypassing
|
|
|
|
this security measure, execution of <command>SET SESSION
|
|
|
|
AUTHORIZATION</> and <command>SET ROLE</> is now forbidden within a
|
|
|
|
<literal>SECURITY DEFINER</> 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</> to use only
|
|
|
|
password authentication, as a security measure (Joe)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
The fix that appeared for this in 8.0.14 was incomplete, as it plugged
|
|
|
|
the hole for only some <filename>dblink</> functions. (CVE-2007-6601,
|
|
|
|
CVE-2007-3278)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Update time zone data files to <application>tzdata</> release 2007k
|
|
|
|
(in particular, recent Argentina changes) (Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix planner failure in some cases of <literal>WHERE false AND var IN
|
|
|
|
(SELECT ...)</> (Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Preserve the tablespace of indexes that are
|
|
|
|
rebuilt by <command>ALTER TABLE ... ALTER COLUMN TYPE</> (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</> not use all of <varname>maintenance_work_mem</>
|
|
|
|
when the table is too small for it to be useful (Alvaro)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix potential crash in <function>translate()</> when using a multibyte
|
|
|
|
database encoding (Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix PL/Perl to cope when platform's Perl defines type <literal>bool</>
|
|
|
|
as <literal>int</> rather than <literal>char</> (Tom)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
While this could theoretically happen anywhere, no standard build of
|
|
|
|
Perl did things this way ... until <productname>Mac OS X</> 10.5.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix PL/Python to not crash on long exception messages (Alvaro)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix <application>pg_dump</> to correctly handle inheritance child tables
|
|
|
|
that have default expressions different from their parent's (Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
<application>ecpg</> parser fixes (Michael)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Make <filename>contrib/tablefunc</>'s <function>crosstab()</> handle
|
|
|
|
NULL rowid as a category in its own right, rather than crashing (Joe)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix <type>tsvector</> and <type>tsquery</> output routines to
|
|
|
|
escape backslashes correctly (Teodor, Bruce)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix crash of <function>to_tsvector()</> on huge input strings (Teodor)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Require a specific version of <productname>Autoconf</> to be used
|
|
|
|
when re-generating the <command>configure</> script (Peter)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This affects developers and packagers only. The change was made
|
|
|
|
to prevent accidental use of untested combinations of
|
|
|
|
<productname>Autoconf</> and <productname>PostgreSQL</> versions.
|
|
|
|
You can remove the version check if you really want to use a
|
|
|
|
different <productname>Autoconf</> version, but it's
|
|
|
|
your responsibility whether the result works or not.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|
|
|
|
|
|
|
|
<sect1 id="release-8-0-14">
|
|
|
|
<title>Release 8.0.14</title>
|
|
|
|
|
|
|
|
<note>
|
2011-01-29 19:00:18 +01:00
|
|
|
<title>Release Date</title>
|
2009-05-02 22:17:19 +02:00
|
|
|
<simpara>2007-09-17</simpara>
|
|
|
|
</note>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This release contains a variety of fixes from 8.0.13.
|
|
|
|
For information about new features in the 8.0 major release, see
|
|
|
|
<xref linkend="release-8-0">.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Migration to Version 8.0.14</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
A dump/restore is not required for those running 8.0.X. However,
|
|
|
|
if you are upgrading from a version earlier than 8.0.6, see the release
|
|
|
|
notes for 8.0.6.
|
|
|
|
</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</>
|
|
|
|
on the same table (Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Make <command>CREATE DOMAIN ... DEFAULT NULL</> work properly (Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix excessive logging of <acronym>SSL</> 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</> logging runs out
|
|
|
|
of memory (Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix incorrect handling of some foreign-key corner cases (Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Prevent <command>CLUSTER</> 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 improvements (Magnus)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Suppress timezone name (<literal>%Z</>) in log timestamps on Windows
|
|
|
|
because of possible encoding mismatches (Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Require non-superusers who use <filename>/contrib/dblink</> to use only
|
|
|
|
password authentication, as a security measure (Joe)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|
|
|
|
|
|
|
|
<sect1 id="release-8-0-13">
|
|
|
|
<title>Release 8.0.13</title>
|
|
|
|
|
|
|
|
<note>
|
2011-01-29 19:00:18 +01:00
|
|
|
<title>Release Date</title>
|
2009-05-02 22:17:19 +02:00
|
|
|
<simpara>2007-04-23</simpara>
|
|
|
|
</note>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This release contains a variety of fixes from 8.0.12,
|
|
|
|
including a security fix.
|
|
|
|
For information about new features in the 8.0 major release, see
|
|
|
|
<xref linkend="release-8-0">.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Migration to Version 8.0.13</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
A dump/restore is not required for those running 8.0.X. However,
|
|
|
|
if you are upgrading from a version earlier than 8.0.6, see the release
|
|
|
|
notes for 8.0.6.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Changes</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Support explicit placement of the temporary-table schema within
|
|
|
|
<varname>search_path</>, 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</>. 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</> for more information.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
<filename>/contrib/tsearch2</> crash fixes (Teodor)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix potential-data-corruption bug in how <command>VACUUM FULL</> handles
|
|
|
|
<command>UPDATE</> chains (Tom, Pavan Deolasee)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix PANIC during enlargement of a hash index (bug introduced in 8.0.10)
|
|
|
|
(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-0-12">
|
|
|
|
<title>Release 8.0.12</title>
|
|
|
|
|
|
|
|
<note>
|
2011-01-29 19:00:18 +01:00
|
|
|
<title>Release Date</title>
|
2009-05-02 22:17:19 +02:00
|
|
|
<simpara>2007-02-07</simpara>
|
|
|
|
</note>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This release contains one fix from 8.0.11.
|
|
|
|
For information about new features in the 8.0 major release, see
|
|
|
|
<xref linkend="release-8-0">.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Migration to Version 8.0.12</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
A dump/restore is not required for those running 8.0.X. However,
|
|
|
|
if you are upgrading from a version earlier than 8.0.6, see the release
|
|
|
|
notes for 8.0.6.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Changes</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Remove overly-restrictive check for type length in constraints and
|
|
|
|
functional indexes(Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|
|
|
|
|
|
|
|
<sect1 id="release-8-0-11">
|
|
|
|
<title>Release 8.0.11</title>
|
|
|
|
|
|
|
|
<note>
|
2011-01-29 19:00:18 +01:00
|
|
|
<title>Release Date</title>
|
2009-05-02 22:17:19 +02:00
|
|
|
<simpara>2007-02-05</simpara>
|
|
|
|
</note>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This release contains a variety of fixes from 8.0.10, including
|
|
|
|
a security fix.
|
|
|
|
For information about new features in the 8.0 major release, see
|
|
|
|
<xref linkend="release-8-0">.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Migration to Version 8.0.11</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
A dump/restore is not required for those running 8.0.X. However,
|
|
|
|
if you are upgrading from a version earlier than 8.0.6, see the release
|
|
|
|
notes for 8.0.6.
|
|
|
|
</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 rare bug wherein btree index page splits could fail
|
|
|
|
due to choosing an infeasible split point (Heikki Linnakangas)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix for rare Assert() crash triggered by <literal>UNION</> (Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Tighten security of multi-byte character processing for UTF8 sequences
|
|
|
|
over three bytes long (Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|
|
|
|
|
|
|
|
<sect1 id="release-8-0-10">
|
|
|
|
<title>Release 8.0.10</title>
|
|
|
|
|
|
|
|
<note>
|
2011-01-29 19:00:18 +01:00
|
|
|
<title>Release Date</title>
|
2009-05-02 22:17:19 +02:00
|
|
|
<simpara>2007-01-08</simpara>
|
|
|
|
</note>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This release contains a variety of fixes from 8.0.9.
|
|
|
|
For information about new features in the 8.0 major release, see
|
|
|
|
<xref linkend="release-8-0">.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Migration to Version 8.0.10</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
A dump/restore is not required for those running 8.0.X. However,
|
|
|
|
if you are upgrading from a version earlier than 8.0.6, see the release
|
|
|
|
notes for 8.0.6.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Changes</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Improve handling of <function>getaddrinfo()</> on AIX (Tom)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This fixes a problem with starting the statistics collector,
|
|
|
|
among other things.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix <quote>failed to re-find parent key</> errors in
|
|
|
|
<command>VACUUM</> (Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix race condition for truncation of a large relation across a
|
|
|
|
gigabyte boundary by <command>VACUUM</> (Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix bugs affecting multi-gigabyte hash indexes (Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix possible deadlock in Windows signal handling (Teodor)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix error when constructing an <literal>ARRAY[]</> made up of multiple
|
|
|
|
empty elements (Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix ecpg memory leak during connection (Michael)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
<function>to_number()</> and <function>to_char(numeric)</>
|
|
|
|
are now <literal>STABLE</>, not <literal>IMMUTABLE</>, for
|
|
|
|
new <application>initdb</> installs (Tom)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This is because <varname>lc_numeric</> can potentially
|
|
|
|
change the output of these functions.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Improve index usage of regular expressions that use parentheses (Tom)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This improves <application>psql</> <literal>\d</> performance also.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Update timezone database
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This affects Australian and Canadian daylight-savings rules in
|
|
|
|
particular.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|
|
|
|
|
|
|
|
<sect1 id="release-8-0-9">
|
|
|
|
<title>Release 8.0.9</title>
|
|
|
|
|
|
|
|
<note>
|
2011-01-29 19:00:18 +01:00
|
|
|
<title>Release Date</title>
|
2009-05-02 22:17:19 +02:00
|
|
|
<simpara>2006-10-16</simpara>
|
|
|
|
</note>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This release contains a variety of fixes from 8.0.8.
|
|
|
|
For information about new features in the 8.0 major release, see
|
|
|
|
<xref linkend="release-8-0">.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Migration to Version 8.0.9</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
A dump/restore is not required for those running 8.0.X. However,
|
|
|
|
if you are upgrading from a version earlier than 8.0.6, see the release
|
|
|
|
notes for 8.0.6.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Changes</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem><para>Fix crash when referencing <literal>NEW</> row
|
|
|
|
values in rule WHERE expressions (Tom)</para></listitem>
|
|
|
|
<listitem><para>Fix core dump when an untyped literal is taken as
|
|
|
|
ANYARRAY</para></listitem>
|
|
|
|
<listitem><para>Fix mishandling of AFTER triggers when query contains a SQL
|
|
|
|
function returning multiple rows (Tom)</para></listitem>
|
|
|
|
<listitem><para>Fix <command>ALTER TABLE ... TYPE</> to recheck
|
|
|
|
<literal>NOT NULL</> for <literal>USING</> clause (Tom)</para></listitem>
|
|
|
|
<listitem><para>Fix <function>string_to_array()</> to handle overlapping
|
|
|
|
matches for the separator string</para>
|
|
|
|
<para>For example, <literal>string_to_array('123xx456xxx789', 'xx')</>.
|
|
|
|
</para></listitem>
|
|
|
|
<listitem><para>Fix corner cases in pattern matching for
|
|
|
|
<application>psql</>'s <literal>\d</> commands</para></listitem>
|
|
|
|
<listitem><para>Fix index-corrupting bugs in /contrib/ltree
|
|
|
|
(Teodor)</para></listitem>
|
|
|
|
<listitem><para>Numerous robustness fixes in <application>ecpg</> (Joachim
|
|
|
|
Wieland)</para></listitem>
|
|
|
|
<listitem><para>Fix backslash escaping in /contrib/dbmirror</para></listitem>
|
|
|
|
<listitem><para>Fix instability of statistics collection on Win32 (Tom, Andrew)</para></listitem>
|
|
|
|
<listitem><para>Fixes for <systemitem class="osname">AIX</> and
|
|
|
|
<productname>Intel</> compilers (Tom)</para></listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|
|
|
|
|
|
|
|
<sect1 id="release-8-0-8">
|
|
|
|
<title>Release 8.0.8</title>
|
|
|
|
|
|
|
|
<note>
|
2011-01-29 19:00:18 +01:00
|
|
|
<title>Release Date</title>
|
2009-05-02 22:17:19 +02:00
|
|
|
<simpara>2006-05-23</simpara>
|
|
|
|
</note>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This release contains a variety of fixes from 8.0.7,
|
|
|
|
including patches for extremely serious security issues.
|
|
|
|
For information about new features in the 8.0 major release, see
|
|
|
|
<xref linkend="release-8-0">.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Migration to Version 8.0.8</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
A dump/restore is not required for those running 8.0.X. However,
|
|
|
|
if you are upgrading from a version earlier than 8.0.6, see the release
|
|
|
|
notes for 8.0.6.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Full security against the SQL-injection attacks described in
|
|
|
|
CVE-2006-2313 and CVE-2006-2314 might require changes in application
|
|
|
|
code. If you have applications that embed untrustworthy strings
|
|
|
|
into SQL commands, you should examine them as soon as possible to
|
|
|
|
ensure that they are using recommended escaping techniques. In
|
|
|
|
most cases, applications should be using subroutines provided by
|
|
|
|
libraries or drivers (such as <application>libpq</>'s
|
|
|
|
<function>PQescapeStringConn()</>) to perform string escaping,
|
|
|
|
rather than relying on <foreignphrase>ad hoc</> code to do it.
|
|
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Changes</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem><para>Change the server to reject invalidly-encoded multibyte
|
|
|
|
characters in all cases (Tatsuo, Tom)</para>
|
|
|
|
<para>While <productname>PostgreSQL</> has been moving in this direction for
|
|
|
|
some time, the checks are now applied uniformly to all encodings and all
|
|
|
|
textual input, and are now always errors not merely warnings. This change
|
|
|
|
defends against SQL-injection attacks of the type described in CVE-2006-2313.
|
|
|
|
</para></listitem>
|
|
|
|
|
|
|
|
<listitem><para>Reject unsafe uses of <literal>\'</> in string literals</para>
|
|
|
|
<para>As a server-side defense against SQL-injection attacks of the type
|
|
|
|
described in CVE-2006-2314, the server now only accepts <literal>''</> and not
|
|
|
|
<literal>\'</> as a representation of ASCII single quote in SQL string
|
|
|
|
literals. By default, <literal>\'</> is rejected only when
|
|
|
|
<varname>client_encoding</> is set to a client-only encoding (SJIS, BIG5, GBK,
|
|
|
|
GB18030, or UHC), which is the scenario in which SQL injection is possible.
|
|
|
|
A new configuration parameter <varname>backslash_quote</> is available to
|
|
|
|
adjust this behavior when needed. Note that full security against
|
|
|
|
CVE-2006-2314 might require client-side changes; the purpose of
|
|
|
|
<varname>backslash_quote</> is in part to make it obvious that insecure
|
|
|
|
clients are insecure.
|
|
|
|
</para></listitem>
|
|
|
|
|
|
|
|
<listitem><para>Modify <application>libpq</>'s string-escaping routines to be
|
|
|
|
aware of encoding considerations and
|
|
|
|
<varname>standard_conforming_strings</></para>
|
|
|
|
<para>This fixes <application>libpq</>-using applications for the security
|
|
|
|
issues described in CVE-2006-2313 and CVE-2006-2314, and also future-proofs
|
|
|
|
them against the planned changeover to SQL-standard string literal syntax.
|
|
|
|
Applications that use multiple <productname>PostgreSQL</> connections
|
|
|
|
concurrently should migrate to <function>PQescapeStringConn()</> and
|
|
|
|
<function>PQescapeByteaConn()</> to ensure that escaping is done correctly
|
|
|
|
for the settings in use in each database connection. Applications that
|
|
|
|
do string escaping <quote>by hand</> should be modified to rely on library
|
|
|
|
routines instead.
|
|
|
|
</para></listitem>
|
|
|
|
|
|
|
|
<listitem><para>Fix some incorrect encoding conversion functions</para>
|
|
|
|
<para><function>win1251_to_iso</>, <function>alt_to_iso</>,
|
|
|
|
<function>euc_tw_to_big5</>, <function>euc_tw_to_mic</>,
|
|
|
|
<function>mic_to_euc_tw</> were all broken to varying
|
|
|
|
extents.
|
|
|
|
</para></listitem>
|
|
|
|
|
|
|
|
<listitem><para>Clean up stray remaining uses of <literal>\'</> in strings
|
|
|
|
(Bruce, Jan)</para></listitem>
|
|
|
|
|
|
|
|
<listitem><para>Fix bug that sometimes caused OR'd index scans to
|
|
|
|
miss rows they should have returned</para></listitem>
|
|
|
|
|
|
|
|
<listitem><para>Fix WAL replay for case where a btree index has been
|
|
|
|
truncated</para></listitem>
|
|
|
|
|
|
|
|
<listitem><para>Fix <literal>SIMILAR TO</> for patterns involving
|
|
|
|
<literal>|</> (Tom)</para></listitem>
|
|
|
|
|
|
|
|
<listitem><para>Fix <command>SELECT INTO</> and <command>CREATE TABLE AS</> to
|
|
|
|
create tables in the default tablespace, not the base directory (Kris
|
|
|
|
Jurka)</para></listitem>
|
|
|
|
|
|
|
|
<listitem><para>Fix server to use custom DH SSL parameters correctly (Michael
|
|
|
|
Fuhr)</para></listitem>
|
|
|
|
|
|
|
|
<listitem><para>Fix for Bonjour on Intel Macs (Ashley Clark)</para></listitem>
|
|
|
|
|
|
|
|
<listitem><para>Fix various minor memory leaks</para></listitem>
|
|
|
|
|
|
|
|
<listitem><para>Fix problem with password prompting on some Win32 systems
|
|
|
|
(Robert Kinberg)</para></listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|
|
|
|
|
|
|
|
<sect1 id="release-8-0-7">
|
|
|
|
<title>Release 8.0.7</title>
|
|
|
|
|
|
|
|
<note>
|
2011-01-29 19:00:18 +01:00
|
|
|
<title>Release Date</title>
|
2009-05-02 22:17:19 +02:00
|
|
|
<simpara>2006-02-14</simpara>
|
|
|
|
</note>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This release contains a variety of fixes from 8.0.6.
|
|
|
|
For information about new features in the 8.0 major release, see
|
|
|
|
<xref linkend="release-8-0">.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Migration to Version 8.0.7</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
A dump/restore is not required for those running 8.0.X. However,
|
|
|
|
if you are upgrading from a version earlier than 8.0.6, see the release
|
|
|
|
notes for 8.0.6.
|
|
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Changes</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem><para>Fix potential crash in <command>SET
|
|
|
|
SESSION AUTHORIZATION</> (CVE-2006-0553)</para>
|
|
|
|
<para>An unprivileged user could crash the server process, resulting in
|
|
|
|
momentary denial of service to other users, if the server has been compiled
|
|
|
|
with Asserts enabled (which is not the default).
|
|
|
|
Thanks to Akio Ishida for reporting this problem.
|
|
|
|
</para></listitem>
|
|
|
|
|
|
|
|
<listitem><para>Fix bug with row visibility logic in self-inserted
|
|
|
|
rows (Tom)</para>
|
|
|
|
<para>Under rare circumstances a row inserted by the current command
|
|
|
|
could be seen as already valid, when it should not be. Repairs bug
|
|
|
|
created in 8.0.4, 7.4.9, and 7.3.11 releases.
|
|
|
|
</para></listitem>
|
|
|
|
|
|
|
|
<listitem><para>Fix race condition that could lead to <quote>file already
|
|
|
|
exists</> errors during pg_clog and pg_subtrans file creation
|
|
|
|
(Tom)</para></listitem>
|
|
|
|
|
|
|
|
<listitem><para>Fix cases that could lead to crashes if a cache-invalidation
|
|
|
|
message arrives at just the wrong time (Tom)</para></listitem>
|
|
|
|
|
|
|
|
<listitem><para>Properly check <literal>DOMAIN</> constraints for
|
|
|
|
<literal>UNKNOWN</> parameters in prepared statements
|
|
|
|
(Neil)</para></listitem>
|
|
|
|
|
|
|
|
<listitem><para>Ensure <command>ALTER COLUMN TYPE</> will process
|
|
|
|
<literal>FOREIGN KEY</>, <literal>UNIQUE</>, and <literal>PRIMARY KEY</>
|
|
|
|
constraints in the proper order (Nakano Yoshihisa)</para></listitem>
|
|
|
|
|
|
|
|
<listitem><para>Fixes to allow restoring dumps that have cross-schema
|
|
|
|
references to custom operators or operator classes (Tom)</para></listitem>
|
|
|
|
|
|
|
|
<listitem><para>Allow <application>pg_restore</> to continue properly after a
|
|
|
|
<command>COPY</> failure; formerly it tried to treat the remaining
|
|
|
|
<command>COPY</> data as SQL commands (Stephen Frost)</para></listitem>
|
|
|
|
|
|
|
|
<listitem><para>Fix <application>pg_ctl</> <literal>unregister</> crash
|
|
|
|
when the data directory is not specified (Magnus)</para></listitem>
|
|
|
|
|
|
|
|
<listitem><para>Fix <application>ecpg</> crash on AMD64 and PPC
|
|
|
|
(Neil)</para></listitem>
|
|
|
|
|
|
|
|
<listitem><para>Recover properly if error occurs during argument passing
|
|
|
|
in <application>PL/python</> (Neil)</para></listitem>
|
|
|
|
|
|
|
|
<listitem><para>Fix <application>PL/perl</>'s handling of locales on
|
|
|
|
Win32 to match the backend (Andrew)</para></listitem>
|
|
|
|
|
|
|
|
<listitem><para>Fix crash when <literal>log_min_messages</> is set to
|
|
|
|
<literal>DEBUG3</> or above in <filename>postgresql.conf</> on Win32
|
|
|
|
(Bruce)</para></listitem>
|
|
|
|
|
|
|
|
<listitem><para>Fix <application>pgxs</> <literal>-L</> library path
|
|
|
|
specification for Win32, Cygwin, OS X, AIX (Bruce)</para></listitem>
|
|
|
|
|
|
|
|
<listitem><para>Check that SID is enabled while checking for Win32 admin
|
|
|
|
privileges (Magnus)</para></listitem>
|
|
|
|
|
|
|
|
<listitem><para>Properly reject out-of-range date inputs (Kris
|
|
|
|
Jurka)</para></listitem>
|
|
|
|
|
|
|
|
<listitem><para>Portability fix for testing presence of <function>finite</>
|
|
|
|
and <function>isinf</> during configure (Tom)</para></listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|
|
|
|
|
|
|
|
<sect1 id="release-8-0-6">
|
|
|
|
<title>Release 8.0.6</title>
|
|
|
|
|
|
|
|
<note>
|
2011-01-29 19:00:18 +01:00
|
|
|
<title>Release Date</title>
|
2009-05-02 22:17:19 +02:00
|
|
|
<simpara>2006-01-09</simpara>
|
|
|
|
</note>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This release contains a variety of fixes from 8.0.5.
|
|
|
|
For information about new features in the 8.0 major release, see
|
|
|
|
<xref linkend="release-8-0">.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Migration to Version 8.0.6</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
A dump/restore is not required for those running 8.0.X. However,
|
|
|
|
if you are upgrading from a version earlier than 8.0.3, see the release
|
|
|
|
notes for 8.0.3.
|
|
|
|
Also, you might need to <command>REINDEX</> indexes on textual
|
|
|
|
columns after updating, if you are affected by the locale or
|
|
|
|
<application>plperl</> issues described below.
|
|
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Changes</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem><para>Fix Windows code so that postmaster will continue rather
|
|
|
|
than exit if there is no more room in ShmemBackendArray (Magnus)</para>
|
|
|
|
<para>The previous behavior could lead to a denial-of-service situation if too
|
|
|
|
many connection requests arrive close together. This applies
|
|
|
|
<emphasis>only</> to the Windows port.</para></listitem>
|
|
|
|
|
|
|
|
<listitem><para>Fix bug introduced in 8.0 that could allow ReadBuffer
|
|
|
|
to return an already-used page as new, potentially causing loss of
|
|
|
|
recently-committed data (Tom)</para></listitem>
|
|
|
|
|
|
|
|
<listitem><para>Fix for protocol-level Describe messages issued
|
|
|
|
outside a transaction or in a failed transaction (Tom)</para></listitem>
|
|
|
|
|
|
|
|
<listitem><para>Fix character string comparison for locales that consider
|
|
|
|
different character combinations as equal, such as Hungarian (Tom)</para>
|
|
|
|
<para>This might require <command>REINDEX</> to fix existing indexes on
|
|
|
|
textual columns.</para></listitem>
|
|
|
|
|
|
|
|
<listitem><para>Set locale environment variables during postmaster startup
|
|
|
|
to ensure that <application>plperl</> won't change the locale later</para>
|
|
|
|
<para>This fixes a problem that occurred if the <application>postmaster</> was
|
|
|
|
started with environment variables specifying a different locale than what
|
|
|
|
<application>initdb</> had been told. Under these conditions, any use of
|
|
|
|
<application>plperl</> was likely to lead to corrupt indexes. You might need
|
|
|
|
<command>REINDEX</> to fix existing indexes on
|
|
|
|
textual columns if this has happened to you.</para></listitem>
|
|
|
|
|
|
|
|
<listitem><para>Allow more flexible relocation of installation
|
|
|
|
directories (Tom)</para>
|
|
|
|
<para>Previous releases supported relocation only if all installation
|
|
|
|
directory paths were the same except for the last component.</para></listitem>
|
|
|
|
|
|
|
|
<listitem><para>Fix longstanding bug in strpos() and regular expression
|
|
|
|
handling in certain rarely used Asian multi-byte character sets (Tatsuo)
|
|
|
|
</para></listitem>
|
|
|
|
|
|
|
|
<listitem><para>Various fixes for functions returning <literal>RECORD</>s
|
|
|
|
(Tom) </para></listitem>
|
|
|
|
|
|
|
|
<listitem><para>Fix bug in <filename>/contrib/pgcrypto</> gen_salt,
|
|
|
|
which caused it not to use all available salt space for MD5 and
|
|
|
|
XDES algorithms (Marko Kreen, Solar Designer)</para>
|
|
|
|
<para>Salts for Blowfish and standard DES are unaffected.</para></listitem>
|
|
|
|
|
|
|
|
<listitem><para>Fix <filename>/contrib/dblink</> to throw an error,
|
|
|
|
rather than crashing, when the number of columns specified is different from
|
|
|
|
what's actually returned by the query (Joe)</para></listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|
|
|
|
|
|
|
|
<sect1 id="release-8-0-5">
|
|
|
|
<title>Release 8.0.5</title>
|
|
|
|
|
|
|
|
<note>
|
2011-01-29 19:00:18 +01:00
|
|
|
<title>Release Date</title>
|
2009-05-02 22:17:19 +02:00
|
|
|
<simpara>2005-12-12</simpara>
|
|
|
|
</note>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This release contains a variety of fixes from 8.0.4.
|
|
|
|
For information about new features in the 8.0 major release, see
|
|
|
|
<xref linkend="release-8-0">.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Migration to Version 8.0.5</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
A dump/restore is not required for those running 8.0.X. However,
|
|
|
|
if you are upgrading from a version earlier than 8.0.3, see the release
|
|
|
|
notes for 8.0.3.
|
|
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Changes</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem><para>Fix race condition in transaction log management</para>
|
|
|
|
<para>There was a narrow window in which an I/O operation could be initiated
|
|
|
|
for the wrong page, leading to an Assert failure or data
|
|
|
|
corruption.</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem><para>Fix bgwriter problems after recovering from errors
|
|
|
|
(Tom)</para>
|
|
|
|
<para>
|
|
|
|
The background writer was found to leak buffer pins after write errors.
|
|
|
|
While not fatal in itself, this might lead to mysterious blockages of
|
|
|
|
later VACUUM commands.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem><para>Prevent failure if client sends Bind protocol message
|
|
|
|
when current transaction is already aborted</para></listitem>
|
|
|
|
|
|
|
|
<listitem><para><filename>/contrib/ltree</> fixes (Teodor)</para></listitem>
|
|
|
|
|
|
|
|
<listitem><para>AIX and HPUX compile fixes (Tom)</para></listitem>
|
|
|
|
|
|
|
|
<listitem><para>Retry file reads and writes after Windows
|
|
|
|
NO_SYSTEM_RESOURCES error (Qingqing Zhou)</para></listitem>
|
|
|
|
|
|
|
|
<listitem><para>Fix intermittent failure when <varname>log_line_prefix</>
|
|
|
|
includes <literal>%i</></para></listitem>
|
|
|
|
|
|
|
|
<listitem><para>Fix <application>psql</> performance issue with long scripts
|
|
|
|
on Windows (Merlin Moncure)</para></listitem>
|
|
|
|
|
|
|
|
<listitem><para>Fix missing updates of <filename>pg_group</> flat
|
|
|
|
file</para></listitem>
|
|
|
|
|
|
|
|
<listitem><para>Fix longstanding planning error for outer joins</para>
|
|
|
|
<para>This bug sometimes caused a bogus error <quote>RIGHT JOIN is
|
|
|
|
only supported with merge-joinable join conditions</>.</para></listitem>
|
|
|
|
|
|
|
|
<listitem><para>Postpone timezone initialization until after
|
|
|
|
<filename>postmaster.pid</> is created</para>
|
|
|
|
<para>This avoids confusing startup scripts that expect the pid file to appear
|
|
|
|
quickly.</para></listitem>
|
|
|
|
|
|
|
|
<listitem><para>Prevent core dump in <application>pg_autovacuum</> when a
|
|
|
|
table has been dropped</para></listitem>
|
|
|
|
|
|
|
|
<listitem><para>Fix problems with whole-row references (<literal>foo.*</>)
|
|
|
|
to subquery results</para></listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|
|
|
|
|
|
|
|
<sect1 id="release-8-0-4">
|
|
|
|
<title>Release 8.0.4</title>
|
|
|
|
|
|
|
|
<note>
|
2011-01-29 19:00:18 +01:00
|
|
|
<title>Release Date</title>
|
2009-05-02 22:17:19 +02:00
|
|
|
<simpara>2005-10-04</simpara>
|
|
|
|
</note>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This release contains a variety of fixes from 8.0.3.
|
|
|
|
For information about new features in the 8.0 major release, see
|
|
|
|
<xref linkend="release-8-0">.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Migration to Version 8.0.4</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
A dump/restore is not required for those running 8.0.X. However,
|
|
|
|
if you are upgrading from a version earlier than 8.0.3, see the release
|
|
|
|
notes for 8.0.3.
|
|
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Changes</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem><para>Fix error that allowed <command>VACUUM</> to remove
|
|
|
|
<literal>ctid</> chains too soon, and add more checking in code that follows
|
|
|
|
<literal>ctid</> links</para>
|
|
|
|
<para>This fixes a long-standing problem that could cause crashes in very rare
|
|
|
|
circumstances.</para></listitem>
|
|
|
|
<listitem><para>Fix <type>CHAR()</> to properly pad spaces to the specified
|
|
|
|
length when using a multiple-byte character set (Yoshiyuki Asaba)</para>
|
|
|
|
<para>In prior releases, the padding of <type>CHAR()</> was incorrect
|
|
|
|
because it only padded to the specified number of bytes without
|
|
|
|
considering how many characters were stored.</para></listitem>
|
|
|
|
<listitem><para>Force a checkpoint before committing <command>CREATE
|
|
|
|
DATABASE</></para>
|
|
|
|
<para>This should fix recent reports of <quote>index is not a btree</>
|
|
|
|
failures when a crash occurs shortly after <command>CREATE
|
|
|
|
DATABASE</>.</para></listitem>
|
|
|
|
<listitem><para>Fix the sense of the test for read-only transaction
|
|
|
|
in <command>COPY</></para>
|
|
|
|
<para>The code formerly prohibited <command>COPY TO</>, where it should
|
|
|
|
prohibit <command>COPY FROM</>.
|
|
|
|
</para></listitem>
|
|
|
|
<listitem><para>Handle consecutive embedded newlines in <command>COPY</>
|
|
|
|
CSV-mode input</para></listitem>
|
|
|
|
<listitem><para>Fix <function>date_trunc(week)</> for dates near year
|
|
|
|
end</para></listitem>
|
|
|
|
<listitem><para>Fix planning problem with outer-join ON clauses that reference
|
|
|
|
only the inner-side relation</para></listitem>
|
|
|
|
<listitem><para>Further fixes for <literal>x FULL JOIN y ON true</> corner
|
|
|
|
cases</para></listitem>
|
|
|
|
<listitem><para>Fix overenthusiastic optimization of <literal>x IN (SELECT
|
|
|
|
DISTINCT ...)</> and related cases</para></listitem>
|
|
|
|
<listitem><para>Fix mis-planning of queries with small <literal>LIMIT</>
|
|
|
|
values due to poorly thought out <quote>fuzzy</> cost
|
|
|
|
comparison</para></listitem>
|
|
|
|
<listitem><para>Make <function>array_in</> and <function>array_recv</> more
|
|
|
|
paranoid about validating their OID parameter</para></listitem>
|
|
|
|
<listitem><para>Fix missing rows in queries like <literal>UPDATE a=... WHERE
|
|
|
|
a...</> with GiST index on column <literal>a</></para></listitem>
|
|
|
|
<listitem><para>Improve robustness of datetime parsing</para></listitem>
|
|
|
|
<listitem><para>Improve checking for partially-written WAL
|
|
|
|
pages</para></listitem>
|
|
|
|
<listitem><para>Improve robustness of signal handling when SSL is
|
|
|
|
enabled</para></listitem>
|
|
|
|
<listitem><para>Improve MIPS and M68K spinlock code</para></listitem>
|
|
|
|
<listitem><para>Don't try to open more than <literal>max_files_per_process</>
|
|
|
|
files during postmaster startup</para></listitem>
|
|
|
|
<listitem><para>Various memory leakage fixes</para></listitem>
|
|
|
|
<listitem><para>Various portability improvements</para></listitem>
|
|
|
|
<listitem><para>Update timezone data files</para></listitem>
|
|
|
|
<listitem><para>Improve handling of DLL load failures on Windows</para></listitem>
|
|
|
|
<listitem><para>Improve random-number generation on Windows</para></listitem>
|
|
|
|
<listitem><para>Make <literal>psql -f filename</> return a nonzero exit code
|
|
|
|
when opening the file fails</para></listitem>
|
|
|
|
<listitem><para>Change <application>pg_dump</> to handle inherited check
|
|
|
|
constraints more reliably</para></listitem>
|
|
|
|
<listitem><para>Fix password prompting in <application>pg_restore</> on
|
|
|
|
Windows</para></listitem>
|
2010-09-23 03:57:37 +02:00
|
|
|
<listitem><para>Fix PL/pgSQL to handle <literal>var := var</> correctly when
|
2009-05-02 22:17:19 +02:00
|
|
|
the variable is of pass-by-reference type</para></listitem>
|
|
|
|
<listitem><para>Fix PL/Perl <literal>%_SHARED</> so it's actually
|
|
|
|
shared</para></listitem>
|
|
|
|
<listitem><para>Fix <filename>contrib/pg_autovacuum</> to allow sleep
|
|
|
|
intervals over 2000 sec</para></listitem>
|
|
|
|
<listitem><para>Update <filename>contrib/tsearch2</> to use current Snowball
|
|
|
|
code</para></listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|
|
|
|
|
|
|
|
<sect1 id="release-8-0-3">
|
|
|
|
<title>Release 8.0.3</title>
|
|
|
|
|
|
|
|
<note>
|
2011-01-29 19:00:18 +01:00
|
|
|
<title>Release Date</title>
|
2009-05-02 22:17:19 +02:00
|
|
|
<simpara>2005-05-09</simpara>
|
|
|
|
</note>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This release contains a variety of fixes from 8.0.2, including several
|
|
|
|
security-related issues.
|
|
|
|
For information about new features in the 8.0 major release, see
|
|
|
|
<xref linkend="release-8-0">.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Migration to Version 8.0.3</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
A dump/restore is not required for those running 8.0.X. However,
|
|
|
|
it is one possible way of handling two significant security problems
|
|
|
|
that have been found in the initial contents of 8.0.X system
|
|
|
|
catalogs. A dump/initdb/reload sequence using 8.0.3's initdb will
|
|
|
|
automatically correct these problems.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
The larger security problem is that the built-in character set encoding
|
|
|
|
conversion functions can be invoked from SQL commands by unprivileged
|
|
|
|
users, but the functions were not designed for such use and are not
|
|
|
|
secure against malicious choices of arguments. The fix involves changing
|
|
|
|
the declared parameter list of these functions so that they can no longer
|
|
|
|
be invoked from SQL commands. (This does not affect their normal use
|
|
|
|
by the encoding conversion machinery.)
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
The lesser problem is that the <filename>contrib/tsearch2</> module
|
|
|
|
creates several functions that are improperly declared to return
|
|
|
|
<type>internal</> when they do not accept <type>internal</> arguments.
|
|
|
|
This breaks type safety for all functions using <type>internal</>
|
|
|
|
arguments.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
It is strongly recommended that all installations repair these errors,
|
|
|
|
either by initdb or by following the manual repair procedure given
|
|
|
|
below. The errors at least allow unprivileged database users to crash
|
|
|
|
their server process, and might allow unprivileged users to gain the
|
|
|
|
privileges of a database superuser.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
If you wish not to do an initdb, perform the same manual repair
|
|
|
|
procedures shown in the <link linkend="release-7-4-8">7.4.8 release
|
|
|
|
notes</link>.
|
|
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Changes</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem><para>Change encoding function signature to prevent
|
|
|
|
misuse</para></listitem>
|
|
|
|
<listitem><para>Change <filename>contrib/tsearch2</> to avoid unsafe use of
|
|
|
|
<type>INTERNAL</> function results</para></listitem>
|
|
|
|
<listitem><para>Guard against incorrect second parameter to
|
|
|
|
<function>record_out</></para></listitem>
|
|
|
|
<listitem><para>Repair ancient race condition that allowed a transaction to be
|
|
|
|
seen as committed for some purposes (eg SELECT FOR UPDATE) slightly sooner
|
|
|
|
than for other purposes</para>
|
|
|
|
<para>This is an extremely serious bug since it could lead to apparent
|
|
|
|
data inconsistencies being briefly visible to applications.</para></listitem>
|
|
|
|
<listitem><para>Repair race condition between relation extension and
|
|
|
|
VACUUM</para>
|
|
|
|
<para>This could theoretically have caused loss of a page's worth of
|
|
|
|
freshly-inserted data, although the scenario seems of very low probability.
|
|
|
|
There are no known cases of it having caused more than an Assert failure.
|
|
|
|
</para></listitem>
|
|
|
|
<listitem><para>Fix comparisons of <type>TIME WITH TIME ZONE</> values</para>
|
|
|
|
<para>
|
|
|
|
The comparison code was wrong in the case where the
|
|
|
|
<literal>--enable-integer-datetimes</> configuration switch had been used.
|
|
|
|
NOTE: if you have an index on a <type>TIME WITH TIME ZONE</> column,
|
|
|
|
it will need to be <command>REINDEX</>ed after installing this update, because
|
|
|
|
the fix corrects the sort order of column values.
|
|
|
|
</para></listitem>
|
|
|
|
<listitem><para>Fix <function>EXTRACT(EPOCH)</> for
|
|
|
|
<type>TIME WITH TIME ZONE</> values</para></listitem>
|
|
|
|
<listitem><para>Fix mis-display of negative fractional seconds in
|
|
|
|
<type>INTERVAL</> values</para>
|
|
|
|
<para>
|
|
|
|
This error only occurred when the
|
|
|
|
<literal>--enable-integer-datetimes</> configuration switch had been used.
|
|
|
|
</para></listitem>
|
|
|
|
<listitem><para>Fix pg_dump to dump trigger names containing <literal>%</>
|
|
|
|
correctly (Neil)</para></listitem>
|
|
|
|
<listitem><para>Still more 64-bit fixes for
|
|
|
|
<filename>contrib/intagg</></para></listitem>
|
|
|
|
<listitem><para>Prevent incorrect optimization of functions returning
|
|
|
|
<type>RECORD</></para></listitem>
|
|
|
|
<listitem><para>Prevent crash on <literal>COALESCE(NULL,NULL)</></para></listitem>
|
|
|
|
<listitem><para>Fix Borland makefile for libpq</para></listitem>
|
|
|
|
<listitem><para>Fix <filename>contrib/btree_gist</> for <type>timetz</> type
|
|
|
|
(Teodor)</para></listitem>
|
|
|
|
<listitem><para>Make <command>pg_ctl</> check the PID found in
|
|
|
|
<filename>postmaster.pid</> to see if it is still a live
|
|
|
|
process</para></listitem>
|
|
|
|
<listitem><para>Fix <command>pg_dump</>/<command>pg_restore</> problems caused
|
|
|
|
by addition of dump timestamps</para></listitem>
|
|
|
|
<listitem><para>Fix interaction between materializing holdable cursors and
|
|
|
|
firing deferred triggers during transaction commit</para></listitem>
|
|
|
|
<listitem><para>Fix memory leak in SQL functions returning pass-by-reference
|
|
|
|
data types</para></listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|
|
|
|
|
|
|
|
<sect1 id="release-8-0-2">
|
|
|
|
<title>Release 8.0.2</title>
|
|
|
|
|
|
|
|
<note>
|
2011-01-29 19:00:18 +01:00
|
|
|
<title>Release Date</title>
|
2009-05-02 22:17:19 +02:00
|
|
|
<simpara>2005-04-07</simpara>
|
|
|
|
</note>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This release contains a variety of fixes from 8.0.1.
|
|
|
|
For information about new features in the 8.0 major release, see
|
|
|
|
<xref linkend="release-8-0">.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Migration to Version 8.0.2</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
A dump/restore is not required for those running 8.0.*.
|
|
|
|
This release updates the major version number of the
|
|
|
|
<productname>PostgreSQL</productname> libraries, so it might be
|
|
|
|
necessary to re-link some user applications if they cannot
|
|
|
|
find the properly-numbered shared library.
|
|
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Changes</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem><para>Increment the major version number of all interface
|
|
|
|
libraries (Bruce)</para>
|
|
|
|
<para>
|
|
|
|
This should have been done in 8.0.0. It is required so 7.4.X versions
|
|
|
|
of PostgreSQL client applications, like <application>psql</>,
|
|
|
|
can be used on the same machine as 8.0.X applications. This might require
|
|
|
|
re-linking user applications that use these libraries.
|
|
|
|
</para></listitem>
|
|
|
|
<listitem><para>Add Windows-only <varname>wal_sync_method</> setting of
|
|
|
|
<option>fsync_writethrough</> (Magnus, Bruce)</para>
|
|
|
|
<para>
|
|
|
|
This setting causes <productname>PostgreSQL</productname> to write through
|
|
|
|
any disk-drive write cache when writing to WAL.
|
|
|
|
This behavior was formerly called <option>fsync</>, but was
|
|
|
|
renamed because it acts quite differently from <option>fsync</> on other
|
|
|
|
platforms.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
<listitem><para>Enable the <varname>wal_sync_method</> setting of
|
|
|
|
<option>open_datasync</> on Windows, and make it the default for that
|
|
|
|
platform (Magnus, Bruce)</para>
|
|
|
|
<para>
|
|
|
|
Because the default is no longer <option>fsync_writethrough</>,
|
|
|
|
data loss is possible during a power failure if the disk drive has
|
|
|
|
write caching enabled. To turn off the write cache on Windows,
|
|
|
|
from the <application>Device Manager</>, choose the drive properties,
|
|
|
|
then <literal>Policies</>.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
<listitem><para>New cache management algorithm <acronym>2Q</> replaces
|
|
|
|
<acronym>ARC</> (Tom)</para>
|
|
|
|
<para>
|
|
|
|
This was done to avoid a pending US patent on <acronym>ARC</>. The
|
|
|
|
<acronym>2Q</> code might be a few percentage points slower than
|
|
|
|
<acronym>ARC</> for some work loads. A better cache management algorithm
|
|
|
|
will appear in 8.1.
|
|
|
|
</para></listitem>
|
|
|
|
<listitem><para>Planner adjustments to improve behavior on freshly-created
|
|
|
|
tables (Tom)</para></listitem>
|
|
|
|
<listitem><para>Allow plpgsql to assign to an element of an array that is
|
|
|
|
initially <literal>NULL</> (Tom)</para>
|
|
|
|
<para>
|
|
|
|
Formerly the array would remain <literal>NULL</>, but now it becomes a
|
|
|
|
single-element array. The main SQL engine was changed to handle
|
|
|
|
<command>UPDATE</> of a null array value this way in 8.0, but the similar
|
|
|
|
case in plpgsql was overlooked.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
<listitem><para>Convert <literal>\r\n</> and <literal>\r</> to <literal>\n</>
|
|
|
|
in plpython function bodies (Michael Fuhr)</para>
|
|
|
|
<para>
|
|
|
|
This prevents syntax errors when plpython code is written on a Windows or
|
|
|
|
Mac client.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
<listitem><para>Allow SPI cursors to handle utility commands that return rows,
|
|
|
|
such as <command>EXPLAIN</> (Tom)</para></listitem>
|
|
|
|
<listitem><para>Fix <command>CLUSTER</> failure after <command>ALTER TABLE
|
|
|
|
SET WITHOUT OIDS</> (Tom)</para></listitem>
|
|
|
|
<listitem><para>Reduce memory usage of <command>ALTER TABLE ADD COLUMN</>
|
|
|
|
(Neil)</para></listitem>
|
|
|
|
<listitem><para>Fix <command>ALTER LANGUAGE RENAME</> (Tom)</para></listitem>
|
|
|
|
<listitem><para>Document the Windows-only <literal>register</> and
|
|
|
|
<literal>unregister</> options of <application>pg_ctl</> (Magnus)</para></listitem>
|
|
|
|
<listitem><para>Ensure operations done during backend shutdown are counted by
|
|
|
|
statistics collector</para>
|
|
|
|
<para>
|
|
|
|
This is expected to resolve reports of <application>pg_autovacuum</>
|
|
|
|
not vacuuming the system catalogs often enough — it was not being
|
|
|
|
told about catalog deletions caused by temporary table removal during
|
|
|
|
backend exit.
|
|
|
|
</para></listitem>
|
|
|
|
<listitem><para>Change the Windows default for configuration parameter
|
|
|
|
<varname>log_destination</> to <option>eventlog</> (Magnus)</para>
|
|
|
|
<para>
|
|
|
|
By default, a server running on Windows will now send log output to the
|
|
|
|
Windows event logger rather than standard error.
|
|
|
|
</para></listitem>
|
|
|
|
<listitem><para>Make Kerberos authentication work on Windows (Magnus)</para></listitem>
|
|
|
|
<listitem><para>Allow <command>ALTER DATABASE RENAME</> by superusers
|
|
|
|
who aren't flagged as having CREATEDB privilege (Tom)</para></listitem>
|
|
|
|
<listitem><para>Modify WAL log entries for <command>CREATE</> and
|
|
|
|
<command>DROP DATABASE</> to not specify absolute paths (Tom)</para>
|
|
|
|
<para>This allows point-in-time recovery on a different machine with possibly
|
|
|
|
different database location. Note that <command>CREATE TABLESPACE</> still
|
|
|
|
poses a hazard in such situations.
|
|
|
|
</para></listitem>
|
|
|
|
<listitem><para>Fix crash from a backend exiting with an open transaction
|
|
|
|
that created a table and opened a cursor on it (Tom)</para></listitem>
|
|
|
|
<listitem><para>Fix <function>array_map()</> so it can call PL functions
|
|
|
|
(Tom)</para></listitem>
|
|
|
|
<listitem><para>Several <filename>contrib/tsearch2</> and
|
|
|
|
<filename>contrib/btree_gist</> fixes (Teodor)
|
|
|
|
</para></listitem>
|
|
|
|
<listitem><para>Fix crash of some <filename>contrib/pgcrypto</>
|
|
|
|
functions on some platforms (Marko Kreen)</para></listitem>
|
|
|
|
<listitem><para>Fix <filename>contrib/intagg</> for 64-bit platforms
|
|
|
|
(Tom)</para></listitem>
|
|
|
|
<listitem><para>Fix ecpg bugs in parsing of <command>CREATE</> statement
|
|
|
|
(Michael)</para></listitem>
|
|
|
|
<listitem><para>Work around gcc bug on powerpc and amd64 causing problems in
|
|
|
|
ecpg (Christof Petig)</para></listitem>
|
|
|
|
<listitem><para>Do not use locale-aware versions of <function>upper()</>,
|
|
|
|
<function>lower()</>, and <function>initcap()</> when the locale is
|
|
|
|
<literal>C</> (Bruce)</para>
|
|
|
|
<para>
|
|
|
|
This allows these functions to work on platforms that generate errors
|
|
|
|
for non-7-bit data when the locale is <literal>C</>.
|
|
|
|
</para></listitem>
|
|
|
|
<listitem><para>Fix <function>quote_ident()</> to quote names that match keywords (Tom)</para></listitem>
|
|
|
|
<listitem><para>Fix <function>to_date()</> to behave reasonably when
|
|
|
|
<literal>CC</> and <literal>YY</> fields are both used (Karel)</para></listitem>
|
|
|
|
<listitem><para>Prevent <function>to_char(interval)</> from failing
|
|
|
|
when given a zero-month interval (Tom)</para></listitem>
|
|
|
|
<listitem><para>Fix wrong week returned by <function>date_trunc('week')</>
|
|
|
|
(Bruce)</para>
|
|
|
|
<para>
|
|
|
|
<function>date_trunc('week')</>
|
|
|
|
returned the wrong year for the first few days of January in some years.
|
|
|
|
</para></listitem>
|
|
|
|
<listitem><para>Use the correct default mask length for class <literal>D</>
|
|
|
|
addresses in <type>INET</> data types (Tom)</para></listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|
|
|
|
|
|
|
|
<sect1 id="release-8-0-1">
|
|
|
|
<title>Release 8.0.1</title>
|
|
|
|
|
|
|
|
<note>
|
2011-01-29 19:00:18 +01:00
|
|
|
<title>Release Date</title>
|
2009-05-02 22:17:19 +02:00
|
|
|
<simpara>2005-01-31</simpara>
|
|
|
|
</note>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
This release contains a variety of fixes from 8.0.0, including several
|
|
|
|
security-related issues.
|
|
|
|
For information about new features in the 8.0 major release, see
|
|
|
|
<xref linkend="release-8-0">.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Migration to Version 8.0.1</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
A dump/restore is not required for those running 8.0.0.
|
|
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Changes</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem><para>Disallow <command>LOAD</> to non-superusers</para>
|
|
|
|
<para>
|
|
|
|
On platforms that will automatically execute initialization functions of a
|
|
|
|
shared library (this includes at least Windows and ELF-based Unixen),
|
|
|
|
<command>LOAD</> can be used to make the server execute arbitrary code.
|
|
|
|
Thanks to NGS Software for reporting this.</para></listitem>
|
|
|
|
<listitem><para>Check that creator of an aggregate function has the right to
|
|
|
|
execute the specified transition functions</para>
|
|
|
|
<para>
|
|
|
|
This oversight made it possible to bypass denial of EXECUTE
|
|
|
|
permission on a function.</para></listitem>
|
|
|
|
<listitem><para>Fix security and 64-bit issues in
|
|
|
|
contrib/intagg</para></listitem>
|
|
|
|
<listitem><para>Add needed STRICT marking to some contrib functions (Kris
|
|
|
|
Jurka)</para></listitem>
|
|
|
|
<listitem><para>Avoid buffer overrun when plpgsql cursor declaration has too
|
|
|
|
many parameters (Neil)</para></listitem>
|
|
|
|
<listitem><para>Make <command>ALTER TABLE ADD COLUMN</> enforce domain
|
|
|
|
constraints in all cases</para></listitem>
|
|
|
|
<listitem><para>Fix planning error for FULL and RIGHT outer joins</para>
|
|
|
|
<para>
|
|
|
|
The result of the join was mistakenly supposed to be sorted the same as the
|
|
|
|
left input. This could not only deliver mis-sorted output to the user, but
|
|
|
|
in case of nested merge joins could give outright wrong answers.
|
|
|
|
</para></listitem>
|
|
|
|
<listitem><para>Improve planning of grouped aggregate queries</para></listitem>
|
|
|
|
<listitem><para><command>ROLLBACK TO <replaceable>savepoint</></command>
|
|
|
|
closes cursors created since the savepoint</para></listitem>
|
|
|
|
<listitem><para>Fix inadequate backend stack size on Windows</para></listitem>
|
|
|
|
<listitem><para>Avoid SHGetSpecialFolderPath() on Windows
|
|
|
|
(Magnus)</para></listitem>
|
|
|
|
<listitem><para>Fix some problems in running pg_autovacuum as a Windows
|
|
|
|
service (Dave Page)</para></listitem>
|
|
|
|
<listitem><para>Multiple minor bug fixes in
|
|
|
|
pg_dump/pg_restore</para></listitem>
|
|
|
|
<listitem><para>Fix ecpg segfault with named structs used in
|
|
|
|
typedefs (Michael)</para></listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|
|
|
|
|
|
|
|
<sect1 id="release-8-0">
|
|
|
|
<title>Release 8.0</title>
|
|
|
|
|
|
|
|
<note>
|
2011-01-29 19:00:18 +01:00
|
|
|
<title>Release Date</title>
|
2009-05-02 22:17:19 +02:00
|
|
|
<simpara>2005-01-19</simpara>
|
|
|
|
</note>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Overview</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Major changes in this release:
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
|
|
<term>
|
|
|
|
Microsoft Windows Native Server
|
|
|
|
</term>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
This is the first <productname>PostgreSQL</productname> release
|
|
|
|
to run natively on <trademark class="registered">Microsoft Windows</> as
|
|
|
|
a server. It can run as a <productname>Windows</> service. This
|
|
|
|
release supports NT-based Windows releases like
|
|
|
|
<productname>Windows 2000 SP4</>, <productname>Windows XP</>, and
|
|
|
|
<productname>Windows 2003</>. Older releases like
|
|
|
|
<productname>Windows 95</>, <productname>Windows 98</>, and
|
|
|
|
<productname>Windows ME</> are not supported because these operating
|
|
|
|
systems do not have the infrastructure to support
|
|
|
|
<productname>PostgreSQL</productname>. A separate installer
|
|
|
|
project has been created to ease installation on
|
|
|
|
<productname>Windows</> — see <ulink
|
|
|
|
url="http://www.postgresql.org/ftp/win32/"></ulink>.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Although tested throughout our release cycle, the Windows port
|
|
|
|
does not have the benefit of years of use in production
|
|
|
|
environments that <productname>PostgreSQL</productname> has on
|
|
|
|
Unix platforms. Therefore it should be treated with the same
|
|
|
|
level of caution as you would a new product.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Previous releases required the Unix emulation toolkit
|
|
|
|
<productname>Cygwin</> in order to run the server on Windows
|
|
|
|
operating systems. <productname>PostgreSQL</productname> has
|
|
|
|
supported native clients on Windows for many years.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term>
|
|
|
|
Savepoints
|
|
|
|
</term>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Savepoints allow specific parts of a transaction to be aborted
|
|
|
|
without affecting the remainder of the transaction. Prior
|
|
|
|
releases had no such capability; there was no way to recover
|
|
|
|
from a statement failure within a transaction except by
|
|
|
|
aborting the whole transaction. This feature is valuable for
|
|
|
|
application writers who require error recovery within a
|
|
|
|
complex transaction.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term>
|
|
|
|
Point-In-Time Recovery
|
|
|
|
</term>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
In previous releases there was no way to recover from disk
|
|
|
|
drive failure except to restore from a previous backup or use
|
|
|
|
a standby replication server. Point-in-time recovery allows
|
|
|
|
continuous backup of the server. You can recover either to
|
|
|
|
the point of failure or to some transaction in the past.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term>
|
|
|
|
Tablespaces
|
|
|
|
</term>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Tablespaces allow administrators to select different file systems
|
|
|
|
for storage of individual tables, indexes, and databases.
|
|
|
|
This improves performance and control over disk space
|
|
|
|
usage. Prior releases used <application>initlocation</> and
|
|
|
|
manual symlink management for such tasks.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term>
|
|
|
|
Improved Buffer Management, <command>CHECKPOINT</command>,
|
|
|
|
<command>VACUUM</command>
|
|
|
|
</term>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
This release has a more intelligent buffer replacement strategy,
|
|
|
|
which will make better use of available shared buffers and
|
|
|
|
improve performance. The performance impact of vacuum and
|
|
|
|
checkpoints is also lessened.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term>
|
|
|
|
Change Column Types
|
|
|
|
</term>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
A column's data type can now be changed with <command>ALTER
|
|
|
|
TABLE</command>.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term>
|
|
|
|
New Perl Server-Side Language
|
|
|
|
</term>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
A new version of the <application>plperl</> server-side language now
|
|
|
|
supports a persistent shared storage area, triggers, returning records
|
|
|
|
and arrays of records, and SPI calls to access the database.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
<varlistentry>
|
|
|
|
<term>
|
|
|
|
Comma-separated-value (CSV) support in <command>COPY</command>
|
|
|
|
</term>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
<command>COPY</command> can now read and write
|
|
|
|
comma-separated-value files. It has the flexibility to
|
|
|
|
interpret nonstandard quoting and separation characters too.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
|
|
|
|
</variablelist>
|
|
|
|
</sect2>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Migration to Version 8.0</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>
|
|
|
|
In <option>READ COMMITTED</> serialization mode, volatile functions
|
|
|
|
now see the results of concurrent transactions committed up to the
|
|
|
|
beginning of each statement within the function, rather than up to the
|
|
|
|
beginning of the interactive command that called the function.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Functions declared <option>STABLE</> or <option>IMMUTABLE</> always
|
|
|
|
use the snapshot of the calling query, and therefore do not see the
|
|
|
|
effects of actions taken after the calling query starts, whether in
|
|
|
|
their own transaction or other transactions. Such a function must be
|
|
|
|
read-only, too, meaning that it cannot use any SQL commands other than
|
|
|
|
<command>SELECT</>.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Nondeferred <option>AFTER</> triggers are now fired immediately
|
|
|
|
after completion of the triggering query, rather than upon
|
|
|
|
finishing the current interactive command. This makes a
|
|
|
|
difference when the triggering query occurred within a function:
|
|
|
|
the trigger is invoked before the function proceeds to its next
|
|
|
|
operation.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Server configuration parameters <varname>virtual_host</> and
|
|
|
|
<varname>tcpip_socket</> have been replaced with a more general
|
|
|
|
parameter <varname>listen_addresses</>. Also, the server now listens on
|
|
|
|
<literal>localhost</> by default, which eliminates the need for the
|
|
|
|
<literal>-i</> postmaster switch in many scenarios.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Server configuration parameters <varname>SortMem</> and
|
|
|
|
<varname>VacuumMem</> have been renamed to <varname>work_mem</>
|
|
|
|
and <varname>maintenance_work_mem</> to better reflect their
|
|
|
|
use. The original names are still supported in
|
|
|
|
<command>SET</command> and <command>SHOW</command>.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Server configuration parameters <varname>log_pid</>,
|
|
|
|
<varname>log_timestamp</>, and <varname>log_source_port</> have been
|
|
|
|
replaced with a more general parameter <varname>log_line_prefix</>.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Server configuration parameter <varname>syslog</> has been
|
|
|
|
replaced with a more logical <varname>log_destination</> variable to
|
|
|
|
control the log output destination.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Server configuration parameter <varname>log_statement</> has been
|
|
|
|
changed so it can selectively log just database modification or
|
|
|
|
data definition statements. Server configuration parameter
|
|
|
|
<varname>log_duration</> now prints only when <varname>log_statement</>
|
|
|
|
prints the query.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Server configuration parameter <varname>max_expr_depth</> parameter has
|
|
|
|
been replaced with <varname>max_stack_depth</> which measures the
|
|
|
|
physical stack size rather than the expression nesting depth. This
|
|
|
|
helps prevent session termination due to stack overflow caused by
|
|
|
|
recursive functions.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
The <function>length()</> function no longer counts trailing spaces in
|
|
|
|
<type>CHAR(n)</> values.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Casting an integer to <type>BIT(N)</> selects the rightmost N bits of the
|
|
|
|
integer, not the leftmost N bits as before.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Updating an element or slice of a NULL array value now produces
|
|
|
|
a nonnull array result, namely an array containing
|
|
|
|
just the assigned-to positions.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Syntax checking of array input values has been tightened up
|
|
|
|
considerably. Junk that was previously allowed in odd places with
|
|
|
|
odd results now causes an error. Empty-string element values
|
|
|
|
must now be written as <literal>""</>, rather than writing nothing.
|
|
|
|
Also changed behavior with respect to whitespace surrounding
|
|
|
|
array elements: trailing whitespace is now ignored, for symmetry
|
|
|
|
with leading whitespace (which has always been ignored).
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Overflow in integer arithmetic operations is now detected and
|
|
|
|
reported as an error.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
The arithmetic operators associated with the single-byte
|
|
|
|
<type>"char"</> data type have been removed.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
The <function>extract()</> function (also called
|
|
|
|
<function>date_part</>) now returns the proper year for BC dates.
|
|
|
|
It previously returned one less than the correct year. The
|
|
|
|
function now also returns the proper values for millennium and
|
|
|
|
century.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
<type>CIDR</> values now must have their nonmasked bits be zero.
|
|
|
|
For example, we no longer allow
|
|
|
|
<literal>204.248.199.1/31</literal> as a <type>CIDR</> value. Such
|
|
|
|
values should never have been accepted by
|
|
|
|
<productname>PostgreSQL</productname> and will now be rejected.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
<command>EXECUTE</command> now returns a completion tag that
|
|
|
|
matches the executed statement.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
<application>psql</>'s <command>\copy</> command now reads or
|
|
|
|
writes to the query's <literal>stdin/stdout</>, rather than
|
|
|
|
<application>psql</>'s <literal>stdin/stdout</>. The previous
|
|
|
|
behavior can be accessed via new
|
|
|
|
<option>pstdin</>/<option>pstdout</> parameters.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
The JDBC client interface has been removed from the core
|
|
|
|
distribution, and is now hosted at <ulink url=
|
|
|
|
"http://jdbc.postgresql.org"></ulink>.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
The Tcl client interface has also been removed. There are several
|
|
|
|
Tcl interfaces now hosted at <ulink url=
|
|
|
|
"http://gborg.postgresql.org"></ulink>.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
The server now uses its own time zone database, rather than the
|
|
|
|
one supplied by the operating system. This will provide consistent
|
|
|
|
behavior across all platforms. In most cases, there should be
|
|
|
|
little noticeable difference in time zone behavior, except that
|
|
|
|
the time zone names used by <command>SET</>/<command>SHOW</>
|
|
|
|
<varname>TimeZone</> might be different from what your platform provides.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
<application>Configure</>'s threading option no longer requires
|
|
|
|
users to run tests or edit configuration files; threading options
|
|
|
|
are now detected automatically.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Now that tablespaces have been implemented,
|
|
|
|
<application>initlocation</> has been removed.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
The API for user-defined GiST indexes has been changed. The
|
|
|
|
Union and PickSplit methods are now passed a pointer to a
|
|
|
|
special <structname>GistEntryVector</structname> structure,
|
|
|
|
rather than a <type>bytea</type>.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Deprecated Features</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Some aspects of <productname>PostgreSQL</productname>'s behavior
|
|
|
|
have been determined to be suboptimal. For the sake of backward
|
|
|
|
compatibility these have not been removed in 8.0, but they are
|
|
|
|
considered deprecated and will be removed in the next major
|
|
|
|
release.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
The 8.1 release will remove the <function>to_char()</> function
|
|
|
|
for intervals.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
The server now warns of empty strings passed to
|
|
|
|
<type>oid</type>/<type>float4</type>/<type>float8</type> data
|
|
|
|
types, but continues to interpret them as zeroes as before.
|
|
|
|
In the next major release, empty strings will be considered
|
|
|
|
invalid input for these data types.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
By default, tables in <productname>PostgreSQL</productname> 8.0
|
|
|
|
and earlier are created with <type>OID</>s. In the next release,
|
|
|
|
this will <emphasis>not</emphasis> be the case: to create a table
|
|
|
|
that contains <type>OID</>s, the <option>WITH OIDS</> clause must
|
|
|
|
be specified or the <varname>default_with_oids</varname>
|
|
|
|
configuration parameter must be set. Users are encouraged to
|
|
|
|
explicitly specify <option>WITH OIDS</> if their tables
|
|
|
|
require OIDs for compatibility with future releases of
|
|
|
|
<productname>PostgreSQL</productname>.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
|
|
|
|
|
|
<sect2>
|
|
|
|
<title>Changes</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Below you will find a detailed account of the changes between
|
|
|
|
release 8.0 and the previous major release.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<sect3>
|
|
|
|
<title>Performance Improvements</title>
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Support cross-data-type index usage (Tom)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
Before this change, many queries would not use an index if the data
|
|
|
|
types did not match exactly. This improvement makes index usage more
|
|
|
|
intuitive and consistent.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
New buffer replacement strategy that improves caching (Jan)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
Prior releases used a least-recently-used (LRU) cache to keep
|
|
|
|
recently referenced pages in memory. The LRU algorithm
|
|
|
|
did not consider the number of times a specific cache entry was
|
|
|
|
accessed, so large table scans could force out useful cache pages.
|
|
|
|
The new cache algorithm uses four separate lists to track most
|
|
|
|
recently used and most frequently used cache pages and dynamically
|
|
|
|
optimize their replacement based on the work load. This should
|
|
|
|
lead to much more efficient use of the shared buffer cache.
|
|
|
|
Administrators who have tested shared buffer sizes in the past
|
|
|
|
should retest with this new cache replacement policy.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add subprocess to write dirty buffers periodically to reduce
|
|
|
|
checkpoint writes (Jan)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
In previous releases, the checkpoint process, which runs every few
|
|
|
|
minutes, would write all dirty buffers to the operating system's
|
|
|
|
buffer cache then flush all dirty operating system buffers to
|
|
|
|
disk. This resulted in a periodic spike in disk usage that often
|
|
|
|
hurt performance. The new code uses a background writer to trickle
|
|
|
|
disk writes at a steady pace so checkpoints have far fewer dirty
|
|
|
|
pages to write to disk. Also, the new code does not issue a global
|
|
|
|
<function>sync()</> call, but instead <function>fsync()</>s just
|
|
|
|
the files written since the last checkpoint. This should improve
|
|
|
|
performance and minimize degradation during checkpoints.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add ability to prolong vacuum to reduce performance impact (Jan)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
On busy systems, <command>VACUUM</command> performs many I/O
|
|
|
|
requests which can hurt performance for other users. This
|
|
|
|
release allows you to slow down <command>VACUUM</command> to
|
|
|
|
reduce its impact on other users, though this increases the
|
|
|
|
total duration of <command>VACUUM</command>.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Improve B-tree index performance for duplicate keys (Dmitry Tkach, Tom)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
This improves the way indexes are scanned when many duplicate
|
|
|
|
values exist in the index.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Use dynamically-generated table size estimates while planning (Tom)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
Formerly the planner estimated table sizes using the values seen
|
|
|
|
by the last <command>VACUUM</command> or <command>ANALYZE</command>,
|
|
|
|
both as to physical table size (number of pages) and number of rows.
|
|
|
|
Now, the current physical table size is obtained from the kernel,
|
|
|
|
and the number of rows is estimated by multiplying the table size
|
|
|
|
by the row density (rows per page) seen by the last
|
|
|
|
<command>VACUUM</command> or <command>ANALYZE</command>. This should
|
|
|
|
produce more reliable estimates in cases where the table size has
|
|
|
|
changed significantly since the last housekeeping command.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Improved index usage with <literal>OR</> clauses (Tom)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
This allows the optimizer to use indexes in statements with many OR
|
|
|
|
clauses that would not have been indexed in the past. It can also use
|
|
|
|
multi-column indexes where the first column is specified and the second
|
|
|
|
column is part of an <literal>OR</> clause.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Improve matching of partial index clauses (Tom)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
The server is now smarter about using partial indexes in queries
|
|
|
|
involving complex <option>WHERE</> clauses.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Improve performance of the GEQO optimizer (Tom)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
The GEQO optimizer is used to plan queries involving many tables (by
|
|
|
|
default, twelve or more). This release speeds up the way queries are
|
|
|
|
analyzed to decrease time spent in optimization.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Miscellaneous optimizer improvements
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
There is not room here to list all the minor improvements made, but
|
|
|
|
numerous special cases work better than in prior releases.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Improve lookup speed for C functions (Tom)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
This release uses a hash table to lookup information for dynamically
|
|
|
|
loaded C functions. This improves their speed so they perform nearly as
|
|
|
|
quickly as functions that are built into the server executable.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add type-specific <command>ANALYZE</command> statistics
|
|
|
|
capability (Mark Cave-Ayland)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
This feature allows more flexibility in generating statistics
|
|
|
|
for nonstandard data types.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
<command>ANALYZE</command> now collects statistics for
|
|
|
|
expression indexes (Tom)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
Expression indexes (also called functional indexes) allow users to
|
|
|
|
index not just columns but the results of expressions and function
|
|
|
|
calls. With this release, the optimizer can gather and use statistics
|
|
|
|
about the contents of expression indexes. This will greatly improve
|
|
|
|
the quality of planning for queries in which an expression index is
|
|
|
|
relevant.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
New two-stage sampling method for <command>ANALYZE</command>
|
|
|
|
(Manfred Koizar)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
This gives better statistics when the density of valid rows is very
|
|
|
|
different in different regions of a table.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Speed up <command>TRUNCATE</command> (Tom)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
This buys back some of the performance loss observed in 7.4, while still
|
|
|
|
keeping <command>TRUNCATE</command> transaction-safe.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
|
|
|
|
|
|
|
|
<sect3>
|
|
|
|
<title>Server Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add WAL file archiving and point-in-time recovery (Simon Riggs)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add tablespaces so admins can control disk layout (Gavin)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add a built-in log rotation program (Andreas Pflug)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
It is now possible to log server messages conveniently without
|
|
|
|
relying on either <application>syslog</> or an external log
|
|
|
|
rotation program.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add new read-only server configuration parameters to show server
|
|
|
|
compile-time settings: <varname>block_size</>,
|
|
|
|
<varname>integer_datetimes</>, <varname>max_function_args</>,
|
|
|
|
<varname>max_identifier_length</>, <varname>max_index_keys</> (Joe)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Make quoting of <literal>sameuser</>, <literal>samegroup</>, and
|
|
|
|
<literal>all</> remove special meaning of these terms in
|
|
|
|
<filename>pg_hba.conf</> (Andrew)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Use clearer IPv6 name <literal>::1/128</> for
|
|
|
|
<literal>localhost</> in default <filename>pg_hba.conf</> (Andrew)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Use CIDR format in <filename>pg_hba.conf</> examples (Andrew)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Rename server configuration parameters <varname>SortMem</> and
|
|
|
|
<varname>VacuumMem</> to <varname>work_mem</> and
|
|
|
|
<varname>maintenance_work_mem</> (Old names still supported) (Tom)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
This change was made to clarify that bulk operations such as index and
|
|
|
|
foreign key creation use <varname>maintenance_work_mem</>, while
|
|
|
|
<varname>work_mem</> is for workspaces used during query execution.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow logging of session disconnections using server configuration
|
|
|
|
<varname>log_disconnections</> (Andrew)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add new server configuration parameter <varname>log_line_prefix</> to
|
|
|
|
allow control of information emitted in each log line (Andrew)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
Available information includes user name, database name, remote IP
|
|
|
|
address, and session start time.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Remove server configuration parameters <varname>log_pid</>,
|
|
|
|
<varname>log_timestamp</>, <varname>log_source_port</>; functionality
|
|
|
|
superseded by <varname>log_line_prefix</> (Andrew)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Replace the <varname>virtual_host</> and <varname>tcpip_socket</>
|
|
|
|
parameters with a unified <varname>listen_addresses</> parameter
|
|
|
|
(Andrew, Tom)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
<varname>virtual_host</> could only specify a single IP address to
|
|
|
|
listen on. <varname>listen_addresses</> allows multiple addresses
|
|
|
|
to be specified.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Listen on localhost by default, which eliminates the need for the
|
|
|
|
<option>-i</> postmaster switch in many scenarios (Andrew)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
Listening on localhost (<literal>127.0.0.1</>) opens no new
|
|
|
|
security holes but allows configurations like Windows and JDBC,
|
|
|
|
which do not support local sockets, to work without special
|
|
|
|
adjustments.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Remove <varname>syslog</> server configuration parameter, and add more
|
|
|
|
logical <varname>log_destination</> variable to control log output
|
|
|
|
location (Magnus)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Change server configuration parameter <varname>log_statement</> to take
|
|
|
|
values <varname>all</>, <varname>mod</>, <varname>ddl</>, or
|
|
|
|
<varname>none</> to select which queries are logged (Bruce)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
This allows administrators to log only data definition changes or
|
|
|
|
only data modification statements.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Some logging-related configuration parameters could formerly be adjusted
|
|
|
|
by ordinary users, but only in the <quote>more verbose</> direction.
|
|
|
|
They are now treated more strictly: only superusers can set them.
|
|
|
|
However, a superuser can use <command>ALTER USER</> to provide per-user
|
|
|
|
settings of these values for non-superusers. Also, it is now possible
|
|
|
|
for superusers to set values of superuser-only configuration parameters
|
|
|
|
via <literal>PGOPTIONS</>.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow configuration files to be placed outside the data directory (mlw)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
By default, configuration files are kept in the cluster's top directory.
|
|
|
|
With this addition, configuration files can be placed outside the
|
|
|
|
data directory, easing administration.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Plan prepared queries only when first executed so constants can be
|
|
|
|
used for statistics (Oliver Jowett)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
Prepared statements plan queries once and execute them many
|
|
|
|
times. While prepared queries avoid the overhead of re-planning
|
|
|
|
on each use, the quality of the plan suffers from not knowing the exact
|
|
|
|
parameters to be used in the query. In this release, planning of
|
|
|
|
unnamed prepared statements is delayed until the first execution,
|
|
|
|
and the actual parameter values of that execution are used as
|
|
|
|
optimization hints. This allows use of out-of-line parameter passing
|
|
|
|
without incurring a performance penalty.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow <command>DECLARE CURSOR</command> to take parameters
|
|
|
|
(Oliver Jowett)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
It is now useful to issue <command>DECLARE CURSOR</command> in a
|
|
|
|
<function>Parse</> message with parameters. The parameter values
|
|
|
|
sent at <function>Bind</> time will be substituted into the
|
|
|
|
execution of the cursor's query.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix hash joins and aggregates of <type>inet</type> and
|
|
|
|
<type>cidr</type> data types (Tom)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
Release 7.4 handled hashing of mixed <type>inet</type> and
|
|
|
|
<type>cidr</type> values incorrectly. (This bug did not exist
|
|
|
|
in prior releases because they wouldn't try to hash either
|
|
|
|
data type.)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Make <varname>log_duration</> print only when <varname>log_statement</>
|
|
|
|
prints the query (Ed L.)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
|
|
|
|
|
|
|
|
<sect3>
|
|
|
|
<title>Query Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add savepoints (nested transactions) (Alvaro)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Unsupported isolation levels are now accepted and promoted to the
|
|
|
|
nearest supported level (Peter)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
The SQL specification states that if a database doesn't support a
|
|
|
|
specific isolation level, it should use the next more restrictive level.
|
|
|
|
This change complies with that recommendation.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow <command>BEGIN WORK</command> to specify transaction
|
|
|
|
isolation levels like <command>START TRANSACTION</command> does
|
|
|
|
(Bruce)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix table permission checking for cases in which rules generate
|
|
|
|
a query type different from the originally submitted query (Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Implement dollar quoting to simplify single-quote usage (Andrew, Tom,
|
|
|
|
David Fetter)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
In previous releases, because single quotes had to be used to
|
|
|
|
quote a function's body, the use of single quotes inside the
|
|
|
|
function text required use of two single quotes or other error-prone
|
|
|
|
notations. With this release we add the ability to use "dollar
|
|
|
|
quoting" to quote a block of text. The ability to use different
|
|
|
|
quoting delimiters at different nesting levels greatly simplifies
|
|
|
|
the task of quoting correctly, especially in complex functions.
|
|
|
|
Dollar quoting can be used anywhere quoted text is needed.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Make <literal>CASE val WHEN compval1 THEN ...</> evaluate <literal>val</> only once (Tom)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
<option>CASE</> no longer evaluates the tested expression multiple
|
|
|
|
times. This has benefits when the expression is complex or is
|
|
|
|
volatile.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Test <option>HAVING</> before computing target list of an
|
|
|
|
aggregate query (Tom)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
Fixes improper failure of cases such as <literal>SELECT SUM(win)/SUM(lose)
|
|
|
|
... GROUP BY ... HAVING SUM(lose) > 0</>. This should work but formerly
|
|
|
|
could fail with divide-by-zero.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Replace <varname>max_expr_depth</> parameter with
|
|
|
|
<varname>max_stack_depth</> parameter, measured in kilobytes of stack
|
|
|
|
size (Tom)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
This gives us a fairly bulletproof defense against crashing due to
|
|
|
|
runaway recursive functions. Instead of measuring the depth of expression
|
|
|
|
nesting, we now directly measure the size of the execution stack.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow arbitrary row expressions (Tom)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
This release allows SQL expressions to contain arbitrary composite
|
|
|
|
types, that is, row values. It also allows functions to more easily
|
|
|
|
take rows as arguments and return row values.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow <option>LIKE</>/<option>ILIKE</> to be used as the operator
|
|
|
|
in row and subselect comparisons (Fabien Coelho)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Avoid locale-specific case conversion of basic ASCII letters in
|
|
|
|
identifiers and keywords (Tom)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
This solves the <quote>Turkish problem</> with mangling of words
|
|
|
|
containing <literal>I</> and <literal>i</>. Folding of characters
|
|
|
|
outside the 7-bit-ASCII set is still locale-aware.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Improve syntax error reporting (Fabien, Tom)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
Syntax error reports are more useful than before.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Change <command>EXECUTE</command> to return a completion tag
|
|
|
|
matching the executed statement (Kris Jurka)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
Previous releases return an <command>EXECUTE</command> tag for
|
|
|
|
any <command>EXECUTE</command> call. In this release, the tag
|
|
|
|
returned will reflect the command executed.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Avoid emitting <option>NATURAL CROSS JOIN</> in rule listings (Tom)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
Such a clause makes no logical sense, but in some cases the rule
|
|
|
|
decompiler formerly produced this syntax.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
|
|
|
|
|
|
|
|
<sect3>
|
|
|
|
<title>Object Manipulation Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add <command>COMMENT ON</> for casts, conversions, languages,
|
|
|
|
operator classes, and large objects (Christopher)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add new server configuration parameter <varname>default_with_oids</> to
|
|
|
|
control whether tables are created with <type>OID</>s by default (Neil)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
This allows administrators to control whether <command>CREATE
|
|
|
|
TABLE</command> commands create tables with or without <type>OID</>
|
|
|
|
columns by default. (Note: the current factory default setting for
|
|
|
|
<varname>default_with_oids</> is <literal>TRUE</>, but the default
|
|
|
|
will become <literal>FALSE</> in future releases.)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add <option>WITH</> / <option>WITHOUT OIDS</> clause to
|
|
|
|
<command>CREATE TABLE AS</command> (Neil)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow <command>ALTER TABLE DROP COLUMN</> to drop an <type>OID</>
|
|
|
|
column (<command>ALTER TABLE SET WITHOUT OIDS</> still works)
|
|
|
|
(Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow composite types as table columns (Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow <command>ALTER ... ADD COLUMN</> with defaults and
|
|
|
|
<option>NOT NULL</> constraints; works per SQL spec (Rod)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
It is now possible for <option>ADD COLUMN</> to create a column
|
|
|
|
that is not initially filled with NULLs, but with a specified
|
|
|
|
default value.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add <command>ALTER COLUMN TYPE</> to change column's type (Rod)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
It is now possible to alter a column's data type without dropping
|
|
|
|
and re-adding the column.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow multiple <command>ALTER</> actions in a single <command>ALTER
|
|
|
|
TABLE</command> command (Rod)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
This is particularly useful for <command>ALTER</> commands that
|
|
|
|
rewrite the table (which include <option>ALTER COLUMN TYPE</> and
|
|
|
|
<option>ADD COLUMN</> with a default). By grouping
|
|
|
|
<command>ALTER</> commands together, the table need be rewritten
|
|
|
|
only once.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow <command>ALTER TABLE</command> to add <type>SERIAL</type>
|
|
|
|
columns (Tom)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
This falls out from the new capability of specifying defaults for new
|
|
|
|
columns.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow changing the owners of aggregates, conversions, databases,
|
|
|
|
functions, operators, operator classes, schemas, types, and tablespaces
|
|
|
|
(Christopher, Euler Taveira de Oliveira)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
Previously this required modifying the system tables directly.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow temporary object creation to be limited to <option>SECURITY
|
|
|
|
DEFINER</> functions (Sean Chittenden)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add <option>ALTER TABLE ... SET WITHOUT CLUSTER</> (Christopher)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
Prior to this release, there was no way to clear an auto-cluster
|
|
|
|
specification except to modify the system tables.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Constraint/Index/<type>SERIAL</> names are now
|
|
|
|
<replaceable>table_column_type</>
|
|
|
|
with numbers appended to guarantee uniqueness within the schema
|
|
|
|
(Tom)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
The SQL specification states that such names should be unique
|
|
|
|
within a schema.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add <function>pg_get_serial_sequence()</> to return a
|
|
|
|
<type>SERIAL</> column's sequence name (Christopher)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
This allows automated scripts to reliably find the <type>SERIAL</>
|
|
|
|
sequence name.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Warn when primary/foreign key data type mismatch requires costly lookup
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
New <command>ALTER INDEX</> command to allow moving of indexes
|
|
|
|
between tablespaces (Gavin)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Make <command>ALTER TABLE OWNER</> change dependent sequence
|
|
|
|
ownership too (Alvaro)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
|
|
|
|
|
|
|
|
<sect3>
|
|
|
|
<title>Utility Command Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow <command>CREATE SCHEMA</command> to create triggers,
|
|
|
|
indexes, and sequences (Neil)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add <option>ALSO</> keyword to <command>CREATE RULE</command> (Fabien
|
|
|
|
Coelho)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
This allows <option>ALSO</> to be added to rule creation to contrast it with
|
|
|
|
<option>INSTEAD</> rules.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add <option>NOWAIT</> option to <command>LOCK</command> (Tatsuo)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
This allows the <command>LOCK</command> command to fail if it
|
|
|
|
would have to wait for the requested lock.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow <command>COPY</command> to read and write
|
|
|
|
comma-separated-value (CSV) files (Andrew, Bruce)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Generate error if the <command>COPY</command> delimiter and NULL
|
|
|
|
string conflict (Bruce)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
<command>GRANT</command>/<command>REVOKE</command> behavior
|
|
|
|
follows the SQL spec more closely
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Avoid locking conflict between <command>CREATE INDEX</command>
|
|
|
|
and <command>CHECKPOINT</command> (Tom)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
In 7.3 and 7.4, a long-running B-tree index build could block concurrent
|
|
|
|
<command>CHECKPOINT</>s from completing, thereby causing WAL bloat because the
|
|
|
|
WAL log could not be recycled.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Database-wide <command>ANALYZE</command> does not hold locks
|
|
|
|
across tables (Tom)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
This reduces the potential for deadlocks against other backends
|
|
|
|
that want exclusive locks on tables. To get the benefit of this
|
|
|
|
change, do not execute database-wide <command>ANALYZE</command>
|
|
|
|
inside a transaction block (<command>BEGIN</command> block); it
|
|
|
|
must be able to commit and start a new transaction for each
|
|
|
|
table.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
<command>REINDEX</command> does not exclusively lock the index's
|
|
|
|
parent table anymore
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
The index itself is still exclusively locked, but readers of the
|
|
|
|
table can continue if they are not using the particular index
|
|
|
|
being rebuilt.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Erase MD5 user passwords when a user is renamed (Bruce)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
<productname>PostgreSQL</productname> uses the user name as salt
|
|
|
|
when encrypting passwords via MD5. When a user's name is changed,
|
|
|
|
the salt will no longer match the stored MD5 password, so the
|
|
|
|
stored password becomes useless. In this release a notice is
|
|
|
|
generated and the password is cleared. A new password must then
|
|
|
|
be assigned if the user is to be able to log in with a password.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
New <application>pg_ctl</> <option>kill</> option for Windows (Andrew)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
Windows does not have a <literal>kill</> command to send signals to
|
|
|
|
backends so this capability was added to <application>pg_ctl</>.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Information schema improvements
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add <option>--pwfile</> option to
|
|
|
|
<application>initdb</application> so the initial password can be
|
|
|
|
set by GUI tools (Magnus)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Detect locale/encoding mismatch in
|
|
|
|
<application>initdb</application> (Peter)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add <option>register</> command to <application>pg_ctl</> to
|
|
|
|
register Windows operating system service (Dave Page)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
|
|
|
|
|
|
|
|
<sect3>
|
|
|
|
<title>Data Type and Function Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
More complete support for composite types (row types) (Tom)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
Composite values can be used in many places where only scalar values
|
|
|
|
worked before.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Reject nonrectangular array values as erroneous (Joe)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
Formerly, <function>array_in</> would silently build a
|
|
|
|
surprising result.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Overflow in integer arithmetic operations is now detected (Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
The arithmetic operators associated with the single-byte
|
|
|
|
<type>"char"</> data type have been removed.
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
Formerly, the parser would select these operators in many situations
|
|
|
|
where an <quote>unable to select an operator</> error would be more
|
|
|
|
appropriate, such as <literal>null * null</>. If you actually want
|
|
|
|
to do arithmetic on a <type>"char"</> column, you can cast it to
|
|
|
|
integer explicitly.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Syntax checking of array input values considerably tightened up (Joe)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
Junk that was previously allowed in odd places with odd results
|
|
|
|
now causes an <literal>ERROR</>, for example, non-whitespace
|
|
|
|
after the closing right brace.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Empty-string array element values must now be written as
|
|
|
|
<literal>""</>, rather than writing nothing (Joe)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
Formerly, both ways of writing an empty-string element value were
|
|
|
|
allowed, but now a quoted empty string is required. The case where
|
|
|
|
nothing at all appears will probably be considered to be a NULL
|
|
|
|
element value in some future release.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Array element trailing whitespace is now ignored (Joe)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
Formerly leading whitespace was ignored, but trailing whitespace
|
|
|
|
between an element value and the delimiter or right brace was
|
|
|
|
significant. Now trailing whitespace is also ignored.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Emit array values with explicit array bounds when lower bound is not one
|
|
|
|
(Joe)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Accept <literal>YYYY-monthname-DD</> as a date string (Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Make <function>netmask</> and <function>hostmask</> functions
|
|
|
|
return maximum-length mask length (Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Change factorial function to return <type>numeric</type> (Gavin)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
Returning <type>numeric</type> allows the factorial function to
|
|
|
|
work for a wider range of input values.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
<function>to_char</>/<function>to_date()</> date conversion
|
|
|
|
improvements (Kurt Roeckx, Fabien Coelho)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Make <function>length()</> disregard trailing spaces in
|
|
|
|
<type>CHAR(n)</> (Gavin)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
This change was made to improve consistency: trailing spaces are
|
|
|
|
semantically insignificant in <type>CHAR(n)</> data, so they
|
|
|
|
should not be counted by <function>length()</>.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Warn about empty string being passed to
|
|
|
|
<type>OID</>/<type>float4</>/<type>float8</> data types (Neil)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
8.1 will throw an error instead.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow leading or trailing whitespace in
|
|
|
|
<type>int2</>/<type>int4</>/<type>int8</>/<type>float4</>/<type>float8</>
|
|
|
|
input routines
|
|
|
|
(Neil)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Better support for IEEE <literal>Infinity</> and <literal>NaN</>
|
|
|
|
values in <type>float4</type>/<type>float8</type> (Neil)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
These should now work on all platforms that support IEEE-compliant
|
|
|
|
floating point arithmetic.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add <option>week</> option to <function>date_trunc()</> (Robert Creager)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix <function>to_char</function> for <literal>1 BC</>
|
|
|
|
(previously it returned <literal>1 AD</>) (Bruce)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix <function>date_part(year)</> for BC dates (previously it
|
|
|
|
returned one less than the correct year) (Bruce)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix <function>date_part()</> to return the proper millennium and
|
|
|
|
century (Fabien Coelho)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
In previous versions, the century and millennium results had a wrong
|
|
|
|
number and started in the wrong year, as compared to standard
|
|
|
|
reckoning of such things.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add <function>ceiling()</> as an alias for <function>ceil()</>,
|
|
|
|
and <function>power()</> as an alias for <function>pow()</> for
|
|
|
|
standards compliance (Neil)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Change <function>ln()</>, <function>log()</>,
|
|
|
|
<function>power()</>, and <function>sqrt()</> to emit the correct
|
|
|
|
<literal>SQLSTATE</> error codes for certain error conditions, as
|
|
|
|
specified by SQL:2003 (Neil)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add <function>width_bucket()</> function as defined by SQL:2003 (Neil)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add <function>generate_series()</> functions to simplify working
|
|
|
|
with numeric sets (Joe)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Fix <function>upper/lower/initcap()</> functions to work with
|
|
|
|
multibyte encodings (Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add boolean and bitwise integer <option>AND</>/<option>OR</>
|
|
|
|
aggregates (Fabien Coelho)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
New session information functions to return network addresses for client
|
|
|
|
and server (Sean Chittenden)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add function to determine the area of a closed path (Sean Chittenden)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add function to send cancel request to other backends (Magnus)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add <type>interval</> plus <type>datetime</> operators (Tom)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
The reverse ordering, <type>datetime</> plus <type>interval</>,
|
|
|
|
was already supported, but both are required by the SQL standard.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Casting an integer to <type>BIT(N)</> selects the rightmost N bits
|
|
|
|
of the integer
|
|
|
|
(Tom)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
In prior releases, the leftmost N bits were selected, but this was
|
|
|
|
deemed unhelpful, not to mention inconsistent with casting from bit
|
|
|
|
to int.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Require <type>CIDR</> values to have all nonmasked bits be zero
|
|
|
|
(Kevin Brintnall)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
|
|
|
|
|
|
|
|
<sect3>
|
|
|
|
<title>Server-Side Language Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
In <literal>READ COMMITTED</> serialization mode, volatile functions
|
|
|
|
now see the results of concurrent transactions committed up to the
|
|
|
|
beginning of each statement within the function, rather than up to the
|
|
|
|
beginning of the interactive command that called the function.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Functions declared <literal>STABLE</> or <literal>IMMUTABLE</> always
|
|
|
|
use the snapshot of the calling query, and therefore do not see the
|
|
|
|
effects of actions taken after the calling query starts, whether in
|
|
|
|
their own transaction or other transactions. Such a function must be
|
|
|
|
read-only, too, meaning that it cannot use any SQL commands other than
|
|
|
|
<command>SELECT</>. There is a considerable performance gain from
|
|
|
|
declaring a function <literal>STABLE</> or <literal>IMMUTABLE</>
|
|
|
|
rather than <literal>VOLATILE</>.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Nondeferred <option>AFTER</> triggers are now fired immediately
|
|
|
|
after completion of the triggering query, rather than upon
|
|
|
|
finishing the current interactive command. This makes a difference
|
|
|
|
when the triggering query occurred within a function: the trigger
|
|
|
|
is invoked before the function proceeds to its next operation. For
|
|
|
|
example, if a function inserts a new row into a table, any
|
|
|
|
nondeferred foreign key checks occur before proceeding with the
|
|
|
|
function.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow function parameters to be declared with names (Dennis Björklund)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
This allows better documentation of functions. Whether the names
|
|
|
|
actually do anything depends on the specific function language
|
|
|
|
being used.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow PL/pgSQL parameter names to be referenced in the function (Dennis Björklund)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
This basically creates an automatic alias for each named parameter.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Do minimal syntax checking of PL/pgSQL functions at creation time (Tom)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
This allows us to catch simple syntax errors sooner.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
More support for composite types (row and record variables) in PL/pgSQL
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
For example, it now works to pass a rowtype variable to another function
|
|
|
|
as a single variable.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Default values for PL/pgSQL variables can now reference previously
|
|
|
|
declared variables
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Improve parsing of PL/pgSQL FOR loops (Tom)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
Parsing is now driven by presence of <literal>".."</> rather than
|
|
|
|
data type of <option>FOR</> variable. This makes no difference for
|
|
|
|
correct functions, but should result in more understandable error
|
|
|
|
messages when a mistake is made.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Major overhaul of PL/Perl server-side language (Command Prompt, Andrew Dunstan)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
In PL/Tcl, SPI commands are now run in subtransactions. If an error
|
|
|
|
occurs, the subtransaction is cleaned up and the error is reported
|
|
|
|
as an ordinary Tcl error, which can be trapped with <literal>catch</>.
|
|
|
|
Formerly, it was not possible to catch such errors.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Accept <command>ELSEIF</> in PL/pgSQL (Neil)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
Previously PL/pgSQL only allowed <command>ELSIF</>, but many people
|
|
|
|
are accustomed to spelling this keyword <command>ELSEIF</>.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
|
|
|
|
|
|
|
|
<sect3>
|
|
|
|
<title><application>psql</> Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Improve <application>psql</> information display about database
|
|
|
|
objects (Christopher)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow <application>psql</> to display group membership in
|
|
|
|
<command>\du</> and <command>\dg</> (Markus Bertheau)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Prevent <application>psql</> <command>\dn</command> from showing
|
|
|
|
temporary schemas (Bruce)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow <application>psql</> to handle tilde user expansion for file
|
|
|
|
names (Zach Irmen)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow <application>psql</> to display fancy prompts, including
|
|
|
|
color, via <application>readline</> (Reece Hart, Chet Ramey)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Make <application>psql</> <command>\copy</> match <command>COPY</command> command syntax
|
|
|
|
fully (Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Show the location of syntax errors (Fabien Coelho, Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add <command>CLUSTER</command> information to <application>psql</>
|
|
|
|
<command>\d</> display
|
|
|
|
(Bruce)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Change <application>psql</> <command>\copy stdin/stdout</> to read
|
|
|
|
from command input/output (Bruce)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add <option>pstdin</>/<option>pstdout</> to read from
|
|
|
|
<application>psql</>'s <literal>stdin</>/<literal>stdout</> (Mark
|
|
|
|
Feit)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add global <application>psql</> configuration file, <filename>psqlrc.sample</filename>
|
|
|
|
(Bruce)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
This allows a central file where global <application>psql</> startup commands can
|
|
|
|
be stored.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Have <application>psql</> <command>\d+</> indicate if the table
|
|
|
|
has an <type>OID</> column (Neil)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
On Windows, use binary mode in <application>psql</> when reading files so control-Z
|
|
|
|
is not seen as end-of-file
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Have <command>\dn+</> show permissions and description for schemas (Dennis
|
|
|
|
Björklund)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Improve tab completion support (Stefan Kaltenbrunn, Greg Sabino Mullane)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow boolean settings to be set using upper or lower case (Michael Paesold)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
|
|
|
|
|
|
|
|
<sect3>
|
|
|
|
<title><application>pg_dump</> Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Use dependency information to improve the reliability of
|
|
|
|
<application>pg_dump</> (Tom)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
This should solve the longstanding problems with related objects
|
|
|
|
sometimes being dumped in the wrong order.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Have <application>pg_dump</> output objects in alphabetical order if possible (Tom)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
This should make it easier to identify changes between
|
|
|
|
dump files.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow <application>pg_restore</> to ignore some SQL errors (Fabien Coelho)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
This makes <application>pg_restore</>'s behavior similar to the
|
|
|
|
results of feeding a <application>pg_dump</> output script to
|
|
|
|
<application>psql</>. In most cases, ignoring errors and plowing
|
|
|
|
ahead is the most useful thing to do. Also added was a pg_restore
|
|
|
|
option to give the old behavior of exiting on an error.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
<application>pg_restore</> <option>-l</> display now includes
|
|
|
|
objects' schema names
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
New begin/end markers in <application>pg_dump</> text output (Bruce)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add start/stop times for
|
|
|
|
<application>pg_dump</>/<application>pg_dumpall</> in verbose mode
|
|
|
|
(Bruce)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow most <application>pg_dump</> options in
|
|
|
|
<application>pg_dumpall</> (Christopher)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Have <application>pg_dump</> use <command>ALTER OWNER</> rather
|
|
|
|
than <command>SET SESSION AUTHORIZATION</> by default
|
|
|
|
(Christopher)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
|
|
|
|
|
|
|
|
<sect3>
|
|
|
|
<title>libpq Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Make libpq's <option>SIGPIPE</> handling thread-safe (Bruce)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add <function>PQmbdsplen()</> which returns the display length
|
|
|
|
of a character (Tatsuo)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add thread locking to <application>SSL</> and
|
|
|
|
<application>Kerberos</> connections (Manfred Spraul)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow <function>PQoidValue()</>, <function>PQcmdTuples()</>, and
|
|
|
|
<function>PQoidStatus()</> to work on <command>EXECUTE</command>
|
|
|
|
commands (Neil)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add <function>PQserverVersion()</> to provide more convenient
|
|
|
|
access to the server version number (Greg Sabino Mullane)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add <function>PQprepare/PQsendPrepared()</> functions to support
|
|
|
|
preparing statements without necessarily specifying the data types
|
|
|
|
of their parameters (Abhijit Menon-Sen)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Many ECPG improvements, including <command>SET DESCRIPTOR</> (Michael)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
|
|
|
|
|
|
|
|
<sect3>
|
|
|
|
<title>Source Code Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow the database server to run natively on Windows (Claudio, Magnus, Andrew)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Shell script commands converted to C versions for Windows support (Andrew)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Create an extension makefile framework (Fabien Coelho, Peter)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
This simplifies the task of building extensions outside the original
|
|
|
|
source tree.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Support relocatable installations (Bruce)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
Directory paths for installed files (such as the
|
|
|
|
<filename>/share</> directory) are now computed relative to the
|
|
|
|
actual location of the executables, so that an installation tree
|
|
|
|
can be moved to another place without reconfiguring and
|
|
|
|
rebuilding.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Use <option>--with-docdir</> to choose installation location of documentation; also
|
|
|
|
allow <option>--infodir</> (Peter)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add <option>--without-docdir</> to prevent installation of documentation (Peter)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Upgrade to <application>DocBook</> V4.2 SGML (Peter)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
New <literal>PostgreSQL</> <application>CVS</> tag (Marc)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
This was done to make it easier for organizations to manage their
|
|
|
|
own copies of the <productname>PostgreSQL</productname>
|
|
|
|
<application>CVS</> repository. File version stamps from the master
|
|
|
|
repository will not get munged by checking into or out of a copied
|
|
|
|
repository.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Clarify locking code (Manfred Koizar)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Buffer manager cleanup (Neil)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Decouple platform tests from CPU spinlock code (Bruce, Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add inlined test-and-set code on PA-RISC for <application>gcc</>
|
|
|
|
(ViSolve, Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Improve i386 spinlock code (Manfred Spraul)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Clean up spinlock assembly code to avoid warnings from newer
|
|
|
|
<application>gcc</> releases (Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Remove JDBC from source tree; now a separate project
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Remove the libpgtcl client interface; now a separate project
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
More accurately estimate memory and file descriptor usage (Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Improvements to the Mac OS X startup scripts (Ray A.)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
New <function>fsync()</> test program (Bruce)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Major documentation improvements (Neil, Peter)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Remove <application>pg_encoding</application>; not needed
|
|
|
|
anymore
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Remove <application>pg_id</application>; not needed anymore
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Remove <application>initlocation</application>; not needed
|
|
|
|
anymore
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Auto-detect thread flags (no more manual testing) (Bruce)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Use Olson's public domain <application>timezone</> library (Magnus)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
With threading enabled, use thread flags on Unixware for
|
|
|
|
backend executables too (Bruce)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
Unixware cannot mix threaded and nonthreaded object files in the
|
|
|
|
same executable, so everything must be compiled as threaded.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
<application>psql</> now uses a <application>flex</>-generated
|
|
|
|
lexical analyzer to process command strings
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Reimplement the linked list data structure used throughout the
|
|
|
|
backend (Neil)
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
This improves performance by allowing list append and length
|
|
|
|
operations to be more efficient.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow dynamically loaded modules to create their own server configuration
|
|
|
|
parameters (Thomas Hallgren)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
New Brazilian version of FAQ (Euler Taveira de Oliveira)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add French FAQ (Guillaume Lelarge)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
New <application>pgevent</> for Windows logging
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Make libpq and ECPG build as proper shared libraries on OS X (Tom)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
|
|
|
|
|
|
|
|
<sect3>
|
|
|
|
<title>Contrib Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Overhaul of <filename>contrib/dblink</> (Joe)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
<filename>contrib/dbmirror</> improvements (Steven Singer)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
New <filename>contrib/xml2</> (John Gray, Torchbox)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Updated <filename>contrib/mysql</filename>
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
New version of <filename>contrib/btree_gist</> (Teodor)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
New <filename>contrib/trgm</>, trigram matching for
|
|
|
|
<productname>PostgreSQL</productname> (Teodor)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Many <filename>contrib/tsearch2</> improvements (Teodor)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add double metaphone to <filename>contrib/fuzzystrmatch</> (Andrew)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Allow <filename>contrib/pg_autovacuum</> to run as a Windows service (Dave Page)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Add functions to <filename>contrib/dbsize</> (Andreas Pflug)
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Removed <filename>contrib/pg_logger</>: obsoleted by integrated logging
|
|
|
|
subprocess
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Removed <filename>contrib/rserv</>: obsoleted by various separate projects
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|