postgresql/doc/src/sgml/release-9.5.sgml

5758 lines
179 KiB
Plaintext

<!-- doc/src/sgml/release-9.5.sgml -->
<!-- See header comment in release.sgml about typical markup -->
<sect1 id="release-9-5-4">
<title>Release 9.5.4</title>
<note>
<title>Release Date</title>
<simpara>2016-08-11</simpara>
</note>
<para>
This release contains a variety of fixes from 9.5.3.
For information about new features in the 9.5 major release, see
<xref linkend="release-9-5">.
</para>
<sect2>
<title>Migration to Version 9.5.4</title>
<para>
A dump/restore is not required for those running 9.5.X.
</para>
<para>
However, if you are upgrading from a version earlier than 9.5.2,
see <xref linkend="release-9-5-2">.
</para>
</sect2>
<sect2>
<title>Changes</title>
<itemizedlist>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [f0c7b789a] 2016-08-08 10:33:46 -0400
Branch: REL9_5_STABLE [98b0c6280] 2016-08-08 10:33:46 -0400
Branch: REL9_4_STABLE [f40618092] 2016-08-08 10:33:47 -0400
Branch: REL9_3_STABLE [6c954a6a5] 2016-08-08 10:33:47 -0400
Branch: REL9_2_STABLE [8b32516db] 2016-08-08 10:33:47 -0400
Branch: REL9_1_STABLE [5327b764a] 2016-08-08 10:33:47 -0400
-->
<para>
Fix possible mis-evaluation of
nested <literal>CASE</>-<literal>WHEN</> expressions (Heikki
Linnakangas, Michael Paquier, Tom Lane)
</para>
<para>
A <literal>CASE</> expression appearing within the test value
subexpression of another <literal>CASE</> could become confused about
whether its own test value was null or not. Also, inlining of a SQL
function implementing the equality operator used by
a <literal>CASE</> expression could result in passing the wrong test
value to functions called within a <literal>CASE</> expression in the
SQL function's body. If the test values were of different data
types, a crash might result; moreover such situations could be abused
to allow disclosure of portions of server memory. (CVE-2016-5423)
</para>
</listitem>
<listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [fcd15f135] 2016-08-08 10:07:46 -0400
Branch: REL9_5_STABLE [286c8bc64] 2016-08-08 10:07:50 -0400
Branch: REL9_4_STABLE [254eb04f1] 2016-08-08 10:07:51 -0400
Branch: REL9_3_STABLE [95a6855c5] 2016-08-08 10:07:52 -0400
Branch: REL9_2_STABLE [e8f4922c8] 2016-08-08 10:07:53 -0400
Branch: REL9_1_STABLE [a2385cac1] 2016-08-08 10:07:54 -0400
Branch: master [41f18f021] 2016-08-08 10:07:46 -0400
Branch: REL9_5_STABLE [8adff3783] 2016-08-08 10:07:50 -0400
Branch: REL9_4_STABLE [6df8ff49d] 2016-08-08 10:07:51 -0400
Branch: REL9_3_STABLE [c1b048f49] 2016-08-08 10:07:52 -0400
Branch: REL9_2_STABLE [f1d0b09cf] 2016-08-08 10:07:53 -0400
Branch: REL9_1_STABLE [d2dd5df51] 2016-08-08 10:07:54 -0400
Branch: REL9_2_STABLE [a19edcd24] 2016-08-08 10:07:53 -0400
Branch: REL9_1_STABLE [c761c9fee] 2016-08-08 10:07:54 -0400
Branch: master [bd6537185] 2016-08-08 10:07:46 -0400
Branch: REL9_5_STABLE [2e5e90d8d] 2016-08-08 10:07:50 -0400
Branch: REL9_4_STABLE [18392ed4a] 2016-08-08 10:07:51 -0400
Branch: REL9_3_STABLE [395d565ac] 2016-08-08 10:07:52 -0400
Branch: REL9_2_STABLE [483715529] 2016-08-08 10:07:53 -0400
Branch: REL9_1_STABLE [2d69f5b12] 2016-08-08 10:07:54 -0400
Branch: master [142c24c23] 2016-08-08 10:07:46 -0400
Branch: REL9_5_STABLE [ec3aebdbd] 2016-08-08 10:07:50 -0400
Branch: REL9_4_STABLE [6bec1a6c8] 2016-08-08 10:07:51 -0400
Branch: REL9_3_STABLE [0f679d2c1] 2016-08-08 10:07:52 -0400
Branch: REL9_2_STABLE [ffbdab65d] 2016-08-08 10:07:53 -0400
Branch: REL9_1_STABLE [61c2cd88d] 2016-08-08 10:07:53 -0400
Branch: master [c40071717] 2016-08-08 10:07:46 -0400
Branch: REL9_5_STABLE [640768ceb] 2016-08-08 10:07:50 -0400
Branch: REL9_4_STABLE [aed038795] 2016-08-08 10:07:51 -0400
Branch: REL9_3_STABLE [05abd3bcf] 2016-08-08 10:07:52 -0400
Branch: REL9_2_STABLE [a466ea33c] 2016-08-08 10:07:52 -0400
Branch: REL9_1_STABLE [ba8c4089d] 2016-08-08 10:07:53 -0400
Branch: master [9d924e9a6] 2016-08-08 10:07:46 -0400
Branch: REL9_5_STABLE [6655c0757] 2016-08-08 10:07:50 -0400
Branch: REL9_4_STABLE [afabfcc0e] 2016-08-08 10:07:51 -0400
Branch: REL9_3_STABLE [dfb2d8039] 2016-08-08 10:07:51 -0400
Branch: REL9_2_STABLE [f744e8906] 2016-08-08 10:07:52 -0400
Branch: REL9_1_STABLE [cf7e5f55b] 2016-08-08 10:07:53 -0400
Branch: master [984e5beb3] 2016-08-08 10:07:46 -0400
Branch: REL9_5_STABLE [db951dd19] 2016-08-08 10:07:50 -0400
Branch: REL9_4_STABLE [fed83cdac] 2016-08-08 10:07:51 -0400
Branch: REL9_3_STABLE [a44d71351] 2016-08-08 10:07:51 -0400
Branch: REL9_2_STABLE [0cc3b12d2] 2016-08-08 10:07:52 -0400
Branch: REL9_1_STABLE [aed766ab5] 2016-08-08 10:07:53 -0400
-->
<para>
Fix client programs' handling of special characters in database and
role names (Noah Misch, Nathan Bossart, Michael Paquier)
</para>
<para>
Numerous places in <application>vacuumdb</> and other client programs
could become confused by database and role names containing double
quotes or backslashes. Tighten up quoting rules to make that safe.
Also, ensure that when a conninfo string is used as a database name
parameter to these programs, it is correctly treated as such throughout.
</para>
<para>
Fix handling of paired double quotes
in <application>psql</>'s <command>\connect</>
and <command>\password</> commands to match the documentation.
</para>
<para>
Introduce a new <option>-reuse-previous</> option
in <application>psql</>'s <command>\connect</> command to allow
explicit control of whether to re-use connection parameters from a
previous connection. (Without this, the choice is based on whether
the database name looks like a conninfo string, as before.) This
allows secure handling of database names containing special
characters in <application>pg_dumpall</> scripts.
</para>
<para>
<application>pg_dumpall</> now refuses to deal with database and role
names containing carriage returns or newlines, as it seems impractical
to quote those characters safely on Windows. In future we may reject
such names on the server side, but that step has not been taken yet.
</para>
<para>
These are considered security fixes because crafted object names
containing special characters could have been used to execute
commands with superuser privileges the next time a superuser
executes <application>pg_dumpall</> or other routine maintenance
operations. (CVE-2016-5424)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [4452000f3] 2016-07-26 15:25:02 -0400
Branch: REL9_5_STABLE [d2ef7758d] 2016-07-26 15:25:02 -0400
Branch: REL9_4_STABLE [0733188cc] 2016-07-26 15:25:02 -0400
Branch: REL9_3_STABLE [c235d510e] 2016-07-26 15:25:02 -0400
Branch: REL9_2_STABLE [bcdd8a194] 2016-07-26 15:25:02 -0400
Branch: REL9_1_STABLE [d243bf77c] 2016-07-26 15:25:02 -0400
Branch: master [9492cf86e] 2016-07-28 16:09:15 -0400
Branch: REL9_5_STABLE [1e2f96f0a] 2016-07-28 16:09:15 -0400
Branch: REL9_4_STABLE [66f7e4081] 2016-07-28 16:09:15 -0400
Branch: REL9_3_STABLE [069714387] 2016-07-28 16:09:15 -0400
Branch: REL9_2_STABLE [7b8526e5d] 2016-07-28 16:09:15 -0400
Branch: REL9_1_STABLE [c0e5096fc] 2016-07-28 16:09:15 -0400
-->
<para>
Fix corner-case misbehaviors for <literal>IS NULL</>/<literal>IS NOT
NULL</> applied to nested composite values (Andrew Gierth, Tom Lane)
</para>
<para>
The SQL standard specifies that <literal>IS NULL</> should return
TRUE for a row of all null values (thus <literal>ROW(NULL,NULL) IS
NULL</> yields TRUE), but this is not meant to apply recursively
(thus <literal>ROW(NULL, ROW(NULL,NULL)) IS NULL</> yields FALSE).
The core executor got this right, but certain planner optimizations
treated the test as recursive (thus producing TRUE in both cases),
and <filename>contrib/postgres_fdw</> could produce remote queries
that misbehaved similarly.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [eae1ad9b6] 2016-05-23 19:23:36 -0400
Branch: REL9_5_STABLE [e504d915b] 2016-05-23 19:23:36 -0400
-->
<para>
Fix <quote>unrecognized node type</> error for <command>INSERT ... ON
CONFLICT</> within a recursive CTE (a <literal>WITH</> item) (Peter
Geoghegan)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [26e66184d] 2016-05-11 16:20:23 -0400
Branch: REL9_5_STABLE [58d802410] 2016-05-11 16:20:03 -0400
-->
<para>
Fix <command>INSERT ... ON CONFLICT</> to successfully match index
expressions or index predicates that are simplified during the
planner's expression preprocessing phase (Tom Lane)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [9c810a2ed] 2016-07-04 16:09:11 -0400
Branch: REL9_5_STABLE [31ce32ade] 2016-07-04 16:09:11 -0400
-->
<para>
Correctly handle violations of exclusion constraints that apply to
the target table of an <literal>INSERT ... ON CONFLICT</> command,
but are not one of the selected arbiter indexes (Tom Lane)
</para>
<para>
Such a case should raise a normal constraint-violation error, but it
got into an infinite loop instead.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [8a13d5e6d] 2016-05-11 17:06:53 -0400
Branch: REL9_5_STABLE [428484ce1] 2016-05-11 17:06:53 -0400
-->
<para>
Fix <command>INSERT ... ON CONFLICT</> to not fail if the target
table has a unique index on OID (Tom Lane)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [4c56f3269] 2016-06-16 17:16:32 -0400
Branch: REL9_5_STABLE [a41b14f94] 2016-06-16 17:16:40 -0400
Branch: REL9_4_STABLE [2a8b5d210] 2016-06-16 17:16:44 -0400
Branch: REL9_3_STABLE [519445ba2] 2016-06-16 17:16:48 -0400
Branch: REL9_2_STABLE [f66e0fec3] 2016-06-16 17:16:53 -0400
Branch: REL9_1_STABLE [7b97dafa2] 2016-06-16 17:16:58 -0400
-->
<para>
Make the <type>inet</> and <type>cidr</> data types properly reject
IPv6 addresses with too many colon-separated fields (Tom Lane)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [278148907] 2016-07-16 14:42:37 -0400
Branch: REL9_5_STABLE [884bae143] 2016-07-16 14:42:37 -0400
Branch: REL9_4_STABLE [59fa0195c] 2016-07-16 14:42:37 -0400
Branch: REL9_3_STABLE [16e28fcec] 2016-07-16 14:42:37 -0400
Branch: REL9_2_STABLE [89b301104] 2016-07-16 14:42:37 -0400
Branch: REL9_1_STABLE [608cc0c41] 2016-07-16 14:42:37 -0400
-->
<para>
Prevent crash in <function>close_ps()</>
(the <type>point</> <literal>##</> <type>lseg</> operator)
for NaN input coordinates (Tom Lane)
</para>
<para>
Make it return NULL instead of crashing.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [0daeba0e9] 2016-07-01 11:40:33 -0400
Branch: REL9_5_STABLE [40d0bd8d5] 2016-07-01 11:40:22 -0400
Branch: REL9_4_STABLE [b25d87f91] 2016-07-01 11:40:22 -0400
Branch: REL9_3_STABLE [b0f20c2ea] 2016-07-01 11:40:22 -0400
-->
<para>
Avoid possible crash in <function>pg_get_expr()</> when inconsistent
values are passed to it (Michael Paquier, Thomas Munro)
</para>
</listitem>
<listitem>
<!--
Author: Peter Eisentraut <peter_e@gmx.net>
Branch: master [9a46324fd] 2016-08-08 11:12:59 -0400
Branch: REL9_5_STABLE [04cee8f83] 2016-08-08 11:13:25 -0400
Branch: REL9_4_STABLE [20f870fd7] 2016-08-08 11:13:34 -0400
Branch: REL9_3_STABLE [43d7a0af5] 2016-08-08 11:13:40 -0400
Branch: REL9_2_STABLE [b0134fe84] 2016-08-08 11:13:45 -0400
Branch: REL9_1_STABLE [d555d2642] 2016-08-08 11:13:51 -0400
-->
<para>
Fix several one-byte buffer over-reads in <function>to_number()</>
(Peter Eisentraut)
</para>
<para>
In several cases the <function>to_number()</> function would read one
more character than it should from the input string. There is a
small chance of a crash, if the input happens to be adjacent to the
end of memory.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [874fe3aea] 2016-06-27 15:57:50 -0400
Branch: REL9_5_STABLE [1651b9aa2] 2016-06-27 15:57:21 -0400
Branch: REL9_4_STABLE [dc9e03bf4] 2016-06-27 15:57:21 -0400
Branch: REL9_3_STABLE [17bfef80e] 2016-06-27 15:57:21 -0400
-->
<para>
Do not run the planner on the query contained in <literal>CREATE
MATERIALIZED VIEW</> or <literal>CREATE TABLE AS</>
when <literal>WITH NO DATA</> is specified (Michael Paquier,
Tom Lane)
</para>
<para>
This avoids some unnecessary failure conditions, for example if a
stable function invoked by the materialized view depends on a table
that doesn't exist yet.
</para>
</listitem>
<listitem>
<!--
Author: Andres Freund <andres@anarazel.de>
Branch: master [bfa2ab56b] 2016-07-15 17:49:48 -0700
Branch: REL9_5_STABLE [1f9534b49] 2016-07-15 17:49:48 -0700
Branch: REL9_4_STABLE [3d5b227ba] 2016-07-15 17:49:48 -0700
Branch: REL9_3_STABLE [2e51ae1f6] 2016-07-15 17:49:48 -0700
Branch: REL9_2_STABLE [941557f18] 2016-07-15 17:49:48 -0700
Branch: REL9_1_STABLE [37276017f] 2016-07-15 17:49:49 -0700
-->
<para>
Avoid unsafe intermediate state during expensive paths
through <function>heap_update()</> (Masahiko Sawada, Andres Freund)
</para>
<para>
Previously, these cases locked the target tuple (by setting its XMAX)
but did not WAL-log that action, thus risking data integrity problems
if the page were spilled to disk and then a database crash occurred
before the tuple update could be completed.
</para>
</listitem>
<listitem>
<!--
Author: Andres Freund <andres@anarazel.de>
Branch: master [a4d357bfb] 2016-07-15 14:45:37 -0700
Branch: REL9_5_STABLE [b33e81cba] 2016-07-15 14:45:38 -0700
Branch: REL9_4_STABLE [f66828ba6] 2016-07-15 14:50:46 -0700
Branch: REL9_3_STABLE [46acbeb2f] 2016-07-15 14:51:03 -0700
-->
<para>
Fix hint bit update during WAL replay of row locking operations
(Andres Freund)
</para>
<para>
The only known consequence of this problem is that row locks held by
a prepared, but uncommitted, transaction might fail to be enforced
after a crash and restart.
</para>
</listitem>
<listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [533e9c6b0] 2016-07-15 14:17:20 -0400
Branch: REL9_5_STABLE [649dd1b58] 2016-07-15 14:17:20 -0400
Branch: REL9_4_STABLE [166873dd0] 2016-07-15 14:17:20 -0400
Branch: REL9_3_STABLE [6c243f90a] 2016-07-15 14:17:20 -0400
-->
<para>
Avoid unnecessary <quote>could not serialize access</> errors when
acquiring <literal>FOR KEY SHARE</> row locks in serializable mode
(&Aacute;lvaro Herrera)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [69f526aa4] 2016-06-03 15:14:50 -0400
Branch: REL9_5_STABLE [a102f98e2] 2016-06-03 15:14:35 -0400
Branch: master [9eaf5be50] 2016-06-03 18:07:14 -0400
Branch: REL9_5_STABLE [8355897ff] 2016-06-03 18:07:14 -0400
-->
<para>
Make sure <quote>expanded</> datums returned by a plan node are
read-only (Tom Lane)
</para>
<para>
This avoids failures in some cases where the result of a lower plan
node is referenced in multiple places in upper nodes. So far as
core <productname>PostgreSQL</> is concerned, only array values
returned by PL/pgSQL functions are at risk; but extensions might
use expanded datums for other things.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [0b0baf262] 2016-06-16 12:17:38 -0400
Branch: REL9_5_STABLE [4f5995dd9] 2016-06-16 12:17:11 -0400
Branch: REL9_4_STABLE [e542bfe61] 2016-06-16 12:17:16 -0400
Branch: REL9_3_STABLE [29987b2e1] 2016-06-16 12:17:20 -0400
Branch: REL9_2_STABLE [23ed284a5] 2016-06-16 12:17:25 -0400
Branch: master [e45e990e4] 2016-06-22 11:55:18 -0400
Branch: REL9_5_STABLE [f2c28bb1f] 2016-06-22 11:55:24 -0400
Branch: REL9_4_STABLE [f22a3e5ce] 2016-06-22 11:55:28 -0400
Branch: REL9_3_STABLE [dafdcbb6c] 2016-06-22 11:55:32 -0400
Branch: REL9_2_STABLE [dd41661d2] 2016-06-22 11:55:35 -0400
-->
<para>
Avoid crash in <literal>postgres -C</> when the specified variable
has a null string value (Michael Paquier)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [80b346c20] 2016-07-29 12:52:57 -0400
Branch: REL9_5_STABLE [c8966a925] 2016-07-29 12:53:02 -0400
-->
<para>
Prevent unintended waits for the receiver in WAL sender processes
(Kyotaro Horiguchi)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [f8c58554d] 2016-06-30 12:37:02 -0400
Branch: REL9_5_STABLE [8caf9fe62] 2016-06-30 12:37:02 -0400
Branch: REL9_4_STABLE [1843d88e0] 2016-06-30 12:37:02 -0400
-->
<para>
Fix possible loss of large subtransactions in logical decoding
(Petru-Florin Mihancea)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [bcbecbce2] 2016-08-07 13:15:55 -0400
Branch: REL9_5_STABLE [71dca408c] 2016-08-07 13:15:55 -0400
Branch: REL9_4_STABLE [c63588feb] 2016-08-07 13:15:55 -0400
-->
<para>
Fix failure of logical decoding when a subtransaction contains no
actual changes (Marko Tiikkaja, Andrew Gierth)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [52e8fc3e2] 2016-05-25 17:48:15 -0400
Branch: REL9_5_STABLE [b2355a29c] 2016-05-25 17:48:15 -0400
Branch: REL9_4_STABLE [4b612a78f] 2016-05-25 17:48:15 -0400
Branch: REL9_3_STABLE [463207630] 2016-05-25 17:48:15 -0400
-->
<para>
Ensure that backends see up-to-date statistics for shared catalogs
(Tom Lane)
</para>
<para>
The statistics collector failed to update the statistics file for
shared catalogs after a request from a regular backend. This problem
was partially masked because the autovacuum launcher regularly makes
requests that did cause such updates; however, it became obvious with
autovacuum disabled.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [22b27b4c9] 2016-05-31 15:55:15 -0400
Branch: REL9_5_STABLE [47215c16f] 2016-05-31 15:54:46 -0400
Branch: REL9_4_STABLE [3ffff7257] 2016-05-31 15:54:46 -0400
Branch: REL9_3_STABLE [a84cad224] 2016-05-31 15:54:47 -0400
-->
<para>
Avoid redundant writes of the statistics files when multiple
backends request updates close together (Tom Lane, Tomas Vondra)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [996d27397] 2016-05-24 15:20:36 -0400
Branch: REL9_5_STABLE [a34c3dd50] 2016-05-24 15:20:12 -0400
Branch: REL9_4_STABLE [defe936ef] 2016-05-24 15:20:12 -0400
Branch: REL9_3_STABLE [9f3e4c813] 2016-05-24 15:20:12 -0400
Branch: REL9_2_STABLE [2e7f0c34a] 2016-05-24 15:20:12 -0400
Branch: REL9_1_STABLE [fe1731fca] 2016-05-24 15:20:12 -0400
Branch: master [2d2e40e3b] 2016-05-24 15:47:51 -0400
Branch: REL9_5_STABLE [bbbe2c97e] 2016-05-24 15:47:51 -0400
Branch: REL9_4_STABLE [edd8873ff] 2016-05-24 15:47:51 -0400
Branch: REL9_3_STABLE [ff98ae908] 2016-05-24 15:47:51 -0400
Branch: REL9_2_STABLE [4cf0978ea] 2016-05-24 15:47:51 -0400
Branch: REL9_1_STABLE [5551dac59] 2016-05-24 15:47:51 -0400
-->
<para>
Avoid consuming a transaction ID during <command>VACUUM</>
(Alexander Korotkov)
</para>
<para>
Some cases in <command>VACUUM</> unnecessarily caused an XID to be
assigned to the current transaction. Normally this is negligible,
but if one is up against the XID wraparound limit, consuming more
XIDs during anti-wraparound vacuums is a very bad thing.
</para>
</listitem>
<listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [e3ad3ffa6] 2016-06-24 18:29:28 -0400
Branch: REL9_5_STABLE [d372cb173] 2016-06-24 18:29:28 -0400
Branch: REL9_4_STABLE [61b24fef8] 2016-06-24 18:29:28 -0400
Branch: REL9_3_STABLE [28f294afd] 2016-06-24 18:29:28 -0400
-->
<para>
Prevent possible failure when vacuuming multixact IDs in an
installation that has been pg_upgrade'd from pre-9.3 (Andrew Gierth,
&Aacute;lvaro Herrera)
</para>
<para>
The usual symptom of this bug is errors
like <quote>MultiXactId <replaceable>NNN</> has not been created
yet -- apparent wraparound</quote>.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [f64340e74] 2016-06-06 17:44:17 -0400
Branch: REL9_5_STABLE [5acc58c5e] 2016-06-06 17:44:17 -0400
Branch: REL9_4_STABLE [a4400c251] 2016-06-06 17:44:17 -0400
Branch: REL9_3_STABLE [5f3e0e84b] 2016-06-06 17:44:17 -0400
Branch: REL9_2_STABLE [3201709de] 2016-06-06 17:44:18 -0400
Branch: REL9_1_STABLE [32ceb8dfb] 2016-06-06 17:44:18 -0400
-->
<para>
When a manual <command>ANALYZE</> specifies a column list, don't
reset the table's <literal>changes_since_analyze</> counter
(Tom Lane)
</para>
<para>
If we're only analyzing some columns, we should not prevent routine
auto-analyze from happening for the other columns.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [95bee941b] 2016-08-07 18:52:02 -0400
Branch: REL9_5_STABLE [cb5c14984] 2016-08-07 18:52:02 -0400
Branch: REL9_4_STABLE [8f180a6cc] 2016-08-07 18:52:02 -0400
Branch: REL9_3_STABLE [20a859504] 2016-08-07 18:52:02 -0400
Branch: REL9_2_STABLE [127d73009] 2016-08-07 18:52:02 -0400
Branch: REL9_1_STABLE [a449ad095] 2016-08-07 18:52:02 -0400
-->
<para>
Fix <command>ANALYZE</>'s overestimation of <literal>n_distinct</>
for a unique or nearly-unique column with many null entries (Tom
Lane)
</para>
<para>
The nulls could get counted as though they were themselves distinct
values, leading to serious planner misestimates in some types of
queries.
</para>
</listitem>
<listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [15739393e] 2016-05-10 16:23:54 -0300
Branch: REL9_5_STABLE [7516cdb76] 2016-05-10 16:23:54 -0300
Branch: REL9_4_STABLE [e9a273199] 2016-05-10 16:23:54 -0300
Branch: REL9_3_STABLE [92ebe509e] 2016-05-10 16:23:54 -0300
Branch: REL9_2_STABLE [ca4c6d043] 2016-05-10 16:23:54 -0300
Branch: REL9_1_STABLE [2152762c5] 2016-05-10 16:23:54 -0300
-->
<para>
Prevent autovacuum from starting multiple workers for the same shared
catalog (&Aacute;lvaro Herrera)
</para>
<para>
Normally this isn't much of a problem because the vacuum doesn't take
long anyway; but in the case of a severely bloated catalog, it could
result in all but one worker uselessly waiting instead of doing
useful work on other tables.
</para>
</listitem>
<listitem>
<!--
Author: Kevin Grittner <kgrittn@postgresql.org>
Branch: master [7392eed7c] 2016-06-02 12:23:01 -0500
Branch: REL9_5_STABLE [236d569f9] 2016-06-02 12:23:19 -0500
-->
<para>
Fix bug in b-tree mark/restore processing (Kevin Grittner)
</para>
<para>
This error could lead to incorrect join results or assertion failures
in a merge join whose inner source node is a b-tree indexscan.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [e89526d4f] 2016-08-06 14:28:37 -0400
Branch: REL9_5_STABLE [ee5d1de04] 2016-08-06 14:28:37 -0400
Branch: REL9_4_STABLE [98d5f366b] 2016-08-06 14:28:38 -0400
-->
<para>
Avoid duplicate buffer lock release when abandoning a b-tree index
page deletion attempt (Tom Lane)
</para>
<para>
This mistake prevented <command>VACUUM</> from completing in some
cases involving corrupt b-tree indexes.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [8cf739de8] 2016-06-24 16:57:36 -0400
Branch: REL9_5_STABLE [07f69137b] 2016-06-24 16:57:36 -0400
-->
<para>
Fix building of large (bigger than <varname>shared_buffers</>)
hash indexes (Tom Lane)
</para>
<para>
The code path used for large indexes contained a bug causing
incorrect hash values to be inserted into the index, so that
subsequent index searches always failed, except for tuples inserted
into the index after the initial build.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [1acf75725] 2016-07-14 18:45:59 -0400
Branch: REL9_5_STABLE [503546376] 2016-07-14 18:46:00 -0400
Branch: REL9_4_STABLE [054052b3a] 2016-07-14 18:46:00 -0400
Branch: REL9_3_STABLE [57dba87a7] 2016-07-14 18:46:00 -0400
Branch: REL9_2_STABLE [042009f24] 2016-07-14 18:46:00 -0400
-->
<para>
Prevent infinite loop in GiST index build for geometric columns
containing NaN component values (Tom Lane)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [8a859691d] 2016-06-05 11:53:06 -0400
Branch: REL9_5_STABLE [a7aa61ffe] 2016-06-05 11:53:06 -0400
-->
<para>
Fix possible crash during a nearest-neighbor (<literal>ORDER BY</>
distance) indexscan on a <filename>contrib/btree_gist</> index on
an <type>interval</> column (Peter Geoghegan)
</para>
</listitem>
<listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [975ad4e60] 2016-05-30 14:47:22 -0400
Branch: REL9_5_STABLE [2973d7d02] 2016-05-30 14:47:22 -0400
-->
<para>
Fix <quote>PANIC: failed to add BRIN tuple</> error when attempting
to update a BRIN index entry (&Aacute;lvaro Herrera)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [8d498a5c8] 2016-08-04 16:06:14 -0400
Branch: REL9_5_STABLE [c1d6ee879] 2016-08-04 16:06:14 -0400
-->
<para>
Fix possible crash during background worker shutdown (Dmitry Ivanov)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [baebab3ac] 2016-07-12 18:07:03 -0400
Branch: REL9_5_STABLE [a0943dbbe] 2016-07-12 18:06:50 -0400
-->
<para>
Fix PL/pgSQL's handling of the <literal>INTO</> clause
within <command>IMPORT FOREIGN SCHEMA</> commands (Tom Lane)
</para>
</listitem>
<listitem>
<!--
Author: Peter Eisentraut <peter_e@gmx.net>
Branch: master [f36ca9af0] 2016-07-17 09:15:37 -0400
Branch: REL9_5_STABLE [fb279fc7a] 2016-07-17 09:24:06 -0400
Branch: REL9_4_STABLE [97d741650] 2016-07-17 09:37:33 -0400
Branch: REL9_3_STABLE [805f2bb53] 2016-07-17 09:38:23 -0400
Branch: REL9_2_STABLE [6c0be49b2] 2016-07-17 09:39:51 -0400
Branch: REL9_1_STABLE [84d679204] 2016-07-17 09:41:08 -0400
-->
<para>
Fix <filename>contrib/btree_gin</> to handle the smallest
possible <type>bigint</> value correctly (Peter Eisentraut)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [69dc5ae40] 2016-08-05 18:58:12 -0400
Branch: REL9_5_STABLE [cae0d4f9b] 2016-08-05 18:58:19 -0400
Branch: REL9_4_STABLE [a3cd60ebf] 2016-08-05 18:58:23 -0400
Branch: REL9_3_STABLE [c3107f18a] 2016-08-05 18:58:28 -0400
Branch: REL9_2_STABLE [3e40d9227] 2016-08-05 18:58:32 -0400
Branch: REL9_1_STABLE [1f63b0e09] 2016-08-05 18:58:36 -0400
-->
<para>
Teach libpq to correctly decode server version from future servers
(Peter Eisentraut)
</para>
<para>
It's planned to switch to two-part instead of three-part server
version numbers for releases after 9.6. Make sure
that <function>PQserverVersion()</> returns the correct value for
such cases.
</para>
</listitem>
<listitem>
<!--
Author: Michael Meskes <meskes@postgresql.org>
Branch: master [3ebc88e56] 2016-08-01 15:08:12 +0200
Branch: REL9_5_STABLE [dc6b20c6b] 2016-08-01 15:09:23 +0200
Branch: REL9_4_STABLE [057404854] 2016-08-01 15:09:12 +0200
Branch: REL9_3_STABLE [3ca359426] 2016-08-01 15:08:59 +0200
Branch: REL9_2_STABLE [295edbecf] 2016-08-01 15:08:48 +0200
Branch: REL9_1_STABLE [c15f502b6] 2016-08-01 15:08:36 +0200
-->
<para>
Fix <application>ecpg</>'s code for <literal>unsigned long long</>
array elements (Michael Meskes)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [e2e95f5ef] 2016-08-02 12:49:40 -0400
Branch: REL9_5_STABLE [89c30d113] 2016-08-02 12:49:41 -0400
Branch: REL9_4_STABLE [2ff8a2fc0] 2016-08-02 12:49:04 -0400
Branch: REL9_3_STABLE [6693c9d7b] 2016-08-02 12:49:09 -0400
Branch: REL9_2_STABLE [a5a7caaa1] 2016-08-02 12:49:15 -0400
-->
<para>
In <application>pg_dump</> with both <option>-c</> and <option>-C</>
options, avoid emitting an unwanted <literal>CREATE SCHEMA public</>
command (David Johnston, Tom Lane)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [e652273e0] 2016-06-02 13:28:17 -0400
Branch: REL9_5_STABLE [404429038] 2016-06-02 13:28:18 -0400
Branch: REL9_4_STABLE [96aac0e6d] 2016-06-02 13:27:53 -0400
Branch: REL9_3_STABLE [5c9724305] 2016-06-02 13:27:53 -0400
Branch: master [6c72a28e5] 2016-06-03 11:29:38 -0400
Branch: REL9_5_STABLE [ec5622351] 2016-06-03 11:29:20 -0400
Branch: REL9_4_STABLE [53c2601a5] 2016-06-03 11:29:20 -0400
Branch: REL9_3_STABLE [4a21c6fd7] 2016-06-03 11:29:20 -0400
-->
<para>
Improve handling of <systemitem>SIGTERM</>/control-C in
parallel <application>pg_dump</> and <application>pg_restore</> (Tom
Lane)
</para>
<para>
Make sure that the worker processes will exit promptly, and also arrange
to send query-cancel requests to the connected backends, in case they
are doing something long-running such as a <command>CREATE INDEX</>.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [9abd64ec9] 2016-05-25 12:40:12 -0400
Branch: REL9_5_STABLE [af6555b80] 2016-05-25 12:39:57 -0400
Branch: REL9_4_STABLE [ea274b2f4] 2016-05-25 12:39:57 -0400
Branch: REL9_3_STABLE [1c8205159] 2016-05-25 12:39:57 -0400
-->
<para>
Fix error reporting in parallel <application>pg_dump</>
and <application>pg_restore</> (Tom Lane)
</para>
<para>
Previously, errors reported by <application>pg_dump</>
or <application>pg_restore</> worker processes might never make it to
the user's console, because the messages went through the master
process, and there were various deadlock scenarios that would prevent
the master process from passing on the messages. Instead, just print
everything to <literal>stderr</>. In some cases this will result in
duplicate messages (for instance, if all the workers report a server
shutdown), but that seems better than no message.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [df8d2d8c4] 2016-05-26 10:50:30 -0400
Branch: REL9_5_STABLE [6479df137] 2016-05-26 10:50:38 -0400
Branch: REL9_4_STABLE [d32bc204c] 2016-05-26 10:50:42 -0400
Branch: REL9_3_STABLE [b9784e1f7] 2016-05-26 10:50:46 -0400
-->
<para>
Ensure that parallel <application>pg_dump</>
or <application>pg_restore</> on Windows will shut down properly
after an error (Kyotaro Horiguchi)
</para>
<para>
Previously, it would report the error, but then just sit until
manually stopped by the user.
</para>
</listitem>
<listitem>
<!--
Author: Magnus Hagander <magnus@hagander.net>
Branch: master [d74048def] 2016-05-26 22:14:23 +0200
Branch: REL9_5_STABLE [47e596976] 2016-05-26 22:18:04 +0200
-->
<para>
Make parallel <application>pg_dump</> fail cleanly when run against a
standby server (Magnus Hagander)
</para>
<para>
This usage is not supported
unless <option>--no-synchronized-snapshots</> is specified, but the
error was not handled very well.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [cae2bb198] 2016-05-26 11:51:04 -0400
Branch: REL9_5_STABLE [64b296976] 2016-05-26 11:51:11 -0400
Branch: REL9_4_STABLE [f2f18a37c] 2016-05-26 11:51:16 -0400
Branch: REL9_3_STABLE [99565a1ef] 2016-05-26 11:51:20 -0400
-->
<para>
Make <application>pg_dump</> behave better when built without zlib
support (Kyotaro Horiguchi)
</para>
<para>
It didn't work right for parallel dumps, and emitted some rather
pointless warnings in other cases.
</para>
</listitem>
<listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
Branch: master [74d8c95b7] 2016-08-01 17:36:14 +0900
Branch: REL9_5_STABLE [928e92fda] 2016-08-01 17:37:18 +0900
Branch: REL9_4_STABLE [dbe56f2a1] 2016-08-01 17:37:41 +0900
Branch: REL9_3_STABLE [013f42372] 2016-08-01 17:37:53 +0900
Branch: REL9_2_STABLE [a21617759] 2016-08-01 17:38:00 +0900
Branch: REL9_1_STABLE [366f4a962] 2016-08-01 17:38:05 +0900
-->
<para>
Make <application>pg_basebackup</> accept <literal>-Z 0</> as
specifying no compression (Fujii Masao)
</para>
</listitem>
<listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [e8564ef03] 2016-07-23 20:30:03 -0400
Branch: REL9_5_STABLE [cf35406f9] 2016-07-23 20:30:40 -0400
Branch: REL9_4_STABLE [f0c9e4697] 2016-07-23 20:30:44 -0400
Branch: REL9_3_STABLE [98b7a3cf2] 2016-07-23 20:30:48 -0400
Branch: REL9_2_STABLE [a4daf59ee] 2016-07-23 20:30:55 -0400
Branch: REL9_1_STABLE [b1fa6c0eb] 2016-07-23 20:30:59 -0400
-->
<para>
Fix makefiles' rule for building AIX shared libraries to be safe for
parallel make (Noah Misch)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [30b2731bd] 2016-07-09 16:47:38 -0400
Branch: REL9_5_STABLE [f80395ca1] 2016-07-09 16:47:39 -0400
Branch: REL9_4_STABLE [02a898b00] 2016-07-09 16:47:39 -0400
Branch: REL9_3_STABLE [57e9ea2dd] 2016-07-11 11:24:04 -0400
Branch: REL9_2_STABLE [fdf2ee62e] 2016-07-11 11:24:04 -0400
Branch: REL9_1_STABLE [71af6c006] 2016-07-11 11:24:04 -0400
-->
<para>
Fix TAP tests and MSVC scripts to work when build directory's path
name contains spaces (Michael Paquier, Kyotaro Horiguchi)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [9dd4178ce] 2016-05-27 10:40:20 -0400
Branch: REL9_5_STABLE [cea17ba07] 2016-05-27 10:40:20 -0400
Branch: REL9_4_STABLE [c2651cd24] 2016-05-27 10:40:20 -0400
Branch: REL9_3_STABLE [1f1e70a87] 2016-05-27 10:40:20 -0400
-->
<para>
Be more predictable about reporting <quote>statement timeout</>
versus <quote>lock timeout</> (Tom Lane)
</para>
<para>
On heavily loaded machines, the regression tests sometimes failed due
to reporting <quote>lock timeout</> even though the statement timeout
should have occurred first.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [b3399cb0f] 2016-07-21 13:11:00 -0400
Branch: REL9_5_STABLE [fd507d542] 2016-07-21 13:11:00 -0400
Branch: master [9d7abca90] 2016-07-22 15:41:39 -0400
Branch: REL9_5_STABLE [2aa2533f2] 2016-07-22 15:41:40 -0400
Branch: master [95810ed8e] 2016-07-21 14:24:07 -0400
Branch: REL9_5_STABLE [95e8b44f0] 2016-07-21 14:24:07 -0400
Branch: REL9_4_STABLE [dfddc452d] 2016-07-21 14:24:07 -0400
Branch: REL9_3_STABLE [0060638c8] 2016-07-21 14:24:07 -0400
Branch: REL9_2_STABLE [52502e7a5] 2016-07-21 14:24:07 -0400
Branch: REL9_1_STABLE [f61ecd01e] 2016-07-21 14:24:07 -0400
Branch: master [d70d11915] 2016-07-21 16:52:35 -0400
Branch: REL9_5_STABLE [d365dc3d1] 2016-07-21 16:52:36 -0400
Branch: REL9_4_STABLE [1156a9db8] 2016-07-21 16:52:36 -0400
Branch: REL9_3_STABLE [e15e7886e] 2016-07-21 16:52:36 -0400
Branch: REL9_2_STABLE [a1e750553] 2016-07-21 16:52:36 -0400
Branch: REL9_1_STABLE [ba64aed70] 2016-07-21 16:52:36 -0400
-->
<para>
Make regression tests safe for Danish and Welsh locales (Jeff Janes,
Tom Lane)
</para>
<para>
Change some test data that triggered the unusual sorting rules of
these locales.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: REL9_5_STABLE [19d477aa6] 2016-07-19 15:59:36 -0400
Branch: REL9_4_STABLE [590a7f82b] 2016-07-19 15:59:36 -0400
Branch: REL9_3_STABLE [3928132ea] 2016-07-19 15:59:36 -0400
Branch: REL9_2_STABLE [cd951aa61] 2016-07-19 15:59:36 -0400
Branch: REL9_1_STABLE [5db14fad0] 2016-07-19 15:59:36 -0400
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: REL9_5_STABLE [0aabe80c6] 2016-07-19 17:53:31 -0400
Branch: REL9_4_STABLE [bdbcfba35] 2016-07-19 17:53:31 -0400
Branch: REL9_3_STABLE [f102bd868] 2016-07-19 17:53:31 -0400
Branch: REL9_2_STABLE [4d37b7cff] 2016-07-19 17:53:31 -0400
Branch: REL9_1_STABLE [d70df7867] 2016-07-19 17:53:31 -0400
-->
<para>
Update our copy of the timezone code to match
IANA's <application>tzcode</> release 2016c (Tom Lane)
</para>
<para>
This is needed to cope with anticipated future changes in the time
zone data files. It also fixes some corner-case bugs in coping with
unusual time zones.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [a629330b2] 2016-08-05 12:59:29 -0400
Branch: REL9_5_STABLE [3fddd6484] 2016-08-05 12:58:38 -0400
Branch: REL9_4_STABLE [8080337b0] 2016-08-05 12:58:46 -0400
Branch: REL9_3_STABLE [5630bd2ec] 2016-08-05 12:58:53 -0400
Branch: REL9_2_STABLE [7822792f7] 2016-08-05 12:58:58 -0400
Branch: REL9_1_STABLE [a44388ffe] 2016-08-05 12:59:02 -0400
-->
<para>
Update time zone data files to <application>tzdata</> release 2016f
for DST law changes in Kemerovo and Novosibirsk, plus historical
corrections for Azerbaijan, Belarus, and Morocco.
</para>
</listitem>
</itemizedlist>
</sect2>
</sect1>
<sect1 id="release-9-5-3">
<title>Release 9.5.3</title>
<note>
<title>Release Date</title>
<simpara>2016-05-12</simpara>
</note>
<para>
This release contains a variety of fixes from 9.5.2.
For information about new features in the 9.5 major release, see
<xref linkend="release-9-5">.
</para>
<sect2>
<title>Migration to Version 9.5.3</title>
<para>
A dump/restore is not required for those running 9.5.X.
</para>
<para>
However, if you are upgrading from a version earlier than 9.5.2,
see <xref linkend="release-9-5-2">.
</para>
</sect2>
<sect2>
<title>Changes</title>
<itemizedlist>
<listitem>
<!--
Author: Peter Eisentraut <peter_e@gmx.net>
Branch: master [7c7d4fdda] 2016-04-08 14:11:56 -0400
Branch: REL9_5_STABLE [a3c17b2af] 2016-05-06 23:47:42 -0400
Branch: REL9_4_STABLE [e3b14de9f] 2016-05-07 00:10:31 -0400
Branch: REL9_3_STABLE [a9d8644de] 2016-05-07 00:10:17 -0400
Branch: REL9_2_STABLE [e3a493ac0] 2016-05-07 00:05:39 -0400
Branch: REL9_1_STABLE [9b676fd49] 2016-05-07 00:09:37 -0400
-->
<para>
Clear the OpenSSL error queue before OpenSSL calls, rather than
assuming it's clear already; and make sure we leave it clear
afterwards (Peter Geoghegan, Dave Vitek, Peter Eisentraut)
</para>
<para>
This change prevents problems when there are multiple connections
using OpenSSL within a single process and not all the code involved
follows the same rules for when to clear the error queue.
Failures have been reported specifically when a client application
uses SSL connections in <application>libpq</> concurrently with
SSL connections using the PHP, Python, or Ruby wrappers for OpenSSL.
It's possible for similar problems to arise within the server as well,
if an extension module establishes an outgoing SSL connection.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [80f66a9ad] 2016-04-21 20:05:58 -0400
Branch: REL9_5_STABLE [94c685a7c] 2016-04-21 20:05:58 -0400
Branch: REL9_4_STABLE [3232c2427] 2016-04-21 20:05:58 -0400
Branch: REL9_3_STABLE [d9742ac46] 2016-04-21 20:05:58 -0400
Branch: REL9_2_STABLE [ad2d32b57] 2016-04-21 20:05:58 -0400
Branch: REL9_1_STABLE [6882dbd34] 2016-04-21 20:05:58 -0400
-->
<para>
Fix <quote>failed to build any <replaceable>N</>-way joins</quote>
planner error with a full join enclosed in the right-hand side of a
left join (Tom Lane)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [207d5a656] 2016-04-29 20:19:38 -0400
Branch: REL9_5_STABLE [f25d0619c] 2016-04-29 20:19:38 -0400
Branch: REL9_4_STABLE [72edc8ffe] 2016-04-29 20:19:38 -0400
Branch: REL9_3_STABLE [67349e5a8] 2016-04-29 20:19:38 -0400
Branch: REL9_2_STABLE [f02cb8c9a] 2016-04-29 20:19:38 -0400
-->
<para>
Fix incorrect handling of equivalence-class tests in multilevel
nestloop plans (Tom Lane)
</para>
<para>
Given a three-or-more-way equivalence class of variables, such
as <literal>X.X = Y.Y = Z.Z</>, it was possible for the planner to omit
some of the tests needed to enforce that all the variables are actually
equal, leading to join rows being output that didn't satisfy
the <literal>WHERE</> clauses. For various reasons, erroneous plans
were seldom selected in practice, so that this bug has gone undetected
for a long time.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [abb164655] 2016-04-21 23:17:36 -0400
Branch: REL9_5_STABLE [81deadd31] 2016-04-21 23:17:36 -0400
-->
<para>
Fix corner-case parser failures occurring
when <xref linkend="guc-operator-precedence-warning"> is turned on
(Tom Lane)
</para>
<para>
An example is that <literal>SELECT (ARRAY[])::text[]</> gave an error,
though it worked without the parentheses.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [f0e766bd7] 2016-04-15 00:02:26 -0400
Branch: REL9_5_STABLE [edd57377f] 2016-04-15 00:02:26 -0400
Branch: REL9_4_STABLE [0479eccdc] 2016-04-15 00:02:26 -0400
-->
<para>
Fix query-lifespan memory leak in GIN index scans (Julien Rouhaud)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [bde361fef] 2016-04-20 14:25:15 -0400
Branch: REL9_5_STABLE [be2754456] 2016-04-20 14:25:15 -0400
Branch: REL9_4_STABLE [ef35afa35] 2016-04-20 14:25:15 -0400
-->
<para>
Fix query-lifespan memory leak and potential index corruption hazard in
GIN index insertion (Tom Lane)
</para>
<para>
The memory leak would typically not amount to much in simple queries,
but it could be very substantial during a large GIN index build with
high <varname>maintenance_work_mem</>.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [d136d600f] 2016-05-06 12:09:20 -0400
Branch: REL9_5_STABLE [504af1fe0] 2016-05-06 12:09:20 -0400
Branch: REL9_4_STABLE [1180868d1] 2016-05-06 12:09:20 -0400
Branch: REL9_3_STABLE [462456d8d] 2016-05-06 12:09:20 -0400
Branch: REL9_2_STABLE [11247dd99] 2016-05-06 12:09:20 -0400
Branch: REL9_1_STABLE [7bad282c3] 2016-05-06 12:09:20 -0400
-->
<para>
Fix possible misbehavior of <literal>TH</>, <literal>th</>,
and <literal>Y,YYY</> format codes in <function>to_timestamp()</>
(Tom Lane)
</para>
<para>
These could advance off the end of the input string, causing subsequent
format codes to read garbage.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [1f7c85b82] 2016-04-21 14:20:30 -0400
Branch: REL9_5_STABLE [4b52cc289] 2016-04-21 14:20:18 -0400
Branch: REL9_4_STABLE [679c92238] 2016-04-21 14:20:18 -0400
Branch: REL9_3_STABLE [e5882f26b] 2016-04-21 14:20:18 -0400
Branch: REL9_2_STABLE [c7c145e4f] 2016-04-21 14:20:18 -0400
Branch: REL9_1_STABLE [663624e60] 2016-04-21 14:20:18 -0400
-->
<para>
Fix dumping of rules and views in which the <replaceable>array</>
argument of a <literal><replaceable>value</> <replaceable>operator</>
ANY (<replaceable>array</>)</literal> construct is a sub-SELECT
(Tom Lane)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [99f3b5613] 2016-04-04 18:05:23 -0400
Branch: REL9_5_STABLE [f3d17491c] 2016-04-04 18:05:23 -0400
Branch: REL9_4_STABLE [28148e258] 2016-04-04 18:05:24 -0400
-->
<para>
Disallow newlines in <command>ALTER SYSTEM</> parameter values
(Tom Lane)
</para>
<para>
The configuration-file parser doesn't support embedded newlines in
string literals, so we mustn't allow them in values to be inserted
by <command>ALTER SYSTEM</>.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [8f1911d5e] 2016-04-15 12:11:40 -0400
Branch: REL9_5_STABLE [8f8e65d34] 2016-04-15 12:11:27 -0400
Branch: REL9_4_STABLE [8eed31ffb] 2016-04-15 12:11:27 -0400
-->
<para>
Fix <command>ALTER TABLE ... REPLICA IDENTITY USING INDEX</> to
work properly if an index on OID is selected (David Rowley)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [93c301fc4] 2016-04-08 12:31:53 -0400
Branch: REL9_5_STABLE [0da7cf6e8] 2016-04-08 12:31:42 -0400
-->
<para>
Avoid possible misbehavior after failing to remove a tablespace symlink
(Tom Lane)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [6a3d3965d] 2016-04-14 19:42:21 -0400
Branch: REL9_5_STABLE [e7a456174] 2016-04-14 19:42:22 -0400
Branch: REL9_4_STABLE [00456911f] 2016-04-14 19:42:22 -0400
-->
<para>
Fix crash in logical decoding on alignment-picky platforms (Tom Lane,
Andres Freund)
</para>
<para>
The failure occurred only with a transaction large enough to spill to
disk and a primary-key change within that transaction.
</para>
</listitem>
<listitem>
<!--
Author: Andres Freund <andres@anarazel.de>
Branch: master [59455018a] 2016-04-28 22:11:18 -0700
Branch: REL9_5_STABLE [2e1b4adf3] 2016-04-28 22:11:18 -0700
Branch: REL9_4_STABLE [596f93605] 2016-04-28 22:11:18 -0700
-->
<para>
Avoid repeated requests for feedback from receiver while shutting down
walsender (Nick Cleaton)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [cbabb70f3] 2016-04-20 23:48:13 -0400
Branch: REL9_5_STABLE [0b8e0bf0a] 2016-04-20 23:48:13 -0400
Branch: REL9_4_STABLE [f05ac711b] 2016-04-20 23:48:13 -0400
Branch: REL9_3_STABLE [691073bd8] 2016-04-20 23:48:13 -0400
Branch: REL9_2_STABLE [1b22368ff] 2016-04-20 23:48:13 -0400
Branch: REL9_1_STABLE [4c1c9f80b] 2016-04-20 23:48:13 -0400
-->
<para>
Make <application>pg_regress</> use a startup timeout from the
<envar>PGCTLTIMEOUT</> environment variable, if that's set (Tom Lane)
</para>
<para>
This is for consistency with a behavior recently added
to <application>pg_ctl</>; it eases automated testing on slow machines.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [6cead413b] 2016-04-13 18:58:14 -0400
Branch: REL9_5_STABLE [fb0f63933] 2016-04-13 18:57:52 -0400
Branch: REL9_4_STABLE [5daf1012a] 2016-04-13 18:57:52 -0400
Branch: REL9_3_STABLE [34bf6bc56] 2016-04-13 18:57:52 -0400
Branch: REL9_2_STABLE [6bb42d520] 2016-04-13 18:57:52 -0400
Branch: REL9_1_STABLE [3ef1f3a3e] 2016-04-13 18:57:52 -0400
-->
<para>
Fix <application>pg_upgrade</> to correctly restore extension
membership for operator families containing only one operator class
(Tom Lane)
</para>
<para>
In such a case, the operator family was restored into the new database,
but it was no longer marked as part of the extension. This had no
immediate ill effects, but would cause later <application>pg_dump</>
runs to emit output that would cause (harmless) errors on restore.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [1a2c17f8e] 2016-05-06 22:05:56 -0400
Branch: REL9_5_STABLE [196870f2f] 2016-05-06 22:05:51 -0400
Branch: REL9_4_STABLE [e1aecebc0] 2016-05-06 22:05:51 -0400
Branch: REL9_3_STABLE [e1d88f983] 2016-05-06 22:05:51 -0400
-->
<para>
Fix <application>pg_upgrade</> to not fail when new-cluster TOAST rules
differ from old (Tom Lane)
</para>
<para>
<application>pg_upgrade</> had special-case code to handle the
situation where the new <productname>PostgreSQL</> version thinks that
a table should have a TOAST table while the old version did not. That
code was broken, so remove it, and instead do nothing in such cases;
there seems no reason to believe that we can't get along fine without
a TOAST table if that was okay according to the old version's rules.
</para>
</listitem>
<listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [213c7df03] 2016-04-26 21:53:58 -0400
Branch: REL9_5_STABLE [f9989482d] 2016-04-26 21:54:07 -0400
-->
<para>
Fix atomic operations for PPC when using IBM's XLC compiler (Noah Misch)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [75c24d0f7] 2016-04-18 13:33:06 -0400
Branch: REL9_5_STABLE [c6a5b6677] 2016-04-18 13:33:07 -0400
Branch: REL9_4_STABLE [21b7f49eb] 2016-04-18 13:33:07 -0400
Branch: REL9_3_STABLE [6ec1ff852] 2016-04-18 13:33:07 -0400
Branch: REL9_2_STABLE [b24f7e280] 2016-04-18 13:33:07 -0400
-->
<para>
Reduce the number of SysV semaphores used by a build configured with
<option>--disable-spinlocks</> (Tom Lane)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [0ab3595e5] 2016-04-23 16:53:15 -0400
Branch: REL9_5_STABLE [bdf7744f7] 2016-04-23 16:53:15 -0400
Branch: REL9_4_STABLE [2a715371c] 2016-04-23 16:53:15 -0400
Branch: REL9_3_STABLE [252c35895] 2016-04-23 16:53:15 -0400
Branch: REL9_2_STABLE [0f5491283] 2016-04-23 16:53:15 -0400
Branch: REL9_1_STABLE [cbff4b708] 2016-04-23 16:53:15 -0400
-->
<para>
Rename internal function <function>strtoi()</>
to <function>strtoint()</> to avoid conflict with a NetBSD library
function (Thomas Munro)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: REL9_5_STABLE [20d4428f0] 2016-04-21 15:44:18 -0400
Branch: REL9_4_STABLE [5e2fb8862] 2016-04-21 15:44:18 -0400
Branch: REL9_3_STABLE [8f9518414] 2016-04-21 15:44:18 -0400
Branch: REL9_2_STABLE [6848827b4] 2016-04-21 15:44:18 -0400
Branch: REL9_1_STABLE [b2bb59bd5] 2016-04-21 15:44:18 -0400
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [125ad539a] 2016-04-21 16:58:47 -0400
Branch: REL9_5_STABLE [d2e59cbc3] 2016-04-21 16:58:59 -0400
Branch: REL9_4_STABLE [56dee70d9] 2016-04-21 16:59:04 -0400
Branch: REL9_3_STABLE [82bf369ed] 2016-04-21 16:59:08 -0400
Branch: REL9_2_STABLE [b5ebc513d] 2016-04-21 16:59:13 -0400
Branch: REL9_1_STABLE [9028f404e] 2016-04-21 16:59:17 -0400
-->
<para>
Fix reporting of errors from <function>bind()</>
and <function>listen()</> system calls on Windows (Tom Lane)
</para>
</listitem>
<listitem>
<!--
Author: Andrew Dunstan <andrew@dunslane.net>
Branch: master [01a07e6c1] 2016-04-08 12:37:20 -0400
Branch: REL9_5_STABLE [849167943] 2016-04-08 12:36:59 -0400
Branch: REL9_4_STABLE [f79a7fa90] 2016-04-08 12:29:31 -0400
Branch: REL9_3_STABLE [ca5d6edbf] 2016-04-08 12:29:34 -0400
Branch: REL9_2_STABLE [9e77d0e3c] 2016-04-08 12:29:36 -0400
Branch: REL9_1_STABLE [d2189a802] 2016-04-08 12:33:29 -0400
-->
<para>
Reduce verbosity of compiler output when building with Microsoft Visual
Studio (Christian Ullrich)
</para>
</listitem>
<listitem>
<!--
Author: Andrew Dunstan <andrew@dunslane.net>
Branch: master [0fb54de9a] 2016-04-29 08:09:07 -0400
Branch: REL9_5_STABLE [da52474f3] 2016-04-29 08:06:25 -0400
Branch: master [7dc549238] 2016-04-29 09:49:31 -0400
Branch: REL9_5_STABLE [b71b4d852] 2016-04-29 09:50:38 -0400
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [23b09e15b] 2016-04-28 11:50:58 -0400
Branch: REL9_5_STABLE [94a16531b] 2016-04-28 11:51:08 -0400
Branch: REL9_4_STABLE [65c2eeb00] 2016-04-28 11:51:13 -0400
Branch: REL9_3_STABLE [707c44fe2] 2016-04-28 11:51:17 -0400
Branch: REL9_2_STABLE [c563d97c6] 2016-04-28 11:51:22 -0400
Branch: REL9_1_STABLE [a6c6789c4] 2016-04-28 11:51:26 -0400
-->
<para>
Support building with Visual Studio 2015
(Michael Paquier, Petr Jel&iacute;nek)
</para>
<para>
Note that builds made with VS2015 will not run on Windows versions
before Windows Vista.
</para>
</listitem>
<listitem>
<!--
Author: Magnus Hagander <magnus@hagander.net>
Branch: master [9f633b404] 2016-04-22 05:18:59 -0400
Branch: REL9_5_STABLE [409c49c64] 2016-04-22 05:19:57 -0400
Branch: REL9_4_STABLE [c238a4101] 2016-04-22 05:20:07 -0400
Branch: REL9_3_STABLE [ab5c6d01f] 2016-04-22 05:20:18 -0400
-->
<para>
Fix <function>putenv()</> to work properly with Visual Studio 2013
(Michael Paquier)
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [7abc15716] 2016-03-29 11:55:19 -0400
Branch: REL9_5_STABLE [491e84738] 2016-03-29 11:54:57 -0400
Branch: REL9_4_STABLE [2fed676c9] 2016-03-29 11:54:57 -0400
Branch: REL9_3_STABLE [11cc7bb88] 2016-03-29 11:54:57 -0400
Branch: REL9_2_STABLE [b4b06931e] 2016-03-29 11:54:58 -0400
Branch: REL9_1_STABLE [6cd30292b] 2016-03-29 11:54:58 -0400
-->
<para>
Avoid possibly-unsafe use of Windows' <function>FormatMessage()</>
function (Christian Ullrich)
</para>
<para>
Use the <literal>FORMAT_MESSAGE_IGNORE_INSERTS</> flag where
appropriate. No live bug is known to exist here, but it seems like a
good idea to be careful.
</para>
</listitem>
<listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [98f158e41] 2016-05-05 20:08:58 -0400
Branch: REL9_5_STABLE [4edbb265c] 2016-05-05 20:09:10 -0400
Branch: REL9_4_STABLE [a5148e800] 2016-05-05 20:09:17 -0400
Branch: REL9_3_STABLE [d30c67af8] 2016-05-05 20:09:22 -0400
Branch: REL9_2_STABLE [29d154e36] 2016-05-05 20:09:27 -0400
Branch: REL9_1_STABLE [bfc39da64] 2016-05-05 20:09:32 -0400
-->
<para>
Update time zone data files to <application>tzdata</> release 2016d
for DST law changes in Russia and Venezuela. There are new zone
names <literal>Europe/Kirov</> and <literal>Asia/Tomsk</> to reflect
the fact that these regions now have different time zone histories from
adjacent regions.
</para>
</listitem>
</itemizedlist>
</sect2>
</sect1>
<sect1 id="release-9-5-2">
<title>Release 9.5.2</title>
<note>
<title>Release Date</title>
<simpara>2016-03-31</simpara>
</note>
<para>
This release contains a variety of fixes from 9.5.1.
For information about new features in the 9.5 major release, see
<xref linkend="release-9-5">.
</para>
<sect2>
<title>Migration to Version 9.5.2</title>
<para>
A dump/restore is not required for those running 9.5.X.
</para>
<para>
However, you may need to <command>REINDEX</> some indexes after applying
the update, as per the first changelog entry below.
</para>
</sect2>
<sect2>
<title>Changes</title>
<itemizedlist>
<!--
Author: Robert Haas <rhaas@postgresql.org>
Branch: master [3df9c374e] 2016-03-23 16:03:13 -0400
Branch: REL9_5_STABLE [8aa6e9780] 2016-03-23 16:04:35 -0400
-->
<listitem>
<para>
Disable abbreviated keys for string sorting in non-<literal>C</>
locales (Robert Haas)
</para>
<para>
<productname>PostgreSQL</> 9.5 introduced logic for speeding up
comparisons of string data types by using the standard C library
function <function>strxfrm()</> as a substitute
for <function>strcoll()</>. It now emerges that most versions of
glibc (Linux's implementation of the C library) have buggy
implementations of <function>strxfrm()</> that, in some locales,
can produce string comparison results that do not
match <function>strcoll()</>. Until this problem can be better
characterized, disable the optimization in all non-<literal>C</>
locales. (<literal>C</> locale is safe since it uses
neither <function>strcoll()</> nor <function>strxfrm()</>.)
</para>
<para>
Unfortunately, this problem affects not only sorting but also entry
ordering in B-tree indexes, which means that B-tree indexes
on <type>text</>, <type>varchar</>, or <type>char</> columns may now
be corrupt if they sort according to an affected locale and were
built or modified under <productname>PostgreSQL</> 9.5.0 or 9.5.1.
Users should <command>REINDEX</> indexes that might be affected.
</para>
<para>
It is not possible at this time to give an exhaustive list of
known-affected locales. <literal>C</> locale is known safe, and
there is no evidence of trouble in English-based locales such
as <literal>en_US</>, but some other popular locales such
as <literal>de_DE</> are affected in most glibc versions.
</para>
</listitem>
<!--
Author: Stephen Frost <sfrost@snowman.net>
Branch: master [86ebf30fd] 2016-03-28 09:03:20 -0400
Branch: REL9_5_STABLE [db69e58a0] 2016-03-28 09:03:41 -0400
-->
<listitem>
<para>
Maintain row-security status properly in cached plans (Stephen Frost)
</para>
<para>
In a session that performs queries as more than one role, the plan
cache might incorrectly re-use a plan that was generated for another
role ID, thus possibly applying the wrong set of policies when
row-level security (RLS) is in use.
(CVE-2016-2193)
</para>
</listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [3e1338475] 2016-03-28 10:57:42 -0300
Branch: REL9_5_STABLE [bf78a6f10] 2016-03-28 10:57:46 -0300
-->
<listitem>
<para>
Add must-be-superuser checks to some
new <filename>contrib/pageinspect</> functions (Andreas Seltenreich)
</para>
<para>
Most functions in the <filename>pageinspect</> extension that
inspect <type>bytea</> values disallow calls by non-superusers,
but <function>brin_page_type()</> and <function>brin_metapage_info()</>
failed to do so. Passing contrived <type>bytea</> values to them might
crash the server or disclose a few bytes of server memory. Add the
missing permissions checks to prevent misuse.
(CVE-2016-3065)
</para>
</listitem>
<!--
Author: Simon Riggs <simon@2ndQuadrant.com>
Branch: master [c7111d11b] 2016-03-03 09:53:43 +0000
Branch: REL9_5_STABLE [bf7ced5e2] 2016-03-03 09:50:38 +0000
-->
<listitem>
<para>
Fix incorrect handling of indexed <literal>ROW()</> comparisons
(Simon Riggs)
</para>
<para>
Flaws in a minor optimization introduced in 9.5 caused incorrect
results if the <literal>ROW()</> comparison matches the index ordering
partially but not exactly (for example, differing column order, or the
index contains both <literal>ASC</> and <literal>DESC</> columns).
Pending a better solution, the optimization has been removed.
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [a298a1e06] 2016-03-09 14:51:22 -0500
Branch: REL9_5_STABLE [b2ce9485b] 2016-03-09 14:51:01 -0500
Branch: REL9_4_STABLE [da936200d] 2016-03-09 14:51:01 -0500
Branch: REL9_3_STABLE [1ab7a160f] 2016-03-09 14:51:01 -0500
Branch: REL9_2_STABLE [c8e059724] 2016-03-09 14:51:01 -0500
Branch: REL9_1_STABLE [d485d9581] 2016-03-09 14:51:02 -0500
-->
<listitem>
<para>
Fix incorrect handling of NULL index entries in
indexed <literal>ROW()</> comparisons (Tom Lane)
</para>
<para>
An index search using a row comparison such as <literal>ROW(a, b) &gt;
ROW('x', 'y')</> would stop upon reaching a NULL entry in
the <structfield>b</> column, ignoring the fact that there might be
non-NULL <structfield>b</> values associated with later values
of <structfield>a</>.
</para>
</listitem>
<!--
Author: Andres Freund <andres@anarazel.de>
Branch: master [1d4a0ab19] 2016-03-09 18:53:53 -0800
Branch: REL9_5_STABLE [301cc3549] 2016-03-09 18:53:53 -0800
Branch: REL9_4_STABLE [4f37d0916] 2016-03-09 18:53:54 -0800
Branch: REL9_3_STABLE [bfa282a02] 2016-03-09 18:53:54 -0800
Branch: REL9_2_STABLE [ce8f42919] 2016-03-09 18:53:54 -0800
Branch: REL9_1_STABLE [a62714fae] 2016-03-09 18:53:54 -0800
Branch: master [606e0f984] 2016-03-09 18:53:53 -0800
Branch: REL9_5_STABLE [63b06e8fa] 2016-03-09 18:53:53 -0800
Branch: REL9_4_STABLE [43b491a81] 2016-03-09 18:53:54 -0800
Branch: REL9_3_STABLE [e069848a3] 2016-03-09 18:53:54 -0800
Branch: REL9_2_STABLE [c224d44f7] 2016-03-09 18:53:54 -0800
Branch: REL9_1_STABLE [d0e47bcd4] 2016-03-09 18:53:54 -0800
-->
<listitem>
<para>
Avoid unlikely data-loss scenarios due to renaming files without
adequate <function>fsync()</> calls before and after (Michael Paquier,
Tomas Vondra, Andres Freund)
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [71404af2a] 2016-03-22 17:56:20 -0400
Branch: REL9_5_STABLE [d8d5a00b1] 2016-03-22 17:56:06 -0400
-->
<listitem>
<para>
Fix incorrect behavior when rechecking a just-modified row in a query
that does <command>SELECT FOR UPDATE/SHARE</> and contains some
relations that need not be locked (Tom Lane)
</para>
<para>
Rows from non-locked relations were incorrectly treated as containing
all NULLs during the recheck, which could result in incorrectly
deciding that the updated row no longer passes the <literal>WHERE</>
condition, or in incorrectly outputting NULLs.
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [a9d199f6d] 2016-03-02 23:31:39 -0500
Branch: REL9_5_STABLE [429d68465] 2016-03-02 23:31:39 -0500
Branch: REL9_4_STABLE [597e41e45] 2016-03-02 23:31:39 -0500
-->
<listitem>
<para>
Fix bug in <function>json_to_record()</> when a field of its input
object contains a sub-object with a field name matching one of the
requested output column names (Tom Lane)
</para>
</listitem>
<!--
Author: Andrew Dunstan <andrew@dunslane.net>
Branch: master [94c745eb1] 2016-02-21 10:30:49 -0500
Branch: REL9_5_STABLE [68d68ff83] 2016-02-21 10:40:39 -0500
-->
<listitem>
<para>
Fix nonsense result from two-argument form
of <function>jsonb_object()</> when called with empty arrays
(Michael Paquier, Andrew Dunstan)
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [384dfbde1] 2016-03-23 10:43:13 -0400
Branch: REL9_5_STABLE [5f95521b3] 2016-03-23 10:43:24 -0400
-->
<listitem>
<para>
Fix misbehavior in <function>jsonb_set()</> when converting a path
array element into an integer for use as an array subscript
(Michael Paquier)
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [55c3a04d6] 2016-03-17 15:50:33 -0400
Branch: REL9_5_STABLE [d0a585c69] 2016-03-17 15:50:33 -0400
Branch: REL9_4_STABLE [17a250b18] 2016-03-17 15:50:33 -0400
-->
<listitem>
<para>
Fix misformatting of negative time zone offsets
by <function>to_char()</>'s <literal>OF</> format code
(Thomas Munro, Tom Lane)
</para>
</listitem>
<!--
Author: Stephen Frost <sfrost@snowman.net>
Branch: master [fd658dbb3] 2016-03-15 18:04:39 -0400
Branch: REL9_5_STABLE [3f14d8d59] 2016-03-15 18:04:48 -0400
-->
<listitem>
<para>
Fix possible incorrect logging of waits done by
<command>INSERT ... ON CONFLICT</> (Peter Geoghegan)
</para>
<para>
Log messages would sometimes claim that the wait was due to an
exclusion constraint although no such constraint was responsible.
</para>
</listitem>
<!--
Author: Fujii Masao <fujii@postgresql.org>
Branch: master [d34794f7d] 2016-03-06 02:29:04 +0900
Branch: REL9_5_STABLE [f95f1ce00] 2016-03-06 02:43:17 +0900
Branch: REL9_4_STABLE [a9613ee69] 2016-03-06 02:43:26 +0900
-->
<listitem>
<para>
Ignore <xref linkend="recovery-min-apply-delay"> parameter until
recovery has reached a consistent state (Michael Paquier)
</para>
<para>
Previously, standby servers would delay application of WAL records in
response to <varname>recovery_min_apply_delay</> even while replaying
the initial portion of WAL needed to make their database state valid.
Since the standby is useless until it's reached a consistent database
state, this was deemed unhelpful.
</para>
</listitem>
<!--
Author: Simon Riggs <simon@2ndQuadrant.com>
Branch: master [481725c0b] 2016-02-19 08:31:12 +0000
Branch: REL9_5_STABLE [c479024d3] 2016-02-19 08:31:39 +0000
Branch: REL9_4_STABLE [6830cae5f] 2016-02-19 08:32:28 +0000
Branch: REL9_3_STABLE [71e3cff2e] 2016-02-19 08:33:33 +0000
Branch: REL9_2_STABLE [c063d3c43] 2016-02-19 08:33:52 +0000
Branch: REL9_1_STABLE [ca32f125b] 2016-02-19 08:35:02 +0000
-->
<listitem>
<para>
Correctly handle cases where <literal>pg_subtrans</> is close to XID
wraparound during server startup (Jeff Janes)
</para>
</listitem>
<!--
Author: Andres Freund <andres@anarazel.de>
Branch: master [c8f621c43] 2016-03-05 18:02:20 -0800
Branch: REL9_5_STABLE [5990a034a] 2016-03-05 18:02:20 -0800
Branch: REL9_4_STABLE [3b94b3a49] 2016-03-05 18:02:20 -0800
Branch: master [fd45d16f6] 2016-03-06 16:27:20 -0800
Branch: REL9_5_STABLE [5d1826fe7] 2016-03-06 16:27:20 -0800
Branch: REL9_4_STABLE [fb3ea0465] 2016-03-06 16:27:20 -0800
Branch: master [b63bea5fd] 2016-03-07 14:24:03 -0800
Branch: REL9_5_STABLE [250e5bd71] 2016-03-07 14:24:52 -0800
Branch: REL9_4_STABLE [e3e84fd35] 2016-03-07 14:24:58 -0800
Author: Andres Freund <andres@anarazel.de>
Branch: master [0bda14d54] 2016-03-05 18:02:20 -0800
Branch: REL9_5_STABLE [e76e365be] 2016-03-05 18:02:20 -0800
Branch: REL9_4_STABLE [a50f50a65] 2016-03-05 18:02:20 -0800
Author: Andres Freund <andres@anarazel.de>
Branch: master [d9e903f3c] 2016-03-05 18:02:20 -0800
Branch: REL9_5_STABLE [6e759cefe] 2016-03-05 18:02:20 -0800
Branch: REL9_4_STABLE [465dd92d9] 2016-03-05 18:02:20 -0800
Author: Andres Freund <andres@anarazel.de>
Branch: master [7c17aac69] 2016-03-02 23:42:21 -0800
Branch: REL9_5_STABLE [f8a75881f] 2016-03-02 23:43:42 -0800
-->
<listitem>
<para>
Fix assorted bugs in logical decoding (Andres Freund)
</para>
<para>
Trouble cases included tuples larger than one page when replica
identity is <literal>FULL</>, <command>UPDATE</>s that change a
primary key within a transaction large enough to be spooled to disk,
incorrect reports of <quote>subxact logged without previous toplevel
record</>, and incorrect reporting of a transaction's commit time.
</para>
</listitem>
<!--
Author: Dean Rasheed <dean.a.rasheed@gmail.com>
Branch: master [41fedc246] 2016-02-29 12:28:06 +0000
Branch: REL9_5_STABLE [f1dfcf63d] 2016-02-29 12:31:25 +0000
Branch: REL9_4_STABLE [9b69d5c1d] 2016-02-29 12:34:33 +0000
-->
<listitem>
<para>
Fix planner error with nested security barrier views when the outer
view has a <literal>WHERE</> clause containing a correlated subquery
(Dean Rasheed)
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [ab4ff2889] 2016-03-13 16:44:31 -0400
Branch: REL9_5_STABLE [aa9c4e71c] 2016-03-13 16:44:10 -0400
-->
<listitem>
<para>
Fix memory leak in GIN index searches (Tom Lane)
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [907e4dd2b] 2016-02-28 23:39:20 -0500
Branch: REL9_5_STABLE [2d43c45e9] 2016-02-28 23:40:04 -0500
Branch: REL9_4_STABLE [80c925c7b] 2016-02-28 23:40:13 -0500
Branch: REL9_3_STABLE [0c4457de8] 2016-02-28 23:40:21 -0500
Branch: REL9_2_STABLE [47792639c] 2016-02-28 23:40:28 -0500
Branch: REL9_1_STABLE [7d6c58aa1] 2016-02-28 23:40:35 -0500
-->
<listitem>
<para>
Fix corner-case crash due to trying to free <function>localeconv()</>
output strings more than once (Tom Lane)
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [b3e05097e] 2016-03-06 19:20:55 -0500
Branch: REL9_5_STABLE [c2d61adc3] 2016-03-06 19:21:03 -0500
Branch: REL9_4_STABLE [3fa4715c5] 2016-03-06 19:21:03 -0500
Branch: REL9_3_STABLE [a35f85a52] 2016-03-06 19:21:03 -0500
Branch: REL9_2_STABLE [8894c9f79] 2016-03-06 19:21:03 -0500
Branch: REL9_1_STABLE [fe747b741] 2016-03-06 19:21:03 -0500
-->
<listitem>
<para>
Fix parsing of affix files for <literal>ispell</> dictionaries
(Tom Lane)
</para>
<para>
The code could go wrong if the affix file contained any characters
whose byte length changes during case-folding, for
example <literal>I</> in Turkish UTF8 locales.
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [51e78ab4f] 2016-02-10 19:30:11 -0500
Branch: REL9_5_STABLE [b10635bb5] 2016-02-10 19:30:11 -0500
Branch: REL9_4_STABLE [19e469410] 2016-02-10 19:30:12 -0500
Branch: REL9_3_STABLE [24ce5754a] 2016-02-10 19:30:12 -0500
Branch: REL9_2_STABLE [64f99a2ee] 2016-02-10 19:30:12 -0500
Branch: REL9_1_STABLE [e56acbe2a] 2016-02-10 19:30:12 -0500
-->
<listitem>
<para>
Avoid use of <function>sscanf()</> to parse <literal>ispell</>
dictionary files (Artur Zakirov)
</para>
<para>
This dodges a portability problem on FreeBSD-derived platforms
(including macOS).
</para>
</listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [5882ca668] 2016-02-19 22:47:50 -0500
Branch: REL9_5_STABLE [377a1af56] 2016-02-19 22:48:04 -0500
-->
<listitem>
<para>
Fix atomic-operations code used on PPC with IBM's xlc compiler
(Noah Misch)
</para>
<para>
This error led to rare failures of concurrent operations on that
platform.
</para>
</listitem>
<!--
Author: Magnus Hagander <magnus@hagander.net>
Branch: master [9d9038824] 2016-03-10 14:10:18 +0100
Branch: REL9_5_STABLE [ad9a15d3f] 2016-03-10 14:10:32 +0100
Branch: REL9_4_STABLE [8857488b6] 2016-03-10 14:10:41 +0100
Branch: REL9_3_STABLE [270d8a12e] 2016-03-10 14:10:48 +0100
Branch: REL9_2_STABLE [78b597808] 2016-03-10 14:10:54 +0100
Branch: REL9_1_STABLE [3e6385e27] 2016-03-10 14:11:01 +0100
-->
<listitem>
<para>
Avoid a crash on old Windows versions (before 7SP1/2008R2SP1) with an
AVX2-capable CPU and a Postgres build done with Visual Studio 2013
(Christian Ullrich)
</para>
<para>
This is a workaround for a bug in Visual Studio 2013's runtime
library, which Microsoft have stated they will not fix in that
version.
</para>
</listitem>
<!--
Author: Robert Haas <rhaas@postgresql.org>
Branch: master [9445db925] 2016-03-04 11:53:20 -0500
Branch: REL9_5_STABLE [0315dfa8f] 2016-03-04 11:57:22 -0500
Branch: REL9_4_STABLE [8de488d00] 2016-03-04 11:57:23 -0500
Branch: REL9_3_STABLE [54139ac22] 2016-03-04 11:57:31 -0500
Branch: REL9_2_STABLE [c658d5a9b] 2016-03-04 11:57:36 -0500
Branch: REL9_1_STABLE [b4895bf79] 2016-03-04 11:57:40 -0500
-->
<listitem>
<para>
Fix <application>psql</>'s tab completion logic to handle multibyte
characters properly (Kyotaro Horiguchi, Robert Haas)
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: REL9_5_STABLE [1bee54e51] 2016-03-14 11:31:22 -0400
Branch: REL9_4_STABLE [13108dd0e] 2016-03-14 11:31:34 -0400
Branch: REL9_3_STABLE [0576de5c7] 2016-03-14 11:31:39 -0400
Branch: REL9_2_STABLE [39b3ea714] 2016-03-14 11:31:44 -0400
Branch: REL9_1_STABLE [2d61d88d8] 2016-03-14 11:31:49 -0400
-->
<listitem>
<para>
Fix <application>psql</>'s tab completion for
<literal>SECURITY LABEL</> (Tom Lane)
</para>
<para>
Pressing TAB after <literal>SECURITY LABEL</> might cause a crash
or offering of inappropriate keywords.
</para>
</listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [2ffa86962] 2016-02-10 20:34:02 -0500
Branch: REL9_5_STABLE [725f0ce29] 2016-02-10 20:34:24 -0500
Branch: REL9_4_STABLE [4492ab53b] 2016-02-10 20:34:30 -0500
Branch: REL9_3_STABLE [198242ede] 2016-02-10 20:34:35 -0500
Branch: REL9_2_STABLE [4421b5253] 2016-02-10 20:34:41 -0500
Branch: REL9_1_STABLE [f97664cf5] 2016-02-10 20:34:48 -0500
-->
<listitem>
<para>
Make <application>pg_ctl</> accept a wait timeout from the
<envar>PGCTLTIMEOUT</> environment variable, if none is specified on
the command line (Noah Misch)
</para>
<para>
This eases testing of slower buildfarm members by allowing them
to globally specify a longer-than-normal timeout for postmaster
startup and shutdown.
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [b642e50ae] 2016-03-07 10:40:44 -0500
Branch: REL9_5_STABLE [45b87cc57] 2016-03-07 10:40:53 -0500
Branch: REL9_4_STABLE [89f8372cb] 2016-03-07 10:40:57 -0500
Branch: REL9_3_STABLE [b73e81605] 2016-03-07 10:41:01 -0500
Branch: REL9_2_STABLE [15d43196c] 2016-03-07 10:41:07 -0500
Branch: REL9_1_STABLE [5a39c7395] 2016-03-07 10:41:11 -0500
-->
<listitem>
<para>
Fix incorrect test for Windows service status
in <application>pg_ctl</> (Manuel Mathar)
</para>
<para>
The previous set of minor releases attempted to
fix <application>pg_ctl</> to properly determine whether to send log
messages to Window's Event Log, but got the test backwards.
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [47211af17] 2016-03-16 23:18:07 -0400
Branch: REL9_5_STABLE [8ee2e5f78] 2016-03-16 23:18:07 -0400
Branch: REL9_4_STABLE [23cb32660] 2016-03-16 23:18:07 -0400
Branch: REL9_3_STABLE [c02aae418] 2016-03-16 23:18:07 -0400
Branch: REL9_2_STABLE [be6f9ea2e] 2016-03-16 23:18:08 -0400
Branch: REL9_1_STABLE [1965a8ce1] 2016-03-16 23:18:08 -0400
-->
<listitem>
<para>
Fix <application>pgbench</> to correctly handle the combination
of <literal>-C</> and <literal>-M prepared</> options (Tom Lane)
</para>
</listitem>
<!--
Author: Bruce Momjian <bruce@momjian.us>
Branch: master [3386f34cd] 2016-02-18 18:32:27 -0500
Branch: REL9_5_STABLE [6f43c4d34] 2016-02-18 18:32:26 -0500
Branch: REL9_4_STABLE [bec4d0ffb] 2016-02-18 18:32:26 -0500
Branch: REL9_3_STABLE [bf26c4f44] 2016-02-18 18:32:26 -0500
-->
<listitem>
<para>
In <application>pg_upgrade</>, skip creating a deletion script when
the new data directory is inside the old data directory (Bruce
Momjian)
</para>
<para>
Blind application of the script in such cases would result in loss of
the new data directory.
</para>
</listitem>
<!--
Author: Andres Freund <andres@anarazel.de>
Branch: master [e66197fa2] 2016-03-08 13:42:57 -0800
Branch: REL9_5_STABLE [68dababfe] 2016-03-08 13:42:58 -0800
Branch: REL9_4_STABLE [6041d388c] 2016-03-08 13:42:58 -0800
Branch: REL9_3_STABLE [44f9f1f2d] 2016-03-08 13:42:58 -0800
Branch: REL9_2_STABLE [ee06c97e4] 2016-03-08 13:42:58 -0800
Branch: REL9_1_STABLE [c5f1fbbfb] 2016-03-08 13:42:58 -0800
-->
<listitem>
<para>
In PL/Perl, properly translate empty Postgres arrays into empty Perl
arrays (Alex Hunsaker)
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [66f503868] 2016-02-16 21:08:15 -0500
Branch: REL9_5_STABLE [2ce19f8a5] 2016-02-16 21:08:15 -0500
Branch: REL9_4_STABLE [f461fa7d0] 2016-02-16 21:08:15 -0500
Branch: REL9_3_STABLE [b3ec98c8b] 2016-02-16 21:08:15 -0500
Branch: REL9_2_STABLE [7d48349fd] 2016-02-16 21:08:15 -0500
Branch: REL9_1_STABLE [875973f5d] 2016-02-16 21:08:15 -0500
-->
<listitem>
<para>
Make PL/Python cope with function names that aren't valid Python
identifiers (Jim Nasby)
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [48e6c943e] 2016-02-18 15:40:35 -0500
Branch: REL9_5_STABLE [0276bbd62] 2016-02-18 15:40:35 -0500
Branch: REL9_4_STABLE [b7547166f] 2016-02-18 15:40:35 -0500
Branch: REL9_3_STABLE [9dfb5b940] 2016-02-18 15:40:35 -0500
Branch: REL9_2_STABLE [29f299728] 2016-02-18 15:40:35 -0500
Branch: REL9_1_STABLE [0f359c7de] 2016-02-18 15:40:36 -0500
-->
<listitem>
<para>
Fix multiple mistakes in the statistics returned
by <filename>contrib/pgstattuple</>'s <function>pgstatindex()</>
function (Tom Lane)
</para>
</listitem>
<!--
Author: Andrew Dunstan <andrew@dunslane.net>
Branch: master [5d0320105] 2016-03-19 18:36:35 -0400
Branch: REL9_5_STABLE [2f38b3e7d] 2016-03-19 18:44:04 -0400
Branch: REL9_4_STABLE [6336ca916] 2016-03-19 18:49:19 -0400
Branch: REL9_3_STABLE [a0adf3852] 2016-03-19 18:51:01 -0400
Branch: REL9_2_STABLE [89bf78a9b] 2016-03-19 18:51:01 -0400
Branch: REL9_1_STABLE [2aa9fd963] 2016-03-19 18:59:41 -0400
-->
<listitem>
<para>
Remove dependency on <literal>psed</> in MSVC builds, since it's no
longer provided by core Perl (Michael Paquier, Andrew Dunstan)
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [676265eb7] 2016-03-25 19:03:08 -0400
Branch: REL9_5_STABLE [31d02ebf7] 2016-03-25 19:03:24 -0400
Branch: REL9_4_STABLE [de371e68a] 2016-03-25 19:03:32 -0400
Branch: REL9_3_STABLE [8e16592d4] 2016-03-25 19:03:39 -0400
Branch: REL9_2_STABLE [96fa37459] 2016-03-25 19:03:47 -0400
Branch: REL9_1_STABLE [e5fd35cc5] 2016-03-25 19:03:54 -0400
-->
<listitem>
<para>
Update time zone data files to <application>tzdata</> release 2016c
for DST law changes in Azerbaijan, Chile, Haiti, Palestine, and Russia
(Altai, Astrakhan, Kirov, Sakhalin, Ulyanovsk regions), plus
historical corrections for Lithuania, Moldova, and Russia
(Kaliningrad, Samara, Volgograd).
</para>
</listitem>
</itemizedlist>
</sect2>
</sect1>
<sect1 id="release-9-5-1">
<title>Release 9.5.1</title>
<note>
<title>Release Date</title>
<simpara>2016-02-11</simpara>
</note>
<para>
This release contains a variety of fixes from 9.5.0.
For information about new features in the 9.5 major release, see
<xref linkend="release-9-5">.
</para>
<sect2>
<title>Migration to Version 9.5.1</title>
<para>
A dump/restore is not required for those running 9.5.X.
</para>
</sect2>
<sect2>
<title>Changes</title>
<itemizedlist>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [3bb3f42f3] 2016-02-08 10:25:40 -0500
Branch: REL9_5_STABLE [a61de2bc1] 2016-02-08 10:25:40 -0500
Branch: REL9_4_STABLE [fdc3139e2] 2016-02-08 10:25:40 -0500
Branch: REL9_3_STABLE [6403a6b74] 2016-02-08 10:25:40 -0500
Branch: REL9_2_STABLE [e93516cf7] 2016-02-08 10:25:40 -0500
Branch: REL9_1_STABLE [98d6b7305] 2016-02-08 10:25:40 -0500
-->
<listitem>
<para>
Fix infinite loops and buffer-overrun problems in regular expressions
(Tom Lane)
</para>
<para>
Very large character ranges in bracket expressions could cause
infinite loops in some cases, and memory overwrites in other cases.
(CVE-2016-0773)
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [f867ce551] 2016-02-07 12:29:32 -0500
Branch: REL9_5_STABLE [129db3cbe] 2016-02-07 12:29:17 -0500
-->
<listitem>
<para>
Fix an oversight that caused hash joins to miss joining to some tuples
of the inner relation in rare cases (Tomas Vondra, Tom Lane)
</para>
</listitem>
<!--
Author: Andres Freund <andres@anarazel.de>
Branch: master [a6897efab] 2016-02-08 11:03:31 +0100
Branch: REL9_5_STABLE [87dbc72a7] 2016-02-08 11:03:37 +0100
-->
<listitem>
<para>
Avoid pushdown of <literal>HAVING</> clauses when grouping sets are
used (Andrew Gierth)
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [cc2ca9319] 2016-02-07 14:57:24 -0500
Branch: REL9_5_STABLE [82406d6ff] 2016-02-07 14:57:24 -0500
-->
<listitem>
<para>
Fix deparsing of <literal>ON CONFLICT</> arbiter <literal>WHERE</>
clauses (Peter Geoghegan)
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [b8682a715] 2016-01-26 15:38:33 -0500
Branch: REL9_5_STABLE [2acb682f6] 2016-01-26 15:38:33 -0500
Branch: REL9_4_STABLE [2b3983158] 2016-01-26 15:38:33 -0500
Branch: REL9_3_STABLE [9bbfca8fd] 2016-01-26 15:38:33 -0500
Branch: REL9_2_STABLE [3a7af9d73] 2016-01-26 15:38:33 -0500
Branch: REL9_1_STABLE [b043df093] 2016-01-26 15:38:33 -0500
-->
<listitem>
<para>
Make <literal>%h</> and <literal>%r</> escapes
in <varname>log_line_prefix</> work for messages emitted due
to <varname>log_connections</> (Tom Lane)
</para>
<para>
Previously, <literal>%h</>/<literal>%r</> started to work just after a
new session had emitted the <quote>connection received</> log message;
now they work for that message too.
</para>
</listitem>
<!--
Author: Magnus Hagander <magnus@hagander.net>
Branch: master [6a61d1ff9] 2016-01-14 13:06:03 +0100
Branch: REL9_5_STABLE [3276ca303] 2016-01-14 13:07:20 +0100
Branch: REL9_4_STABLE [ab49f87d5] 2016-01-14 13:07:35 +0100
Branch: REL9_3_STABLE [77d8edcf5] 2016-01-14 13:07:45 +0100
Branch: REL9_2_STABLE [df0bd5a0f] 2016-01-14 13:07:55 +0100
Branch: REL9_1_STABLE [b1c0f92eb] 2016-01-14 13:08:10 +0100
-->
<listitem>
<para>
Avoid leaking a token handle during SSPI authentication
(Christian Ullrich)
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [7e2247047] 2016-01-29 10:28:02 +0100
Branch: REL9_5_STABLE [56251f396] 2016-01-29 10:28:02 +0100
Branch: REL9_4_STABLE [5849b6e32] 2016-01-29 10:28:02 +0100
Branch: REL9_3_STABLE [db678ca16] 2016-01-29 10:28:03 +0100
Branch: REL9_2_STABLE [a362cc2e3] 2016-01-29 10:28:03 +0100
Branch: REL9_1_STABLE [ed5f57218] 2016-01-29 10:28:03 +0100
-->
<listitem>
<para>
Fix <application>psql</>'s <literal>\det</> command to interpret its
pattern argument the same way as other <literal>\d</> commands with
potentially schema-qualified patterns do (Reece Hart)
</para>
</listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [a96761391] 2016-01-07 11:59:08 -0300
Branch: REL9_5_STABLE [744d01c9a] 2016-01-07 11:59:08 -0300
Branch: REL9_4_STABLE [c7aca3d45] 2016-01-07 11:59:08 -0300
Branch: REL9_3_STABLE [74d4009b8] 2016-01-07 11:59:08 -0300
Branch: REL9_2_STABLE [5c4cbd5d1] 2016-01-07 11:59:08 -0300
Branch: REL9_1_STABLE [b96f6f444] 2016-01-07 11:59:08 -0300
-->
<listitem>
<para>
In <application>pg_ctl</> on Windows, check service status to decide
where to send output, rather than checking if standard output is a
terminal (Michael Paquier)
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [e72d7d853] 2016-01-13 18:55:27 -0500
Branch: REL9_5_STABLE [c42df2d46] 2016-01-13 18:55:27 -0500
Branch: REL9_4_STABLE [7393208b5] 2016-01-13 18:55:27 -0500
Branch: REL9_3_STABLE [b87403f70] 2016-01-13 18:55:27 -0500
Branch: REL9_2_STABLE [be2b27651] 2016-01-13 18:55:27 -0500
Branch: REL9_1_STABLE [5108013db] 2016-01-13 18:55:27 -0500
-->
<listitem>
<para>
Fix assorted corner-case bugs in <application>pg_dump</>'s processing
of extension member objects (Tom Lane)
</para>
</listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [df43fcf45] 2016-01-22 20:04:35 -0300
Branch: REL9_5_STABLE [1e910cf5b] 2016-01-22 20:04:35 -0300
-->
<listitem>
<para>
Fix improper quoting of domain constraint names
in <application>pg_dump</> (Elvis Pranskevichus)
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [0ed707e9b] 2016-02-04 00:26:10 -0500
Branch: REL9_5_STABLE [b99dd7170] 2016-02-04 00:26:10 -0500
Branch: REL9_4_STABLE [411e2b0d5] 2016-02-04 00:26:10 -0500
Branch: REL9_3_STABLE [aefbc208b] 2016-02-04 00:26:10 -0500
Branch: REL9_2_STABLE [4f58a7003] 2016-02-04 00:26:10 -0500
Branch: REL9_1_STABLE [9c704632c] 2016-02-04 00:26:10 -0500
-->
<listitem>
<para>
Make <application>pg_dump</> mark a view's triggers as needing to be
processed after its rule, to prevent possible failure during
parallel <application>pg_restore</> (Tom Lane)
</para>
</listitem>
<!--
Author: Robert Haas <rhaas@postgresql.org>
Branch: master [64f5edca2] 2016-02-01 08:23:41 -0500
Branch: REL9_5_STABLE [829757c8a] 2016-02-01 08:26:07 -0500
Branch: REL9_4_STABLE [c33d1a8d5] 2016-02-03 09:15:29 -0500
Branch: REL9_3_STABLE [014796aa3] 2016-02-03 09:19:58 -0500
Branch: REL9_2_STABLE [b63a4f418] 2016-02-03 09:21:44 -0500
Branch: REL9_1_STABLE [4c8b07d3c] 2016-02-03 09:25:34 -0500
-->
<listitem>
<para>
Install guards in <application>pgbench</> against corner-case overflow
conditions during evaluation of script-specified division or modulo
operators (Fabien Coelho, Michael Paquier)
</para>
</listitem>
<!--
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Branch: master [4aecd22d3] 2016-01-05 17:25:12 -0300
Branch: REL9_5_STABLE [7ef311eb4] 2016-01-05 17:25:12 -0300
-->
<listitem>
<para>
Suppress useless warning message when <application>pg_receivexlog</>
connects to a pre-9.4 server (Marco Nenciarini)
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [866566a69] 2016-01-11 19:55:39 -0500
Branch: REL9_5_STABLE [db8fa56d6] 2016-01-11 19:55:39 -0500
Branch: REL9_4_STABLE [22815752e] 2016-01-11 19:55:40 -0500
Branch: REL9_3_STABLE [0ddeaba7e] 2016-01-11 19:55:40 -0500
Branch: REL9_2_STABLE [3843ba510] 2016-01-11 19:55:40 -0500
Branch: master [fb6fcbd33] 2016-01-11 20:06:36 -0500
Branch: REL9_5_STABLE [5ef26b8de] 2016-01-11 20:06:47 -0500
-->
<listitem>
<para>
Avoid dump/reload problems when using both <application>plpython2</>
and <application>plpython3</> (Tom Lane)
</para>
<para>
In principle, both versions of <application>PL/Python</> can be used in
the same database, though not in the same session (because the two
versions of <application>libpython</> cannot safely be used concurrently).
However, <application>pg_restore</> and <application>pg_upgrade</> both
do things that can fall foul of the same-session restriction. Work
around that by changing the timing of the check.
</para>
</listitem>
<!--
Author: Peter Eisentraut <peter_e@gmx.net>
Branch: REL9_4_STABLE [f1b898759] 2015-11-14 13:43:43 -0500
Branch: REL9_3_STABLE [a37ab812c] 2015-11-14 13:44:09 -0500
Branch: REL9_2_STABLE [82076c1e4] 2015-11-14 13:53:26 -0500
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: REL9_5_STABLE [a66c1fcdd] 2016-01-08 11:39:28 -0500
-->
<listitem>
<para>
Fix <application>PL/Python</> regression tests to pass with Python 3.5
(Peter Eisentraut)
</para>
</listitem>
<!--
Author: Noah Misch <noah@leadboat.com>
Branch: master [f4aa3a18a] 2016-02-05 20:22:51 -0500
Branch: REL9_5_STABLE [0089dd34a] 2016-02-05 20:23:04 -0500
Branch: REL9_4_STABLE [ed6deeb7a] 2016-02-05 20:23:07 -0500
Branch: REL9_3_STABLE [34e91736b] 2016-02-05 20:23:11 -0500
Branch: REL9_2_STABLE [de9766d39] 2016-02-05 20:23:14 -0500
Branch: REL9_1_STABLE [b1f591c50] 2016-02-05 20:23:19 -0500
-->
<listitem>
<para>
Prevent certain <application>PL/Java</> parameters from being set by
non-superusers (Noah Misch)
</para>
<para>
This change mitigates a <application>PL/Java</> security bug
(CVE-2016-0766), which was fixed in <application>PL/Java</> by marking
these parameters as superuser-only. To fix the security hazard for
sites that update <productname>PostgreSQL</> more frequently
than <application>PL/Java</>, make the core code aware of them also.
</para>
</listitem>
<!--
Author: Michael Meskes <meskes@postgresql.org>
Branch: master [7a58d19b0] 2016-02-01 13:21:00 +0100
Branch: REL9_5_STABLE [40482e606] 2016-02-01 13:20:37 +0100
Branch: REL9_3_STABLE [0b55fef39] 2016-02-01 13:19:10 +0100
Branch: REL9_2_STABLE [d9ce5d201] 2016-02-01 13:19:34 +0100
Branch: REL9_1_STABLE [79782b407] 2016-02-01 13:19:43 +0100
Author: Andres Freund <andres@anarazel.de>
Branch: REL9_4_STABLE [33b26426e] 2016-02-08 11:10:14 +0100
-->
<listitem>
<para>
Fix <application>ecpg</>-supplied header files to not contain comments
continued from a preprocessor directive line onto the next line
(Michael Meskes)
</para>
<para>
Such a comment is rejected by <application>ecpg</>. It's not yet clear
whether <application>ecpg</> itself should be changed.
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [e6ecc93a1] 2016-02-03 01:39:48 -0500
Branch: REL9_5_STABLE [1c291624b] 2016-02-03 01:39:08 -0500
Branch: REL9_4_STABLE [aa223a037] 2016-02-03 01:39:08 -0500
Branch: REL9_3_STABLE [1f2b195eb] 2016-02-03 01:39:08 -0500
-->
<listitem>
<para>
Fix <function>hstore_to_json_loose()</>'s test for whether
an <type>hstore</> value can be converted to a JSON number (Tom Lane)
</para>
<para>
Previously this function could be fooled by non-alphanumeric trailing
characters, leading to emitting syntactically-invalid JSON.
</para>
</listitem>
<!--
Author: Robert Haas <rhaas@postgresql.org>
Branch: master [9418d79a7] 2016-02-04 21:17:53 -0500
Branch: REL9_5_STABLE [453d40817] 2016-02-04 21:17:46 -0500
Branch: REL9_4_STABLE [1f3294c22] 2016-02-04 21:15:57 -0500
Branch: master [37c84570b] 2016-02-04 22:27:13 -0500
Branch: REL9_5_STABLE [d160e2a34] 2016-02-04 22:27:38 -0500
Branch: REL9_4_STABLE [2099b911d] 2016-02-04 22:27:47 -0500
-->
<listitem>
<para>
In <filename>contrib/postgres_fdw</>, fix bugs triggered by use
of <literal>tableoid</> in data-modifying commands (Etsuro Fujita,
Robert Haas)
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [a396144ac] 2016-01-22 11:53:06 -0500
Branch: REL9_5_STABLE [47acf3add] 2016-01-22 11:53:06 -0500
-->
<listitem>
<para>
Fix ill-advised restriction of <literal>NAMEDATALEN</> to be less
than 256 (Robert Haas, Tom Lane)
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [3343ea9e8] 2016-01-05 15:47:05 -0500
Branch: REL9_5_STABLE [8805af088] 2016-01-05 15:47:05 -0500
Branch: REL9_4_STABLE [8c558b2e9] 2016-01-05 15:47:05 -0500
Branch: REL9_3_STABLE [6d899f098] 2016-01-05 15:47:05 -0500
-->
<listitem>
<para>
Improve reproducibility of build output by ensuring filenames are given
to the linker in a fixed order (Christoph Berg)
</para>
<para>
This avoids possible bitwise differences in the produced executable
files from one build to the next.
</para>
</listitem>
<!--
Author: Bruce Momjian <bruce@momjian.us>
Branch: master [216d56843] 2016-01-19 23:30:29 -0500
Branch: REL9_5_STABLE [34bda20ae] 2016-01-19 23:30:29 -0500
Branch: REL9_4_STABLE [8b3d52801] 2016-01-19 23:30:29 -0500
Branch: REL9_3_STABLE [7a47262ce] 2016-01-19 23:30:28 -0500
Branch: REL9_2_STABLE [49d65e857] 2016-01-19 23:30:28 -0500
Branch: REL9_1_STABLE [b1bc38144] 2016-01-19 23:30:28 -0500
-->
<listitem>
<para>
Ensure that <filename>dynloader.h</> is included in the installed
header files in MSVC builds (Bruce Momjian, Michael Paquier)
</para>
</listitem>
<!--
Author: Tom Lane <tgl@sss.pgh.pa.us>
Branch: master [a73311e52] 2016-02-05 10:59:09 -0500
Branch: REL9_5_STABLE [37e694632] 2016-02-05 10:59:21 -0500
Branch: REL9_4_STABLE [31b792f61] 2016-02-05 10:59:26 -0500
Branch: REL9_3_STABLE [9a3475b84] 2016-02-05 10:59:31 -0500
Branch: REL9_2_STABLE [32f17a2e7] 2016-02-05 10:59:35 -0500
Branch: REL9_1_STABLE [6887d72d0] 2016-02-05 10:59:39 -0500
-->
<listitem>
<para>
Update time zone data files to <application>tzdata</> release 2016a for
DST law changes in Cayman Islands, Metlakatla, and Trans-Baikal
Territory (Zabaykalsky Krai), plus historical corrections for Pakistan.
</para>
</listitem>
</itemizedlist>
</sect2>
</sect1>
<sect1 id="release-9-5">
<title>Release 9.5</title>
<note>
<title>Release Date</title>
<simpara>2016-01-07</simpara>
</note>
<sect2>
<title>Overview</title>
<para>
Major enhancements in <productname>PostgreSQL</> 9.5 include:
</para>
<!-- This list duplicates items below, but without authors or details-->
<itemizedlist>
<listitem>
<para>
Allow <link linkend="sql-on-conflict"><command>INSERT</></>s
that would generate constraint conflicts to be turned into
<command>UPDATE</>s or ignored
</para>
</listitem>
<listitem>
<para>
Add <literal>GROUP BY</> analysis features <link
linkend="queries-grouping-sets"><literal>GROUPING SETS</></>,
<link linkend="queries-grouping-sets"><literal>CUBE</></> and
<link linkend="queries-grouping-sets"><literal>ROLLUP</></>
</para>
</listitem>
<listitem>
<para>
Add <link linkend="ddl-rowsecurity">row-level security control</>
</para>
</listitem>
<listitem>
<para>
Create mechanisms for tracking
the <link linkend="replication-origins">progress of replication</>,
including methods for identifying the origin of individual changes
during logical replication
</para>
</listitem>
<listitem>
<para>
Add <link linkend="BRIN">Block Range Indexes</> (<acronym>BRIN</>)
</para>
</listitem>
<listitem>
<para>
Substantial performance improvements for sorting
</para>
</listitem>
<listitem>
<para>
Substantial performance improvements for multi-CPU machines
</para>
</listitem>
</itemizedlist>
<para>
The above items are explained in more detail in the sections below.
</para>
</sect2>
<sect2>
<title>Migration to Version 9.5</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.5 contains a number of changes that may affect compatibility
with previous releases. Observe the following incompatibilities:
</para>
<itemizedlist>
<listitem>
<!--
2015-03-11 [c6b3c93] Tom Lane: Make operator precedence follow the SQL standar..
-->
<para>
Adjust <link linkend="sql-precedence">operator precedence</>
to match the <acronym>SQL</> standard (Tom Lane)
</para>
<para>
The precedence of <literal>&lt;=</literal>, <literal>&gt;=</literal>
and <literal>&lt;&gt;</literal> has been reduced to match that of
<literal>&lt;</literal>, <literal>&gt;</literal>
and <literal>=</literal>. The precedence of <literal>IS</> tests
(e.g., <replaceable>x</> <literal>IS NULL</>) has been reduced to be
just below these six comparison operators.
Also, multi-keyword operators beginning with <literal>NOT</> now have
the precedence of their base operator (for example, <literal>NOT
BETWEEN</> now has the same precedence as <literal>BETWEEN</>) whereas
before they had inconsistent precedence, behaving like <literal>NOT</>
with respect to their left operand but like their base operator with
respect to their right operand. The new configuration
parameter <xref linkend="guc-operator-precedence-warning"> can be
enabled to warn about queries in which these precedence changes result
in different parsing choices.
</para>
</listitem>
<listitem>
<!--
2015-03-31 [0badb06] Bruce ..: pg_ctl: change default shutdown mode from 'sma..
-->
<para>
Change <xref linkend="app-pg-ctl">'s default shutdown mode from
<literal>smart</> to <literal>fast</> (Bruce Momjian)
</para>
<para>
This means the default behavior will be to forcibly cancel existing
database sessions, not simply wait for them to exit.
</para>
</listitem>
<listitem>
<!--
2015-03-04 [1345cc6] Tom Lane: Use standard casting mechanism to convert type..
-->
<para>
Use assignment cast behavior for data type conversions
in <application>PL/pgSQL</> assignments, rather than converting to and
from text (Tom Lane)
</para>
<para>
This change causes conversions of Booleans to strings to
produce <literal>true</> or <literal>false</>, not <literal>t</>
or <literal>f</>. Other type conversions may succeed in more cases
than before; for example, assigning a numeric value <literal>3.9</> to
an integer variable will now assign 4 rather than failing. If no
assignment-grade cast is defined for the particular source and
destination types, <application>PL/pgSQL</> will fall back to its old
I/O conversion behavior.
</para>
</listitem>
<listitem>
<!--
2014-08-28 [11a020e] Andres..: Allow escaping of option values for options pas..
-->
<para>
Allow characters in <link linkend="libpq-connect-options">server
command-line options</> to be escaped with a backslash (Andres Freund)
</para>
<para>
Formerly, spaces in the options string always separated options, so
there was no way to include a space in an option value. Including
a backslash in an option value now requires writing <literal>\\</>.
</para>
</listitem>
<listitem>
<!--
2015-05-08 [9a08841] Stephe..: Change default for include_realm to 1
-->
<para>
Change the default value of the GSSAPI <link
linkend="gssapi-auth"><varname>include_realm</></> parameter to 1, so
that by default the realm is not removed from a <acronym>GSS</>
or <acronym>SSPI</> principal name (Stephen Frost)
</para>
</listitem>
<listitem>
<!--
2015-02-23 [88e9823] Heikki..: Replace checkpoint_segments with min_wal_size a..
2015-03-15 [a0f5954] Andres..: Increase max_wal_size's default from 128MB to 1..
2015-06-29 [d661532] Heikki..: Also trigger restartpoints based on max_wal_siz..
-->
<para>
Replace configuration parameter <varname>checkpoint_segments</>
with <xref linkend="guc-min-wal-size">
and <xref linkend="guc-max-wal-size"> (Heikki Linnakangas)
</para>
<para>
If you previously adjusted <varname>checkpoint_segments</varname>, the
following formula will give you an approximately equivalent setting:
<programlisting>
max_wal_size = (3 * checkpoint_segments) * 16MB
</programlisting>
Note that the default setting for <varname>max_wal_size</varname> is
much higher than the default <varname>checkpoint_segments</varname> used
to be, so adjusting it might no longer be necessary.
</para>
</listitem>
<listitem>
<!--
2014-06-18 [df8b7bc] Tom Lane: Improve our mechanism for controlling the Linux..
-->
<para>
Control the Linux <acronym>OOM</> killer via new environment
variables <link
linkend="linux-memory-overcommit"><envar>PG_OOM_ADJUST_FILE</></>
and <link
linkend="linux-memory-overcommit"><envar>PG_OOM_ADJUST_VALUE</></>,
instead of compile-time options <literal>LINUX_OOM_SCORE_ADJ</> and
<literal>LINUX_OOM_ADJ</>
(Gurjeet Singh)
</para>
</listitem>
<listitem>
<!--
2015-10-20 [b06f1f2] Robert..: Put back ssl_renegotiation_limit parameter, bu..
2015-07-28 [6087d95] Andres..: Remove ssl renegotiation support.
-->
<para>
Decommission server configuration
parameter <varname>ssl_renegotiation_limit</>, which was deprecated
in earlier releases (Andres Freund)
</para>
<para>
While SSL renegotiation is a good idea in theory, it has caused enough
bugs to be considered a net negative in practice, and it is due to be
removed from future versions of the relevant standards. We have
therefore removed support for it from <productname>PostgreSQL</>.
The <varname>ssl_renegotiation_limit</> parameter still exists, but
cannot be set to anything but zero (disabled). It's not documented
anymore, either.
</para>
</listitem>
<listitem>
<!--
2014-11-05 [525a489] Tom Lane: Remove the last vestige of server-side autocomm..
-->
<para>
Remove server configuration parameter <varname>autocommit</>, which
was already deprecated and non-operational (Tom Lane)
</para>
</listitem>
<listitem>
<!--
2015-03-06 [bb8582a] Peter ..: Remove rolcatupdate
-->
<para>
Remove the <link linkend="catalog-pg-authid"><structname>pg_authid</></>
catalog's <structfield>rolcatupdate</> field, as it had no usefulness
(Adam Brightwell)
</para>
</listitem>
<listitem>
<!--
2015-12-13 [28c3667] Magnus..: Consistently set all fields in pg_stat_replica..
-->
<para>
The <link
linkend="monitoring-stats-views-table"><structname>pg_stat_replication</></link>
system view's <structfield>sent</> field is now NULL, not zero, when
it has no valid value (Magnus Hagander)
</para>
</listitem>
<listitem>
<!--
2015-07-17 [89ddd29] Andrew..: Support JSON negative array subscripts everywh..
-->
<para>
Allow <type>json</> and <type>jsonb</> array extraction operators to
accept negative subscripts, which count from the end of JSON arrays
(Peter Geoghegan, Andrew Dunstan)
</para>
<para>
Previously, these operators returned <literal>NULL</> for negative
subscripts.
</para>
</listitem>
</itemizedlist>
</sect2>
<sect2>
<title>Changes</title>
<para>
Below you will find a detailed account of the changes between
<productname>PostgreSQL</productname> 9.5 and the previous major
release.
</para>
<sect3>
<title>Server</title>
<sect4>
<title>Indexes</title>
<itemizedlist>
<listitem>
<!--
2014-11-07 [7516f52] Alvaro..: BRIN: Block Range Indexes
2015-05-05 [3b6db1f] Alvaro..: Add geometry/range functions to support BRIN in..
2015-05-15 [b0b7be6] Alvaro..: Add BRIN infrastructure for "inclusion" opclasses
-->
<para>
Add <link linkend="BRIN">Block Range Indexes</> (<acronym>BRIN</>)
(&Aacute;lvaro Herrera)
</para>
<para>
<acronym>BRIN</> indexes store only summary data (such as minimum
and maximum values) for ranges of heap blocks. They are therefore
very compact and cheap to update; but if the data is naturally
clustered, they can still provide substantial speedup of searches.
</para>
</listitem>
<listitem>
<!--
2015-05-15 [35fcb1b] Heikki..: Allow GiST distance function to return merely ..
-->
<para>
Allow queries to perform accurate distance filtering of
bounding-box-indexed objects (polygons, circles) using <link
linkend="GiST">GiST</> indexes (Alexander Korotkov, Heikki
Linnakangas)
</para>
<para>
Previously, to exploit such an index a subquery had to be used to
select a large number of rows ordered by bounding-box distance, and
the result then had to be filtered further with a more accurate
distance calculation.
</para>
</listitem>
<listitem>
<!--
2015-03-26 [d04c8ed] Heikki..: Add support for index-only scans in GiST.
2015-03-27 [e09b483] Heikki..: Add index-only scan support to btree_gist.
2015-03-28 [3a20b0e] Heikki..: Add index-only scan support to inet GiST opclass.
2015-03-30 [0633a60] Heikki..: Add index-only scan support to range type GiST ..
-->
<para>
Allow <link linkend="GiST">GiST</> indexes to perform index-only
scans (Anastasia Lubennikova, Heikki Linnakangas, Andreas Karlsson)
</para>
</listitem>
<listitem>
<!--
Add GUC and storage parameter to set the maximum size of GIN pending list.
-->
<para>
Add configuration parameter <xref linkend="guc-gin-pending-list-limit">
to control the size of <acronym>GIN</> pending lists (Fujii Masao)
</para>
<para>
This value can also be set on a per-index basis as an index storage
parameter. Previously the pending-list size was controlled
by <xref linkend="guc-work-mem">, which was awkward because
appropriate values for <varname>work_mem</> are often much too large
for this purpose.
</para>
</listitem>
<listitem>
<!--
2014-09-10 [84aa8ba] Bruce ..: Issue a warning during the creation of hash in..
-->
<para>
Issue a warning during the creation of <link
linkend="indexes-types">hash</> indexes because they are not
crash-safe (Bruce Momjian)
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4>
<title>General Performance</title>
<itemizedlist>
<listitem>
<!--
2015-01-19 [4ea51cd] Robert..: Use abbreviated keys for faster sorting of text..
2014-09-19 [e246b3d] Robert..: Add a fast pre-check for equality of equal-leng..
2015-05-13 [78efd5c] Robert..: Extend abbreviated key infrastructure to datum ..
-->
<para>
Improve the speed of sorting of <type>varchar</>, <type>text</>,
and <type>numeric</> fields via <quote>abbreviated</> keys
(Peter Geoghegan, Andrew Gierth, Robert Haas)
</para>
</listitem>
<listitem>
<!--
2014-11-07 [5ea86e6] Robert..: Use the sortsupport infrastructure in more cas..
-->
<para>
Extend the infrastructure that allows sorting to be performed by
inlined, non-<acronym>SQL</acronym>-callable comparison functions to
cover <command>CREATE INDEX</>, <command>REINDEX</>, and
<command>CLUSTER</> (Peter Geoghegan)
</para>
</listitem>
<listitem>
<!--
2014-09-10 [45f6240] Heikki..: Pack tuples in a hash join batch densely, to sa..
2014-09-12 [8cce08f] Robert..: Change NTUP_PER_BUCKET to 1 to improve hash joi..
2014-10-13 [30d7ae3] Kevin ..: Increase number of hash join buckets for undere..
-->
<para>
Improve performance of hash joins (Tomas Vondra, Robert Haas)
</para>
</listitem>
<listitem>
<!--
2014-09-25 [5d7962c] Robert..: Change locking regimen around buffer replacement.
2014-12-25 [d72731a] Andres..: Lockless StrategyGetBuffer clock sweep hot path.
-->
<para>
Improve concurrency of shared buffer replacement
(Robert Haas, Amit Kapila, Andres Freund)
</para>
</listitem>
<listitem>
<!--
2015-03-25 [2ed5b87f] Kevin ..: Reduce pinning and buffer content locking for b..
-->
<para>
Reduce the number of page locks and pins during index scans (Kevin Grittner)
</para>
<para>
The primary benefit of this is to allow index vacuums to be blocked
less often.
</para>
</listitem>
<listitem>
<!--
2014-08-30 [4b4b680] Andres..: Make backend local tracking of buffer pins memo..
2015-01-19 [2d115e4] Andres..: Fix various shortcomings of the new PrivateRefC..
-->
<para>
Make per-backend tracking of buffer pins more memory-efficient
(Andres Freund)
</para>
</listitem>
<listitem>
<!--
2014-12-25 [ab5194e] Andres..: Improve LWLock scalability.
-->
<para>
Improve lock scalability (Andres Freund)
</para>
<para>
This particularly addresses scalability problems when running on
systems with multiple <acronym>CPU</> sockets.
</para>
</listitem>
<listitem>
<!--
2014-07-15 [f15821e] Tom Lane: Allow join removal in some cases involving a le..
-->
<para>
Allow the optimizer to remove unnecessary references to left-joined
subqueries (David Rowley)
</para>
</listitem>
<listitem>
<!--
2014-06-27 [d222585] Tom Lane: Allow pushdown of WHERE quals into subqueries w..
-->
<para>
Allow pushdown of query restrictions into subqueries with <link
linkend="tutorial-window">window functions</>, where appropriate
(David Rowley)
</para>
</listitem>
<listitem>
<!--
2015-04-27 [dcbf594] Stephe..: Improve qual pushdown for RLS and SB views
-->
<para>
Allow a non-leakproof function to be pushed down into a security
barrier view if the function does not receive any view output
columns (Dean Rasheed)
</para>
</listitem>
<listitem>
<!--
2015-09-24 [45d256c] Tom Lane: Allow planner to use expression-index stats fo..
-->
<para>
Teach the planner to use statistics obtained from an expression
index on a boolean-returning function, when a matching function call
appears in <literal>WHERE</> (Tom Lane)
</para>
</listitem>
<listitem>
<!--
2015-09-23 [cfb2024] Tom Lane: Make ANALYZE compute basic statistics even for..
-->
<para>
Make <command>ANALYZE</> compute basic statistics (null fraction and
average column width) even for columns whose data type lacks an
equality function (Oleksandr Shulgin)
</para>
</listitem>
<listitem>
<!--
2014-11-04 [5028f22] Heikki..: Switch to CRC-32C in WAL and other places.
2015-02-10 [025c024] Heikki..: Speed up CRC calculation using slicing-by-8 alg..
2015-04-14 [3dc2d62] Heikki..: Use Intel SSE 4.2 CRC instructions where availa..
-->
<para>
Speed up <acronym>CRC</> (cyclic redundancy check) computations
and switch to CRC-32C (Abhijit Menon-Sen, Heikki Linnakangas)
</para>
</listitem>
<listitem>
<!--
2015-01-16 [f5ae3ba] Andres..: Make tbm_add_tuples more efficient by caching t..
2015-01-16 [779fdcd] Tom Lane: Improve new caching logic in tbm_add_tuples().
-->
<para>
Improve bitmap index scan performance (Teodor Sigaev, Tom Lane)
</para>
</listitem>
<listitem>
<!--
2014-07-01 [9f03ca9] Robert..: Avoid copying index tuples when building an ind..
-->
<para>
Speed up <command>CREATE INDEX</> by avoiding unnecessary memory
copies (Robert Haas)
</para>
</listitem>
<listitem>
<!--
2014-10-02 [3acc10c9] Robert..: Increase the number of buffer mapping partitio..
-->
<para>
Increase the number of buffer mapping partitions (Amit Kapila,
Andres Freund, Robert Haas)
</para>
<para>
This improves performance for highly concurrent workloads.
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4>
<title>Monitoring</title>
<itemizedlist>
<listitem>
<!--
2015-04-03 [4ff695b1] Alvaro..: Add log_min_autovacuum_duration per-table option
-->
<para>
Add per-table autovacuum logging control via new
<varname>log_autovacuum_min_duration</> storage parameter
(Michael Paquier)
</para>
</listitem>
<listitem>
<!--
2014-06-29 [51adcaa] Andres..: Add cluster_name GUC which is included in proce..
-->
<para>
Add new configuration parameter <xref linkend="guc-cluster-name">
(Thomas Munro)
</para>
<para>
This string, typically set in <link
linkend="config-setting-configuration-file"><filename>postgresql.conf</></>,
allows clients to identify the cluster. This name also appears
in the process title of all server processes, allowing for easier
identification of processes belonging to the same cluster.
</para>
</listitem>
<listitem>
<!--
2014-09-13 [fe550b2] Tom Lane: Invent PGC_SU_BACKEND and mark log_connections..
-->
<para>
Prevent non-superusers from changing <xref
linkend="guc-log-disconnections"> on connection startup (Fujii Masao)
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4>
<title><acronym>SSL</></title>
<itemizedlist>
<listitem>
<!--
2014-09-12 [acd08d7] Heikki..: Support Subject Alternative Names in SSL server..
-->
<para>
Check <link linkend="libpq-ssl"><quote>Subject Alternative
Names</></> in <acronym>SSL</> server certificates, if present
(Alexey Klyukin)
</para>
<para>
When they are present, this replaces checks against the certificate's
<quote>Common Name</>.
</para>
</listitem>
<listitem>
<!--
2015-04-12 [9029f4b] Magnus..: Add system view pg_stat_ssl
-->
<para>
Add system view <link
linkend="pg-stat-ssl-view"><structname>pg_stat_ssl</></> to report
<acronym>SSL</> connection information (Magnus Hagander)
</para>
</listitem>
<listitem>
<!--
2015-02-03 [91fa7b4] Heikki..: Add API functions to libpq to interrogate SSL ..
-->
<para>
Add <application>libpq</> functions to return <acronym>SSL</>
information in an implementation-independent way (Heikki Linnakangas)
</para>
<para>
While <link linkend="libpq-pqgetssl"><function>PQgetssl()</></> can
still be used to call <productname>OpenSSL</> functions, it is now
considered deprecated because future versions
of <application>libpq</> might support other <acronym>SSL</>
implementations. When possible, use the new
functions <link
linkend="libpq-pqsslattribute"><function>PQsslAttribute()</></>, <link
linkend="libpq-pqsslattributenames"><function>PQsslAttributeNames()</></>,
and <link linkend="libpq-pqsslinuse"><function>PQsslInUse()</></>
to obtain <acronym>SSL</> information in
an <acronym>SSL</>-implementation-independent way.
</para>
</listitem>
<listitem>
<!--
2015-04-09 [8a0d34e4] Peter ..: libpq: Don't overwrite existing OpenSSL thread..
-->
<para>
Make <application>libpq</> honor any <productname>OpenSSL</>
thread callbacks (Jan Urbanski)
</para>
<para>
Previously they were overwritten.
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4>
<title>Server Settings</title>
<itemizedlist>
<listitem>
<!--
2015-02-23 [88e9823] Heikki..: Replace checkpoint_segments with min_wal_size a..
2015-03-15 [a0f5954] Andres..: Increase max_wal_size's default from 128MB to 1..
2015-06-29 [d661532] Heikki..: Also trigger restartpoints based on max_wal_siz..
-->
<para>
Replace configuration parameter <varname>checkpoint_segments</>
with <xref linkend="guc-min-wal-size">
and <xref linkend="guc-max-wal-size"> (Heikki Linnakangas)
</para>
<para>
This change allows the allocation of a large number of <acronym>WAL</>
files without keeping them after they are no longer needed.
Therefore the default for <varname>max_wal_size</> has been set
to <literal>1GB</>, much larger than the old default
for <varname>checkpoint_segments</>.
Also note that standby servers perform restartpoints to try to limit
their WAL space consumption to <varname>max_wal_size</>; previously
they did not pay any attention to <varname>checkpoint_segments</>.
</para>
</listitem>
<listitem>
<!--
2014-06-18 [df8b7bc] Tom Lane: Improve our mechanism for controlling the Linux..
-->
<para>
Control the Linux <acronym>OOM</> killer via new environment
variables <link
linkend="linux-memory-overcommit"><envar>PG_OOM_ADJUST_FILE</></>
and <link
linkend="linux-memory-overcommit"><envar>PG_OOM_ADJUST_VALUE</></>
(Gurjeet Singh)
</para>
<para>
The previous <acronym>OOM</> control infrastructure involved
compile-time options <literal>LINUX_OOM_SCORE_ADJ</> and
<literal>LINUX_OOM_ADJ</>, which are no longer supported.
The new behavior is available in all builds.
</para>
</listitem>
<listitem>
<!--
2014-12-03 [73c986a] Alvaro..: Keep track of transaction commit timestamps
-->
<para>
Allow recording of transaction
commit time stamps when configuration parameter <xref
linkend="guc-track-commit-timestamp">
is enabled (&Aacute;lvaro Herrera, Petr Jel&iacute;nek)
</para>
<para>
Time stamp information can be accessed using functions <link
linkend="functions-commit-timestamp"><function>pg_xact_commit_timestamp()</></>
and <function>pg_last_committed_xact()</>.
</para>
</listitem>
<listitem>
<!--
2014-12-22 [584e35d] Peter ..: Change local_preload_libraries to PGC_USERSET
-->
<para>
Allow <xref linkend="guc-local-preload-libraries"> to be set
by <command>ALTER ROLE SET</> (Peter Eisentraut, Kyotaro Horiguchi)
</para>
</listitem>
<listitem>
<!--
2015-04-03 [a75fb9b] Alvaro..: Have autovacuum workers listen to SIGHUP, too
-->
<para>
Allow <link linkend="autovacuum">autovacuum workers</>
to respond to configuration parameter changes during a run
(Michael Paquier)
</para>
</listitem>
<listitem>
<!--
2014-06-20 [3bdcf6a] Andres..: Don't allow to disable backend assertions via t..
-->
<para>
Make configuration parameter <xref linkend="guc-debug-assertions">
read-only (Andres Freund)
</para>
<para>
This means that assertions can no longer be turned
off if they were enabled at compile time, allowing for more
efficient code optimization. This change also removes the <link
linkend="app-postgres-options">postgres</> <option>-A</> option.
</para>
</listitem>
<listitem>
<!--
2014-10-18 [7feaccc] Peter ..: Allow setting effective_io_concurrency even on..
-->
<para>
Allow setting <xref linkend="guc-effective-io-concurrency"> on
systems where it has no effect (Peter Eisentraut)
</para>
</listitem>
<listitem>
<!--
2015-05-08 [a97e0c3] Stephe..: Add pg_file_settings view and function
2015-06-28 [62d16c7] Tom Lane: Improve design and implementation of pg_file_se..
-->
<para>
Add system view <link
linkend="view-pg-file-settings"><structname>pg_file_settings</></>
to show the contents of the server's configuration files
(Sawada Masahiko)
</para>
</listitem>
<listitem>
<!--
2015-05-14 [a486e35] Peter ..: Add pg_settings.pending_restart column
-->
<para>
Add <structname>pending_restart</> to the system view <link
linkend="view-pg-settings"><structname>pg_settings</></> to
indicate a change has been made but will not take effect until a
database restart (Peter Eisentraut)
</para>
</listitem>
<listitem>
<!--
2014-09-02 [bd3b7a9] Fujii ..: Support ALTER SYSTEM RESET command.
-->
<para>
Allow <link linkend="SQL-ALTERSYSTEM"><command>ALTER SYSTEM</></>
values to be reset with <command>ALTER SYSTEM RESET</> (Vik
Fearing)
</para>
<para>
This command removes the specified setting
from <filename>postgresql.auto.conf</>.
</para>
</listitem>
</itemizedlist>
</sect4>
</sect3>
<sect3>
<title>Replication and Recovery</title>
<itemizedlist>
<listitem>
<!--
2015-04-29 [5aa2350] Andres..: Introduce replication progress tracking infrast..
-->
<para>
Create mechanisms for tracking
the <link linkend="replication-origins">progress of replication</>,
including methods for identifying the origin of individual changes
during logical replication (Andres Freund)
</para>
<para>
This is helpful when implementing replication solutions.
</para>
</listitem>
<listitem>
<!--
2015-09-26 [bd7c348] Andres..: Rework the way multixact truncations work.
2015-09-26 [6e8af37] Andres..: Remove legacy multixact truncation support.
-->
<para>
Rework truncation of the multixact commit log to be properly
WAL-logged (Andres Freund)
</para>
<para>
This makes things substantially simpler and more robust.
</para>
</listitem>
<listitem>
<!--
2014-11-25 [aedccb1] Simon ..: action_at_recovery_target recovery config option
2014-12-07 [b8e33a8] Simon ..: Tweaks for recovery_target_action
2015-03-15 [51c11a7] Andres..: Remove pause_at_recovery_target recovery.conf s..
-->
<para>
Add <link linkend="recovery-config"><filename>recovery.conf</></>
parameter <link
linkend="recovery-target-action"><varname>recovery_target_action</></>
to control post-recovery activity (Petr Jel&iacute;nek)
</para>
<para>
This replaces the old parameter <varname>pause_at_recovery_target</>.
</para>
</listitem>
<listitem>
<!--
2015-05-15 [ffd3774] Heikki..: Add archive_mode='always' option.
-->
<para>
Add new <xref linkend="guc-archive-mode"> value
<literal>always</> to allow standbys to always archive received
<acronym>WAL</> files (Fujii Masao)
</para>
</listitem>
<listitem>
<!--
2015-02-23 [5d2b45e] Fujii ..: Add GUC to control the time to wait before retr..
-->
<para>
Add configuration
parameter <xref linkend="guc-wal-retrieve-retry-interval"> to
control <acronym>WAL</> read retry after failure
(Alexey Vasiliev, Michael Paquier)
</para>
<para>
This is particularly helpful for warm standbys.
</para>
</listitem>
<listitem>
<!--
2015-03-11 [57aa5b2] Fujii ..: Add GUC to enable compression of full page imag..
-->
<para>
Allow compression of full-page images stored in <acronym>WAL</>
(Rahila Syed, Michael Paquier)
</para>
<para>
This feature reduces WAL volume, at the cost of more CPU time spent
on WAL logging and WAL replay. It is controlled by a new
configuration parameter <xref linkend="guc-wal-compression">, which
currently is off by default.
</para>
</listitem>
<listitem>
<!--
2015-05-08 [de76884] Heikki..: At promotion, archive last segment from old tim..
-->
<para>
Archive <acronym>WAL</> files with suffix <literal>.partial</>
during standby promotion (Heikki Linnakangas)
</para>
</listitem>
<listitem>
<!--
2014-09-13 [4ad2a54] Fujii ..: Add GUC to enable logging of replication comman..
-->
<para>
Add configuration parameter <xref
linkend="guc-log-replication-commands">
to log replication commands (Fujii Masao)
</para>
<para>
By default, replication commands, e.g. <link
linkend="protocol-replication"><literal>IDENTIFY_SYSTEM</></>,
are not logged, even when <xref linkend="guc-log-statement"> is set
to <literal>all</>.
</para>
</listitem>
<listitem>
<!--
2015-04-21 [d811c03] Andres..: Add 'active_in' column to pg_replication_slots.
-->
<para>
Report the processes holding replication slots in <link
linkend="view-pg-replication-slots"><structname>pg_replication_slots</></>
(Craig Ringer)
</para>
<para>
The new output column is <structname>active_pid</>.
</para>
</listitem>
<listitem>
<!--
2014-11-25 [b3fc672] Heikki..: Allow using connection URI in primary_conninfo.
-->
<para>
Allow <filename>recovery.conf</>'s <link
linkend="primary-conninfo"><varname>primary_conninfo</></> setting to
use connection <acronym>URI</>s, e.g. <literal>postgres://</>
(Alexander Shulgin)
</para>
</listitem>
</itemizedlist>
</sect3>
<sect3>
<title>Queries</title>
<itemizedlist>
<listitem>
<!--
2015-05-08 [168d580] Andres..: Add support for INSERT ... ON CONFLICT DO NOTHI..
2015-05-08 [2c8f483] Andres..: Represent columns requiring insert and update p..
-->
<para>
Allow <link linkend="sql-on-conflict"><command>INSERT</></>s
that would generate constraint conflicts to be turned into
<command>UPDATE</>s or ignored (Peter Geoghegan, Heikki
Linnakangas, Andres Freund)
</para>
<para>
The syntax is <command>INSERT ... ON CONFLICT DO NOTHING/UPDATE</>.
This is the Postgres implementation of the popular
<command>UPSERT</> command.
</para>
</listitem>
<listitem>
<!--
2015-05-16 [f3d3118] Andres..: Support GROUPING SETS, CUBE and ROLLUP.
-->
<para>
Add <literal>GROUP BY</> analysis features <link
linkend="queries-grouping-sets"><literal>GROUPING SETS</></>,
<link linkend="queries-grouping-sets"><literal>CUBE</></> and
<link linkend="queries-grouping-sets"><literal>ROLLUP</></>
(Andrew Gierth, Atri Sharma)
</para>
</listitem>
<listitem>
<!--
2014-06-18 [8f889b1] Tom Lane: Implement UPDATE tab SET (col1,col2,...) = (SEL..
-->
<para>
Allow setting multiple target columns in
an <link linkend="SQL-UPDATE"><command>UPDATE</></> from the result of
a single sub-SELECT (Tom Lane)
</para>
<para>
This is accomplished using the syntax <command>UPDATE tab SET
(col1, col2, ...) = (SELECT ...)</>.
</para>
</listitem>
<listitem>
<!--
2014-10-07 [df630b0] Alvaro..: Implement SKIP LOCKED for row-level locks
-->
<para>
Add <link linkend="SQL-SELECT"><command>SELECT</></> option
<literal>SKIP LOCKED</> to skip locked rows (Thomas Munro)
</para>
<para>
This does not throw an error for locked rows like
<literal>NOWAIT</> does.
</para>
</listitem>
<listitem>
<!--
2015-05-15 [f6d208d] Simon ..: TABLESAMPLE, SQL Standard and extensible
-->
<para>
Add <link linkend="SQL-SELECT"><command>SELECT</></> option
<literal>TABLESAMPLE</> to return a subset of a table (Petr
Jel&iacute;nek)
</para>
<para>
This feature supports the SQL-standard table sampling methods.
In addition, there are provisions
for <link linkend="tablesample-method">user-defined
table sampling methods</>.
</para>
</listitem>
<listitem>
<!--
2015-03-11 [e529cd4] Robert..: Suggest to the user the column they may have m..
-->
<para>
Suggest possible matches for mistyped column names (Peter
Geoghegan, Robert Haas)
</para>
</listitem>
</itemizedlist>
</sect3>
<sect3>
<title>Utility Commands</title>
<itemizedlist>
<listitem>
<!--
2015-01-16 [20af53d] Tom Lane: Show sort ordering options in EXPLAIN output.
-->
<para>
Add more details about sort ordering in <link
linkend="SQL-EXPLAIN"><command>EXPLAIN</></> output (Marius Timmer,
Lukas Kreft, Arne Scheffer)
</para>
<para>
Details include <literal>COLLATE</>, <literal>DESC</>,
<literal>USING</>, and <literal>NULLS FIRST</><literal>/LAST</>.
</para>
</listitem>
<listitem>
<!--
2014-12-18 [35192f0] Alvaro..: Have VACUUM log number of skipped pages due to ..
-->
<para>
Make <link linkend="SQL-VACUUM"><command>VACUUM</></> log the
number of pages skipped due to pins (Jim Nasby)
</para>
</listitem>
<listitem>
<!--
2015-02-20 [d42358e] Alvaro..: Have TRUNCATE update pgstat tuple counters
-->
<para>
Make <link linkend="SQL-TRUNCATE"><command>TRUNCATE</></> properly
update the <literal>pg_stat</>* tuple counters (Alexander Shulgin)
</para>
</listitem>
</itemizedlist>
<sect4>
<title><xref linkend="SQL-REINDEX"></title>
<itemizedlist>
<listitem>
<!--
2014-12-09 [fe263d1] Simon ..: REINDEX SCHEMA
-->
<para>
Allow <command>REINDEX</> to reindex an entire schema using the
<literal>SCHEMA</> option (Sawada Masahiko)
</para>
</listitem>
<listitem>
<!--
2015-05-15 [ecd222e] Fujii ..: Support VERBOSE option in REINDEX command.
-->
<para>
Add <literal>VERBOSE</> option to <command>REINDEX</> (Sawada
Masahiko)
</para>
</listitem>
<listitem>
<!--
2014-12-09 [ae4e688] Simon ..: Silence REINDEX
-->
<para>
Prevent <command>REINDEX DATABASE</> and <command>SCHEMA</>
from outputting object names, unless <literal>VERBOSE</> is used
(Simon Riggs)
</para>
</listitem>
<listitem>
<!--
2015-04-09 [17d436d] Fujii ..: Remove obsolete FORCE option from REINDEX.
-->
<para>
Remove obsolete <literal>FORCE</> option from <command>REINDEX</>
(Fujii Masao)
</para>
</listitem>
</itemizedlist>
</sect4>
</sect3>
<sect3>
<title>Object Manipulation</title>
<itemizedlist>
<listitem>
<!--
2014-09-19 [491c029] Stephe..: Row-Level Security Policies (RLS)
-->
<para>
Add <link linkend="ddl-rowsecurity">row-level security control</>
(Craig Ringer, KaiGai Kohei, Adam Brightwell, Dean Rasheed,
Stephen Frost)
</para>
<para>
This feature allows row-by-row control over which users can add,
modify, or even see rows in a table. This is controlled by new
commands <link linkend="SQL-CREATEPOLICY"><command>CREATE</></>/<link
linkend="SQL-ALTERPOLICY"><command>ALTER</></>/<link
linkend="SQL-DROPPOLICY"><command>DROP POLICY</></> and <link
linkend="SQL-ALTERTABLE"><command>ALTER TABLE ... ENABLE/DISABLE
ROW SECURITY</></>.
</para>
</listitem>
<listitem>
<!--
2014-08-22 [f41872d] Alvaro..: Implement ALTER TABLE .. SET LOGGED / UNLOGGED
-->
<para>
Allow changing of the <acronym>WAL</acronym>
logging status of a table after creation with <link
linkend="SQL-ALTERTABLE"><command>ALTER TABLE ... SET LOGGED /
UNLOGGED</></> (Fabr&iacute;zio de Royes Mello)
</para>
</listitem>
<listitem>
<!--
2014-08-26 [0076f26] Heikki..: Implement IF NOT EXISTS for CREATE SEQUENCE.
2014-11-06 [08309aa] Fujii ..: Implement IF NOT EXIST for CREATE INDEX.
2014-12-13 [e39b6f9] Andrew..: Add CINE option for CREATE TABLE AS and CREATE ..
-->
<para>
Add <literal>IF NOT EXISTS</> clause to <link
linkend="SQL-CREATETABLEAS"><command>CREATE TABLE AS</></>,
<link linkend="SQL-CREATEINDEX"><command>CREATE INDEX</></>,
<link linkend="SQL-CREATESEQUENCE"><command>CREATE SEQUENCE</></>,
and <link linkend="SQL-CREATEMATERIALIZEDVIEW"><command>CREATE
MATERIALIZED VIEW</></> (Fabr&iacute;zio de Royes Mello)
</para>
</listitem>
<listitem>
<!--
2015-03-24 [1d8198b] Bruce ..: Add support for ALTER TABLE IF EXISTS ... RENAM..
-->
<para>
Add support for <literal>IF EXISTS</> to <link
linkend="SQL-ALTERTABLE"><command>ALTER TABLE ... RENAME
CONSTRAINT</></> (Bruce Momjian)
</para>
</listitem>
<listitem>
<!--
2015-03-09 [31eae60] Alvaro..: Allow CURRENT/SESSION_USER to be used in certai..
-->
<para>
Allow some DDL commands to accept <literal>CURRENT_USER</>
or <literal>SESSION_USER</>, meaning the current user or session
user, in place of a specific user name (Kyotaro Horiguchi,
&Aacute;lvaro Herrera)
</para>
<para>
This feature is now supported in
<xref linkend="SQL-ALTERUSER">, <xref linkend="SQL-ALTERGROUP">,
<xref linkend="SQL-ALTERROLE">, <xref linkend="SQL-GRANT">,
and <command>ALTER <replaceable>object</> OWNER TO</> commands.
</para>
</listitem>
<listitem>
<!--
2014-12-23 [7eca575] Alvaro..: get_object_address: separate domain constraints..
-->
<para>
Support comments on <link linkend="SQL-CREATEDOMAIN">domain
constraints</> (&Aacute;lvaro Herrera)
</para>
</listitem>
<listitem>
<!--
2015-04-05 [0ef0396] Simon ..: Reduce lock levels of some trigger DDL and add ..
-->
<para>
Reduce lock levels of some create and alter trigger and foreign
key commands (Simon Riggs, Andreas Karlsson)
</para>
</listitem>
<listitem>
<!--
2015-05-11 [fa26424] Stephe..: Allow LOCK TABLE .. ROW EXCLUSIVE MODE with IN..
-->
<para>
Allow <link linkend="SQL-LOCK"><command>LOCK TABLE ... ROW EXCLUSIVE
MODE</></> for those with <command>INSERT</> privileges on the
target table (Stephen Frost)
</para>
<para>
Previously this command required <command>UPDATE</>, <command>DELETE</>,
or <command>TRUNCATE</> privileges.
</para>
</listitem>
<listitem>
<!--
2015-03-23 [e5f455f] Tom Lane: Apply table and domain CHECK constraints in nam.
-->
<para>
Apply table and domain <literal>CHECK</> constraints in order by name
(Tom Lane)
</para>
<para>
The previous ordering was indeterminate.
</para>
</listitem>
<listitem>
<!--
2014-07-01 [15c82ef] Tom Lane: Refactor CREATE/ALTER DATABASE syntax so option..
2014-07-01 [fbb1d7d] Tom Lane: Allow CREATE/ALTER DATABASE to manipulate datis..
-->
<para>
Allow <link
linkend="SQL-CREATEDATABASE"><command>CREATE</></>/<link
linkend="SQL-ALTERDATABASE"><command>ALTER DATABASE</></>
to manipulate <structname>datistemplate</> and
<structname>datallowconn</> (Vik Fearing)
</para>
<para>
This allows these per-database settings to be
changed without manually modifying the <link
linkend="catalog-pg-database"><structname>pg_database</></>
system catalog.
</para>
</listitem>
</itemizedlist>
<sect4>
<title><link linkend="ddl-foreign-data">Foreign Tables</link></title>
<itemizedlist>
<listitem>
<!--
2014-07-10 [59efda3] Tom Lane: Implement IMPORT FOREIGN SCHEMA.
-->
<para>
Add support for <xref linkend="SQL-IMPORTFOREIGNSCHEMA">
(Ronan Dunklau, Michael Paquier, Tom Lane)
</para>
<para>
This command allows automatic creation of local foreign tables
that match the structure of existing tables on a remote server.
</para>
</listitem>
<listitem>
<!--
2014-12-17 [fc2ac1f] Tom Lane: Allow CHECK constraints to be placed on foreign..
-->
<para>
Allow <literal>CHECK</> constraints to be placed on foreign tables
(Shigeru Hanada, Etsuro Fujita)
</para>
<para>
Such constraints are assumed to be enforced on the remote server,
and are not enforced locally. However, they are assumed to hold for
purposes of query optimization, such
as <link linkend="ddl-partitioning-constraint-exclusion">constraint
exclusion</>.
</para>
</listitem>
<listitem>
<!--
2015-03-22 [cb1ca4d] Tom Lane: Allow foreign tables to participate in inherita..
-->
<para>
Allow foreign tables to participate in inheritance (Shigeru Hanada,
Etsuro Fujita)
</para>
<para>
To let this work naturally, foreign tables are now allowed to have
check constraints marked as not valid, and to set storage
and <type>OID</> characteristics, even though these operations are
effectively no-ops for a foreign table.
</para>
</listitem>
<listitem>
<!--
2015-05-01 [e7cb7ee] Robert..: Allow FDWs and custom scan providers to replace..
2015-05-10 [1a8a4e5] Tom Lane: Code review for foreign/custom join pushdown pa..
-->
<para>
Allow foreign data wrappers and custom scans to implement join
pushdown (KaiGai Kohei)
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4>
<title><link linkend="event-triggers">Event Triggers</link></title>
<itemizedlist>
<listitem>
<!--
2015-05-11 [b488c58] Alvaro..: Allow on-the-fly capture of DDL event details
-->
<para>
Whenever a <literal>ddl_command_end</> event trigger is installed,
capture details of <acronym>DDL</> activity for it to inspect
(&Aacute;lvaro Herrera)
</para>
<para>
This information is available through a set-returning function <link
linkend="pg-event-trigger-ddl-command-end-functions"><function>pg_event_trigger_ddl_commands()</></link>,
or by inspection of C data structures if that function doesn't
provide enough detail.
</para>
</listitem>
<listitem>
<!--
2014-12-08 [618c943] Simon ..: Event Trigger for table_rewrite
-->
<para>
Allow event triggers on table rewrites caused by <link
linkend="SQL-ALTERTABLE"><command>ALTER TABLE</></> (Dimitri
Fontaine)
</para>
</listitem>
<listitem>
<!--
2015-02-23 [296f3a6] Alvaro..: Support more commands in event triggers
-->
<para>
Add event trigger support for database-level <link
linkend="SQL-COMMENT"><command>COMMENT</></>, <link
linkend="SQL-SECURITY-LABEL"><command>SECURITY LABEL</></>,
and <link linkend="SQL-GRANT"><command>GRANT</></>/<link
linkend="SQL-REVOKE"><command>REVOKE</></> (&Aacute;lvaro Herrera)
</para>
</listitem>
<listitem>
<!--
2014-12-30 [72dd233] Alvaro..: pg_event_trigger_dropped_objects: Add name/args..
2015-04-06 [e9a077c] Alvaro..: pg_event_trigger_dropped_objects: add is_temp c..
-->
<para>
Add columns to the output of <link
linkend="pg-event-trigger-sql-drop-functions"><function>pg_event_trigger_dropped_objects</></>
(&Aacute;lvaro Herrera)
</para>
<para>
This allows simpler processing of delete operations.
</para>
</listitem>
</itemizedlist>
</sect4>
</sect3>
<sect3>
<title>Data Types</title>
<itemizedlist>
<listitem>
<!--
2014-09-09 [57b1085] Peter ..: Allow empty content in xml type
-->
<para>
Allow the <link linkend="datatype-xml"><type>xml</></> data type
to accept empty or all-whitespace content values (Peter Eisentraut)
</para>
<para>
This is required by the <acronym>SQL</>/<acronym>XML</>
specification.
</para>
</listitem>
<listitem>
<!--
2014-10-21 [6f04368] Peter ..: Allow input format xxxx-xxxx-xxxx for macaddr ..
-->
<para>
Allow <link linkend="datatype-macaddr"><type>macaddr</></> input
using the format <literal>xxxx-xxxx-xxxx</> (Herwin Weststrate)
</para>
</listitem>
<listitem>
<!--
2014-10-18 [417f924] Bruce ..: interval: tighten precision specification
-->
<para>
Disallow non-SQL-standard syntax for <link
linkend="datatype-interval-input"><type>interval</></link> with
both precision and field specifications (Bruce Momjian)
</para>
<para>
Per the standard, such type specifications should be written as,
for example, <literal>INTERVAL MINUTE TO SECOND(2)</>.
<productname>PostgreSQL</> formerly allowed this to be written as
<literal>INTERVAL(2) MINUTE TO SECOND</>, but it must now be
written in the standard way.
</para>
</listitem>
<listitem>
<!--
2015-04-01 [89840d7] Tom Lane: Provide real selectivity estimators for inet/ci..
-->
<para>
Add selectivity estimators for <link
linkend="datatype-inet"><type>inet</></>/<link
linkend="datatype-cidr"><type>cidr</></> operators and improve
estimators for text search functions (Emre Hasegeli, Tom Lane)
</para>
</listitem>
<listitem>
<!--
2015-05-09 [0c90f67] Andrew..: Add new OID alias type regrole
2015-05-09 [cb9fa80] Andrew..: Add new OID alias type regnamespace
-->
<para>
Add data
types <link linkend="datatype-oid-table"><type>regrole</></link>
and <link linkend="datatype-oid-table"><type>regnamespace</></link>
to simplify entering and pretty-printing the <type>OID</> of a role
or namespace (Kyotaro Horiguchi)
</para>
</listitem>
</itemizedlist>
<sect4>
<title><link linkend="datatype-json"><acronym>JSON</></link></title>
<itemizedlist>
<listitem>
<!--
2015-05-12 [c694701] Andrew..: Additional functions and operators for jsonb
2015-05-31 [37def42] Andrew..: Rename jsonb_replace to jsonb_set and allow it ..
-->
<para>
Add <type>jsonb</> functions <link
linkend="functions-json-processing-table"><function>jsonb_set()</></>
and <link
linkend="functions-json-processing-table"><function>jsonb_pretty()</></>
(Dmitry Dolgov, Andrew Dunstan, Petr Jel&iacute;nek)
</para>
</listitem>
<listitem>
<!--
2014-12-12 [7e354ab] Andrew..: Add several generator functions for jsonb that ..
-->
<para>
Add <type>jsonb</> generator functions <link
linkend="functions-json-creation-table"><function>to_jsonb()</></>,
<link
linkend="functions-json-creation-table"><function>jsonb_object()</></>,
<link
linkend="functions-json-creation-table"><function>jsonb_build_object()</></>,
<link
linkend="functions-json-creation-table"><function>jsonb_build_array()</></>,
<link
linkend="functions-aggregate-table"><function>jsonb_agg()</></>,
and <link
linkend="functions-aggregate-table"><function>jsonb_object_agg()</></>
(Andrew Dunstan)
</para>
<para>
Equivalent functions already existed for type <type>json</>.
</para>
</listitem>
<listitem>
<!--
2015-03-03 [b67f1ce] Tom Lane: Reduce json <=> jsonb casts from explicit-only..
-->
<para>
Reduce casting requirements to/from <link
linkend="datatype-json"><type>json</></> and <link
linkend="datatype-json"><type>jsonb</></> (Tom Lane)
</para>
</listitem>
<listitem>
<!--
2015-06-11 [908e234] Andrew..: Rename jsonb - text[] operator to #- to avoid a..
-->
<para>
Allow <type>text</>, <type>text</> array, and <type>integer</>
values to be <link linkend="functions-jsonb-op-table">subtracted</>
from <type>jsonb</> documents (Dmitry Dolgov, Andrew Dunstan)
</para>
</listitem>
<listitem>
<!--
2015-05-12 [c694701] Andrew..: Additional functions and operators for jsonb
-->
<para>
Add <type>jsonb</> <link
linkend="functions-jsonb-op-table"><literal>||</></> operator
(Dmitry Dolgov, Andrew Dunstan)
</para>
</listitem>
<listitem>
<!--
2014-12-12 [237a882] Andrew..: Add json_strip_nulls and jsonb_strip_nulls fun..
-->
<para>
Add <link
linkend="functions-json-processing-table"><function>json_strip_nulls()</></>
and <link
linkend="functions-json-processing-table"><function>jsonb_strip_nulls()</></>
functions to remove JSON null values from documents
(Andrew Dunstan)
</para>
</listitem>
</itemizedlist>
</sect4>
</sect3>
<sect3>
<title>Functions</title>
<itemizedlist>
<listitem>
<!--
2014-11-11 [1871c89] Fujii ..: Add generate_series(numeric, numeric).
-->
<para>
Add <link linkend="functions-srf"><function>generate_series()</></>
for <type>numeric</> values (Plato Malugin)
</para>
</listitem>
<listitem>
<!--
2014-11-25 [bac2739] Tom Lane: Support arrays as input to array_agg() and ARRA..
-->
<para>
Allow <link
linkend="functions-aggregate-table"><function>array_agg()</></> and
<function>ARRAY()</> to take arrays as inputs (Ali Akbar, Tom Lane)
</para>
</listitem>
<listitem>
<!--
2015-03-18 [13dbc7a] Alvaro..: array_offset() and array_offsets()
2015-03-30 [97690ea] Alvaro..: Change array_offset to return subscripts, not o..
-->
<para>
Add functions <link
linkend="array-functions-table"><function>array_position()</></>
and <link
linkend="array-functions-table"><function>array_positions()</></>
to return subscripts of array values (Pavel Stehule)
</para>
</listitem>
<listitem>
<!--
2014-12-15 [4520ba6] Heikki..: Add point <-> polygon distance operator.
-->
<para>
Add a <type>point</>-to-<type>polygon</> distance operator
<link linkend="functions-geometry-op-table">&lt;-&gt;</>
(Alexander Korotkov)
</para>
</listitem>
<listitem>
<!--
2014-08-27 [8167a38] Jeff D..: Allow multibyte characters as escape in SIMILA..
-->
<para>
Allow multibyte characters as escapes in <link
linkend="functions-similarto-regexp"><literal>SIMILAR TO</></>
and <link linkend="functions-string-sql"><literal>SUBSTRING</></>
(Jeff Davis)
</para>
<para>
Previously, only a single-byte character was allowed as an escape.
</para>
</listitem>
<listitem>
<!--
2014-09-09 [e80252d] Tom Lane: Add width_bucket(anyelement, anyarray).
-->
<para>
Add a <link
linkend="functions-math-func-table"><function>width_bucket()</></>
variant that supports any sortable data type and non-uniform bucket
widths (Petr Jel&iacute;nek)
</para>
</listitem>
<listitem>
<!--
2015-06-28 [cb2acb1] Heikki..: Add missing_ok option to the SQL functions for..
-->
<para>
Add an optional <replaceable>missing_ok</> argument to <link
linkend="functions-admin-genfile-table"><function>pg_read_file()</></>
and related functions (Michael Paquier, Heikki Linnakangas)
</para>
</listitem>
<listitem>
<!--
2015-03-10 [865f14a] Robert..: Allow named parameters to be specified using =>..
-->
<para>
Allow <link linkend="sql-syntax-calling-funcs"><literal>=&gt;</></>
to specify named parameters in function calls (Pavel Stehule)
</para>
<para>
Previously only <literal>:=</> could be used. This requires removing
the possibility for <literal>=&gt;</> to be a user-defined operator.
Creation of user-defined <literal>=&gt;</> operators has been issuing
warnings since PostgreSQL 9.0.
</para>
</listitem>
<listitem>
<!--
2015-03-25 [06bf0dd] Tom Lane: Upgrade src/port/rint.c to be POSIX-compliant.
-->
<para>
Add <acronym>POSIX</>-compliant rounding for platforms that use
PostgreSQL-supplied rounding functions (Pedro Gimeno Fortea)
</para>
</listitem>
</itemizedlist>
<sect4>
<title>System Information Functions and Views</title>
<itemizedlist>
<listitem>
<!--
2014-12-23 [d7ee82e] Alvaro..: Add SQL-callable pg_get_object_address
2014-12-30 [a676201] Alvaro..: Add pg_identify_object_as_address
-->
<para>
Add function <link
linkend="functions-info-object-table"><function>pg_get_object_address()</></>
to return <type>OID</>s that uniquely
identify an object, and function <link
linkend="functions-info-object-table"><function>pg_identify_object_as_address()</></>
to return object information based on <type>OID</>s (&Aacute;lvaro
Herrera)
</para>
</listitem>
<listitem>
<!--
2015-03-19 [bf03889] Stephe..: GetUserId() changes to has_privs_of_role()
-->
<para>
Loosen security checks for viewing queries in <link
linkend="pg-stat-activity-view"><structname>pg_stat_activity</></>,
executing <link
linkend="functions-admin-signal-table"><function>pg_cancel_backend()</></>,
and executing <link
linkend="functions-admin-signal-table"><function>pg_terminate_backend()</></>
(Stephen Frost)
</para>
<para>
Previously, only the specific role owning the target session could
perform these operations; now membership in that role is sufficient.
</para>
</listitem>
<listitem>
<!--
2015-02-19 [2fb7a75] Tom Lane: Add pg_stat_get_snapshot_timestamp() to show s..
-->
<para>
Add <link
linkend="monitoring-stats-funcs-table"><function>pg_stat_get_snapshot_timestamp()</></>
to output the time stamp of the statistics snapshot (Matt Kelly)
</para>
<para>
This represents the last time the snapshot file was written to
the file system.
</para>
</listitem>
<listitem>
<!--
2014-09-10 [36ad1a8] Bruce ..: Implement mxid_age() to compute multi-xid age
-->
<para>
Add <link
linkend="vacuum-for-multixact-wraparound"><function>mxid_age()</></>
to compute multi-xid age (Bruce Momjian)
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4>
<title>Aggregates</title>
<itemizedlist>
<listitem>
<!--
2014-08-28 [6c40f83] Tom Lane: Add min and max aggregates for inet/cidr data t..
-->
<para>
Add <function>min()</>/<function>max()</> aggregates
for <link linkend="datatype-inet"><type>inet</></>/<link
linkend="datatype-cidr"><type>cidr</></> data types (Haribabu
Kommi)
</para>
</listitem>
<listitem>
<!--
2015-03-20 [8122e14] Andres..: Add, optional, support for 128bit integers.
2015-03-20 [959277a] Andres..: Use 128-bit math to accelerate some aggregation..
-->
<para>
Use 128-bit integers, where supported, as accumulators for some
aggregate functions (Andreas Karlsson)
</para>
</listitem>
</itemizedlist>
</sect4>
</sect3>
<sect3>
<title>Server-Side Languages</title>
<itemizedlist>
<listitem>
<!--
2014-07-03 [8b6010b] Tom Lane: Improve support for composite types in PL/Python.
-->
<para>
Improve support for composite types in <link
linkend="plpython"><application>PL/Python</></> (Ed Behn, Ronan
Dunklau)
</para>
<para>
This allows <application>PL/Python</> functions to return arrays
of composite types.
</para>
</listitem>
<listitem>
<!--
2015-03-11 [1ce7a57] Peter ..: PL/Python: Avoid lossiness in float conversion
-->
<para>
Reduce lossiness of <link
linkend="plpython"><application>PL/Python</></> floating-point value
conversions (Marko Kreen)
</para>
</listitem>
<listitem>
<!--
2015-04-26 [cac7658] Peter ..: Add transforms feature
-->
<para>
Allow specification of conversion routines between <acronym>SQL</>
data types and data types of procedural languages (Peter Eisentraut)
</para>
<para>
This change adds new commands <link
linkend="SQL-CREATETRANSFORM"><command>CREATE</></>/<link
linkend="SQL-DROPTRANSFORM"><command>DROP TRANSFORM</></>.
This also adds optional transformations between the <link
linkend="hstore"><application>hstore</></> and <link
linkend="ltree"><application>ltree</></> types to/from <link
linkend="plperl"><application>PL/Perl</></> and <link
linkend="plpython"><application>PL/Python</></>.
</para>
</listitem>
</itemizedlist>
<sect4>
<title><link linkend="plpgsql">PL/pgSQL</link> Server-Side Language</title>
<itemizedlist>
<listitem>
<!--
2015-05-14 [1dc5ebc] Tom Lane: Support "expanded" objects, particularly arrays..
2015-02-16 [e983c4d] Tom Lane: Rationalize the APIs of array element/slice acc..
2015-02-18 [56a79a8] Tom Lane: Split array_push into separate array_append and..
2015-02-16 [9e3ad1a] Tom Lane: Use fast path in plpgsql's RETURN/RETURN NEXT i..
-->
<para>
Improve <link linkend="plpgsql"><application>PL/pgSQL</></> array
performance (Tom Lane)
</para>
</listitem>
<listitem>
<!--
2015-03-25 [a4847fc] Tom Lane: Add an ASSERT statement in plpgsql.
-->
<para>
Add an <link linkend="plpgsql-statements-assert"><command>ASSERT</></>
statement in <application>PL/pgSQL</> (Pavel Stehule)
</para>
</listitem>
<listitem>
<!--
2014-11-25 [bb1b8f6] Tom Lane: De-reserve most statement-introducing keywords ..
-->
<para>
Allow more <link linkend="plpgsql"><application>PL/pgSQL</></>
keywords to be used as identifiers (Tom Lane)
</para>
</listitem>
</itemizedlist>
</sect4>
</sect3>
<sect3>
<title>Client Applications</title>
<itemizedlist>
<listitem>
<!--
2015-04-11 [83aca89] Peter ..: Move pg_archivecleanup from contrib/ to src/bin/
2015-04-19 [00882d9] Peter ..: Move pg_test_fsync from contrib/ to src/bin/
2015-04-20 [528c2e4] Peter ..: Move pg_test_timing from contrib/ to src/bin/
2015-04-21 [b0a738f] Peter ..: Move pg_xlogdump from contrib/ to src/bin/
-->
<para>
Move <link
linkend="pgarchivecleanup"><application>pg_archivecleanup</></>,
<link linkend="pgtestfsync"><application>pg_test_fsync</></>,
<link linkend="pgtesttiming"><application>pg_test_timing</></>,
and <link linkend="pgxlogdump"><application>pg_xlogdump</></>
from <filename>contrib</> to <filename>src/bin</> (Peter Eisentraut)
</para>
<para>
This should result in these programs being installed by default in
most installations.
</para>
</listitem>
<listitem>
<!--
2015-03-23 [61081e7] Heikki..: Add pg_rewind, for re-synchronizing a master se..
-->
<para>
Add <link linkend="app-pgrewind"><application>pg_rewind</></>,
which allows re-synchronizing a master server after failback
(Heikki Linnakangas)
</para>
</listitem>
<listitem>
<!--
2014-10-06 [d9f38c7] Andres..: Add support for managing physical replication s..
-->
<para>
Allow <link
linkend="app-pgreceivexlog"><application>pg_receivexlog</></>
to manage physical replication slots (Michael Paquier)
</para>
<para>
This is controlled via new <option>--create-slot</> and
<option>--drop-slot</> options.
</para>
</listitem>
<listitem>
<!--
2014-11-18 [c4f99d2] Fujii ..: Add &#8211;&#8211;synchronous option to pg_receivexlog, for..
-->
<para>
Allow <link
linkend="app-pgreceivexlog"><application>pg_receivexlog</></>
to synchronously flush <acronym>WAL</> to storage using new
<option>--synchronous</> option (Furuya Osamu, Fujii Masao)
</para>
<para>
Without this, <acronym>WAL</> files are fsync'ed only on close.
</para>
</listitem>
<listitem>
<!--
2015-01-23 [a179232] Alvaro..: vacuumdb: enable parallel mode
-->
<para>
Allow <link linkend="APP-VACUUMDB"><application>vacuumdb</></> to
vacuum in parallel using new <option>--jobs</> option (Dilip Kumar)
</para>
</listitem>
<listitem>
<!--
2015-11-12 [5094da9] Alvaro..: vacuumdb: don't prompt for passwords over and ..
-->
<para>
In <link linkend="APP-VACUUMDB"><application>vacuumdb</></>, do not
prompt for the same password repeatedly when multiple connections
are necessary (Haribabu Kommi, Michael Paquier)
</para>
</listitem>
<listitem>
<!--
2015-05-15 [458a077] Fujii ..: Support &#8211;&#8211;verbose option in reindexdb.
-->
<para>
Add <option>--verbose</> option to <link
linkend="APP-REINDEXDB"><application>reindexdb</></> (Sawada
Masahiko)
</para>
</listitem>
<listitem>
<!--
2015-05-12 [72d422a] Andrew..: Map basebackup tablespaces using a tablespace_..
-->
<para>
Make <link linkend="app-pgbasebackup"><application>pg_basebackup</></>
use a tablespace mapping file when using <application>tar</> format,
to support symbolic links and file paths of 100+ characters in length
on <systemitem class="osname">MS Windows</> (Amit Kapila)
</para>
</listitem>
<listitem>
<!--
2014-09-19 [728f152] Andres..: Add rmgr callback to name xlog record types for..
2014-09-19 [bdd5726] Andres..: Add the capability to display summary statistic..
-->
<para>
Add <link linkend="pgxlogdump"><application>pg_xlogdump</></> option
<option>--stats</> to display summary statistics (Abhijit Menon-Sen)
</para>
</listitem>
</itemizedlist>
<sect4>
<title><xref linkend="APP-PSQL"></title>
<itemizedlist>
<listitem>
<!--
2015-03-31 [9d9991c] Bruce ..: psql: add asciidoc output format
-->
<para>
Allow <application>psql</> to produce AsciiDoc output (Szymon Guz)
</para>
</listitem>
<listitem>
<!--
2014-07-10 [5b214c5] Fujii ..: Add new ECHO mode 'errors' that displays only ..
-->
<para>
Add an <literal>errors</> mode that displays only failed commands
to <application>psql</>'s <varname>ECHO</> variable
(Pavel Stehule)
</para>
<para>
This behavior can also be selected with <application>psql</>'s
<option>-b</> option.
</para>
</listitem>
<listitem>
<!--
2014-09-12 [a2dabf0] Stephe..: Add unicode_{column|header|border}_style to psql
-->
<para>
Provide separate column, header, and border linestyle control
in <application>psql</>'s unicode linestyle (Pavel Stehule)
</para>
<para>
Single or double lines are supported; the default is
<literal>single</>.
</para>
</listitem>
<listitem>
<!--
2014-09-02 [51bb795] Andres..: Add psql PROMPT variable showing which line of ..
-->
<para>
Add new option <literal>%l</> in <application>psql</>'s <link
linkend="APP-PSQL-variables"><envar>PROMPT</></> variables
to display the current multiline statement line number
(Sawada Masahiko)
</para>
</listitem>
<listitem>
<!--
2015-03-28 [7655f4c] Andrew..: Add a pager_min_lines setting to psql
-->
<para>
Add <literal>\pset</> option <link
linkend="APP-PSQL-meta-commands"><varname>pager_min_lines</></>
to control pager invocation (Andrew Dunstan)
</para>
</listitem>
<listitem>
<!--
2014-11-21 [4077fb4] Andrew..: Fix an error in psql that overcounted output l..
-->
<para>
Improve <application>psql</> line counting used when deciding
to invoke the pager (Andrew Dunstan)
</para>
</listitem>
<listitem>
<!--
2015-12-03 [07338cb] Tom Lane: Clean up some psql issues around handling of t..
2015-12-08 [e90371d] Tom Lane: Make failure to open psql log-file fatal.
-->
<para>
<application>psql</> now fails if the file specified by
an <option>--output</> or <option>--log-file</> switch cannot be
written (Tom Lane, Daniel V&eacute;rit&eacute;)
</para>
<para>
Previously, it effectively ignored the switch in such cases.
</para>
</listitem>
<listitem>
<!--
2014-07-12 [bd40951] Andres..: Minimal psql tab completion support for SET se..
-->
<para>
Add <application>psql</> tab completion when setting the
<xref linkend="guc-search-path"> variable (Jeff Janes)
</para>
<para>
Currently only the first schema can be tab-completed.
</para>
</listitem>
<listitem>
<!--
2014-06-23 [631e7f6] Heikki..: Improve tab-completion of DROP and ALTER ENABLE..
-->
<para>
Improve <application>psql</>'s tab completion for triggers and rules
(Andreas Karlsson)
</para>
</listitem>
</itemizedlist>
<sect5>
<title><link linkend="APP-PSQL-meta-commands">Backslash Commands</link></title>
<itemizedlist>
<listitem>
<!--
2014-09-10 [07c8651] Andres..: Add new psql help topics, accessible to both..
-->
<para>
Add <application>psql</> <command>\?</> help sections
<literal>variables</> and <literal>options</> (Pavel Stehule)
</para>
<para>
<literal>\? variables</> shows <application>psql</>'s special
variables and <literal>\? options</> shows the command-line options.
<command>\? commands</> shows the meta-commands, which is the
traditional output and remains the default. These help displays
can also be obtained with the command-line
option <literal>--help=<replaceable>section</></literal>.
</para>
</listitem>
<listitem>
<!--
2014-07-14 [ee80f04] Alvaro..: psql: Show tablespace size in \db+
-->
<para>
Show tablespace size in <application>psql</>'s <literal>\db+</>
(Fabr&iacute;zio de Royes Mello)
</para>
</listitem>
<listitem>
<!--
2015-04-09 [a6f3c1f] Magnus..: Show owner of types in psql \dT+
-->
<para>
Show data type owners in <application>psql</>'s <literal>\dT+</>
(Magnus Hagander)
</para>
</listitem>
<listitem>
<!--
2014-09-04 [f6f654f] Fujii ..: Allow \watch to display query execution time if..
-->
<para>
Allow <application>psql</>'s <command>\watch</> to output
<command>\timing</> information (Fujii Masao)
</para>
<para>
Also prevent <option>--echo-hidden</> from echoing
<command>\watch</> queries, since that is generally unwanted.
</para>
</listitem>
<listitem>
<!--
2014-11-22 [eca2b9b] Andrew..: Rework echo_hidden for \sf and \ef from commit ..
-->
<para>
Make <application>psql</>'s <literal>\sf</> and <literal>\ef</>
commands honor <envar>ECHO_HIDDEN</> (Andrew Dunstan)
</para>
</listitem>
<listitem>
<!--
2014-08-12 [e15c4ab] Fujii ..: Add tab-completion for \unset and valid setting..
-->
<para>
Improve <application>psql</> tab completion for <command>\set</>,
<command>\unset</>, and <literal>:variable</> names (Pavel
Stehule)
</para>
</listitem>
<listitem>
<!--
2014-11-10 [095d401] Robert..: Tab complete second argument to \c with role n..
-->
<para>
Allow tab completion of role names
in <application>psql</> <literal>\c</> commands (Ian Barwick)
</para>
</listitem>
</itemizedlist>
</sect5>
</sect4>
<sect4>
<title><xref linkend="APP-PGDUMP"></title>
<itemizedlist>
<listitem>
<!--
2014-11-17 [be1cc8f] Simon ..: Add pg_dump &#8211;&#8211;snapshot option
-->
<para>
Allow <application>pg_dump</> to share a snapshot taken by another
session using <option>--snapshot</> (Simon Riggs, Michael Paquier)
</para>
<para>
The remote snapshot must have been exported by
<function>pg_export_snapshot()</> or logical replication slot
creation. This can be used to share a consistent snapshot
across multiple <application>pg_dump</> processes.
</para>
</listitem>
<listitem>
<!--
2015-11-21 [5f5e68b] Tom Lane: Adopt the GNU convention for handling tar-arch..
-->
<para>
Support table sizes exceeding 8GB in tar archive format (Tom Lane)
</para>
<para>
The POSIX standard for tar format does not allow elements of a tar
archive to exceed 8GB, but most modern implementations of tar
support an extension that does allow it. Use the extension format
when necessary, rather than failing.
</para>
</listitem>
<listitem>
<!--
2014-07-07 [7700597] Tom Lane: In pg_dump, show server and pg_dump versions w..
-->
<para>
Make <application>pg_dump</> always print the server and
<application>pg_dump</> versions (Jing Wang)
</para>
<para>
Previously, version information was only printed in
<option>--verbose</> mode.
</para>
</listitem>
<listitem>
<!--
2015-06-04 [232cd63] Fujii ..: Remove -i/-ignore-version option from pg_dump..
-->
<para>
Remove the long-ignored <option>-i</>/<option>--ignore-version</>
option from <application>pg_dump</>, <application>pg_dumpall</>,
and <application>pg_restore</> (Fujii Masao)
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4>
<title><xref linkend="app-pg-ctl"></title>
<itemizedlist>
<listitem>
<!--
2014-08-25 [ebe30ad] Bruce ..: pg_ctl, pg_upgrade: allow multiple -o/-O opti..
-->
<para>
Support multiple <application>pg_ctl</> <option>-o</> options,
concatenating their values (Bruce Momjian)
</para>
</listitem>
<listitem>
<!--
2014-07-17 [c0e4520] Magnus..: Add option to pg_ctl to choose event source for..
-->
<para>
Allow control of <application>pg_ctl</>'s event source logging
on <systemitem class="osname">MS Windows</> (MauMau)
</para>
<para>
This only controls <application>pg_ctl</>, not the server, which
has separate settings in <filename>postgresql.conf</>.
</para>
</listitem>
<listitem>
<!--
2015-11-08 [bdb42ba] Noah M..: Don't connect() to a wildcard address in test_..
-->
<para>
If the server's listen address is set to a wildcard value
(<literal>0.0.0.0</> in IPv4 or <literal>::</> in IPv6), connect via
the loopback address rather than trying to use the wildcard address
literally (Kondo Yuta)
</para>
<para>
This fix primarily affects Windows, since on other platforms
<application>pg_ctl</> will prefer to use a Unix-domain socket.
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4>
<title><xref linkend="pgupgrade"></title>
<itemizedlist>
<listitem>
<!--
2015-04-14 [9fa8b0e] Peter ..: Move pg_upgrade from contrib/ to src/bin/
-->
<para>
Move <application>pg_upgrade</> from <filename>contrib</> to
<filename>src/bin</> (Peter Eisentraut)
</para>
<para>
In connection with this change, the functionality previously
provided by the <application>pg_upgrade_support</> module has been
moved into the core server.
</para>
</listitem>
<listitem>
<!--
2014-08-25 [ebe30ad] Bruce ..: pg_ctl, pg_upgrade: allow multiple -o/-O optio..
-->
<para>
Support multiple <application>pg_upgrade</>
<option>-o</>/<option>-O</> options,
concatenating their values (Bruce Momjian)
</para>
</listitem>
<listitem>
<!--
2014-10-10 [33755e8] Heikki..: Change the way encoding and locale checks are d..
-->
<para>
Improve database collation comparisons in
<application>pg_upgrade</> (Heikki Linnakangas)
</para>
</listitem>
<listitem>
<!--
2014-08-25 [2209b39] Bruce ..: pg_upgrade: remove support for 8.3 old clusters
-->
<para>
Remove support for upgrading from 8.3 clusters (Bruce Momjian)
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4>
<title><xref linkend="pgbench"></title>
<itemizedlist>
<listitem>
<!--
2015-04-13 [81134af] Peter ..: Move pgbench from contrib/ to src/bin/
-->
<para>
Move pgbench from <filename>contrib</> to <filename>src/bin</>
(Peter Eisentraut)
</para>
</listitem>
<listitem>
<!--
2015-09-30 [3c4c5ac] Tatsuo..: Fix incorrect tps number calculation in "exclu..
-->
<para>
Fix calculation of TPS number <quote>excluding connections
establishing</> (Tatsuo Ishii, Fabien Coelho)
</para>
<para>
The overhead for connection establishment was miscalculated whenever
the number of pgbench threads was less than the number of client
connections. Although this is clearly a bug, we won't back-patch it
into pre-9.5 branches since it makes TPS numbers not comparable to
previous results.
</para>
</listitem>
<listitem>
<!--
2014-10-13 [98aed6c] Heikki..: Add &#8211;&#8211;latency-limit option to pgbench.
-->
<para>
Allow counting of pgbench transactions that take over a specified
amount of time (Fabien Coelho)
</para>
<para>
This is controlled by a new <option>--latency-limit</> option.
</para>
</listitem>
<listitem>
<!--
2014-07-30 [ed802e7] Robert..: pgbench: Allow \setrandom to generate Gaussian..
-->
<para>
Allow pgbench to generate Gaussian/exponential distributions
using <command>\setrandom</> (Kondo Mitsumasa, Fabien Coelho)
</para>
</listitem>
<listitem>
<!--
2015-03-02 [878fdcb] Robert..: pgbench: Add a real expression syntax to \set
-->
<para>
Allow <application>pgbench</>'s <command>\set</> command to handle
arithmetic expressions containing more than one operator, and add
<literal>%</> (modulo) to the set of operators it supports
(Robert Haas, Fabien Coelho)
</para>
</listitem>
</itemizedlist>
</sect4>
</sect3>
<sect3>
<title>Source Code</title>
<itemizedlist>
<listitem>
<!--
2014-11-20 [2c03216] Heikki..: Revamp the WAL record format.
-->
<para>
Simplify <link linkend="wal"><acronym>WAL</></> record format
(Heikki Linnakangas)
</para>
<para>
This allows external tools to more easily track what blocks
are modified.
</para>
</listitem>
<listitem>
<!--
2015-03-15 [4f1b890] Andres..: Merge the various forms of transaction commit &..
-->
<para>
Improve the representation of transaction commit and abort WAL
records (Andres Freund)
</para>
</listitem>
<listitem>
<!--
2014-09-25 [b64d92f] Andres..: Add a basic atomic ops API abstracting away pla..
-->
<para>
Add atomic memory operations <acronym>API</> (Andres Freund)
</para>
</listitem>
<listitem>
<!--
2014-11-07 [0b03e59] Robert..: Introduce custom path and scan providers.
2014-11-20 [a34fa8e] Tom Lane: Initial code review for CustomScan patch.
2014-11-21 [c2ea228] Tom Lane: Simplify API for initially hooking custom-path ..
2014-11-21 [4477704] Tom Lane: Rearrange CustomScan API.
-->
<para>
Allow custom path and scan methods (KaiGai Kohei, Tom Lane)
</para>
<para>
This allows extensions greater control over the optimizer and
executor.
</para>
</listitem>
<listitem>
<!--
2015-05-12 [afb9249] Tom Lane: Add support for doing late row locking in FDWs.
-->
<para>
Allow foreign data wrappers to do post-filter locking (Etsuro
Fujita)
</para>
</listitem>
<listitem>
<!--
2015-05-08 [168d580] Andres..: Add support for INSERT ... ON CONFLICT DO NOTHI..
2015-05-08 [2c8f483] Andres..: Represent columns requiring insert and update p..
-->
<para>
Foreign tables can now take part in <command>INSERT ... ON CONFLICT
DO NOTHING</> queries (Peter Geoghegan, Heikki Linnakangas,
Andres Freund)
</para>
<para>
Foreign data wrappers must be modified to handle this.
<command>INSERT ... ON CONFLICT DO UPDATE</> is not supported on
foreign tables.
</para>
</listitem>
<listitem>
<!--
2014-12-18 [4a14f13] Tom Lane: Improve hash_create's API for selecting simple-..
-->
<para>
Improve <function>hash_create()</>'s API for selecting
simple-binary-key hash functions (Teodor Sigaev, Tom Lane)
</para>
</listitem>
<listitem>
<!--
2015-04-30 [924bcf4] Robert..: Create an infrastructure for parallel computati..
2014-10-31 [2bd9e41] Robert..: Support frontend-backend protocol communication..
-->
<para>
Improve parallel execution infrastructure (Robert Haas, Amit
Kapila, Noah Misch, Rushabh Lathia, Jeevan Chalke)
</para>
</listitem>
<listitem>
<!--
2014-06-28 [a6d488c] Andres..: Remove Alpha and Tru64 support.
-->
<para>
Remove <productname>Alpha</> (<acronym>CPU</>) and <systemitem
class="osname">Tru64</> (OS) ports (Andres Freund)
</para>
</listitem>
<listitem>
<!--
2014-07-06 [4893ccd] Robert..: Remove swpb-based spinlock implementation for A..
-->
<para>
Remove swap-byte-based spinlock implementation for
<acronym>ARM</>v5 and earlier <acronym>CPU</>s (Robert Haas)
</para>
<para>
<acronym>ARM</>v5's weak memory ordering made this locking
implementation unsafe. Spinlock support is still possible on
newer gcc implementations with atomics support.
</para>
</listitem>
<listitem>
<!--
2015-02-24 [23a7835] Peter ..: Error when creating names too long for tar for..
-->
<para>
Generate an error when excessively long (100+ character) file
paths are written to tar files (Peter Eisentraut)
</para>
<para>
Tar does not support such overly-long paths.
</para>
</listitem>
<listitem>
<!--
2015-05-19 [0b28ea7] Tom Lane: Avoid collation dependence in indexes of syste..
-->
<para>
Change index operator class for columns <link
linkend="catalog-pg-seclabel"><structname>pg_seclabel</></>.<structname>provider</>
and <link
linkend="catalog-pg-shseclabel"><structname>pg_shseclabel</></>.<structname>provider</>
to be <literal>text_pattern_ops</> (Tom Lane)
</para>
<para>
This avoids possible problems with these indexes when different
databases of a cluster have different default collations.
</para>
</listitem>
<listitem>
<!--
2014-09-09 [0709b7e] Robert..: Change the spinlock primitives to function as c..
-->
<para>
Change the spinlock primitives to function as compiler barriers
(Robert Haas)
</para>
</listitem>
</itemizedlist>
<sect4>
<title>MS Windows</title>
<itemizedlist>
<listitem>
<!--
2014-12-08 [519b075] Simon ..: Use GetSystemTimeAsFileTime directly in win32
2014-12-08 [8001fe6] Simon ..: Windows: use GetSystemTimePreciseAsFileTime if ..
-->
<para>
Allow higher-precision time stamp resolution on <systemitem
class="osname">Windows 8</>, <systemitem class="osname">Windows
Server 2012</>, and later Windows systems (Craig Ringer)
</para>
</listitem>
<listitem>
<!--
2015-03-18 [f9dead5] Alvaro..: Install shared libraries to bin/ in Windows un..
-->
<para>
Install shared libraries to <filename>bin</> in <systemitem
class="osname">MS Windows</> (Peter Eisentraut, Michael Paquier)
</para>
</listitem>
<listitem>
<!--
2015-04-16 [22d0053] Alvaro..: MSVC: install src/test/modules together with c..
-->
<para>
Install <filename>src/test/modules</> together with
<filename>contrib</> on <productname>MSVC</> builds (Michael
Paquier)
</para>
</listitem>
<listitem>
<!--
2014-07-12 [8d9a0e8] Magnus..: Support &#8211;&#8211;with-extra-version equivalent functi..
-->
<para>
Allow <link linkend="install-procedure">configure</>'s
<option>--with-extra-version</> option to be honored by the
<productname>MSVC</> build (Michael Paquier)
</para>
</listitem>
<listitem>
<!--
2014-07-14 [91f03ba] Noah M..: MSVC: Recognize PGFILEDESC in contrib and conv..
-->
<para>
Pass <envar>PGFILEDESC</> into <productname>MSVC</> contrib builds
(Michael Paquier)
</para>
</listitem>
<listitem>
<!--
2014-07-14 [c4a448e] Noah M..: MSVC: Apply icons to all binaries having them ..
-->
<para>
Add icons to all <productname>MSVC</>-built binaries and version
information to all <systemitem class="osname">MS Windows</>
binaries (Noah Misch)
</para>
<para>
MinGW already had such icons.
</para>
</listitem>
<listitem>
<!--
2014-09-10 [311da16] Andres..: Add support for optional_argument to our own ge..
-->
<para>
Add optional-argument support to the internal
<function>getopt_long()</> implementation (Michael Paquier,
Andres Freund)
</para>
<para>
This is used by the <productname>MSVC</> build.
</para>
</listitem>
</itemizedlist>
</sect4>
</sect3>
<sect3>
<title>Additional Modules</title>
<itemizedlist>
<listitem>
<!--
2015-03-27 [717f709] Andrew..: Add stats for min, max, mean, stddev times to p..
-->
<para>
Add statistics for minimum, maximum,
mean, and standard deviation times to <link
linkend="pgstatstatements-columns"><application>pg_stat_statements</></>
(Mitsumasa Kondo, Andrew Dunstan)
</para>
</listitem>
<listitem>
<!--
2014-10-01 [32984d8] Heikki..: Add functions for dealing with PGP armor heade..
-->
<para>
Add <link linkend="pgcrypto"><application>pgcrypto</></> function
<function>pgp_armor_headers()</> to extract <productname>PGP</>
armor headers (Marko Tiikkaja, Heikki Linnakangas)
</para>
</listitem>
<listitem>
<!--
2014-06-30 [97c40ce] Tom Lane: Allow empty replacement strings in contrib/unac..
-->
<para>
Allow empty replacement strings in <link
linkend="unaccent"><application>unaccent</></> (Mohammad Alhashash)
</para>
<para>
This is useful in languages where diacritic signs are represented
as separate characters.
</para>
</listitem>
<listitem>
<!--
2014-06-30 [1b24887] Tom Lane: Allow multi-character source strings in contrib..
-->
<para>
Allow multicharacter source strings in <link
linkend="unaccent"><application>unaccent</></> (Tom Lane)
</para>
<para>
This could be useful in languages where diacritic signs are
represented as separate characters. It also allows more complex
unaccent dictionaries.
</para>
</listitem>
<listitem>
<!--
2015-05-15 [9689290] Simon ..: TABLESAMPLE system_rows(limit)
2015-05-15 [149f6f1] Simon ..: TABLESAMPLE system_time(limit)
-->
<para>
Add <filename>contrib</> modules <link
linkend="tsm-system-rows"><application>tsm_system_rows</></> and
<link linkend="tsm-system-time"><application>tsm_system_time</></>
to allow additional table sampling methods (Petr Jel&iacute;nek)
</para>
</listitem>
<listitem>
<!--
2014-11-21 [3a82bc6] Heikki..: Add pageinspect functions for inspecting GIN in..
-->
<para>
Add <link linkend="GIN"><acronym>GIN</></>
index inspection functions to <link
linkend="pageinspect"><application>pageinspect</></> (Heikki
Linnakangas, Peter Geoghegan, Michael Paquier)
</para>
</listitem>
<listitem>
<!--
2014-08-22 [f577919] Andres..: Add pinning_backends column to the pg_buffercac..
-->
<para>
Add information about buffer pins to <link
linkend="pgbuffercache"><application>pg_buffercache</></> display
(Andres Freund)
</para>
</listitem>
<listitem>
<!--
2015-05-13 [5850b20] Andres..: Add pgstattuple_approx() to the pgstattuple ext..
-->
<para>
Allow <link linkend="pgstattuple"><application>pgstattuple</></>
to report approximate answers with less overhead using
<function>pgstattuple_approx()</> (Abhijit Menon-Sen)
</para>
</listitem>
<listitem>
<!--
2014-11-29 [22dfd11] Alvaro..: Move test modules from contrib to src/test/modu..
2014-12-01 [df761e3] Alvaro..: Move security_label test
-->
<para>
Move <application>dummy_seclabel</>, <application>test_shm_mq</>,
<application>test_parser</>, and <application>worker_spi</>
from <filename>contrib</> to <filename>src/test/modules</>
(&Aacute;lvaro Herrera)
</para>
<para>
These modules are only meant for server testing, so they do not need
to be built or installed when packaging <productname>PostgreSQL</>.
</para>
</listitem>
</itemizedlist>
</sect3>
</sect2>
</sect1>