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