4825 lines
131 KiB
Plaintext
4825 lines
131 KiB
Plaintext
<!-- doc/src/sgml/release-9.1.sgml -->
|
|
<!-- See header comment in release.sgml about typical markup -->
|
|
|
|
<sect1 id="release-9-1-4">
|
|
<title>Release 9.1.4</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2012-06-04</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 9.1.3.
|
|
For information about new features in the 9.1 major release, see
|
|
<xref linkend="release-9-1">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 9.1.4</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 9.1.X.
|
|
</para>
|
|
|
|
<para>
|
|
However, if you use the <type>citext</> data type, and you upgraded
|
|
from a previous major release by running <application>pg_upgrade</>,
|
|
you should run <literal>CREATE EXTENSION citext FROM unpackaged</>
|
|
to avoid collation-related failures in <type>citext</> operations.
|
|
The same is necessary if you restore a dump from a pre-9.1 database
|
|
that contains an instance of the <type>citext</> data type.
|
|
If you've already run the <command>CREATE EXTENSION</> command before
|
|
upgrading to 9.1.4, you will instead need to do manual catalog updates
|
|
as explained in the third changelog item below.
|
|
</para>
|
|
|
|
<para>
|
|
Also, if you are upgrading from a version earlier than 9.1.2,
|
|
see the release notes for 9.1.2.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix incorrect password transformation in
|
|
<filename>contrib/pgcrypto</>'s DES <function>crypt()</> function
|
|
(Solar Designer)
|
|
</para>
|
|
|
|
<para>
|
|
If a password string contained the byte value <literal>0x80</>, the
|
|
remainder of the password was ignored, causing the password to be much
|
|
weaker than it appeared. With this fix, the rest of the string is
|
|
properly included in the DES hash. Any stored password values that are
|
|
affected by this bug will thus no longer match, so the stored values may
|
|
need to be updated. (CVE-2012-2143)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Ignore <literal>SECURITY DEFINER</> and <literal>SET</> attributes for
|
|
a procedural language's call handler (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Applying such attributes to a call handler could crash the server.
|
|
(CVE-2012-2655)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <filename>contrib/citext</>'s upgrade script fix collations of
|
|
<type>citext</> arrays and domains over <type>citext</>
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Release 9.1.2 provided a fix for collations of <type>citext</> columns
|
|
and indexes in databases upgraded or reloaded from pre-9.1
|
|
installations, but that fix was incomplete: it neglected to handle arrays
|
|
and domains over <type>citext</>. This release extends the module's
|
|
upgrade script to handle these cases. As before, if you have already
|
|
run the upgrade script, you'll need to run the collation update
|
|
commands by hand instead. See the 9.1.2 release notes for more
|
|
information about doing this.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow numeric timezone offsets in <type>timestamp</> input to be up to
|
|
16 hours away from UTC (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Some historical time zones have offsets larger than 15 hours, the
|
|
previous limit. This could result in dumped data values being rejected
|
|
during reload.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix timestamp conversion to cope when the given time is exactly the
|
|
last DST transition time for the current timezone (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This oversight has been there a long time, but was not noticed
|
|
previously because most DST-using zones are presumed to have an
|
|
indefinite sequence of future DST transitions.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <type>text</> to <type>name</> and <type>char</> to <type>name</>
|
|
casts to perform string truncation correctly in multibyte encodings
|
|
(Karl Schnaitter)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix memory copying bug in <function>to_tsquery()</> (Heikki Linnakangas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Ensure <function>txid_current()</> reports the correct epoch when
|
|
executed in hot standby (Simon Riggs)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix planner's handling of outer PlaceHolderVars within subqueries (Tom
|
|
Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This bug concerns sub-SELECTs that reference variables coming from the
|
|
nullable side of an outer join of the surrounding query.
|
|
In 9.1, queries affected by this bug would fail with <quote>ERROR:
|
|
Upper-level PlaceHolderVar found where not expected</>. But in 9.0 and
|
|
8.4, you'd silently get possibly-wrong answers, since the value
|
|
transmitted into the subquery wouldn't go to null when it should.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix planning of <literal>UNION ALL</> subqueries with output columns
|
|
that are not simple variables (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Planning of such cases got noticeably worse in 9.1 as a result of a
|
|
misguided fix for <quote>MergeAppend child's targetlist doesn't match
|
|
MergeAppend</> errors. Revert that fix and do it another way.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix slow session startup when <structname>pg_attribute</> is very large
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
If <structname>pg_attribute</> exceeds one-fourth of
|
|
<varname>shared_buffers</>, cache rebuilding code that is sometimes
|
|
needed during session start would trigger the synchronized-scan logic,
|
|
causing it to take many times longer than normal. The problem was
|
|
particularly acute if many new sessions were starting at once.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Ensure sequential scans check for query cancel reasonably often (Merlin
|
|
Moncure)
|
|
</para>
|
|
|
|
<para>
|
|
A scan encountering many consecutive pages that contain no live tuples
|
|
would not respond to interrupts meanwhile.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Ensure the Windows implementation of <function>PGSemaphoreLock()</>
|
|
clears <varname>ImmediateInterruptOK</> before returning (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This oversight meant that a query-cancel interrupt received later
|
|
in the same query could be accepted at an unsafe time, with
|
|
unpredictable but not good consequences.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Show whole-row variables safely when printing views or rules
|
|
(Abbas Butt, Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Corner cases involving ambiguous names (that is, the name could be
|
|
either a table or column name of the query) were printed in an
|
|
ambiguous way, risking that the view or rule would be interpreted
|
|
differently after dump and reload. Avoid the ambiguous case by
|
|
attaching a no-op cast.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <command>COPY FROM</> to properly handle null marker strings that
|
|
correspond to invalid encoding (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
A null marker string such as <literal>E'\\0'</> should work, and did
|
|
work in the past, but the case got broken in 8.4.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <command>EXPLAIN VERBOSE</> for writable CTEs containing
|
|
<literal>RETURNING</> clauses (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <command>PREPARE TRANSACTION</> to work correctly in the presence
|
|
of advisory locks (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Historically, <command>PREPARE TRANSACTION</> has simply ignored any
|
|
session-level advisory locks the session holds, but this case was
|
|
accidentally broken in 9.1.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix truncation of unlogged tables (Robert Haas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Ignore missing schemas during non-interactive assignments of
|
|
<varname>search_path</> (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This re-aligns 9.1's behavior with that of older branches. Previously
|
|
9.1 would throw an error for nonexistent schemas mentioned in
|
|
<varname>search_path</> settings obtained from places such as
|
|
<command>ALTER DATABASE SET</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix bugs with temporary or transient tables used in extension scripts
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This includes cases such as a rewriting <command>ALTER TABLE</> within
|
|
an extension update script, since that uses a transient table behind
|
|
the scenes.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Ensure autovacuum worker processes perform stack depth checking
|
|
properly (Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, infinite recursion in a function invoked by
|
|
auto-<command>ANALYZE</> could crash worker processes.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix logging collector to not lose log coherency under high load (Andrew
|
|
Dunstan)
|
|
</para>
|
|
|
|
<para>
|
|
The collector previously could fail to reassemble large messages if it
|
|
got too busy.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix logging collector to ensure it will restart file rotation
|
|
after receiving <systemitem>SIGHUP</> (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <quote>too many LWLocks taken</> failure in GiST indexes (Heikki
|
|
Linnakangas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix WAL replay logic for GIN indexes to not fail if the index was
|
|
subsequently dropped (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Correctly detect SSI conflicts of prepared transactions after a crash
|
|
(Dan Ports)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid synchronous replication delay when committing a transaction that
|
|
only modified temporary tables (Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
In such a case the transaction's commit record need not be flushed to
|
|
standby servers, but some of the code didn't know that and waited for
|
|
it to happen anyway.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix error handling in <application>pg_basebackup</>
|
|
(Thomas Ogrisegg, Fujii Masao)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>walsender</> to not go into a busy loop if connection
|
|
is terminated (Fujii Masao)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix memory leak in PL/pgSQL's <command>RETURN NEXT</> command (Joe
|
|
Conway)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix PL/pgSQL's <command>GET DIAGNOSTICS</> command when the target
|
|
is the function's first variable (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Ensure that PL/Perl package-qualifies the <varname>_TD</> variable
|
|
(Alex Hunsaker)
|
|
</para>
|
|
|
|
<para>
|
|
This bug caused trigger invocations to fail when they are nested
|
|
within a function invocation that changes the current package.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix PL/Python functions returning composite types to accept a string
|
|
for their result value (Jan Urbanski)
|
|
</para>
|
|
|
|
<para>
|
|
This case was accidentally broken by the 9.1 additions to allow a
|
|
composite result value to be supplied in other formats, such as
|
|
dictionaries.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix potential access off the end of memory in <application>psql</>'s
|
|
expanded display (<command>\x</>) mode (Peter Eisentraut)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix several performance problems in <application>pg_dump</> when
|
|
the database contains many objects (Jeff Janes, Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
<application>pg_dump</> could get very slow if the database contained
|
|
many schemas, or if many objects are in dependency loops, or if there
|
|
are many owned sequences.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix memory and file descriptor leaks in <application>pg_restore</>
|
|
when reading a directory-format archive (Peter Eisentraut)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>pg_upgrade</> for the case that a database stored in a
|
|
non-default tablespace contains a table in the cluster's default
|
|
tablespace (Bruce Momjian)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
In <application>ecpg</>, fix rare memory leaks and possible overwrite
|
|
of one byte after the <structname>sqlca_t</> structure (Peter Eisentraut)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <filename>contrib/dblink</>'s <function>dblink_exec()</> to not leak
|
|
temporary database connections upon error (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <filename>contrib/dblink</> to report the correct connection name in
|
|
error messages (Kyotaro Horiguchi)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <filename>contrib/vacuumlo</> to use multiple transactions when
|
|
dropping many large objects (Tim Lewis, Robert Haas, Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This change avoids exceeding <varname>max_locks_per_transaction</> when
|
|
many objects need to be dropped. The behavior can be adjusted with the
|
|
new <literal>-l</> (limit) option.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update time zone data files to <application>tzdata</> release 2012c
|
|
for DST law changes in Antarctica, Armenia, Chile, Cuba, Falkland
|
|
Islands, Gaza, Haiti, Hebron, Morocco, Syria, and Tokelau Islands;
|
|
also historical corrections for Canada.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-9-1-3">
|
|
<title>Release 9.1.3</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2012-02-27</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 9.1.2.
|
|
For information about new features in the 9.1 major release, see
|
|
<xref linkend="release-9-1">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 9.1.3</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 9.1.X.
|
|
</para>
|
|
|
|
<para>
|
|
However, if you are upgrading from a version earlier than 9.1.2,
|
|
see the release notes for 9.1.2.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Require execute permission on the trigger function for
|
|
<command>CREATE TRIGGER</> (Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
This missing check could allow another user to execute a trigger
|
|
function with forged input data, by installing it on a table he owns.
|
|
This is only of significance for trigger functions marked
|
|
<literal>SECURITY DEFINER</>, since otherwise trigger functions run
|
|
as the table owner anyway. (CVE-2012-0866)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Remove arbitrary limitation on length of common name in SSL
|
|
certificates (Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
Both <application>libpq</> and the server truncated the common name
|
|
extracted from an SSL certificate at 32 bytes. Normally this would
|
|
cause nothing worse than an unexpected verification failure, but there
|
|
are some rather-implausible scenarios in which it might allow one
|
|
certificate holder to impersonate another. The victim would have to
|
|
have a common name exactly 32 bytes long, and the attacker would have
|
|
to persuade a trusted CA to issue a certificate in which the common
|
|
name has that string as a prefix. Impersonating a server would also
|
|
require some additional exploit to redirect client connections.
|
|
(CVE-2012-0867)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Convert newlines to spaces in names written in <application>pg_dump</>
|
|
comments (Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
<application>pg_dump</> was incautious about sanitizing object names
|
|
that are emitted within SQL comments in its output script. A name
|
|
containing a newline would at least render the script syntactically
|
|
incorrect. Maliciously crafted object names could present a SQL
|
|
injection risk when the script is reloaded. (CVE-2012-0868)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix btree index corruption from insertions concurrent with vacuuming
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
An index page split caused by an insertion could sometimes cause a
|
|
concurrently-running <command>VACUUM</> to miss removing index entries
|
|
that it should remove. After the corresponding table rows are removed,
|
|
the dangling index entries would cause errors (such as <quote>could not
|
|
read block N in file ...</>) or worse, silently wrong query results
|
|
after unrelated rows are re-inserted at the now-free table locations.
|
|
This bug has been present since release 8.2, but occurs so infrequently
|
|
that it was not diagnosed until now. If you have reason to suspect
|
|
that it has happened in your database, reindexing the affected index
|
|
will fix things.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix transient zeroing of shared buffers during WAL replay (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
The replay logic would sometimes zero and refill a shared buffer, so
|
|
that the contents were transiently invalid. In hot standby mode this
|
|
can result in a query that's executing in parallel seeing garbage data.
|
|
Various symptoms could result from that, but the most common one seems
|
|
to be <quote>invalid memory alloc request size</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix handling of data-modifying <literal>WITH</> subplans in
|
|
<literal>READ COMMITTED</> rechecking (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
A <literal>WITH</> clause containing
|
|
<command>INSERT</>/<command>UPDATE</>/<command>DELETE</> would crash
|
|
if the parent <command>UPDATE</> or <command>DELETE</> command needed
|
|
to be re-evaluated at one or more rows due to concurrent updates
|
|
in <literal>READ COMMITTED</> mode.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix corner case in SSI transaction cleanup
|
|
(Dan Ports)
|
|
</para>
|
|
|
|
<para>
|
|
When finishing up a read-write serializable transaction,
|
|
a crash could occur if all remaining active serializable transactions
|
|
are read-only.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix postmaster to attempt restart after a hot-standby crash (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
A logic error caused the postmaster to terminate, rather than attempt
|
|
to restart the cluster, if any backend process crashed while operating
|
|
in hot standby mode.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <command>CLUSTER</>/<command>VACUUM FULL</> handling of toast
|
|
values owned by recently-updated rows (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This oversight could lead to <quote>duplicate key value violates unique
|
|
constraint</> errors being reported against the toast table's index
|
|
during one of these commands.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update per-column permissions, not only per-table permissions, when
|
|
changing table owner (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Failure to do this meant that any previously granted column permissions
|
|
were still shown as having been granted by the old owner. This meant
|
|
that neither the new owner nor a superuser could revoke the
|
|
now-untraceable-to-table-owner permissions.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support foreign data wrappers and foreign servers in
|
|
<command>REASSIGN OWNED</> (Alvaro Herrera)
|
|
</para>
|
|
|
|
<para>
|
|
This command failed with <quote>unexpected classid</> errors if
|
|
it needed to change the ownership of any such objects.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow non-existent values for some settings in <command>ALTER
|
|
USER/DATABASE SET</> (Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
Allow <varname>default_text_search_config</>,
|
|
<varname>default_tablespace</>, and <varname>temp_tablespaces</> to be
|
|
set to names that are not known. This is because they might be known
|
|
in another database where the setting is intended to be used, or for the
|
|
tablespace cases because the tablespace might not be created yet. The
|
|
same issue was previously recognized for <varname>search_path</>, and
|
|
these settings now act like that one.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <quote>unsupported node type</> error caused by <literal>COLLATE</>
|
|
in an <command>INSERT</> expression (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid crashing when we have problems deleting table files post-commit
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Dropping a table should lead to deleting the underlying disk files only
|
|
after the transaction commits. In event of failure then (for instance,
|
|
because of wrong file permissions) the code is supposed to just emit a
|
|
warning message and go on, since it's too late to abort the
|
|
transaction. This logic got broken as of release 8.4, causing such
|
|
situations to result in a PANIC and an unrestartable database.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Recover from errors occurring during WAL replay of <command>DROP
|
|
TABLESPACE</> (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Replay will attempt to remove the tablespace's directories, but there
|
|
are various reasons why this might fail (for example, incorrect
|
|
ownership or permissions on those directories). Formerly the replay
|
|
code would panic, rendering the database unrestartable without manual
|
|
intervention. It seems better to log the problem and continue, since
|
|
the only consequence of failure to remove the directories is some
|
|
wasted disk space.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix race condition in logging AccessExclusiveLocks for hot standby
|
|
(Simon Riggs)
|
|
</para>
|
|
|
|
<para>
|
|
Sometimes a lock would be logged as being held by <quote>transaction
|
|
zero</>. This is at least known to produce assertion failures on
|
|
slave servers, and might be the cause of more serious problems.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Track the OID counter correctly during WAL replay, even when it wraps
|
|
around (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Previously the OID counter would remain stuck at a high value until the
|
|
system exited replay mode. The practical consequences of that are
|
|
usually nil, but there are scenarios wherein a standby server that's
|
|
been promoted to master might take a long time to advance the OID
|
|
counter to a reasonable value once values are needed.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent emitting misleading <quote>consistent recovery state reached</>
|
|
log message at the beginning of crash recovery (Heikki Linnakangas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix initial value of
|
|
<structname>pg_stat_replication</>.<structfield>replay_location</>
|
|
(Fujii Masao)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, the value shown would be wrong until at least one WAL
|
|
record had been replayed.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix regular expression back-references with <literal>*</> attached
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Rather than enforcing an exact string match, the code would effectively
|
|
accept any string that satisfies the pattern sub-expression referenced
|
|
by the back-reference symbol.
|
|
</para>
|
|
|
|
<para>
|
|
A similar problem still afflicts back-references that are embedded in a
|
|
larger quantified expression, rather than being the immediate subject
|
|
of the quantifier. This will be addressed in a future
|
|
<productname>PostgreSQL</> release.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix recently-introduced memory leak in processing of
|
|
<type>inet</>/<type>cidr</> values (Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
A patch in the December 2011 releases of <productname>PostgreSQL</>
|
|
caused memory leakage in these operations, which could be significant
|
|
in scenarios such as building a btree index on such a column.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix planner's ability to push down index-expression restrictions
|
|
through <literal>UNION ALL</> (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This type of optimization was inadvertently disabled by a fix for
|
|
another problem in 9.1.2.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix planning of <literal>WITH</> clauses referenced in
|
|
<command>UPDATE</>/<command>DELETE</> on an inherited table
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This bug led to <quote>could not find plan for CTE</> failures.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix GIN cost estimation to handle <literal>column IN (...)</>
|
|
index conditions (Marti Raudsepp)
|
|
</para>
|
|
|
|
<para>
|
|
This oversight would usually lead to crashes if such a condition could
|
|
be used with a GIN index.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent assertion failure when exiting a session with an open, failed
|
|
transaction (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This bug has no impact on normal builds with asserts not enabled.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix dangling pointer after <command>CREATE TABLE AS</>/<command>SELECT
|
|
INTO</> in a SQL-language function (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
In most cases this only led to an assertion failure in assert-enabled
|
|
builds, but worse consequences seem possible.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid double close of file handle in syslogger on Windows (MauMau)
|
|
</para>
|
|
|
|
<para>
|
|
Ordinarily this error was invisible, but it would cause an exception
|
|
when running on a debug version of Windows.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix I/O-conversion-related memory leaks in plpgsql
|
|
(Andres Freund, Jan Urbanski, Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Certain operations would leak memory until the end of the current
|
|
function.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Work around bug in perl's SvPVutf8() function (Andrew Dunstan)
|
|
</para>
|
|
|
|
<para>
|
|
This function crashes when handed a typeglob or certain read-only
|
|
objects such as <literal>$^V</>. Make plperl avoid passing those to
|
|
it.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
In <application>pg_dump</>, don't dump contents of an extension's
|
|
configuration tables if the extension itself is not being dumped
|
|
(Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve <application>pg_dump</>'s handling of inherited table columns
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
<application>pg_dump</> mishandled situations where a child column has
|
|
a different default expression than its parent column. If the default
|
|
is textually identical to the parent's default, but not actually the
|
|
same (for instance, because of schema search path differences) it would
|
|
not be recognized as different, so that after dump and restore the
|
|
child would be allowed to inherit the parent's default. Child columns
|
|
that are <literal>NOT NULL</> where their parent is not could also be
|
|
restored subtly incorrectly.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>pg_restore</>'s direct-to-database mode for
|
|
INSERT-style table data (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Direct-to-database restores from archive files made with
|
|
<option>--inserts</> or <option>--column-inserts</> options fail when
|
|
using <application>pg_restore</> from a release dated September or
|
|
December 2011, as a result of an oversight in a fix for another
|
|
problem. The archive file itself is not at fault, and text-mode
|
|
output is okay.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Teach <application>pg_upgrade</> to handle renaming of
|
|
<application>plpython</>'s shared library (Bruce Momjian)
|
|
</para>
|
|
|
|
<para>
|
|
Upgrading a pre-9.1 database that included plpython would fail because
|
|
of this oversight.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <application>pg_upgrade</> to process tables containing
|
|
<type>regclass</> columns (Bruce Momjian)
|
|
</para>
|
|
|
|
<para>
|
|
Since <application>pg_upgrade</> now takes care to preserve
|
|
<structname>pg_class</> OIDs, there was no longer any reason for this
|
|
restriction.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <application>libpq</> ignore <literal>ENOTDIR</> errors
|
|
when looking for an SSL client certificate file
|
|
(Magnus Hagander)
|
|
</para>
|
|
|
|
<para>
|
|
This allows SSL connections to be established, though without a
|
|
certificate, even when the user's home directory is set to something
|
|
like <literal>/dev/null</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix some more field alignment issues in <application>ecpg</>'s SQLDA area
|
|
(Zoltan Boszormenyi)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <literal>AT</> option in <application>ecpg</>
|
|
<literal>DEALLOCATE</> statements (Michael Meskes)
|
|
</para>
|
|
|
|
<para>
|
|
The infrastructure to support this has been there for awhile, but
|
|
through an oversight there was still an error check rejecting the case.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Do not use the variable name when defining a varchar structure in ecpg
|
|
(Michael Meskes)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <filename>contrib/auto_explain</>'s JSON output mode to produce
|
|
valid JSON (Andrew Dunstan)
|
|
</para>
|
|
|
|
<para>
|
|
The output used brackets at the top level, when it should have used
|
|
braces.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix error in <filename>contrib/intarray</>'s <literal>int[] &
|
|
int[]</> operator (Guillaume Lelarge)
|
|
</para>
|
|
|
|
<para>
|
|
If the smallest integer the two input arrays have in common is 1,
|
|
and there are smaller values in either array, then 1 would be
|
|
incorrectly omitted from the result.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix error detection in <filename>contrib/pgcrypto</>'s
|
|
<function>encrypt_iv()</> and <function>decrypt_iv()</>
|
|
(Marko Kreen)
|
|
</para>
|
|
|
|
<para>
|
|
These functions failed to report certain types of invalid-input errors,
|
|
and would instead return random garbage values for incorrect input.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix one-byte buffer overrun in <filename>contrib/test_parser</>
|
|
(Paul Guyot)
|
|
</para>
|
|
|
|
<para>
|
|
The code would try to read one more byte than it should, which would
|
|
crash in corner cases.
|
|
Since <filename>contrib/test_parser</> is only example code, this is
|
|
not a security issue in itself, but bad example code is still bad.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Use <function>__sync_lock_test_and_set()</> for spinlocks on ARM, if
|
|
available (Martin Pitt)
|
|
</para>
|
|
|
|
<para>
|
|
This function replaces our previous use of the <literal>SWPB</>
|
|
instruction, which is deprecated and not available on ARMv6 and later.
|
|
Reports suggest that the old code doesn't fail in an obvious way on
|
|
recent ARM boards, but simply doesn't interlock concurrent accesses,
|
|
leading to bizarre failures in multiprocess operation.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Use <option>-fexcess-precision=standard</> option when building with
|
|
gcc versions that accept it (Andrew Dunstan)
|
|
</para>
|
|
|
|
<para>
|
|
This prevents assorted scenarios wherein recent versions of gcc will
|
|
produce creative results.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow use of threaded Python on FreeBSD (Chris Rees)
|
|
</para>
|
|
|
|
<para>
|
|
Our configure script previously believed that this combination wouldn't
|
|
work; but FreeBSD fixed the problem, so remove that error check.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow MinGW builds to use standardly-named OpenSSL libraries
|
|
(Tomasz Ostrowski)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-9-1-2">
|
|
<title>Release 9.1.2</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2011-12-05</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 9.1.1.
|
|
For information about new features in the 9.1 major release, see
|
|
<xref linkend="release-9-1">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 9.1.2</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 9.1.X.
|
|
</para>
|
|
|
|
<para>
|
|
However, a longstanding error was discovered in the definition of the
|
|
<literal>information_schema.referential_constraints</> view. If you
|
|
rely on correct results from that view, you should replace its
|
|
definition as explained in the first changelog item below.
|
|
</para>
|
|
|
|
<para>
|
|
Also, if you use the <type>citext</> data type, and you upgraded
|
|
from a previous major release by running <application>pg_upgrade</>,
|
|
you should run <literal>CREATE EXTENSION citext FROM unpackaged</>
|
|
to avoid collation-related failures in <type>citext</> operations.
|
|
The same is necessary if you restore a dump from a pre-9.1 database
|
|
that contains an instance of the <type>citext</> data type.
|
|
If you've already run the <command>CREATE EXTENSION</> command before
|
|
upgrading to 9.1.2, you will instead need to do manual catalog updates
|
|
as explained in the second changelog item.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix bugs in <literal>information_schema.referential_constraints</> view
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This view was being insufficiently careful about matching the
|
|
foreign-key constraint to the depended-on primary or unique key
|
|
constraint. That could result in failure to show a foreign key
|
|
constraint at all, or showing it multiple times, or claiming that it
|
|
depends on a different constraint than the one it really does.
|
|
</para>
|
|
|
|
<para>
|
|
Since the view definition is installed by <application>initdb</>,
|
|
merely upgrading will not fix the problem. If you need to fix this
|
|
in an existing installation, you can (as a superuser) drop the
|
|
<literal>information_schema</> schema then re-create it by sourcing
|
|
<filename><replaceable>SHAREDIR</>/information_schema.sql</filename>.
|
|
(Run <literal>pg_config --sharedir</> if you're uncertain where
|
|
<replaceable>SHAREDIR</> is.) This must be repeated in each database
|
|
to be fixed.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <filename>contrib/citext</>'s upgrade script fix collations of
|
|
<type>citext</> columns and indexes (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Existing <type>citext</> columns and indexes aren't correctly marked as
|
|
being of a collatable data type during <application>pg_upgrade</> from
|
|
a pre-9.1 server, or when a pre-9.1 dump containing the <type>citext</>
|
|
type is loaded into a 9.1 server.
|
|
That leads to operations on these columns failing with errors
|
|
such as <quote>could not determine which collation to use for string
|
|
comparison</>. This change allows them to be fixed by the same
|
|
script that upgrades the <type>citext</> module into a proper 9.1
|
|
extension during <literal>CREATE EXTENSION citext FROM unpackaged</>.
|
|
</para>
|
|
|
|
<para>
|
|
If you have a previously-upgraded database that is suffering from this
|
|
problem, and you already ran the <command>CREATE EXTENSION</> command,
|
|
you can manually run (as superuser) the <command>UPDATE</> commands
|
|
found at the end of
|
|
<filename><replaceable>SHAREDIR</>/extension/citext--unpackaged--1.0.sql</filename>.
|
|
(Run <literal>pg_config --sharedir</> if you're uncertain where
|
|
<replaceable>SHAREDIR</> is.)
|
|
There is no harm in doing this again if unsure.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible crash during <command>UPDATE</> or <command>DELETE</> that
|
|
joins to the output of a scalar-returning function (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
A crash could only occur if the target row had been concurrently
|
|
updated, so this problem surfaced only intermittently.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix incorrect replay of WAL records for GIN index updates
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This could result in transiently failing to find index entries after
|
|
a crash, or on a hot-standby server. The problem would be repaired
|
|
by the next <command>VACUUM</> of the index, however.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix TOAST-related data corruption during <literal>CREATE TABLE dest AS
|
|
SELECT * FROM src</> or <literal>INSERT INTO dest SELECT * FROM src</>
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
If a table has been modified by <command>ALTER TABLE ADD COLUMN</>,
|
|
attempts to copy its data verbatim to another table could produce
|
|
corrupt results in certain corner cases.
|
|
The problem can only manifest in this precise form in 8.4 and later,
|
|
but we patched earlier versions as well in case there are other code
|
|
paths that could trigger the same bug.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible failures during hot standby startup (Simon Riggs)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Start hot standby faster when initial snapshot is incomplete
|
|
(Simon Riggs)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix race condition during toast table access from stale syscache entries
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
The typical symptom was transient errors like <quote>missing chunk
|
|
number 0 for toast value NNNNN in pg_toast_2619</>, where the cited
|
|
toast table would always belong to a system catalog.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Track dependencies of functions on items used in parameter default
|
|
expressions (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, a referenced object could be dropped without having dropped
|
|
or modified the function, leading to misbehavior when the function was
|
|
used. Note that merely installing this update will not fix the missing
|
|
dependency entries; to do that, you'd need to <command>CREATE OR
|
|
REPLACE</> each such function afterwards. If you have functions whose
|
|
defaults depend on non-built-in objects, doing so is recommended.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix incorrect management of placeholder variables in nestloop joins
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This bug is known to lead to <quote>variable not found in subplan target
|
|
list</> planner errors, and could possibly result in wrong query output
|
|
when outer joins are involved.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix window functions that sort by expressions involving aggregates
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Previously these could fail with <quote>could not find pathkey item to
|
|
sort</> planner errors.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <quote>MergeAppend child's targetlist doesn't match MergeAppend</>
|
|
planner errors (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix index matching for operators with both collatable and noncollatable
|
|
inputs (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
In 9.1.0, an indexable operator that has a non-collatable left-hand
|
|
input type and a collatable right-hand input type would not be
|
|
recognized as matching the left-hand column's index. An example is
|
|
the <type>hstore</> <literal>?</> <type>text</> operator.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow inlining of set-returning SQL functions with multiple OUT
|
|
parameters (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Don't trust deferred-unique indexes for join removal (Tom Lane and Marti
|
|
Raudsepp)
|
|
</para>
|
|
|
|
<para>
|
|
A deferred uniqueness constraint might not hold intra-transaction,
|
|
so assuming that it does could give incorrect query results.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <function>DatumGetInetP()</> unpack inet datums that have a 1-byte
|
|
header, and add a new macro, <function>DatumGetInetPP()</>, that does
|
|
not (Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
This change affects no core code, but might prevent crashes in add-on
|
|
code that expects <function>DatumGetInetP()</> to produce an unpacked
|
|
datum as per usual convention.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve locale support in <type>money</> type's input and output
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Aside from not supporting all standard
|
|
<link linkend="guc-lc-monetary"><varname>lc_monetary</></link>
|
|
formatting options, the input and output functions were inconsistent,
|
|
meaning there were locales in which dumped <type>money</> values could
|
|
not be re-read.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Don't let <link
|
|
linkend="guc-transform-null-equals"><varname>transform_null_equals</></link>
|
|
affect <literal>CASE foo WHEN NULL ...</> constructs
|
|
(Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
<varname>transform_null_equals</> is only supposed to affect
|
|
<literal>foo = NULL</> expressions written directly by the user, not
|
|
equality checks generated internally by this form of <literal>CASE</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Change foreign-key trigger creation order to better support
|
|
self-referential foreign keys (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
For a cascading foreign key that references its own table, a row update
|
|
will fire both the <literal>ON UPDATE</> trigger and the
|
|
<literal>CHECK</> trigger as one event. The <literal>ON UPDATE</>
|
|
trigger must execute first, else the <literal>CHECK</> will check a
|
|
non-final state of the row and possibly throw an inappropriate error.
|
|
However, the firing order of these triggers is determined by their
|
|
names, which generally sort in creation order since the triggers have
|
|
auto-generated names following the convention
|
|
<quote>RI_ConstraintTrigger_NNNN</>. A proper fix would require
|
|
modifying that convention, which we will do in 9.2, but it seems risky
|
|
to change it in existing releases. So this patch just changes the
|
|
creation order of the triggers. Users encountering this type of error
|
|
should drop and re-create the foreign key constraint to get its
|
|
triggers into the right order.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <literal>IF EXISTS</> to work correctly in <command>DROP OPERATOR
|
|
FAMILY</> (Robert Haas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Disallow dropping of an extension from within its own script
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This prevents odd behavior in case of incorrect management of extension
|
|
dependencies.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Don't mark auto-generated types as extension members (Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
Relation rowtypes and automatically-generated array types do not need to
|
|
have their own extension membership entries in <structname>pg_depend</>,
|
|
and creating such entries complicates matters for extension upgrades.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Cope with invalid pre-existing <varname>search_path</> settings during
|
|
<command>CREATE EXTENSION</> (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid floating-point underflow while tracking buffer allocation rate
|
|
(Greg Matthews)
|
|
</para>
|
|
|
|
<para>
|
|
While harmless in itself, on certain platforms this would result in
|
|
annoying kernel log messages.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent autovacuum transactions from running in serializable mode
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Autovacuum formerly used the cluster-wide default transaction isolation
|
|
level, but there is no need for it to use anything higher than READ
|
|
COMMITTED, and using SERIALIZABLE could result in unnecessary delays
|
|
for other processes.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Ensure walsender processes respond promptly to <systemitem>SIGTERM</>
|
|
(Magnus Hagander)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Exclude <filename>postmaster.opts</> from base backups
|
|
(Magnus Hagander)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Preserve configuration file name and line number values when starting
|
|
child processes under Windows (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Formerly, these would not be displayed correctly in the
|
|
<structname>pg_settings</> view.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix incorrect field alignment in <application>ecpg</>'s SQLDA area
|
|
(Zoltan Boszormenyi)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Preserve blank lines within commands in <application>psql</>'s command
|
|
history (Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
The former behavior could cause problems if an empty line was removed
|
|
from within a string literal, for example.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid platform-specific infinite loop in <application>pg_dump</>
|
|
(Steve Singer)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix compression of plain-text output format in <application>pg_dump</>
|
|
(Adrian Klaver and Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
<application>pg_dump</> has historically understood <literal>-Z</> with
|
|
no <literal>-F</> switch to mean that it should emit a gzip-compressed
|
|
version of its plain text output. Restore that behavior.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>pg_dump</> to dump user-defined casts between
|
|
auto-generated types, such as table rowtypes (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix missed quoting of foreign server names in <application>pg_dump</>
|
|
(Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Assorted fixes for <application>pg_upgrade</> (Bruce Momjian)
|
|
</para>
|
|
|
|
<para>
|
|
Handle exclusion constraints correctly, avoid failures on Windows,
|
|
don't complain about mismatched toast table names in 8.4 databases.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
In PL/pgSQL, allow foreign tables to define row types
|
|
(Alexander Soudakov)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix up conversions of PL/Perl functions' results
|
|
(Alex Hunsaker and Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Restore the pre-9.1 behavior that PL/Perl functions returning
|
|
<type>void</> ignore the result value of their last Perl statement;
|
|
9.1.0 would throw an error if that statement returned a reference.
|
|
Also, make sure it works to return a string value for a composite type,
|
|
so long as the string meets the type's input format.
|
|
In addition, throw errors for attempts to return Perl arrays or hashes
|
|
when the function's declared result type is not an array or composite
|
|
type, respectively. (Pre-9.1 versions rather uselessly returned
|
|
strings like <literal>ARRAY(0x221a9a0)</> or
|
|
<literal>HASH(0x221aa90)</> in such cases.)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Ensure PL/Perl strings are always correctly UTF8-encoded
|
|
(Amit Khandekar and Alex Hunsaker)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Use the preferred version of <application>xsubpp</> to build PL/Perl,
|
|
not necessarily the operating system's main copy
|
|
(David Wheeler and Alex Hunsaker)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Correctly propagate SQLSTATE in PL/Python exceptions
|
|
(Mika Eloranta and Jan Urbanski)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Do not install PL/Python extension files for Python major versions
|
|
other than the one built against (Peter Eisentraut)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Change all the <filename>contrib</> extension script files to report
|
|
a useful error message if they are fed to <application>psql</>
|
|
(Andrew Dunstan and Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This should help teach people about the new method of using
|
|
<command>CREATE EXTENSION</> to load these files. In most cases,
|
|
sourcing the scripts directly would fail anyway, but with
|
|
harder-to-interpret messages.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix incorrect coding in <filename>contrib/dict_int</> and
|
|
<filename>contrib/dict_xsyn</> (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Some functions incorrectly assumed that memory returned by
|
|
<function>palloc()</> is guaranteed zeroed.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Remove <filename>contrib/sepgsql</> tests from the regular regression
|
|
test mechanism (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Since these tests require root privileges for setup, they're impractical
|
|
to run automatically. Switch over to a manual approach instead, and
|
|
provide a testing script to help with that.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix assorted errors in <filename>contrib/unaccent</>'s configuration
|
|
file parsing (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Honor query cancel interrupts promptly in <function>pgstatindex()</>
|
|
(Robert Haas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix incorrect quoting of log file name in Mac OS X start script
|
|
(Sidar Lopez)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Revert unintentional enabling of <literal>WAL_DEBUG</> (Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
Fortunately, as debugging tools go, this one is pretty cheap;
|
|
but it's not intended to be enabled by default, so revert.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Ensure VPATH builds properly install all server header files
|
|
(Peter Eisentraut)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Shorten file names reported in verbose error messages (Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
Regular builds have always reported just the name of the C file
|
|
containing the error message call, but VPATH builds formerly
|
|
reported an absolute path name.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix interpretation of Windows timezone names for Central America
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Map <quote>Central America Standard Time</> to <literal>CST6</>, not
|
|
<literal>CST6CDT</>, because DST is generally not observed anywhere in
|
|
Central America.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update time zone data files to <application>tzdata</> release 2011n
|
|
for DST law changes in Brazil, Cuba, Fiji, Palestine, Russia, and Samoa;
|
|
also historical corrections for Alaska and British East Africa.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-9-1-1">
|
|
<title>Release 9.1.1</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2011-09-26</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a small number of fixes from 9.1.0.
|
|
For information about new features in the 9.1 major release, see
|
|
<xref linkend="release-9-1">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 9.1.1</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 9.1.X.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <function>pg_options_to_table</> return NULL for an option with no
|
|
value (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Previously such cases would result in a server crash.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix memory leak at end of a GiST index scan (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Commands that perform many separate GiST index scans, such as
|
|
verification of a new GiST-based exclusion constraint on a table
|
|
already containing many rows, could transiently require large amounts of
|
|
memory due to this leak.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix explicit reference to <literal>pg_temp</> schema in <command>CREATE
|
|
TEMPORARY TABLE</> (Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
This used to be allowed, but failed in 9.1.0.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-9-1">
|
|
<title>Release 9.1</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2011-09-12</simpara>
|
|
</note>
|
|
|
|
<sect2>
|
|
<title>Overview</title>
|
|
|
|
<para>
|
|
This release shows <productname>PostgreSQL</> moving beyond the
|
|
traditional relational-database feature set with new, ground-breaking
|
|
functionality that is unique to <productname>PostgreSQL</>.
|
|
The streaming replication feature introduced in release 9.0 is
|
|
significantly enhanced by adding a synchronous-replication option,
|
|
streaming backups, and monitoring improvements.
|
|
Major enhancements include:
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
|
|
<!-- This list duplicates items below, but without authors or details-->
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <link linkend="synchronous-replication">synchronous
|
|
replication</link>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add support for <link linkend="SQL-CREATEFOREIGNTABLE">foreign
|
|
tables</link>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add per-column <link
|
|
linkend="collation">collation</link> support
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link linkend="extend-extensions">extensions</link> which
|
|
simplify packaging of additions to <productname>PostgreSQL</>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a true <link
|
|
linkend="xact-serializable">serializable isolation level</link>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support unlogged tables using the <literal>UNLOGGED</>
|
|
option in <link linkend="SQL-CREATETABLE"><command>CREATE
|
|
TABLE</></link>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow data-modification commands
|
|
(<command>INSERT</>/<command>UPDATE</>/<command>DELETE</>) in
|
|
<link linkend="queries-with"><literal>WITH</></link> clauses
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add nearest-neighbor (order-by-operator) searching to <link
|
|
linkend="GiST"><acronym>GiST</> indexes</link>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a <link linkend="SQL-SECURITY-LABEL"><command>SECURITY
|
|
LABEL</></link> command and support for
|
|
<link linkend="sepgsql"><acronym>SELinux</> permissions control</link>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update the <link linkend="plpython">PL/Python</link> server-side
|
|
language
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<para>
|
|
The above items are explained in more detail in the sections below.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
|
|
<title>Migration to Version 9.1</title>
|
|
|
|
<para>
|
|
A dump/restore using <application>pg_dump</application>,
|
|
or use of <application>pg_upgrade</application>, is required
|
|
for those wishing to migrate data from any previous
|
|
release.
|
|
</para>
|
|
|
|
<para>
|
|
Version 9.1 contains a number of changes that may affect compatibility
|
|
with previous releases. Observe the following incompatibilities:
|
|
</para>
|
|
|
|
<sect3>
|
|
<title>Strings</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Change the default value of <link
|
|
linkend="guc-standard-conforming-strings"><varname>standard_conforming_strings</></link>
|
|
to on (Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
By default, backslashes are now ordinary characters in string literals,
|
|
not escape characters. This change removes a long-standing
|
|
incompatibility with the SQL standard. <link
|
|
linkend="guc-escape-string-warning"><varname>escape_string_warning</></link>
|
|
has produced warnings about this usage for years. <literal>E''</>
|
|
strings are the proper way to embed backslash escapes in strings and are
|
|
unaffected by this change.
|
|
</para>
|
|
|
|
<warning>
|
|
<para>
|
|
This change can break applications that are not expecting it and
|
|
do their own string escaping according to the old rules. The
|
|
consequences could be as severe as introducing SQL-injection security
|
|
holes. Be sure to test applications that are exposed to untrusted
|
|
input, to ensure that they correctly handle single quotes and
|
|
backslashes in text strings.
|
|
</para>
|
|
</warning>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Casting</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Disallow function-style and attribute-style data type casts for
|
|
composite types (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
For example, disallow
|
|
<literal><replaceable>composite_value</>.text</literal> and
|
|
<literal>text(<replaceable>composite_value</>)</literal>.
|
|
Unintentional uses of this syntax have frequently resulted in bug
|
|
reports; although it was not a bug, it seems better to go back to
|
|
rejecting such expressions.
|
|
The <literal>CAST</> and <literal>::</> syntaxes are still available
|
|
for use when a cast of an entire composite value is actually intended.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Tighten casting checks for domains based on arrays (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
When a domain is based on an array type, it is allowed to <quote>look
|
|
through</> the domain type to access the array elements, including
|
|
subscripting the domain value to fetch or assign an element.
|
|
Assignment to an element of such a domain value, for instance via
|
|
<literal>UPDATE ... SET domaincol[5] = ...</>, will now result in
|
|
rechecking the domain type's constraints, whereas before the checks
|
|
were skipped.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Arrays</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Change <link
|
|
linkend="array-functions-table"><function>string_to_array()</></link>
|
|
to return an empty array for a zero-length string (Pavel
|
|
Stehule)
|
|
</para>
|
|
|
|
<para>
|
|
Previously this returned a null value.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Change <link
|
|
linkend="array-functions-table"><function>string_to_array()</></link>
|
|
so a <literal>NULL</> separator splits the string into characters
|
|
(Pavel Stehule)
|
|
</para>
|
|
|
|
<para>
|
|
Previously this returned a null value.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Object Modification</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix improper checks for before/after triggers (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Triggers can now be fired in three cases: <literal>BEFORE</>,
|
|
<literal>AFTER</>, or <literal>INSTEAD OF</> some action.
|
|
Trigger function authors should verify that their logic behaves
|
|
sanely in all three cases.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Require superuser or <literal>CREATEROLE</> permissions in order to
|
|
set comments on roles (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Server Settings</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Change <link
|
|
linkend="functions-recovery-info-table"><function>pg_last_xlog_receive_location()</></link>
|
|
so it never moves backwards (Fujii Masao)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, the value of <function>pg_last_xlog_receive_location()</>
|
|
could move backward when streaming replication is restarted.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Have logging of replication connections honor <link
|
|
linkend="guc-log-connections"><varname>log_connections</></link>
|
|
(Magnus Hagander)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, replication connections were always logged.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title><link linkend="plpgsql">PL/pgSQL</link> Server-Side Language</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Change PL/pgSQL's <literal>RAISE</> command without parameters
|
|
to be catchable by the attached exception block (Piyush Newe)
|
|
</para>
|
|
|
|
<para>
|
|
Previously <literal>RAISE</> in a code block was always scoped to
|
|
an attached exception block, so it was uncatchable at the same
|
|
scope.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Adjust PL/pgSQL's error line numbering code to be consistent
|
|
with other PLs (Pavel Stehule)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, PL/pgSQL would ignore (not count) an empty line at the
|
|
start of the function body. Since this was inconsistent with all
|
|
other languages, the special case was removed.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make PL/pgSQL complain about conflicting IN and OUT parameter names
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Formerly, the collision was not detected, and the name would just
|
|
silently refer to only the OUT parameter.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Type modifiers of PL/pgSQL variables are now visible to the SQL parser
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
A type modifier (such as a varchar length limit) attached to a PL/pgSQL
|
|
variable was formerly enforced during assignments, but was ignored for
|
|
all other purposes. Such variables will now behave more like table
|
|
columns declared with the same modifier. This is not expected to make
|
|
any visible difference in most cases, but it could result in subtle
|
|
changes for some SQL commands issued by PL/pgSQL functions.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Contrib</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
All contrib modules are now installed with <link
|
|
linkend="SQL-CREATEEXTENSION"><command>CREATE EXTENSION</></link>
|
|
rather than by manually invoking their SQL scripts
|
|
(Dimitri Fontaine, Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
To update an existing database containing the 9.0 version of a contrib
|
|
module, use <literal>CREATE EXTENSION ... FROM unpackaged</literal>
|
|
to wrap the existing contrib module's objects into an extension. When
|
|
updating from a pre-9.0 version, drop the contrib module's objects
|
|
using its old uninstall script, then use <literal>CREATE EXTENSION</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Other Incompatibilities</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <link
|
|
linkend="monitoring-stats-funcs-table"><function>pg_stat_reset()</></link>
|
|
reset all database-level statistics (Tomas Vondra)
|
|
</para>
|
|
|
|
<para>
|
|
Some <structname>pg_stat_database</> counters were not being reset.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix some <link
|
|
linkend="infoschema-triggers"><structname>information_schema.triggers</></link>
|
|
column names to match the new SQL-standard names (Dean Rasheed)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Treat <application>ECPG</> cursor names as case-insensitive
|
|
(Zoltan Boszormenyi)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<para>
|
|
Below you will find a detailed account of the changes between
|
|
<productname>PostgreSQL</productname> 9.1 and the previous major
|
|
release.
|
|
</para>
|
|
|
|
<sect3>
|
|
<title>Server</title>
|
|
|
|
<sect4>
|
|
<title>Performance</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support unlogged tables using the <literal>UNLOGGED</>
|
|
option in <link linkend="SQL-CREATETABLE"><command>CREATE
|
|
TABLE</></link> (Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
Such tables provide better update performance than regular tables,
|
|
but are not crash-safe: their contents are automatically cleared in
|
|
case of a server crash. Their contents do not propagate to
|
|
replication slaves, either.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <literal>FULL OUTER JOIN</literal> to be implemented as a
|
|
hash join, and allow either side of a <literal>LEFT OUTER JOIN</>
|
|
or <literal>RIGHT OUTER JOIN</> to be hashed (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Previously <literal>FULL OUTER JOIN</literal> could only be
|
|
implemented as a merge join, and <literal>LEFT OUTER JOIN</literal>
|
|
and <literal>RIGHT OUTER JOIN</literal> could hash only the nullable
|
|
side of the join. These changes provide additional query optimization
|
|
possibilities.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Merge duplicate fsync requests (Robert Haas, Greg Smith)
|
|
</para>
|
|
|
|
<para>
|
|
This greatly improves performance under heavy write loads.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve performance of <link
|
|
linkend="guc-commit-siblings"><varname>commit_siblings</></link>
|
|
(Greg Smith)
|
|
</para>
|
|
|
|
<para>
|
|
This allows the use of <varname>commit_siblings</varname> with
|
|
less overhead.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Reduce the memory requirement for large ispell dictionaries
|
|
(Pavel Stehule, Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid leaving data files open after <quote>blind writes</>
|
|
(Alvaro Herrera)
|
|
</para>
|
|
|
|
<para>
|
|
This fixes scenarios in which backends might hold files open long
|
|
after they were deleted, preventing the kernel from reclaiming
|
|
disk space.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Optimizer</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow inheritance table scans to return meaningfully-sorted
|
|
results (Greg Stark, Hans-Jurgen Schonig, Robert Haas, Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This allows better optimization of queries that use <literal>ORDER
|
|
BY</>, <literal>LIMIT</>, or <literal>MIN</>/<literal>MAX</> with
|
|
inherited tables.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve GIN index scan cost estimation (Teodor Sigaev)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve cost estimation for aggregates and window functions (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Authentication</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support host names and host suffixes
|
|
(e.g. <literal>.example.com</>) in <link
|
|
linkend="auth-pg-hba-conf"><filename>pg_hba.conf</></link>
|
|
(Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
Previously only host <acronym>IP</> addresses and <acronym>CIDR</>
|
|
values were supported.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support the key word <literal>all</> in the host column of <link
|
|
linkend="auth-pg-hba-conf"><filename>pg_hba.conf</></link>
|
|
(Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
Previously people used <literal>0.0.0.0/0</> or <literal>::/0</>
|
|
for this.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Reject <literal>local</> lines in <link
|
|
linkend="auth-pg-hba-conf"><filename>pg_hba.conf</></link>
|
|
on platforms that don't support Unix-socket connections
|
|
(Magnus Hagander)
|
|
</para>
|
|
|
|
<para>
|
|
Formerly, such lines were silently ignored, which could be surprising.
|
|
This makes the behavior more like other unsupported cases.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <link linkend="gssapi-auth"><acronym>GSSAPI</></link>
|
|
to be used to authenticate to servers via <link
|
|
linkend="sspi-auth"><acronym>SSPI</></link> (Christian Ullrich)
|
|
</para>
|
|
|
|
<para>
|
|
Specifically this allows Unix-based <acronym>GSSAPI</> clients
|
|
to do <acronym>SSPI</> authentication with Windows servers.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<link linkend="auth-ident"><literal>ident</literal></link>
|
|
authentication over local sockets is now known as
|
|
<link linkend="auth-peer"><literal>peer</literal></link>
|
|
(Magnus Hagander)
|
|
</para>
|
|
|
|
<para>
|
|
The old term is still accepted for backward compatibility, but since
|
|
the two methods are fundamentally different, it seemed better to adopt
|
|
different names for them.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Rewrite <link linkend="auth-peer"><acronym>peer</></link>
|
|
authentication to avoid use of credential control messages (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This change makes the peer authentication code simpler and
|
|
better-performing. However, it requires the platform to provide the
|
|
<function>getpeereid</> function or an equivalent socket operation.
|
|
So far as is known, the only platform for which peer authentication
|
|
worked before and now will not is pre-5.0 NetBSD.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Monitoring</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add details to the logging of restartpoints and checkpoints,
|
|
which is controlled by <link
|
|
linkend="guc-log-checkpoints"><varname>log_checkpoints</></link>
|
|
(Fujii Masao, Greg Smith)
|
|
</para>
|
|
|
|
<para>
|
|
New details include <acronym>WAL</> file and sync activity.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link
|
|
linkend="guc-log-file-mode"><varname>log_file_mode</></link>
|
|
which controls the permissions on log files created by the
|
|
logging collector (Martin Pihlak)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Reduce the default maximum line length for <application>syslog</>
|
|
logging to 900 bytes plus prefixes (Noah Misch)
|
|
</para>
|
|
|
|
<para>
|
|
This avoids truncation of long log lines on syslog implementations
|
|
that have a 1KB length limit, rather than the more common 2KB.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Statistical Views</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <structfield>client_hostname</structfield> column to <link
|
|
linkend="monitoring-stats-views-table"><structname>pg_stat_activity</></link>
|
|
(Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
Previously only the client address was reported.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link
|
|
linkend="monitoring-stats-views-table"><structname>pg_stat_xact_*</></link>
|
|
statistics functions and views (Joel Jacobson)
|
|
</para>
|
|
|
|
<para>
|
|
These are like the database-wide statistics counter views, but
|
|
reflect counts for only the current transaction.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add time of last reset in database-level and background writer
|
|
statistics views (Tomas Vondra)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add columns showing the number of vacuum and analyze operations
|
|
in <link
|
|
linkend="monitoring-stats-views-table"><structname>pg_stat_*_tables</></link>
|
|
views (Magnus Hagander)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <structfield>buffers_backend_fsync</> column to <link
|
|
linkend="monitoring-stats-views-table"><structname>pg_stat_bgwriter</></link>
|
|
(Greg Smith)
|
|
</para>
|
|
|
|
<para>
|
|
This new column counts the number of times a backend fsyncs a
|
|
buffer.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Server Settings</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Provide auto-tuning of <link
|
|
linkend="guc-wal-buffers"><varname>wal_buffers</></link> (Greg
|
|
Smith)
|
|
</para>
|
|
|
|
<para>
|
|
By default, the value of <varname>wal_buffers</> is now chosen
|
|
automatically based on the value of <varname>shared_buffers</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Increase the maximum values for
|
|
<link linkend="guc-deadlock-timeout"><varname>deadlock_timeout</varname></link>,
|
|
<link linkend="guc-log-min-duration-statement"><varname>log_min_duration_statement</varname></link>, and
|
|
<link linkend="guc-log-autovacuum-min-duration"><varname>log_autovacuum_min_duration</varname></link>
|
|
(Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
The maximum value for each of these parameters was previously
|
|
only about 35 minutes. Much larger values are now allowed.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Replication and Recovery</title>
|
|
|
|
<sect4>
|
|
<title>Streaming Replication and Continuous Archiving</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <link linkend="synchronous-replication">synchronous
|
|
replication</link> (Simon Riggs, Fujii Masao)
|
|
</para>
|
|
|
|
<para>
|
|
This allows the primary server to wait for a standby to write a
|
|
transaction's information to disk before acknowledging the commit.
|
|
One standby at a time can take the role of the synchronous standby,
|
|
as controlled by the
|
|
<link linkend="guc-synchronous-standby-names"><varname>synchronous_standby_names</varname></link>
|
|
setting. Synchronous replication can be enabled or disabled on a
|
|
per-transaction basis using the
|
|
<link linkend="guc-synchronous-commit"><varname>synchronous_commit</></link>
|
|
setting.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add protocol support for sending file system backups to standby servers
|
|
using the streaming replication network connection (Magnus Hagander,
|
|
Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
This avoids the requirement of manually transferring a file
|
|
system backup when setting up a standby server.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add
|
|
<link linkend="guc-replication-timeout"><varname>replication_timeout</></link>
|
|
setting (Fujii Masao, Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
Replication connections that are idle for more than the
|
|
<varname>replication_timeout</> interval will be terminated
|
|
automatically. Formerly, a failed connection was typically not
|
|
detected until the TCP timeout elapsed, which is inconveniently
|
|
long in many situations.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add command-line tool <link
|
|
linkend="app-pgbasebackup"><application>pg_basebackup</></link>
|
|
for creating a new standby server or database backup (Magnus
|
|
Hagander)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a <link linkend="SQL-CREATEROLE">replication permission</link>
|
|
for roles (Magnus Hagander)
|
|
</para>
|
|
|
|
<para>
|
|
This is a read-only permission used for streaming replication.
|
|
It allows a non-superuser role to be used for replication connections.
|
|
Previously only superusers could initiate replication
|
|
connections; superusers still have this permission by default.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Replication Monitoring</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add system view <link
|
|
linkend="monitoring-stats-views-table"><structname>pg_stat_replication</></link>
|
|
which displays activity of <acronym>WAL</> sender processes (Itagaki
|
|
Takahiro, Simon Riggs)
|
|
</para>
|
|
|
|
<para>
|
|
This reports the status of all connected standby servers.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add monitoring function <link
|
|
linkend="functions-recovery-info-table"><function>pg_last_xact_replay_timestamp()</></link>
|
|
(Fujii Masao)
|
|
</para>
|
|
|
|
<para>
|
|
This returns the time at which the primary generated the most
|
|
recent commit or abort record applied on the standby.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Hot Standby</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add configuration parameter <link
|
|
linkend="guc-hot-standby-feedback"><varname>hot_standby_feedback</></link>
|
|
to enable standbys to postpone cleanup of old row versions on the
|
|
primary (Simon Riggs)
|
|
</para>
|
|
|
|
<para>
|
|
This helps avoid canceling long-running queries on the standby.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add the <link
|
|
linkend="monitoring-stats-views-table"><structname>pg_stat_database_conflicts</></link>
|
|
system view to show queries that have been canceled and the
|
|
reason (Magnus Hagander)
|
|
</para>
|
|
|
|
<para>
|
|
Cancellations can occur because of dropped tablespaces, lock
|
|
timeouts, old snapshots, pinned buffers, and deadlocks.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a <structfield>conflicts</> count to <link
|
|
linkend="monitoring-stats-views-table"><structname>pg_stat_database</></link>
|
|
(Magnus Hagander)
|
|
</para>
|
|
|
|
<para>
|
|
This is the number of conflicts that occurred in the database.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Increase the maximum values for
|
|
<link linkend="guc-max-standby-archive-delay"><varname>max_standby_archive_delay</varname></link> and
|
|
<link linkend="guc-max-standby-streaming-delay"><varname>max_standby_streaming_delay</varname></link>
|
|
</para>
|
|
|
|
<para>
|
|
The maximum value for each of these parameters was previously
|
|
only about 35 minutes. Much larger values are now allowed.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link
|
|
linkend="errcodes-table"><literal>ERRCODE_T_R_DATABASE_DROPPED</></link>
|
|
error code to report recovery conflicts due to dropped databases
|
|
(Tatsuo Ishii)
|
|
</para>
|
|
|
|
<para>
|
|
This is useful for connection pooling software.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Recovery Control</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add functions to control streaming replication replay (Simon Riggs)
|
|
</para>
|
|
|
|
<para>
|
|
The new functions are <link
|
|
linkend="functions-recovery-control-table"><function>pg_xlog_replay_pause()</></link>,
|
|
<link
|
|
linkend="functions-recovery-control-table"><function>pg_xlog_replay_resume()</></link>,
|
|
and the status function <link
|
|
linkend="functions-recovery-control-table"><function>pg_is_xlog_replay_paused()</></link>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <filename>recovery.conf</> setting <link
|
|
linkend="pause-at-recovery-target"><varname>pause_at_recovery_target</></link>
|
|
to pause recovery at target (Simon Riggs)
|
|
</para>
|
|
|
|
<para>
|
|
This allows a recovery server to be queried to check whether
|
|
the recovery point is the one desired.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add the ability to create named restore points using <link
|
|
linkend="functions-admin-backup-table"><function>pg_create_restore_point()</></link>
|
|
(Jaime Casanova)
|
|
</para>
|
|
|
|
<para>
|
|
These named restore points can be specified as recovery
|
|
targets using the new <filename>recovery.conf</> setting
|
|
<link linkend="recovery-target-name"><varname>recovery_target_name</></link>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow standby recovery to switch to a new timeline automatically
|
|
(Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
Now standby servers scan the archive directory for new
|
|
timelines periodically.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link
|
|
linkend="guc-restart-after-crash"><varname>restart_after_crash</></link>
|
|
setting which disables automatic server restart after a backend
|
|
crash (Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
This allows external cluster management software to control
|
|
whether the database server restarts or not.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <link
|
|
linkend="recovery-config"><filename>recovery.conf</></link>
|
|
to use the same quoting behavior as <filename>postgresql.conf</>
|
|
(Dimitri Fontaine)
|
|
</para>
|
|
|
|
<para>
|
|
Previously all values had to be quoted.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Queries</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a true <link
|
|
linkend="xact-serializable">serializable isolation level</link>
|
|
(Kevin Grittner, Dan Ports)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, asking for serializable isolation guaranteed only that a
|
|
single MVCC snapshot would be used for the entire transaction, which
|
|
allowed certain documented anomalies. The old snapshot isolation
|
|
behavior is still available by requesting the <link
|
|
linkend="xact-repeatable-read"><literal>REPEATABLE READ</></link>
|
|
isolation level.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow data-modification commands
|
|
(<command>INSERT</>/<command>UPDATE</>/<command>DELETE</>) in
|
|
<link linkend="queries-with"><literal>WITH</></link> clauses
|
|
(Marko Tiikkaja, Hitoshi Harada)
|
|
</para>
|
|
|
|
<para>
|
|
These commands can use <literal>RETURNING</> to pass data up to the
|
|
containing query.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <link linkend="queries-with"><literal>WITH</></link>
|
|
clauses to be attached to <command>INSERT</>, <command>UPDATE</>,
|
|
<command>DELETE</> statements (Marko Tiikkaja, Hitoshi Harada)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow non-<link linkend="queries-group"><literal>GROUP
|
|
BY</></link> columns in the query target list when the primary
|
|
key is specified in the <literal>GROUP BY</> clause (Peter
|
|
Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
The SQL standard allows this behavior, and
|
|
because of the primary key, the result is unambiguous.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow use of the key word <literal>DISTINCT</> in <link
|
|
linkend="queries-union"><literal>UNION</>/<literal>INTERSECT</>/<literal>EXCEPT</></link>
|
|
clauses (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
<literal>DISTINCT</> is the default behavior so use of this
|
|
key word is redundant, but the SQL standard allows it.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix ordinary queries with rules to use the same snapshot behavior
|
|
as <command>EXPLAIN ANALYZE</> (Marko Tiikkaja)
|
|
</para>
|
|
|
|
<para>
|
|
Previously <command>EXPLAIN ANALYZE</> used slightly different
|
|
snapshot timing for queries involving rules. The
|
|
<command>EXPLAIN ANALYZE</> behavior was judged to be more logical.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<sect4>
|
|
<title>Strings</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add per-column <link
|
|
linkend="collation">collation</link> support
|
|
(Peter Eisentraut, Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Previously collation (the sort ordering of text strings) could only be
|
|
chosen at database creation.
|
|
Collation can now be set per column, domain, index, or
|
|
expression, via the SQL-standard <literal>COLLATE</> clause.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Object Manipulation</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link linkend="extend-extensions">extensions</link> which
|
|
simplify packaging of additions to <productname>PostgreSQL</>
|
|
(Dimitri Fontaine, Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Extensions are controlled by the new <link
|
|
linkend="SQL-CREATEEXTENSION"><command>CREATE</></link>/<link
|
|
linkend="SQL-ALTEREXTENSION"><command>ALTER</></link>/<link
|
|
linkend="SQL-DROPEXTENSION"><command>DROP EXTENSION</></link>
|
|
commands. This replaces ad-hoc methods of grouping objects that
|
|
are added to a <productname>PostgreSQL</> installation.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add support for <link linkend="SQL-CREATEFOREIGNTABLE">foreign
|
|
tables</link> (Shigeru Hanada, Robert Haas, Jan Urbanski,
|
|
Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
This allows data stored outside the database to be used like
|
|
native <productname>PostgreSQL</>-stored data. Foreign tables
|
|
are currently read-only, however.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow new values to be added to an existing enum type via
|
|
<link linkend="SQL-ALTERTYPE"><command>ALTER TYPE</></link> (Andrew
|
|
Dunstan)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link linkend="SQL-ALTERTYPE"><command>ALTER TYPE ...
|
|
ADD/DROP/ALTER/RENAME ATTRIBUTE</></link> (Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
This allows modification of composite types.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<sect4>
|
|
<title><command>ALTER</> Object</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <literal>RESTRICT</>/<literal>CASCADE</> to <link
|
|
linkend="SQL-ALTERTYPE"><command>ALTER TYPE</></link> operations
|
|
on typed tables (Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
This controls
|
|
<literal>ADD</>/<literal>DROP</>/<literal>ALTER</>/<literal>RENAME
|
|
ATTRIBUTE</> cascading behavior.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support <literal>ALTER TABLE <replaceable>name</> {OF | NOT OF}
|
|
<replaceable>type</></literal>
|
|
(Noah Misch)
|
|
</para>
|
|
|
|
<para>
|
|
This syntax allows a standalone table to be made into a typed table,
|
|
or a typed table to be made standalone.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add support for more object types in <command>ALTER ... SET
|
|
SCHEMA</> commands (Dimitri Fontaine)
|
|
</para>
|
|
|
|
<para>
|
|
This command is now supported for conversions, operators, operator
|
|
classes, operator families, text search configurations, text search
|
|
dictionaries, text search parsers, and text search templates.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title><link linkend="SQL-CREATETABLE"><command>CREATE/ALTER TABLE</></link></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <command>ALTER TABLE ...
|
|
ADD UNIQUE/PRIMARY KEY USING INDEX</command>
|
|
(Gurjeet Singh)
|
|
</para>
|
|
|
|
<para>
|
|
This allows a primary key or unique constraint to be defined using an
|
|
existing unique index, including a concurrently created unique index.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <command>ALTER TABLE</>
|
|
to add foreign keys without validation (Simon Riggs)
|
|
</para>
|
|
|
|
<para>
|
|
The new option is called <literal>NOT VALID</>. The constraint's
|
|
state can later be modified to <literal>VALIDATED</> and validation
|
|
checks performed. Together these allow you to add a foreign key
|
|
with minimal impact on read and write operations.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <link linkend="SQL-ALTERTABLE"><command>ALTER TABLE
|
|
... SET DATA TYPE</command></link> to avoid table rewrites in
|
|
appropriate cases (Noah Misch, Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
For example, converting a <type>varchar</> column to
|
|
<type>text</> no longer requires a rewrite of the table.
|
|
However, increasing the length constraint on a
|
|
<type>varchar</> column still requires a table rewrite.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link linkend="SQL-CREATETABLE"><command>CREATE TABLE IF
|
|
NOT EXISTS</></link> syntax (Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
This allows table creation without causing an error if the
|
|
table already exists.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible <quote>tuple concurrently updated</quote> error
|
|
when two backends attempt to add an inheritance
|
|
child to the same table at the same time (Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
<link linkend="sql-altertable"><command>ALTER TABLE</command></link>
|
|
now takes a stronger lock on the parent table, so that the sessions
|
|
cannot try to update it simultaneously.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Object Permissions</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a <link linkend="SQL-SECURITY-LABEL"><command>SECURITY
|
|
LABEL</></link> command (KaiGai Kohei)
|
|
</para>
|
|
|
|
<para>
|
|
This allows security labels to be assigned to objects.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Utility Operations</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add transaction-level <link linkend="advisory-locks">advisory
|
|
locks</link> (Marko Tiikkaja)
|
|
</para>
|
|
|
|
<para>
|
|
These are similar to the existing session-level advisory locks,
|
|
but such locks are automatically released at transaction end.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <link linkend="SQL-TRUNCATE"><command>TRUNCATE ... RESTART
|
|
IDENTITY</></link> restart sequences transactionally (Steve
|
|
Singer)
|
|
</para>
|
|
|
|
<para>
|
|
Previously the counter could have been left out of sync if a
|
|
backend crashed between the on-commit truncation activity and
|
|
commit completion.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<sect4>
|
|
<title><link linkend="SQL-COPY"><command>COPY</></link></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <literal>ENCODING</> option to <link
|
|
linkend="SQL-COPY"><command>COPY TO/FROM</></link> (Hitoshi
|
|
Harada, Itagaki Takahiro)
|
|
</para>
|
|
|
|
<para>
|
|
This allows the encoding of the <command>COPY</> file to be
|
|
specified separately from client encoding.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add bidirectional <link linkend="SQL-COPY"><command>COPY</></link>
|
|
protocol support (Fujii Masao)
|
|
</para>
|
|
|
|
<para>
|
|
This is currently only used by streaming replication.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title><link linkend="SQL-EXPLAIN"><command>EXPLAIN</></link></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <command>EXPLAIN VERBOSE</> show the function call expression
|
|
in a <literal>FunctionScan</literal> node (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title><link linkend="SQL-VACUUM"><command>VACUUM</></link></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add additional details to the output of <link
|
|
linkend="SQL-VACUUM"><command>VACUUM FULL VERBOSE</></link>
|
|
and <link linkend="SQL-CLUSTER"><command>CLUSTER VERBOSE</></link>
|
|
(Itagaki Takahiro)
|
|
</para>
|
|
|
|
<para>
|
|
New information includes the live and dead tuple count and
|
|
whether <command>CLUSTER</> is using an index to rebuild.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent <link linkend="autovacuum">autovacuum</link> from
|
|
waiting if it cannot acquire a table lock (Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
It will try to vacuum that table later.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title><link linkend="SQL-CLUSTER"><command>CLUSTER</></link></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <command>CLUSTER</> to sort the table rather than scanning
|
|
the index when it seems likely to be cheaper (Leonardo Francalanci)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Indexes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add nearest-neighbor (order-by-operator) searching to <link
|
|
linkend="GiST"><acronym>GiST</> indexes</link> (Teodor Sigaev, Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This allows <acronym>GiST</> indexes to quickly return the
|
|
<replaceable>N</> closest values in a query with <literal>LIMIT</>.
|
|
For example
|
|
<programlisting><![CDATA[
|
|
SELECT * FROM places ORDER BY location <-> point '(101,456)' LIMIT 10;
|
|
]]>
|
|
</programlisting>
|
|
finds the ten places closest to a given target point.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <link linkend="GIN"><acronym>GIN</> indexes</link> to index null
|
|
and empty values (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This allows full <acronym>GIN</> index scans, and fixes various
|
|
corner cases in which GIN scans would fail.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <link linkend="GIN"><acronym>GIN</> indexes</link> to
|
|
better recognize duplicate search entries (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This reduces the cost of index scans, especially in cases where
|
|
it avoids unnecessary full index scans.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <link linkend="GiST"><acronym>GiST</> indexes</link> to be fully
|
|
crash-safe (Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
Previously there were rare cases where a <command>REINDEX</>
|
|
would be required (you would be informed).
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Data Types</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <type>numeric</> to use a more compact, two-byte header
|
|
in common cases (Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
Previously all <type>numeric</> values had four-byte headers;
|
|
this change saves on disk storage.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add support for dividing <type>money</> by <type>money</>
|
|
(Andy Balholm)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow binary I/O on type <type>void</type> (Radoslaw Smogura)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve hypotenuse calculations for geometric operators (Paul Matthews)
|
|
</para>
|
|
|
|
<para>
|
|
This avoids unnecessary overflows, and may also be more accurate.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support hashing array values (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This provides additional query optimization possibilities.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Don't treat a composite type as sortable unless all its column types
|
|
are sortable (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This avoids possible <quote>could not identify a comparison function</>
|
|
failures at runtime, if it is possible to implement the query without
|
|
sorting. Also, <command>ANALYZE</> won't try to use inappropriate
|
|
statistics-gathering methods for columns of such composite types.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<sect4>
|
|
<title>Casting</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add support for casting between <type>money</> and <type>numeric</>
|
|
(Andy Balholm)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add support for casting from <type>int4</> and <type>int8</>
|
|
to <type>money</> (Joey Adams)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow casting a table's row type to the table's supertype if
|
|
it's a typed table (Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
This is analogous to the existing facility that allows casting a row
|
|
type to a supertable's row type.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title><link linkend="functions-xml"><acronym>XML</></link></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <acronym>XML</> function <link
|
|
linkend="xml-exists"><literal>XMLEXISTS</></link> and <link
|
|
linkend="xml-exists"><function>xpath_exists()</></link>
|
|
functions (Mike Fowler)
|
|
</para>
|
|
|
|
<para>
|
|
These are used for XPath matching.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <acronym>XML</> functions <link
|
|
linkend="xml-is-well-formed"><function>xml_is_well_formed()</></link>,
|
|
<link
|
|
linkend="xml-is-well-formed"><function>xml_is_well_formed_document()</></link>,
|
|
<link
|
|
linkend="xml-is-well-formed"><function>xml_is_well_formed_content()</></link>
|
|
(Mike Fowler)
|
|
</para>
|
|
|
|
<para>
|
|
These check whether the input is properly-formed <acronym>XML</>.
|
|
They provide functionality that was previously available only in
|
|
the deprecated <filename>contrib/xml2</filename> module.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Functions</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add SQL function <link
|
|
linkend="format"><function>format(text, ...)</></link>, which
|
|
behaves analogously to C's <function>printf()</> (Pavel Stehule,
|
|
Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
It currently supports formats for strings, SQL literals, and
|
|
SQL identifiers.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add string functions <link
|
|
linkend="functions-string-other"><function>concat()</></link>,
|
|
<link
|
|
linkend="functions-string-other"><function>concat_ws()</></link>,
|
|
<link linkend="functions-string-other"><function>left()</></link>,
|
|
<link linkend="functions-string-other"><function>right()</></link>,
|
|
and <link
|
|
linkend="functions-string-other"><function>reverse()</></link>
|
|
(Pavel Stehule)
|
|
</para>
|
|
|
|
<para>
|
|
These improve compatibility with other database products.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add function <link
|
|
linkend="functions-admin-genfile"><function>pg_read_binary_file()</></link>
|
|
to read binary files (Dimitri Fontaine, Itagaki Takahiro)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a single-parameter version of function <link
|
|
linkend="functions-admin-genfile"><function>pg_read_file()</></link>
|
|
to read an entire file (Dimitri Fontaine, Itagaki Takahiro)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add three-parameter forms of <link
|
|
linkend="array-functions-table"><function>array_to_string()</></link>
|
|
and <link
|
|
linkend="array-functions-table"><function>string_to_array()</></link>
|
|
for null value processing control (Pavel Stehule)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<sect4>
|
|
<title>Object Information Functions</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add the <link
|
|
linkend="functions-info-catalog-table"><function>pg_describe_object()</></link>
|
|
function (Alvaro Herrera)
|
|
</para>
|
|
|
|
<para>
|
|
This function is used to obtain a human-readable string describing
|
|
an object, based on the <link
|
|
linkend="catalog-pg-class"><structname>pg_class</structname></link>
|
|
OID, object OID, and sub-object ID. It can be used to help
|
|
interpret the contents of <link
|
|
linkend="catalog-pg-depend"><structname>pg_depend</structname></link>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Update comments for built-in operators and their underlying
|
|
functions (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Functions that are meant to be used via an associated operator
|
|
are now commented as such.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add variable <link
|
|
linkend="guc-quote-all-identifiers"><varname>quote_all_identifiers</></link>
|
|
to force the quoting of all identifiers in <command>EXPLAIN</>
|
|
and in system catalog functions like <link
|
|
linkend="functions-info-catalog-table"><function>pg_get_viewdef()</></link>
|
|
(Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
This makes exporting schemas to tools and other databases with
|
|
different quoting rules easier.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add columns to the <link
|
|
linkend="infoschema-sequences"><structname>information_schema.sequences</></link>
|
|
system view (Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, though the view existed, the columns about the
|
|
sequence parameters were unimplemented.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <literal>public</> as a pseudo-role name in <link
|
|
linkend="functions-info-access-table"><function>has_table_privilege()</></link>
|
|
and related functions (Alvaro Herrera)
|
|
</para>
|
|
|
|
<para>
|
|
This allows checking for public permissions.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Function and Trigger Creation</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support <link linkend="SQL-CREATETRIGGER"><literal>INSTEAD
|
|
OF</></link> triggers on views (Dean Rasheed)
|
|
</para>
|
|
|
|
<para>
|
|
This feature can be used to implement fully updatable views.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Server-Side Languages</title>
|
|
|
|
<sect4>
|
|
<title><link linkend="plpgsql">PL/pgSQL</link> Server-Side Language</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link linkend="plpgsql-foreach-array"><command>FOREACH IN
|
|
ARRAY</></link> to PL/pgSQL
|
|
(Pavel Stehule)
|
|
</para>
|
|
|
|
<para>
|
|
This is more efficient and readable than previous methods of
|
|
iterating through the elements of an array value.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <command>RAISE</command> without parameters to be caught in
|
|
the same places that could catch a <command>RAISE ERROR</command>
|
|
from the same location (Piyush Newe)
|
|
</para>
|
|
|
|
<para>
|
|
The previous coding threw the error
|
|
from the block containing the active exception handler.
|
|
The new behavior is more consistent with other DBMS products.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title><link linkend="plperl">PL/Perl</link> Server-Side Language</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow generic record arguments to PL/Perl functions (Andrew
|
|
Dunstan)
|
|
</para>
|
|
|
|
<para>
|
|
PL/Perl functions can now be declared to accept type <type>record</>.
|
|
The behavior is the same as for any named composite type.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Convert PL/Perl array arguments to Perl arrays (Alexey Klyukin,
|
|
Alex Hunsaker)
|
|
</para>
|
|
|
|
<para>
|
|
String representations are still available.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Convert PL/Perl composite-type arguments to Perl hashes
|
|
(Alexey Klyukin, Alex Hunsaker)
|
|
</para>
|
|
|
|
<para>
|
|
String representations are still available.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title><link linkend="plpython">PL/Python</link> Server-Side Language</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add table function support for PL/Python (Jan Urbanski)
|
|
</para>
|
|
|
|
<para>
|
|
PL/Python can now return multiple <literal>OUT</> parameters
|
|
and record sets.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a validator to PL/Python (Jan Urbanski)
|
|
</para>
|
|
|
|
<para>
|
|
This allows PL/Python functions to be syntax-checked at function
|
|
creation time.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow exceptions for SQL queries in PL/Python (Jan Urbanski)
|
|
</para>
|
|
|
|
<para>
|
|
This allows access to SQL-generated exception error codes from
|
|
PL/Python exception blocks.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add explicit subtransactions to PL/Python (Jan Urbanski)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add PL/Python functions for quoting strings (Jan Urbanski)
|
|
</para>
|
|
|
|
<para>
|
|
These functions are <link
|
|
linkend="plpython-util"><literal>plpy.quote_ident</></link>,
|
|
<link linkend="plpython-util"><literal>plpy.quote_literal</></link>,
|
|
and <link
|
|
linkend="plpython-util"><literal>plpy.quote_nullable</></link>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add traceback information to PL/Python errors (Jan Urbanski)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Report PL/Python errors from iterators with <literal>PLy_elog</> (Jan
|
|
Urbanski)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix exception handling with Python 3 (Jan Urbanski)
|
|
</para>
|
|
|
|
<para>
|
|
Exception classes were previously not available in
|
|
<literal>plpy</> under Python 3.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Client Applications</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Mark <link
|
|
linkend="APP-CREATELANG"><application>createlang</></link>
|
|
and <link linkend="APP-DROPLANG"><application>droplang</></link>
|
|
as deprecated now that they just invoke extension commands (Tom
|
|
Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<sect4>
|
|
<title><link linkend="APP-PSQL"><application>psql</></link></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <application>psql</> command <literal>\conninfo</>
|
|
to show current connection information (David Christensen)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <application>psql</> command <literal>\sf</> to
|
|
show a function's definition (Pavel Stehule)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <application>psql</> command <literal>\dL</> to list
|
|
languages (Fernando Ike)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add the <option>S</> (<quote>system</>) option to <application>psql</>'s
|
|
<literal>\dn</> (list schemas) command (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
<literal>\dn</> without <literal>S</> now suppresses system
|
|
schemas.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <application>psql</>'s <literal>\e</> and <literal>\ef</>
|
|
commands to accept a line number to be used to position the
|
|
cursor in the editor (Pavel Stehule)
|
|
</para>
|
|
|
|
<para>
|
|
This is passed to the editor according to the
|
|
<envar>PSQL_EDITOR_LINENUMBER_ARG</> environment variable.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Have <application>psql</> set the client encoding from the
|
|
operating system locale by default (Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
This only happens if the <envar>PGCLIENTENCODING</> environment
|
|
variable is not set.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <literal>\d</literal> distinguish between unique
|
|
indexes and unique constraints (Josh Kupershmidt)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <literal>\dt+</literal> report <function>pg_table_size</>
|
|
instead of <function>pg_relation_size</> when talking to 9.0 or
|
|
later servers (Bernd Helmle)
|
|
</para>
|
|
|
|
<para>
|
|
This is a more useful measure of table size, but note that it is
|
|
not identical to what was previously reported in the same display.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Additional tab completion support (Itagaki Takahiro, Pavel Stehule,
|
|
Andrey Popp, Christoph Berg, David Fetter, Josh Kupershmidt)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title><link linkend="APP-PGDUMP"><application>pg_dump</></link></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link linkend="APP-PGDUMP"><application>pg_dump</></link>
|
|
and <link
|
|
linkend="APP-PG-DUMPALL"><application>pg_dumpall</></link>
|
|
option <option>--quote-all-identifiers</> to force quoting
|
|
of all identifiers (Robert Haas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <literal>directory</> format to <application>pg_dump</>
|
|
(Joachim Wieland, Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
This is internally similar to the <literal>tar</>
|
|
<application>pg_dump</> format.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title><link linkend="APP-PG-CTL"><application>pg_ctl</></link></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>pg_ctl</>
|
|
so it no longer incorrectly reports that the server is not
|
|
running (Bruce Momjian)
|
|
</para>
|
|
|
|
<para>
|
|
Previously this could happen if the server was running but
|
|
<application>pg_ctl</> could not authenticate.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve <application>pg_ctl</> start's <quote>wait</quote>
|
|
(<option>-w</>) option (Bruce Momjian, Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
The wait mode is now significantly more robust. It will not get
|
|
confused by non-default postmaster port numbers, non-default
|
|
Unix-domain socket locations, permission problems, or stale
|
|
postmaster lock files.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <literal>promote</> option to <application>pg_ctl</> to
|
|
switch a standby server to primary (Fujii Masao)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title><application>Development Tools</></title>
|
|
|
|
<sect4>
|
|
<title><link linkend="libpq"><application>libpq</></link></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a libpq connection option <link
|
|
linkend="libpq-connect-client-encoding"><literal>client_encoding</></link>
|
|
which behaves like the <envar>PGCLIENTENCODING</> environment
|
|
variable (Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
The value <literal>auto</> sets the client encoding based on
|
|
the operating system locale.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link
|
|
linkend="libpq-pqlibversion"><function>PQlibVersion()</></link>
|
|
function which returns the libpq library version (Magnus
|
|
Hagander)
|
|
</para>
|
|
|
|
<para>
|
|
libpq already had <function>PQserverVersion()</> which returns
|
|
the server version.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow libpq-using clients to
|
|
check the user name of the server process
|
|
when connecting via Unix-domain sockets, with the new <link
|
|
linkend="libpq-connect-requirepeer"><literal>requirepeer</></link>
|
|
connection option
|
|
(Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
<productname>PostgreSQL</> already allowed servers to check
|
|
the client user name when connecting via Unix-domain sockets.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link linkend="libpq-pqping"><function>PQping()</></link>
|
|
and <link
|
|
linkend="libpq-pqpingparams"><function>PQpingParams()</></link>
|
|
to libpq (Bruce Momjian, Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
These functions allow detection of the server's status without
|
|
trying to open a new session.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title><link linkend="ecpg"><application>ECPG</></link></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow ECPG to accept dynamic cursor names even in
|
|
<literal>WHERE CURRENT OF</literal> clauses
|
|
(Zoltan Boszormenyi)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <application>ecpglib</> write <type>double</> values with a
|
|
precision of 15 digits, not 14 as formerly (Akira Kurosawa)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Build Options</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Use <literal>+Olibmerrno</> compile flag with HP-UX C compilers
|
|
that accept it (Ibrar Ahmed)
|
|
</para>
|
|
|
|
<para>
|
|
This avoids possible misbehavior of math library calls on recent
|
|
HP platforms.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<sect4>
|
|
<title>Makefiles</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improved parallel make support (Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
This allows for faster compiles. Also, <literal>make -k</>
|
|
now works more consistently.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Require <acronym>GNU</> <link
|
|
linkend="install-requirements"><application>make</></link>
|
|
3.80 or newer (Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
This is necessary because of the parallel-make improvements.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <literal>make maintainer-check</> target
|
|
(Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
This target performs various source code checks that are not
|
|
appropriate for either the build or the regression tests. Currently:
|
|
duplicate_oids, SGML syntax and tabs check, NLS syntax check.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support <literal>make check</> in <filename>contrib</>
|
|
(Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
Formerly only <literal>make installcheck</> worked, but now
|
|
there is support for testing in a temporary installation.
|
|
The top-level <literal>make check-world</> target now includes
|
|
testing <filename>contrib</> this way.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Windows</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
On Windows, allow <link
|
|
linkend="app-pg-ctl"><application>pg_ctl</></link> to register
|
|
the service as auto-start or start-on-demand (Quan Zongliang)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add support for collecting <link linkend="windows-crash-dumps">crash
|
|
dumps</link> on Windows (Craig Ringer, Magnus Hagander)
|
|
</para>
|
|
|
|
<para>
|
|
<productname>minidumps</> can now be generated by non-debug
|
|
Windows binaries and analyzed by standard debugging tools.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Enable building with the MinGW64 compiler (Andrew Dunstan)
|
|
</para>
|
|
|
|
<para>
|
|
This allows building 64-bit Windows binaries even on non-Windows
|
|
platforms via cross-compiling.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Source Code</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Revise the API for GUC variable assign hooks (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
The previous functions of assign hooks are now split between check
|
|
hooks and assign hooks, where the former can fail but the latter
|
|
shouldn't. This change will impact add-on modules that define custom
|
|
GUC parameters.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add latches to the source code to support waiting for events (Heikki
|
|
Linnakangas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Centralize data modification permissions-checking logic
|
|
(KaiGai Kohei)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add missing <function>get_<replaceable>object</>_oid()</function> functions, for consistency
|
|
(Robert Haas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve ability to use C++ compilers for <link
|
|
linkend="xfunc-c">compiling add-on modules</link> by removing
|
|
conflicting key words (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add support for DragonFly <acronym>BSD</> (Rumko)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Expose <function>quote_literal_cstr()</> for backend use
|
|
(Robert Haas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Run <link linkend="build">regression tests</link> in the
|
|
default encoding (Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
Regression tests were previously always run with
|
|
<literal>SQL_ASCII</> encoding.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <application>src/tools/git_changelog</> to replace
|
|
<application>cvs2cl</> and <application>pgcvslog</> (Robert
|
|
Haas, Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <application>git-external-diff</> script to
|
|
<filename>src/tools</> (Bruce Momjian)
|
|
</para>
|
|
|
|
<para>
|
|
This is used to generate context diffs from git.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve support for building with
|
|
<application>Clang</application> (Peter Eisentraut)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<sect4>
|
|
<title>Server Hooks</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add source code hooks to check permissions (Robert Haas,
|
|
Stephen Frost)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add post-object-creation function hooks for use by security
|
|
frameworks (KaiGai Kohei)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a client authentication hook (KaiGai Kohei)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Contrib</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Modify <filename>contrib</> modules and procedural
|
|
languages to install via the new <link
|
|
linkend="extend-extensions">extension</link> mechanism (Tom Lane,
|
|
Dimitri Fontaine)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link linkend="file-fdw"><filename>contrib/file_fdw</></link>
|
|
foreign-data wrapper (Shigeru Hanada)
|
|
</para>
|
|
|
|
<para>
|
|
Foreign tables using this foreign data wrapper can read flat files
|
|
in a manner very similar to <command>COPY</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add nearest-neighbor search support to <link
|
|
linkend="pgtrgm"><filename>contrib/pg_trgm</></link> and <link
|
|
linkend="btree-gist"><filename>contrib/btree_gist</></link>
|
|
(Teodor Sigaev)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link
|
|
linkend="btree-gist"><filename>contrib/btree_gist</></link>
|
|
support for searching on not-equals (Jeff Davis)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <link
|
|
linkend="fuzzystrmatch"><filename>contrib/fuzzystrmatch</></link>'s
|
|
<function>levenshtein()</> function to handle multibyte characters
|
|
(Alexander Korotkov)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <function>ssl_cipher()</> and <function>ssl_version()</>
|
|
functions to <link
|
|
linkend="sslinfo"><filename>contrib/sslinfo</></link> (Robert
|
|
Haas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <link linkend="intarray"><filename>contrib/intarray</></link>
|
|
and <link linkend="hstore"><filename>contrib/hstore</></link>
|
|
to give consistent results with indexed empty arrays (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Previously an empty-array query that used an index might return
|
|
different results from one that used a sequential scan.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <link linkend="intarray"><filename>contrib/intarray</></link>
|
|
to work properly on multidimensional arrays (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
In
|
|
<link linkend="intarray"><filename>contrib/intarray</></link>,
|
|
avoid errors complaining about the presence of nulls in cases where no
|
|
nulls are actually present (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
In
|
|
<link linkend="intarray"><filename>contrib/intarray</></link>,
|
|
fix behavior of containment operators with respect to empty arrays
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Empty arrays are now correctly considered to be contained in any other
|
|
array.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Remove <link linkend="xml2"><filename>contrib/xml2</></link>'s
|
|
arbitrary limit on the number of
|
|
<replaceable>parameter</>=<replaceable>value</> pairs that can be
|
|
handled by <function>xslt_process()</> (Pavel Stehule)
|
|
</para>
|
|
|
|
<para>
|
|
The previous limit was 10.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
In <link linkend="pageinspect"><filename>contrib/pageinspect</></link>,
|
|
fix heap_page_item to return infomasks as 32-bit values (Alvaro Herrera)
|
|
</para>
|
|
|
|
<para>
|
|
This avoids returning negative values, which was confusing. The
|
|
underlying value is a 16-bit unsigned integer.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<sect4>
|
|
<title>Security</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link linkend="sepgsql"><filename>contrib/sepgsql</></link>
|
|
to interface permission checks with <acronym>SELinux</> (KaiGai Kohei)
|
|
</para>
|
|
|
|
<para>
|
|
This uses the new <link
|
|
linkend="SQL-SECURITY-LABEL"><command>SECURITY LABEL</></link>
|
|
facility.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add contrib module <link
|
|
linkend="auth-delay"><filename>auth_delay</></link> (KaiGai
|
|
Kohei)
|
|
</para>
|
|
|
|
<para>
|
|
This causes the server to pause before returning authentication
|
|
failure; it is designed to make brute force password attacks
|
|
more difficult.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link linkend="dummy-seclabel"><filename>dummy_seclabel</></link>
|
|
contrib module (KaiGai Kohei)
|
|
</para>
|
|
|
|
<para>
|
|
This is used for permission regression testing.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Performance</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add support for <literal>LIKE</> and <literal>ILIKE</> index
|
|
searches to <link
|
|
linkend="pgtrgm"><filename>contrib/pg_trgm</></link> (Alexander
|
|
Korotkov)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <function>levenshtein_less_equal()</> function to <link
|
|
linkend="fuzzystrmatch"><filename>contrib/fuzzystrmatch</></link>,
|
|
which is optimized for small distances (Alexander Korotkov)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve performance of index lookups on <link
|
|
linkend="seg"><filename>contrib/seg</></link> columns (Alexander
|
|
Korotkov)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve performance of <link
|
|
linkend="pgupgrade"><application>pg_upgrade</></link> for
|
|
databases with many relations (Bruce Momjian)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add flag to <link
|
|
linkend="pgbench"><filename>contrib/pgbench</></link> to
|
|
report per-statement latencies (Florian Pflug)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Fsync Testing</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Move <filename>src/tools/test_fsync</> to <link
|
|
linkend="pgtestfsync"><filename>contrib/pg_test_fsync</></link>
|
|
(Bruce Momjian, Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <literal>O_DIRECT</> support to <link
|
|
linkend="pgtestfsync"><filename>contrib/pg_test_fsync</></link>
|
|
(Bruce Momjian)
|
|
</para>
|
|
|
|
<para>
|
|
This matches the use of <literal>O_DIRECT</> by <link
|
|
linkend="guc-wal-sync-method"><varname>wal_sync_method</></link>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add new tests to <link
|
|
linkend="pgtestfsync"><filename>contrib/pg_test_fsync</></link>
|
|
(Bruce Momjian)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Documentation</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Extensive <link linkend="ecpg"><application>ECPG</></link>
|
|
documentation improvements (Satoshi Nagayasu)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Extensive proofreading and documentation improvements
|
|
(Thom Brown, Josh Kupershmidt, Susanne Ebrecht)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add documentation for <link
|
|
linkend="guc-exit-on-error"><varname>exit_on_error</></link>
|
|
(Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
This parameter causes sessions to exit on any error.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add documentation for <link
|
|
linkend="functions-info-catalog-table"><function>pg_options_to_table()</></link>
|
|
(Josh Berkus)
|
|
</para>
|
|
|
|
<para>
|
|
This function shows table storage options in a readable form.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Document that it is possible to access all composite type
|
|
fields using <link
|
|
linkend="field-selection"><literal>(compositeval).*</></link>
|
|
syntax (Peter Eisentraut)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Document that <link
|
|
linkend="functions-string-other"><function>translate()</></link>
|
|
removes characters in <literal>from</> that don't have a
|
|
corresponding <literal>to</> character (Josh Kupershmidt)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Merge documentation for <command>CREATE CONSTRAINT TRIGGER</> and <link
|
|
linkend="SQL-CREATETRIGGER"><command>CREATE TRIGGER</></link>
|
|
(Alvaro Herrera)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Centralize <link linkend="ddl-priv">permission</link> and <link
|
|
linkend="upgrading">upgrade</link> documentation (Bruce Momjian)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link linkend="sysvipc-parameters">kernel tuning
|
|
documentation</link> for Solaris 10 (Josh Berkus)
|
|
</para>
|
|
|
|
<para>
|
|
Previously only Solaris 9 kernel tuning was documented.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Handle non-ASCII characters consistently in <filename>HISTORY</> file
|
|
(Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
While the <filename>HISTORY</> file is in English, we do have to deal
|
|
with non-ASCII letters in contributor names. These are now
|
|
transliterated so that they are reasonably legible without assumptions
|
|
about character set.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
</sect2>
|
|
</sect1>
|