mirror of
https://github.com/postgres/postgres.git
synced 2025-05-28 05:21:27 +03:00
4623 lines
143 KiB
Plaintext
4623 lines
143 KiB
Plaintext
<!-- doc/src/sgml/release-7.4.sgml -->
|
|
<!-- See header comment in release.sgml about typical markup -->
|
|
|
|
<sect1 id="release-7-4-30">
|
|
<title>Release 7.4.30</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2010-10-04</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 7.4.29.
|
|
For information about new features in the 7.4 major release, see
|
|
<xref linkend="release-7-4">.
|
|
</para>
|
|
|
|
<para>
|
|
This is expected to be the last <productname>PostgreSQL</> release
|
|
in the 7.4.X series. Users are encouraged to update to a newer
|
|
release branch soon.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 7.4.30</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 7.4.X.
|
|
However, if you are upgrading from a version earlier than 7.4.26,
|
|
see the release notes for 7.4.26.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Use a separate interpreter for each calling SQL userid in PL/Perl and
|
|
PL/Tcl (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This change prevents security problems that can be caused by subverting
|
|
Perl or Tcl code that will be executed later in the same session under
|
|
another SQL user identity (for example, within a <literal>SECURITY
|
|
DEFINER</> function). Most scripting languages offer numerous ways that
|
|
that might be done, such as redefining standard functions or operators
|
|
called by the target function. Without this change, any SQL user with
|
|
Perl or Tcl language usage rights can do essentially anything with the
|
|
SQL privileges of the target function's owner.
|
|
</para>
|
|
|
|
<para>
|
|
The cost of this change is that intentional communication among Perl
|
|
and Tcl functions becomes more difficult. To provide an escape hatch,
|
|
PL/PerlU and PL/TclU functions continue to use only one interpreter
|
|
per session. This is not considered a security issue since all such
|
|
functions execute at the trust level of a database superuser already.
|
|
</para>
|
|
|
|
<para>
|
|
It is likely that third-party procedural languages that claim to offer
|
|
trusted execution have similar security issues. We advise contacting
|
|
the authors of any PL you are depending on for security-critical
|
|
purposes.
|
|
</para>
|
|
|
|
<para>
|
|
Our thanks to Tim Bunce for pointing out this issue (CVE-2010-3433).
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent possible crashes in <function>pg_get_expr()</> by disallowing
|
|
it from being called with an argument that is not one of the system
|
|
catalog columns it's intended to be used with
|
|
(Heikki Linnakangas, Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
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>
|
|
Take care to fsync the contents of lockfiles (both
|
|
<filename>postmaster.pid</> and the socket lockfile) while writing them
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This omission could result in corrupted lockfile contents if the
|
|
machine crashes shortly after postmaster start. That could in turn
|
|
prevent subsequent attempts to start the postmaster from succeeding,
|
|
until the lockfile is manually removed.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve <filename>contrib/dblink</>'s handling of tables containing
|
|
dropped columns (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix connection leak after <quote>duplicate connection name</quote>
|
|
errors in <filename>contrib/dblink</> (Itagaki Takahiro)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update build infrastructure and documentation to reflect the source code
|
|
repository's move from CVS to Git (Magnus Hagander and others)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-7-4-29">
|
|
<title>Release 7.4.29</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2010-05-17</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 7.4.28.
|
|
For information about new features in the 7.4 major release, see
|
|
<xref linkend="release-7-4">.
|
|
</para>
|
|
|
|
<para>
|
|
The <productname>PostgreSQL</> community will stop releasing updates
|
|
for the 7.4.X release series in July 2010.
|
|
Users are encouraged to update to a newer release branch soon.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 7.4.29</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 7.4.X.
|
|
However, if you are upgrading from a version earlier than 7.4.26,
|
|
see the release notes for 7.4.26.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Enforce restrictions in <literal>plperl</> using an opmask applied to
|
|
the whole interpreter, instead of using <filename>Safe.pm</>
|
|
(Tim Bunce, Andrew Dunstan)
|
|
</para>
|
|
|
|
<para>
|
|
Recent developments have convinced us that <filename>Safe.pm</> is too
|
|
insecure to rely on for making <literal>plperl</> trustable. This
|
|
change removes use of <filename>Safe.pm</> altogether, in favor of using
|
|
a separate interpreter with an opcode mask that is always applied.
|
|
Pleasant side effects of the change include that it is now possible to
|
|
use Perl's <literal>strict</> pragma in a natural way in
|
|
<literal>plperl</>, and that Perl's <literal>$a</> and <literal>$b</>
|
|
variables work as expected in sort routines, and that function
|
|
compilation is significantly faster. (CVE-2010-1169)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent PL/Tcl from executing untrustworthy code from
|
|
<structname>pltcl_modules</> (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
PL/Tcl's feature for autoloading Tcl code from a database table
|
|
could be exploited for trojan-horse attacks, because there was no
|
|
restriction on who could create or insert into that table. This change
|
|
disables the feature unless <structname>pltcl_modules</> is owned by a
|
|
superuser. (However, the permissions on the table are not checked, so
|
|
installations that really need a less-than-secure modules table can
|
|
still grant suitable privileges to trusted non-superusers.) Also,
|
|
prevent loading code into the unrestricted <quote>normal</> Tcl
|
|
interpreter unless we are really going to execute a <literal>pltclu</>
|
|
function. (CVE-2010-1170)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Do not allow an unprivileged user to reset superuser-only parameter
|
|
settings (Alvaro)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, if an unprivileged user ran <literal>ALTER USER ... RESET
|
|
ALL</> for himself, or <literal>ALTER DATABASE ... RESET ALL</> for
|
|
a database he owns, this would remove all special parameter settings
|
|
for the user or database, even ones that are only supposed to be
|
|
changeable by a superuser. Now, the <command>ALTER</> will only
|
|
remove the parameters that the user has permission to change.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid possible crash during backend shutdown if shutdown occurs
|
|
when a <literal>CONTEXT</> addition would be made to log entries (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
In some cases the context-printing function would fail because the
|
|
current transaction had already been rolled back when it came time
|
|
to print a log message.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update pl/perl's <filename>ppport.h</> for modern Perl versions
|
|
(Andrew)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix assorted memory leaks in pl/python (Andreas Freund, Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Ensure that <filename>contrib/pgstattuple</> functions respond to cancel
|
|
interrupts promptly (Tatsuhito Kasahara)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make server startup deal properly with the case that
|
|
<function>shmget()</> returns <literal>EINVAL</> for an existing
|
|
shared memory segment (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This behavior has been observed on BSD-derived kernels including OS X.
|
|
It resulted in an entirely-misleading startup failure complaining that
|
|
the shared memory request size was too large.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-7-4-28">
|
|
<title>Release 7.4.28</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2010-03-15</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 7.4.27.
|
|
For information about new features in the 7.4 major release, see
|
|
<xref linkend="release-7-4">.
|
|
</para>
|
|
|
|
<para>
|
|
The <productname>PostgreSQL</> community will stop releasing updates
|
|
for the 7.4.X release series in July 2010.
|
|
Users are encouraged to update to a newer release branch soon.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 7.4.28</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 7.4.X.
|
|
However, if you are upgrading from a version earlier than 7.4.26,
|
|
see the release notes for 7.4.26.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add new configuration parameter <varname>ssl_renegotiation_limit</> to
|
|
control how often we do session key renegotiation for an SSL connection
|
|
(Magnus)
|
|
</para>
|
|
|
|
<para>
|
|
This can be set to zero to disable renegotiation completely, which may
|
|
be required if a broken SSL library is used. In particular, some
|
|
vendors are shipping stopgap patches for CVE-2009-3555 that cause
|
|
renegotiation attempts to fail.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <function>substring()</> for <type>bit</> types treat any negative
|
|
length as meaning <quote>all the rest of the string</> (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
The previous coding treated only -1 that way, and would produce an
|
|
invalid result value for other negative values, possibly leading to
|
|
a crash (CVE-2010-0442).
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix some cases of pathologically slow regular expression matching (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
When reading <filename>pg_hba.conf</> and related files, do not treat
|
|
<literal>@something</> as a file inclusion request if the <literal>@</>
|
|
appears inside quote marks; also, never treat <literal>@</> by itself
|
|
as a file inclusion request (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This prevents erratic behavior if a role or database name starts with
|
|
<literal>@</>. If you need to include a file whose path name
|
|
contains spaces, you can still do so, but you must write
|
|
<literal>@"/path to/file"</> rather than putting the quotes around
|
|
the whole construct.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent infinite loop on some platforms if a directory is named as
|
|
an inclusion target in <filename>pg_hba.conf</> and related files
|
|
(Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Ensure PL/Tcl initializes the Tcl interpreter fully (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
The only known symptom of this oversight is that the Tcl
|
|
<literal>clock</> command misbehaves if using Tcl 8.5 or later.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent crash in <filename>contrib/dblink</> when too many key
|
|
columns are specified to a <function>dblink_build_sql_*</> function
|
|
(Rushabh Lathia, Joe Conway)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-7-4-27">
|
|
<title>Release 7.4.27</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2009-12-14</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 7.4.26.
|
|
For information about new features in the 7.4 major release, see
|
|
<xref linkend="release-7-4">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 7.4.27</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 7.4.X.
|
|
However, if you are upgrading from a version earlier than 7.4.26,
|
|
see the release notes for 7.4.26.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Protect against indirect security threats caused by index functions
|
|
changing session-local state (Gurjeet Singh, Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This change prevents allegedly-immutable index functions from possibly
|
|
subverting a superuser's session (CVE-2009-4136).
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Reject SSL certificates containing an embedded null byte in the common
|
|
name (CN) field (Magnus)
|
|
</para>
|
|
|
|
<para>
|
|
This prevents unintended matching of a certificate to a server or client
|
|
name during SSL validation (CVE-2009-4034).
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible crash during backend-startup-time cache initialization (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent signals from interrupting <literal>VACUUM</> at unsafe times
|
|
(Alvaro)
|
|
</para>
|
|
|
|
<para>
|
|
This fix prevents a PANIC if a <literal>VACUUM FULL</> is canceled
|
|
after it's already committed its tuple movements, as well as transient
|
|
errors if a plain <literal>VACUUM</> is interrupted after having
|
|
truncated the table.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible crash due to integer overflow in hash table size
|
|
calculation (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This could occur with extremely large planner estimates for the size of
|
|
a hashjoin's result.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix very rare crash in <type>inet</>/<type>cidr</> comparisons (Chris
|
|
Mikkelson)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix PAM password processing to be more robust (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
The previous code is known to fail with the combination of the Linux
|
|
<literal>pam_krb5</> PAM module with Microsoft Active Directory as the
|
|
domain controller. It might have problems elsewhere too, since it was
|
|
making unjustified assumptions about what arguments the PAM stack would
|
|
pass to it.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make the postmaster ignore any <literal>application_name</> parameter in
|
|
connection request packets, to improve compatibility with future libpq
|
|
versions (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-7-4-26">
|
|
<title>Release 7.4.26</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2009-09-09</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 7.4.25.
|
|
For information about new features in the 7.4 major release, see
|
|
<xref linkend="release-7-4">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 7.4.26</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 7.4.X.
|
|
However, if you have any hash indexes on <type>interval</> columns,
|
|
you must <command>REINDEX</> them after updating to 7.4.26.
|
|
Also, if you are upgrading from a version earlier than 7.4.11,
|
|
see the release notes for 7.4.11.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Disallow <command>RESET ROLE</> and <command>RESET SESSION
|
|
AUTHORIZATION</> inside security-definer functions (Tom, Heikki)
|
|
</para>
|
|
|
|
<para>
|
|
This covers a case that was missed in the previous patch that
|
|
disallowed <command>SET ROLE</> and <command>SET SESSION
|
|
AUTHORIZATION</> inside security-definer functions.
|
|
(See CVE-2007-6600)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix handling of sub-SELECTs appearing in the arguments of
|
|
an outer-level aggregate function (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix hash calculation for data type <type>interval</> (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This corrects wrong results for hash joins on interval values.
|
|
It also changes the contents of hash indexes on interval columns.
|
|
If you have any such indexes, you must <command>REINDEX</> them
|
|
after updating.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix overflow for <literal>INTERVAL '<replaceable>x</> ms'</literal>
|
|
when <replaceable>x</> is more than 2 million and integer
|
|
datetimes are in use (Alex Hunsaker)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix calculation of distance between a point and a line segment (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This led to incorrect results from a number of geometric operators.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <type>money</> data type to work in locales where currency
|
|
amounts have no fractional digits, e.g. Japan (Itagaki Takahiro)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Properly round datetime input like
|
|
<literal>00:12:57.9999999999999999999999999999</> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix poor choice of page split point in GiST R-tree operator classes
|
|
(Teodor)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix portability issues in plperl initialization (Andrew Dunstan)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve robustness of <application>libpq</>'s code to recover
|
|
from errors during <command>COPY FROM STDIN</> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid including conflicting readline and editline header files
|
|
when both libraries are installed (Zdenek Kotala)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-7-4-25">
|
|
<title>Release 7.4.25</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2009-03-16</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 7.4.24.
|
|
For information about new features in the 7.4 major release, see
|
|
<xref linkend="release-7-4">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 7.4.25</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 7.4.X.
|
|
However, if you are upgrading from a version earlier than 7.4.11,
|
|
see the release notes for 7.4.11.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent error recursion crashes when encoding conversion fails (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This change extends fixes made in the last two minor releases for
|
|
related failure scenarios. The previous fixes were narrowly tailored
|
|
for the original problem reports, but we have now recognized that
|
|
<emphasis>any</> error thrown by an encoding conversion function could
|
|
potentially lead to infinite recursion while trying to report the
|
|
error. The solution therefore is to disable translation and encoding
|
|
conversion and report the plain-ASCII form of any error message,
|
|
if we find we have gotten into a recursive error reporting situation.
|
|
(CVE-2009-0922)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Disallow <command>CREATE CONVERSION</> with the wrong encodings
|
|
for the specified conversion function (Heikki)
|
|
</para>
|
|
|
|
<para>
|
|
This prevents one possible scenario for encoding conversion failure.
|
|
The previous change is a backstop to guard against other kinds of
|
|
failures in the same area.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix core dump when <function>to_char()</> is given format codes that
|
|
are inappropriate for the type of the data argument (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <literal>MUST</> (Mauritius Island Summer Time) to the default list
|
|
of known timezone abbreviations (Xavier Bugaud)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-7-4-24">
|
|
<title>Release 7.4.24</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2009-02-02</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 7.4.23.
|
|
For information about new features in the 7.4 major release, see
|
|
<xref linkend="release-7-4">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 7.4.24</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 7.4.X.
|
|
However, if you are upgrading from a version earlier than 7.4.11,
|
|
see the release notes for 7.4.11.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve handling of URLs in <function>headline()</> function (Teodor)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve handling of overlength headlines in <function>headline()</>
|
|
function (Teodor)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent possible Assert failure or misconversion if an encoding
|
|
conversion is created with the wrong conversion function for the
|
|
specified pair of encodings (Tom, Heikki)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid unnecessary locking of small tables in <command>VACUUM</>
|
|
(Heikki)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix uninitialized variables in <filename>contrib/tsearch2</>'s
|
|
<function>get_covers()</> function (Teodor)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix bug in <function>to_char()</>'s handling of <literal>TH</>
|
|
format codes (Andreas Scherbaum)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make all documentation reference <literal>pgsql-bugs</> and/or
|
|
<literal>pgsql-hackers</> as appropriate, instead of the
|
|
now-decommissioned <literal>pgsql-ports</> and <literal>pgsql-patches</>
|
|
mailing lists (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-7-4-23">
|
|
<title>Release 7.4.23</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2008-11-03</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 7.4.22.
|
|
For information about new features in the 7.4 major release, see
|
|
<xref linkend="release-7-4">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 7.4.23</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 7.4.X.
|
|
However, if you are upgrading from a version earlier than 7.4.11,
|
|
see the release notes for 7.4.11.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix backend crash when the client encoding cannot represent a localized
|
|
error message (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
We have addressed similar issues before, but it would still fail if
|
|
the <quote>character has no equivalent</> message itself couldn't
|
|
be converted. The fix is to disable localization and send the plain
|
|
ASCII error message when we detect such a situation.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix incorrect tsearch2 headline generation when single query
|
|
item matches first word of text (Sushant Sinha)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix improper display of fractional seconds in interval values when
|
|
using a non-ISO datestyle in an <option>--enable-integer-datetimes</>
|
|
build (Ron Mayer)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Ensure <function>SPI_getvalue</> and <function>SPI_getbinval</>
|
|
behave correctly when the passed tuple and tuple descriptor have
|
|
different numbers of columns (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This situation is normal when a table has had columns added or removed,
|
|
but these two functions didn't handle it properly.
|
|
The only likely consequence is an incorrect error indication.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>ecpg</>'s parsing of <command>CREATE USER</> (Michael)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-7-4-22">
|
|
<title>Release 7.4.22</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2008-09-22</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 7.4.21.
|
|
For information about new features in the 7.4 major release, see
|
|
<xref linkend="release-7-4">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 7.4.22</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 7.4.X.
|
|
However, if you are upgrading from a version earlier than 7.4.11,
|
|
see the release notes for 7.4.11.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix datetime input functions to correctly detect integer overflow when
|
|
running on a 64-bit platform (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve performance of writing very long log messages to syslog (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix bug in backwards scanning of a cursor on a <literal>SELECT DISTINCT
|
|
ON</> query (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix planner to estimate that <literal>GROUP BY</> expressions yielding
|
|
boolean results always result in two groups, regardless of the
|
|
expressions' contents (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This is very substantially more accurate than the regular <literal>GROUP
|
|
BY</> estimate for certain boolean tests like <replaceable>col</>
|
|
<literal>IS NULL</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve <application>pg_dump</> and <application>pg_restore</>'s
|
|
error reporting after failure to send a SQL command (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-7-4-21">
|
|
<title>Release 7.4.21</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2008-06-12</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains one serious bug fix over 7.4.20.
|
|
For information about new features in the 7.4 major release, see
|
|
<xref linkend="release-7-4">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 7.4.21</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 7.4.X.
|
|
However, if you are upgrading from a version earlier than 7.4.11,
|
|
see the release notes for 7.4.11.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <function>pg_get_ruledef()</> parenthesize negative constants (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
Before this fix, a negative constant in a view or rule might be dumped
|
|
as, say, <literal>-42::integer</>, which is subtly incorrect: it should
|
|
be <literal>(-42)::integer</> due to operator precedence rules.
|
|
Usually this would make little difference, but it could interact with
|
|
another recent patch to cause
|
|
<productname>PostgreSQL</> to reject what had been a valid
|
|
<command>SELECT DISTINCT</> view query. Since this could result in
|
|
<application>pg_dump</> output failing to reload, it is being treated
|
|
as a high-priority fix. The only released versions in which dump
|
|
output is actually incorrect are 8.3.1 and 8.2.7.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-7-4-20">
|
|
<title>Release 7.4.20</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>never released</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 7.4.19.
|
|
For information about new features in the 7.4 major release, see
|
|
<xref linkend="release-7-4">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 7.4.20</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 7.4.X.
|
|
However, if you are upgrading from a version earlier than 7.4.11,
|
|
see the release notes for 7.4.11.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix conversions between ISO-8859-5 and other encodings to handle
|
|
Cyrillic <quote>Yo</> characters (<literal>e</> and <literal>E</> with
|
|
two dots) (Sergey Burladyan)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix a few datatype input functions
|
|
that were allowing unused bytes in their results to contain
|
|
uninitialized, unpredictable values (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This could lead to failures in which two apparently identical literal
|
|
values were not seen as equal, resulting in the parser complaining
|
|
about unmatched <literal>ORDER BY</> and <literal>DISTINCT</>
|
|
expressions.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix a corner case in regular-expression substring matching
|
|
(<literal>substring(<replaceable>string</> from
|
|
<replaceable>pattern</>)</literal>) (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
The problem occurs when there is a match to the pattern overall but
|
|
the user has specified a parenthesized subexpression and that
|
|
subexpression hasn't got a match. An example is
|
|
<literal>substring('foo' from 'foo(bar)?')</>.
|
|
This should return NULL, since <literal>(bar)</> isn't matched, but
|
|
it was mistakenly returning the whole-pattern match instead (ie,
|
|
<literal>foo</>).
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix incorrect result from <application>ecpg</>'s
|
|
<function>PGTYPEStimestamp_sub()</> function (Michael)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <literal>DatumGetBool</> macro to not fail with <application>gcc</>
|
|
4.3 (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This problem affects <quote>old style</> (V0) C functions that
|
|
return boolean. The fix is already in 8.3, but the need to
|
|
back-patch it was not realized at the time.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix longstanding <command>LISTEN</>/<command>NOTIFY</>
|
|
race condition (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
In rare cases a session that had just executed a
|
|
<command>LISTEN</> might not get a notification, even though
|
|
one would be expected because the concurrent transaction executing
|
|
<command>NOTIFY</> was observed to commit later.
|
|
</para>
|
|
|
|
<para>
|
|
A side effect of the fix is that a transaction that has executed
|
|
a not-yet-committed <command>LISTEN</> command will not see any
|
|
row in <structname>pg_listener</> for the <command>LISTEN</>,
|
|
should it choose to look; formerly it would have. This behavior
|
|
was never documented one way or the other, but it is possible that
|
|
some applications depend on the old behavior.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix display of constant expressions in <literal>ORDER BY</>
|
|
and <literal>GROUP BY</> (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</> 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-7-4-19">
|
|
<title>Release 7.4.19</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2008-01-07</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 7.4.18,
|
|
including fixes for significant security issues.
|
|
For information about new features in the 7.4 major release, see
|
|
<xref linkend="release-7-4">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 7.4.19</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 7.4.X. However,
|
|
if you are upgrading from a version earlier than 7.4.11, see the release
|
|
notes for 7.4.11.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent functions in indexes from executing with the privileges of
|
|
the user running <command>VACUUM</>, <command>ANALYZE</>, etc (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
Functions used in index expressions and partial-index
|
|
predicates are evaluated whenever a new table entry is made. It has
|
|
long been understood that this poses a risk of trojan-horse code
|
|
execution if one modifies a table owned by an untrustworthy user.
|
|
(Note that triggers, defaults, check constraints, etc. pose the
|
|
same type of risk.) But functions in indexes pose extra danger
|
|
because they will be executed by routine maintenance operations
|
|
such as <command>VACUUM FULL</>, which are commonly performed
|
|
automatically under a superuser account. For example, a nefarious user
|
|
can execute code with superuser privileges by setting up a
|
|
trojan-horse index definition and waiting for the next routine vacuum.
|
|
The fix arranges for standard maintenance operations
|
|
(including <command>VACUUM</>, <command>ANALYZE</>, <command>REINDEX</>,
|
|
and <command>CLUSTER</>) to execute as the table owner rather than
|
|
the calling user, using the same privilege-switching mechanism already
|
|
used for <literal>SECURITY DEFINER</> functions. To prevent bypassing
|
|
this security measure, execution of <command>SET SESSION
|
|
AUTHORIZATION</> and <command>SET ROLE</> is now forbidden within a
|
|
<literal>SECURITY DEFINER</> context. (CVE-2007-6600)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Repair assorted bugs in the regular-expression package (Tom, Will Drewry)
|
|
</para>
|
|
|
|
<para>
|
|
Suitably crafted regular-expression patterns could cause crashes,
|
|
infinite or near-infinite looping, and/or massive memory consumption,
|
|
all of which pose denial-of-service hazards for applications that
|
|
accept regex search patterns from untrustworthy sources.
|
|
(CVE-2007-4769, CVE-2007-4772, CVE-2007-6067)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Require non-superusers who use <filename>/contrib/dblink</> to use only
|
|
password authentication, as a security measure (Joe)
|
|
</para>
|
|
|
|
<para>
|
|
The fix that appeared for this in 7.4.18 was incomplete, as it plugged
|
|
the hole for only some <filename>dblink</> functions. (CVE-2007-6601,
|
|
CVE-2007-3278)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix planner failure in some cases of <literal>WHERE false AND var IN
|
|
(SELECT ...)</> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix potential crash in <function>translate()</> when using a multibyte
|
|
database encoding (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix PL/Python to not crash on long exception messages (Alvaro)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<application>ecpg</> parser fixes (Michael)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <filename>contrib/tablefunc</>'s <function>crosstab()</> handle
|
|
NULL rowid as a category in its own right, rather than crashing (Joe)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <type>tsvector</> and <type>tsquery</> output routines to
|
|
escape backslashes correctly (Teodor, Bruce)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix crash of <function>to_tsvector()</> on huge input strings (Teodor)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Require a specific version of <productname>Autoconf</> to be used
|
|
when re-generating the <command>configure</> script (Peter)
|
|
</para>
|
|
|
|
<para>
|
|
This affects developers and packagers only. The change was made
|
|
to prevent accidental use of untested combinations of
|
|
<productname>Autoconf</> and <productname>PostgreSQL</> versions.
|
|
You can remove the version check if you really want to use a
|
|
different <productname>Autoconf</> version, but it's
|
|
your responsibility whether the result works or not.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-7-4-18">
|
|
<title>Release 7.4.18</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2007-09-17</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains fixes from 7.4.17.
|
|
For information about new features in the 7.4 major release, see
|
|
<xref linkend="release-7-4">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 7.4.18</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 7.4.X. However,
|
|
if you are upgrading from a version earlier than 7.4.11, see the release
|
|
notes for 7.4.11.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent index corruption when a transaction inserts rows and
|
|
then aborts close to the end of a concurrent <command>VACUUM</>
|
|
on the same table (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <command>CREATE DOMAIN ... DEFAULT NULL</> work properly (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix excessive logging of <acronym>SSL</> error messages (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix crash when <varname>log_min_error_statement</> logging runs out
|
|
of memory (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent <command>CLUSTER</> from failing
|
|
due to attempting to process temporary tables of other sessions (Alvaro)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Require non-superusers who use <filename>/contrib/dblink</> to use only
|
|
password authentication, as a security measure (Joe)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-7-4-17">
|
|
<title>Release 7.4.17</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2007-04-23</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains fixes from 7.4.16,
|
|
including a security fix.
|
|
For information about new features in the 7.4 major release, see
|
|
<xref linkend="release-7-4">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 7.4.17</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 7.4.X. However,
|
|
if you are upgrading from a version earlier than 7.4.11, see the release
|
|
notes for 7.4.11.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support explicit placement of the temporary-table schema within
|
|
<varname>search_path</>, and disable searching it for functions
|
|
and operators (Tom)
|
|
</para>
|
|
<para>
|
|
This is needed to allow a security-definer function to set a
|
|
truly secure value of <varname>search_path</>. Without it,
|
|
an unprivileged SQL user can use temporary objects to execute code
|
|
with the privileges of the security-definer function (CVE-2007-2138).
|
|
See <command>CREATE FUNCTION</> for more information.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<filename>/contrib/tsearch2</> crash fixes (Teodor)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix potential-data-corruption bug in how <command>VACUUM FULL</> handles
|
|
<command>UPDATE</> chains (Tom, Pavan Deolasee)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix PANIC during enlargement of a hash index (bug introduced in 7.4.15)
|
|
(Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-7-4-16">
|
|
<title>Release 7.4.16</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2007-02-05</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 7.4.15, including
|
|
a security fix.
|
|
For information about new features in the 7.4 major release, see
|
|
<xref linkend="release-7-4">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 7.4.16</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 7.4.X. However,
|
|
if you are upgrading from a version earlier than 7.4.11, see the release
|
|
notes for 7.4.11.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Remove security vulnerability that allowed connected users
|
|
to read backend memory (Tom)
|
|
</para>
|
|
<para>
|
|
The vulnerability involves suppressing the normal check that a SQL
|
|
function returns the data type it's declared to, or changing the
|
|
data type of a table column used in a SQL function (CVE-2007-0555).
|
|
This error can easily be exploited to cause a backend crash, and in
|
|
principle might be used to read database content that the user
|
|
should not be able to access.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix rare bug wherein btree index page splits could fail
|
|
due to choosing an infeasible split point (Heikki Linnakangas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix for rare Assert() crash triggered by <literal>UNION</> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Tighten security of multi-byte character processing for UTF8 sequences
|
|
over three bytes long (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-7-4-15">
|
|
<title>Release 7.4.15</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2007-01-08</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 7.4.14.
|
|
For information about new features in the 7.4 major release, see
|
|
<xref linkend="release-7-4">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 7.4.15</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 7.4.X. However,
|
|
if you are upgrading from a version earlier than 7.4.11, see the release
|
|
notes for 7.4.11.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve handling of <function>getaddrinfo()</> on AIX (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This fixes a problem with starting the statistics collector,
|
|
among other things.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <quote>failed to re-find parent key</> errors in
|
|
<command>VACUUM</> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix bugs affecting multi-gigabyte hash indexes (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix error when constructing an <literal>ARRAY[]</> made up of multiple
|
|
empty elements (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<function>to_number()</> and <function>to_char(numeric)</>
|
|
are now <literal>STABLE</>, not <literal>IMMUTABLE</>, for
|
|
new <application>initdb</> installs (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This is because <varname>lc_numeric</> can potentially
|
|
change the output of these functions.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve index usage of regular expressions that use parentheses (Tom)
|
|
</para>
|
|
|
|
<para>
|
|
This improves <application>psql</> <literal>\d</> performance also.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-7-4-14">
|
|
<title>Release 7.4.14</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2006-10-16</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 7.4.13.
|
|
For information about new features in the 7.4 major release, see
|
|
<xref linkend="release-7-4">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 7.4.14</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 7.4.X. However,
|
|
if you are upgrading from a version earlier than 7.4.11, see the release
|
|
notes for 7.4.11.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
<listitem><para>Fix core dump when an untyped literal is taken as
|
|
ANYARRAY</para></listitem>
|
|
<listitem><para>Fix <function>string_to_array()</> to handle overlapping
|
|
matches for the separator string</para>
|
|
<para>For example, <literal>string_to_array('123xx456xxx789', 'xx')</>.
|
|
</para></listitem>
|
|
<listitem><para>Fix corner cases in pattern matching for
|
|
<application>psql</>'s <literal>\d</> commands</para></listitem>
|
|
<listitem><para>Fix index-corrupting bugs in /contrib/ltree
|
|
(Teodor)</para></listitem>
|
|
<listitem><para>Fix backslash escaping in /contrib/dbmirror</para></listitem>
|
|
<listitem><para>Adjust regression tests for recent changes in US DST laws
|
|
</para> </listitem>
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-7-4-13">
|
|
<title>Release 7.4.13</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2006-05-23</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 7.4.12,
|
|
including patches for extremely serious security issues.
|
|
For information about new features in the 7.4 major release, see
|
|
<xref linkend="release-7-4">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 7.4.13</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 7.4.X. However,
|
|
if you are upgrading from a version earlier than 7.4.11, see the release
|
|
notes for 7.4.11.
|
|
</para>
|
|
|
|
<para>
|
|
Full security against the SQL-injection attacks described in
|
|
CVE-2006-2313 and CVE-2006-2314 might require changes in application
|
|
code. If you have applications that embed untrustworthy strings
|
|
into SQL commands, you should examine them as soon as possible to
|
|
ensure that they are using recommended escaping techniques. In
|
|
most cases, applications should be using subroutines provided by
|
|
libraries or drivers (such as <application>libpq</>'s
|
|
<function>PQescapeStringConn()</>) to perform string escaping,
|
|
rather than relying on <foreignphrase>ad hoc</> code to do it.
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
<listitem><para>Change the server to reject invalidly-encoded multibyte
|
|
characters in all cases (Tatsuo, Tom)</para>
|
|
<para>While <productname>PostgreSQL</> has been moving in this direction for
|
|
some time, the checks are now applied uniformly to all encodings and all
|
|
textual input, and are now always errors not merely warnings. This change
|
|
defends against SQL-injection attacks of the type described in CVE-2006-2313.
|
|
</para></listitem>
|
|
|
|
<listitem><para>Reject unsafe uses of <literal>\'</> in string literals</para>
|
|
<para>As a server-side defense against SQL-injection attacks of the type
|
|
described in CVE-2006-2314, the server now only accepts <literal>''</> and not
|
|
<literal>\'</> as a representation of ASCII single quote in SQL string
|
|
literals. By default, <literal>\'</> is rejected only when
|
|
<varname>client_encoding</> is set to a client-only encoding (SJIS, BIG5, GBK,
|
|
GB18030, or UHC), which is the scenario in which SQL injection is possible.
|
|
A new configuration parameter <varname>backslash_quote</> is available to
|
|
adjust this behavior when needed. Note that full security against
|
|
CVE-2006-2314 might require client-side changes; the purpose of
|
|
<varname>backslash_quote</> is in part to make it obvious that insecure
|
|
clients are insecure.
|
|
</para></listitem>
|
|
|
|
<listitem><para>Modify <application>libpq</>'s string-escaping routines to be
|
|
aware of encoding considerations and
|
|
<varname>standard_conforming_strings</></para>
|
|
<para>This fixes <application>libpq</>-using applications for the security
|
|
issues described in CVE-2006-2313 and CVE-2006-2314, and also future-proofs
|
|
them against the planned changeover to SQL-standard string literal syntax.
|
|
Applications that use multiple <productname>PostgreSQL</> connections
|
|
concurrently should migrate to <function>PQescapeStringConn()</> and
|
|
<function>PQescapeByteaConn()</> to ensure that escaping is done correctly
|
|
for the settings in use in each database connection. Applications that
|
|
do string escaping <quote>by hand</> should be modified to rely on library
|
|
routines instead.
|
|
</para></listitem>
|
|
|
|
<listitem><para>Fix some incorrect encoding conversion functions</para>
|
|
<para><function>win1251_to_iso</>, <function>alt_to_iso</>,
|
|
<function>euc_tw_to_big5</>, <function>euc_tw_to_mic</>,
|
|
<function>mic_to_euc_tw</> were all broken to varying
|
|
extents.
|
|
</para></listitem>
|
|
|
|
<listitem><para>Clean up stray remaining uses of <literal>\'</> in strings
|
|
(Bruce, Jan)</para></listitem>
|
|
|
|
<listitem><para>Fix bug that sometimes caused OR'd index scans to
|
|
miss rows they should have returned</para></listitem>
|
|
|
|
<listitem><para>Fix WAL replay for case where a btree index has been
|
|
truncated</para></listitem>
|
|
|
|
<listitem><para>Fix <literal>SIMILAR TO</> for patterns involving
|
|
<literal>|</> (Tom)</para></listitem>
|
|
|
|
<listitem><para>Fix 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>
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-7-4-12">
|
|
<title>Release 7.4.12</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2006-02-14</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 7.4.11.
|
|
For information about new features in the 7.4 major release, see
|
|
<xref linkend="release-7-4">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 7.4.12</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 7.4.X. However,
|
|
if you are upgrading from a version earlier than 7.4.11, see the release
|
|
notes for 7.4.11.
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem><para>Fix potential crash in <command>SET
|
|
SESSION AUTHORIZATION</> (CVE-2006-0553)</para>
|
|
<para>An unprivileged user could crash the server process, resulting in
|
|
momentary denial of service to other users, if the server has been compiled
|
|
with Asserts enabled (which is not the default).
|
|
Thanks to Akio Ishida for reporting this problem.
|
|
</para></listitem>
|
|
|
|
<listitem><para>Fix bug with row visibility logic in self-inserted
|
|
rows (Tom)</para>
|
|
<para>Under rare circumstances a row inserted by the current command
|
|
could be seen as already valid, when it should not be. Repairs bug
|
|
created in 7.4.9 and 7.3.11 releases.
|
|
</para></listitem>
|
|
|
|
<listitem><para>Fix race condition that could lead to <quote>file already
|
|
exists</> errors during pg_clog file creation
|
|
(Tom)</para></listitem>
|
|
|
|
<listitem><para>Properly check <literal>DOMAIN</> constraints for
|
|
<literal>UNKNOWN</> parameters in prepared statements
|
|
(Neil)</para></listitem>
|
|
|
|
<listitem><para>Fix to allow restoring dumps that have cross-schema
|
|
references to custom operators (Tom)</para></listitem>
|
|
|
|
<listitem><para>Portability fix for testing presence of <function>finite</>
|
|
and <function>isinf</> during configure (Tom)</para></listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-7-4-11">
|
|
<title>Release 7.4.11</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2006-01-09</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 7.4.10.
|
|
For information about new features in the 7.4 major release, see
|
|
<xref linkend="release-7-4">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 7.4.11</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 7.4.X. However,
|
|
if you are upgrading from a version earlier than 7.4.8, see the release
|
|
notes for 7.4.8.
|
|
Also, you might need to <command>REINDEX</> indexes on textual
|
|
columns after updating, if you are affected by the locale or
|
|
<application>plperl</> issues described below.
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem><para>Fix for protocol-level Describe messages issued
|
|
outside a transaction or in a failed transaction (Tom)</para></listitem>
|
|
|
|
<listitem><para>Fix character string comparison for locales that consider
|
|
different character combinations as equal, such as Hungarian (Tom)</para>
|
|
<para>This might require <command>REINDEX</> to fix existing indexes on
|
|
textual columns.</para></listitem>
|
|
|
|
<listitem><para>Set locale environment variables during postmaster startup
|
|
to ensure that <application>plperl</> won't change the locale later</para>
|
|
<para>This fixes a problem that occurred if the <application>postmaster</> was
|
|
started with environment variables specifying a different locale than what
|
|
<application>initdb</> had been told. Under these conditions, any use of
|
|
<application>plperl</> was likely to lead to corrupt indexes. You might need
|
|
<command>REINDEX</> to fix existing indexes on
|
|
textual columns if this has happened to you.</para></listitem>
|
|
|
|
<listitem><para>Fix longstanding bug in strpos() and regular expression
|
|
handling in certain rarely used Asian multi-byte character sets (Tatsuo)
|
|
</para></listitem>
|
|
|
|
<listitem><para>Fix bug in <filename>/contrib/pgcrypto</> gen_salt,
|
|
which caused it not to use all available salt space for MD5 and
|
|
XDES algorithms (Marko Kreen, Solar Designer)</para>
|
|
<para>Salts for Blowfish and standard DES are unaffected.</para></listitem>
|
|
|
|
<listitem><para>Fix <filename>/contrib/dblink</> to throw an error,
|
|
rather than crashing, when the number of columns specified is different from
|
|
what's actually returned by the query (Joe)</para></listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-7-4-10">
|
|
<title>Release 7.4.10</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2005-12-12</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 7.4.9.
|
|
For information about new features in the 7.4 major release, see
|
|
<xref linkend="release-7-4">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 7.4.10</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 7.4.X. However,
|
|
if you are upgrading from a version earlier than 7.4.8, see the release
|
|
notes for 7.4.8.
|
|
</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>Prevent failure if client sends Bind protocol message
|
|
when current transaction is already aborted</para></listitem>
|
|
|
|
<listitem><para><filename>/contrib/ltree</> fixes (Teodor)</para></listitem>
|
|
|
|
<listitem><para>AIX and HPUX compile fixes (Tom)</para></listitem>
|
|
|
|
<listitem><para>Fix longstanding planning error for outer joins</para>
|
|
<para>This bug sometimes caused a bogus error <quote>RIGHT JOIN is
|
|
only supported with merge-joinable join conditions</>.</para></listitem>
|
|
|
|
<listitem><para>Prevent core dump in <application>pg_autovacuum</> when a
|
|
table has been dropped</para></listitem>
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-7-4-9">
|
|
<title>Release 7.4.9</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2005-10-04</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 7.4.8.
|
|
For information about new features in the 7.4 major release, see
|
|
<xref linkend="release-7-4">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 7.4.9</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 7.4.X. However,
|
|
if you are upgrading from a version earlier than 7.4.8, see the release
|
|
notes for 7.4.8.
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
<listitem><para>Fix error that allowed <command>VACUUM</> to remove
|
|
<literal>ctid</> chains too soon, and add more checking in code that follows
|
|
<literal>ctid</> links</para>
|
|
<para>This fixes a long-standing problem that could cause crashes in very rare
|
|
circumstances.</para></listitem>
|
|
<listitem><para>Fix <type>CHAR()</> to properly pad spaces to the specified
|
|
length when using a multiple-byte character set (Yoshiyuki Asaba)</para>
|
|
<para>In prior releases, the padding of <type>CHAR()</> was incorrect
|
|
because it only padded to the specified number of bytes without
|
|
considering how many characters were stored.</para></listitem>
|
|
<listitem><para>Fix the sense of the test for read-only transaction
|
|
in <command>COPY</></para>
|
|
<para>The code formerly prohibited <command>COPY TO</>, where it should
|
|
prohibit <command>COPY FROM</>.
|
|
</para></listitem>
|
|
<listitem><para>Fix planning problem with outer-join ON clauses that reference
|
|
only the inner-side relation</para></listitem>
|
|
<listitem><para>Further fixes for <literal>x FULL JOIN y ON true</> corner
|
|
cases</para></listitem>
|
|
<listitem><para>Make <function>array_in</> and <function>array_recv</> more
|
|
paranoid about validating their OID parameter</para></listitem>
|
|
<listitem><para>Fix missing rows in queries like <literal>UPDATE a=... WHERE
|
|
a...</> with GiST index on column <literal>a</></para></listitem>
|
|
<listitem><para>Improve robustness of datetime parsing</para></listitem>
|
|
<listitem><para>Improve checking for partially-written WAL
|
|
pages</para></listitem>
|
|
<listitem><para>Improve robustness of signal handling when SSL is
|
|
enabled</para></listitem>
|
|
<listitem><para>Don't try to open more than <literal>max_files_per_process</>
|
|
files during postmaster startup</para></listitem>
|
|
<listitem><para>Various memory leakage fixes</para></listitem>
|
|
<listitem><para>Various portability improvements</para></listitem>
|
|
<listitem><para>Fix PL/pgSQL to handle <literal>var := var</> correctly when
|
|
the variable is of pass-by-reference type</para></listitem>
|
|
<listitem><para>Update <filename>contrib/tsearch2</> to use current Snowball
|
|
code</para></listitem>
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-7-4-8">
|
|
<title>Release 7.4.8</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2005-05-09</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 7.4.7, including several
|
|
security-related issues.
|
|
For information about new features in the 7.4 major release, see
|
|
<xref linkend="release-7-4">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 7.4.8</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 7.4.X. However,
|
|
it is one possible way of handling two significant security problems
|
|
that have been found in the initial contents of 7.4.X system
|
|
catalogs. A dump/initdb/reload sequence using 7.4.8's initdb will
|
|
automatically correct these problems.
|
|
</para>
|
|
|
|
<para>
|
|
The larger security problem is that the built-in character set encoding
|
|
conversion functions can be invoked from SQL commands by unprivileged
|
|
users, but the functions were not designed for such use and are not
|
|
secure against malicious choices of arguments. The fix involves changing
|
|
the declared parameter list of these functions so that they can no longer
|
|
be invoked from SQL commands. (This does not affect their normal use
|
|
by the encoding conversion machinery.)
|
|
</para>
|
|
|
|
<para>
|
|
The lesser problem is that the <filename>contrib/tsearch2</> module
|
|
creates several functions that are misdeclared to return
|
|
<type>internal</> when they do not accept <type>internal</> arguments.
|
|
This breaks type safety for all functions using <type>internal</>
|
|
arguments.
|
|
</para>
|
|
|
|
<para>
|
|
It is strongly recommended that all installations repair these errors,
|
|
either by initdb or by following the manual repair procedures 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 following procedures instead.
|
|
As the database superuser, do:
|
|
|
|
<programlisting>
|
|
BEGIN;
|
|
UPDATE pg_proc SET proargtypes[3] = 'internal'::regtype
|
|
WHERE pronamespace = 11 AND pronargs = 5
|
|
AND proargtypes[2] = 'cstring'::regtype;
|
|
-- The command should report having updated 90 rows;
|
|
-- if not, rollback and investigate instead of committing!
|
|
COMMIT;
|
|
</programlisting>
|
|
|
|
Next, if you have installed <filename>contrib/tsearch2</>, do:
|
|
|
|
<programlisting>
|
|
BEGIN;
|
|
UPDATE pg_proc SET proargtypes[0] = 'internal'::regtype
|
|
WHERE oid IN (
|
|
'dex_init(text)'::regprocedure,
|
|
'snb_en_init(text)'::regprocedure,
|
|
'snb_ru_init(text)'::regprocedure,
|
|
'spell_init(text)'::regprocedure,
|
|
'syn_init(text)'::regprocedure
|
|
);
|
|
-- The command should report having updated 5 rows;
|
|
-- if not, rollback and investigate instead of committing!
|
|
COMMIT;
|
|
</programlisting>
|
|
|
|
If this command fails with a message like <quote>function
|
|
"dex_init(text)" does not exist</>, then either <filename>tsearch2</>
|
|
is not installed in this database, or you already did the update.
|
|
</para>
|
|
|
|
<para>
|
|
The above procedures must be carried out in <emphasis>each</> database
|
|
of an installation, including <literal>template1</>, and ideally
|
|
including <literal>template0</> as well. If you do not fix the
|
|
template databases then any subsequently created databases will contain
|
|
the same errors. <literal>template1</> can be fixed in the same way
|
|
as any other database, but fixing <literal>template0</> requires
|
|
additional steps. First, from any database issue:
|
|
<programlisting>
|
|
UPDATE pg_database SET datallowconn = true WHERE datname = 'template0';
|
|
</programlisting>
|
|
Next connect to <literal>template0</> and perform the above repair
|
|
procedures. Finally, do:
|
|
<programlisting>
|
|
-- re-freeze template0:
|
|
VACUUM FREEZE;
|
|
-- and protect it against future alterations:
|
|
UPDATE pg_database SET datallowconn = false WHERE datname = 'template0';
|
|
</programlisting>
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
<listitem><para>Change encoding function signature to prevent
|
|
misuse</para></listitem>
|
|
<listitem><para>Change <filename>contrib/tsearch2</> to avoid unsafe use of
|
|
<type>INTERNAL</> function results</para></listitem>
|
|
<listitem><para>Repair ancient race condition that allowed a transaction to be
|
|
seen as committed for some purposes (eg SELECT FOR UPDATE) slightly sooner
|
|
than for other purposes</para>
|
|
<para>This is an extremely serious bug since it could lead to apparent
|
|
data inconsistencies being briefly visible to applications.</para></listitem>
|
|
<listitem><para>Repair race condition between relation extension and
|
|
VACUUM</para>
|
|
<para>This could theoretically have caused loss of a page's worth of
|
|
freshly-inserted data, although the scenario seems of very low probability.
|
|
There are no known cases of it having caused more than an Assert failure.
|
|
</para></listitem>
|
|
<listitem><para>Fix comparisons of <type>TIME WITH TIME ZONE</> values</para>
|
|
<para>
|
|
The comparison code was wrong in the case where the
|
|
<literal>--enable-integer-datetimes</> configuration switch had been used.
|
|
NOTE: if you have an index on a <type>TIME WITH TIME ZONE</> column,
|
|
it will need to be <command>REINDEX</>ed after installing this update, because
|
|
the fix corrects the sort order of column values.
|
|
</para></listitem>
|
|
<listitem><para>Fix <function>EXTRACT(EPOCH)</> for
|
|
<type>TIME WITH TIME ZONE</> values</para></listitem>
|
|
<listitem><para>Fix mis-display of negative fractional seconds in
|
|
<type>INTERVAL</> values</para>
|
|
<para>
|
|
This error only occurred when the
|
|
<literal>--enable-integer-datetimes</> configuration switch had been used.
|
|
</para></listitem>
|
|
<listitem><para>Ensure operations done during backend shutdown are counted by
|
|
statistics collector</para>
|
|
<para>
|
|
This is expected to resolve reports of <application>pg_autovacuum</>
|
|
not vacuuming the system catalogs often enough — it was not being
|
|
told about catalog deletions caused by temporary table removal during
|
|
backend exit.
|
|
</para></listitem>
|
|
<listitem><para>Additional buffer overrun checks in plpgsql
|
|
(Neil)</para></listitem>
|
|
<listitem><para>Fix pg_dump to dump trigger names containing <literal>%</>
|
|
correctly (Neil)</para></listitem>
|
|
<listitem><para>Fix <filename>contrib/pgcrypto</> for newer OpenSSL builds
|
|
(Marko Kreen)</para></listitem>
|
|
<listitem><para>Still more 64-bit fixes for
|
|
<filename>contrib/intagg</></para></listitem>
|
|
<listitem><para>Prevent incorrect optimization of functions returning
|
|
<type>RECORD</></para></listitem>
|
|
<listitem><para>Prevent <function>to_char(interval)</> from dumping core for
|
|
month-related formats</para></listitem>
|
|
<listitem><para>Prevent crash on <literal>COALESCE(NULL,NULL)</></para></listitem>
|
|
<listitem><para>Fix <function>array_map</> to call PL functions correctly</para></listitem>
|
|
<listitem><para>Fix permission checking in <command>ALTER DATABASE RENAME</></para></listitem>
|
|
<listitem><para>Fix <command>ALTER LANGUAGE RENAME</></para></listitem>
|
|
<listitem><para>Make <function>RemoveFromWaitQueue</> clean up after itself</para>
|
|
<para>
|
|
This fixes a lock management error that would only be visible if a transaction
|
|
was kicked out of a wait for a lock (typically by query cancel) and then the
|
|
holder of the lock released it within a very narrow window.
|
|
</para></listitem>
|
|
<listitem><para>Fix problem with untyped parameter appearing in
|
|
<command>INSERT ... SELECT</></para></listitem>
|
|
<listitem><para>Fix <command>CLUSTER</> failure after
|
|
<command>ALTER TABLE SET WITHOUT OIDS</></para></listitem>
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-7-4-7">
|
|
<title>Release 7.4.7</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2005-01-31</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 7.4.6, including several
|
|
security-related issues.
|
|
For information about new features in the 7.4 major release, see
|
|
<xref linkend="release-7-4">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 7.4.7</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 7.4.X.
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
<listitem><para>Disallow <command>LOAD</> to non-superusers</para>
|
|
<para>
|
|
On platforms that will automatically execute initialization functions of a
|
|
shared library (this includes at least Windows and ELF-based Unixen),
|
|
<command>LOAD</> can be used to make the server execute arbitrary code.
|
|
Thanks to NGS Software for reporting this.</para></listitem>
|
|
<listitem><para>Check that creator of an aggregate function has the right to
|
|
execute the specified transition functions</para>
|
|
<para>
|
|
This oversight made it possible to bypass denial of EXECUTE
|
|
permission on a function.</para></listitem>
|
|
<listitem><para>Fix security and 64-bit issues in
|
|
contrib/intagg</para></listitem>
|
|
<listitem><para>Add needed STRICT marking to some contrib functions (Kris
|
|
Jurka)</para></listitem>
|
|
<listitem><para>Avoid buffer overrun when plpgsql cursor declaration has too
|
|
many parameters (Neil)</para></listitem>
|
|
<listitem><para>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>Fix plperl for quote marks in tuple fields</para></listitem>
|
|
<listitem><para>Fix display of negative intervals in SQL and GERMAN
|
|
datestyles</para></listitem>
|
|
<listitem><para>Make age(timestamptz) do calculation in local timezone not
|
|
GMT</para></listitem>
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-7-4-6">
|
|
<title>Release 7.4.6</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2004-10-22</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 7.4.5.
|
|
For information about new features in the 7.4 major release, see
|
|
<xref linkend="release-7-4">.
|
|
</para>
|
|
|
|
|
|
<sect2>
|
|
<title>Migration to Version 7.4.6</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 7.4.X.
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
<listitem><para>Repair possible failure to update hint bits on disk</para>
|
|
<para>
|
|
Under rare circumstances this oversight could lead to
|
|
<quote>could not access transaction status</> failures, which qualifies
|
|
it as a potential-data-loss bug.
|
|
</para></listitem>
|
|
<listitem><para>Ensure that hashed outer join does not miss tuples</para>
|
|
<para>
|
|
Very large left joins using a hash join plan could fail to output unmatched
|
|
left-side rows given just the right data distribution.
|
|
</para></listitem>
|
|
<listitem><para>Disallow running <application>pg_ctl</> as root</para>
|
|
<para>
|
|
This is to guard against any possible security issues.
|
|
</para></listitem>
|
|
<listitem><para>Avoid using temp files in <filename>/tmp</> in <command>make_oidjoins_check</command></para>
|
|
<para>
|
|
This has been reported as a security issue, though it's hardly worthy of
|
|
concern since there is no reason for non-developers to use this script anyway.
|
|
</para></listitem>
|
|
<listitem><para>Prevent forced backend shutdown from re-emitting prior command
|
|
result</para>
|
|
<para>
|
|
In rare cases, a client might think that its last command had succeeded when
|
|
it really had been aborted by forced database shutdown.
|
|
</para></listitem>
|
|
<listitem><para>Repair bug in <function>pg_stat_get_backend_idset</function></para>
|
|
<para>
|
|
This could lead to misbehavior in some of the system-statistics views.
|
|
</para></listitem>
|
|
<listitem><para>Fix small memory leak in postmaster</para></listitem>
|
|
<listitem><para>Fix <quote>expected both swapped tables to have TOAST
|
|
tables</> bug</para>
|
|
<para>
|
|
This could arise in cases such as CLUSTER after ALTER TABLE DROP COLUMN.
|
|
</para></listitem>
|
|
<listitem><para>Prevent <literal>pg_ctl restart</> from adding <literal>-D</> multiple times</para></listitem>
|
|
<listitem><para>Fix problem with NULL values in GiST indexes</para></listitem>
|
|
<listitem><para><literal>::</> is no longer interpreted as a variable in an
|
|
ECPG prepare statement</para></listitem>
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-7-4-5">
|
|
<title>Release 7.4.5</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2004-08-18</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains one serious bug fix over 7.4.4.
|
|
For information about new features in the 7.4 major release, see
|
|
<xref linkend="release-7-4">.
|
|
</para>
|
|
|
|
|
|
<sect2>
|
|
<title>Migration to Version 7.4.5</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 7.4.X.
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
<listitem><para>Repair possible crash during concurrent B-tree index insertions</para>
|
|
<para>
|
|
This patch fixes a rare case in which concurrent insertions into a B-tree index
|
|
could result in a server panic. No permanent damage would result, but it's
|
|
still worth a re-release. The bug does not exist in pre-7.4 releases.
|
|
</para></listitem>
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-7-4-4">
|
|
<title>Release 7.4.4</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2004-08-16</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 7.4.3.
|
|
For information about new features in the 7.4 major release, see
|
|
<xref linkend="release-7-4">.
|
|
</para>
|
|
|
|
|
|
<sect2>
|
|
<title>Migration to Version 7.4.4</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 7.4.X.
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
<listitem><para>Prevent possible loss of committed transactions during crash</para>
|
|
<para>
|
|
Due to insufficient interlocking between transaction commit and checkpointing,
|
|
it was possible for transactions committed just before the most recent
|
|
checkpoint to be lost, in whole or in part, following a database crash and
|
|
restart. This is a serious bug that has existed
|
|
since <productname>PostgreSQL</productname> 7.1.
|
|
</para></listitem>
|
|
<listitem><para>Check HAVING restriction before evaluating result list of an
|
|
aggregate plan</para></listitem>
|
|
<listitem><para>Avoid crash when session's current user ID is deleted</para></listitem>
|
|
<listitem><para>Fix hashed crosstab for zero-rows case (Joe)</para></listitem>
|
|
<listitem><para>Force cache update after renaming a column in a foreign key</para></listitem>
|
|
<listitem><para>Pretty-print UNION queries correctly</para></listitem>
|
|
<listitem><para>Make psql handle <literal>\r\n</> newlines properly in COPY IN</para></listitem>
|
|
<listitem><para><application>pg_dump</> handled ACLs with grant options incorrectly</para></listitem>
|
|
<listitem><para>Fix thread support for OS X and Solaris</para></listitem>
|
|
<listitem><para>Updated JDBC driver (build 215) with various fixes</para></listitem>
|
|
<listitem><para>ECPG fixes</para></listitem>
|
|
<listitem><para>Translation updates (various contributors)</para></listitem>
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-7-4-3">
|
|
<title>Release 7.4.3</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2004-06-14</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 7.4.2.
|
|
For information about new features in the 7.4 major release, see
|
|
<xref linkend="release-7-4">.
|
|
</para>
|
|
|
|
|
|
<sect2>
|
|
<title>Migration to Version 7.4.3</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 7.4.X.
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
<listitem><para>Fix temporary memory leak when using non-hashed aggregates (Tom)</para></listitem>
|
|
<listitem><para>ECPG fixes, including some for Informix compatibility (Michael)</para></listitem>
|
|
<listitem><para>Fixes for compiling with thread-safety, particularly Solaris (Bruce)</para></listitem>
|
|
<listitem><para>Fix error in COPY IN termination when using the old network protocol (ljb)</para></listitem>
|
|
<listitem><para>Several important fixes in pg_autovacuum, including fixes for
|
|
large tables, unsigned oids, stability, temp tables, and debug mode
|
|
(Matthew T. O'Connor)</para></listitem>
|
|
<listitem><para>Fix problem with reading tar-format dumps on NetBSD and BSD/OS (Bruce)</para></listitem>
|
|
<listitem><para>Several JDBC fixes</para></listitem>
|
|
<listitem><para>Fix ALTER SEQUENCE RESTART where last_value equals the restart value (Tom)</para></listitem>
|
|
<listitem><para>Repair failure to recalculate nested sub-selects (Tom)</para></listitem>
|
|
<listitem><para>Fix problems with non-constant expressions in LIMIT/OFFSET</para></listitem>
|
|
<listitem><para>Support FULL JOIN with no join clause, such as X FULL JOIN Y ON TRUE (Tom)</para></listitem>
|
|
<listitem><para>Fix another zero-column table bug (Tom)</para></listitem>
|
|
<listitem><para>Improve handling of non-qualified identifiers in GROUP BY clauses in sub-selects (Tom)</para>
|
|
<para>
|
|
Select-list aliases within the sub-select will now take precedence over
|
|
names from outer query levels.
|
|
</para></listitem>
|
|
<listitem><para>Do not generate <quote>NATURAL CROSS JOIN</> when decompiling rules (Tom)</para></listitem>
|
|
<listitem><para>Add checks for invalid field length in binary COPY (Tom)</para>
|
|
<para>
|
|
This fixes a difficult-to-exploit security hole.
|
|
</para></listitem>
|
|
<listitem><para>Avoid locking conflict between <command>ANALYZE</command> and <command>LISTEN</command>/<command>NOTIFY</command></para></listitem>
|
|
<listitem><para>Numerous translation updates (various contributors)</para></listitem>
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-7-4-2">
|
|
<title>Release 7.4.2</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2004-03-08</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 7.4.1.
|
|
For information about new features in the 7.4 major release, see
|
|
<xref linkend="release-7-4">.
|
|
</para>
|
|
|
|
|
|
<sect2>
|
|
<title>Migration to Version 7.4.2</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 7.4.X. However,
|
|
it might be advisable as the easiest method of incorporating fixes for
|
|
two errors that have been found in the initial contents of 7.4.X system
|
|
catalogs. A dump/initdb/reload sequence using 7.4.2's initdb will
|
|
automatically correct these problems.
|
|
</para>
|
|
|
|
<para>
|
|
The more severe of the two errors is that data type <type>anyarray</>
|
|
has the wrong alignment label; this is a problem because the
|
|
<structname>pg_statistic</> system catalog uses <type>anyarray</>
|
|
columns. The mislabeling can cause planner misestimations and even
|
|
crashes when planning queries that involve <literal>WHERE</> clauses on
|
|
double-aligned columns (such as <type>float8</> and <type>timestamp</>).
|
|
It is strongly recommended that all installations repair this error,
|
|
either by initdb or by following the manual repair procedure given
|
|
below.
|
|
</para>
|
|
|
|
<para>
|
|
The lesser error is that the system view <structname>pg_settings</>
|
|
ought to be marked as having public update access, to allow
|
|
<literal>UPDATE pg_settings</> to be used as a substitute for
|
|
<command>SET</>. This can also be fixed either by initdb or manually,
|
|
but it is not necessary to fix unless you want to use <literal>UPDATE
|
|
pg_settings</>.
|
|
</para>
|
|
|
|
<para>
|
|
If you wish not to do an initdb, the following procedure will work
|
|
for fixing <structname>pg_statistic</>. As the database superuser,
|
|
do:
|
|
|
|
<programlisting>
|
|
-- clear out old data in pg_statistic:
|
|
DELETE FROM pg_statistic;
|
|
VACUUM pg_statistic;
|
|
-- this should update 1 row:
|
|
UPDATE pg_type SET typalign = 'd' WHERE oid = 2277;
|
|
-- this should update 6 rows:
|
|
UPDATE pg_attribute SET attalign = 'd' WHERE atttypid = 2277;
|
|
--
|
|
-- At this point you MUST start a fresh backend to avoid a crash!
|
|
--
|
|
-- repopulate pg_statistic:
|
|
ANALYZE;
|
|
</programlisting>
|
|
|
|
This can be done in a live database, but beware that all backends
|
|
running in the altered database must be restarted before it is safe to
|
|
repopulate <structname>pg_statistic</>.
|
|
</para>
|
|
|
|
<para>
|
|
To repair the <structname>pg_settings</> error, simply do:
|
|
<programlisting>
|
|
GRANT SELECT, UPDATE ON pg_settings TO PUBLIC;
|
|
</programlisting>
|
|
</para>
|
|
|
|
<para>
|
|
The above procedures must be carried out in <emphasis>each</> database
|
|
of an installation, including <literal>template1</>, and ideally
|
|
including <literal>template0</> as well. If you do not fix the
|
|
template databases then any subsequently created databases will contain
|
|
the same errors. <literal>template1</> can be fixed in the same way
|
|
as any other database, but fixing <literal>template0</> requires
|
|
additional steps. First, from any database issue:
|
|
<programlisting>
|
|
UPDATE pg_database SET datallowconn = true WHERE datname = 'template0';
|
|
</programlisting>
|
|
Next connect to <literal>template0</> and perform the above repair
|
|
procedures. Finally, do:
|
|
<programlisting>
|
|
-- re-freeze template0:
|
|
VACUUM FREEZE;
|
|
-- and protect it against future alterations:
|
|
UPDATE pg_database SET datallowconn = false WHERE datname = 'template0';
|
|
</programlisting>
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<para>
|
|
Release 7.4.2 incorporates all the fixes included in release 7.3.6,
|
|
plus the following fixes:
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
<listitem><para>Fix <structname>pg_statistics</> alignment bug that could crash optimizer</para>
|
|
<para>See above for details about this problem.</para></listitem>
|
|
<listitem><para>Allow non-super users to update <structname>pg_settings</></para></listitem>
|
|
<listitem><para>Fix several optimizer bugs, most of which led to
|
|
<quote>variable not found in subplan target lists</> errors</para></listitem>
|
|
<listitem><para>Avoid out-of-memory failure during startup of large multiple
|
|
index scan</para></listitem>
|
|
<listitem><para>Fix multibyte problem that could lead to <quote>out of
|
|
memory</> error during <command>COPY IN</></para></listitem>
|
|
<listitem><para>Fix problems with <command>SELECT INTO</> / <command>CREATE
|
|
TABLE AS</> from tables without OIDs</para></listitem>
|
|
<listitem><para>Fix problems with <filename>alter_table</> regression test
|
|
during parallel testing</para></listitem>
|
|
<listitem><para>Fix problems with hitting open file limit, especially on OS X (Tom)</para></listitem>
|
|
<listitem><para>Partial fix for Turkish-locale issues</para>
|
|
<para>initdb will succeed now in Turkish locale, but there are still some
|
|
inconveniences associated with the <literal>i/I</> problem.</para></listitem>
|
|
<listitem><para>Make pg_dump set client encoding on restore</para></listitem>
|
|
<listitem><para>Other minor pg_dump fixes</para></listitem>
|
|
<listitem><para>Allow ecpg to again use C keywords as column names (Michael)</para></listitem>
|
|
<listitem><para>Added ecpg <literal>WHENEVER NOT_FOUND</> to
|
|
<literal>SELECT/INSERT/UPDATE/DELETE</> (Michael)</para></listitem>
|
|
<listitem><para>Fix ecpg crash for queries calling set-returning functions (Michael)</para></listitem>
|
|
<listitem><para>Various other ecpg fixes (Michael)</para></listitem>
|
|
<listitem><para>Fixes for Borland compiler</para></listitem>
|
|
<listitem><para>Thread build improvements (Bruce)</para></listitem>
|
|
<listitem><para>Various other build fixes</para></listitem>
|
|
<listitem><para>Various JDBC fixes</para></listitem>
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-7-4-1">
|
|
<title>Release 7.4.1</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2003-12-22</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 7.4.
|
|
For information about new features in the 7.4 major release, see
|
|
<xref linkend="release-7-4">.
|
|
</para>
|
|
|
|
|
|
<sect2>
|
|
<title>Migration to Version 7.4.1</title>
|
|
|
|
<para>
|
|
A dump/restore is <emphasis>not</emphasis> required for those
|
|
running 7.4.
|
|
</para>
|
|
|
|
<para>
|
|
If you want to install the fixes in the information schema
|
|
you need to reload it into the database.
|
|
This is either accomplished by initializing a new cluster
|
|
by running <command>initdb</command>, or by running the following
|
|
sequence of SQL commands in each database (ideally including
|
|
<literal>template1</literal>) as a superuser in
|
|
<application>psql</application>, after installing the new release:
|
|
<programlisting>
|
|
DROP SCHEMA information_schema CASCADE;
|
|
\i /usr/local/pgsql/share/information_schema.sql
|
|
</programlisting>
|
|
Substitute your installation path in the second command.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
<listitem><para>Fixed bug in <command>CREATE SCHEMA</command> parsing in ECPG (Michael)</para></listitem>
|
|
<listitem><para>Fix compile error when <option>--enable-thread-safety</option> and <option>--with-perl</option> are used together (Peter)</para></listitem>
|
|
<listitem><para>Fix for subqueries that used hash joins (Tom)</para>
|
|
<para>
|
|
Certain subqueries that used hash joins would crash because of
|
|
improperly shared structures.
|
|
</para></listitem>
|
|
<listitem><para>Fix free space map compaction bug (Tom)</para>
|
|
<para>
|
|
This fixes a bug where compaction of the free space map could lead
|
|
to a database server shutdown.
|
|
</para>
|
|
</listitem>
|
|
<listitem><para>Fix for Borland compiler build of libpq (Bruce)</para></listitem>
|
|
<listitem><para>Fix <function>netmask()</function> and <function>hostmask()</function> to return the maximum-length masklen (Tom)</para>
|
|
<para>
|
|
Fix these functions to return values consistent with pre-7.4
|
|
releases.
|
|
</para>
|
|
</listitem>
|
|
<listitem><para>Several <filename>contrib/pg_autovacuum</filename> fixes</para>
|
|
<para>
|
|
Fixes include improper variable initialization, missing vacuum after
|
|
<command>TRUNCATE</command>, and duration computation overflow for long vacuums.
|
|
</para>
|
|
</listitem>
|
|
<listitem><para>Allow compile of <filename>contrib/cube</filename> under Cygwin (Jason Tishler)</para></listitem>
|
|
<listitem><para>Fix Solaris use of password file when no passwords are defined (Tom)</para>
|
|
<para>
|
|
Fix crash on Solaris caused by use of any type of password
|
|
authentication when no passwords were defined.
|
|
</para>
|
|
</listitem>
|
|
<listitem><para>JDBC fix for thread problems, other fixes</para></listitem>
|
|
<listitem><para>Fix for <type>bytea</type> index lookups (Joe)</para></listitem>
|
|
<listitem><para>Fix information schema for bit data types (Peter)</para></listitem>
|
|
<listitem><para>Force zero_damaged_pages to be on during recovery from WAL</para></listitem>
|
|
<listitem><para>Prevent some obscure cases of <quote>variable not in subplan target lists</quote></para></listitem>
|
|
<listitem><para>Make <function>PQescapeBytea</function> and <function>byteaout</function> consistent with each other (Joe)</para></listitem>
|
|
<listitem><para>Escape <type>bytea</type> output for bytes > 0x7e(Joe)</para>
|
|
<para>
|
|
If different client encodings are used for <type>bytea</type> output and input, it
|
|
is possible for <type>bytea</type> values to be corrupted by the differing
|
|
encodings. This fix escapes all bytes that might be affected.
|
|
</para>
|
|
</listitem>
|
|
<listitem><para>Added missing <function>SPI_finish()</function> calls to dblink's <function>get_tuple_of_interest()</function> (Joe)</para></listitem>
|
|
<listitem><para>New Czech FAQ</para></listitem>
|
|
<listitem><para>Fix information schema view <literal>constraint_column_usage</literal> for foreign keys (Peter)</para></listitem>
|
|
<listitem><para>ECPG fixes (Michael)</para></listitem>
|
|
<listitem><para>Fix bug with multiple <literal>IN</literal> subqueries and joins in the subqueries (Tom)</para></listitem>
|
|
<listitem><para>Allow <literal>COUNT('x')</literal> to work (Tom)</para></listitem>
|
|
<listitem><para>Install ECPG include files for Informix compatibility into separate directory (Peter)</para>
|
|
<para>
|
|
Some names of ECPG include files for Informix compatibility conflicted with operating system include files.
|
|
By installing them in their own directory, name conflicts have been reduced.
|
|
</para>
|
|
</listitem>
|
|
<listitem><para>Fix SSL memory leak (Neil)</para>
|
|
<para>
|
|
This release fixes a bug in 7.4 where SSL didn't free all memory it allocated.
|
|
</para>
|
|
</listitem>
|
|
<listitem><para>Prevent <filename>pg_service.conf</filename> from using service name as default dbname (Bruce)</para></listitem>
|
|
<listitem><para>Fix local ident authentication on FreeBSD (Tom)</para></listitem>
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-7-4">
|
|
<title>Release 7.4</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2003-11-17</simpara>
|
|
</note>
|
|
|
|
<sect2>
|
|
<title>Overview</title>
|
|
|
|
<para>
|
|
Major changes in this release:
|
|
</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>
|
|
<literal>IN</literal> / <literal>NOT IN</literal> subqueries are
|
|
now much more efficient
|
|
</term>
|
|
|
|
<listitem>
|
|
<para>
|
|
In previous releases, <literal>IN</literal>/<literal>NOT
|
|
IN</literal> subqueries were joined to the upper query by
|
|
sequentially scanning the subquery looking for a match. The
|
|
7.4 code uses the same sophisticated techniques used by
|
|
ordinary joins and so is much faster. An
|
|
<literal>IN</literal> will now usually be as fast as or faster
|
|
than an equivalent <literal>EXISTS</literal> subquery; this
|
|
reverses the conventional wisdom that applied to previous
|
|
releases.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
Improved <literal>GROUP BY</literal> processing by using hash buckets
|
|
</term>
|
|
|
|
<listitem>
|
|
<para>
|
|
In previous releases, rows to be grouped had to be sorted
|
|
first. The 7.4 code can do <literal>GROUP BY</literal>
|
|
without sorting, by accumulating results into a hash table
|
|
with one entry per group. It will still use the sort
|
|
technique, however, if the hash table is estimated to be too
|
|
large to fit in <varname>sort_mem</>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
New multikey hash join capability
|
|
</term>
|
|
|
|
<listitem>
|
|
<para>
|
|
In previous releases, hash joins could only occur on single
|
|
keys. This release allows multicolumn hash joins.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
Queries using the explicit <literal>JOIN</literal> syntax are
|
|
now better optimized
|
|
</term>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prior releases evaluated queries using the explicit
|
|
<literal>JOIN</literal> syntax only in the order implied by
|
|
the syntax. 7.4 allows full optimization of these queries,
|
|
meaning the optimizer considers all possible join orderings
|
|
and chooses the most efficient. Outer joins, however, must
|
|
still follow the declared ordering.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
Faster and more powerful regular expression code
|
|
</term>
|
|
|
|
<listitem>
|
|
<para>
|
|
The entire regular expression module has been replaced with a
|
|
new version by Henry Spencer, originally written for Tcl. The
|
|
code greatly improves performance and supports several flavors
|
|
of regular expressions.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
Function-inlining for simple SQL functions
|
|
</term>
|
|
|
|
<listitem>
|
|
<para>
|
|
Simple SQL functions can now be inlined by including their SQL
|
|
in the main query. This improves performance by eliminating
|
|
per-call overhead. That means simple SQL functions now
|
|
behave like macros.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
Full support for IPv6 connections and IPv6 address data types
|
|
</term>
|
|
|
|
<listitem>
|
|
<para>
|
|
Previous releases allowed only IPv4 connections, and the IP
|
|
data types only supported IPv4 addresses. This release adds
|
|
full IPv6 support in both of these areas.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
Major improvements in SSL performance and reliability
|
|
</term>
|
|
|
|
<listitem>
|
|
<para>
|
|
Several people very familiar with the SSL API have overhauled
|
|
our SSL code to improve SSL key negotiation and error
|
|
recovery.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
Make free space map efficiently reuse empty index pages,
|
|
and other free space management improvements
|
|
</term>
|
|
|
|
<listitem>
|
|
<para>
|
|
In previous releases, B-tree index pages that were left empty
|
|
because of deleted rows could only be reused by rows with
|
|
index values similar to the rows originally indexed on that
|
|
page. In 7.4, <command>VACUUM</command> records empty index
|
|
pages and allows them to be reused for any future index rows.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
SQL-standard information schema
|
|
</term>
|
|
|
|
<listitem>
|
|
<para>
|
|
The information schema provides a standardized and stable way
|
|
to access information about the schema objects defined in a
|
|
database.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
Cursors conform more closely to the SQL standard
|
|
</term>
|
|
|
|
<listitem>
|
|
<para>
|
|
The commands <command>FETCH</command> and
|
|
<command>MOVE</command> have been overhauled to conform more
|
|
closely to the SQL standard.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
Cursors can exist outside transactions
|
|
</term>
|
|
|
|
<listitem>
|
|
<para>
|
|
These cursors are also called holdable cursors.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
New client-to-server protocol
|
|
</term>
|
|
|
|
<listitem>
|
|
<para>
|
|
The new protocol adds error codes, more status information,
|
|
faster startup, better support for binary data transmission,
|
|
parameter values separated from SQL commands, prepared
|
|
statements available at the protocol level, and cleaner
|
|
recovery from <command>COPY</command> failures. The older
|
|
protocol is still supported by both server and clients.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<application>libpq</application> and
|
|
<application>ECPG</application> applications are now fully
|
|
thread-safe
|
|
</term>
|
|
|
|
<listitem>
|
|
<para>
|
|
While previous <application>libpq</application> releases
|
|
already supported threads, this release improves thread safety
|
|
by fixing some non-thread-safe code that was used during
|
|
database connection startup. The <command>configure</command>
|
|
option <option>--enable-thread-safety</option> must be used to
|
|
enable this feature.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
New version of full-text indexing
|
|
</term>
|
|
|
|
<listitem>
|
|
<para>
|
|
A new full-text indexing suite is available in
|
|
<filename>contrib/tsearch2</filename>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
New autovacuum tool
|
|
</term>
|
|
|
|
<listitem>
|
|
<para>
|
|
The new autovacuum tool in
|
|
<filename>contrib/autovacuum</filename> monitors the database
|
|
statistics tables for
|
|
<command>INSERT</command>/<command>UPDATE</command>/<command>DELETE</command>
|
|
activity and automatically vacuums tables when needed.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
Array handling has been improved and moved into the server core
|
|
</term>
|
|
|
|
<listitem>
|
|
<para>
|
|
Many array limitations have been removed, and arrays behave
|
|
more like fully-supported data types.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 7.4</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>
|
|
The server-side autocommit setting was removed and
|
|
reimplemented in client applications and languages.
|
|
Server-side autocommit was causing too many problems with
|
|
languages and applications that wanted to control their own
|
|
autocommit behavior, so autocommit was removed from the server
|
|
and added to individual client APIs as appropriate.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Error message wording has changed substantially in this
|
|
release. Significant effort was invested to make the messages
|
|
more consistent and user-oriented. If your applications try to
|
|
detect different error conditions by parsing the error message,
|
|
you are strongly encouraged to use the new error code facility instead.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Inner joins using the explicit <literal>JOIN</literal> syntax
|
|
might behave differently because they are now better
|
|
optimized.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
A number of server configuration parameters have been renamed
|
|
for clarity, primarily those related to
|
|
logging.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<literal>FETCH 0</literal> or <literal>MOVE 0</literal> now
|
|
does nothing. In prior releases, <literal>FETCH 0</literal>
|
|
would fetch all remaining rows, and <literal>MOVE 0</literal>
|
|
would move to the end of the cursor.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<command>FETCH</command> and <command>MOVE</command> now return
|
|
the actual number of rows fetched/moved, or zero if at the
|
|
beginning/end of the cursor. Prior releases would return the
|
|
row count passed to the command, not the number of rows
|
|
actually fetched or moved.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<command>COPY</command> now can process files that use
|
|
carriage-return or carriage-return/line-feed end-of-line
|
|
sequences. Literal carriage-returns and line-feeds are no
|
|
longer accepted in data values; use <literal>\r</literal> and
|
|
<literal>\n</literal> instead.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Trailing spaces are now trimmed when converting from type
|
|
<type>char(<replaceable>n</>)</type> to
|
|
<type>varchar(<replaceable>n</>)</type> or <type>text</type>.
|
|
This is what most people always expected to happen anyway.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
The data type <type>float(<replaceable>p</>)</type> now
|
|
measures <replaceable>p</> in binary digits, not decimal
|
|
digits. The new behavior follows the SQL standard.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Ambiguous date values now must match the ordering specified by
|
|
the <varname>datestyle</varname> setting. In prior releases, a
|
|
date specification of <literal>10/20/03</> was interpreted as a
|
|
date in October even if <varname>datestyle</> specified that
|
|
the day should be first. 7.4 will throw an error if a date
|
|
specification is invalid for the current setting of
|
|
<varname>datestyle</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
The functions <function>oidrand</function>,
|
|
<function>oidsrand</function>, and
|
|
<function>userfntest</function> have been removed. These
|
|
functions were determined to be no longer useful.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
String literals specifying time-varying date/time values, such
|
|
as <literal>'now'</literal> or <literal>'today'</literal> will
|
|
no longer work as expected in column default expressions; they
|
|
now cause the time of the table creation to be the default, not
|
|
the time of the insertion. Functions such as
|
|
<function>now()</>, <function>current_timestamp</>, or
|
|
<function>current_date</function> should be used instead.
|
|
</para>
|
|
|
|
<para>
|
|
In previous releases, there was special code so that strings
|
|
such as <literal>'now'</literal> were interpreted at
|
|
<command>INSERT</> time and not at table creation time, but
|
|
this work around didn't cover all cases. Release 7.4 now
|
|
requires that defaults be defined properly using functions such
|
|
as <function>now()</> or <function>current_timestamp</>. These
|
|
will work in all situations.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
The dollar sign (<literal>$</>) is no longer allowed in
|
|
operator names. It can instead be a non-first character in
|
|
identifiers. This was done to improve compatibility with other
|
|
database systems, and to avoid syntax problems when parameter
|
|
placeholders (<literal>$<replaceable>n</></>) are written
|
|
adjacent to operators.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<para>
|
|
Below you will find a detailed account of the changes between
|
|
release 7.4 and the previous major release.
|
|
</para>
|
|
|
|
<sect3>
|
|
<title>Server Operation Changes</title>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
Allow IPv6 server connections (Nigel Kukard, Johan Jordaan,
|
|
Bruce, Tom, Kurt Roeckx, Andrew Dunstan)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix SSL to handle errors cleanly (Nathan Mueller)
|
|
</para>
|
|
<para>
|
|
In prior releases, certain SSL API error reports were not
|
|
handled correctly. This release fixes those problems.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
SSL protocol security and performance improvements (Sean Chittenden)
|
|
</para>
|
|
<para>
|
|
SSL key renegotiation was happening too frequently, causing poor
|
|
SSL performance. Also, initial key handling was improved.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Print lock information when a deadlock is detected (Tom)
|
|
</para>
|
|
<para>
|
|
This allows easier debugging of deadlock situations.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update <filename>/tmp</filename> socket modification times
|
|
regularly to avoid their removal (Tom)
|
|
</para>
|
|
<para>
|
|
This should help prevent <filename>/tmp</filename> directory
|
|
cleaner administration scripts from removing server socket
|
|
files.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem><para>Enable PAM for Mac OS X (Aaron Hillegass)</para></listitem>
|
|
|
|
<listitem>
|
|
<para>Make B-tree indexes fully WAL-safe (Tom)</para>
|
|
<para>
|
|
In prior releases, under certain rare cases, a server crash
|
|
could cause B-tree indexes to become corrupt. This release
|
|
removes those last few rare cases.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem><para>Allow B-tree index compaction and empty page reuse (Tom)</para></listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix inconsistent index lookups during split of first root page (Tom)
|
|
</para>
|
|
<para>
|
|
In prior releases, when a single-page index split into two
|
|
pages, there was a brief period when another database session
|
|
could miss seeing an index entry. This release fixes that rare
|
|
failure case.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem><para>Improve free space map allocation logic (Tom)</para></listitem>
|
|
|
|
<listitem>
|
|
<para>Preserve free space information between server restarts (Tom)</para>
|
|
<para>
|
|
In prior releases, the free space map was not saved when the
|
|
postmaster was stopped, so newly started servers had no free
|
|
space information. This release saves the free space map, and
|
|
reloads it when the server is restarted.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem><para>Add start time to <literal>pg_stat_activity</literal> (Neil)</para></listitem>
|
|
<listitem><para>New code to detect corrupt disk pages; erase with <varname>zero_damaged_pages</varname> (Tom)</para></listitem>
|
|
<listitem><para>New client/server protocol: faster, no username length limit, allow clean exit from <command>COPY</command> (Tom)</para></listitem>
|
|
<listitem><para>Add transaction status, table ID, column ID to client/server protocol (Tom)</para></listitem>
|
|
<listitem><para>Add binary I/O to client/server protocol (Tom)</para></listitem>
|
|
<listitem><para>Remove autocommit server setting; move to client applications (Tom)</para></listitem>
|
|
<listitem><para>New error message wording, error codes, and three levels of error detail (Tom, Joe, Peter)</para></listitem>
|
|
</itemizedlist>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Performance Improvements</title>
|
|
|
|
<itemizedlist>
|
|
<listitem><para>Add hashing for <literal>GROUP BY</literal> aggregates (Tom)</para></listitem>
|
|
<listitem><para>Make nested-loop joins be smarter about multicolumn indexes (Tom)</para></listitem>
|
|
<listitem><para>Allow multikey hash joins (Tom)</para></listitem>
|
|
<listitem><para>Improve constant folding (Tom)</para></listitem>
|
|
<listitem><para>Add ability to inline simple SQL functions (Tom)</para></listitem>
|
|
|
|
<listitem>
|
|
<para>Reduce memory usage for queries using complex functions (Tom)</para>
|
|
<para>
|
|
In prior releases, functions returning allocated memory would
|
|
not free it until the query completed. This release allows the
|
|
freeing of function-allocated memory when the function call
|
|
completes, reducing the total memory used by functions.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Improve GEQO optimizer performance (Tom)</para>
|
|
<para>
|
|
This release fixes several inefficiencies in the way the GEQO optimizer
|
|
manages potential query paths.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <literal>IN</>/<literal>NOT IN</> to be handled via hash
|
|
tables (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve <literal>NOT IN (<replaceable>subquery</>)</literal>
|
|
performance (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow most <literal>IN</literal> subqueries to be processed as
|
|
joins (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Pattern matching operations can use indexes regardless of
|
|
locale (Peter)
|
|
</para>
|
|
<para>
|
|
There is no way for non-ASCII locales to use the standard
|
|
indexes for <literal>LIKE</literal> comparisons. This release
|
|
adds a way to create a special index for
|
|
<literal>LIKE</literal>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Allow the postmaster to preload libraries using <varname>preload_libraries</varname> (Joe)</para>
|
|
<para>
|
|
For shared libraries that require a long time to load, this
|
|
option is available so the library can be preloaded in the
|
|
postmaster and inherited by all database sessions.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve optimizer cost computations, particularly for subqueries (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid sort when subquery <literal>ORDER BY</literal> matches upper query (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Deduce that <literal>WHERE a.x = b.y AND b.y = 42</literal> also
|
|
means <literal>a.x = 42</literal> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow hash/merge joins on complex joins (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow hash joins for more data types (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow join optimization of explicit inner joins, disable with
|
|
<varname>join_collapse_limit</varname> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add parameter <varname>from_collapse_limit</varname> to control
|
|
conversion of subqueries to joins (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Use faster and more powerful regular expression code from Tcl
|
|
(Henry Spencer, Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Use bit-mapped relation sets in the optimizer (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Improve connection startup time (Tom)</para>
|
|
<para>
|
|
The new client/server protocol requires fewer network packets to
|
|
start a database session.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve trigger/constraint performance (Stephan)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve speed of <literal>col IN (const, const, const, ...)</literal> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix hash indexes which were broken in rare cases (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem><para>Improve hash index concurrency and speed (Tom)</para>
|
|
<para>
|
|
Prior releases suffered from poor hash index performance,
|
|
particularly for high concurrency situations. This release fixes
|
|
that, and the development group is interested in reports
|
|
comparing B-tree and hash index performance.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Align shared buffers on 32-byte boundary for copy speed improvement (Manfred Spraul)</para>
|
|
<para>
|
|
Certain CPU's perform faster data copies when addresses are
|
|
32-byte aligned.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Data type <type>numeric</type> reimplemented for better performance (Tom)</para>
|
|
<para>
|
|
<type>numeric</type> used to be stored in base 100. The new code
|
|
uses base 10000, for significantly better performance.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Server Configuration Changes</title>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Rename server parameter <varname>server_min_messages</> to <varname>log_min_messages</> (Bruce)</para>
|
|
<para>
|
|
This was done so most parameters that control the server logs
|
|
begin with <literal>log_</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem><para>Rename <varname>show_*_stats</> to <varname>log_*_stats</> (Bruce)</para></listitem>
|
|
<listitem><para>Rename <varname>show_source_port</> to <varname>log_source_port</> (Bruce)</para></listitem>
|
|
<listitem><para>Rename <varname>hostname_lookup</> to <varname>log_hostname</> (Bruce)</para></listitem>
|
|
|
|
<listitem>
|
|
<para>Add <varname>checkpoint_warning</> to warn of excessive checkpointing (Bruce)</para>
|
|
<para>
|
|
In prior releases, it was difficult to determine if checkpoint
|
|
was happening too frequently. This feature adds a warning to the
|
|
server logs when excessive checkpointing happens.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem><para>New read-only server parameters for localization (Tom)</para></listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Change debug server log messages to output as <literal>DEBUG</>
|
|
rather than <literal>LOG</> (Bruce)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Prevent server log variables from being turned off by non-superusers (Bruce)</para>
|
|
<para>
|
|
This is a security feature so non-superusers cannot disable
|
|
logging that was enabled by the administrator.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<varname>log_min_messages</>/<varname>client_min_messages</> now
|
|
controls <varname>debug_*</> output (Bruce)
|
|
</para>
|
|
<para>
|
|
This centralizes client debug information so all debug output
|
|
can be sent to either the client or server logs.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Add Mac OS X Rendezvous server support (Chris Campbell)</para>
|
|
<para>
|
|
This allows Mac OS X hosts to query the network for available
|
|
<productname>PostgreSQL</productname> servers.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add ability to print only slow statements using
|
|
<varname>log_min_duration_statement</varname>
|
|
(Christopher)
|
|
</para>
|
|
<para>
|
|
This is an often requested debugging feature that allows
|
|
administrators to see only slow queries in their server logs.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Allow <filename>pg_hba.conf</filename> to accept netmasks in CIDR format (Andrew Dunstan)</para>
|
|
<para>
|
|
This allows administrators to merge the host IP address and
|
|
netmask fields into a single CIDR field in <filename>pg_hba.conf</filename>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem><para>New read-only parameter <varname>is_superuser</varname> (Tom)</para></listitem>
|
|
|
|
<listitem>
|
|
<para>New parameter <varname>log_error_verbosity</varname> to control error detail (Tom)</para>
|
|
<para>
|
|
This works with the new error reporting feature to supply
|
|
additional error information like hints, file names and line
|
|
numbers.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>postgres --describe-config</literal> now dumps server config variables (Aizaz Ahmed, Peter)</para>
|
|
<para>
|
|
This option is useful for administration tools that need to know
|
|
the configuration variable names and their minimums, maximums,
|
|
defaults, and descriptions.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add new columns in <literal>pg_settings</literal>:
|
|
<literal>context</>, <literal>type</>, <literal>source</>,
|
|
<literal>min_val</>, <literal>max_val</> (Joe)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make default <varname>shared_buffers</> 1000 and
|
|
<varname>max_connections</> 100, if possible (Tom)
|
|
</para>
|
|
<para>
|
|
Prior versions defaulted to 64 shared buffers so <productname>PostgreSQL</productname>
|
|
would start on even very old systems. This release tests the
|
|
amount of shared memory allowed by the platform and selects more
|
|
reasonable default values if possible. Of course, users are
|
|
still encouraged to evaluate their resource load and size
|
|
<varname>shared_buffers</varname> accordingly.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
New <filename>pg_hba.conf</filename> record type
|
|
<literal>hostnossl</> to prevent SSL connections (Jon
|
|
Jensen)
|
|
</para>
|
|
<para>
|
|
In prior releases, there was no way to prevent SSL connections
|
|
if both the client and server supported SSL. This option allows
|
|
that capability.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Remove parameter <varname>geqo_random_seed</varname>
|
|
(Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add server parameter <varname>regex_flavor</varname> to control regular expression processing (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <command>pg_ctl</command> better handle nonstandard ports (Greg)
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Query Changes</title>
|
|
|
|
<itemizedlist>
|
|
<listitem><para>New SQL-standard information schema (Peter)</para></listitem>
|
|
<listitem><para>Add read-only transactions (Peter)</para></listitem>
|
|
<listitem><para>Print key name and value in foreign-key violation messages (Dmitry Tkach)</para></listitem>
|
|
|
|
<listitem>
|
|
<para>Allow users to see their own queries in <literal>pg_stat_activity</literal> (Kevin Brown)</para>
|
|
<para>
|
|
In prior releases, only the superuser could see query strings
|
|
using <literal>pg_stat_activity</literal>. Now ordinary users
|
|
can see their own query strings.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Fix aggregates in subqueries to match SQL standard (Tom)</para>
|
|
<para>
|
|
The SQL standard says that an aggregate function appearing
|
|
within a nested subquery belongs to the outer query if its
|
|
argument contains only outer-query variables. Prior
|
|
<productname>PostgreSQL</productname> releases did not handle
|
|
this fine point correctly.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Add option to prevent auto-addition of tables referenced in query (Nigel J. Andrews)</para>
|
|
<para>
|
|
By default, tables mentioned in the query are automatically
|
|
added to the <literal>FROM</> clause if they are not already
|
|
there. This is compatible with historic
|
|
<productname>POSTGRES</productname> behavior but is contrary to
|
|
the SQL standard. This option allows selecting
|
|
standard-compatible behavior.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Allow <literal>UPDATE ... SET col = DEFAULT</literal> (Rod)</para>
|
|
<para>
|
|
This allows <command>UPDATE</command> to set a column to its
|
|
declared default value.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Allow expressions to be used in <literal>LIMIT</>/<literal>OFFSET</> (Tom)</para>
|
|
<para>
|
|
In prior releases, <literal>LIMIT</>/<literal>OFFSET</> could
|
|
only use constants, not expressions.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Implement <literal>CREATE TABLE AS EXECUTE</literal> (Neil, Peter)</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Object Manipulation Changes</title>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Make <command>CREATE SEQUENCE</command> grammar more conforming to SQL:2003 (Neil)</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Add statement-level triggers (Neil)</para>
|
|
<para>
|
|
While this allows a trigger to fire at the end of a statement,
|
|
it does not allow the trigger to access all rows modified by the
|
|
statement. This capability is planned for a future release.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Add check constraints for domains (Rod)</para>
|
|
<para>
|
|
This greatly increases the usefulness of domains by allowing
|
|
them to use check constraints.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Add <command>ALTER DOMAIN</command> (Rod)</para>
|
|
<para>
|
|
This allows manipulation of existing domains.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Fix several zero-column table bugs (Tom)</para>
|
|
<para>
|
|
<productname>PostgreSQL</productname> supports zero-column tables. This fixes various bugs
|
|
that occur when using such tables.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Have <literal>ALTER TABLE ... ADD PRIMARY KEY</literal> add not-null constraint (Rod)</para>
|
|
<para>
|
|
In prior releases, <literal>ALTER TABLE ... ADD
|
|
PRIMARY</literal> would add a unique index, but not a not-null
|
|
constraint. That is fixed in this release.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem><para>Add <literal>ALTER TABLE ... WITHOUT OIDS</literal> (Rod)</para>
|
|
<para>
|
|
This allows control over whether new and updated rows will have
|
|
an OID column. This is most useful for saving storage space.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <literal>ALTER SEQUENCE</literal> to modify minimum, maximum,
|
|
increment, cache, cycle values (Rod)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Add <literal>ALTER TABLE ... CLUSTER ON</literal> (Alvaro Herrera)</para>
|
|
<para>
|
|
This command is used by <command>pg_dump</command> to record the
|
|
cluster column for each table previously clustered. This
|
|
information is used by database-wide cluster to cluster all
|
|
previously clustered tables.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem><para>Improve automatic type casting for domains (Rod, Tom)</para></listitem>
|
|
<listitem><para>Allow dollar signs in identifiers, except as first character (Tom)</para></listitem>
|
|
<listitem><para>Disallow dollar signs in operator names, so <literal>x=$1</> works (Tom)</para></listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow copying table schema using <literal>LIKE
|
|
<replaceable>subtable</replaceable></literal>, also SQL:2003
|
|
feature <literal>INCLUDING DEFAULTS</literal> (Rod)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <literal>WITH GRANT OPTION</literal> clause to
|
|
<command>GRANT</command> (Peter)
|
|
</para>
|
|
<para>
|
|
This enabled <command>GRANT</command> to give other users the
|
|
ability to grant privileges on a object.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Utility Command Changes</title>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Add <literal>ON COMMIT</literal> clause to <command>CREATE TABLE</command> for temporary tables (Gavin)</para>
|
|
<para>
|
|
This adds the ability for a table to be dropped or all rows
|
|
deleted on transaction commit.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Allow cursors outside transactions using <literal>WITH HOLD</literal> (Neil)</para>
|
|
<para>
|
|
In previous releases, cursors were removed at the end of the
|
|
transaction that created them. Cursors can now be created with
|
|
the <literal>WITH HOLD</literal> option, which allows them to
|
|
continue to be accessed after the creating transaction has
|
|
committed.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>FETCH 0</literal> and <literal>MOVE 0 </literal> now do nothing (Bruce)</para>
|
|
<para>
|
|
In previous releases, <literal>FETCH 0</literal> fetched all
|
|
remaining rows, and <literal>MOVE 0</literal> moved to the end
|
|
of the cursor.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Cause <command>FETCH</command> and <command>MOVE</command> to
|
|
return the number of rows fetched/moved, or zero if at the
|
|
beginning/end of cursor, per SQL standard (Bruce)
|
|
</para>
|
|
<para>
|
|
In prior releases, the row count returned by
|
|
<command>FETCH</command> and <command>MOVE</command> did not
|
|
accurately reflect the number of rows processed.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Properly handle <literal>SCROLL</literal> with cursors, or
|
|
report an error (Neil)</para>
|
|
<para>
|
|
Allowing random access (both forward and backward scrolling) to
|
|
some kinds of queries cannot be done without some additional
|
|
work. If <literal>SCROLL</literal> is specified when the cursor
|
|
is created, this additional work will be performed. Furthermore,
|
|
if the cursor has been created with <literal>NO SCROLL</literal>,
|
|
no random access is allowed.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Implement SQL-compatible options <literal>FIRST</>,
|
|
<literal>LAST</>, <literal>ABSOLUTE <replaceable>n</></>,
|
|
<literal>RELATIVE <replaceable>n</></> for
|
|
<command>FETCH</command> and <command>MOVE</command> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Allow <command>EXPLAIN</command> on <command>DECLARE CURSOR</command> (Tom)</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Allow <command>CLUSTER</command> to use index marked as pre-clustered by default (Alvaro Herrera)</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Allow <command>CLUSTER</command> to cluster all tables (Alvaro Herrera)</para>
|
|
<para>
|
|
This allows all previously clustered tables in a database to be
|
|
reclustered with a single command.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem><para>Prevent <command>CLUSTER</command> on partial indexes (Tom)</para></listitem>
|
|
|
|
<listitem><para>Allow DOS and Mac line-endings in <command>COPY</> files (Bruce)</para></listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Disallow literal carriage return as a data value,
|
|
backslash-carriage-return and <literal>\r</> are still allowed
|
|
(Bruce)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><command>COPY</> changes (binary, <literal>\.</>) (Tom)</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Recover from <command>COPY</command> failure cleanly (Tom)</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Prevent possible memory leaks in <command>COPY</command> (Tom)</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Make <command>TRUNCATE</command> transaction-safe (Rod)</para>
|
|
<para>
|
|
<command>TRUNCATE</command> can now be used inside a
|
|
transaction. If the transaction aborts, the changes made by the
|
|
<command>TRUNCATE</command> are automatically rolled back.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow prepare/bind of utility commands like
|
|
<command>FETCH</command> and <command>EXPLAIN</command> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Add <command>EXPLAIN EXECUTE</command> (Neil)</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Improve <command>VACUUM</command> performance on indexes by reducing WAL traffic (Tom)</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Functional indexes have been generalized into indexes on expressions (Tom)</para>
|
|
<para>
|
|
In prior releases, functional indexes only supported a simple
|
|
function applied to one or more column names. This release
|
|
allows any type of scalar expression.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Have <command>SHOW TRANSACTION ISOLATION</command> match input
|
|
to <command>SET TRANSACTION ISOLATION</command>
|
|
(Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Have <command>COMMENT ON DATABASE</command> on nonlocal
|
|
database generate a warning, rather than an error (Rod)
|
|
</para>
|
|
|
|
<para>
|
|
Database comments are stored in database-local tables so
|
|
comments on a database have to be stored in each database.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve reliability of <command>LISTEN</>/<command>NOTIFY</> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Allow <command>REINDEX</command> to reliably reindex nonshared system catalog indexes (Tom)</para>
|
|
<para>
|
|
This allows system tables to be reindexed without the
|
|
requirement of a standalone session, which was necessary in
|
|
previous releases. The only tables that now require a standalone
|
|
session for reindexing are the global system tables
|
|
<literal>pg_database</>, <literal>pg_shadow</>, and
|
|
<literal>pg_group</>.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Data Type and Function Changes</title>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
New server parameter <varname>extra_float_digits</varname> to
|
|
control precision display of floating-point numbers (Pedro
|
|
Ferreira, Tom)
|
|
</para>
|
|
<para>
|
|
This controls output precision which was causing regression
|
|
testing problems.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem><para>Allow <literal>+1300</literal> as a numeric time-zone specifier, for FJST (Tom)</para></listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Remove rarely used functions <function>oidrand</>,
|
|
<function>oidsrand</>, and <function>userfntest</> functions
|
|
(Neil)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Add <function>md5()</> function to main server, already in <filename>contrib/pgcrypto</filename> (Joe)</para>
|
|
<para>
|
|
An MD5 function was frequently requested. For more complex
|
|
encryption capabilities, use
|
|
<filename>contrib/pgcrypto</filename>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem><para>Increase date range of <type>timestamp</type> (John Cochran)</para></listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Change <literal>EXTRACT(EPOCH FROM timestamp)</literal> so
|
|
<type>timestamp without time zone</type> is assumed to be in
|
|
local time, not GMT (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem><para>Trap division by zero in case the operating system doesn't prevent it (Tom)</para></listitem>
|
|
<listitem><para>Change the <type>numeric</type> data type internally to base 10000 (Tom)</para></listitem>
|
|
<listitem><para>New <function>hostmask()</function> function (Greg Wickham)</para></listitem>
|
|
<listitem><para>Fixes for <function>to_char()</function> and <function>to_timestamp()</function> (Karel)</para></listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow functions that can take any argument data type and return
|
|
any data type, using <type>anyelement</type> and
|
|
<type>anyarray</type> (Joe)
|
|
</para>
|
|
<para>
|
|
This allows the creation of functions that can work with any
|
|
data type.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Arrays can now be specified as <literal>ARRAY[1,2,3]</literal>,
|
|
<literal>ARRAY[['a','b'],['c','d']]</literal>, or
|
|
<literal>ARRAY[ARRAY[ARRAY[2]]]</literal> (Joe)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow proper comparisons for arrays, including <literal>ORDER
|
|
BY</literal> and <literal>DISTINCT</literal> support
|
|
(Joe)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem><para>Allow indexes on array columns (Joe)</para></listitem>
|
|
<listitem><para>Allow array concatenation with <literal>||</literal> (Joe)</para></listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <literal>WHERE</literal> qualification
|
|
<literal><replaceable>expr</> <replaceable>op</> ANY/SOME/ALL
|
|
(<replaceable>array_expr</>)</literal> (Joe)
|
|
</para>
|
|
<para>
|
|
This allows arrays to behave like a list of values, for purposes
|
|
like <literal>SELECT * FROM tab WHERE col IN
|
|
(array_val)</literal>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
New array functions <function>array_append</>,
|
|
<function>array_cat</>, <function>array_lower</>,
|
|
<function>array_prepend</>, <function>array_to_string</>,
|
|
<function>array_upper</>, <function>string_to_array</> (Joe)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem><para>Allow user defined aggregates to use polymorphic functions (Joe)</para></listitem>
|
|
<listitem><para>Allow assignments to empty arrays (Joe)</para></listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow 60 in seconds fields of <type>time</type>,
|
|
<type>timestamp</type>, and <type>interval</type> input values
|
|
(Tom)
|
|
</para>
|
|
<para>
|
|
Sixty-second values are needed for leap seconds.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem><para>Allow <type>cidr</type> data type to be cast to <type>text</type> (Tom)</para></listitem>
|
|
|
|
<listitem><para>Disallow invalid time zone names in SET TIMEZONE</para></listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Trim trailing spaces when <type>char</type> is cast to
|
|
<type>varchar</> or <type>text</> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <type>float(<replaceable>p</>)</> measure the precision
|
|
<replaceable>p</> in binary digits, not decimal digits
|
|
(Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Add IPv6 support to the <type>inet</type> and <type>cidr</type> data types (Michael Graff)</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Add <function>family()</function> function to report whether address is IPv4 or IPv6 (Michael Graff)</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Have <literal>SHOW datestyle</literal> generate output similar
|
|
to that used by <literal>SET datestyle</literal> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <literal>EXTRACT(TIMEZONE)</literal> and <literal>SET/SHOW
|
|
TIME ZONE</literal> follow the SQL convention for the sign of
|
|
time zone offsets, i.e., positive is east from UTC (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Fix <literal>date_trunc('quarter', ...)</literal> (Böjthe Zoltán)</para>
|
|
<para>
|
|
Prior releases returned an incorrect value for this function call.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Make <function>initcap()</function> more compatible with Oracle (Mike Nolan)</para>
|
|
<para>
|
|
<function>initcap()</function> now uppercases a letter appearing
|
|
after any non-alphanumeric character, rather than only after
|
|
whitespace.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Allow only <varname>datestyle</varname> field order for date values not in ISO-8601 format (Greg)</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add new <varname>datestyle</varname> values <literal>MDY</>,
|
|
<literal>DMY</>, and <literal>YMD</> to set input field order;
|
|
honor <literal>US</> and <literal>European</> for backward
|
|
compatibility (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
String literals like <literal>'now'</literal> or
|
|
<literal>'today'</literal> will no longer work as a column
|
|
default. Use functions such as <function>now()</function>,
|
|
<function>current_timestamp</function> instead. (change
|
|
required for prepared statements) (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Treat NaN as larger than any other value in <function>min()</>/<function>max()</> (Tom)</para>
|
|
<para>
|
|
NaN was already sorted after ordinary numeric values for most
|
|
purposes, but <function>min()</> and <function>max()</> didn't
|
|
get this right.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Prevent interval from suppressing <literal>:00</literal>
|
|
seconds display</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
New functions <function>pg_get_triggerdef(prettyprint)</function>
|
|
and <function>pg_conversion_is_visible()</function> (Christopher)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Allow time to be specified as <literal>040506</> or <literal>0405</> (Tom)</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Input date order must now be <literal>YYYY-MM-DD</literal> (with 4-digit year) or
|
|
match <varname>datestyle</varname>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <function>pg_get_constraintdef</function> support
|
|
unique, primary-key, and check constraints (Christopher)
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Server-Side Language Changes</title>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
Prevent PL/pgSQL crash when <literal>RETURN NEXT</literal> is
|
|
used on a zero-row record variable (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make PL/Python's <function>spi_execute</function> interface
|
|
handle null values properly (Andrew Bosma)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Allow PL/pgSQL to declare variables of composite types without <literal>%ROWTYPE</literal> (Tom)</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Fix PL/Python's <function>_quote()</function> function to handle big integers</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Make PL/Python an untrusted language, now called <literal>plpythonu</literal> (Kevin Jacobs, Tom)</para>
|
|
<para>
|
|
The Python language no longer supports a restricted execution
|
|
environment, so the trusted version of PL/Python was removed. If
|
|
this situation changes, a version of PL/Python that can be used
|
|
by non-superusers will be readded.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Allow polymorphic PL/pgSQL functions (Joe, Tom)</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Allow polymorphic SQL functions (Joe)</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improved compiled function caching mechanism in PL/pgSQL with
|
|
full support for polymorphism (Joe)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add new parameter <literal>$0</> in PL/pgSQL representing the
|
|
function's actual return type (Joe)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow PL/Tcl and PL/Python to use the same trigger on multiple tables (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fixed PL/Tcl's <function>spi_prepare</function> to accept fully
|
|
qualified type names in the parameter type list
|
|
(Jan)
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>psql Changes</title>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Add <literal>\pset pager always</literal> to always use pager (Greg)</para>
|
|
<para>
|
|
This forces the pager to be used even if the number of rows is
|
|
less than the screen height. This is valuable for rows that
|
|
wrap across several screen rows.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem><para>Improve tab completion (Rod, Ross Reedstrom, Ian Barwick)</para></listitem>
|
|
<listitem><para>Reorder <literal>\?</> help into groupings (Harald Armin Massa, Bruce)</para></listitem>
|
|
<listitem><para>Add backslash commands for listing schemas, casts, and conversions (Christopher)</para></listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<command>\encoding</> now changes based on the server parameter
|
|
<varname>client_encoding</varname> (Tom)
|
|
</para>
|
|
<para>
|
|
In previous versions, <command>\encoding</command> was not aware
|
|
of encoding changes made using <literal>SET
|
|
client_encoding</literal>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Save editor buffer into readline history (Ross)</para>
|
|
<para>
|
|
When <command>\e</> is used to edit a query, the result is saved
|
|
in the readline history for retrieval using the up arrow.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem><para>Improve <command>\d</command> display (Christopher)</para></listitem>
|
|
<listitem><para>Enhance HTML mode to be more standards-conforming (Greg)</para></listitem>
|
|
|
|
<listitem>
|
|
<para>New <command>\set AUTOCOMMIT off</command> capability (Tom)</para>
|
|
<para>
|
|
This takes the place of the removed server parameter <varname>autocommit</varname>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>New <command>\set VERBOSITY</command> to control error detail (Tom)</para>
|
|
<para>
|
|
This controls the new error reporting details.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem><para>New prompt escape sequence <literal>%x</literal> to show transaction status (Tom)</para></listitem>
|
|
<listitem><para>Long options for <application>psql</application> are now available on all platforms</para></listitem>
|
|
</itemizedlist>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>pg_dump Changes</title>
|
|
|
|
<itemizedlist>
|
|
<listitem><para>Multiple pg_dump fixes, including tar format and large objects</para></listitem>
|
|
<listitem><para>Allow pg_dump to dump specific schemas (Neil)</para></listitem>
|
|
|
|
<listitem>
|
|
<para>Make pg_dump preserve column storage characteristics (Christopher)</para>
|
|
<para>
|
|
This preserves <literal>ALTER TABLE ... SET STORAGE</literal> information.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem><para>Make pg_dump preserve <command>CLUSTER</command> characteristics (Christopher)</para></listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Have pg_dumpall use <command>GRANT</>/<command>REVOKE</> to dump database-level privileges (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow pg_dumpall to support the options <option>-a</>,
|
|
<option>-s</>, <option>-x</> of pg_dump (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem><para>Prevent pg_dump from lowercasing identifiers specified on the command line (Tom)</para></listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
pg_dump options <option>--use-set-session-authorization</option>
|
|
and <option>--no-reconnect</option> now do nothing, all dumps
|
|
use <command>SET SESSION AUTHORIZATION</command>
|
|
</para>
|
|
<para>
|
|
pg_dump no longer reconnects to switch users, but instead always
|
|
uses <command>SET SESSION AUTHORIZATION</command>. This will
|
|
reduce password prompting during restores.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Long options for <application>pg_dump</application> are now available on all platforms</para>
|
|
<para>
|
|
<productname>PostgreSQL</productname> now includes its own
|
|
long-option processing routines.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>libpq Changes</title>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
Add function <function>PQfreemem</function> for freeing memory on
|
|
Windows, suggested for <command>NOTIFY</command> (Bruce)
|
|
</para>
|
|
<para>
|
|
Windows requires that memory allocated in a library be freed by
|
|
a function in the same library, hence
|
|
<function>free()</function> doesn't work for freeing memory
|
|
allocated by libpq. <function>PQfreemem</function> is the proper
|
|
way to free libpq memory, especially on Windows, and is
|
|
recommended for other platforms as well.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Document service capability, and add sample file (Bruce)</para>
|
|
<para>
|
|
This allows clients to look up connection information in a
|
|
central file on the client machine.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <function>PQsetdbLogin</function> have the same defaults as
|
|
<function>PQconnectdb</function> (Tom)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem><para>Allow libpq to cleanly fail when result sets are too large (Tom)</para></listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve performance of function <function>PQunescapeBytea</function> (Ben Lamb)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow thread-safe libpq with <filename>configure</filename>
|
|
option <option>--enable-thread-safety</option> (Lee Kindness,
|
|
Philip Yarra)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow function <function>pqInternalNotice</function> to accept a
|
|
format string and arguments instead of just a preformatted
|
|
message (Tom, Sean Chittenden)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Control SSL negotiation with <literal>sslmode</literal> values
|
|
<literal>disable</literal>, <literal>allow</literal>,
|
|
<literal>prefer</literal>, and <literal>require</literal> (Jon
|
|
Jensen)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Allow new error codes and levels of text (Tom)</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Allow access to the underlying table and column of a query result (Tom)</para>
|
|
<para>
|
|
This is helpful for query-builder applications that want to know
|
|
the underlying table and column names associated with a specific
|
|
result set.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem><para>Allow access to the current transaction status (Tom)</para></listitem>
|
|
<listitem><para>Add ability to pass binary data directly to the server (Tom)</para></listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add function <function>PQexecPrepared</function> and
|
|
<function>PQsendQueryPrepared</function> functions which perform
|
|
bind/execute of previously prepared statements (Tom)
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>JDBC Changes</title>
|
|
|
|
<itemizedlist>
|
|
<listitem><para>Allow <function>setNull</function> on updateable result sets</para></listitem>
|
|
<listitem><para>Allow <function>executeBatch</function> on a prepared statement (Barry)</para></listitem>
|
|
<listitem><para>Support SSL connections (Barry)</para></listitem>
|
|
<listitem><para>Handle schema names in result sets (Paul Sorenson)</para></listitem>
|
|
<listitem><para>Add refcursor support (Nic Ferrier)</para></listitem>
|
|
</itemizedlist>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Miscellaneous Interface Changes</title>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Prevent possible memory leak or core dump during libpgtcl shutdown (Tom)</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Add Informix compatibility to ECPG (Michael)</para>
|
|
<para>
|
|
This allows ECPG to process embedded C programs that were
|
|
written using certain Informix extensions.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Add type <type>decimal</type> to ECPG that is fixed length, for Informix (Michael)</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow thread-safe embedded SQL programs with
|
|
<filename>configure</filename> option
|
|
<option>--enable-thread-safety</option> (Lee Kindness, Bruce)
|
|
</para>
|
|
<para>
|
|
This allows multiple threads to access the database at the same
|
|
time.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Moved Python client PyGreSQL to <ulink url="http://www.pygresql.org"></ulink> (Marc)</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Source Code Changes</title>
|
|
|
|
<itemizedlist>
|
|
<listitem><para>Prevent need for separate platform geometry regression result files (Tom)</para></listitem>
|
|
<listitem><para>Improved PPC locking primitive (Reinhard Max)</para></listitem>
|
|
<listitem><para>New function <function>palloc0</function> to allocate and clear memory (Bruce)</para></listitem>
|
|
<listitem><para>Fix locking code for s390x CPU (64-bit) (Tom)</para></listitem>
|
|
<listitem><para>Allow OpenBSD to use local ident credentials (William Ahern)</para></listitem>
|
|
<listitem><para>Make query plan trees read-only to executor (Tom)</para></listitem>
|
|
<listitem><para>Add Darwin startup scripts (David Wheeler)</para></listitem>
|
|
<listitem><para>Allow libpq to compile with Borland C++ compiler (Lester Godwin, Karl Waclawek)</para></listitem>
|
|
<listitem><para>Use our own version of <function>getopt_long()</function> if needed (Peter)</para></listitem>
|
|
<listitem><para>Convert administration scripts to C (Peter)</para></listitem>
|
|
<listitem><para> Bison >= 1.85 is now required to build the <productname>PostgreSQL</> grammar, if building from CVS</para></listitem>
|
|
<listitem><para>Merge documentation into one book (Peter)</para></listitem>
|
|
<listitem><para>Add Windows compatibility functions (Bruce)</para></listitem>
|
|
<listitem><para>Allow client interfaces to compile under MinGW (Bruce)</para></listitem>
|
|
<listitem><para>New <function>ereport()</function> function for error reporting (Tom)</para></listitem>
|
|
<listitem><para>Support Intel compiler on Linux (Peter)</para></listitem>
|
|
<listitem><para>Improve Linux startup scripts (Slawomir Sudnik, Darko Prenosil)</para></listitem>
|
|
<listitem><para>Add support for AMD Opteron and Itanium (Jeffrey W. Baker, Bruce)</para></listitem>
|
|
<listitem>
|
|
<para>Remove <option>--enable-recode</option> option from <command>configure</command></para>
|
|
<para>
|
|
This was no longer needed now that we have <command>CREATE CONVERSION</command>.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Generate a compile error if spinlock code is not found (Bruce)</para>
|
|
<para>
|
|
Platforms without spinlock code will now fail to compile, rather
|
|
than silently using semaphores. This failure can be disabled
|
|
with a new <command>configure</command> option.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Contrib Changes</title>
|
|
|
|
<itemizedlist>
|
|
<listitem><para>Change dbmirror license to BSD</para></listitem>
|
|
<listitem><para>Improve earthdistance (Bruno Wolff III)</para></listitem>
|
|
<listitem><para>Portability improvements to pgcrypto (Marko Kreen)</para></listitem>
|
|
<listitem><para>Prevent crash in xml (John Gray, Michael Richards)</para></listitem>
|
|
<listitem><para>Update oracle</para></listitem>
|
|
<listitem><para>Update mysql</para></listitem>
|
|
<listitem><para>Update cube (Bruno Wolff III)</para></listitem>
|
|
<listitem><para>Update earthdistance to use cube (Bruno Wolff III)</para></listitem>
|
|
<listitem><para>Update btree_gist (Oleg)</para></listitem>
|
|
<listitem><para>New tsearch2 full-text search module (Oleg, Teodor)</para></listitem>
|
|
<listitem><para>Add hash-based crosstab function to tablefuncs (Joe)</para></listitem>
|
|
<listitem><para>Add serial column to order <function>connectby()</> siblings in tablefuncs (Nabil Sayegh,Joe)</para></listitem>
|
|
<listitem><para>Add named persistent connections to dblink (Shridhar Daithanka)</para></listitem>
|
|
<listitem><para>New pg_autovacuum allows automatic <command>VACUUM</command> (Matthew T. O'Connor)</para></listitem>
|
|
<listitem><para>Make pgbench honor environment variables <envar>PGHOST</>, <envar>PGPORT</>, <envar>PGUSER</> (Tatsuo)</para></listitem>
|
|
<listitem><para>Improve intarray (Teodor Sigaev)</para></listitem>
|
|
<listitem><para>Improve pgstattuple (Rod)</para></listitem>
|
|
<listitem><para>Fix bug in <function>metaphone()</function> in fuzzystrmatch</para></listitem>
|
|
<listitem><para>Improve adddepend (Rod)</para></listitem>
|
|
<listitem><para>Update spi/timetravel (Böjthe Zoltán)</para></listitem>
|
|
<listitem><para>Fix dbase <option>-s</> option and improve non-ASCII handling (Thomas Behr, Márcio Smiderle)</para></listitem>
|
|
<listitem><para>Remove array module because features now included by default (Joe)</para></listitem>
|
|
</itemizedlist>
|
|
</sect3>
|
|
</sect2>
|
|
</sect1>
|