mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-09-15 21:00:20 +02:00
3c49c6facb
Since some preparation work had already been done, the only source changes left were changing empty-element tags like <xref linkend="foo"> to <xref linkend="foo"/>, and changing the DOCTYPE. The source files are still named *.sgml, but they are actually XML files now. Renaming could be considered later. In the build system, the intermediate step to convert from SGML to XML is removed. Everything is build straight from the source files again. The OpenSP (or the old SP) package is no longer needed. The documentation toolchain instructions are updated and are much simpler now. Peter Eisentraut, Alexander Lakhin, Jürgen Purtz
5422 lines
164 KiB
Plaintext
5422 lines
164 KiB
Plaintext
<!-- doc/src/sgml/release-8.0.sgml -->
|
|
<!-- See header comment in release.sgml about typical markup -->
|
|
|
|
<sect1 id="release-8-0-26">
|
|
<title>Release 8.0.26</title>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2010-10-04</para>
|
|
</formalpara>
|
|
|
|
<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</productname> 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 <xref linkend="release-8-0-22"/>.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Use a separate interpreter for each calling SQL userid in PL/Perl and
|
|
PL/Tcl (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This change prevents security problems that can be caused by subverting
|
|
Perl or Tcl code that will be executed later in the same session under
|
|
another SQL user identity (for example, within a <literal>SECURITY
|
|
DEFINER</literal> function). Most scripting languages offer numerous ways that
|
|
that might be done, such as redefining standard functions or operators
|
|
called by the target function. Without this change, any SQL user with
|
|
Perl or Tcl language usage rights can do essentially anything with the
|
|
SQL privileges of the target function's owner.
|
|
</para>
|
|
|
|
<para>
|
|
The cost of this change is that intentional communication among Perl
|
|
and Tcl functions becomes more difficult. To provide an escape hatch,
|
|
PL/PerlU and PL/TclU functions continue to use only one interpreter
|
|
per session. This is not considered a security issue since all such
|
|
functions execute at the trust level of a database superuser already.
|
|
</para>
|
|
|
|
<para>
|
|
It is likely that third-party procedural languages that claim to offer
|
|
trusted execution have similar security issues. We advise contacting
|
|
the authors of any PL you are depending on for security-critical
|
|
purposes.
|
|
</para>
|
|
|
|
<para>
|
|
Our thanks to Tim Bunce for pointing out this issue (CVE-2010-3433).
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent possible crashes in <function>pg_get_expr()</function> by disallowing
|
|
it from being called with an argument that is not one of the system
|
|
catalog columns it's intended to be used with
|
|
(Heikki Linnakangas, Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <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</filename> and the socket lockfile) while writing them
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This omission could result in corrupted lockfile contents if the
|
|
machine crashes shortly after postmaster start. That could in turn
|
|
prevent subsequent attempts to start the postmaster from succeeding,
|
|
until the lockfile is manually removed.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid recursion while assigning XIDs to heavily-nested
|
|
subtransactions (Andres Freund, Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
The original coding could result in a crash if there was limited
|
|
stack space.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <varname>log_line_prefix</varname>'s <literal>%i</literal> escape,
|
|
which could produce junk early in backend startup (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible data corruption in <command>ALTER TABLE ... SET
|
|
TABLESPACE</command> when archiving is enabled (Jeff Davis)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <command>CREATE DATABASE</command> and <command>ALTER DATABASE ... SET
|
|
TABLESPACE</command> to be interrupted by query-cancel (Guillaume Lelarge)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
In PL/Python, defend against null pointer results from
|
|
<function>PyCObject_AsVoidPtr</function> and <function>PyCObject_FromVoidPtr</function>
|
|
(Peter Eisentraut)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve <filename>contrib/dblink</filename>'s handling of tables containing
|
|
dropped columns (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix connection leak after <quote>duplicate connection name</quote>
|
|
errors in <filename>contrib/dblink</filename> (Itagaki Takahiro)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <filename>contrib/dblink</filename> to handle connection names longer than
|
|
62 bytes correctly (Itagaki Takahiro)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update build infrastructure and documentation to reflect the source code
|
|
repository's move from CVS to Git (Magnus Hagander and others)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update time zone data files to <application>tzdata</application> release 2010l
|
|
for DST law changes in Egypt and Palestine; also historical corrections
|
|
for Finland.
|
|
</para>
|
|
|
|
<para>
|
|
This change also adds new names for two Micronesian timezones:
|
|
Pacific/Chuuk is now preferred over Pacific/Truk (and the preferred
|
|
abbreviation is CHUT not TRUT) and Pacific/Pohnpei is preferred over
|
|
Pacific/Ponape.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-8-0-25">
|
|
<title>Release 8.0.25</title>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2010-05-17</para>
|
|
</formalpara>
|
|
|
|
<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</productname> 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 <xref linkend="release-8-0-22"/>.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Enforce restrictions in <literal>plperl</literal> using an opmask applied to
|
|
the whole interpreter, instead of using <filename>Safe.pm</filename>
|
|
(Tim Bunce, Andrew Dunstan)
|
|
</para>
|
|
|
|
<para>
|
|
Recent developments have convinced us that <filename>Safe.pm</filename> is too
|
|
insecure to rely on for making <literal>plperl</literal> trustable. This
|
|
change removes use of <filename>Safe.pm</filename> altogether, in favor of using
|
|
a separate interpreter with an opcode mask that is always applied.
|
|
Pleasant side effects of the change include that it is now possible to
|
|
use Perl's <literal>strict</literal> pragma in a natural way in
|
|
<literal>plperl</literal>, and that Perl's <literal>$a</literal> and <literal>$b</literal>
|
|
variables work as expected in sort routines, and that function
|
|
compilation is significantly faster. (CVE-2010-1169)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent PL/Tcl from executing untrustworthy code from
|
|
<structname>pltcl_modules</structname> (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
PL/Tcl's feature for autoloading Tcl code from a database table
|
|
could be exploited for trojan-horse attacks, because there was no
|
|
restriction on who could create or insert into that table. This change
|
|
disables the feature unless <structname>pltcl_modules</structname> is owned by a
|
|
superuser. (However, the permissions on the table are not checked, so
|
|
installations that really need a less-than-secure modules table can
|
|
still grant suitable privileges to trusted non-superusers.) Also,
|
|
prevent loading code into the unrestricted <quote>normal</quote> Tcl
|
|
interpreter unless we are really going to execute a <literal>pltclu</literal>
|
|
function. (CVE-2010-1170)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Do not allow an unprivileged user to reset superuser-only parameter
|
|
settings (Alvaro)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, if an unprivileged user ran <literal>ALTER USER ... RESET
|
|
ALL</literal> for himself, or <literal>ALTER DATABASE ... RESET ALL</literal> for
|
|
a database he owns, this would remove all special parameter settings
|
|
for the user or database, even ones that are only supposed to be
|
|
changeable by a superuser. Now, the <command>ALTER</command> will only
|
|
remove the parameters that the user has permission to change.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid possible crash during backend shutdown if shutdown occurs
|
|
when a <literal>CONTEXT</literal> addition would be made to log entries (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
In some cases the context-printing function would fail because the
|
|
current transaction had already been rolled back when it came time
|
|
to print a log message.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update PL/Perl's <filename>ppport.h</filename> for modern Perl versions
|
|
(Andrew)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix assorted memory leaks in PL/Python (Andreas Freund, Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent infinite recursion in <application>psql</application> when expanding
|
|
a variable that refers to itself (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Ensure that <filename>contrib/pgstattuple</filename> functions respond to cancel
|
|
interrupts promptly (Tatsuhito Kasahara)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make server startup deal properly with the case that
|
|
<function>shmget()</function> returns <literal>EINVAL</literal> for an existing
|
|
shared memory segment (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This behavior has been observed on BSD-derived kernels including macOS.
|
|
It resulted in an entirely-misleading startup failure complaining that
|
|
the shared memory request size was too large.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update time zone data files to <application>tzdata</application> release 2010j
|
|
for DST law changes in Argentina, Australian Antarctic, Bangladesh,
|
|
Mexico, Morocco, Pakistan, Palestine, Russia, Syria, Tunisia;
|
|
also historical corrections for Taiwan.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-8-0-24">
|
|
<title>Release 8.0.24</title>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2010-03-15</para>
|
|
</formalpara>
|
|
|
|
<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</productname> 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 <xref linkend="release-8-0-22"/>.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add new configuration parameter <varname>ssl_renegotiation_limit</varname> to
|
|
control how often we do session key renegotiation for an SSL connection
|
|
(Magnus)
|
|
</para>
|
|
|
|
<para>
|
|
This can be set to zero to disable renegotiation completely, which may
|
|
be required if a broken SSL library is used. In particular, some
|
|
vendors are shipping stopgap patches for CVE-2009-3555 that cause
|
|
renegotiation attempts to fail.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible 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()</function> for <type>bit</type> types treat any negative
|
|
length as meaning <quote>all the rest of the string</quote> (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
The previous coding treated only -1 that way, and would produce an
|
|
invalid result value for other negative values, possibly leading to
|
|
a crash (CVE-2010-0442).
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix integer-to-bit-string conversions to handle the first fractional
|
|
byte correctly when the output bit width is wider than the given
|
|
integer by something other than a multiple of 8 bits (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix some cases of pathologically slow regular expression matching (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix the <literal>STOP WAL LOCATION</literal> entry in backup history files to
|
|
report the next WAL segment's name when the end location is exactly at a
|
|
segment boundary (Itagaki Takahiro)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
When reading <filename>pg_hba.conf</filename> and related files, do not treat
|
|
<literal>@something</literal> as a file inclusion request if the <literal>@</literal>
|
|
appears inside quote marks; also, never treat <literal>@</literal> by itself
|
|
as a file inclusion request (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This prevents erratic behavior if a role or database name starts with
|
|
<literal>@</literal>. If you need to include a file whose path name
|
|
contains spaces, you can still do so, but you must write
|
|
<literal>@"/path to/file"</literal> rather than putting the quotes around
|
|
the whole construct.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent infinite loop on some platforms if a directory is named as
|
|
an inclusion target in <filename>pg_hba.conf</filename> and related files
|
|
(Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix plpgsql failure in one case where a composite column is set to NULL
|
|
(Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <literal>volatile</literal> markings in PL/Python to avoid possible
|
|
compiler-specific misbehavior (Zdenek Kotala)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Ensure PL/Tcl initializes the Tcl interpreter fully (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
The only known symptom of this oversight is that the Tcl
|
|
<literal>clock</literal> command misbehaves if using Tcl 8.5 or later.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent crash in <filename>contrib/dblink</filename> when too many key
|
|
columns are specified to a <function>dblink_build_sql_*</function> function
|
|
(Rushabh Lathia, Joe Conway)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix assorted crashes in <filename>contrib/xml2</filename> caused by sloppy
|
|
memory management (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update time zone data files to <application>tzdata</application> release 2010e
|
|
for DST law changes in Bangladesh, Chile, Fiji, Mexico, Paraguay, Samoa.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-8-0-23">
|
|
<title>Release 8.0.23</title>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2009-12-14</para>
|
|
</formalpara>
|
|
|
|
<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 <xref linkend="release-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</literal> at unsafe times
|
|
(Alvaro)
|
|
</para>
|
|
|
|
<para>
|
|
This fix prevents a PANIC if a <literal>VACUUM FULL</literal> is canceled
|
|
after it's already committed its tuple movements, as well as transient
|
|
errors if a plain <literal>VACUUM</literal> is interrupted after having
|
|
truncated the table.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible crash due to integer overflow in hash table size
|
|
calculation (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This could occur with extremely large planner estimates for the size of
|
|
a hashjoin's result.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix very rare crash in <type>inet</type>/<type>cidr</type> comparisons (Chris
|
|
Mikkelson)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
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</literal> PAM module with Microsoft Active Directory as the
|
|
domain controller. It might have problems elsewhere too, since it was
|
|
making unjustified assumptions about what arguments the PAM stack would
|
|
pass to it.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix rare crash in exception processing in PL/Python (Peter)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Ensure <application>psql</application>'s flex module is compiled with the correct
|
|
system header definitions (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This fixes build failures on platforms where
|
|
<literal>--enable-largefile</literal> causes incompatible changes in the
|
|
generated code.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make the postmaster ignore any <literal>application_name</literal> parameter in
|
|
connection request packets, to improve compatibility with future libpq
|
|
versions (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update time zone data files to <application>tzdata</application> release 2009s
|
|
for DST law changes in Antarctica, Argentina, Bangladesh, Fiji,
|
|
Novokuznetsk, Pakistan, Palestine, Samoa, Syria; also historical
|
|
corrections for Hong Kong.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-8-0-22">
|
|
<title>Release 8.0.22</title>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2009-09-09</para>
|
|
</formalpara>
|
|
|
|
<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.
|
|
However, if you have any hash indexes on <type>interval</type> columns,
|
|
you must <command>REINDEX</command> them after updating to 8.0.22.
|
|
Also, if you are upgrading from a version earlier than 8.0.6,
|
|
see <xref linkend="release-8-0-6"/>.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Disallow <command>RESET ROLE</command> and <command>RESET SESSION
|
|
AUTHORIZATION</command> inside security-definer functions (Tom, Heikki)
|
|
</para>
|
|
|
|
<para>
|
|
This covers a case that was missed in the previous patch that
|
|
disallowed <command>SET ROLE</command> and <command>SET SESSION
|
|
AUTHORIZATION</command> inside security-definer functions.
|
|
(See CVE-2007-6600)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
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</type> (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This corrects wrong results for hash joins on interval values.
|
|
It also changes the contents of hash indexes on interval columns.
|
|
If you have any such indexes, you must <command>REINDEX</command> them
|
|
after updating.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Treat <function>to_char(..., 'TH')</function> as an uppercase ordinal
|
|
suffix with <literal>'HH'</literal>/<literal>'HH12'</literal> (Heikki)
|
|
</para>
|
|
|
|
<para>
|
|
It was previously handled as <literal>'th'</literal> (lowercase).
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix overflow for <literal>INTERVAL '<replaceable>x</replaceable> ms'</literal>
|
|
when <replaceable>x</replaceable> is more than 2 million and integer
|
|
datetimes are in use (Alex Hunsaker)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix calculation of distance between a point and a line segment (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This led to incorrect results from a number of geometric operators.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <type>money</type> data type to work in locales where currency
|
|
amounts have no fractional digits, e.g. Japan (Itagaki Takahiro)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Properly round datetime input like
|
|
<literal>00:12:57.9999999999999999999999999999</literal> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix poor choice of page split point in GiST R-tree operator classes
|
|
(Teodor)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix portability issues in plperl initialization (Andrew Dunstan)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>pg_ctl</application> to not go into an infinite loop if
|
|
<filename>postgresql.conf</filename> is empty (Jeff Davis)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <filename>contrib/xml2</filename>'s <function>xslt_process()</function> to
|
|
properly handle the maximum number of parameters (twenty) (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve robustness of <application>libpq</application>'s code to recover
|
|
from errors during <command>COPY FROM STDIN</command> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid including conflicting readline and editline header files
|
|
when both libraries are installed (Zdenek Kotala)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update time zone data files to <application>tzdata</application> release 2009l
|
|
for DST law changes in Bangladesh, Egypt, Jordan, Pakistan,
|
|
Argentina/San_Luis, Cuba, Jordan (historical correction only),
|
|
Mauritius, Morocco, Palestine, Syria, Tunisia.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-8-0-21">
|
|
<title>Release 8.0.21</title>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2009-03-16</para>
|
|
</formalpara>
|
|
|
|
<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 <xref linkend="release-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</emphasis> error thrown by an encoding conversion function could
|
|
potentially lead to infinite recursion while trying to report the
|
|
error. The solution therefore is to disable translation and encoding
|
|
conversion and report the plain-ASCII form of any error message,
|
|
if we find we have gotten into a recursive error reporting situation.
|
|
(CVE-2009-0922)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Disallow <command>CREATE CONVERSION</command> with the wrong encodings
|
|
for the specified conversion function (Heikki)
|
|
</para>
|
|
|
|
<para>
|
|
This prevents one possible scenario for encoding conversion failure.
|
|
The previous change is a backstop to guard against other kinds of
|
|
failures in the same area.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix core dump when <function>to_char()</function> is given format codes that
|
|
are inappropriate for the type of the data argument (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <literal>MUST</literal> (Mauritius Island Summer Time) to the default list
|
|
of known timezone abbreviations (Xavier Bugaud)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-8-0-20">
|
|
<title>Release 8.0.20</title>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2009-02-02</para>
|
|
</formalpara>
|
|
|
|
<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 <xref linkend="release-8-0-6"/>.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve handling of URLs in <function>headline()</function> function (Teodor)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve handling of overlength headlines in <function>headline()</function>
|
|
function (Teodor)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent possible Assert failure or misconversion if an encoding
|
|
conversion is created with the wrong conversion function for the
|
|
specified pair of encodings (Tom, Heikki)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid unnecessary locking of small tables in <command>VACUUM</command>
|
|
(Heikki)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix uninitialized variables in <filename>contrib/tsearch2</filename>'s
|
|
<function>get_covers()</function> function (Teodor)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make all documentation reference <literal>pgsql-bugs</literal> and/or
|
|
<literal>pgsql-hackers</literal> as appropriate, instead of the
|
|
now-decommissioned <literal>pgsql-ports</literal> and <literal>pgsql-patches</literal>
|
|
mailing lists (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update time zone data files to <application>tzdata</application> release 2009a (for
|
|
Kathmandu and historical DST corrections in Switzerland, Cuba)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-8-0-19">
|
|
<title>Release 8.0.19</title>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2008-11-03</para>
|
|
</formalpara>
|
|
|
|
<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 <xref linkend="release-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</quote> message itself couldn't
|
|
be converted. The fix is to disable localization and send the plain
|
|
ASCII error message when we detect such a situation.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible crash when deeply nested functions are invoked from
|
|
a trigger (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
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</option>
|
|
build (Ron Mayer)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Ensure <function>SPI_getvalue</function> and <function>SPI_getbinval</function>
|
|
behave correctly when the passed tuple and tuple descriptor have
|
|
different numbers of columns (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This situation is normal when a table has had columns added or removed,
|
|
but these two functions didn't handle it properly.
|
|
The only likely consequence is an incorrect error indication.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>ecpg</application>'s parsing of <command>CREATE USER</command> (Michael)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix recent breakage of <literal>pg_ctl restart</literal> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update time zone data files to <application>tzdata</application> release 2008i (for
|
|
DST law changes in Argentina, Brazil, Mauritius, Syria)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-8-0-18">
|
|
<title>Release 8.0.18</title>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2008-09-22</para>
|
|
</formalpara>
|
|
|
|
<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 <xref linkend="release-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</quote> errors.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add checks in executor startup to ensure that the tuples produced by an
|
|
<command>INSERT</command> or <command>UPDATE</command> will match the target table's
|
|
current rowtype (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
<command>ALTER COLUMN TYPE</command>, followed by re-use of a previously
|
|
cached plan, could produce this type of situation. The check protects
|
|
against data corruption and/or crashes that could ensue.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix 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</literal> query (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix planner to estimate that <literal>GROUP BY</literal> expressions yielding
|
|
boolean results always result in two groups, regardless of the
|
|
expressions' contents (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This is very substantially more accurate than the regular <literal>GROUP
|
|
BY</literal> estimate for certain boolean tests like <replaceable>col</replaceable>
|
|
<literal>IS NULL</literal>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix PL/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</application> and <application>pg_restore</application>'s
|
|
error reporting after failure to send a SQL command (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>pg_ctl</application> to properly preserve postmaster
|
|
command-line arguments across a <literal>restart</literal> (Bruce)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update time zone data files to <application>tzdata</application> release 2008f (for
|
|
DST law changes in Argentina, Bahamas, Brazil, Mauritius, Morocco,
|
|
Pakistan, Palestine, and Paraguay)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-8-0-17">
|
|
<title>Release 8.0.17</title>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2008-06-12</para>
|
|
</formalpara>
|
|
|
|
<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 <xref linkend="release-8-0-6"/>.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <function>pg_get_ruledef()</function> parenthesize negative constants (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
Before this fix, a negative constant in a view or rule might be dumped
|
|
as, say, <literal>-42::integer</literal>, which is subtly incorrect: it should
|
|
be <literal>(-42)::integer</literal> due to operator precedence rules.
|
|
Usually this would make little difference, but it could interact with
|
|
another recent patch to cause
|
|
<productname>PostgreSQL</productname> to reject what had been a valid
|
|
<command>SELECT DISTINCT</command> view query. Since this could result in
|
|
<application>pg_dump</application> output failing to reload, it is being treated
|
|
as a high-priority fix. The only released versions in which dump
|
|
output is actually incorrect are 8.3.1 and 8.2.7.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-8-0-16">
|
|
<title>Release 8.0.16</title>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>never released</para>
|
|
</formalpara>
|
|
|
|
<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 <xref linkend="release-8-0-6"/>.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <command>ALTER TABLE ADD COLUMN ... PRIMARY KEY</command> so that the new
|
|
column is correctly checked to see if it's been initialized to all
|
|
non-nulls (Brendan Jurd)
|
|
</para>
|
|
|
|
<para>
|
|
Previous versions neglected to check this requirement at all.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible <command>CREATE TABLE</command> failure when inheriting the
|
|
<quote>same</quote> constraint from multiple parent relations that
|
|
inherited that constraint from a common ancestor (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix conversions between ISO-8859-5 and other encodings to handle
|
|
Cyrillic <quote>Yo</quote> characters (<literal>e</literal> and <literal>E</literal> with
|
|
two dots) (Sergey Burladyan)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix 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</literal> and <literal>DISTINCT</literal>
|
|
expressions.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix a corner case in regular-expression substring matching
|
|
(<literal>substring(<replaceable>string</replaceable> from
|
|
<replaceable>pattern</replaceable>)</literal>) (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
The problem occurs when there is a match to the pattern overall but
|
|
the user has specified a parenthesized subexpression and that
|
|
subexpression hasn't got a match. An example is
|
|
<literal>substring('foo' from 'foo(bar)?')</literal>.
|
|
This should return NULL, since <literal>(bar)</literal> isn't matched, but
|
|
it was mistakenly returning the whole-pattern match instead (ie,
|
|
<literal>foo</literal>).
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update time zone data files to <application>tzdata</application> release 2008c (for
|
|
DST law changes in Morocco, Iraq, Choibalsan, Pakistan, Syria, Cuba,
|
|
Argentina/San_Luis, and Chile)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix incorrect result from <application>ecpg</application>'s
|
|
<function>PGTYPEStimestamp_sub()</function> function (Michael)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix core dump in <filename>contrib/xml2</filename>'s
|
|
<function>xpath_table()</function> function when the input query returns a
|
|
NULL value (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <filename>contrib/xml2</filename>'s makefile to not override
|
|
<literal>CFLAGS</literal> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <literal>DatumGetBool</literal> macro to not fail with <application>gcc</application>
|
|
4.3 (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This problem affects <quote>old style</quote> (V0) C functions that
|
|
return boolean. The fix is already in 8.3, but the need to
|
|
back-patch it was not realized at the time.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix longstanding <command>LISTEN</command>/<command>NOTIFY</command>
|
|
race condition (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
In rare cases a session that had just executed a
|
|
<command>LISTEN</command> might not get a notification, even though
|
|
one would be expected because the concurrent transaction executing
|
|
<command>NOTIFY</command> was observed to commit later.
|
|
</para>
|
|
|
|
<para>
|
|
A side effect of the fix is that a transaction that has executed
|
|
a not-yet-committed <command>LISTEN</command> command will not see any
|
|
row in <structname>pg_listener</structname> for the <command>LISTEN</command>,
|
|
should it choose to look; formerly it would have. This behavior
|
|
was never documented one way or the other, but it is possible that
|
|
some applications depend on the old behavior.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
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</quote> error in some variants of
|
|
<command>ALTER OWNER</command> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>pg_ctl</application> to correctly extract the postmaster's port
|
|
number from command-line options (Itagaki Takahiro, Tom)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, <literal>pg_ctl start -w</literal> could try to contact the
|
|
postmaster on the wrong port, leading to bogus reports of startup
|
|
failure.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Use <option>-fwrapv</option> to defend against possible misoptimization
|
|
in recent <application>gcc</application> versions (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This is known to be necessary when building <productname>PostgreSQL</productname>
|
|
with <application>gcc</application> 4.3 or later.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix display of constant expressions in <literal>ORDER BY</literal>
|
|
and <literal>GROUP BY</literal> (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
An explicitly casted constant would be shown incorrectly. This could
|
|
for example lead to corruption of a view definition during
|
|
dump and reload.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>libpq</application> to handle NOTICE messages correctly
|
|
during COPY OUT (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This failure has only been observed to occur when a user-defined
|
|
datatype's output routine issues a NOTICE, but there is no
|
|
guarantee it couldn't happen due to other causes.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-8-0-15">
|
|
<title>Release 8.0.15</title>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2008-01-07</para>
|
|
</formalpara>
|
|
|
|
<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</productname>
|
|
community will produce binary packages for <productname>Windows</productname>.
|
|
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 <xref linkend="release-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>, <command>ANALYZE</command>, etc (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
Functions used in index expressions and partial-index
|
|
predicates are evaluated whenever a new table entry is made. It has
|
|
long been understood that this poses a risk of trojan-horse code
|
|
execution if one modifies a table owned by an untrustworthy user.
|
|
(Note that triggers, defaults, check constraints, etc. pose the
|
|
same type of risk.) But functions in indexes pose extra danger
|
|
because they will be executed by routine maintenance operations
|
|
such as <command>VACUUM FULL</command>, which are commonly performed
|
|
automatically under a superuser account. For example, a nefarious user
|
|
can execute code with superuser privileges by setting up a
|
|
trojan-horse index definition and waiting for the next routine vacuum.
|
|
The fix arranges for standard maintenance operations
|
|
(including <command>VACUUM</command>, <command>ANALYZE</command>, <command>REINDEX</command>,
|
|
and <command>CLUSTER</command>) to execute as the table owner rather than
|
|
the calling user, using the same privilege-switching mechanism already
|
|
used for <literal>SECURITY DEFINER</literal> functions. To prevent bypassing
|
|
this security measure, execution of <command>SET SESSION
|
|
AUTHORIZATION</command> and <command>SET ROLE</command> is now forbidden within a
|
|
<literal>SECURITY DEFINER</literal> context. (CVE-2007-6600)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Repair assorted bugs in the regular-expression package (Tom, Will Drewry)
|
|
</para>
|
|
|
|
<para>
|
|
Suitably crafted regular-expression patterns could cause crashes,
|
|
infinite or near-infinite looping, and/or massive memory consumption,
|
|
all of which pose denial-of-service hazards for applications that
|
|
accept regex search patterns from untrustworthy sources.
|
|
(CVE-2007-4769, CVE-2007-4772, CVE-2007-6067)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Require non-superusers who use <filename>/contrib/dblink</filename> to use only
|
|
password authentication, as a security measure (Joe)
|
|
</para>
|
|
|
|
<para>
|
|
The fix that appeared for this in 8.0.14 was incomplete, as it plugged
|
|
the hole for only some <filename>dblink</filename> functions. (CVE-2007-6601,
|
|
CVE-2007-3278)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update time zone data files to <application>tzdata</application> release 2007k
|
|
(in particular, recent Argentina changes) (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix planner failure in some cases of <literal>WHERE false AND var IN
|
|
(SELECT ...)</literal> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Preserve the tablespace of indexes that are
|
|
rebuilt by <command>ALTER TABLE ... ALTER COLUMN TYPE</command> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make archive recovery always start a new WAL timeline, rather than only
|
|
when a recovery stop time was used (Simon)
|
|
</para>
|
|
|
|
<para>
|
|
This avoids a corner-case risk of trying to overwrite an existing
|
|
archived copy of the last WAL segment, and seems simpler and cleaner
|
|
than the original definition.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <command>VACUUM</command> not use all of <varname>maintenance_work_mem</varname>
|
|
when the table is too small for it to be useful (Alvaro)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix potential crash in <function>translate()</function> when using a multibyte
|
|
database encoding (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix PL/Perl to cope when platform's Perl defines type <literal>bool</literal>
|
|
as <literal>int</literal> rather than <literal>char</literal> (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
While this could theoretically happen anywhere, no standard build of
|
|
Perl did things this way ... until <productname>macOS</productname> 10.5.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix PL/Python to not crash on long exception messages (Alvaro)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>pg_dump</application> to correctly handle inheritance child tables
|
|
that have default expressions different from their parent's (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<application>ecpg</application> parser fixes (Michael)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <filename>contrib/tablefunc</filename>'s <function>crosstab()</function> handle
|
|
NULL rowid as a category in its own right, rather than crashing (Joe)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <type>tsvector</type> and <type>tsquery</type> output routines to
|
|
escape backslashes correctly (Teodor, Bruce)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix crash of <function>to_tsvector()</function> on huge input strings (Teodor)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Require a specific version of <productname>Autoconf</productname> to be used
|
|
when re-generating the <command>configure</command> script (Peter)
|
|
</para>
|
|
|
|
<para>
|
|
This affects developers and packagers only. The change was made
|
|
to prevent accidental use of untested combinations of
|
|
<productname>Autoconf</productname> and <productname>PostgreSQL</productname> versions.
|
|
You can remove the version check if you really want to use a
|
|
different <productname>Autoconf</productname> version, but it's
|
|
your responsibility whether the result works or not.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-8-0-14">
|
|
<title>Release 8.0.14</title>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2007-09-17</para>
|
|
</formalpara>
|
|
|
|
<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 <xref linkend="release-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</command>
|
|
on the same table (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <command>CREATE DOMAIN ... DEFAULT NULL</command> work properly (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix excessive logging of <acronym>SSL</acronym> error messages (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix logging so that log messages are never interleaved when using
|
|
the syslogger process (Andrew)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix crash when <varname>log_min_error_statement</varname> logging runs out
|
|
of memory (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix incorrect handling of some foreign-key corner cases (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent <command>CLUSTER</command> from failing
|
|
due to attempting to process temporary tables of other sessions (Alvaro)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update the time zone database rules, particularly New Zealand's upcoming changes (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Windows socket improvements (Magnus)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Suppress timezone name (<literal>%Z</literal>) in log timestamps on Windows
|
|
because of possible encoding mismatches (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Require non-superusers who use <filename>/contrib/dblink</filename> to use only
|
|
password authentication, as a security measure (Joe)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-8-0-13">
|
|
<title>Release 8.0.13</title>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2007-04-23</para>
|
|
</formalpara>
|
|
|
|
<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 <xref linkend="release-8-0-6"/>.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support explicit placement of the temporary-table schema within
|
|
<varname>search_path</varname>, and disable searching it for functions
|
|
and operators (Tom)
|
|
</para>
|
|
<para>
|
|
This is needed to allow a security-definer function to set a
|
|
truly secure value of <varname>search_path</varname>. Without it,
|
|
an unprivileged SQL user can use temporary objects to execute code
|
|
with the privileges of the security-definer function (CVE-2007-2138).
|
|
See <command>CREATE FUNCTION</command> for more information.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<filename>/contrib/tsearch2</filename> crash fixes (Teodor)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix potential-data-corruption bug in how <command>VACUUM FULL</command> handles
|
|
<command>UPDATE</command> chains (Tom, Pavan Deolasee)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix 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>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2007-02-07</para>
|
|
</formalpara>
|
|
|
|
<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 <xref linkend="release-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>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2007-02-05</para>
|
|
</formalpara>
|
|
|
|
<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 <xref linkend="release-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</literal> (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>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2007-01-08</para>
|
|
</formalpara>
|
|
|
|
<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 <xref linkend="release-8-0-6"/>.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve handling of <function>getaddrinfo()</function> 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</quote> errors in
|
|
<command>VACUUM</command> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix race condition for truncation of a large relation across a
|
|
gigabyte boundary by <command>VACUUM</command> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix 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[]</literal> 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()</function> and <function>to_char(numeric)</function>
|
|
are now <literal>STABLE</literal>, not <literal>IMMUTABLE</literal>, for
|
|
new <application>initdb</application> installs (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This is because <varname>lc_numeric</varname> 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</application> <literal>\d</literal> 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>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2006-10-16</para>
|
|
</formalpara>
|
|
|
|
<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 <xref linkend="release-8-0-6"/>.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
<listitem><para>Fix crash when referencing <literal>NEW</literal> 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</command> to recheck
|
|
<literal>NOT NULL</literal> for <literal>USING</literal> clause (Tom)</para></listitem>
|
|
<listitem><para>Fix <function>string_to_array()</function> to handle overlapping
|
|
matches for the separator string</para>
|
|
<para>For example, <literal>string_to_array('123xx456xxx789', 'xx')</literal>.
|
|
</para></listitem>
|
|
<listitem><para>Fix corner cases in pattern matching for
|
|
<application>psql</application>'s <literal>\d</literal> commands</para></listitem>
|
|
<listitem><para>Fix index-corrupting bugs in /contrib/ltree
|
|
(Teodor)</para></listitem>
|
|
<listitem><para>Numerous robustness fixes in <application>ecpg</application> (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</systemitem> and
|
|
<productname>Intel</productname> compilers (Tom)</para></listitem>
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-8-0-8">
|
|
<title>Release 8.0.8</title>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2006-05-23</para>
|
|
</formalpara>
|
|
|
|
<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 <xref linkend="release-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</application>'s
|
|
<function>PQescapeStringConn()</function>) to perform string escaping,
|
|
rather than relying on <foreignphrase>ad hoc</foreignphrase> 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</productname> 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>\'</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>''</literal> and not
|
|
<literal>\'</literal> as a representation of ASCII single quote in SQL string
|
|
literals. By default, <literal>\'</literal> is rejected only when
|
|
<varname>client_encoding</varname> 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</varname> 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</varname> is in part to make it obvious that insecure
|
|
clients are insecure.
|
|
</para></listitem>
|
|
|
|
<listitem><para>Modify <application>libpq</application>'s string-escaping routines to be
|
|
aware of encoding considerations and
|
|
<varname>standard_conforming_strings</varname></para>
|
|
<para>This fixes <application>libpq</application>-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</productname> connections
|
|
concurrently should migrate to <function>PQescapeStringConn()</function> and
|
|
<function>PQescapeByteaConn()</function> to ensure that escaping is done correctly
|
|
for the settings in use in each database connection. Applications that
|
|
do string escaping <quote>by hand</quote> 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>, <function>alt_to_iso</function>,
|
|
<function>euc_tw_to_big5</function>, <function>euc_tw_to_mic</function>,
|
|
<function>mic_to_euc_tw</function> were all broken to varying
|
|
extents.
|
|
</para></listitem>
|
|
|
|
<listitem><para>Clean up stray remaining uses of <literal>\'</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</literal> for patterns involving
|
|
<literal>|</literal> (Tom)</para></listitem>
|
|
|
|
<listitem><para>Fix <command>SELECT INTO</command> and <command>CREATE TABLE AS</command> 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>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2006-02-14</para>
|
|
</formalpara>
|
|
|
|
<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 <xref linkend="release-8-0-6"/>.
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem><para>Fix potential crash in <command>SET
|
|
SESSION AUTHORIZATION</command> (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</quote> 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</literal> constraints for
|
|
<literal>UNKNOWN</literal> parameters in prepared statements
|
|
(Neil)</para></listitem>
|
|
|
|
<listitem><para>Ensure <command>ALTER COLUMN TYPE</command> will process
|
|
<literal>FOREIGN KEY</literal>, <literal>UNIQUE</literal>, and <literal>PRIMARY KEY</literal>
|
|
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</application> to continue properly after a
|
|
<command>COPY</command> failure; formerly it tried to treat the remaining
|
|
<command>COPY</command> data as SQL commands (Stephen Frost)</para></listitem>
|
|
|
|
<listitem><para>Fix <application>pg_ctl</application> <literal>unregister</literal> crash
|
|
when the data directory is not specified (Magnus)</para></listitem>
|
|
|
|
<listitem><para>Fix <application>ecpg</application> crash on AMD64 and PPC
|
|
(Neil)</para></listitem>
|
|
|
|
<listitem><para>Recover properly if error occurs during argument passing
|
|
in <application>PL/Python</application> (Neil)</para></listitem>
|
|
|
|
<listitem><para>Fix <application>PL/Perl</application>'s handling of locales on
|
|
Win32 to match the backend (Andrew)</para></listitem>
|
|
|
|
<listitem><para>Fix crash when <literal>log_min_messages</literal> is set to
|
|
<literal>DEBUG3</literal> or above in <filename>postgresql.conf</filename> on Win32
|
|
(Bruce)</para></listitem>
|
|
|
|
<listitem><para>Fix <application>pgxs</application> <literal>-L</literal> library path
|
|
specification for Win32, Cygwin, macOS, 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</function>
|
|
and <function>isinf</function> during configure (Tom)</para></listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-8-0-6">
|
|
<title>Release 8.0.6</title>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2006-01-09</para>
|
|
</formalpara>
|
|
|
|
<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 <xref linkend="release-8-0-3"/>.
|
|
Also, you might need to <command>REINDEX</command> indexes on textual
|
|
columns after updating, if you are affected by the locale or
|
|
<application>plperl</application> 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</emphasis> 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</command> to fix existing indexes on
|
|
textual columns.</para></listitem>
|
|
|
|
<listitem><para>Set locale environment variables during postmaster startup
|
|
to ensure that <application>plperl</application> won't change the locale later</para>
|
|
<para>This fixes a problem that occurred if the <application>postmaster</application> was
|
|
started with environment variables specifying a different locale than what
|
|
<application>initdb</application> had been told. Under these conditions, any use of
|
|
<application>plperl</application> was likely to lead to corrupt indexes. You might need
|
|
<command>REINDEX</command> 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</literal>s
|
|
(Tom) </para></listitem>
|
|
|
|
<listitem><para>Fix bug in <filename>/contrib/pgcrypto</filename> 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</filename> 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>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2005-12-12</para>
|
|
</formalpara>
|
|
|
|
<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 <xref linkend="release-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</filename> 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</varname>
|
|
includes <literal>%i</literal></para></listitem>
|
|
|
|
<listitem><para>Fix <application>psql</application> performance issue with long scripts
|
|
on Windows (Merlin Moncure)</para></listitem>
|
|
|
|
<listitem><para>Fix missing updates of <filename>pg_group</filename> 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</quote>.</para></listitem>
|
|
|
|
<listitem><para>Postpone timezone initialization until after
|
|
<filename>postmaster.pid</filename> 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</application> when a
|
|
table has been dropped</para></listitem>
|
|
|
|
<listitem><para>Fix problems with whole-row references (<literal>foo.*</literal>)
|
|
to subquery results</para></listitem>
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-8-0-4">
|
|
<title>Release 8.0.4</title>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2005-10-04</para>
|
|
</formalpara>
|
|
|
|
<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 <xref linkend="release-8-0-3"/>.
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
<listitem><para>Fix error that allowed <command>VACUUM</command> to remove
|
|
<literal>ctid</literal> chains too soon, and add more checking in code that follows
|
|
<literal>ctid</literal> links</para>
|
|
<para>This fixes a long-standing problem that could cause crashes in very rare
|
|
circumstances.</para></listitem>
|
|
<listitem><para>Fix <type>CHAR()</type> 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()</type> 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</command></para>
|
|
<para>This should fix recent reports of <quote>index is not a btree</quote>
|
|
failures when a crash occurs shortly after <command>CREATE
|
|
DATABASE</command>.</para></listitem>
|
|
<listitem><para>Fix the sense of the test for read-only transaction
|
|
in <command>COPY</command></para>
|
|
<para>The code formerly prohibited <command>COPY TO</command>, where it should
|
|
prohibit <command>COPY FROM</command>.
|
|
</para></listitem>
|
|
<listitem><para>Handle consecutive embedded newlines in <command>COPY</command>
|
|
CSV-mode input</para></listitem>
|
|
<listitem><para>Fix <function>date_trunc(week)</function> 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</literal> corner
|
|
cases</para></listitem>
|
|
<listitem><para>Fix overenthusiastic optimization of <literal>x IN (SELECT
|
|
DISTINCT ...)</literal> and related cases</para></listitem>
|
|
<listitem><para>Fix mis-planning of queries with small <literal>LIMIT</literal>
|
|
values due to poorly thought out <quote>fuzzy</quote> cost
|
|
comparison</para></listitem>
|
|
<listitem><para>Make <function>array_in</function> and <function>array_recv</function> more
|
|
paranoid about validating their OID parameter</para></listitem>
|
|
<listitem><para>Fix missing rows in queries like <literal>UPDATE a=... WHERE
|
|
a...</literal> with GiST index on column <literal>a</literal></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</literal>
|
|
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</literal> return a nonzero exit code
|
|
when opening the file fails</para></listitem>
|
|
<listitem><para>Change <application>pg_dump</application> to handle inherited check
|
|
constraints more reliably</para></listitem>
|
|
<listitem><para>Fix password prompting in <application>pg_restore</application> on
|
|
Windows</para></listitem>
|
|
<listitem><para>Fix PL/pgSQL to handle <literal>var := var</literal> correctly when
|
|
the variable is of pass-by-reference type</para></listitem>
|
|
<listitem><para>Fix PL/Perl <literal>%_SHARED</literal> so it's actually
|
|
shared</para></listitem>
|
|
<listitem><para>Fix <filename>contrib/pg_autovacuum</filename> to allow sleep
|
|
intervals over 2000 sec</para></listitem>
|
|
<listitem><para>Update <filename>contrib/tsearch2</filename> to use current Snowball
|
|
code</para></listitem>
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-8-0-3">
|
|
<title>Release 8.0.3</title>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2005-05-09</para>
|
|
</formalpara>
|
|
|
|
<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</filename> module
|
|
creates several functions that are improperly declared to return
|
|
<type>internal</type> when they do not accept <type>internal</type> arguments.
|
|
This breaks type safety for all functions using <type>internal</type>
|
|
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</filename> to avoid unsafe use of
|
|
<type>INTERNAL</type> function results</para></listitem>
|
|
<listitem><para>Guard against incorrect second parameter to
|
|
<function>record_out</function></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</type> values</para>
|
|
<para>
|
|
The comparison code was wrong in the case where the
|
|
<literal>--enable-integer-datetimes</literal> configuration switch had been used.
|
|
NOTE: if you have an index on a <type>TIME WITH TIME ZONE</type> column,
|
|
it will need to be <command>REINDEX</command>ed after installing this update, because
|
|
the fix corrects the sort order of column values.
|
|
</para></listitem>
|
|
<listitem><para>Fix <function>EXTRACT(EPOCH)</function> for
|
|
<type>TIME WITH TIME ZONE</type> values</para></listitem>
|
|
<listitem><para>Fix mis-display of negative fractional seconds in
|
|
<type>INTERVAL</type> values</para>
|
|
<para>
|
|
This error only occurred when the
|
|
<literal>--enable-integer-datetimes</literal> configuration switch had been used.
|
|
</para></listitem>
|
|
<listitem><para>Fix pg_dump to dump trigger names containing <literal>%</literal>
|
|
correctly (Neil)</para></listitem>
|
|
<listitem><para>Still more 64-bit fixes for
|
|
<filename>contrib/intagg</filename></para></listitem>
|
|
<listitem><para>Prevent incorrect optimization of functions returning
|
|
<type>RECORD</type></para></listitem>
|
|
<listitem><para>Prevent crash on <literal>COALESCE(NULL,NULL)</literal></para></listitem>
|
|
<listitem><para>Fix Borland makefile for libpq</para></listitem>
|
|
<listitem><para>Fix <filename>contrib/btree_gist</filename> for <type>timetz</type> type
|
|
(Teodor)</para></listitem>
|
|
<listitem><para>Make <command>pg_ctl</command> check the PID found in
|
|
<filename>postmaster.pid</filename> to see if it is still a live
|
|
process</para></listitem>
|
|
<listitem><para>Fix <command>pg_dump</command>/<command>pg_restore</command> 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>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2005-04-07</para>
|
|
</formalpara>
|
|
|
|
<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</application>,
|
|
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</varname> setting of
|
|
<option>fsync_writethrough</option> (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</option>, but was
|
|
renamed because it acts quite differently from <option>fsync</option> on other
|
|
platforms.
|
|
</para>
|
|
</listitem>
|
|
<listitem><para>Enable the <varname>wal_sync_method</varname> setting of
|
|
<option>open_datasync</option> on Windows, and make it the default for that
|
|
platform (Magnus, Bruce)</para>
|
|
<para>
|
|
Because the default is no longer <option>fsync_writethrough</option>,
|
|
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</application>, choose the drive properties,
|
|
then <literal>Policies</literal>.
|
|
</para>
|
|
</listitem>
|
|
<listitem><para>New cache management algorithm <acronym>2Q</acronym> replaces
|
|
<acronym>ARC</acronym> (Tom)</para>
|
|
<para>
|
|
This was done to avoid a pending US patent on <acronym>ARC</acronym>. The
|
|
<acronym>2Q</acronym> code might be a few percentage points slower than
|
|
<acronym>ARC</acronym> 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</literal> (Tom)</para>
|
|
<para>
|
|
Formerly the array would remain <literal>NULL</literal>, but now it becomes a
|
|
single-element array. The main SQL engine was changed to handle
|
|
<command>UPDATE</command> 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</literal> and <literal>\r</literal> to <literal>\n</literal>
|
|
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</command> (Tom)</para></listitem>
|
|
<listitem><para>Fix <command>CLUSTER</command> failure after <command>ALTER TABLE
|
|
SET WITHOUT OIDS</command> (Tom)</para></listitem>
|
|
<listitem><para>Reduce memory usage of <command>ALTER TABLE ADD COLUMN</command>
|
|
(Neil)</para></listitem>
|
|
<listitem><para>Fix <command>ALTER LANGUAGE RENAME</command> (Tom)</para></listitem>
|
|
<listitem><para>Document the Windows-only <literal>register</literal> and
|
|
<literal>unregister</literal> options of <application>pg_ctl</application> (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</application>
|
|
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</varname> to <option>eventlog</option> (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</command> by superusers
|
|
who aren't flagged as having CREATEDB privilege (Tom)</para></listitem>
|
|
<listitem><para>Modify WAL log entries for <command>CREATE</command> and
|
|
<command>DROP DATABASE</command> 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</command> 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()</function> so it can call PL functions
|
|
(Tom)</para></listitem>
|
|
<listitem><para>Several <filename>contrib/tsearch2</filename> and
|
|
<filename>contrib/btree_gist</filename> fixes (Teodor)
|
|
</para></listitem>
|
|
<listitem><para>Fix crash of some <filename>contrib/pgcrypto</filename>
|
|
functions on some platforms (Marko Kreen)</para></listitem>
|
|
<listitem><para>Fix <filename>contrib/intagg</filename> for 64-bit platforms
|
|
(Tom)</para></listitem>
|
|
<listitem><para>Fix ecpg bugs in parsing of <command>CREATE</command> 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>,
|
|
<function>lower()</function>, and <function>initcap()</function> when the locale is
|
|
<literal>C</literal> (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</literal>.
|
|
</para></listitem>
|
|
<listitem><para>Fix <function>quote_ident()</function> to quote names that match keywords (Tom)</para></listitem>
|
|
<listitem><para>Fix <function>to_date()</function> to behave reasonably when
|
|
<literal>CC</literal> and <literal>YY</literal> fields are both used (Karel)</para></listitem>
|
|
<listitem><para>Prevent <function>to_char(interval)</function> from failing
|
|
when given a zero-month interval (Tom)</para></listitem>
|
|
<listitem><para>Fix wrong week returned by <function>date_trunc('week')</function>
|
|
(Bruce)</para>
|
|
<para>
|
|
<function>date_trunc('week')</function>
|
|
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</literal>
|
|
addresses in <type>INET</type> data types (Tom)</para></listitem>
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-8-0-1">
|
|
<title>Release 8.0.1</title>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2005-01-31</para>
|
|
</formalpara>
|
|
|
|
<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</command> 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</command> 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</command> 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</replaceable></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>
|
|
|
|
<formalpara>
|
|
<title>Release date:</title>
|
|
<para>2005-01-19</para>
|
|
</formalpara>
|
|
|
|
<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</trademark> as
|
|
a server. It can run as a <productname>Windows</productname> service. This
|
|
release supports NT-based Windows releases like
|
|
<productname>Windows 2000 SP4</productname>, <productname>Windows XP</productname>, and
|
|
<productname>Windows 2003</productname>. Older releases like
|
|
<productname>Windows 95</productname>, <productname>Windows 98</productname>, and
|
|
<productname>Windows ME</productname> 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</productname> — 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</productname> 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</application> 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</application> 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</option> 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</option> or <option>IMMUTABLE</option> 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</command>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Nondeferred <option>AFTER</option> 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</varname> and
|
|
<varname>tcpip_socket</varname> have been replaced with a more general
|
|
parameter <varname>listen_addresses</varname>. Also, the server now listens on
|
|
<literal>localhost</literal> by default, which eliminates the need for the
|
|
<literal>-i</literal> postmaster switch in many scenarios.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Server configuration parameters <varname>SortMem</varname> and
|
|
<varname>VacuumMem</varname> have been renamed to <varname>work_mem</varname>
|
|
and <varname>maintenance_work_mem</varname> 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>,
|
|
<varname>log_timestamp</varname>, and <varname>log_source_port</varname> have been
|
|
replaced with a more general parameter <varname>log_line_prefix</varname>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Server configuration parameter <varname>syslog</varname> has been
|
|
replaced with a more logical <varname>log_destination</varname> variable to
|
|
control the log output destination.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Server configuration parameter <varname>log_statement</varname> has been
|
|
changed so it can selectively log just database modification or
|
|
data definition statements. Server configuration parameter
|
|
<varname>log_duration</varname> now prints only when <varname>log_statement</varname>
|
|
prints the query.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Server configuration parameter <varname>max_expr_depth</varname> parameter has
|
|
been replaced with <varname>max_stack_depth</varname> 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> function no longer counts trailing spaces in
|
|
<type>CHAR(n)</type> values.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Casting an integer to <type>BIT(N)</type> 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>""</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"</type> data type have been removed.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
The <function>extract()</function> function (also called
|
|
<function>date_part</function>) 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</type> 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</type> 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</application>'s <command>\copy</command> command now reads or
|
|
writes to the query's <literal>stdin/stdout</literal>, rather than
|
|
<application>psql</application>'s <literal>stdin/stdout</literal>. The previous
|
|
behavior can be accessed via new
|
|
<option>pstdin</option>/<option>pstdout</option> 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>/<command>SHOW</command>
|
|
<varname>TimeZone</varname> might be different from what your platform provides.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<application>Configure</application>'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</application> 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> 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</type>s. In the next release,
|
|
this will <emphasis>not</emphasis> be the case: to create a table
|
|
that contains <type>OID</type>s, the <option>WITH OIDS</option> 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</option> 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()</function> call, but instead <function>fsync()</function>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</literal> 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</literal> 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</option> 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</application> 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>,
|
|
<varname>integer_datetimes</varname>, <varname>max_function_args</varname>,
|
|
<varname>max_identifier_length</varname>, <varname>max_index_keys</varname> (Joe)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make quoting of <literal>sameuser</literal>, <literal>samegroup</literal>, and
|
|
<literal>all</literal> remove special meaning of these terms in
|
|
<filename>pg_hba.conf</filename> (Andrew)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Use clearer IPv6 name <literal>::1/128</literal> for
|
|
<literal>localhost</literal> in default <filename>pg_hba.conf</filename> (Andrew)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Use CIDR format in <filename>pg_hba.conf</filename> examples (Andrew)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Rename server configuration parameters <varname>SortMem</varname> and
|
|
<varname>VacuumMem</varname> to <varname>work_mem</varname> and
|
|
<varname>maintenance_work_mem</varname> (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</varname>, while
|
|
<varname>work_mem</varname> is for workspaces used during query execution.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow logging of session disconnections using server configuration
|
|
<varname>log_disconnections</varname> (Andrew)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add new server configuration parameter <varname>log_line_prefix</varname> 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>,
|
|
<varname>log_timestamp</varname>, <varname>log_source_port</varname>; functionality
|
|
superseded by <varname>log_line_prefix</varname> (Andrew)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Replace the <varname>virtual_host</varname> and <varname>tcpip_socket</varname>
|
|
parameters with a unified <varname>listen_addresses</varname> parameter
|
|
(Andrew, Tom)
|
|
</para>
|
|
<para>
|
|
<varname>virtual_host</varname> could only specify a single IP address to
|
|
listen on. <varname>listen_addresses</varname> allows multiple addresses
|
|
to be specified.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Listen on localhost by default, which eliminates the need for the
|
|
<option>-i</option> postmaster switch in many scenarios (Andrew)
|
|
</para>
|
|
<para>
|
|
Listening on localhost (<literal>127.0.0.1</literal>) 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</varname> server configuration parameter, and add more
|
|
logical <varname>log_destination</varname> variable to control log output
|
|
location (Magnus)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Change server configuration parameter <varname>log_statement</varname> to take
|
|
values <varname>all</varname>, <varname>mod</varname>, <varname>ddl</varname>, or
|
|
<varname>none</varname> 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</quote> direction.
|
|
They are now treated more strictly: only superusers can set them.
|
|
However, a superuser can use <command>ALTER USER</command> 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</literal>.
|
|
</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</function> message with parameters. The parameter values
|
|
sent at <function>Bind</function> 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</varname> print only when <varname>log_statement</varname>
|
|
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 ...</literal> evaluate <literal>val</literal> only once (Tom)
|
|
</para>
|
|
<para>
|
|
<option>CASE</option> 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</option> 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</literal>. This should work but formerly
|
|
could fail with divide-by-zero.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Replace <varname>max_expr_depth</varname> parameter with
|
|
<varname>max_stack_depth</varname> 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>/<option>ILIKE</option> 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</quote> with mangling of words
|
|
containing <literal>I</literal> and <literal>i</literal>. 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</option> 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</command> for casts, conversions, languages,
|
|
operator classes, and large objects (Christopher)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add new server configuration parameter <varname>default_with_oids</varname> to
|
|
control whether tables are created with <type>OID</type>s by default (Neil)
|
|
</para>
|
|
<para>
|
|
This allows administrators to control whether <command>CREATE
|
|
TABLE</command> commands create tables with or without <type>OID</type>
|
|
columns by default. (Note: the current factory default setting for
|
|
<varname>default_with_oids</varname> is <literal>TRUE</literal>, but the default
|
|
will become <literal>FALSE</literal> in future releases.)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <option>WITH</option> / <option>WITHOUT OIDS</option> clause to
|
|
<command>CREATE TABLE AS</command> (Neil)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <command>ALTER TABLE DROP COLUMN</command> to drop an <type>OID</type>
|
|
column (<command>ALTER TABLE SET WITHOUT OIDS</command> still works)
|
|
(Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow composite types as table columns (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <command>ALTER ... ADD COLUMN</command> with defaults and
|
|
<option>NOT NULL</option> constraints; works per SQL spec (Rod)
|
|
</para>
|
|
<para>
|
|
It is now possible for <option>ADD COLUMN</option> 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</command> 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</command> actions in a single <command>ALTER
|
|
TABLE</command> command (Rod)
|
|
</para>
|
|
<para>
|
|
This is particularly useful for <command>ALTER</command> commands that
|
|
rewrite the table (which include <option>ALTER COLUMN TYPE</option> and
|
|
<option>ADD COLUMN</option> with a default). By grouping
|
|
<command>ALTER</command> 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</option> functions (Sean Chittenden)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <option>ALTER TABLE ... SET WITHOUT CLUSTER</option> (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</type> names are now
|
|
<replaceable>table_column_type</replaceable>
|
|
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()</function> to return a
|
|
<type>SERIAL</type> column's sequence name (Christopher)
|
|
</para>
|
|
<para>
|
|
This allows automated scripts to reliably find the <type>SERIAL</type>
|
|
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> command to allow moving of indexes
|
|
between tablespaces (Gavin)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <command>ALTER TABLE OWNER</command> 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</option> keyword to <command>CREATE RULE</command> (Fabien
|
|
Coelho)
|
|
</para>
|
|
<para>
|
|
This allows <option>ALSO</option> to be added to rule creation to contrast it with
|
|
<option>INSTEAD</option> rules.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <option>NOWAIT</option> 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</command>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</application> <option>kill</option> option for Windows (Andrew)
|
|
</para>
|
|
<para>
|
|
Windows does not have a <literal>kill</literal> command to send signals to
|
|
backends so this capability was added to <application>pg_ctl</application>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Information schema improvements
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <option>--pwfile</option> 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</option> command to <application>pg_ctl</application> 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</function> 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"</type> 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</quote> error would be more
|
|
appropriate, such as <literal>null * null</literal>. If you actually want
|
|
to do arithmetic on a <type>"char"</type> 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</literal>, for example, non-whitespace
|
|
after the closing right brace.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Empty-string array element values must now be written as
|
|
<literal>""</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</literal> as a date string (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <function>netmask</function> and <function>hostmask</function> 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>/<function>to_date()</function> date conversion
|
|
improvements (Kurt Roeckx, Fabien Coelho)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <function>length()</function> disregard trailing spaces in
|
|
<type>CHAR(n)</type> (Gavin)
|
|
</para>
|
|
<para>
|
|
This change was made to improve consistency: trailing spaces are
|
|
semantically insignificant in <type>CHAR(n)</type> data, so they
|
|
should not be counted by <function>length()</function>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Warn about empty string being passed to
|
|
<type>OID</type>/<type>float4</type>/<type>float8</type> 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>/<type>int4</type>/<type>int8</type>/<type>float4</type>/<type>float8</type>
|
|
input routines
|
|
(Neil)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Better support for IEEE <literal>Infinity</literal> and <literal>NaN</literal>
|
|
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> option to <function>date_trunc()</function> (Robert Creager)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <function>to_char</function> for <literal>1 BC</literal>
|
|
(previously it returned <literal>1 AD</literal>) (Bruce)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <function>date_part(year)</function> for BC dates (previously it
|
|
returned one less than the correct year) (Bruce)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <function>date_part()</function> 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()</function> as an alias for <function>ceil()</function>,
|
|
and <function>power()</function> as an alias for <function>pow()</function> for
|
|
standards compliance (Neil)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Change <function>ln()</function>, <function>log()</function>,
|
|
<function>power()</function>, and <function>sqrt()</function> to emit the correct
|
|
<literal>SQLSTATE</literal> error codes for certain error conditions, as
|
|
specified by SQL:2003 (Neil)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <function>width_bucket()</function> function as defined by SQL:2003 (Neil)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <function>generate_series()</function> functions to simplify working
|
|
with numeric sets (Joe)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <function>upper/lower/initcap()</function> functions to work with
|
|
multibyte encodings (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add boolean and bitwise integer <option>AND</option>/<option>OR</option>
|
|
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</type> plus <type>datetime</type> operators (Tom)
|
|
</para>
|
|
<para>
|
|
The reverse ordering, <type>datetime</type> plus <type>interval</type>,
|
|
was already supported, but both are required by the SQL standard.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Casting an integer to <type>BIT(N)</type> 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</type> 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</literal> 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</literal> or <literal>IMMUTABLE</literal> 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</command>. There is a considerable performance gain from
|
|
declaring a function <literal>STABLE</literal> or <literal>IMMUTABLE</literal>
|
|
rather than <literal>VOLATILE</literal>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Nondeferred <option>AFTER</option> 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>".."</literal> rather than
|
|
data type of <option>FOR</option> 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</literal>.
|
|
Formerly, it was not possible to catch such errors.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Accept <command>ELSEIF</command> in PL/pgSQL (Neil)
|
|
</para>
|
|
<para>
|
|
Previously PL/pgSQL only allowed <command>ELSIF</command>, but many people
|
|
are accustomed to spelling this keyword <command>ELSEIF</command>.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</sect3>
|
|
|
|
|
|
<sect3>
|
|
<title><application>psql</application> Changes</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve <application>psql</application> information display about database
|
|
objects (Christopher)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <application>psql</application> to display group membership in
|
|
<command>\du</command> and <command>\dg</command> (Markus Bertheau)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent <application>psql</application> <command>\dn</command> from showing
|
|
temporary schemas (Bruce)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <application>psql</application> to handle tilde user expansion for file
|
|
names (Zach Irmen)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <application>psql</application> to display fancy prompts, including
|
|
color, via <application>readline</application> (Reece Hart, Chet Ramey)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <application>psql</application> <command>\copy</command> 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</application>
|
|
<command>\d</command> display
|
|
(Bruce)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Change <application>psql</application> <command>\copy stdin/stdout</command> to read
|
|
from command input/output (Bruce)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <option>pstdin</option>/<option>pstdout</option> to read from
|
|
<application>psql</application>'s <literal>stdin</literal>/<literal>stdout</literal> (Mark
|
|
Feit)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add global <application>psql</application> configuration file, <filename>psqlrc.sample</filename>
|
|
(Bruce)
|
|
</para>
|
|
<para>
|
|
This allows a central file where global <application>psql</application> startup commands can
|
|
be stored.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Have <application>psql</application> <command>\d+</command> indicate if the table
|
|
has an <type>OID</type> column (Neil)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
On Windows, use binary mode in <application>psql</application> when reading files so control-Z
|
|
is not seen as end-of-file
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Have <command>\dn+</command> 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</application> Changes</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Use dependency information to improve the reliability of
|
|
<application>pg_dump</application> (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</application> 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</application> to ignore some SQL errors (Fabien Coelho)
|
|
</para>
|
|
<para>
|
|
This makes <application>pg_restore</application>'s behavior similar to the
|
|
results of feeding a <application>pg_dump</application> output script to
|
|
<application>psql</application>. 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</application> <option>-l</option> display now includes
|
|
objects' schema names
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
New begin/end markers in <application>pg_dump</application> text output (Bruce)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add start/stop times for
|
|
<application>pg_dump</application>/<application>pg_dumpall</application> in verbose mode
|
|
(Bruce)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow most <application>pg_dump</application> options in
|
|
<application>pg_dumpall</application> (Christopher)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Have <application>pg_dump</application> use <command>ALTER OWNER</command> rather
|
|
than <command>SET SESSION AUTHORIZATION</command> by default
|
|
(Christopher)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</sect3>
|
|
|
|
|
|
<sect3>
|
|
<title>libpq Changes</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make libpq's <option>SIGPIPE</option> handling thread-safe (Bruce)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <function>PQmbdsplen()</function> which returns the display length
|
|
of a character (Tatsuo)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add thread locking to <application>SSL</application> and
|
|
<application>Kerberos</application> connections (Manfred Spraul)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <function>PQoidValue()</function>, <function>PQcmdTuples()</function>, and
|
|
<function>PQoidStatus()</function> to work on <command>EXECUTE</command>
|
|
commands (Neil)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <function>PQserverVersion()</function> to provide more convenient
|
|
access to the server version number (Greg Sabino Mullane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <function>PQprepare/PQsendPrepared()</function> 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</command> (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</filename> 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</option> to choose installation location of documentation; also
|
|
allow <option>--infodir</option> (Peter)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <option>--without-docdir</option> to prevent installation of documentation (Peter)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Upgrade to <application>DocBook</application> V4.2 SGML (Peter)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
New <literal>PostgreSQL</literal> <application>CVS</application> 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</application> 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</application>
|
|
(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</application> 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 macOS startup scripts (Ray A.)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
New <function>fsync()</function> 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</application> 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</application> now uses a <application>flex</application>-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</application> for Windows logging
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make libpq and ECPG build as proper shared libraries on macOS (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</sect3>
|
|
|
|
|
|
<sect3>
|
|
<title>Contrib Changes</title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Overhaul of <filename>contrib/dblink</filename> (Joe)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<filename>contrib/dbmirror</filename> improvements (Steven Singer)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
New <filename>contrib/xml2</filename> (John Gray, Torchbox)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Updated <filename>contrib/mysql</filename>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
New version of <filename>contrib/btree_gist</filename> (Teodor)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
New <filename>contrib/trgm</filename>, trigram matching for
|
|
<productname>PostgreSQL</productname> (Teodor)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Many <filename>contrib/tsearch2</filename> improvements (Teodor)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add double metaphone to <filename>contrib/fuzzystrmatch</filename> (Andrew)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <filename>contrib/pg_autovacuum</filename> to run as a Windows service (Dave Page)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add functions to <filename>contrib/dbsize</filename> (Andreas Pflug)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Removed <filename>contrib/pg_logger</filename>: obsoleted by integrated logging
|
|
subprocess
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Removed <filename>contrib/rserv</filename>: obsoleted by various separate projects
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</sect3>
|
|
|
|
</sect2>
|
|
</sect1>
|