<!-- doc/src/sgml/release-9.1.sgml -->
<!-- See header comment in release.sgml about typical markup -->
+ <sect1 id="release-9-1-23">
+ <title>Release 9.1.23</title>
+
+ <note>
+ <title>Release Date</title>
+ <simpara>2016-08-11</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes from 9.1.22.
+ For information about new features in the 9.1 major release, see
+ <xref linkend="release-9-1">.
+ </para>
+
+ <para>
+ The <productname>PostgreSQL</> community will stop releasing updates
+ for the 9.1.X release series in September 2016.
+ Users are encouraged to update to a newer release branch soon.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 9.1.23</title>
+
+ <para>
+ A dump/restore is not required for those running 9.1.X.
+ </para>
+
+ <para>
+ However, if you are upgrading from a version earlier than 9.1.16,
+ see <xref linkend="release-9-1-16">.
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+ <itemizedlist>
+
+ <listitem>
+ <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>
+ <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>
+ <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>
+ <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>
+ <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>
+ <para>
+ Avoid canceling hot-standby queries during <command>VACUUM FREEZE</>
+ (Simon Riggs, Álvaro Herrera)
+ </para>
+
+ <para>
+ <command>VACUUM FREEZE</> on an otherwise-idle master server could
+ result in unnecessary cancellations of queries on its standby
+ servers.
+ </para>
+ </listitem>
+
+ <listitem>
+ <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>
+ <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>
+ <para>
+ Prevent autovacuum from starting multiple workers for the same shared
+ catalog (Á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>
+ <para>
+ Fix <filename>contrib/btree_gin</> to handle the smallest
+ possible <type>bigint</> value correctly (Peter Eisentraut)
+ </para>
+ </listitem>
+
+ <listitem>
+ <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>
+ <para>
+ Fix <application>ecpg</>'s code for <literal>unsigned long long</>
+ array elements (Michael Meskes)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Make <application>pg_basebackup</> accept <literal>-Z 0</> as
+ specifying no compression (Fujii Masao)
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+Author: Tom Lane <tgl@sss.pgh.pa.us>
+Branch: REL9_1_STABLE [d56c02f1a] 2016-06-19 13:45:03 -0400
+Branch: REL9_1_STABLE [354b3a3ac] 2016-06-19 14:01:17 -0400
+-->
+ <para>
+ Revert to the old heuristic timeout for <literal>pg_ctl start -w</>
+ (Tom Lane)
+ </para>
+
+ <para>
+ The new method adopted as of release 9.1.20 does not work
+ when <varname>silent_mode</> is enabled, so go back to the old way.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix makefiles' rule for building AIX shared libraries to be safe for
+ parallel make (Noah Misch)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix TAP tests and MSVC scripts to work when build directory's path
+ name contains spaces (Michael Paquier, Kyotaro Horiguchi)
+ </para>
+ </listitem>
+
+ <listitem>
+ <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>
+ <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>
+ <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-1-22">
<title>Release 9.1.22</title>
<!-- doc/src/sgml/release-9.2.sgml -->
<!-- See header comment in release.sgml about typical markup -->
+ <sect1 id="release-9-2-18">
+ <title>Release 9.2.18</title>
+
+ <note>
+ <title>Release Date</title>
+ <simpara>2016-08-11</simpara>
+ </note>
+
+ <para>
+ This release contains a variety of fixes from 9.2.17.
+ For information about new features in the 9.2 major release, see
+ <xref linkend="release-9-2">.
+ </para>
+
+ <sect2>
+ <title>Migration to Version 9.2.18</title>
+
+ <para>
+ A dump/restore is not required for those running 9.2.X.
+ </para>
+
+ <para>
+ However, if you are upgrading from a version earlier than 9.2.11,
+ see <xref linkend="release-9-2-11">.
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Changes</title>
+
+ <itemizedlist>
+
+ <listitem>
+ <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>
+ <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>
+ <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>
+ <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>
+ <para>
+ Avoid crash in <literal>postgres -C</> when the specified variable
+ has a null string value (Michael Paquier)
+ </para>
+ </listitem>
+
+ <listitem>
+ <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>
+ <para>
+ Avoid canceling hot-standby queries during <command>VACUUM FREEZE</>
+ (Simon Riggs, Álvaro Herrera)
+ </para>
+
+ <para>
+ <command>VACUUM FREEZE</> on an otherwise-idle master server could
+ result in unnecessary cancellations of queries on its standby
+ servers.
+ </para>
+ </listitem>
+
+ <listitem>
+ <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>
+ <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>
+ <para>
+ Prevent autovacuum from starting multiple workers for the same shared
+ catalog (Á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>
+ <para>
+ Prevent infinite loop in GiST index build for geometric columns
+ containing NaN component values (Tom Lane)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix <filename>contrib/btree_gin</> to handle the smallest
+ possible <type>bigint</> value correctly (Peter Eisentraut)
+ </para>
+ </listitem>
+
+ <listitem>
+ <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>
+ <para>
+ Fix <application>ecpg</>'s code for <literal>unsigned long long</>
+ array elements (Michael Meskes)
+ </para>
+ </listitem>
+
+ <listitem>
+ <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>
+ <para>
+ Make <application>pg_basebackup</> accept <literal>-Z 0</> as
+ specifying no compression (Fujii Masao)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix makefiles' rule for building AIX shared libraries to be safe for
+ parallel make (Noah Misch)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Fix TAP tests and MSVC scripts to work when build directory's path
+ name contains spaces (Michael Paquier, Kyotaro Horiguchi)
+ </para>
+ </listitem>
+
+ <listitem>
+ <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>
+ <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>
+ <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-2-17">
<title>Release 9.2.17</title>