|
|
|
@ -1,6 +1,463 @@ |
|
|
|
|
<!-- doc/src/sgml/release-9.6.sgml --> |
|
|
|
|
<!-- See header comment in release.sgml about typical markup --> |
|
|
|
|
|
|
|
|
|
<sect1 id="release-9-6-7"> |
|
|
|
|
<title>Release 9.6.7</title> |
|
|
|
|
|
|
|
|
|
<formalpara> |
|
|
|
|
<title>Release date:</title> |
|
|
|
|
<para>2018-02-08</para> |
|
|
|
|
</formalpara> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
This release contains a variety of fixes from 9.6.6. |
|
|
|
|
For information about new features in the 9.6 major release, see |
|
|
|
|
<xref linkend="release-9-6"/>. |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<sect2> |
|
|
|
|
<title>Migration to Version 9.6.7</title> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
A dump/restore is not required for those running 9.6.X. |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
However, |
|
|
|
|
if you use <filename>contrib/cube</filename>'s <literal>~></literal> |
|
|
|
|
operator, see the entry below about that. |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
Also, if you are upgrading from a version earlier than 9.6.6, |
|
|
|
|
see <xref linkend="release-9-6-6"/>. |
|
|
|
|
</para> |
|
|
|
|
</sect2> |
|
|
|
|
|
|
|
|
|
<sect2> |
|
|
|
|
<title>Changes</title> |
|
|
|
|
|
|
|
|
|
<itemizedlist> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Fix vacuuming of tuples that were updated while key-share locked |
|
|
|
|
(Andres Freund, Álvaro Herrera) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
In some cases <command>VACUUM</command> would fail to remove such |
|
|
|
|
tuples even though they are now dead, leading to assorted data |
|
|
|
|
corruption scenarios. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Ensure that vacuum will always clean up the pending-insertions list of |
|
|
|
|
a GIN index (Masahiko Sawada) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
This is necessary to ensure that dead index entries get removed. |
|
|
|
|
The old code got it backwards, allowing vacuum to skip the cleanup if |
|
|
|
|
some other process were running cleanup concurrently, thus risking |
|
|
|
|
invalid entries being left behind in the index. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Fix inadequate buffer locking in some LSN fetches (Jacob Champion, |
|
|
|
|
Asim Praveen, Ashwin Agrawal) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
These errors could result in misbehavior under concurrent load. |
|
|
|
|
The potential consequences have not been characterized fully. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Fix incorrect query results from cases involving flattening of |
|
|
|
|
subqueries whose outputs are used in <literal>GROUPING SETS</literal> |
|
|
|
|
(Heikki Linnakangas) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Avoid unnecessary failure in a query on an inheritance tree that |
|
|
|
|
occurs concurrently with some child table being removed from the tree |
|
|
|
|
by <command>ALTER TABLE NO INHERIT</command> (Tom Lane) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Fix spurious deadlock failures when multiple sessions are |
|
|
|
|
running <command>CREATE INDEX CONCURRENTLY</command> (Jeff Janes) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Fix failures when an inheritance tree contains foreign child tables |
|
|
|
|
(Etsuro Fujita) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
A mix of regular and foreign tables in an inheritance tree resulted in |
|
|
|
|
creation of incorrect plans for <command>UPDATE</command> |
|
|
|
|
and <command>DELETE</command> queries. This led to visible failures in |
|
|
|
|
some cases, notably when there are row-level triggers on a foreign |
|
|
|
|
child table. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Repair failure with correlated sub-<literal>SELECT</literal> |
|
|
|
|
inside <literal>VALUES</literal> inside a <literal>LATERAL</literal> |
|
|
|
|
subquery (Tom Lane) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Fix <quote>could not devise a query plan for the given query</quote> |
|
|
|
|
planner failure for some cases involving nested <literal>UNION |
|
|
|
|
ALL</literal> inside a lateral subquery (Tom Lane) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Fix logical decoding to correctly clean up disk files for crashed |
|
|
|
|
transactions (Atsushi Torikoshi) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
Logical decoding may spill WAL records to disk for transactions |
|
|
|
|
generating many WAL records. Normally these files are cleaned up |
|
|
|
|
after the transaction's commit or abort record arrives; but if |
|
|
|
|
no such record is ever seen, the removal code misbehaved. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Fix walsender timeout failure and failure to respond to interrupts |
|
|
|
|
when processing a large transaction (Petr Jelinek) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Fix <function>has_sequence_privilege()</function> to |
|
|
|
|
support <literal>WITH GRANT OPTION</literal> tests, |
|
|
|
|
as other privilege-testing functions do (Joe Conway) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
In databases using UTF8 encoding, ignore any XML declaration that |
|
|
|
|
asserts a different encoding (Pavel Stehule, Noah Misch) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
We always store XML strings in the database encoding, so allowing |
|
|
|
|
libxml to act on a declaration of another encoding gave wrong results. |
|
|
|
|
In encodings other than UTF8, we don't promise to support non-ASCII |
|
|
|
|
XML data anyway, so retain the previous behavior for bug compatibility. |
|
|
|
|
This change affects only <function>xpath()</function> and related |
|
|
|
|
functions; other XML code paths already acted this way. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Provide for forward compatibility with future minor protocol versions |
|
|
|
|
(Robert Haas, Badrul Chowdhury) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
Up to now, <productname>PostgreSQL</productname> servers simply |
|
|
|
|
rejected requests to use protocol versions newer than 3.0, so that |
|
|
|
|
there was no functional difference between the major and minor parts |
|
|
|
|
of the protocol version number. Allow clients to request versions 3.x |
|
|
|
|
without failing, sending back a message showing that the server only |
|
|
|
|
understands 3.0. This makes no difference at the moment, but |
|
|
|
|
back-patching this change should allow speedier introduction of future |
|
|
|
|
minor protocol upgrades. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Cope with failure to start a parallel worker process |
|
|
|
|
(Amit Kapila, Robert Haas) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
Parallel query previously tended to hang indefinitely if a worker |
|
|
|
|
could not be started, as the result of <literal>fork()</literal> |
|
|
|
|
failure or other low-probability problems. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Fix collection of <command>EXPLAIN</command> statistics from parallel |
|
|
|
|
workers (Amit Kapila, Thomas Munro) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Avoid unsafe alignment assumptions when working |
|
|
|
|
with <type>__int128</type> (Tom Lane) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
Typically, compilers assume that <type>__int128</type> variables are |
|
|
|
|
aligned on 16-byte boundaries, but our memory allocation |
|
|
|
|
infrastructure isn't prepared to guarantee that, and increasing the |
|
|
|
|
setting of MAXALIGN seems infeasible for multiple reasons. Adjust the |
|
|
|
|
code to allow use of <type>__int128</type> only when we can tell the |
|
|
|
|
compiler to assume lesser alignment. The only known symptom of this |
|
|
|
|
problem so far is crashes in some parallel aggregation queries. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Prevent stack-overflow crashes when planning extremely deeply |
|
|
|
|
nested set operations |
|
|
|
|
(<literal>UNION</literal>/<literal>INTERSECT</literal>/<literal>EXCEPT</literal>) |
|
|
|
|
(Tom Lane) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Fix null-pointer crashes for some types of LDAP URLs appearing |
|
|
|
|
in <filename>pg_hba.conf</filename> (Thomas Munro) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Fix sample <function>INSTR()</function> functions in the PL/pgSQL |
|
|
|
|
documentation (Yugo Nagata, Tom Lane) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
These functions are stated to |
|
|
|
|
be <trademark class="registered">Oracle</trademark> compatible, but |
|
|
|
|
they weren't exactly. In particular, there was a discrepancy in the |
|
|
|
|
interpretation of a negative third parameter: Oracle thinks that a |
|
|
|
|
negative value indicates the last place where the target substring can |
|
|
|
|
begin, whereas our functions took it as the last place where the |
|
|
|
|
target can end. Also, Oracle throws an error for a zero or negative |
|
|
|
|
fourth parameter, whereas our functions returned zero. |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
The sample code has been adjusted to match Oracle's behavior more |
|
|
|
|
precisely. Users who have copied this code into their applications |
|
|
|
|
may wish to update their copies. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Fix <application>pg_dump</application> to make ACL (permissions), |
|
|
|
|
comment, and security label entries reliably identifiable in archive |
|
|
|
|
output formats (Tom Lane) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
The <quote>tag</quote> portion of an ACL archive entry was usually |
|
|
|
|
just the name of the associated object. Make it start with the object |
|
|
|
|
type instead, bringing ACLs into line with the convention already used |
|
|
|
|
for comment and security label archive entries. Also, fix the |
|
|
|
|
comment and security label entries for the whole database, if present, |
|
|
|
|
to make their tags start with <literal>DATABASE</literal> so that they |
|
|
|
|
also follow this convention. This prevents false matches in code that |
|
|
|
|
tries to identify large-object-related entries by seeing if the tag |
|
|
|
|
starts with <literal>LARGE OBJECT</literal>. That could have resulted |
|
|
|
|
in misclassifying entries as data rather than schema, with undesirable |
|
|
|
|
results in a schema-only or data-only dump. |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
Note that this change has user-visible results in the output |
|
|
|
|
of <command>pg_restore --list</command>. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Rename <application>pg_rewind</application>'s |
|
|
|
|
<function>copy_file_range</function> function to avoid conflict |
|
|
|
|
with new Linux system call of that name (Andres Freund) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
This change prevents build failures with newer glibc versions. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
In <application>ecpg</application>, detect indicator arrays that do |
|
|
|
|
not have the correct length and report an error (David Rader) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Change the behavior of <filename>contrib/cube</filename>'s |
|
|
|
|
<type>cube</type> <literal>~></literal> <type>int</type> |
|
|
|
|
operator to make it compatible with KNN search (Alexander Korotkov) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
The meaning of the second argument (the dimension selector) has been |
|
|
|
|
changed to make it predictable which value is selected even when |
|
|
|
|
dealing with cubes of varying dimensionalities. |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
This is an incompatible change, but since the point of the operator |
|
|
|
|
was to be used in KNN searches, it seems rather useless as-is. |
|
|
|
|
After installing this update, any expression indexes or materialized |
|
|
|
|
views using this operator will need to be reindexed/refreshed. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Avoid triggering a libc assertion |
|
|
|
|
in <filename>contrib/hstore</filename>, due to use |
|
|
|
|
of <function>memcpy()</function> with equal source and destination |
|
|
|
|
pointers (Tomas Vondra) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Fix incorrect display of tuples' null bitmaps |
|
|
|
|
in <filename>contrib/pageinspect</filename> (Maksim Milyutin) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
In <filename>contrib/postgres_fdw</filename>, avoid |
|
|
|
|
<quote>outer pathkeys do not match mergeclauses</quote> |
|
|
|
|
planner error when constructing a plan involving a remote join |
|
|
|
|
(Robert Haas) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Provide modern examples of how to auto-start Postgres on macOS |
|
|
|
|
(Tom Lane) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
The scripts in <filename>contrib/start-scripts/osx</filename> use |
|
|
|
|
infrastructure that's been deprecated for over a decade, and which no |
|
|
|
|
longer works at all in macOS releases of the last couple of years. |
|
|
|
|
Add a new subdirectory <filename>contrib/start-scripts/macos</filename> |
|
|
|
|
containing scripts that use the newer <application>launchd</application> |
|
|
|
|
infrastructure. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Fix incorrect selection of configuration-specific libraries for |
|
|
|
|
OpenSSL on Windows (Andrew Dunstan) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Support linking to MinGW-built versions of libperl (Noah Misch) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
This allows building PL/Perl with some common Perl distributions for |
|
|
|
|
Windows. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Fix MSVC build to test whether 32-bit libperl |
|
|
|
|
needs <literal>-D_USE_32BIT_TIME_T</literal> (Noah Misch) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
Available Perl distributions are inconsistent about what they expect, |
|
|
|
|
and lack any reliable means of reporting it, so resort to a build-time |
|
|
|
|
test on what the library being used actually does. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
On Windows, install the crash dump handler earlier in postmaster |
|
|
|
|
startup (Takayuki Tsunakawa) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
This may allow collection of a core dump for some early-startup |
|
|
|
|
failures that did not produce a dump before. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
On Windows, avoid encoding-conversion-related crashes when emitting |
|
|
|
|
messages very early in postmaster startup (Takayuki Tsunakawa) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Use our existing Motorola 68K spinlock code on OpenBSD as |
|
|
|
|
well as NetBSD (David Carlier) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Add support for spinlocks on Motorola 88K (David Carlier) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Update time zone data files to <application>tzdata</application> |
|
|
|
|
release 2018c for DST law changes in Brazil, Sao Tome and Principe, |
|
|
|
|
plus historical corrections for Bolivia, Japan, and South Sudan. |
|
|
|
|
The <literal>US/Pacific-New</literal> zone has been removed (it was |
|
|
|
|
only an alias for <literal>America/Los_Angeles</literal> anyway). |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
</itemizedlist> |
|
|
|
|
|
|
|
|
|
</sect2> |
|
|
|
|
</sect1> |
|
|
|
|
|
|
|
|
|
<sect1 id="release-9-6-6"> |
|
|
|
|
<title>Release 9.6.6</title> |
|
|
|
|
|
|
|
|
|