4955 lines
126 KiB
Plaintext
4955 lines
126 KiB
Plaintext
<!-- $PostgreSQL: pgsql/doc/src/sgml/release-8.4.sgml,v 1.18 2010/05/12 23:20:49 tgl Exp $ -->
|
||
<!-- See header comment in release.sgml about typical markup -->
|
||
|
||
<sect1 id="release-8-4-4">
|
||
<title>Release 8.4.4</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2010-05-17</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.4.3.
|
||
For information about new features in the 8.4 major release, see
|
||
<xref linkend="release-8-4">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.4.4</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.4.X.
|
||
However, if you are upgrading from a version earlier than 8.4.2,
|
||
see the release notes for 8.4.2.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix error during WAL replay of <literal>ALTER ... SET TABLESPACE</>
|
||
(Tom)
|
||
</para>
|
||
|
||
<para>
|
||
When <varname>archive_mode</> is on, <literal>ALTER ... SET TABLESPACE</>
|
||
generates a WAL record whose replay logic was incorrect. It could write
|
||
the data to the wrong place, leading to possibly-unrecoverable data
|
||
corruption. Data corruption would be observed on standby slaves, and
|
||
could occur on the master as well if a database crash and recovery
|
||
occurred after committing the <literal>ALTER</> and before the next
|
||
checkpoint.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix possible crash if a cache reset message is received during
|
||
rebuild of a relcache entry (Heikki)
|
||
</para>
|
||
|
||
<para>
|
||
This error was introduced in 8.4.3 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 constraint exclusion for inherited <command>UPDATE</> and
|
||
<command>DELETE</> target tables when
|
||
<varname>constraint_exclusion</> = <literal>partition</> (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Due to an oversight, this setting previously only caused constraint
|
||
exclusion to be checked in <command>SELECT</> commands.
|
||
</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>
|
||
Fix erroneous handling of <literal>%r</> parameter in
|
||
<varname>recovery_end_command</> (Heikki)
|
||
</para>
|
||
|
||
<para>
|
||
The value always came out zero.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Ensure the archiver process responds to changes in
|
||
<varname>archive_command</> as soon as possible (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix pl/pgsql's <literal>CASE</> statement to not fail when the
|
||
case expression is a query that returns no rows (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>
|
||
Handle empty-string connect parameters properly in ecpg (Michael)
|
||
</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>
|
||
Avoid formatting failure in <application>psql</> when running in a
|
||
locale context that doesn't match the <varname>client_encoding</>
|
||
(Tom)
|
||
</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-4-3">
|
||
<title>Release 8.4.3</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2010-03-15</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.4.2.
|
||
For information about new features in the 8.4 major release, see
|
||
<xref linkend="release-8-4">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.4.3</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.4.X.
|
||
However, if you are upgrading from a version earlier than 8.4.2,
|
||
see the release notes for 8.4.2.
|
||
</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 crash due to overenthusiastic invalidation of cached
|
||
plan for <command>ROLLBACK</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix possible crashes when trying to recover from a failure in
|
||
subtransaction start (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix server memory leak associated with use of savepoints and a client
|
||
encoding different from server's encoding (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix incorrect WAL data emitted during end-of-recovery cleanup of a GIST
|
||
index page split (Yoichi Hirai)
|
||
</para>
|
||
|
||
<para>
|
||
This would result in index corruption, or even more likely an error
|
||
during WAL replay, if we were unlucky enough to crash during
|
||
end-of-recovery cleanup after having completed an incomplete GIST
|
||
insertion.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix bug in WAL redo cleanup method for GIN indexes (Heikki)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix incorrect comparison of scan key in GIN index search (Teodor)
|
||
</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 bug occurring when trying to inline a SQL function that returns
|
||
a set of a composite type that contains dropped columns (Tom)
|
||
</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>
|
||
Avoid failure when <command>EXPLAIN</> has to print a FieldStore or
|
||
assignment ArrayRef expression (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
These cases can arise now that <command>EXPLAIN VERBOSE</> tries to
|
||
print plan node target lists.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Avoid an unnecessary coercion failure in some cases where an undecorated
|
||
literal string appears in a subquery within
|
||
<command>UNION</>/<command>INTERSECT</>/<command>EXCEPT</> (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This fixes a regression for some cases that worked before 8.4.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Avoid undesirable rowtype compatibility check failures in some cases
|
||
where a whole-row Var has a rowtype that contains dropped columns (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>
|
||
Always pass the catalog ID to an option validator function specified in
|
||
<command>CREATE FOREIGN DATA WRAPPER</> (Martin Pihlak)
|
||
</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>
|
||
Add support for doing <literal>FULL JOIN ON FALSE</> (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This prevents a regression from pre-8.4 releases for some queries that
|
||
can now be simplified to a constant-false join condition.
|
||
</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>
|
||
Prevent treating an <literal>INOUT</> cast as representing binary
|
||
compatibility (Heikki)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Include column name in the message when warning about inability to
|
||
grant or revoke column-level privileges (Stephen Frost)
|
||
</para>
|
||
|
||
<para>
|
||
This is more useful than before and helps to prevent confusion when
|
||
a <command>REVOKE</> generates multiple messages, which formerly
|
||
appeared to be duplicates.
|
||
</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>
|
||
Protect <application>ecpg</> against applications freeing strings
|
||
unexpectedly (Michael)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <application>ecpg</> report the proper SQLSTATE if the connection
|
||
disappears (Michael)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix translation of cell contents in <application>psql</> <literal>\d</>
|
||
output (Heikki)
|
||
</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>
|
||
Fix a small per-query memory leak in <application>psql</> (Tom)
|
||
</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 <application>pg_dump</>'s output of permissions for foreign servers
|
||
(Heikki)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix possible crash in parallel <application>pg_restore</> due to
|
||
out-of-range dependency IDs (Tom)
|
||
</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 <function>ExecutorEnd</> from being run on portals created
|
||
within a failed transaction or subtransaction (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This is known to cause issues when using
|
||
<filename>contrib/auto_explain</>.
|
||
</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>
|
||
Make the configure script report failure if the C compiler does
|
||
not provide a working 64-bit integer datatype (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This case has been broken for some time, and no longer seems worth
|
||
supporting, so just reject it at configure time instead.
|
||
</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-4-2">
|
||
<title>Release 8.4.2</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2009-12-14</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.4.1.
|
||
For information about new features in the 8.4 major release, see
|
||
<xref linkend="release-8-4">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.4.2</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.4.X.
|
||
However, if you have any hash indexes,
|
||
you should <command>REINDEX</> them after updating to 8.4.2,
|
||
to repair possible damage.
|
||
</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 hash index corruption (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
The 8.4 change that made hash indexes keep entries sorted by hash value
|
||
failed to update the bucket splitting and compaction routines to
|
||
preserve the ordering. So application of either of those operations
|
||
could lead to permanent corruption of an index, in the sense that
|
||
searches might fail to find entries that are present. To deal with
|
||
this, it is recommended to <literal>REINDEX</> any hash indexes you may
|
||
have after installing this update.
|
||
</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 crash if a <literal>DROP</> is attempted on an internally-dependent
|
||
object (Tom)
|
||
</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 memory leak in postmaster when re-parsing <filename>pg_hba.conf</>
|
||
(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>
|
||
Make <literal>FOR UPDATE/SHARE</> in the primary query not propagate
|
||
into <literal>WITH</> queries (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
For example, in
|
||
<programlisting>
|
||
WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE
|
||
</programlisting>
|
||
the <literal>FOR UPDATE</> will now affect <literal>bar</> but not
|
||
<literal>foo</>. This is more useful and consistent than the original
|
||
8.4 behavior, which tried to propagate <literal>FOR UPDATE</> into the
|
||
<literal>WITH</> query but always failed due to assorted implementation
|
||
restrictions. It also follows the design rule that <literal>WITH</>
|
||
queries are executed as if independent of the main query.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix bug with a <literal>WITH RECURSIVE</> query immediately inside
|
||
another one (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix concurrency bug in hash indexes (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Concurrent insertions could cause index scans to transiently report
|
||
wrong results.
|
||
</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>
|
||
Fix wrong search results for a multi-column GIN index with
|
||
<literal>fastupdate</> enabled (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix bugs in WAL entry creation for GIN indexes (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
These bugs were masked when <varname>full_page_writes</> was on, but
|
||
with it off a WAL replay failure was certain if a crash occurred before
|
||
the next checkpoint.
|
||
</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>
|
||
Ensure that domain constraints are enforced in constructs like
|
||
<literal>ARRAY[...]::domain</>, where the domain is over an array type
|
||
(Heikki)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix foreign-key logic for some cases involving composite-type columns
|
||
as foreign keys (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Ensure that a cursor's snapshot is not modified after it is created
|
||
(Alvaro)
|
||
</para>
|
||
|
||
<para>
|
||
This could lead to a cursor delivering wrong results if later operations
|
||
in the same transaction modify the data the cursor is supposed to return.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <literal>CREATE TABLE</> to properly merge default expressions
|
||
coming from different inheritance parent tables (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This used to work but was broken in 8.4.
|
||
</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>
|
||
Fix incorrect plan construction when using hash aggregation to implement
|
||
<literal>DISTINCT</> for textually identical volatile expressions (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix Assert failure for a volatile <literal>SELECT DISTINCT ON</>
|
||
expression (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <function>ts_stat()</> to not fail on an empty <type>tsvector</>
|
||
value (Tom)
|
||
</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>
|
||
Fix <application>ecpg</> problem with comments in <literal>DECLARE
|
||
CURSOR</> statements (Michael)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <application>ecpg</> to not treat recently-added keywords as
|
||
reserved words (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This affected the keywords <literal>CALLED</>, <literal>CATALOG</>,
|
||
<literal>DEFINER</>, <literal>ENUM</>, <literal>FOLLOWING</>,
|
||
<literal>INVOKER</>, <literal>OPTIONS</>, <literal>PARTITION</>,
|
||
<literal>PRECEDING</>, <literal>RANGE</>, <literal>SECURITY</>,
|
||
<literal>SERVER</>, <literal>UNBOUNDED</>, and <literal>WRAPPER</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Re-allow regular expression special characters in <application>psql</>'s
|
||
<literal>\df</> function name parameter (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
In <filename>contrib/fuzzystrmatch</>, correct the calculation of
|
||
<function>levenshtein</> distances with non-default costs (Marcin Mank)
|
||
</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>
|
||
Put <literal>FREEZE</> and <literal>VERBOSE</> options in the right
|
||
order in the <literal>VACUUM</> command that
|
||
<filename>contrib/vacuumdb</> produces (Heikki)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix possible leak of connections when <filename>contrib/dblink</>
|
||
encounters an error (Tatsuhito Kasahara)
|
||
</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</> 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-4-1">
|
||
<title>Release 8.4.1</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2009-09-09</simpara>
|
||
</note>
|
||
|
||
<para>
|
||
This release contains a variety of fixes from 8.4.
|
||
For information about new features in the 8.4 major release, see
|
||
<xref linkend="release-8-4">.
|
||
</para>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.4.1</title>
|
||
|
||
<para>
|
||
A dump/restore is not required for those running 8.4.X.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix WAL page header initialization at the end of archive recovery
|
||
(Heikki)
|
||
</para>
|
||
|
||
<para>
|
||
This could lead to failure to process the WAL in a subsequent
|
||
archive recovery.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <quote>cannot make new WAL entries during recovery</> error (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix problem that could make expired rows visible after a crash (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This bug involved a page status bit potentially not being set
|
||
correctly after a server crash.
|
||
</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>
|
||
Make window function <literal>PARTITION BY</> and <literal>ORDER BY</>
|
||
items always be interpreted as simple expressions (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
In 8.4.0 these lists were parsed following the rules used for
|
||
top-level <literal>GROUP BY</> and <literal>ORDER BY</> lists.
|
||
But this was not correct per the SQL standard, and it led to possible
|
||
circularity.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix several errors in planning of semi-joins (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
These led to wrong query results in some cases where <literal>IN</>
|
||
or <literal>EXISTS</> was used together with another join.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix handling of whole-row references to subqueries that are within
|
||
an outer join (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
An example is
|
||
<literal>SELECT COUNT(ss.*) FROM ... LEFT JOIN (SELECT ...) ss ON ...</>.
|
||
Here, <literal>ss.*</> would be treated as <literal>ROW(NULL,NULL,...)</>
|
||
for null-extended join rows, which is not the same as a simple NULL.
|
||
Now it is treated as a simple NULL.
|
||
</para>
|
||
</listitem>
|
||
|
||
<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>
|
||
Fix locale handling with plperl (Heikki)
|
||
</para>
|
||
|
||
<para>
|
||
This bug could cause the server's locale setting to change when a
|
||
plperl function is called, leading to data corruption.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix handling of reloptions to ensure setting one option doesn't
|
||
force default values for others (Itagaki Takahiro)
|
||
</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 memory leak for <function>array_agg()</> in <literal>GROUP BY</>
|
||
queries (Tom)
|
||
</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>
|
||
Include the fractional part in the result of
|
||
<function>EXTRACT(second)</> and
|
||
<function>EXTRACT(milliseconds)</> for
|
||
<type>time</> and <type>time with time zone</> inputs (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This has always worked for floating-point datetime configurations,
|
||
but was broken in the integer datetime code.
|
||
</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>
|
||
Improve performance when processing toasted values in index scans (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This is particularly useful for <ulink
|
||
url="http://postgis.refractions.net/">PostGIS</ulink>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix a typo that disabled <varname>commit_delay</> (Jeff Janes)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Output early-startup messages to <filename>postmaster.log</> if the
|
||
server is started in silent mode (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Previously such error messages were discarded, leading to
|
||
difficulty in debugging.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove translated FAQs (Peter)
|
||
</para>
|
||
|
||
<para>
|
||
They are now on the <ulink
|
||
url="http://wiki.postgresql.org/wiki/FAQ">wiki</ulink>. The
|
||
main FAQ was moved to the wiki some time ago.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <application>pg_ctl</> to not go into an infinite loop if
|
||
<filename>postgresql.conf</> is empty (Jeff Davis)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix several errors in <application>pg_dump</>'s
|
||
<literal>--binary-upgrade</> mode (Bruce, Tom)
|
||
</para>
|
||
|
||
<para>
|
||
<literal>pg_dump --binary-upgrade</> is used by pg_migrator.
|
||
</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>
|
||
Work around gcc bug that causes <quote>floating-point exception</>
|
||
instead of <quote>division by zero</> on some platforms (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Update time zone data files to <application>tzdata</> release 2009l
|
||
for DST law changes in Bangladesh, Egypt, Mauritius.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="release-8-4">
|
||
<title>Release 8.4</title>
|
||
|
||
<note>
|
||
<title>Release date</title>
|
||
<simpara>2009-07-01</simpara>
|
||
</note>
|
||
|
||
<sect2>
|
||
<title>Overview</title>
|
||
|
||
<para>
|
||
After many years of development, <productname>PostgreSQL</> has
|
||
become feature-complete in many areas. This release shows a
|
||
targeted approach to adding features (e.g., authentication,
|
||
monitoring, space reuse), and adds capabilities defined in the
|
||
later SQL standards. The major areas of enhancement are:
|
||
</para>
|
||
|
||
<itemizedlist>
|
||
|
||
<!-- This list duplicates items below, but without authors or details-->
|
||
|
||
<listitem>
|
||
<para>
|
||
Windowing Functions
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Common Table Expressions and Recursive Queries
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Default and variadic parameters for functions
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Parallel Restore
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Column Permissions
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Per-database locale settings
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improved hash indexes
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improved join performance for <literal>EXISTS</> and <literal>NOT EXISTS</> queries
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Easier-to-use Warm Standby
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Automatic sizing of the Free Space Map
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Visibility Map (greatly reduces vacuum overhead for slowly-changing tables)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Version-aware psql (backslash commands work against older servers)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support SSL certificates for user authentication
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Per-function runtime statistics
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Easy editing of functions in psql
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
New contrib modules: pg_stat_statements, auto_explain, citext, btree_gin
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
<para>
|
||
The above items are explained in more detail in the sections below.
|
||
</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Migration to Version 8.4</title>
|
||
|
||
<para>
|
||
A dump/restore using <application>pg_dump</application> is
|
||
required for those wishing to migrate data from any previous
|
||
release.
|
||
</para>
|
||
|
||
<para>
|
||
Observe the following incompatibilities:
|
||
</para>
|
||
|
||
<sect3>
|
||
<title>General</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Use 64-bit integer datetimes by default (Neil Conway)
|
||
</para>
|
||
|
||
<para>
|
||
Previously this was selected by <application>configure</>'s
|
||
<option>--enable-integer-datetimes</> option. To retain
|
||
the old behavior, build with <option>--disable-integer-datetimes</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove <application>ipcclean</> utility command (Bruce)
|
||
</para>
|
||
|
||
<para>
|
||
The utility only worked on a few platforms. Users should use
|
||
their operating system tools instead.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Server Settings</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Change default setting for
|
||
<literal>log_min_messages</> to <literal>warning</> (previously
|
||
it was <literal>notice</>) to reduce log file volume (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Change default setting for <literal>max_prepared_transactions</> to
|
||
zero (previously it was 5) (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <literal>debug_print_parse</>, <literal>debug_print_rewritten</>,
|
||
and <literal>debug_print_plan</>
|
||
output appear at <literal>LOG</> message level, not
|
||
<literal>DEBUG1</> as formerly (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <literal>debug_pretty_print</> default to <literal>on</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove <varname>explain_pretty_print</> parameter (no longer needed) (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <varname>log_temp_files</> settable by superusers only, like other
|
||
logging options (Simon Riggs)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove automatic appending of the epoch timestamp when no <literal>%</>
|
||
escapes are present in <literal>log_filename</> (Robert Haas)
|
||
</para>
|
||
|
||
<para>
|
||
This change was made because some users wanted a fixed log filename,
|
||
for use with an external log rotation tool.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove <varname>log_restartpoints</> from <filename>recovery.conf</>;
|
||
instead use <varname>log_checkpoints</> (Simon)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove <varname>krb_realm</> and <varname>krb_server_hostname</>;
|
||
these are now set in <filename>pg_hba.conf</> instead (Magnus)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
There are also significant changes in <link
|
||
linkend="release-8-4-pg-hba-conf"><filename>pg_hba.conf</></link>,
|
||
as described below.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Queries</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Change <command>TRUNCATE</> and <command>LOCK</> to
|
||
apply to child tables of the specified table(s) (Peter)
|
||
</para>
|
||
|
||
<para>
|
||
These commands now accept an <literal>ONLY</> option that prevents
|
||
processing child tables; this option must be used if the old
|
||
behavior is needed.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<command>SELECT DISTINCT</> and
|
||
<literal>UNION</>/<literal>INTERSECT</>/<literal>EXCEPT</>
|
||
no longer always produce sorted output (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Previously, these types of queries always removed duplicate rows
|
||
by means of Sort/Unique processing (i.e., sort then remove adjacent
|
||
duplicates). Now they can be implemented by hashing, which will not
|
||
produce sorted output. If an application relied on the output being
|
||
in sorted order, the recommended fix is to add an <literal>ORDER BY</>
|
||
clause. As a short-term workaround, the previous behavior can be
|
||
restored by disabling <literal>enable_hashagg</>, but that is a very
|
||
performance-expensive fix. <literal>SELECT DISTINCT ON</> never uses
|
||
hashing, however, so its behavior is unchanged.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Force child tables to inherit <literal>CHECK</> constraints from parents
|
||
(Alex Hunsaker, Nikhil Sontakke, Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Formerly it was possible to drop such a constraint from a child
|
||
table, allowing rows that violate the constraint to be visible
|
||
when scanning the parent table. This was deemed inconsistent,
|
||
as well as contrary to SQL standard.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Disallow negative <literal>LIMIT</> or <literal>OFFSET</>
|
||
values, rather than treating them as zero (Simon)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Disallow <command>LOCK TABLE</> outside a transaction block
|
||
(Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Such an operation is useless because the lock would be released
|
||
immediately.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Sequences now contain an additional <structfield>start_value</> column
|
||
(Zoltan Boszormenyi)
|
||
</para>
|
||
|
||
<para>
|
||
This supports <command>ALTER SEQUENCE ... RESTART</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
|
||
<sect3>
|
||
<title>Functions and Operators</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <type>numeric</> zero raised to a fractional power return
|
||
<literal>0</>, rather than throwing an error, and make
|
||
<type>numeric</> zero raised to the zero power return <literal>1</>,
|
||
rather than error (Bruce)
|
||
</para>
|
||
|
||
<para>
|
||
This matches the longstanding <type>float8</> behavior.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow unary minus of floating-point values to produce minus zero (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
The changed behavior is more <acronym>IEEE</>-standard
|
||
compliant.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Throw an error if an escape character is the last character in
|
||
a <literal>LIKE</> pattern (i.e., it has nothing to escape) (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Previously, such an escape character was silently ignored,
|
||
thus possibly masking application logic errors.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove <literal>~=~</> and <literal>~<>~</> operators
|
||
formerly used for <literal>LIKE</> index comparisons (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Pattern indexes now use the regular equality operator.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<function>xpath()</> now passes its arguments to <application>libxml</>
|
||
without any changes (Andrew)
|
||
</para>
|
||
|
||
<para>
|
||
This means that the XML argument must be a well-formed XML document.
|
||
The previous coding attempted to allow XML fragments, but it did not
|
||
work well.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <function>xmlelement()</> format attribute values just like
|
||
content values (Peter)
|
||
</para>
|
||
|
||
<para>
|
||
Previously, attribute values were formatted according to the
|
||
normal SQL output behavior, which is sometimes at odds with
|
||
XML rules.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Rewrite memory management for <application>libxml</>-using functions
|
||
(Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This change should avoid some compatibility problems with use of
|
||
<application>libxml</> in PL/Perl and other add-on code.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Adopt a faster algorithm for hash functions (Kenneth Marshall,
|
||
based on work of Bob Jenkins)
|
||
</para>
|
||
|
||
<para>
|
||
Many of the built-in hash functions now deliver different results on
|
||
little-endian and big-endian platforms.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
<sect4>
|
||
<title>Temporal Functions and Operators</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
<varname>DateStyle</> no longer controls <type>interval</> output
|
||
formatting; instead there is a new variable <varname>IntervalStyle</>
|
||
(Ron Mayer)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve consistency of handling of fractional seconds in
|
||
<type>timestamp</> and <type>interval</> output (Ron Mayer)
|
||
</para>
|
||
|
||
<para>
|
||
This may result in displaying a different number of fractional
|
||
digits than before, or rounding instead of truncating.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <function>to_char()</>'s localized month/day names depend
|
||
on <varname>LC_TIME</>, not <varname>LC_MESSAGES</> (Euler
|
||
Taveira de Oliveira)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Cause <function>to_date()</> and <function>to_timestamp()</>
|
||
to more consistently report errors for invalid input (Brendan
|
||
Jurd)
|
||
</para>
|
||
|
||
<para>
|
||
Previous versions would often ignore or silently misread input
|
||
that did not match the format string. Such cases will now
|
||
result in an error.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <function>to_timestamp()</> to not require upper/lower case
|
||
matching for meridian (<literal>AM</>/<literal>PM</>) and era
|
||
(<literal>BC</>/<literal>AD</>) format designations (Brendan
|
||
Jurd)
|
||
</para>
|
||
|
||
<para>
|
||
For example, input value <literal>ad</> now matches the format
|
||
string <literal>AD</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
</sect3>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Changes</title>
|
||
|
||
<para>
|
||
Below you will find a detailed account of the changes between
|
||
<productname>PostgreSQL</productname> 8.4 and the previous major
|
||
release.
|
||
</para>
|
||
|
||
<sect3>
|
||
<title>Performance</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve optimizer statistics calculations (Jan Urbanski, Tom)
|
||
</para>
|
||
|
||
<para>
|
||
In particular, estimates for full-text-search operators are
|
||
greatly improved.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <command>SELECT DISTINCT</> and
|
||
<literal>UNION</>/<literal>INTERSECT</>/<literal>EXCEPT</> to
|
||
use hashing (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This means that these types of queries no longer automatically
|
||
produce sorted output.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Create explicit concepts of semi-joins and anti-joins (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This work formalizes our previous ad-hoc treatment of <literal>IN
|
||
(SELECT ...)</> clauses, and extends it to <literal>EXISTS</> and
|
||
<literal>NOT EXISTS</> clauses. It should result in significantly
|
||
better planning of <literal>EXISTS</> and <literal>NOT EXISTS</>
|
||
queries. In general, logically equivalent <literal>IN</> and
|
||
<literal>EXISTS</> clauses should now have similar performance,
|
||
whereas previously <literal>IN</> often won.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve optimization of sub-selects beneath outer joins (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Formerly, a sub-select or view could not be optimized very well if it
|
||
appeared within the nullable side of an outer join and contained
|
||
non-strict expressions (for instance, constants) in its result list.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve the performance of <function>text_position()</> and
|
||
related functions by using Boyer-Moore-Horspool searching (David
|
||
Rowley)
|
||
</para>
|
||
|
||
<para>
|
||
This is particularly helpful for long search patterns.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Reduce I/O load of writing the statistics collection file
|
||
by writing the file only when requested (Martin Pihlak)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve performance for bulk inserts (Robert Haas, Simon)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Increase the default value of <varname>default_statistics_target</>
|
||
from <literal>10</> to <literal>100</> (Greg Sabino Mullane,
|
||
Tom)
|
||
</para>
|
||
|
||
<para>
|
||
The maximum value was also increased from <literal>1000</> to
|
||
<literal>10000</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Perform <varname>constraint_exclusion</> checking by default
|
||
in queries involving inheritance or <literal>UNION ALL</> (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
A new <varname>constraint_exclusion</> setting,
|
||
<literal>partition</>, was added to specify this behavior.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow I/O read-ahead for bitmap index scans (Greg Stark)
|
||
</para>
|
||
|
||
<para>
|
||
The amount of read-ahead is controlled by
|
||
<varname>effective_io_concurrency</>. This feature is available only
|
||
if the kernel has <function>posix_fadvise()</> support.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Inline simple set-returning <acronym>SQL</> functions in
|
||
<literal>FROM</> clauses (Richard Rowell)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve performance of multi-batch hash joins by providing a special
|
||
case for join key values that are especially common in the outer
|
||
relation (Bryce Cutt, Ramon Lawrence)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Reduce volume of temporary data in multi-batch hash joins
|
||
by suppressing <quote>physical tlist</> optimization (Michael
|
||
Henderson, Ramon Lawrence)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Avoid waiting for idle-in-transaction sessions during
|
||
<command>CREATE INDEX CONCURRENTLY</> (Simon)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve performance of shared cache invalidation (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Server</title>
|
||
|
||
<sect4>
|
||
<title>Settings</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Convert many <filename>postgresql.conf</> settings to enumerated
|
||
values so that <literal>pg_settings</> can display the valid
|
||
values (Magnus)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <varname>cursor_tuple_fraction</> parameter to control the
|
||
fraction of a cursor's rows that the planner assumes will be
|
||
fetched (Robert Hell)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow underscores in the names of custom variable
|
||
classes in <filename>postgresql.conf</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
<sect4>
|
||
<title>Authentication and security</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove support for the (insecure) <literal>crypt</> authentication method
|
||
(Magnus)
|
||
</para>
|
||
|
||
<para>
|
||
This effectively obsoletes pre-<productname>PostgreSQL</> 7.2 client
|
||
libraries, as there is no longer any non-plaintext password method that
|
||
they can use.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support regular expressions in <filename>pg_ident.conf</>
|
||
(Magnus)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <productname>Kerberos</>/<acronym>GSSAPI</> parameters
|
||
to be changed without restarting the postmaster (Magnus)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support <acronym>SSL</> certificate chains in server certificate
|
||
file (Andrew Gierth)
|
||
</para>
|
||
|
||
<para>
|
||
Including the full certificate chain makes the client able
|
||
to verify the certificate without having all intermediate CA
|
||
certificates present in the local store, which is often the case for
|
||
commercial CAs.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Report appropriate error message for combination of <literal>MD5</>
|
||
authentication and <varname>db_user_namespace</> enabled (Bruce)
|
||
</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
<sect4 id="release-8-4-pg-hba-conf">
|
||
<title><filename>pg_hba.conf</></title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Change all authentication options to use <literal>name=value</>
|
||
syntax (Magnus)
|
||
</para>
|
||
|
||
<para>
|
||
This makes incompatible changes to the <literal>ldap</>,
|
||
<literal>pam</> and <literal>ident</> authentication methods. All
|
||
<filename>pg_hba.conf</> entries with these methods need to be
|
||
rewritten using the new format.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove the <literal>ident sameuser</> option, instead making that
|
||
behavior the default if no usermap is specified (Magnus)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow a usermap parameter for all external authentication methods
|
||
(Magnus)
|
||
</para>
|
||
|
||
<para>
|
||
Previously a usermap was only supported for <literal>ident</>
|
||
authentication.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <literal>clientcert</> option to control requesting of a
|
||
client certificate (Magnus)
|
||
</para>
|
||
|
||
<para>
|
||
Previously this was controlled by the presence of a root
|
||
certificate file in the server's data directory.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <literal>cert</> authentication method to allow
|
||
<emphasis>user</> authentication via <acronym>SSL</> certificates
|
||
(Magnus)
|
||
</para>
|
||
|
||
<para>
|
||
Previously <acronym>SSL</> certificates could only verify that
|
||
the client had access to a certificate, not authenticate a
|
||
user.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <literal>krb5</>, <literal>gssapi</> and <literal>sspi</>
|
||
realm and <literal>krb5</> host settings to be specified in
|
||
<filename>pg_hba.conf</> (Magnus)
|
||
</para>
|
||
|
||
<para>
|
||
These override the settings in <filename>postgresql.conf</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <varname>include_realm</> parameter for <literal>krb5</>,
|
||
<literal>gssapi</>, and <literal>sspi</> methods (Magnus)
|
||
</para>
|
||
|
||
<para>
|
||
This allows identical usernames from different realms to be
|
||
authenticated as different database users using usermaps.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Parse <filename>pg_hba.conf</> fully when it is loaded,
|
||
so that errors are reported immediately (Magnus)
|
||
</para>
|
||
|
||
<para>
|
||
Previously, most errors in the file wouldn't be detected until clients
|
||
tried to connect, so an erroneous file could render the system
|
||
unusable. With the new behavior, if an error is detected during
|
||
reload then the bad file is rejected and the postmaster continues
|
||
to use its old copy.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Show all parsing errors in <filename>pg_hba.conf</> instead of
|
||
aborting after the first one (Selena Deckelmann)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support <literal>ident</> authentication over Unix-domain sockets
|
||
on <productname>Solaris</> (Garick Hamlin)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
<sect4>
|
||
<title>Continuous Archiving</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Provide an option to <function>pg_start_backup()</> to force its
|
||
implied checkpoint to finish as quickly as possible (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
The default behavior avoids excess I/O consumption, but that is
|
||
pointless if no concurrent query activity is going on.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <function>pg_stop_backup()</> wait for modified <acronym>WAL</>
|
||
files to be archived (Simon)
|
||
</para>
|
||
|
||
<para>
|
||
This guarantees that the backup is valid at the time
|
||
<function>pg_stop_backup()</> completes.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
When archiving is enabled, rotate the last WAL segment at shutdown
|
||
so that all transactions can be archived immediately
|
||
(Guillaume Smet, Heikki)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Delay <quote>smart</> shutdown while a continuous archiving base backup
|
||
is in progress (Laurenz Albe)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Cancel a continuous archiving base backup if <quote>fast</> shutdown
|
||
is requested (Laurenz Albe)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <filename>recovery.conf</> boolean variables to take the
|
||
same range of string values as <filename>postgresql.conf</>
|
||
boolean variables
|
||
(Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
<sect4>
|
||
<title>Monitoring</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>pg_conf_load_time()</> to report when
|
||
the <productname>PostgreSQL</> configuration files were last loaded
|
||
(George Gensure)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>pg_terminate_backend()</> to safely terminate a
|
||
backend (the <literal>SIGTERM</> signal works also) (Tom, Bruce)
|
||
</para>
|
||
|
||
<para>
|
||
While it's always been possible to <literal>SIGTERM</> a single
|
||
backend, this was previously considered unsupported; and testing
|
||
of the case found some bugs that are now fixed.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add ability to track user-defined functions' call counts and
|
||
runtimes (Martin Pihlak)
|
||
</para>
|
||
|
||
<para>
|
||
Function statistics appear in a new system view,
|
||
<literal>pg_stat_user_functions</>. Tracking is controlled
|
||
by the new parameter <varname>track_functions</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow specification of the maximum query string size in
|
||
<literal>pg_stat_activity</> via new
|
||
<varname>track_activity_query_size</> parameter (Thomas Lee)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Increase the maximum line length sent to <application>syslog</>, in
|
||
hopes of improving performance (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add read-only configuration variables <varname>segment_size</>,
|
||
<varname>wal_block_size</>, and <varname>wal_segment_size</>
|
||
(Bernd Helmle)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
When reporting a deadlock, report the text of all queries involved
|
||
in the deadlock to the server log (Itagaki Takahiro)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>pg_stat_get_activity(pid)</> function to return
|
||
information about a specific process id (Magnus)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow the location of the server's statistics file to be specified
|
||
via <varname>stats_temp_directory</> (Magnus)
|
||
</para>
|
||
|
||
<para>
|
||
This allows the statistics file to be placed in a
|
||
<acronym>RAM</>-resident directory to reduce I/O requirements.
|
||
On startup/shutdown, the file is copied to its traditional location
|
||
(<literal>$PGDATA/global/</>) so it is preserved across restarts.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Queries</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add support for <literal>WINDOW</> functions (Hitoshi Harada)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add support for <literal>WITH</> clauses (CTEs), including <literal>WITH
|
||
RECURSIVE</> (Yoshiyuki Asaba, Tatsuo Ishii, Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <command>TABLE</> command (Peter)
|
||
</para>
|
||
|
||
<para>
|
||
<literal>TABLE tablename</> is a SQL standard short-hand for
|
||
<literal>SELECT * FROM tablename</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <literal>AS</> to be optional when specifying a
|
||
<command>SELECT</> (or <literal>RETURNING</>) column output
|
||
label (Hiroshi Saito)
|
||
</para>
|
||
|
||
<para>
|
||
This works so long as the column label is not any
|
||
<productname>PostgreSQL</> keyword; otherwise <literal>AS</> is still
|
||
needed.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support set-returning functions in <command>SELECT</> result lists
|
||
even for functions that return their result via a tuplestore (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
In particular, this means that functions written in PL/PgSQL
|
||
and other PL languages can now be called this way.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support set-returning functions in the output of aggregation
|
||
and grouping queries (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <command>SELECT FOR UPDATE</>/<literal>SHARE</> to work
|
||
on inheritance trees (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add infrastructure for <acronym>SQL/MED</> (Martin Pihlak,
|
||
Peter)
|
||
</para>
|
||
|
||
<para>
|
||
There are no remote or external <acronym>SQL/MED</> capabilities
|
||
yet, but this change provides a standardized and future-proof
|
||
system for managing connection information for modules like
|
||
<filename>dblink</> and <filename>plproxy</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Invalidate cached plans when referenced schemas, functions, operators,
|
||
or operator classes are modified (Martin Pihlak, Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This improves the system's ability to respond to on-the-fly
|
||
DDL changes.
|
||
</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>
|
||
Allow comparison of composite types and allow arrays of
|
||
anonymous composite types (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This allows constructs such as
|
||
<literal>row(1, 1.1) = any (array[row(7, 7.7), row(1, 1.0)])</>.
|
||
This is particularly useful in recursive queries.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add support for Unicode string literal and identifier specifications
|
||
using code points, e.g. <literal>U&'d\0061t\+000061'</>
|
||
(Peter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Reject <literal>\000</> in string literals and <command>COPY</> data
|
||
(Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Previously, this was accepted but had the effect of terminating
|
||
the string contents.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve the parser's ability to report error locations (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
An error location is now reported for many semantic errors,
|
||
such as mismatched datatypes, that previously could not be localized.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
<sect4>
|
||
<title><command>TRUNCATE</></title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support statement-level <literal>ON TRUNCATE</> triggers (Simon)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <literal>RESTART</>/<literal>CONTINUE IDENTITY</> options
|
||
for <command>TRUNCATE TABLE</>
|
||
(Zoltan Boszormenyi)
|
||
</para>
|
||
|
||
<para>
|
||
The start value of a sequence can be changed by <command>ALTER
|
||
SEQUENCE START WITH</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <command>TRUNCATE tab1, tab1</> to succeed (Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add a separate <command>TRUNCATE</> permission (Robert Haas)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
<sect4>
|
||
<title><command>EXPLAIN</></title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <command>EXPLAIN VERBOSE</> show the output columns of each
|
||
plan node (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Previously <command>EXPLAIN VERBOSE</> output an internal
|
||
representation of the query plan. (That behavior is now
|
||
available via <varname>debug_print_plan</>.)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <command>EXPLAIN</> identify subplans and initplans with
|
||
individual labels (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <command>EXPLAIN</> honor <varname>debug_print_plan</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <command>EXPLAIN</> on <command>CREATE TABLE AS</> (Peter)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
<sect4>
|
||
<title><literal>LIMIT</>/<literal>OFFSET</></title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow sub-selects in <literal>LIMIT</> and <literal>OFFSET</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <acronym>SQL</>-standard syntax for
|
||
<literal>LIMIT</>/<literal>OFFSET</> capabilities (Peter)
|
||
</para>
|
||
|
||
<para>
|
||
To wit,
|
||
<literal>OFFSET num {ROW|ROWS} FETCH {FIRST|NEXT} [num] {ROW|ROWS}
|
||
ONLY</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Object Manipulation</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add support for column-level privileges (Stephen Frost, KaiGai
|
||
Kohei)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Refactor multi-object <command>DROP</> operations to reduce the
|
||
need for <literal>CASCADE</> (Alex Hunsaker)
|
||
</para>
|
||
|
||
<para>
|
||
For example, if table <literal>B</> has a dependency on table
|
||
<literal>A</>, the command <literal>DROP TABLE A, B</> no longer
|
||
requires the <literal>CASCADE</> option.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix various problems with concurrent <command>DROP</> commands
|
||
by ensuring that locks are taken before we begin to drop dependencies
|
||
of an object (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve reporting of dependencies during <command>DROP</>
|
||
commands (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <literal>WITH [NO] DATA</> clause to <command>CREATE TABLE
|
||
AS</>, per the <acronym>SQL</> standard (Peter, Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add support for user-defined I/O conversion casts (Heikki)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <command>CREATE AGGREGATE</> to use an <type>internal</>
|
||
transition datatype (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <literal>LIKE</> clause to <command>CREATE TYPE</> (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This simplifies creation of data types that use the same internal
|
||
representation as an existing type.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow specification of the type category and <quote>preferred</>
|
||
status for user-defined base types (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This allows more control over the coercion behavior of user-defined
|
||
types.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <command>CREATE OR REPLACE VIEW</> to add columns to the
|
||
end of a view (Robert Haas)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
<sect4>
|
||
<title><command>ALTER</></title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <command>ALTER TYPE RENAME</> (Petr Jelinek)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <command>ALTER SEQUENCE ... RESTART</> (with no parameter) to
|
||
reset a sequence to its initial value (Zoltan Boszormenyi)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Modify the <command>ALTER TABLE</> syntax to allow all reasonable
|
||
combinations for tables, indexes, sequences, and views (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This change allows the following new syntaxes:
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>
|
||
<command>ALTER SEQUENCE OWNER TO</>
|
||
</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>
|
||
<command>ALTER VIEW ALTER COLUMN SET/DROP DEFAULT</>
|
||
</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>
|
||
<command>ALTER VIEW OWNER TO</>
|
||
</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>
|
||
<command>ALTER VIEW SET SCHEMA</>
|
||
</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
|
||
There is no actual new functionality here, but formerly
|
||
you had to say <command>ALTER TABLE</> to do these things,
|
||
which was confusing.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add support for the syntax <command>ALTER TABLE ... ALTER COLUMN
|
||
... SET DATA TYPE</> (Peter)
|
||
</para>
|
||
|
||
<para>
|
||
This is <acronym>SQL</>-standard syntax for functionality that
|
||
was already supported.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <command>ALTER TABLE SET WITHOUT OIDS</> rewrite the table
|
||
to physically remove <type>OID</> values (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Also, add <command>ALTER TABLE SET WITH OIDS</> to rewrite the
|
||
table to add <type>OID</>s.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
<sect4>
|
||
<title>Database Manipulation</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve reporting of
|
||
<command>CREATE</>/<command>DROP</>/<command>RENAME DATABASE</>
|
||
failure when uncommitted prepared transactions are the cause
|
||
(Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <varname>LC_COLLATE</> and <varname>LC_CTYPE</> into
|
||
per-database settings (Radek Strnad, Heikki)
|
||
</para>
|
||
|
||
<para>
|
||
This makes collation similar to encoding, which was always
|
||
configurable per database.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve checks that the database encoding, collation
|
||
(<varname>LC_COLLATE</>), and character classes
|
||
(<varname>LC_CTYPE</>) match (Heikki, Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Note in particular that a new database's encoding and locale
|
||
settings can be changed only when copying from <literal>template0</>.
|
||
This prevents possibly copying data that doesn't match the settings.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <command>ALTER DATABASE SET TABLESPACE</> to move a database
|
||
to a new tablespace (Guillaume Lelarge, Bernd Helmle)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Utility Operations</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add a <literal>VERBOSE</> option to the <command>CLUSTER</> command and
|
||
<application>clusterdb</> (Jim Cox)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Decrease memory requirements for recording pending trigger
|
||
events (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
<sect4>
|
||
<title>Indexes</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Dramatically improve the speed of building and accessing hash
|
||
indexes (Tom Raney, Shreya Bhargava)
|
||
</para>
|
||
|
||
<para>
|
||
This allows hash indexes to be sometimes faster than btree
|
||
indexes. However, hash indexes are still not crash-safe.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make hash indexes store only the hash code, not the full value of
|
||
the indexed column (Xiao Meng)
|
||
</para>
|
||
|
||
<para>
|
||
This greatly reduces the size of hash indexes for long indexed
|
||
values, improving performance.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Implement fast update option for GIN indexes (Teodor, Oleg)
|
||
</para>
|
||
|
||
<para>
|
||
This option greatly improves update speed at a small penalty in search
|
||
speed.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<literal>xxx_pattern_ops</> indexes can now be used for simple
|
||
equality comparisons, not only for <literal>LIKE</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
<sect4>
|
||
<title>Full Text Indexes</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove the requirement to use <literal>@@@</> when doing
|
||
<acronym>GIN</> weighted lookups on full text indexes (Tom, Teodor)
|
||
</para>
|
||
|
||
<para>
|
||
The normal <literal>@@</> text search operator can be used
|
||
instead.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add an optimizer selectivity function for <literal>@@</> text
|
||
search operations (Jan Urbanski)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow prefix matching in full text searches (Teodor Sigaev,
|
||
Oleg Bartunov)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support multi-column <acronym>GIN</> indexes (Teodor Sigaev)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve support for Nepali language and Devanagari alphabet (Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
<sect4>
|
||
<title><command>VACUUM</></title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Track free space in separate per-relation <quote>fork</> files (Heikki)
|
||
</para>
|
||
|
||
<para>
|
||
Free space discovered by <command>VACUUM</> is now recorded in
|
||
<filename>*_fsm</> files, rather than in a fixed-sized shared memory
|
||
area. The <varname>max_fsm_pages</> and <varname>max_fsm_relations</>
|
||
settings have been removed, greatly simplifying administration of
|
||
free space management.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add a visibility map to track pages that do not require
|
||
vacuuming (Heikki)
|
||
</para>
|
||
|
||
<para>
|
||
This allows <command>VACUUM</> to avoid scanning all of
|
||
a table when only a portion of the table needs vacuuming.
|
||
The visibility map is stored in per-relation <quote>fork</> files.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <varname>vacuum_freeze_table_age</> parameter to control
|
||
when <command>VACUUM</> should ignore the visibility map and
|
||
do a full table scan to freeze tuples (Heikki)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Track transaction snapshots more carefully (Alvaro)
|
||
</para>
|
||
|
||
<para>
|
||
This improves <command>VACUUM</>'s ability to reclaim space
|
||
in the presence of long-running transactions.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add ability to specify per-relation autovacuum and <acronym>TOAST</>
|
||
parameters in <command>CREATE TABLE</> (Alvaro, Euler Taveira de
|
||
Oliveira)
|
||
</para>
|
||
|
||
<para>
|
||
Autovacuum options used to be stored in a system table.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <literal>--freeze</> option to <application>vacuumdb</>
|
||
(Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Data Types</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add a <literal>CaseSensitive</> option for text search synonym
|
||
dictionaries (Simon)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve the precision of <type>NUMERIC</> division (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add basic arithmetic operators for <type>int2</> with <type>int8</>
|
||
(Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This eliminates the need for explicit casting in some situations.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <type>UUID</> input to accept an optional hyphen after
|
||
every fourth digit (Robert Haas)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <literal>on</>/<literal>off</> as input for the boolean data type
|
||
(Itagaki Takahiro)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow spaces around <literal>NaN</> in the input string for
|
||
type <type>numeric</> (Sam Mason)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
<sect4>
|
||
<title>Temporal Data Types</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Reject year <literal>0 BC</> and years <literal>000</> and
|
||
<literal>0000</> (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Previously these were interpreted as <literal>1 BC</>.
|
||
(Note: years <literal>0</> and <literal>00</> are still assumed to be
|
||
the year 2000.)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Include <literal>SGT</> (Singapore time) in the default list of
|
||
known time zone abbreviations (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support <literal>infinity</> and <literal>-infinity</> as
|
||
values of type <type>date</> (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make parsing of <type>interval</> literals more standard-compliant
|
||
(Tom, Ron Mayer)
|
||
</para>
|
||
|
||
<para>
|
||
For example, <literal>INTERVAL '1' YEAR</> now does what it's
|
||
supposed to.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <type>interval</> fractional-seconds precision to be specified
|
||
after the <literal>second</> keyword, for <acronym>SQL</> standard
|
||
compliance (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Formerly the precision had to be specified after the keyword
|
||
<type>interval</>. (For backwards compatibility, this syntax is still
|
||
supported, though deprecated.) Data type definitions will now be
|
||
output using the standard format.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support the <acronym>IS0 8601</> <type>interval</> syntax (Ron
|
||
Mayer, Kevin Grittner)
|
||
</para>
|
||
|
||
<para>
|
||
For example, <literal>INTERVAL 'P1Y2M3DT4H5M6.7S'</> is now
|
||
supported.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <varname>IntervalStyle</> parameter
|
||
which controls how <type>interval</> values are output (Ron Mayer)
|
||
</para>
|
||
|
||
<para>
|
||
Valid values are: <literal>postgres</>, <literal>postgres_verbose</>,
|
||
<literal>sql_standard</>, <literal>iso_8601</>. This setting also
|
||
controls the handling of negative <type>interval</> input when only
|
||
some fields have positive/negative designations.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve consistency of handling of fractional seconds in
|
||
<type>timestamp</> and <type>interval</> output (Ron Mayer)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
<sect4>
|
||
<title>Arrays</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve the handling of casts applied to <literal>ARRAY[]</>
|
||
constructs, such as <literal>ARRAY[...]::integer[]</>
|
||
(Brendan Jurd)
|
||
</para>
|
||
|
||
<para>
|
||
Formerly <productname>PostgreSQL</> attempted to determine a data type
|
||
for the <literal>ARRAY[]</> construct without reference to the ensuing
|
||
cast. This could fail unnecessarily in many cases, in particular when
|
||
the <literal>ARRAY[]</> construct was empty or contained only
|
||
ambiguous entries such as <literal>NULL</>. Now the cast is consulted
|
||
to determine the type that the array elements must be.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <acronym>SQL</>-syntax <type>ARRAY</> dimensions optional
|
||
to match the <acronym>SQL</> standard (Peter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>array_ndims()</> to return the number
|
||
of dimensions of an array (Robert Haas)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>array_length()</> to return the length
|
||
of an array for a specified dimension (Jim Nasby, Robert
|
||
Haas, Peter Eisentraut)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add aggregate function <function>array_agg()</>, which
|
||
returns all aggregated values as a single array (Robert Haas,
|
||
Jeff Davis, Peter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>unnest()</>, which converts an array to
|
||
individual row values (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This is the opposite of <function>array_agg()</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>array_fill()</> to create arrays initialized with
|
||
a value (Pavel Stehule)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>generate_subscripts()</> to simplify generating
|
||
the range of an array's subscripts (Pavel Stehule)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
<sect4>
|
||
<title>Wide-Value Storage (<acronym>TOAST</>)</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Consider <acronym>TOAST</> compression on values as short as
|
||
32 bytes (previously 256 bytes) (Greg Stark)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Require 25% minimum space savings before using <acronym>TOAST</>
|
||
compression (previously 20% for small values and any-savings-at-all
|
||
for large values) (Greg)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve <acronym>TOAST</> heuristics for rows that have a mix of large
|
||
and small toastable fields, so that we prefer to push large values out
|
||
of line and don't compress small values unnecessarily (Greg, Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Functions</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Document that <function>setseed()</> allows values from
|
||
<literal>-1</> to <literal>1</> (not just <literal>0</> to
|
||
<literal>1</>), and enforce the valid range (Kris Jurka)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add server-side function <function>lo_import(filename, oid)</>
|
||
(Tatsuo)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>quote_nullable()</>, which behaves like
|
||
<function>quote_literal()</> but returns the string <literal>NULL</> for
|
||
a null argument (Brendan Jurd)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve full text search <function>headline()</> function to
|
||
allow extracting several fragments of text (Sushant Sinha)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>suppress_redundant_updates_trigger()</> trigger
|
||
function to avoid overhead for non-data-changing updates (Andrew)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>div(numeric, numeric)</> to perform <type>numeric</>
|
||
division without rounding (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <type>timestamp</> and <type>timestamptz</> versions of
|
||
<function>generate_series()</> (Hitoshi Harada)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
<sect4>
|
||
<title>Object Information Functions</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Implement <function>current_query()</> for use by functions
|
||
that need to know the currently running query (Tomas Doran)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>pg_get_keywords()</> to return a list of the
|
||
parser keywords (Dave Page)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>pg_get_functiondef()</> to see a function's
|
||
definition (Abhijit Menon-Sen)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow the second argument of <function>pg_get_expr()</> to be zero
|
||
when deparsing an expression that does not contain variables (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Modify <function>pg_relation_size()</> to use <literal>regclass</>
|
||
(Heikki)
|
||
</para>
|
||
|
||
<para>
|
||
<function>pg_relation_size(data_type_name)</> no longer works.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <literal>boot_val</> and <literal>reset_val</> columns to
|
||
<literal>pg_settings</> output (Greg Smith)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add source file name and line number columns to
|
||
<literal>pg_settings</> output for variables set in a configuration
|
||
file (Magnus, Alvaro)
|
||
</para>
|
||
|
||
<para>
|
||
For security reasons, these columns are only visible to superusers.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add support for <varname>CURRENT_CATALOG</>,
|
||
<varname>CURRENT_SCHEMA</>, <varname>SET CATALOG</>, <varname>SET
|
||
SCHEMA</> (Peter)
|
||
</para>
|
||
|
||
<para>
|
||
These provide <acronym>SQL</>-standard syntax for existing features.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>pg_typeof()</> which returns the data type
|
||
of any value (Brendan Jurd)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <function>version()</> return information about whether
|
||
the server is a 32- or 64-bit binary (Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix the behavior of information schema columns
|
||
<structfield>is_insertable_into</> and <structfield>is_updatable</> to
|
||
be consistent (Peter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve the behavior of information schema
|
||
<structfield>datetime_precision</> columns (Peter)
|
||
</para>
|
||
|
||
<para>
|
||
These columns now show zero for <type>date</> columns, and 6
|
||
(the default precision) for <type>time</>, <type>timestamp</>, and
|
||
<type>interval</> without a declared precision, rather than showing
|
||
null as formerly.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Convert remaining builtin set-returning functions to use
|
||
<literal>OUT</> parameters (Jaime Casanova)
|
||
</para>
|
||
|
||
<para>
|
||
This makes it possible to call these functions without specifying
|
||
a column list: <function>pg_show_all_settings()</>,
|
||
<function>pg_lock_status()</>, <function>pg_prepared_xact()</>,
|
||
<function>pg_prepared_statement()</>, <function>pg_cursor()</>
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <function>pg_*_is_visible()</> and
|
||
<function>has_*_privilege()</> functions return <literal>NULL</>
|
||
for invalid OIDs, rather than reporting an error (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Extend <function>has_*_privilege()</> functions to allow inquiring
|
||
about the OR of multiple privileges in one call (Stephen
|
||
Frost, Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>has_column_privilege()</> and
|
||
<function>has_any_column_privilege()</> functions (Stephen
|
||
Frost, Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
<sect4>
|
||
<title>Function Creation</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support variadic functions (functions with a variable number
|
||
of arguments) (Pavel Stehule)
|
||
</para>
|
||
|
||
<para>
|
||
Only trailing arguments can be optional, and they all must be
|
||
of the same data type.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support default values for function arguments (Pavel Stehule)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <command>CREATE FUNCTION ... RETURNS TABLE</> clause (Pavel
|
||
Stehule)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <acronym>SQL</>-language functions to return the output
|
||
of an <command>INSERT</>/<command>UPDATE</>/<command>DELETE</>
|
||
<literal>RETURNING</> clause (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
<sect4>
|
||
<title>PL/PgSQL Server-Side Language</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support <literal>EXECUTE USING</> for easier insertion of data
|
||
values into a dynamic query string (Pavel Stehule)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow looping over the results of a cursor using a <literal>FOR</>
|
||
loop (Pavel Stehule)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support <literal>RETURN QUERY EXECUTE</> (Pavel
|
||
Stehule)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve the <literal>RAISE</> command (Pavel Stehule)
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>
|
||
Support <literal>DETAIL</> and <literal>HINT</> fields
|
||
</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>
|
||
Support specification of the <literal>SQLSTATE</> error code
|
||
</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>
|
||
Support an exception name parameter
|
||
</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>
|
||
Allow <literal>RAISE</> without parameters in an exception
|
||
block to re-throw the current error
|
||
</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow specification of <varname>SQLSTATE</> codes
|
||
in <literal>EXCEPTION</> lists (Pavel Stehule)
|
||
</para>
|
||
|
||
<para>
|
||
This is useful for handling custom <varname>SQLSTATE</> codes.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support the <literal>CASE</> statement (Pavel Stehule)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <command>RETURN QUERY</> set the special <literal>FOUND</> and
|
||
<command>GET DIAGNOSTICS</> <literal>ROW_COUNT</> variables
|
||
(Pavel Stehule)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <command>FETCH</> and <command>MOVE</> set the
|
||
<command>GET DIAGNOSTICS</> <literal>ROW_COUNT</> variable
|
||
(Andrew Gierth)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <command>EXIT</> without a label always exit the innermost
|
||
loop (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Formerly, if there were a <literal>BEGIN</> block more closely nested
|
||
than any loop, it would exit that block instead. The new behavior
|
||
matches Oracle(TM) and is also what was previously stated by our own
|
||
documentation.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make processing of string literals and nested block comments
|
||
match the main SQL parser's processing (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
In particular, the format string in <command>RAISE</> now works
|
||
the same as any other string literal, including being subject
|
||
to <varname>standard_conforming_strings</>. This change also
|
||
fixes other cases in which valid commands would fail when
|
||
<varname>standard_conforming_strings</> is on.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Avoid memory leakage when the same function is called at varying
|
||
exception-block nesting depths (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Client Applications</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <literal>pg_ctl restart</> to preserve command-line arguments
|
||
(Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <literal>-w</>/<literal>--no-password</> option that
|
||
prevents password prompting in all utilities that have a
|
||
<literal>-W</>/<literal>--password</> option (Peter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove <option>-q</> (quiet) option of <application>createdb</>,
|
||
<application>createuser</>, <application>dropdb</>,
|
||
<application>dropuser</> (Peter)
|
||
</para>
|
||
|
||
<para>
|
||
These options have had no effect since <productname>PostgreSQL</>
|
||
8.3.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
<sect4>
|
||
<title><application>psql</></title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove verbose startup banner; now just suggest <literal>help</>
|
||
(Joshua Drake)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <literal>help</> show common backslash commands (Greg
|
||
Sabino Mullane)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <literal>\pset format wrapped</> mode to wrap output to the
|
||
screen width, or file/pipe output too if <literal>\pset columns</>
|
||
is set (Bryce Nesbitt)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow all supported spellings of boolean values in <command>\pset</>,
|
||
rather than just <literal>on</> and <literal>off</> (Bruce)
|
||
</para>
|
||
|
||
<para>
|
||
Formerly, any string other than <quote>off</> was silently taken
|
||
to mean <literal>true</>. <application>psql</> will now complain
|
||
about unrecognized spellings (but still take them as <literal>true</>).
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Use the pager for wide output (Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Require a space between a one-letter backslash command and its first
|
||
argument (Bernd Helmle)
|
||
</para>
|
||
|
||
<para>
|
||
This removes a historical source of ambiguity.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve tab completion support for schema-qualified and
|
||
quoted identifiers (Greg Sabino Mullane)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add optional <literal>on</>/<literal>off</> argument for
|
||
<command>\timing</> (David Fetter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Display access control rights on multiple lines (Brendan
|
||
Jurd, Andreas Scherbaum)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <command>\l</> show database access privileges (Andrew Gilligan)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <command>\l+</> show database sizes, if permissions
|
||
allow (Andrew Gilligan)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add the <command>\ef</> command to edit function definitions
|
||
(Abhijit Menon-Sen)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
<sect4>
|
||
<title><application>psql</> \d* commands</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <command>\d*</> commands that do not have a pattern argument
|
||
show system objects only if the <literal>S</> modifier is specified
|
||
(Greg Sabino Mullane, Bruce)
|
||
</para>
|
||
|
||
<para>
|
||
The former behavior was inconsistent across different variants
|
||
of <command>\d</>, and in most cases it provided no easy way to see
|
||
just user objects.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve <command>\d*</> commands to work with older
|
||
<productname>PostgreSQL</> server versions (back to 7.4),
|
||
not only the current server version
|
||
(Guillaume Lelarge)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <command>\d</> show foreign-key constraints that reference
|
||
the selected table (Kenneth D'Souza)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <command>\d</> on a sequence show its column values
|
||
(Euler Taveira de Oliveira)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add column storage type and other relation options to the
|
||
<command>\d+</> display (Gregory Stark, Euler Taveira de
|
||
Oliveira)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Show relation size in <command>\dt+</> output (Dickson S.
|
||
Guedes)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Show the possible values of <literal>enum</> types in <command>\dT+</>
|
||
(David Fetter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <command>\dC</> to accept a wildcard pattern, which matches
|
||
either datatype involved in the cast (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add a function type column to <command>\df</>'s output, and add
|
||
options to list only selected types of functions (David Fetter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <command>\df</> not hide functions that take or return
|
||
type <type>cstring</> (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Previously, such functions were hidden because most of them are
|
||
datatype I/O functions, which were deemed uninteresting. The new
|
||
policy about hiding system functions by default makes this wart
|
||
unnecessary.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
<sect4>
|
||
<title><application>pg_dump</></title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add a <literal>--no-tablespaces</> option to
|
||
<application>pg_dump</>/<application>pg_dumpall</>/<application>pg_restore</>
|
||
so that dumps can be restored to clusters that have non-matching
|
||
tablespace layouts (Gavin Roy)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove <option>-d</> and <option>-D</> options from
|
||
<application>pg_dump</> and <application>pg_dumpall</> (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
These options were too frequently confused with the option to
|
||
select a database name in other <productname>PostgreSQL</>
|
||
client applications. The functionality is still available,
|
||
but you must now spell out the long option name
|
||
<option>--inserts</> or <option>--column-inserts</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove <option>-i</>/<option>--ignore-version</> option from
|
||
<application>pg_dump</> and <application>pg_dumpall</> (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Use of this option does not throw an error, but it has no
|
||
effect. This option was removed because the version checks
|
||
are necessary for safety.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Disable <varname>statement_timeout</> during dump and restore
|
||
(Joshua Drake)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <application>pg_dump</>/<application>pg_dumpall</> option
|
||
<option>--lock-wait-timeout</> (David Gould)
|
||
</para>
|
||
|
||
<para>
|
||
This allows dumps to fail if unable to acquire a shared lock
|
||
within the specified amount of time.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Reorder <application>pg_dump</> <literal>--data-only</> output
|
||
to dump tables referenced by foreign keys before
|
||
the referencing tables (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This allows data loads when foreign keys are already present.
|
||
If circular references make a safe ordering impossible, a
|
||
<literal>NOTICE</> is issued.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <application>pg_dump</>, <application>pg_dumpall</>, and
|
||
<application>pg_restore</> to use a specified role (Benedek
|
||
L<>szl<7A>)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow <application>pg_restore</> to use multiple concurrent
|
||
connections to do the restore (Andrew)
|
||
</para>
|
||
|
||
<para>
|
||
The number of concurrent connections is controlled by the option
|
||
<literal>--jobs</>. This is supported only for custom-format archives.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Programming Tools</title>
|
||
|
||
<sect4>
|
||
<title><application>libpq</></title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow the <type>OID</> to be specified when importing a large
|
||
object, via new function <function>lo_import_with_oid()</> (Tatsuo)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <quote>events</> support (Andrew Chernow, Merlin Moncure)
|
||
</para>
|
||
|
||
<para>
|
||
This adds the ability to register callbacks to manage private
|
||
data associated with <structname>PGconn</> and <structname>PGresult</>
|
||
objects.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve error handling to allow the return of multiple
|
||
error messages as multi-line error reports (Magnus)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <function>PQexecParams()</> and related functions return
|
||
<varname>PGRES_EMPTY_QUERY</> for an empty query (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
They previously returned <varname>PGRES_COMMAND_OK</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Document how to avoid the overhead of <function>WSACleanup()</>
|
||
on Windows (Andrew Chernow)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Do not rely on Kerberos tickets to determine the default database
|
||
username (Magnus)
|
||
</para>
|
||
|
||
<para>
|
||
Previously, a Kerberos-capable build of libpq would use the
|
||
principal name from any available Kerberos ticket as default
|
||
database username, even if the connection wasn't using Kerberos
|
||
authentication. This was deemed inconsistent and confusing.
|
||
The default username is now determined the same way with or
|
||
without Kerberos. Note however that the database username must still
|
||
match the ticket when Kerberos authentication is used.
|
||
</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
<sect4>
|
||
<title><application>libpq</> <acronym>SSL</> (Secure Sockets Layer)
|
||
support</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix certificate validation for <acronym>SSL</> connections
|
||
(Magnus)
|
||
</para>
|
||
|
||
<para>
|
||
<application>libpq</> now supports verifying both the certificate
|
||
and the name of the server when making <acronym>SSL</>
|
||
connections. If a root certificate is not available to use for
|
||
verification, <acronym>SSL</> connections will fail. The
|
||
<literal>sslmode</> parameter is used to enable certificate
|
||
verification and set the level of checking.
|
||
The default is still not to do any verification, allowing connections
|
||
to SSL-enabled servers without requiring a root certificate on the
|
||
client.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support wildcard server certificates (Magnus)
|
||
</para>
|
||
|
||
<para>
|
||
If a certificate <acronym>CN</> starts with <literal>*</>, it will
|
||
be treated as a wildcard when matching the hostname, allowing the
|
||
use of the same certificate for multiple servers.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow the file locations for client certificates to be specified
|
||
(Mark Woodward, Alvaro, Magnus)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add a <function>PQinitOpenSSL</> function to allow greater control
|
||
over OpenSSL/libcrypto initialization (Andrew Chernow)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <application>libpq</> unregister its <application>OpenSSL</>
|
||
callbacks when no database connections remain open
|
||
(Bruce, Magnus, Russell Smith)
|
||
</para>
|
||
|
||
<para>
|
||
This is required for applications that unload the libpq library,
|
||
otherwise invalid <application>OpenSSL</> callbacks will remain.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
<sect4>
|
||
<title><application>ecpg</></title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add localization support for messages (Euler Taveira de
|
||
Oliveira)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
ecpg parser is now automatically generated from the server
|
||
parser (Michael)
|
||
</para>
|
||
|
||
<para>
|
||
Previously the ecpg parser was hand-maintained.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
<sect4>
|
||
<title>Server Programming Interface (<acronym>SPI</>)</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add support for single-use plans with out-of-line
|
||
parameters (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add new <varname>SPI_OK_REWRITTEN</> return code for
|
||
<function>SPI_execute()</> (Heikki)
|
||
</para>
|
||
|
||
<para>
|
||
This is used when a command is rewritten to another type of
|
||
command.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Remove unnecessary inclusions from <filename>executor/spi.h</> (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
SPI-using modules might need to add some <literal>#include</>
|
||
lines if they were depending on <filename>spi.h</> to include
|
||
things for them.
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect4>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Build Options</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Update build system to use <productname>Autoconf</> 2.61 (Peter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Require <productname>GNU bison</> for source code builds (Peter)
|
||
</para>
|
||
|
||
<para>
|
||
This has effectively been required for several years, but now there
|
||
is no infrastructure claiming to support other parser tools.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <application>pg_config</> <literal>--htmldir</> option
|
||
(Peter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Pass <type>float4</> by value inside the server (Zoltan
|
||
Boszormenyi)
|
||
</para>
|
||
|
||
<para>
|
||
Add <application>configure</> option
|
||
<literal>--disable-float4-byval</> to use the old behavior.
|
||
External C functions that use old-style (version 0) call convention
|
||
and pass or return <type>float4</> values will be broken by this
|
||
change, so you may need the <application>configure</> option if you
|
||
have such functions and don't want to update them.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Pass <type>float8</>, <type>int8</>, and related datatypes
|
||
by value inside the server on 64-bit platforms (Zoltan Boszormenyi)
|
||
</para>
|
||
|
||
<para>
|
||
Add <application>configure</> option
|
||
<literal>--disable-float8-byval</> to use the old behavior.
|
||
As above, this change might break old-style external C functions.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add configure options <literal>--with-segsize</>,
|
||
<literal>--with-blocksize</>, <literal>--with-wal-blocksize</>,
|
||
<literal>--with-wal-segsize</> (Zdenek Kotala, Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This simplifies build-time control over several constants that
|
||
previously could only be changed by editing
|
||
<filename>pg_config_manual.h</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow threaded builds on <productname>Solaris</> 2.5 (Bruce)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Use the system's <function>getopt_long()</> on <productname>Solaris</>
|
||
(Zdenek Kotala, Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This makes option processing more consistent with what Solaris users
|
||
expect.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add support for the <productname>Sun Studio</> compiler on
|
||
<productname>Linux</> (Julius Stroffek)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Append the major version number to the backend <application>gettext</>
|
||
domain, and the <literal>soname</> major version number to
|
||
libraries' <application>gettext</> domain (Peter)
|
||
</para>
|
||
|
||
<para>
|
||
This simplifies parallel installations of multiple versions.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add support for code coverage testing with <application>gcov</>
|
||
(Michelle Caisse)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Allow out-of-tree builds on <productname>Mingw</> and
|
||
<productname>Cygwin</> (Richard Evans)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix the use of <productname>Mingw</> as a cross-compiling source
|
||
platform (Peter)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Source Code</title>
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Support 64-bit time zone data files (Heikki)
|
||
</para>
|
||
|
||
<para>
|
||
This adds support for daylight saving time (<acronym>DST</>)
|
||
calculations beyond the year 2038.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Deprecate use of platform's <type>time_t</> data type (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
Some platforms have migrated to 64-bit <type>time_t</>, some have
|
||
not, and Windows can't make up its mind what it's doing. Define
|
||
<type>pg_time_t</> to have the same meaning as <type>time_t</>,
|
||
but always be 64 bits (unless the platform has no 64-bit integer type),
|
||
and use that type in all module APIs and on-disk data formats.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix bug in handling of the time zone database when cross-compiling
|
||
(Richard Evans)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Link backend object files in one step, rather than in stages
|
||
(Peter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve <application>gettext</> support to allow better translation
|
||
of plurals (Peter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add message translation support to the PL languages (Alvaro, Peter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add more <application>DTrace</> probes (Robert Lor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Enable <application>DTrace</> support on <application>Mac OS X
|
||
Leopard</> and other non-Solaris platforms (Robert Lor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Simplify and standardize conversions between C strings and
|
||
<type>text</> datums, by providing common functions for the purpose
|
||
(Brendan Jurd, Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Clean up the <filename>include/catalog/</> header files so that
|
||
frontend programs can include them without including
|
||
<filename>postgres.h</>
|
||
(Zdenek Kotala)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <type>name</> char-aligned, and suppress zero-padding of
|
||
<type>name</> entries in indexes (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Recover better if dynamically-loaded code executes <function>exit()</>
|
||
(Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add a hook to let plug-ins monitor the executor (Itagaki
|
||
Takahiro)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add a hook to allow the planner's statistics lookup behavior to
|
||
be overridden (Simon Riggs)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>shmem_startup_hook()</> for custom shared memory
|
||
requirements (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Replace the index access method <function>amgetmulti</> entry point
|
||
with <function>amgetbitmap</>, and extend the API for
|
||
<function>amgettuple</> to support run-time determination of
|
||
operator lossiness (Heikki, Tom, Teodor)
|
||
</para>
|
||
|
||
<para>
|
||
The API for GIN and GiST opclass <function>consistent</> functions
|
||
has been extended as well.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add support for partial-match searches in <acronym>GIN</> indexes
|
||
(Teodor Sigaev, Oleg Bartunov)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Replace <structname>pg_class</> column <structfield>reltriggers</>
|
||
with boolean <structfield>relhastriggers</> (Simon)
|
||
</para>
|
||
|
||
<para>
|
||
Also remove unused <structname>pg_class</> columns
|
||
<structfield>relukeys</>, <structfield>relfkeys</>, and
|
||
<structfield>relrefs</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add a <structfield>relistemp</> column to <structname>pg_class</>
|
||
to ease identification of temporary tables (Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Move platform <acronym>FAQ</>s into the main documentation
|
||
(Peter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Prevent parser input files from being built with any conflicts
|
||
(Peter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add support for the <literal>KOI8U</> (Ukrainian) encoding
|
||
(Peter)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add Japanese message translations (Japan PostgreSQL Users Group)
|
||
</para>
|
||
|
||
<para>
|
||
This used to be maintained as a separate project.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix problem when setting <varname>LC_MESSAGES</> on
|
||
<application>MSVC</>-built systems (Hiroshi Inoue, Hiroshi
|
||
Saito, Magnus)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Contrib</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <filename>contrib/auto_explain</> to automatically run
|
||
<command>EXPLAIN</> on queries exceeding a specified duration
|
||
(Itagaki Takahiro, Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <filename>contrib/btree_gin</> to allow GIN indexes to
|
||
handle more datatypes (Oleg, Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <filename>contrib/citext</> to provide a case-insensitive,
|
||
multibyte-aware text data type (David Wheeler)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <filename>contrib/pg_stat_statements</> for server-wide
|
||
tracking of statement execution statistics (Itagaki Takahiro)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add duration and query mode options to <filename>contrib/pgbench</>
|
||
(Itagaki Takahiro)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <filename>contrib/pgbench</> use table names
|
||
<structname>pgbench_accounts</>, <structname>pgbench_branches</>,
|
||
<structname>pgbench_history</>, and <structname>pgbench_tellers</>,
|
||
rather than just <structname>accounts</>, <structname>branches</>,
|
||
<structname>history</>, and <structname>tellers</> (Tom)
|
||
</para>
|
||
|
||
<para>
|
||
This is to reduce the risk of accidentally destroying real data
|
||
by running <application>pgbench</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Fix <filename>contrib/pgstattuple</> to handle tables and
|
||
indexes with over 2 billion pages (Tatsuhito Kasahara)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
In <filename>contrib/fuzzystrmatch</>, add a version of the
|
||
Levenshtein string-distance function that allows the user to
|
||
specify the costs of insertion, deletion, and substitution
|
||
(Volkan Yazici)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <filename>contrib/ltree</> support multibyte encodings
|
||
(laser)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Enable <filename>contrib/dblink</> to use connection information
|
||
stored in the SQL/MED catalogs (Joe Conway)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Improve <filename>contrib/dblink</>'s reporting of errors from
|
||
the remote server (Joe Conway)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <filename>contrib/dblink</> set <varname>client_encoding</>
|
||
to match the local database's encoding (Joe Conway)
|
||
</para>
|
||
|
||
<para>
|
||
This prevents encoding problems when communicating with a remote
|
||
database that uses a different encoding.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make sure <filename>contrib/dblink</> uses a password supplied
|
||
by the user, and not accidentally taken from the server's
|
||
<filename>.pgpass</> file (Joe Conway)
|
||
</para>
|
||
|
||
<para>
|
||
This is a minor security enhancement.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add <function>fsm_page_contents()</>
|
||
to <filename>contrib/pageinspect</> (Heikki)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Modify <function>get_raw_page()</> to support free space map
|
||
(<filename>*_fsm</>) files. Also update
|
||
<filename>contrib/pg_freespacemap</>.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Add support for multibyte encodings to <filename>contrib/pg_trgm</>
|
||
(Teodor)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Rewrite <filename>contrib/intagg</> to use new
|
||
functions <function>array_agg()</> and <function>unnest()</>
|
||
(Tom)
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Make <filename>contrib/pg_standby</> recover all available WAL before
|
||
failover (Fujii Masao, Simon, Heikki)
|
||
</para>
|
||
|
||
<para>
|
||
To make this work safely, you now need to set the new
|
||
<literal>recovery_end_command</> option in <filename>recovery.conf</>
|
||
to clean up the trigger file after failover. <application>pg_standby</>
|
||
will no longer remove the trigger file itself.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<filename>contrib/pg_standby</>'s <option>-l</> option is now a no-op,
|
||
because it is unsafe to use a symlink (Simon)
|
||
</para>
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</sect3>
|
||
</sect2>
|
||
</sect1>
|