3386 lines
99 KiB
Plaintext
3386 lines
99 KiB
Plaintext
<!-- doc/src/sgml/release-9.4.sgml -->
|
|
<!-- See header comment in release.sgml about typical markup -->
|
|
|
|
<sect1 id="release-9-4-1">
|
|
<title>Release 9.4.1</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2015-02-05</simpara>
|
|
</note>
|
|
|
|
<para>
|
|
This release contains a variety of fixes from 9.4.0.
|
|
For information about new features in the 9.4 major release, see
|
|
<xref linkend="release-9-4">.
|
|
</para>
|
|
|
|
<sect2>
|
|
<title>Migration to Version 9.4.1</title>
|
|
|
|
<para>
|
|
A dump/restore is not required for those running 9.4.X.
|
|
</para>
|
|
|
|
<para>
|
|
However, if you are a Windows user and are using the <quote>Norwegian
|
|
(Bokmål)</> locale, manual action is needed after the upgrade to
|
|
replace any <quote>Norwegian (Bokmål)_Norway</>
|
|
or <quote>norwegian-bokmal</> locale names stored
|
|
in <productname>PostgreSQL</> system catalogs with the plain-ASCII
|
|
alias <quote>Norwegian_Norway</>. For details see
|
|
<ulink url="http://wiki.postgresql.org/wiki/Changes_To_Norwegian_Locale"></>
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<!--
|
|
Author: Bruce Momjian <bruce@momjian.us>
|
|
Branch: master [0150ab567] 2015-02-02 10:00:44 -0500
|
|
Branch: REL9_4_STABLE [1628a0bbf] 2015-02-02 10:00:49 -0500
|
|
Branch: REL9_3_STABLE [b8b580147] 2015-02-02 10:00:50 -0500
|
|
Branch: REL9_2_STABLE [5ae3bf1af] 2015-02-02 10:00:50 -0500
|
|
Branch: REL9_1_STABLE [037529a11] 2015-02-02 10:00:51 -0500
|
|
Branch: REL9_0_STABLE [611e110aa] 2015-02-02 10:00:52 -0500
|
|
Author: Bruce Momjian <bruce@momjian.us>
|
|
Branch: master [9241c84cb] 2015-02-02 10:00:45 -0500
|
|
Branch: REL9_4_STABLE [56d2bee9d] 2015-02-02 10:00:49 -0500
|
|
Branch: REL9_3_STABLE [fe2526990] 2015-02-02 10:00:50 -0500
|
|
Branch: REL9_2_STABLE [e09651e9d] 2015-02-02 10:00:50 -0500
|
|
Branch: REL9_1_STABLE [2ceb63deb] 2015-02-02 10:00:51 -0500
|
|
Branch: REL9_0_STABLE [56b970f2e] 2015-02-02 10:00:52 -0500
|
|
-->
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix buffer overruns in <function>to_char()</>
|
|
(Bruce Momjian)
|
|
</para>
|
|
|
|
<para>
|
|
When <function>to_char()</> processes a numeric formatting template
|
|
calling for a large number of digits, <productname>PostgreSQL</>
|
|
would read past the end of a buffer. When processing a crafted
|
|
timestamp formatting template, <productname>PostgreSQL</> would write
|
|
past the end of a buffer. Either case could crash the server.
|
|
We have not ruled out the possibility of attacks that lead to
|
|
privilege escalation, though they seem unlikely.
|
|
(CVE-2015-0241)
|
|
</para>
|
|
</listitem>
|
|
|
|
<!--
|
|
Author: Bruce Momjian <bruce@momjian.us>
|
|
Branch: master [29725b3db] 2015-02-02 10:00:45 -0500
|
|
Branch: REL9_4_STABLE [2ac95c83c] 2015-02-02 10:00:49 -0500
|
|
Branch: REL9_3_STABLE [bc4d5f2e5] 2015-02-02 10:00:50 -0500
|
|
Branch: REL9_2_STABLE [c6c6aa288] 2015-02-02 10:00:51 -0500
|
|
Branch: REL9_1_STABLE [98f2479d8] 2015-02-02 10:00:51 -0500
|
|
Branch: REL9_0_STABLE [9e05c5063] 2015-02-02 10:00:52 -0500
|
|
-->
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix buffer overrun in replacement <function>*printf()</> functions
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
<productname>PostgreSQL</> includes a replacement implementation
|
|
of <function>printf</> and related functions. This code will overrun
|
|
a stack buffer when formatting a floating point number (conversion
|
|
specifiers <literal>e</>, <literal>E</>, <literal>f</>, <literal>F</>,
|
|
<literal>g</> or <literal>G</>) with requested precision greater than
|
|
about 500. This will crash the server, and we have not ruled out the
|
|
possibility of attacks that lead to privilege escalation.
|
|
A database user can trigger such a buffer overrun through
|
|
the <function>to_char()</> SQL function. While that is the only
|
|
affected core <productname>PostgreSQL</> functionality, extension
|
|
modules that use printf-family functions may be at risk as well.
|
|
</para>
|
|
|
|
<para>
|
|
This issue primarily affects <productname>PostgreSQL</> on Windows.
|
|
<productname>PostgreSQL</> uses the system implementation of these
|
|
functions where adequate, which it is on other modern platforms.
|
|
(CVE-2015-0242)
|
|
</para>
|
|
</listitem>
|
|
|
|
<!--
|
|
Author: Noah Misch <noah@leadboat.com>
|
|
Branch: master [1dc755158] 2015-02-02 10:00:45 -0500
|
|
Branch: REL9_4_STABLE [82806cf4e] 2015-02-02 10:00:49 -0500
|
|
Branch: REL9_3_STABLE [6994f0790] 2015-02-02 10:00:50 -0500
|
|
Branch: REL9_2_STABLE [d95ebe0ac] 2015-02-02 10:00:51 -0500
|
|
Branch: REL9_1_STABLE [11f738a8a] 2015-02-02 10:00:51 -0500
|
|
Branch: REL9_0_STABLE [ce6f261cd] 2015-02-02 10:00:52 -0500
|
|
Author: Noah Misch <noah@leadboat.com>
|
|
Branch: master [8b59672d8] 2015-02-02 10:00:45 -0500
|
|
Branch: REL9_4_STABLE [258e294db] 2015-02-02 10:00:49 -0500
|
|
Branch: REL9_3_STABLE [a558ad3a7] 2015-02-02 10:00:50 -0500
|
|
Branch: REL9_2_STABLE [d1972da8c] 2015-02-02 10:00:51 -0500
|
|
Branch: REL9_1_STABLE [8d412e02e] 2015-02-02 10:00:52 -0500
|
|
Branch: REL9_0_STABLE [0a3ee8a5f] 2015-02-02 10:00:52 -0500
|
|
-->
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix buffer overruns in <filename>contrib/pgcrypto</>
|
|
(Marko Tiikkaja, Noah Misch)
|
|
</para>
|
|
|
|
<para>
|
|
Errors in memory size tracking within the <filename>pgcrypto</>
|
|
module permitted stack buffer overruns and improper dependence on the
|
|
contents of uninitialized memory. The buffer overrun cases can
|
|
crash the server, and we have not ruled out the possibility of
|
|
attacks that lead to privilege escalation.
|
|
(CVE-2015-0243)
|
|
</para>
|
|
</listitem>
|
|
|
|
<!--
|
|
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
|
|
Branch: master [2b3a8b20c] 2015-02-02 17:09:53 +0200
|
|
Branch: REL9_4_STABLE [57ec87c6b] 2015-02-02 17:09:46 +0200
|
|
Branch: REL9_3_STABLE [cd19848bd] 2015-02-02 17:09:40 +0200
|
|
Branch: REL9_2_STABLE [289592b23] 2015-02-02 17:09:35 +0200
|
|
Branch: REL9_1_STABLE [af9c5c074] 2015-02-02 17:09:31 +0200
|
|
Branch: REL9_0_STABLE [47ba0fbd7] 2015-02-02 17:09:25 +0200
|
|
-->
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible loss of frontend/backend protocol synchronization after
|
|
an error
|
|
(Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
If any error occurred while the server was in the middle of reading a
|
|
protocol message from the client, it could lose synchronization and
|
|
incorrectly try to interpret part of the message's data as a new
|
|
protocol message. An attacker able to submit crafted binary data
|
|
within a command parameter might succeed in injecting his own SQL
|
|
commands this way. Statement timeout and query cancellation are the
|
|
most likely sources of errors triggering this scenario. Particularly
|
|
vulnerable are applications that use a timeout and also submit
|
|
arbitrary user-crafted data as binary query parameters. Disabling
|
|
statement timeout will reduce, but not eliminate, the risk of
|
|
exploit. Our thanks to Emil Lenngren for reporting this issue.
|
|
(CVE-2015-0244)
|
|
</para>
|
|
</listitem>
|
|
|
|
<!--
|
|
Author: Stephen Frost <sfrost@snowman.net>
|
|
Branch: master [804b6b6db] 2015-01-28 12:31:30 -0500
|
|
Branch: REL9_4_STABLE [3cc74a3d6] 2015-01-28 12:32:06 -0500
|
|
Branch: REL9_3_STABLE [4b9874216] 2015-01-28 12:32:39 -0500
|
|
Branch: REL9_2_STABLE [d49f84b08] 2015-01-28 12:32:56 -0500
|
|
Branch: REL9_1_STABLE [9406884af] 2015-01-28 12:33:15 -0500
|
|
Branch: REL9_0_STABLE [3a2063369] 2015-01-28 12:33:29 -0500
|
|
-->
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix information leak via constraint-violation error messages
|
|
(Stephen Frost)
|
|
</para>
|
|
|
|
<para>
|
|
Some server error messages show the values of columns that violate
|
|
a constraint, such as a unique constraint. If the user does not have
|
|
<literal>SELECT</> privilege on all columns of the table, this could
|
|
mean exposing values that the user should not be able to see. Adjust
|
|
the code so that values are displayed only when they came from the SQL
|
|
command or could be selected by the user.
|
|
(CVE-2014-8161)
|
|
</para>
|
|
</listitem>
|
|
|
|
<!--
|
|
Author: Noah Misch <noah@leadboat.com>
|
|
Branch: master [f6dc6dd5b] 2014-12-17 22:48:40 -0500
|
|
Branch: REL9_4_STABLE [6b87d423d] 2014-12-17 22:48:45 -0500
|
|
Branch: REL9_3_STABLE [442dc2c35] 2014-12-17 22:48:46 -0500
|
|
Branch: REL9_2_STABLE [0046f651d] 2014-12-17 22:48:47 -0500
|
|
Branch: REL9_1_STABLE [6aa98e957] 2014-12-17 22:48:47 -0500
|
|
Branch: REL9_0_STABLE [6d45ee572] 2014-12-17 22:48:48 -0500
|
|
-->
|
|
|
|
<listitem>
|
|
<para>
|
|
Lock down regression testing's temporary installations on Windows
|
|
(Noah Misch)
|
|
</para>
|
|
|
|
<para>
|
|
Use SSPI authentication to allow connections only from the OS user
|
|
who launched the test suite. This closes on Windows the same
|
|
vulnerability previously closed on other platforms, namely that other
|
|
users might be able to connect to the test postmaster.
|
|
(CVE-2014-0067)
|
|
</para>
|
|
</listitem>
|
|
|
|
<!--
|
|
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
|
|
Branch: REL9_3_STABLE [8f80dcf3c] 2014-10-24 19:59:49 +0300
|
|
Branch: REL9_2_STABLE [d440c4b55] 2014-10-24 19:59:52 +0300
|
|
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
|
|
Branch: REL9_3_STABLE [2a1b34959] 2014-10-24 19:36:28 +0300
|
|
Branch: REL9_2_STABLE [737ae3fc7] 2014-10-24 19:53:27 +0300
|
|
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
|
|
Branch: master [aa1d2fc5e] 2015-01-16 13:28:19 +0200
|
|
Branch: REL9_4_STABLE [2049a7d82] 2015-01-16 13:10:06 +0200
|
|
Branch: REL9_3_STABLE [1619442a1] 2015-01-16 13:10:15 +0200
|
|
Branch: REL9_2_STABLE [6bf343c6e] 2015-01-16 13:10:23 +0200
|
|
-->
|
|
|
|
<listitem>
|
|
<para>
|
|
Cope with the Windows locale named <quote>Norwegian (Bokmål)</>
|
|
(Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
Non-ASCII locale names are problematic since it's not clear what
|
|
encoding they should be represented in. Map the troublesome locale
|
|
name to a plain-ASCII alias, <quote>Norwegian_Norway</>.
|
|
</para>
|
|
|
|
<para>
|
|
9.4.0 mapped the troublesome name to <quote>norwegian-bokmal</>,
|
|
but that turns out not to work on all Windows configurations.
|
|
<quote>Norwegian_Norway</> is now recommended instead.
|
|
</para>
|
|
</listitem>
|
|
|
|
<!--
|
|
Author: Tom Lane <tgl@sss.pgh.pa.us>
|
|
Branch: master [c480cb9d2] 2015-01-15 18:52:58 -0500
|
|
Branch: REL9_4_STABLE [b75d18bd4] 2015-01-15 18:53:05 -0500
|
|
Branch: REL9_3_STABLE [34668c8ec] 2015-01-15 18:52:28 -0500
|
|
Branch: REL9_2_STABLE [0acb32efb] 2015-01-15 18:52:31 -0500
|
|
Branch: REL9_1_STABLE [450530fce] 2015-01-15 18:52:34 -0500
|
|
Branch: REL9_0_STABLE [5308e085b] 2015-01-15 18:52:38 -0500
|
|
-->
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix use-of-already-freed-memory problem in EvalPlanQual processing
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
In <literal>READ COMMITTED</> mode, queries that lock or update
|
|
recently-updated rows could crash as a result of this bug.
|
|
</para>
|
|
</listitem>
|
|
|
|
<!--
|
|
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
|
|
Branch: master [0e5680f47] 2014-12-26 13:52:27 -0300
|
|
Branch: REL9_4_STABLE [0e3a1f71d] 2014-12-26 13:52:27 -0300
|
|
Branch: REL9_3_STABLE [048912386] 2014-12-26 13:52:27 -0300
|
|
-->
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid possible deadlock while trying to acquire tuple locks
|
|
in EvalPlanQual processing (Álvaro Herrera, Mark Kirkwood)
|
|
</para>
|
|
</listitem>
|
|
|
|
<!--
|
|
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
|
|
Branch: master [d5e3d1e96] 2015-01-04 15:48:29 -0300
|
|
Branch: REL9_4_STABLE [51742063b] 2015-01-04 15:48:29 -0300
|
|
Branch: REL9_3_STABLE [54a8abc2b] 2015-01-04 15:48:29 -0300
|
|
-->
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix failure to wait when a transaction tries to acquire a <literal>FOR
|
|
NO KEY EXCLUSIVE</> tuple lock, while multiple other transactions
|
|
currently hold <literal>FOR SHARE</> locks (Álvaro Herrera)
|
|
</para>
|
|
</listitem>
|
|
|
|
<!--
|
|
Author: Tom Lane <tgl@sss.pgh.pa.us>
|
|
Branch: master [a5cd70dcb] 2015-01-15 13:18:12 -0500
|
|
Branch: REL9_4_STABLE [d25192892] 2015-01-15 13:18:16 -0500
|
|
Branch: REL9_3_STABLE [939f0fb67] 2015-01-15 13:18:19 -0500
|
|
-->
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve performance of <command>EXPLAIN</> with large range tables
|
|
(Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<!--
|
|
Author: Tom Lane <tgl@sss.pgh.pa.us>
|
|
Branch: master [451d28081] 2015-01-30 14:44:56 -0500
|
|
Branch: REL9_4_STABLE [4cbf390d5] 2015-01-30 14:44:49 -0500
|
|
-->
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <type>jsonb</> Unicode escape processing, and in consequence
|
|
disallow <literal>\u0000</> (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, the JSON Unicode escape <literal>\u0000</> was accepted
|
|
and was stored as those six characters; but that is indistinguishable
|
|
from what is stored for the input <literal>\\u0000</>, resulting in
|
|
ambiguity. Moreover, in cases where de-escaped textual output is
|
|
expected, such as the <literal>->></> operator, the sequence was
|
|
printed as <literal>\u0000</>, which does not meet the expectation
|
|
that JSON escaping would be removed. (Consistent behavior would
|
|
require emitting a zero byte, but <productname>PostgreSQL</> does not
|
|
support zero bytes embedded in text strings.) 9.4.0 included an
|
|
ill-advised attempt to improve this situation by adjusting JSON output
|
|
conversion rules; but of course that could not fix the fundamental
|
|
ambiguity, and it turned out to break other usages of Unicode escape
|
|
sequences. Revert that, and to avoid the core problem,
|
|
reject <literal>\u0000</> in <type>jsonb</> input.
|
|
</para>
|
|
|
|
<para>
|
|
If a <type>jsonb</> column contains a <literal>\u0000</> value stored
|
|
with 9.4.0, it will henceforth read out as though it
|
|
were <literal>\\u0000</>, which is the other valid interpretation of
|
|
the data stored by 9.4.0 for this case.
|
|
</para>
|
|
|
|
<para>
|
|
The <type>json</> type did not have the storage-ambiguity problem, but
|
|
it did have the problem of inconsistent de-escaped textual output.
|
|
Therefore <literal>\u0000</> will now also be rejected
|
|
in <type>json</> values when conversion to de-escaped form is
|
|
required. This change does not break the ability to
|
|
store <literal>\u0000</> in <type>json</> columns so long as no
|
|
processing is done on the values. This is exactly parallel to the
|
|
cases in which non-ASCII Unicode escapes are allowed when the database
|
|
encoding is not UTF8.
|
|
</para>
|
|
</listitem>
|
|
|
|
<!--
|
|
Author: Peter Eisentraut <peter_e@gmx.net>
|
|
Branch: master [79af9a1d2] 2015-01-06 23:06:13 -0500
|
|
Branch: REL9_4_STABLE [6bbf75192] 2015-01-17 22:11:20 -0500
|
|
Branch: REL9_3_STABLE [e32cb8d0e] 2015-01-17 22:13:27 -0500
|
|
Branch: REL9_2_STABLE [c8ef5b1ac] 2015-01-17 22:14:21 -0500
|
|
Branch: REL9_1_STABLE [c975fa471] 2015-01-17 22:37:07 -0500
|
|
Branch: REL9_0_STABLE [cebb3f032] 2015-01-17 22:37:32 -0500
|
|
-->
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix namespace handling in <function>xpath()</> (Ali Akbar)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, the <type>xml</> value resulting from
|
|
an <function>xpath()</> call would not have namespace declarations if
|
|
the namespace declarations were attached to an ancestor element in the
|
|
input <type>xml</> value, rather than to the specific element being
|
|
returned. Propagate the ancestral declaration so that the result is
|
|
correct when considered in isolation.
|
|
</para>
|
|
</listitem>
|
|
|
|
<!--
|
|
Author: Tom Lane <tgl@sss.pgh.pa.us>
|
|
Branch: master [3d660d33a] 2015-01-30 12:30:59 -0500
|
|
Branch: REL9_4_STABLE [b6a164e5c] 2015-01-30 12:31:08 -0500
|
|
Branch: REL9_3_STABLE [527ff8baf] 2015-01-30 12:30:43 -0500
|
|
-->
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix assorted oversights in range-operator selectivity estimation
|
|
(Emre Hasegeli)
|
|
</para>
|
|
|
|
<para>
|
|
This patch fixes corner-case <quote>unexpected operator NNNN</> planner
|
|
errors, and improves the selectivity estimates for some other cases.
|
|
</para>
|
|
</listitem>
|
|
|
|
<!--
|
|
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
|
|
Branch: master [930fd6845] 2014-12-30 14:53:11 +0200
|
|
Branch: REL9_4_STABLE [4e241f7cd] 2014-12-30 14:53:03 +0200
|
|
-->
|
|
|
|
<listitem>
|
|
<para>
|
|
Revert unintended reduction in maximum size of a GIN index item
|
|
(Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
9.4.0 could fail with <quote>index row size exceeds maximum</> errors
|
|
for data that previous versions would accept.
|
|
</para>
|
|
</listitem>
|
|
|
|
<!--
|
|
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
|
|
Branch: master [68fa75f31] 2015-01-30 17:58:23 +0100
|
|
Branch: REL9_4_STABLE [dc40ca696] 2015-01-30 17:59:17 +0100
|
|
-->
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix query-duration memory leak during repeated GIN index rescans
|
|
(Heikki Linnakangas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<!--
|
|
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
|
|
Branch: master [31ed42b9a] 2015-01-29 19:35:55 +0200
|
|
Branch: REL9_4_STABLE [28a37deab] 2015-01-29 19:37:29 +0200
|
|
Branch: REL9_3_STABLE [1c2774f37] 2015-01-29 19:37:27 +0200
|
|
Branch: REL9_2_STABLE [61729e99d] 2015-01-29 19:37:25 +0200
|
|
Branch: REL9_1_STABLE [37e0f13f2] 2015-01-29 19:37:22 +0200
|
|
-->
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix possible crash when using
|
|
nonzero <varname>gin_fuzzy_search_limit</> (Heikki Linnakangas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<!--
|
|
Author: Andres Freund <andres@anarazel.de>
|
|
Branch: master [3fabed070] 2015-01-07 00:19:37 +0100
|
|
Branch: REL9_4_STABLE [7da102154] 2015-01-07 00:24:58 +0100
|
|
Author: Andres Freund <andres@anarazel.de>
|
|
Branch: master [31912d01d] 2015-01-07 00:18:00 +0100
|
|
Branch: REL9_4_STABLE [84911ff51] 2015-01-07 00:24:47 +0100
|
|
-->
|
|
|
|
<listitem>
|
|
<para>
|
|
Assorted fixes for logical decoding (Andres Freund)
|
|
</para>
|
|
</listitem>
|
|
|
|
<!--
|
|
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
|
|
Branch: master [49b04188f] 2015-01-15 20:52:41 +0200
|
|
Branch: REL9_4_STABLE [b337d9657] 2015-01-15 20:52:18 +0200
|
|
-->
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix incorrect replay of WAL parameter change records that report
|
|
changes in the <varname>wal_log_hints</> setting (Petr Jelinek)
|
|
</para>
|
|
</listitem>
|
|
|
|
<!--
|
|
Author: Tom Lane <tgl@sss.pgh.pa.us>
|
|
Branch: master [75b48e1ff] 2015-01-19 23:01:33 -0500
|
|
Branch: REL9_4_STABLE [3387cbbcb] 2015-01-19 23:01:36 -0500
|
|
Branch: REL9_3_STABLE [19794e997] 2015-01-19 23:01:39 -0500
|
|
Branch: REL9_2_STABLE [33b723538] 2015-01-19 23:01:41 -0500
|
|
Branch: REL9_1_STABLE [b87c1dcef] 2015-01-19 23:01:44 -0500
|
|
Branch: REL9_0_STABLE [a1a8d0249] 2015-01-19 23:01:46 -0500
|
|
-->
|
|
|
|
<listitem>
|
|
<para>
|
|
Change <quote>pgstat wait timeout</> warning message to be LOG level,
|
|
and rephrase it to be more understandable (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This message was originally thought to be essentially a can't-happen
|
|
case, but it occurs often enough on our slower buildfarm members to be
|
|
a nuisance. Reduce it to LOG level, and expend a bit more effort on
|
|
the wording: it now reads <quote>using stale statistics instead of
|
|
current ones because stats collector is not responding</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<!--
|
|
Author: Noah Misch <noah@leadboat.com>
|
|
Branch: master [894459e59] 2015-01-07 22:35:44 -0500
|
|
Branch: REL9_4_STABLE [83fb1ca5c] 2015-01-07 22:36:35 -0500
|
|
Branch: REL9_3_STABLE [1a366d51e] 2015-01-07 22:40:40 -0500
|
|
Branch: REL9_2_STABLE [5ca4e444c] 2015-01-07 22:41:49 -0500
|
|
Branch: REL9_1_STABLE [8dc83104e] 2015-01-07 22:42:42 -0500
|
|
Branch: REL9_0_STABLE [2e4946169] 2015-01-07 22:46:20 -0500
|
|
-->
|
|
|
|
<listitem>
|
|
<para>
|
|
Warn if OS X's <function>setlocale()</> starts an unwanted extra
|
|
thread inside the postmaster (Noah Misch)
|
|
</para>
|
|
</listitem>
|
|
|
|
<!--
|
|
Author: Tom Lane <tgl@sss.pgh.pa.us>
|
|
Branch: master [080eabe2e] 2015-01-11 12:35:44 -0500
|
|
Branch: REL9_4_STABLE [733728ff3] 2015-01-11 12:35:47 -0500
|
|
-->
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>libpq</>'s behavior when <filename>/etc/passwd</>
|
|
isn't readable (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
While doing <function>PQsetdbLogin()</>, <application>libpq</>
|
|
attempts to ascertain the user's operating system name, which on most
|
|
Unix platforms involves reading <filename>/etc/passwd</>. As of 9.4,
|
|
failure to do that was treated as a hard error. Restore the previous
|
|
behavior, which was to fail only if the application does not provide a
|
|
database role name to connect as. This supports operation in chroot
|
|
environments that lack an <filename>/etc/passwd</> file.
|
|
</para>
|
|
</listitem>
|
|
|
|
<!--
|
|
Author: Tom Lane <tgl@sss.pgh.pa.us>
|
|
Branch: master [28551797a] 2014-12-31 12:18:50 -0500
|
|
Branch: REL9_4_STABLE [c35249939] 2014-12-31 12:16:57 -0500
|
|
Branch: REL9_3_STABLE [7582cce56] 2014-12-31 12:17:00 -0500
|
|
Branch: REL9_2_STABLE [64c506535] 2014-12-31 12:17:04 -0500
|
|
Branch: REL9_1_STABLE [1773e0702] 2014-12-31 12:17:08 -0500
|
|
Branch: REL9_0_STABLE [2600e4436] 2014-12-31 12:17:12 -0500
|
|
-->
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve consistency of parsing of <application>psql</>'s special
|
|
variables (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Allow variant spellings of <literal>on</> and <literal>off</> (such
|
|
as <literal>1</>/<literal>0</>) for <literal>ECHO_HIDDEN</>
|
|
and <literal>ON_ERROR_ROLLBACK</>. Report a warning for unrecognized
|
|
values for <literal>COMP_KEYWORD_CASE</>, <literal>ECHO</>,
|
|
<literal>ECHO_HIDDEN</>, <literal>HISTCONTROL</>,
|
|
<literal>ON_ERROR_ROLLBACK</>, and <literal>VERBOSITY</>. Recognize
|
|
all values for all these variables case-insensitively; previously
|
|
there was a mishmash of case-sensitive and case-insensitive behaviors.
|
|
</para>
|
|
</listitem>
|
|
|
|
<!--
|
|
Author: Tom Lane <tgl@sss.pgh.pa.us>
|
|
Branch: master [adfc157dd] 2015-01-05 19:27:04 -0500
|
|
Branch: REL9_4_STABLE [c99e41f68] 2015-01-05 19:27:06 -0500
|
|
Branch: REL9_3_STABLE [bb1e2426b] 2015-01-05 19:27:09 -0500
|
|
-->
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <application>pg_dump</> to handle comments on event triggers
|
|
without failing (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<!--
|
|
Author: Kevin Grittner <kgrittn@postgresql.org>
|
|
Branch: master [cff1bd2a3] 2015-01-30 08:57:24 -0600
|
|
Branch: REL9_4_STABLE [cb0168528] 2015-01-30 08:57:53 -0600
|
|
Branch: REL9_3_STABLE [cc609c46f] 2015-01-30 09:01:36 -0600
|
|
-->
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow parallel <application>pg_dump</> to
|
|
use <option>--serializable-deferrable</> (Kevin Grittner)
|
|
</para>
|
|
</listitem>
|
|
|
|
<!--
|
|
Author: Andres Freund <andres@anarazel.de>
|
|
Branch: master [2c0a48589] 2015-01-03 20:54:12 +0100
|
|
Branch: REL9_4_STABLE [90e4a2bf9] 2015-01-03 20:54:13 +0100
|
|
Branch: REL9_3_STABLE [f6cea4502] 2015-01-03 20:54:13 +0100
|
|
Branch: REL9_2_STABLE [f961ad479] 2015-01-03 20:54:13 +0100
|
|
Branch: REL9_1_STABLE [2a0bfa4d6] 2015-01-03 20:54:13 +0100
|
|
-->
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent WAL files created by <literal>pg_basebackup -x/-X</> from
|
|
being archived again when the standby is promoted (Andres Freund)
|
|
</para>
|
|
</listitem>
|
|
|
|
<!--
|
|
Author: Tom Lane <tgl@sss.pgh.pa.us>
|
|
Branch: master [37507962c] 2015-01-29 20:18:33 -0500
|
|
Branch: REL9_4_STABLE [202621d04] 2015-01-29 20:18:37 -0500
|
|
Branch: REL9_3_STABLE [53ae24692] 2015-01-29 20:18:40 -0500
|
|
Branch: REL9_2_STABLE [66cc74680] 2015-01-29 20:18:42 -0500
|
|
Branch: REL9_1_STABLE [290c2daad] 2015-01-29 20:18:44 -0500
|
|
Branch: REL9_0_STABLE [dc9a506e6] 2015-01-29 20:18:46 -0500
|
|
-->
|
|
|
|
<listitem>
|
|
<para>
|
|
Handle unexpected query results, especially NULLs, safely in
|
|
<filename>contrib/tablefunc</>'s <function>connectby()</>
|
|
(Michael Paquier)
|
|
</para>
|
|
|
|
<para>
|
|
<function>connectby()</> previously crashed if it encountered a NULL
|
|
key value. It now prints that row but doesn't recurse further.
|
|
</para>
|
|
</listitem>
|
|
|
|
<!--
|
|
Author: Tom Lane <tgl@sss.pgh.pa.us>
|
|
Branch: master [a59ee8819] 2015-01-30 13:05:30 -0500
|
|
Branch: REL9_4_STABLE [70da7aeba] 2015-01-30 13:04:59 -0500
|
|
Branch: REL9_3_STABLE [f08cf8ad9] 2015-01-30 13:05:01 -0500
|
|
Branch: REL9_2_STABLE [a97dfdfd9] 2015-01-30 13:05:04 -0500
|
|
Branch: REL9_1_STABLE [8f51c432c] 2015-01-30 13:05:07 -0500
|
|
Branch: REL9_0_STABLE [7c41a32b3] 2015-01-30 13:05:09 -0500
|
|
Author: Tom Lane <tgl@sss.pgh.pa.us>
|
|
Branch: REL9_3_STABLE [8824bae87] 2014-11-18 13:28:13 -0500
|
|
Author: Robert Haas <rhaas@postgresql.org>
|
|
Branch: master [0b49642b9] 2015-01-15 09:26:03 -0500
|
|
Branch: REL9_4_STABLE [7b65f194e] 2015-01-15 09:29:41 -0500
|
|
Branch: REL9_3_STABLE [ebbef4f39] 2015-01-15 09:29:55 -0500
|
|
Branch: REL9_2_STABLE [d452bfd1b] 2015-01-15 09:42:21 -0500
|
|
Branch: REL9_1_STABLE [151fb75b0] 2015-01-15 09:42:33 -0500
|
|
Branch: REL9_0_STABLE [0a67c0018] 2015-01-15 09:42:47 -0500
|
|
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
|
|
Branch: master [e37d474f9] 2015-01-13 14:33:05 +0200
|
|
Branch: REL9_4_STABLE [4ebb3494e] 2015-01-13 16:01:04 +0200
|
|
Author: Andres Freund <andres@anarazel.de>
|
|
Branch: master [8cadeb792] 2015-01-04 15:44:49 +0100
|
|
Branch: REL9_4_STABLE [7ced1b6c5] 2015-01-04 15:52:52 +0100
|
|
Branch: REL9_3_STABLE [a68b8aec7] 2015-01-04 15:53:08 +0100
|
|
Branch: REL9_2_STABLE [6f9b84a40] 2015-01-04 15:55:00 +0100
|
|
Author: Andres Freund <andres@anarazel.de>
|
|
Branch: master [58bc4747b] 2015-01-04 15:35:46 +0100
|
|
Branch: REL9_4_STABLE [2d8411a0a] 2015-01-04 15:35:46 +0100
|
|
Branch: REL9_3_STABLE [d33f36f16] 2015-01-04 15:35:47 +0100
|
|
Branch: REL9_2_STABLE [029e41afd] 2015-01-04 15:35:47 +0100
|
|
Branch: REL9_1_STABLE [39cdf365a] 2015-01-04 15:35:47 +0100
|
|
Branch: REL9_0_STABLE [17797e18d] 2015-01-04 15:35:48 +0100
|
|
Author: Andres Freund <andres@anarazel.de>
|
|
Branch: master [0398ece4c] 2015-01-04 14:36:21 +0100
|
|
Branch: REL9_4_STABLE [ff7d46b85] 2015-01-04 14:36:21 +0100
|
|
Branch: REL9_3_STABLE [ec14f1601] 2015-01-04 14:36:22 +0100
|
|
Branch: REL9_2_STABLE [f4060db11] 2015-01-04 14:36:22 +0100
|
|
Author: Tatsuo Ishii <ishii@postgresql.org>
|
|
Branch: master [3b5a89c48] 2014-12-30 20:33:01 +0900
|
|
Branch: REL9_4_STABLE [458e8bc65] 2014-12-30 20:27:26 +0900
|
|
Branch: REL9_3_STABLE [ed0e03283] 2014-12-30 20:20:56 +0900
|
|
Branch: REL9_2_STABLE [4db7eaae0] 2014-12-30 19:59:26 +0900
|
|
Branch: REL9_1_STABLE [4c136b0b6] 2014-12-30 19:48:53 +0900
|
|
Branch: REL9_0_STABLE [9b74f3574] 2014-12-30 19:37:55 +0900
|
|
Author: Tom Lane <tgl@sss.pgh.pa.us>
|
|
Branch: master [66709133c] 2014-12-16 15:35:33 -0500
|
|
Branch: REL9_4_STABLE [383d224a0] 2014-12-16 15:35:36 -0500
|
|
Branch: REL9_3_STABLE [53960e7eb] 2014-12-16 15:35:40 -0500
|
|
Branch: REL9_2_STABLE [e92c67ddc] 2014-12-16 15:35:43 -0500
|
|
Branch: REL9_1_STABLE [5c784d96a] 2014-12-16 15:35:46 -0500
|
|
Branch: REL9_0_STABLE [a2969bd72] 2014-12-16 15:35:49 -0500
|
|
Author: Tom Lane <tgl@sss.pgh.pa.us>
|
|
Branch: master [d38e8d30c] 2014-12-16 13:31:42 -0500
|
|
Branch: REL9_4_STABLE [6c75384ee] 2014-12-16 13:31:57 -0500
|
|
Branch: REL9_3_STABLE [3b750ec15] 2014-12-16 13:32:02 -0500
|
|
Branch: REL9_2_STABLE [5b2c8f04a] 2014-12-16 13:32:15 -0500
|
|
Branch: REL9_1_STABLE [926da211a] 2014-12-16 13:32:25 -0500
|
|
Branch: REL9_0_STABLE [961df1853] 2014-12-16 13:32:38 -0500
|
|
Author: Tom Lane <tgl@sss.pgh.pa.us>
|
|
Branch: master [586dd5d6a] 2015-01-24 13:05:42 -0500
|
|
Branch: REL9_4_STABLE [d51d4ff31] 2015-01-24 13:05:45 -0500
|
|
Branch: REL9_3_STABLE [7240f9200] 2015-01-24 13:05:49 -0500
|
|
Branch: REL9_2_STABLE [502e5f9c3] 2015-01-24 13:05:53 -0500
|
|
Branch: REL9_1_STABLE [b00a08859] 2015-01-24 13:05:56 -0500
|
|
Branch: REL9_0_STABLE [3a3ee655c] 2015-01-24 13:05:58 -0500
|
|
-->
|
|
|
|
<listitem>
|
|
<para>
|
|
Numerous cleanups of warnings from Coverity static code analyzer
|
|
(Andres Freund, Tatsuo Ishii, Marko Kreen, Tom Lane, Michael Paquier)
|
|
</para>
|
|
|
|
<para>
|
|
These changes are mostly cosmetic but in some cases fix corner-case
|
|
bugs, for example a crash rather than a proper error report after an
|
|
out-of-memory failure. None are believed to represent security
|
|
issues.
|
|
</para>
|
|
</listitem>
|
|
|
|
<!--
|
|
Author: Tom Lane <tgl@sss.pgh.pa.us>
|
|
Branch: master [85a2a8903] 2015-01-14 11:08:13 -0500
|
|
Branch: REL9_4_STABLE [adb355106] 2015-01-14 11:08:17 -0500
|
|
-->
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <varname>CFLAGS</> from <application>configure</>'s environment
|
|
to override automatically-supplied <varname>CFLAGS</> (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, <application>configure</> would add any switches that it
|
|
chose of its own accord to the end of the
|
|
user-specified <varname>CFLAGS</> string. Since most compilers
|
|
process switches left-to-right, this meant that configure's choices
|
|
would override the user-specified flags in case of conflicts. That
|
|
should work the other way around, so adjust the logic to put the
|
|
user's string at the end not the beginning.
|
|
</para>
|
|
</listitem>
|
|
|
|
<!--
|
|
Author: Tom Lane <tgl@sss.pgh.pa.us>
|
|
Branch: master [aa719391d] 2015-01-19 23:44:19 -0500
|
|
Branch: REL9_4_STABLE [3de9f22ac] 2015-01-19 23:44:22 -0500
|
|
Branch: REL9_3_STABLE [1681e2f74] 2015-01-19 23:44:24 -0500
|
|
Branch: REL9_2_STABLE [89b6a19e1] 2015-01-19 23:44:28 -0500
|
|
Branch: REL9_1_STABLE [f4f522deb] 2015-01-19 23:44:30 -0500
|
|
Branch: REL9_0_STABLE [338ff75fc] 2015-01-19 23:44:33 -0500
|
|
-->
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <application>pg_regress</> remove any temporary installation it
|
|
created upon successful exit (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This results in a very substantial reduction in disk space usage
|
|
during <literal>make check-world</>, since that sequence involves
|
|
creation of numerous temporary installations.
|
|
</para>
|
|
</listitem>
|
|
|
|
<!--
|
|
Author: Tom Lane <tgl@sss.pgh.pa.us>
|
|
Branch: master [5b89473d8] 2014-12-24 16:35:23 -0500
|
|
Branch: REL9_4_STABLE [068024719] 2014-12-24 16:35:34 -0500
|
|
-->
|
|
|
|
<listitem>
|
|
<para>
|
|
Add CST (China Standard Time) to our lists of timezone abbreviations
|
|
(Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<!--
|
|
Author: Tom Lane <tgl@sss.pgh.pa.us>
|
|
Branch: master [08bd0c581] 2015-01-30 22:45:44 -0500
|
|
Branch: REL9_4_STABLE [c2b06ab17] 2015-01-30 22:45:58 -0500
|
|
-->
|
|
|
|
<listitem>
|
|
<para>
|
|
Update time zone data files to <application>tzdata</> release 2015a
|
|
for DST law changes in Chile and Mexico, plus historical changes in
|
|
Iceland.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="release-9-4">
|
|
<title>Release 9.4</title>
|
|
|
|
<note>
|
|
<title>Release Date</title>
|
|
<simpara>2014-12-18</simpara>
|
|
</note>
|
|
|
|
<sect2>
|
|
<title>Overview</title>
|
|
|
|
<para>
|
|
Major enhancements in <productname>PostgreSQL</> 9.4 include:
|
|
</para>
|
|
|
|
<!-- This list duplicates items below, but without authors or details-->
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link linkend="datatype-json"><type>jsonb</></link>, a more
|
|
capable and efficient data type for storing <acronym>JSON</> data
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add new <acronym>SQL</> command <xref linkend="SQL-ALTERSYSTEM">
|
|
for changing <filename>postgresql.conf</> configuration file entries
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Reduce lock strength for some <xref linkend="SQL-ALTERTABLE">
|
|
commands
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <link linkend="rules-materializedviews">materialized views</>
|
|
to be refreshed without blocking concurrent reads
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add support for <link linkend="logicaldecoding">logical decoding</>
|
|
of WAL data, to allow database changes to be streamed out in a
|
|
customizable format
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <link linkend="bgworker">background worker processes</>
|
|
to be dynamically registered, started and terminated
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<para>
|
|
The above items are explained in more detail in the sections below.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
|
|
<title>Migration to Version 9.4</title>
|
|
|
|
<para>
|
|
A dump/restore using <xref linkend="app-pg-dumpall">, or use
|
|
of <xref linkend="pgupgrade">, is required for those wishing to migrate
|
|
data from any previous release.
|
|
</para>
|
|
|
|
<para>
|
|
Version 9.4 contains a number of changes that may affect compatibility
|
|
with previous releases. Observe the following incompatibilities:
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Tighten checks for multidimensional <link
|
|
linkend="arrays">array</link> input (Bruce Momjian)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, an input array string that started with a single-element
|
|
sub-array could later contain multi-element sub-arrays,
|
|
e.g. <literal>'{{1}, {2,3}}'::int[]</> would be accepted.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
When converting values of type <type>date</>, <type>timestamp</>
|
|
or <type>timestamptz</>
|
|
to <link linkend="datatype-json"><type>JSON</type></link>, render the
|
|
values in a format compliant with ISO 8601 (Andrew Dunstan)
|
|
</para>
|
|
|
|
<para>
|
|
Previously such values were rendered according to the current
|
|
<xref linkend="guc-datestyle"> setting; but many JSON processors
|
|
require timestamps to be in ISO 8601 format. If necessary, the
|
|
previous behavior can be obtained by explicitly casting the datetime
|
|
value to <type>text</> before passing it to the JSON conversion
|
|
function.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
The <link linkend="functions-json-op-table"><type>json</type>
|
|
<literal>#></> <type>text[]</></link> path extraction operator now
|
|
returns its lefthand input, not NULL, if the array is empty (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This is consistent with the notion that this represents zero
|
|
applications of the simple field/element extraction
|
|
operator <literal>-></>. Similarly, <type>json</type>
|
|
<literal>#>></> <type>text[]</> with an empty array merely
|
|
coerces its lefthand input to text.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Corner cases in
|
|
the <link linkend="functions-json-op-table"><type>JSON</type>
|
|
field/element/path extraction operators</link> now return NULL rather
|
|
than raising an error (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
For example, applying field extraction to a JSON array now yields NULL
|
|
not an error. This is more consistent (since some comparable cases such
|
|
as no-such-field already returned NULL), and it makes it safe to create
|
|
expression indexes that use these operators, since they will now not
|
|
throw errors for any valid JSON input.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Cause consecutive whitespace in <link
|
|
linkend="functions-formatting-table"><function>to_timestamp()</></link>
|
|
and <function>to_date()</> format strings to consume a corresponding
|
|
number of characters in the input string (whitespace or not), then
|
|
conditionally consume adjacent whitespace, if not in <literal>FX</>
|
|
mode (Jeevan Chalke)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, consecutive whitespace characters in a non-<literal>FX</>
|
|
format string behaved like a single whitespace character and consumed
|
|
all adjacent whitespace in the input string. For example, previously
|
|
a format string of three spaces would consume only the first space in
|
|
<literal>' 12'</>, but it will now consume all three characters.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <link
|
|
linkend="textsearch-functions-table"><function>ts_rank_cd()</></link>
|
|
to ignore stripped lexemes (Alex Hill)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, stripped lexemes were treated as if they had a default
|
|
location, producing a rank of dubious usefulness.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
For functions declared to
|
|
take <link linkend="xfunc-sql-variadic-functions"><literal>VARIADIC
|
|
"any"</></link>, an actual parameter marked as <literal>VARIADIC</>
|
|
must be of a determinable array type (Pavel Stehule)
|
|
</para>
|
|
|
|
<para>
|
|
Such parameters can no longer be written as an undecorated string
|
|
literal or <literal>NULL</>; a cast to an appropriate array data type
|
|
will now be required. Note that this does not affect parameters not
|
|
marked <literal>VARIADIC</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Ensure that whole-row variables expose the expected column names
|
|
to functions that pay attention to column names within composite
|
|
arguments (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Constructs like <literal>row_to_json(tab.*)</> now always emit column
|
|
names that match the column aliases visible for table <literal>tab</>
|
|
at the point of the call. In previous releases the emitted column
|
|
names would sometimes be the table's actual column names regardless
|
|
of any aliases assigned in the query.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<xref linkend="sql-discard"> now also discards sequence-related state
|
|
(Fabrízio de Royes Mello, Robert Haas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Rename <link linkend="SQL-EXPLAIN"><command>EXPLAIN
|
|
ANALYZE</></link>'s <quote>total runtime</quote> output
|
|
to <quote>execution time</quote> (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Now that planning time is also reported, the previous name was
|
|
confusing.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<link linkend="SQL-SHOW"><command>SHOW TIME ZONE</></link> now
|
|
outputs simple numeric UTC offsets in <acronym>POSIX</> timezone
|
|
format (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, such timezone settings were displayed as <link
|
|
linkend="datatype-interval-output"><type>interval</></link> values.
|
|
The new output is properly interpreted by <command>SET TIME ZONE</>
|
|
when passed as a simple string, whereas the old output required
|
|
special treatment to be re-parsed correctly.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Foreign data wrappers that support updating foreign tables must
|
|
consider the possible presence of <literal>AFTER ROW</> triggers
|
|
(Noah Misch)
|
|
</para>
|
|
|
|
<para>
|
|
When an <literal>AFTER ROW</> trigger is present, all columns of the
|
|
table must be returned by updating actions, since the trigger might
|
|
inspect any or all of them. Previously, foreign tables never had
|
|
triggers, so the FDW might optimize away fetching columns not mentioned
|
|
in the <literal>RETURNING</> clause (if any).
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Prevent <link
|
|
linkend="ddl-constraints-check-constraints"><literal>CHECK</></link>
|
|
constraints from referencing system columns, except
|
|
<structfield>tableoid</> (Amit Kapila)
|
|
</para>
|
|
|
|
<para>
|
|
Previously such check constraints were allowed, but they would often
|
|
cause errors during restores.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Use the last specified <link linkend="recovery-target-settings">recovery
|
|
target parameter</link> if multiple target parameters are specified
|
|
(Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, there was an undocumented precedence order among
|
|
the <literal>recovery_target_<replaceable>xxx</></literal> parameters.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
On Windows, automatically preserve quotes in command strings supplied
|
|
by the user (Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
User commands that did their own quote preservation might need
|
|
adjustment. This is likely to be an issue for commands used in
|
|
<xref linkend="guc-archive-command">, <xref linkend="restore-command">,
|
|
and <link linkend="sql-copy"><command>COPY TO/FROM PROGRAM</></link>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Remove catalog column <link
|
|
linkend="catalog-pg-class"><structfield>pg_class.reltoastidxid</></link>
|
|
(Michael Paquier)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Remove catalog column <link
|
|
linkend="catalog-pg-rewrite"><structfield>pg_rewrite.ev_attr</></link>
|
|
(Kevin Grittner)
|
|
</para>
|
|
|
|
<para>
|
|
Per-column rules have not been supported since
|
|
<application>PostgreSQL</> 7.3.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Remove native support for <application>Kerberos</> authentication
|
|
(<option>--with-krb5</>, etc)
|
|
(Magnus Hagander)
|
|
</para>
|
|
|
|
<para>
|
|
The supported way to use <application>Kerberos</> authentication is
|
|
with <acronym>GSSAPI</>. The native code has been deprecated since
|
|
<productname>PostgreSQL</> 8.3.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
In <application>PL/Python</>, handle domains over arrays like the
|
|
underlying array type (Rodolfo Campero)
|
|
</para>
|
|
|
|
<para>
|
|
Previously such values were treated as strings.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make libpq's <link
|
|
linkend="libpq-pqconnectdbparams"><function>PQconnectdbParams()</></link>
|
|
and <link
|
|
linkend="libpq-pqpingparams"><function>PQpingParams()</></link>
|
|
functions process zero-length strings as defaults (Adrian
|
|
Vondendriesch)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, these functions treated zero-length string values as
|
|
selecting the default in only some cases.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Change empty arrays returned by the <xref linkend="intarray"> module
|
|
to be zero-dimensional arrays (Bruce Momjian)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, empty arrays were returned as zero-length one-dimensional
|
|
arrays, whose text representation looked the same as zero-dimensional
|
|
arrays (<literal>{}</>), but they acted differently in array
|
|
operations. <application>intarray</>'s behavior in this area now
|
|
matches the built-in array operators.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<xref linkend="pgupgrade"> now uses <option>-U</>
|
|
or <option>--username</> to specify the user name (Bruce Momjian)
|
|
</para>
|
|
|
|
<para>
|
|
Previously this option was spelled <option>-u</> or <option>--user</>,
|
|
but that was inconsistent with other tools.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Changes</title>
|
|
|
|
<para>
|
|
Below you will find a detailed account of the changes between
|
|
<productname>PostgreSQL</productname> 9.4 and the previous major
|
|
release.
|
|
</para>
|
|
|
|
<sect3>
|
|
<title>Server</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <link linkend="bgworker">background worker processes</link>
|
|
to be dynamically registered, started and terminated (Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
The new <filename>worker_spi</> module shows an example of use
|
|
of this feature.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow dynamic allocation of shared memory segments (Robert Haas,
|
|
Amit Kapila)
|
|
</para>
|
|
|
|
<para>
|
|
This feature is illustrated in the <filename>test_shm_mq</filename>
|
|
module.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
During crash recovery or immediate shutdown, send uncatchable
|
|
termination signals (<systemitem>SIGKILL</>) to child processes
|
|
that do not shut down promptly (MauMau, Álvaro Herrera)
|
|
</para>
|
|
|
|
<para>
|
|
This reduces the likelihood of leaving orphaned child processes
|
|
behind after <xref linkend="app-postmaster"> shutdown, as well
|
|
as ensuring that crash recovery can proceed if some child processes
|
|
have become <quote>stuck</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve randomness of the database system identifier (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <xref linkend="SQL-VACUUM"> properly report dead but
|
|
not-yet-removable rows to the statistics collector (Hari Babu)
|
|
</para>
|
|
|
|
<para>
|
|
Previously these were reported as live rows.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<sect4>
|
|
<title>Indexes</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Reduce <link linkend="GIN"><acronym>GIN</></link> index size
|
|
(Alexander Korotkov, Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
Indexes upgraded via <xref linkend="pgupgrade"> will work fine
|
|
but will still be in the old, larger <acronym>GIN</> format.
|
|
Use <xref linkend="SQL-REINDEX"> to recreate old GIN indexes in the
|
|
new format.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve speed of multi-key <link
|
|
linkend="GIN"><acronym>GIN</></link> lookups (Alexander Korotkov,
|
|
Heikki Linnakangas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link linkend="GiST"><acronym>GiST</></link> index support
|
|
for <link linkend="datatype-inet"><type>inet</></link> and
|
|
<link linkend="datatype-cidr"><type>cidr</></link> data types
|
|
(Emre Hasegeli)
|
|
</para>
|
|
|
|
<para>
|
|
Such indexes improve <link
|
|
linkend="cidr-inet-operators-table">subnet and supernet</link>
|
|
lookups and ordering comparisons.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix rare race condition in B-tree page deletion (Heikki Linnakangas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make the handling of interrupted B-tree page splits more robust
|
|
(Heikki Linnakangas)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>General Performance</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow multiple backends to insert
|
|
into <link linkend="wal"><acronym>WAL</></link> buffers
|
|
concurrently (Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
This improves parallel write performance.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Conditionally write only the modified portion of updated rows to
|
|
<link linkend="wal"><acronym>WAL</></link> (Amit Kapila)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve performance of aggregate functions used as <link
|
|
linkend="syntax-window-functions">window functions</link>
|
|
(David Rowley, Florian Pflug, Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve speed of aggregates that
|
|
use <link linkend="datatype-numeric"><type>numeric</></link> state
|
|
values (Hadi Moshayedi)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Attempt to <link linkend="vacuum-for-wraparound">freeze</link>
|
|
tuples when tables are rewritten with <xref
|
|
linkend="SQL-CLUSTER"> or <link
|
|
linkend="SQL-VACUUM"><command>VACUUM FULL</></link> (Robert Haas,
|
|
Andres Freund)
|
|
</para>
|
|
|
|
<para>
|
|
This can avoid the need to freeze the tuples in the future.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve speed of <xref linkend="SQL-COPY"> with default <link
|
|
linkend="functions-sequence-table"><function>nextval()</></link>
|
|
columns (Simon Riggs)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve speed of accessing many different <link
|
|
linkend="SQL-CREATESEQUENCE">sequences</link> in the same session
|
|
(David Rowley)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Raise hard limit on the number of tuples held in memory during sorting
|
|
and B-tree index builds (Noah Misch)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Reduce memory allocated by <application>PL/pgSQL</>
|
|
<xref linkend="SQL-DO"> blocks (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make the planner more aggressive about extracting restriction clauses
|
|
from mixed <literal>AND</>/<literal>OR</> clauses (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Disallow pushing volatile <literal>WHERE</> clauses down
|
|
into <literal>DISTINCT</> subqueries (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Pushing down a <literal>WHERE</> clause can produce a more
|
|
efficient plan overall, but at the cost of evaluating the clause
|
|
more often than is implied by the text of the query; so don't do it
|
|
if the clause contains any volatile functions.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Auto-resize the catalog caches (Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
This reduces memory consumption for sessions accessing only a few
|
|
tables, and improves performance for sessions accessing many tables.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Monitoring</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <xref linkend="pg-stat-archiver-view"> system view to
|
|
report <link linkend="wal"><acronym>WAL</></link> archiver activity
|
|
(Gabriele Bartolini)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <structfield>n_mod_since_analyze</> columns to
|
|
<xref linkend="pg-stat-all-tables-view"> and related system views
|
|
(Mark Kirkwood)
|
|
</para>
|
|
|
|
<para>
|
|
These columns expose the system's estimate of the number of changed
|
|
tuples since the table's last <xref linkend="sql-analyze">. This
|
|
estimate drives decisions about when to auto-analyze.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <structfield>backend_xid</> and <structfield>backend_xmin</>
|
|
columns to the system view <xref linkend="pg-stat-activity-view">,
|
|
and a <structfield>backend_xmin</> column to
|
|
<xref linkend="pg-stat-replication-view"> (Christian Kruse)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title><acronym>SSL</></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add support for <acronym>SSL</> <acronym>ECDH</> key exchange
|
|
(Marko Kreen)
|
|
</para>
|
|
|
|
<para>
|
|
This allows use of Elliptic Curve keys for server authentication.
|
|
Such keys are faster and have better security than <acronym>RSA</>
|
|
keys. The new configuration parameter
|
|
<xref linkend="guc-ssl-ecdh-curve">
|
|
controls which curve is used for <acronym>ECDH</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve the default <xref linkend="guc-ssl-ciphers"> setting
|
|
(Marko Kreen)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
By default, the server not the client now controls the preference
|
|
order of <acronym>SSL</> ciphers
|
|
(Marko Kreen)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, the order specified by <xref linkend="guc-ssl-ciphers">
|
|
was usually ignored in favor of client-side defaults, which are not
|
|
configurable in most <productname>PostgreSQL</> clients. If
|
|
desired, the old behavior can be restored via the new configuration
|
|
parameter <xref linkend="guc-ssl-prefer-server-ciphers">.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <xref linkend="guc-log-connections"> show <acronym>SSL</>
|
|
encryption information (Andreas Kunert)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve <acronym>SSL</> renegotiation handling (Álvaro
|
|
Herrera)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Server Settings</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add new <acronym>SQL</> command <xref linkend="SQL-ALTERSYSTEM">
|
|
for changing <filename>postgresql.conf</> configuration file entries
|
|
(Amit Kapila)
|
|
</para>
|
|
|
|
<para>
|
|
Previously such settings could only be changed by manually
|
|
editing <filename>postgresql.conf</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <xref linkend="guc-autovacuum-work-mem"> configuration parameter
|
|
to control the amount of memory used by autovacuum workers
|
|
(Peter Geoghegan)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <xref linkend="guc-huge-pages"> parameter to allow using huge
|
|
memory pages on Linux (Christian Kruse, Richard Poole, Abhijit
|
|
Menon-Sen)
|
|
</para>
|
|
|
|
<para>
|
|
This can improve performance on large-memory systems.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <xref linkend="guc-max-worker-processes"> parameter
|
|
to limit the number of background workers (Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
This is helpful in configuring a standby server to have the
|
|
required number of worker processes (the same as the primary).
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add superuser-only <xref linkend="guc-session-preload-libraries">
|
|
parameter to load libraries at session start (Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
In contrast to <xref linkend="guc-local-preload-libraries">, this
|
|
parameter can load any shared library, not just those in
|
|
the <filename>$libdir/plugins</> directory.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <xref linkend="guc-wal-log-hints"> parameter to enable WAL
|
|
logging of hint-bit changes (Sawada Masahiko)
|
|
</para>
|
|
|
|
<para>
|
|
Hint bit changes are not normally logged, except when checksums are
|
|
enabled. This is useful for external tools
|
|
like <application>pg_rewind</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Increase the default settings of <xref linkend="guc-work-mem">
|
|
and <xref linkend="guc-maintenance-work-mem"> by four times (Bruce
|
|
Momjian)
|
|
</para>
|
|
|
|
<para>
|
|
The new defaults are 4MB and 64MB respectively.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Increase the default setting of <xref
|
|
linkend="guc-effective-cache-size">
|
|
to 4GB (Bruce Momjian, Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <function>printf</function>-style space padding to be
|
|
specified in <xref linkend="guc-log-line-prefix"> (David Rowley)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow terabyte units (<literal>TB</>) to be used when specifying
|
|
configuration variable values (Simon Riggs)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Show <acronym>PID</>s of lock holders and waiters and improve
|
|
information about relations in <xref linkend="guc-log-lock-waits">
|
|
log messages (Christian Kruse)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Reduce server logging level when loading shared libraries (Peter
|
|
Geoghegan)
|
|
</para>
|
|
|
|
<para>
|
|
The previous level was <literal>LOG</>, which was too verbose
|
|
for libraries loaded per-session.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
On Windows, make <literal>SQL_ASCII</>-encoded databases and server
|
|
processes (e.g., <xref linkend="app-postmaster">) emit messages in
|
|
the character encoding of the server's Windows user locale
|
|
(Alexander Law, Noah Misch)
|
|
</para>
|
|
|
|
<para>
|
|
Previously these messages were output in the Windows
|
|
<acronym>ANSI</> code page.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Replication and Recovery</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link linkend="streaming-replication-slots">replication
|
|
slots</link> to coordinate activity on streaming standbys with the
|
|
node they are streaming from (Andres Freund, Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
Replication slots allow preservation of resources like
|
|
<acronym>WAL</> files on the primary until they are no longer
|
|
needed by standby servers.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add recovery parameter <xref linkend="recovery-min-apply-delay">
|
|
to delay replication (Robert Haas, Fabrízio de Royes Mello,
|
|
Simon Riggs)
|
|
</para>
|
|
|
|
<para>
|
|
Delaying replay on standby servers can be useful for recovering
|
|
from user errors.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <xref linkend="recovery-target">
|
|
option <option>immediate</> to stop <link
|
|
linkend="wal"><acronym>WAL</></link> recovery as soon as a
|
|
consistent state is reached (MauMau, Heikki Linnakangas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve recovery target processing (Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
The timestamp reported
|
|
by <link linkend="functions-recovery-info-table"><function>pg_last_xact_replay_timestamp()</></link>
|
|
now reflects already-committed records, not transactions about to
|
|
be committed. Recovering to a restore point now replays the restore
|
|
point, rather than stopping just before the restore point.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<link
|
|
linkend="functions-admin-backup-table"><function>pg_switch_xlog()</></link>
|
|
now clears any unused trailing space in the old <acronym>WAL</> file
|
|
(Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
This improves the compression ratio for <acronym>WAL</> files.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Report failure return codes from <link
|
|
linkend="archive-recovery-settings">external recovery commands</>
|
|
(Peter Eisentraut)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Reduce spinlock contention during <acronym>WAL</> replay (Heikki
|
|
Linnakangas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Write <acronym>WAL</> records of running transactions more
|
|
frequently (Andres Freund)
|
|
</para>
|
|
|
|
<para>
|
|
This allows standby servers to start faster and clean up resources
|
|
more aggressively.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<sect4>
|
|
<title><link linkend="logicaldecoding">Logical Decoding</></title>
|
|
|
|
<para>
|
|
Logical decoding allows database changes to be streamed in a
|
|
configurable format. The data is read from
|
|
the <link linkend="wal"><acronym>WAL</></link> and transformed into the
|
|
desired target format. To implement this feature, the following changes
|
|
were made:
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add support for <link linkend="logicaldecoding">logical decoding</>
|
|
of WAL data, to allow database changes to be streamed out in a
|
|
customizable format
|
|
(Andres Freund)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add new <xref linkend="guc-wal-level"> setting <option>logical</>
|
|
to enable logical change-set encoding in <acronym>WAL</> (Andres
|
|
Freund)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add table-level parameter <link
|
|
linkend="catalog-pg-class"><literal>REPLICA IDENTITY</></link>
|
|
to control logical replication (Andres Freund)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add relation option <link
|
|
linkend="SQL-CREATETABLE-storage-parameters"><option>user_catalog_table</></link>
|
|
to identify user-created tables involved in logical change-set
|
|
encoding (Andres Freund)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <xref linkend="app-pgrecvlogical"> application to receive
|
|
logical-decoding data (Andres Freund)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <xref linkend="test-decoding"> module to illustrate logical
|
|
decoding at the <acronym>SQL</> level (Andres Freund)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Queries</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link linkend="queries-tablefunctions"><literal>WITH
|
|
ORDINALITY</></link> syntax to number the rows returned from a
|
|
set-returning function in the <literal>FROM</> clause
|
|
(Andrew Gierth, David Fetter)
|
|
</para>
|
|
|
|
<para>
|
|
This is particularly useful for functions like
|
|
<function>unnest()</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link linkend="queries-tablefunctions"><literal>ROWS
|
|
FROM()</></link> syntax to allow horizontal concatenation of
|
|
set-returning functions in the <literal>FROM</> clause (Andrew Gierth)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <xref linkend="SQL-SELECT"> to have
|
|
an empty target list (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This was added so that views that select from a table with zero
|
|
columns can be dumped and restored correctly.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Ensure that <link linkend="SQL-SELECT"><literal>SELECT ... FOR UPDATE
|
|
NOWAIT</></link> does not wait in corner cases involving
|
|
already-concurrently-updated tuples (Craig Ringer and Thomas Munro)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Utility Commands</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link linkend="SQL-DISCARD"><command>DISCARD
|
|
SEQUENCES</></link> command to discard cached sequence-related state
|
|
(Fabrízio de Royes Mello, Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
<command>DISCARD ALL</> will now also discard such information.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <literal>FORCE NULL</> option
|
|
to <link linkend="SQL-COPY"><command>COPY FROM</></link>, which
|
|
causes quoted strings matching the specified null string to be
|
|
converted to NULLs in <literal>CSV</> mode (Ian Barwick, Michael
|
|
Paquier)
|
|
</para>
|
|
|
|
<para>
|
|
Without this option, only unquoted matching strings will be imported
|
|
as null values.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Issue warnings for commands used outside of transaction blocks
|
|
when they can have no effect (Bruce Momjian)
|
|
</para>
|
|
|
|
<para>
|
|
New warnings are issued for <command>SET
|
|
LOCAL</>, <command>SET CONSTRAINTS</>, <command>SET TRANSACTION</> and
|
|
<command>ABORT</> when used outside a transaction block.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<sect4>
|
|
<title><xref linkend="SQL-EXPLAIN"></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <command>EXPLAIN ANALYZE</> show planning time (Andreas
|
|
Karlsson)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <command>EXPLAIN</> show the grouping columns in Agg and
|
|
Group nodes (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <command>EXPLAIN ANALYZE</> show exact and lossy
|
|
block counts in bitmap heap scans (Etsuro Fujita)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Views</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow a <link linkend="rules-materializedviews">materialized view</>
|
|
to be refreshed without blocking other sessions from reading the view
|
|
meanwhile (Kevin Grittner)
|
|
</para>
|
|
|
|
<para>
|
|
This is done with <link
|
|
linkend="SQL-REFRESHMATERIALIZEDVIEW"><command>REFRESH MATERIALIZED
|
|
VIEW CONCURRENTLY</></link>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow views to be <link
|
|
linkend="SQL-CREATEVIEW-updatable-views">automatically
|
|
updated</link> even if they contain some non-updatable columns
|
|
(Dean Rasheed)
|
|
</para>
|
|
|
|
<para>
|
|
Previously the presence of non-updatable output columns such as
|
|
expressions, literals, and function calls prevented automatic
|
|
updates. Now <command>INSERT</>s, <command>UPDATE</>s and
|
|
<command>DELETE</>s are supported, provided that they do not
|
|
attempt to assign new values to any of the non-updatable columns.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow control over whether <command>INSERT</>s and
|
|
<command>UPDATE</>s can add rows to an auto-updatable view that
|
|
would not appear in the view (Dean Rasheed)
|
|
</para>
|
|
|
|
<para>
|
|
This is controlled with the new <xref linkend="SQL-CREATEVIEW">
|
|
clause <literal>WITH CHECK OPTION</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <link linkend="rules-privileges">security barrier views</>
|
|
to be automatically updatable (Dean Rasheed)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Object Manipulation</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support triggers on <link linkend="SQL-CREATEFOREIGNTABLE">foreign
|
|
tables</> (Ronan Dunklau)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow moving groups of objects from one tablespace to another
|
|
using the <literal>ALL IN TABLESPACE ... SET TABLESPACE</> form of
|
|
<xref linkend="SQL-ALTERTABLE">, <xref linkend="SQL-ALTERINDEX">, or
|
|
<xref linkend="SQL-ALTERMATERIALIZEDVIEW"> (Stephen Frost)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow changing foreign key constraint deferrability
|
|
via <xref linkend="SQL-ALTERTABLE"> ... <literal>ALTER
|
|
CONSTRAINT</> (Simon Riggs)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Reduce lock strength for some <xref linkend="SQL-ALTERTABLE">
|
|
commands
|
|
(Simon Riggs, Noah Misch, Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
Specifically, <literal>VALIDATE CONSTRAINT</>, <literal>CLUSTER
|
|
ON</>, <literal>SET WITHOUT CLUSTER</>, <literal>ALTER COLUMN
|
|
SET STATISTICS</>, <literal>ALTER COLUMN</> <literal>SET</>
|
|
<option>(attribute_option)</>, <literal>ALTER COLUMN RESET</>
|
|
<option>(attribute_option)</> no longer require <literal>ACCESS
|
|
EXCLUSIVE</> locks.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow tablespace options to be set
|
|
in <xref linkend="SQL-CREATETABLESPACE"> (Vik Fearing)
|
|
</para>
|
|
|
|
<para>
|
|
Formerly these options could only be set
|
|
via <xref linkend="SQL-ALTERTABLESPACE">.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <xref linkend="SQL-CREATEAGGREGATE"> to define the estimated
|
|
size of the aggregate's transition state data (Hadi Moshayedi)
|
|
</para>
|
|
|
|
<para>
|
|
Proper use of this feature allows the planner to better estimate
|
|
how much memory will be used by aggregates.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <command>DROP IF EXISTS</> to avoid errors for non-existent
|
|
objects in more cases (Pavel Stehule, Dean Rasheed)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve how system relations are identified (Andres Freund,
|
|
Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, relations once moved into the <literal>pg_catalog</>
|
|
schema could no longer be modified or dropped.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Data Types</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fully implement the <link
|
|
linkend="datatype-line"><type>line</></link> data type (Peter
|
|
Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
The line <emphasis>segment</> data type (<link
|
|
linkend="datatype-lseg"><type>lseg</></link>) has always been
|
|
fully supported. The previous <type>line</> data type (which was
|
|
enabled only via a compile-time option) is not binary or
|
|
dump-compatible with the new implementation.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link linkend="datatype-pg-lsn"><type>pg_lsn</></link>
|
|
data type to represent a <acronym>WAL</> log sequence number
|
|
(<acronym>LSN</>) (Robert Haas, Michael Paquier)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow single-point <link
|
|
linkend="datatype-polygon"><type>polygon</></link>s to be converted
|
|
to <link linkend="datatype-circle"><type>circle</></link>s
|
|
(Bruce Momjian)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support time zone abbreviations that change UTC offset from time to
|
|
time (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, <productname>PostgreSQL</> assumed that the UTC offset
|
|
associated with a time zone abbreviation (such as <literal>EST</>)
|
|
never changes in the usage of any particular locale. However this
|
|
assumption fails in the real world, so introduce the ability for a
|
|
zone abbreviation to represent a UTC offset that sometimes changes.
|
|
Update the zone abbreviation definition files to make use of this
|
|
feature in timezone locales that have changed the UTC offset of their
|
|
abbreviations since 1970 (according to the IANA timezone database).
|
|
In such timezones, <productname>PostgreSQL</> will now associate the
|
|
correct UTC offset with the abbreviation depending on the given date.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow 5+ digit years for non-<acronym>ISO</> <link
|
|
linkend="datatype-datetime"><type>timestamp</></link> and
|
|
<type>date</> strings, where appropriate (Bruce Momjian)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add checks for overflow/underflow of <link
|
|
linkend="datatype-datetime"><type>interval</></link> values
|
|
(Bruce Momjian)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<sect4>
|
|
<title><link linkend="datatype-json"><acronym>JSON</></link></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link linkend="datatype-json"><type>jsonb</></link>, a more
|
|
capable and efficient data type for storing <acronym>JSON</> data
|
|
(Oleg Bartunov, Teodor Sigaev, Alexander
|
|
Korotkov, Peter Geoghegan, Andrew Dunstan)
|
|
</para>
|
|
|
|
<para>
|
|
This new type allows faster access to values within a JSON
|
|
document, and faster and more useful indexing of JSON columns.
|
|
Scalar values in <type>jsonb</> documents are stored as appropriate
|
|
scalar SQL types, and the JSON document structure is pre-parsed
|
|
rather than being stored as text as in the original <type>json</>
|
|
data type.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add new JSON functions to allow for the construction
|
|
of arbitrarily complex JSON trees (Andrew Dunstan, Laurence Rowe)
|
|
</para>
|
|
|
|
<para>
|
|
New functions include <link
|
|
linkend="functions-json-processing-table"><function>json_array_elements_text()</></link>,
|
|
<function>json_build_array()</>, <function>json_object()</>,
|
|
<function>json_object_agg()</>, <function>json_to_record()</>,
|
|
and <function>json_to_recordset()</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link
|
|
linkend="functions-json-processing-table"><function>json_typeof()</></link>
|
|
to return the data type of a <type>json</> value (Andrew Tipton)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Functions</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link
|
|
linkend="functions-datetime-delay"><function>pg_sleep_for(interval)</></link>
|
|
and <function>pg_sleep_until(timestamp)</> to specify
|
|
delays more flexibly (Vik Fearing, Julien Rouhaud)
|
|
</para>
|
|
|
|
<para>
|
|
The existing <function>pg_sleep()</> function only supports delays
|
|
specified in seconds.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <link
|
|
linkend="array-functions-table"><function>cardinality()</></link>
|
|
function for arrays (Marko Tiikkaja)
|
|
</para>
|
|
|
|
<para>
|
|
This returns the total number of elements in the array, or zero
|
|
for an array with no elements.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <acronym>SQL</> functions to allow <link linkend="lo-funcs">large
|
|
object reads/writes</link> at arbitrary offsets (Pavel Stehule)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <link
|
|
linkend="array-functions-table"><function>unnest()</></link>
|
|
to take multiple arguments, which are individually unnested then
|
|
horizontally concatenated (Andrew Gierth)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add functions to construct <type>time</>s, <type>date</>s,
|
|
<type>timestamp</>s, <type>timestamptz</>s, and <type>interval</>s
|
|
from individual values, rather than strings (Pavel Stehule)
|
|
</para>
|
|
|
|
<para>
|
|
These functions' names are prefixed with <literal>make_</>,
|
|
e.g. <link linkend="functions-datetime-table"><function>make_date()</></link>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <link
|
|
linkend="functions-formatting-table"><function>to_char()</></link>'s
|
|
<literal>TZ</> format specifier return a useful value for simple
|
|
numeric time zone offsets (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, <literal>to_char(CURRENT_TIMESTAMP, 'TZ')</> returned
|
|
an empty string if the <literal>timezone</> was set to a constant
|
|
like <literal>-4</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add timezone offset format specifier <literal>OF</> to <link
|
|
linkend="functions-formatting-table"><function>to_char()</></link>
|
|
(Bruce Momjian)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve the random seed used for <link
|
|
linkend="functions-math-random-table"><function>random()</></link>
|
|
(Honza Horak)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Tighten validity checking for Unicode code points in <link
|
|
linkend="functions-string-other"><function>chr(int)</></link>
|
|
(Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
This function now only accepts values that are valid UTF8 characters
|
|
according to RFC 3629.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<sect4>
|
|
<title>System Information Functions</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add functions for looking up objects in <structname>pg_class</>,
|
|
<structname>pg_proc</>, <structname>pg_type</>, and
|
|
<structname>pg_operator</> that do not generate errors for
|
|
non-existent objects (Yugo Nagata, Nozomi Anzai,
|
|
Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
For example, <link
|
|
linkend="functions-info-catalog-table"><function>to_regclass()</></link>
|
|
does a lookup in <structname>pg_class</> similarly to
|
|
the <type>regclass</> input function, but it returns NULL for a
|
|
non-existent object instead of failing.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add function <link
|
|
linkend="functions-admin-dblocation"><function>pg_filenode_relation()</></link>
|
|
to allow for more efficient lookup of relation names from filenodes
|
|
(Andres Freund)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <structfield>parameter_default</> column to <link
|
|
linkend="infoschema-parameters"><structname>information_schema.parameters</></link>
|
|
view (Peter Eisentraut)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <link
|
|
linkend="infoschema-schemata"><structname>information_schema.schemata</></link>
|
|
show all accessible schemas (Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
Previously it only showed schemas owned by the current user.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>Aggregates</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add control over which rows are passed
|
|
into aggregate functions via the <link
|
|
linkend="syntax-aggregates"><literal>FILTER</></link> clause
|
|
(David Fetter)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support ordered-set (<link
|
|
linkend="syntax-aggregates"><literal>WITHIN GROUP</></link>)
|
|
aggregates (Atri Sharma, Andrew Gierth, Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add standard ordered-set aggregates <link
|
|
linkend="functions-orderedset-table"><function>percentile_cont()</></link>,
|
|
<function>percentile_disc()</>, <function>mode()</>, <link
|
|
linkend="functions-hypothetical-table"><function>rank()</></link>,
|
|
<function>dense_rank()</>, <function>percent_rank()</>, and
|
|
<function>cume_dist()</>
|
|
(Atri Sharma, Andrew Gierth)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support <link
|
|
linkend="xfunc-sql-variadic-functions"><literal>VARIADIC</></link>
|
|
aggregate functions (Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow polymorphic aggregates to have non-polymorphic state data
|
|
types (Tom Lane)
|
|
</para>
|
|
<para>
|
|
This allows proper declaration in SQL of aggregates like the built-in
|
|
aggregate <function>array_agg()</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Server-Side Languages</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add event trigger support to <link linkend="plperl">PL/Perl</>
|
|
and <link linkend="pltcl">PL/Tcl</> (Dimitri Fontaine)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Convert <link linkend="datatype-numeric"><type>numeric</></link>
|
|
values to <type>decimal</> in <link linkend="plpython">PL/Python</link>
|
|
(Szymon Guz, Ronan Dunklau)
|
|
</para>
|
|
|
|
<para>
|
|
Previously such values were converted to Python <type>float</> values,
|
|
risking loss of precision.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<sect4>
|
|
<title><link linkend="plpgsql">PL/pgSQL</link> Server-Side Language</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add ability to retrieve the current PL/PgSQL call stack
|
|
using <link linkend="plpgsql-get-diagnostics-context"><command>GET
|
|
DIAGNOSTICS</></link>
|
|
(Pavel Stehule, Stephen Frost)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add option <link
|
|
linkend="plpgsql-statements-sql-onerow"><option>print_strict_params</></link>
|
|
to display the parameters passed to a query that violated a
|
|
<literal>STRICT</> constraint (Marko Tiikkaja)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add variables <link
|
|
linkend="plpgsql-extra-checks"><varname>plpgsql.extra_warnings</></link>
|
|
and <varname>plpgsql.extra_errors</> to enable additional PL/pgSQL
|
|
warnings and errors (Marko Tiikkaja, Petr Jelinek)
|
|
</para>
|
|
|
|
<para>
|
|
Currently only warnings/errors about shadowed variables are available.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title><link linkend="libpq"><application>libpq</></link></title>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make libpq's <link
|
|
linkend="libpq-pqconndefaults"><function>PQconndefaults()</></link>
|
|
function ignore invalid service files (Steve Singer, Bruce Momjian)
|
|
</para>
|
|
|
|
<para>
|
|
Previously it returned NULL if an incorrect service file was
|
|
encountered.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Accept <acronym>TLS</> protocol versions beyond <literal>TLSv1</>
|
|
in libpq (Marko Kreen)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Client Applications</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <xref linkend="APP-CREATEUSER"> option <option>-g</>
|
|
to specify role membership (Chistopher Browne)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <xref linkend="APP-VACUUMDB">
|
|
option <option>--analyze-in-stages</> to analyze in stages of
|
|
increasing granularity (Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
This allows minimal statistics to be created quickly.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <xref linkend="APP-PGRESETXLOG"> with option <option>-n</>
|
|
output current and potentially changed values (Rajeev Rastogi)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <xref linkend="app-initdb"> throw error for incorrect locale
|
|
settings, rather than silently falling back to a default choice
|
|
(Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <xref linkend="app-pg-ctl"> return exit code <literal>4</> for
|
|
an inaccessible data directory (Amit Kapila, Bruce Momjian)
|
|
</para>
|
|
|
|
<para>
|
|
This behavior more closely matches the Linux Standard Base
|
|
(<acronym>LSB</>) Core Specification.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
On Windows, ensure that a non-absolute <option>-D</> path
|
|
specification is interpreted relative
|
|
to <xref linkend="app-pg-ctl">'s current directory
|
|
(Kumar Rajeev Rastogi)
|
|
</para>
|
|
|
|
<para>
|
|
Previously it would be interpreted relative to whichever directory
|
|
the underlying Windows service was started in.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <function>sizeof()</> in <link linkend="ecpg">ECPG</link>
|
|
C array definitions (Michael Meskes)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <link linkend="ecpg">ECPG</link> properly handle nesting
|
|
of C-style comments in both C and <acronym>SQL</> text
|
|
(Michael Meskes)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<sect4>
|
|
<title><xref linkend="APP-PSQL"></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Suppress <quote>No rows</quote> output in <application>psql</> <link
|
|
linkend="APP-PSQL-meta-commands"><option>expanded</></link>
|
|
mode when the footer is disabled (Bruce Momjian)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow Control-C to abort <application>psql</> when it's hung at
|
|
connection startup (Peter Eisentraut)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<sect5>
|
|
<title><link linkend="APP-PSQL-meta-commands">Backslash Commands</link></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <application>psql</>'s <command>\db+</> show tablespace options
|
|
(Magnus Hagander)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <command>\do+</> display the functions
|
|
that implement the operators (Marko Tiikkaja)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <command>\d+</> output an
|
|
<literal>OID</> line only if an <literal>oid</literal> column
|
|
exists in the table (Bruce Momjian)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, the presence or absence of an <literal>oid</literal>
|
|
column was always reported.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <command>\d</> show disabled system triggers (Bruce
|
|
Momjian)
|
|
</para>
|
|
|
|
<para>
|
|
Previously, if you disabled all triggers, only user triggers
|
|
would show as disabled.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <command>\copy</> to no longer require
|
|
a space between <literal>stdin</> and a semicolon (Etsuro Fujita)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Output the row count at the end of <command>\copy</>, just
|
|
like <command>COPY</> already did (Kumar Rajeev Rastogi)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <command>\conninfo</> to display the
|
|
server's <acronym>IP</> address for connections using
|
|
<literal>hostaddr</> (Fujii Masao)
|
|
</para>
|
|
|
|
<para>
|
|
Previously <command>\conninfo</> could not display the server's
|
|
<acronym>IP</> address in such cases.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Show the <acronym>SSL</> protocol version in
|
|
<command>\conninfo</> (Marko Kreen)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add tab completion for <command>\pset</>
|
|
(Pavel Stehule)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <command>\pset</> with no arguments
|
|
to show all settings (Gilles Darold)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <command>\s</> display the name of the history file it wrote
|
|
without converting it to an absolute path (Tom Lane)
|
|
</para>
|
|
|
|
<para>
|
|
The code previously attempted to convert a relative file name to
|
|
an absolute path for display, but frequently got it wrong.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect5>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title><xref linkend="APP-PGDUMP"></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <xref linkend="APP-PGRESTORE"> options
|
|
<option>-I</>, <option>-P</>, <option>-T</> and <option>-n</>
|
|
to be specified multiple times (Heikki Linnakangas)
|
|
</para>
|
|
|
|
<para>
|
|
This allows multiple objects to be restored in one operation.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Optionally add <literal>IF EXISTS</> clauses to the <command>DROP</>
|
|
commands emitted when removing old objects during a restore (Pavel
|
|
Stehule)
|
|
</para>
|
|
|
|
<para>
|
|
This change prevents unnecessary errors when removing old objects.
|
|
The new <option>--if-exists</> option
|
|
for <xref linkend="APP-PGDUMP">, <xref linkend="APP-PG-DUMPALL">,
|
|
and <xref linkend="APP-PGRESTORE"> is only available
|
|
when <option>--clean</> is also specified.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title><xref linkend="app-pgbasebackup"></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <application>pg_basebackup</> option <option>--xlogdir</>
|
|
to specify the <filename>pg_xlog</> directory location (Haribabu
|
|
Kommi)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <application>pg_basebackup</> to relocate tablespaces in
|
|
the backup copy (Steeve Lennmark)
|
|
</para>
|
|
|
|
<para>
|
|
This is particularly useful for using <application>pg_basebackup</>
|
|
on the same machine as the primary.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow network-stream base backups to be throttled (Antonin Houska)
|
|
</para>
|
|
|
|
<para>
|
|
This can be controlled with the <application>pg_basebackup</>
|
|
<option>--max-rate</> parameter.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Source Code</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve the way tuples are frozen to preserve forensic information
|
|
(Robert Haas, Andres Freund)
|
|
</para>
|
|
|
|
<para>
|
|
This change removes the main objection to freezing tuples as soon
|
|
as possible. Code that inspects tuple flag bits will need to be
|
|
modified.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
No longer require function prototypes for functions marked with the
|
|
<link linkend="xfunc-c"><function>PG_FUNCTION_INFO_V1</></link>
|
|
macro (Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
This change eliminates the need to write boilerplate prototypes.
|
|
Note that the <function>PG_FUNCTION_INFO_V1</> macro must appear
|
|
before the corresponding function definition to avoid compiler
|
|
warnings.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Remove <varname>SnapshotNow</> and
|
|
<function>HeapTupleSatisfiesNow()</> (Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
All existing uses have been switched to more appropriate snapshot
|
|
types. Catalog scans now use <acronym>MVCC</> snapshots.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add an <acronym>API</> to allow memory allocations over one gigabyte
|
|
(Noah Misch)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <function>psprintf()</> to simplify memory allocation during
|
|
string composition (Peter Eisentraut, Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support <function>printf()</> size modifier <literal>z</> to
|
|
print <type>size_t</> values (Andres Freund)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Change <acronym>API</> of <function>appendStringInfoVA()</>
|
|
to better use <function>vsnprintf()</> (David Rowley, Tom Lane)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow new types of external toast datums to be created (Andres
|
|
Freund)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add single-reader, single-writer, lightweight shared message queue
|
|
(Robert Haas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve spinlock speed on x86_64 <acronym>CPU</>s (Heikki
|
|
Linnakangas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Remove spinlock support for unsupported platforms
|
|
<productname>SINIX</>, <productname>Sun3</>, and
|
|
<productname>NS32K</> (Robert Haas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Remove <acronym>IRIX</> port (Robert Haas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Reduce the number of semaphores required by
|
|
<option>--disable-spinlocks</> builds (Robert Haas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Rewrite <application>duplicate_oids</> Unix shell script in
|
|
<application>Perl</> (Andrew Dunstan)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add Test Anything Protocol (<acronym>TAP</>) tests for client
|
|
programs (Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
Currently, these tests are run by <literal>make check-world</>
|
|
only if the <option>--enable-tap-tests</> option was given
|
|
to <application>configure</>.
|
|
This might become the default behavior in some future release.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add make targets <option>check-tests</> and
|
|
<option>installcheck-tests</>, which allow selection of individual
|
|
tests to be run (Andrew Dunstan)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Remove <option>maintainer-check</> makefile rule (Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
The default build rules now include all the formerly-optional tests.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve support for <envar>VPATH</> builds of <acronym>PGXS</>
|
|
modules (Cédric Villemain, Andrew Dunstan, Peter Eisentraut)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Upgrade to Autoconf 2.69 (Peter Eisentraut)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add a <application>configure</> flag that appends custom text to the
|
|
<envar>PG_VERSION</> string (Oskari Saarenmaa)
|
|
</para>
|
|
|
|
<para>
|
|
This is useful for packagers building custom binaries.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve DocBook <acronym>XML</> validity (Peter Eisentraut)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix various minor security and sanity issues reported by the
|
|
<productname>Coverity</> scanner (Stephen Frost)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve detection of invalid memory usage when testing
|
|
<productname>PostgreSQL</> with <application>Valgrind</>
|
|
(Noah Misch)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve sample <application>Emacs</> configuration file
|
|
<filename>emacs.samples</> (Peter Eisentraut)
|
|
</para>
|
|
|
|
<para>
|
|
Also add <filename>.dir-locals.el</> to the top of the source tree.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <application>pgindent</> to accept a command-line list
|
|
of typedefs (Bruce Momjian)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <application>pgindent</> smarter about blank lines
|
|
around preprocessor conditionals (Bruce Momjian)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Avoid most uses of <command>dlltool</command>
|
|
in <productname>Cygwin</> and
|
|
<productname>Mingw</> builds (Marco Atzeri, Hiroshi Inoue)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Support client-only installs in <acronym>MSVC</> (Windows) builds
|
|
(MauMau)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Additional Modules</title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <xref linkend="pgprewarm"> extension to preload relation data
|
|
into the shared buffer cache at server start (Robert Haas)
|
|
</para>
|
|
|
|
<para>
|
|
This allows reaching full operating performance more quickly.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <acronym>UUID</> random number generator
|
|
<function>gen_random_uuid()</> to <xref linkend="pgcrypto">
|
|
(Oskari Saarenmaa)
|
|
</para>
|
|
|
|
<para>
|
|
This allows creation of version 4 <acronym>UUID</>s without
|
|
requiring installation of <xref linkend="uuid-ossp">.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <xref linkend="uuid-ossp"> to work with
|
|
the <systemitem>BSD</> or <systemitem>e2fsprogs</> UUID libraries,
|
|
not only the <systemitem>OSSP</> UUID library (Matteo Beccati)
|
|
</para>
|
|
|
|
<para>
|
|
This improves the <application>uuid-ossp</> module's portability
|
|
since it no longer has to have the increasingly-obsolete OSSP
|
|
library. The module's name is now rather a misnomer, but we won't
|
|
change it.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add option to <xref linkend="auto-explain"> to include trigger
|
|
execution time (Horiguchi Kyotaro)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Fix <xref linkend="pgstattuple"> to not report rows from
|
|
uncommitted transactions as dead (Robert Haas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <xref linkend="pgstattuple"> functions
|
|
use <type>regclass</type>-type arguments (Satoshi Nagayasu)
|
|
</para>
|
|
|
|
<para>
|
|
While <type>text</type>-type arguments are still supported, they
|
|
may be removed in a future major release.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve consistency of <xref linkend="pgrowlocks"> output to honor
|
|
snapshot rules more consistently (Robert Haas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Improve <xref linkend="pgtrgm">'s choice of trigrams for indexed
|
|
regular expression searches (Alexander Korotkov)
|
|
</para>
|
|
|
|
<para>
|
|
This change discourages use of trigrams containing whitespace, which
|
|
are usually less selective.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow <xref linkend="pgxlogdump"> to report a live log stream
|
|
with <option>--follow</> (Heikki Linnakangas)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Store <xref linkend="cube"> data more compactly (Stas Kelvich)
|
|
</para>
|
|
|
|
<para>
|
|
Existing data must be dumped/restored to use the new format.
|
|
The old format can still be read.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Reduce <xref linkend="vacuumlo"> client-side memory usage by using
|
|
a cursor (Andrew Dunstan)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Dramatically reduce memory consumption
|
|
in <xref linkend="pgupgrade"> (Bruce Momjian)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Pass <xref linkend="pgupgrade">'s user name (<option>-U</>) option to
|
|
generated analyze scripts (Bruce Momjian)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<sect4>
|
|
<title><xref linkend="pgbench"></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Remove line length limit for <application>pgbench</> scripts (Sawada
|
|
Masahiko)
|
|
</para>
|
|
|
|
<para>
|
|
The previous line limit was <envar>BUFSIZ</>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add long option names to <application>pgbench</> (Fabien Coelho)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <application>pgbench</> option <option>--rate</> to control
|
|
the transaction rate (Fabien Coelho)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add <application>pgbench</> option <option>--progress</> to
|
|
print periodic progress reports
|
|
(Fabien Coelho)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title><xref linkend="pgstatstatements"></title>
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <application>pg_stat_statements</> use a file, rather than
|
|
shared memory, for query text storage (Peter Geoghegan)
|
|
</para>
|
|
|
|
<para>
|
|
This removes the previous limitation on query text length, and
|
|
allows a higher number of unique statements to be tracked by default.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Allow reporting of <application>pg_stat_statements</>'s internal
|
|
query hash identifier (Daniel Farina, Sameer Thakur, Peter
|
|
Geoghegan)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Add the ability to retrieve all <application>pg_stat_statements</>
|
|
information except the query text (Peter Geoghegan)
|
|
</para>
|
|
|
|
<para>
|
|
This allows monitoring tools to fetch query text only for
|
|
just-created entries, improving performance during repeated querying
|
|
of the statistics.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Make <application>pg_stat_statements</> ignore <command>DEALLOCATE</>
|
|
commands (Fabien Coelho)
|
|
</para>
|
|
|
|
<para>
|
|
It already ignored <command>PREPARE</>, as well as planning time in
|
|
general, so this seems more consistent.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Save the statistics file into <filename>$PGDATA/pg_stat</> at server
|
|
shutdown, rather than <filename>$PGDATA/global</> (Fujii Masao)
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
</sect2>
|
|
</sect1>
|