|
|
|
|
@ -1,6 +1,688 @@ |
|
|
|
|
<!-- doc/src/sgml/release-9.6.sgml --> |
|
|
|
|
<!-- See header comment in release.sgml about typical markup --> |
|
|
|
|
|
|
|
|
|
<sect1 id="release-9-6-11"> |
|
|
|
|
<title>Release 9.6.11</title> |
|
|
|
|
|
|
|
|
|
<formalpara> |
|
|
|
|
<title>Release date:</title> |
|
|
|
|
<para>2018-11-08</para> |
|
|
|
|
</formalpara> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
This release contains a variety of fixes from 9.6.10. |
|
|
|
|
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.11</title> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
A dump/restore is not required for those running 9.6.X. |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
However, if you are upgrading from a version earlier than 9.6.9, |
|
|
|
|
see <xref linkend="release-9-6-9"/>. |
|
|
|
|
</para> |
|
|
|
|
</sect2> |
|
|
|
|
|
|
|
|
|
<sect2> |
|
|
|
|
<title>Changes</title> |
|
|
|
|
|
|
|
|
|
<itemizedlist> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Fix corner-case failures |
|
|
|
|
in <function>has_<replaceable>foo</replaceable>_privilege()</function> |
|
|
|
|
family of functions (Tom Lane) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
Return NULL rather than throwing an error when an invalid object OID |
|
|
|
|
is provided. Some of these functions got that right already, but not |
|
|
|
|
all. <function>has_column_privilege()</function> was additionally |
|
|
|
|
capable of crashing on some platforms. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Avoid O(N^2) slowdown in regular expression match/split functions on |
|
|
|
|
long strings (Andrew Gierth) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Fix parsing of standard multi-character operators that are immediately |
|
|
|
|
followed by a comment or <literal>+</literal> or <literal>-</literal> |
|
|
|
|
(Andrew Gierth) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
This oversight could lead to parse errors, or to incorrect assignment |
|
|
|
|
of precedence. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Avoid O(N^3) slowdown in lexer for long strings |
|
|
|
|
of <literal>+</literal> or <literal>-</literal> characters |
|
|
|
|
(Andrew Gierth) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Fix mis-execution of SubPlans when the outer query is being scanned |
|
|
|
|
backwards (Andrew Gierth) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Fix failure of <command>UPDATE/DELETE ... WHERE CURRENT OF ...</command> |
|
|
|
|
after rewinding the referenced cursor (Tom Lane) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
A cursor that scans multiple relations (particularly an inheritance |
|
|
|
|
tree) could produce wrong behavior if rewound to an earlier relation. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Fix <function>EvalPlanQual</function> to handle conditionally-executed |
|
|
|
|
InitPlans properly (Andrew Gierth, Tom Lane) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
This resulted in hard-to-reproduce crashes or wrong answers in |
|
|
|
|
concurrent updates, if they contained code such as an uncorrelated |
|
|
|
|
sub-<literal>SELECT</literal> inside a <literal>CASE</literal> |
|
|
|
|
construct. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Fix character-class checks to not fail on Windows for Unicode |
|
|
|
|
characters above U+FFFF (Tom Lane, Kenji Uno) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
This bug affected full-text-search operations, as well |
|
|
|
|
as <filename>contrib/ltree</filename> |
|
|
|
|
and <filename>contrib/pg_trgm</filename>. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Disallow pushing sub-<literal>SELECT</literal>s containing window |
|
|
|
|
functions, <literal>LIMIT</literal>, or <literal>OFFSET</literal> to |
|
|
|
|
parallel workers (Amit Kapila) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
Such cases could result in inconsistent behavior due to different |
|
|
|
|
workers getting different answers, as a result of indeterminacy |
|
|
|
|
due to row-ordering variations. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Ensure that sequences owned by a foreign table are processed |
|
|
|
|
by <literal>ALTER OWNER</literal> on the table (Peter Eisentraut) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
The ownership change should propagate to such sequences as well, but |
|
|
|
|
this was missed for foreign tables. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Ensure that the server will process |
|
|
|
|
already-received <literal>NOTIFY</literal> |
|
|
|
|
and <literal>SIGTERM</literal> interrupts before waiting for client |
|
|
|
|
input (Jeff Janes, Tom Lane) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Fix over-allocation of space for <function>array_out()</function>'s |
|
|
|
|
result string (Keiichi Hirobe) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Fix memory leak in repeated SP-GiST index scans (Tom Lane) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
This is only known to amount to anything significant in cases where |
|
|
|
|
an exclusion constraint using SP-GiST receives many new index entries |
|
|
|
|
in a single command. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Ensure that <function>ApplyLogicalMappingFile()</function> closes the |
|
|
|
|
mapping file when done with it (Tomas Vondra) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
Previously, the file descriptor was leaked, eventually resulting in |
|
|
|
|
failures during logical decoding. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Fix logical decoding to handle cases where a mapped catalog table is |
|
|
|
|
repeatedly rewritten, e.g. by <literal>VACUUM FULL</literal> |
|
|
|
|
(Andres Freund) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Prevent starting the server with <varname>wal_level</varname> set |
|
|
|
|
to too low a value to support an existing replication slot (Andres |
|
|
|
|
Freund) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Avoid crash if a utility command causes infinite recursion (Tom Lane) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
When initializing a hot standby, cope with duplicate XIDs caused by |
|
|
|
|
two-phase transactions on the master |
|
|
|
|
(Michael Paquier, Konstantin Knizhnik) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Fix event triggers to handle nested <command>ALTER TABLE</command> |
|
|
|
|
commands (Michael Paquier, Álvaro Herrera) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Propagate parent process's transaction and statement start timestamps |
|
|
|
|
to parallel workers (Konstantin Knizhnik) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
This prevents misbehavior of functions such |
|
|
|
|
as <function>transaction_timestamp()</function> when executed in a |
|
|
|
|
worker. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Fix transfer of expanded datums to parallel workers so that alignment |
|
|
|
|
is preserved, preventing crashes on alignment-picky platforms |
|
|
|
|
(Tom Lane, Amit Kapila) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Fix WAL file recycling logic to work correctly on standby servers |
|
|
|
|
(Michael Paquier) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
Depending on the setting of <varname>archive_mode</varname>, a standby |
|
|
|
|
might fail to remove some WAL files that could be removed. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Fix handling of commit-timestamp tracking during recovery |
|
|
|
|
(Masahiko Sawasa, Michael Paquier) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
If commit timestamp tracking has been turned on or off, recovery might |
|
|
|
|
fail due to trying to fetch the commit timestamp for a transaction |
|
|
|
|
that did not record it. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Randomize the <function>random()</function> seed in bootstrap and |
|
|
|
|
standalone backends, and in <application>initdb</application> |
|
|
|
|
(Noah Misch) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
The main practical effect of this change is that it avoids a scenario |
|
|
|
|
where <application>initdb</application> might mistakenly conclude that |
|
|
|
|
POSIX shared memory is not available, due to name collisions caused by |
|
|
|
|
always using the same random seed. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Allow DSM allocation to be interrupted (Chris Travers) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Avoid failure in a parallel worker when loading an extension that |
|
|
|
|
tries to access system caches within its init function (Thomas Munro) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
We don't consider that to be good extension coding practice, but it |
|
|
|
|
mostly worked before parallel query, so continue to support it for |
|
|
|
|
now. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Properly handle turning <varname>full_page_writes</varname> on |
|
|
|
|
dynamically (Kyotaro Horiguchi) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Fix possible crash due to double <function>free()</function> during |
|
|
|
|
SP-GiST rescan (Andrew Gierth) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Avoid possible buffer overrun when replaying GIN page recompression |
|
|
|
|
from WAL (Alexander Korotkov, Sivasubramanian Ramasubramanian) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Fix missed fsync of a replication slot's directory (Konstantin |
|
|
|
|
Knizhnik, Michael Paquier) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Fix unexpected timeouts when |
|
|
|
|
using <varname>wal_sender_timeout</varname> on a slow server |
|
|
|
|
(Noah Misch) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Ensure that hot standby processes use the correct WAL consistency |
|
|
|
|
point (Alexander Kukushkin, Michael Paquier) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
This prevents possible misbehavior just after a standby server has |
|
|
|
|
reached a consistent database state during WAL replay. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Ensure background workers are stopped properly when the postmaster |
|
|
|
|
receives a fast-shutdown request before completing database startup |
|
|
|
|
(Alexander Kukushkin) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Update the free space map during WAL replay of page all-visible/frozen |
|
|
|
|
flag changes (Álvaro Herrera) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
Previously we were not careful about this, reasoning that the FSM is |
|
|
|
|
not critical data anyway. However, if it's sufficiently out of date, |
|
|
|
|
that can result in significant performance degradation after a standby |
|
|
|
|
has been promoted to primary. The FSM will eventually be healed by |
|
|
|
|
updates, but we'd like it to be good sooner, so work harder at |
|
|
|
|
maintaining it during WAL replay. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Avoid premature release of parallel-query resources when query end or |
|
|
|
|
tuple count limit is reached (Amit Kapila) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
It's only okay to shut down the executor at this point if the caller |
|
|
|
|
cannot demand backwards scan afterwards. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Don't run atexit callbacks when servicing <literal>SIGQUIT</literal> |
|
|
|
|
(Heikki Linnakangas) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Don't record foreign-server user mappings as members of extensions |
|
|
|
|
(Tom Lane) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
If <command>CREATE USER MAPPING</command> is executed in an extension |
|
|
|
|
script, an extension dependency was created for the user mapping, |
|
|
|
|
which is unexpected. Roles can't be extension members, so user |
|
|
|
|
mappings shouldn't be either. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Make syslogger more robust against failures in opening CSV log files |
|
|
|
|
(Tom Lane) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Fix <application>psql</application>, as well as documentation |
|
|
|
|
examples, to call <function>PQconsumeInput()</function> before |
|
|
|
|
each <function>PQnotifies()</function> call (Tom Lane) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
This fixes cases in which <application>psql</application> would not |
|
|
|
|
report receipt of a <literal>NOTIFY</literal> message until after the |
|
|
|
|
next command. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Fix possible inconsistency in <application>pg_dump</application>'s |
|
|
|
|
sorting of dissimilar object names (Jacob Champion) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Ensure that <application>pg_restore</application> will schema-qualify |
|
|
|
|
the table name when |
|
|
|
|
emitting <literal>DISABLE</literal>/<literal>ENABLE TRIGGER</literal> |
|
|
|
|
commands (Tom Lane) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
This avoids failures due to the new policy of running restores with |
|
|
|
|
restrictive search path. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Fix <application>pg_upgrade</application> to handle event triggers in |
|
|
|
|
extensions correctly (Haribabu Kommi) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
<application>pg_upgrade</application> failed to preserve an event |
|
|
|
|
trigger's extension-membership status. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Fix <application>pg_upgrade</application>'s cluster state check to |
|
|
|
|
work correctly on a standby server (Bruce Momjian) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Enforce type <type>cube</type>'s dimension limit in |
|
|
|
|
all <filename>contrib/cube</filename> functions (Andrey Borodin) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
Previously, some cube-related functions could construct values that |
|
|
|
|
would be rejected by <function>cube_in()</function>, leading to |
|
|
|
|
dump/reload failures. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
In <filename>contrib/postgres_fdw</filename>, don't try to ship a |
|
|
|
|
variable-free <literal>ORDER BY</literal> clause to the remote server |
|
|
|
|
(Andrew Gierth) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Fix <filename>contrib/unaccent</filename>'s |
|
|
|
|
<function>unaccent()</function> function to use |
|
|
|
|
the <literal>unaccent</literal> text search dictionary that is in the |
|
|
|
|
same schema as the function (Tom Lane) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
Previously it tried to look up the dictionary using the search path, |
|
|
|
|
which could fail if the search path has a restrictive value. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Fix build problems on macOS 10.14 (Mojave) (Tom Lane) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
Adjust <application>configure</application> to add |
|
|
|
|
an <option>-isysroot</option> switch to <varname>CPPFLAGS</varname>; |
|
|
|
|
without this, PL/Perl and PL/Tcl fail to configure or build on macOS |
|
|
|
|
10.14. The specific sysroot used can be overridden at configure time |
|
|
|
|
or build time by setting the <varname>PG_SYSROOT</varname> variable in |
|
|
|
|
the arguments of <application>configure</application> |
|
|
|
|
or <application>make</application>. |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
It is now recommended that Perl-related extensions |
|
|
|
|
write <literal>$(perl_includespec)</literal> rather |
|
|
|
|
than <literal>-I$(perl_archlibexp)/CORE</literal> in their compiler |
|
|
|
|
flags. The latter continues to work on most platforms, but not recent |
|
|
|
|
macOS. |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
Also, it should no longer be necessary to |
|
|
|
|
specify <option>--with-tclconfig</option> manually to get PL/Tcl to |
|
|
|
|
build on recent macOS releases. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Fix MSVC build and regression-test scripts to work on recent Perl |
|
|
|
|
versions (Andrew Dunstan) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
Perl no longer includes the current directory in its search path |
|
|
|
|
by default; work around that. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
On Windows, allow the regression tests to be run by an Administrator |
|
|
|
|
account (Andrew Dunstan) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
To do this safely, <application>pg_regress</application> now gives up |
|
|
|
|
any such privileges at startup. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Allow btree comparison functions to return <literal>INT_MIN</literal> |
|
|
|
|
(Tom Lane) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
Up to now, we've forbidden datatype-specific comparison functions from |
|
|
|
|
returning <literal>INT_MIN</literal>, which allows callers to invert |
|
|
|
|
the sort order just by negating the comparison result. However, this |
|
|
|
|
was never safe for comparison functions that directly return the |
|
|
|
|
result of <function>memcmp()</function>, <function>strcmp()</function>, |
|
|
|
|
etc, as POSIX doesn't place any such restriction on those functions. |
|
|
|
|
At least some recent versions of <function>memcmp()</function> can |
|
|
|
|
return <literal>INT_MIN</literal>, causing incorrect sort ordering. |
|
|
|
|
Hence, we've removed this restriction. Callers must now use |
|
|
|
|
the <literal>INVERT_COMPARE_RESULT()</literal> macro if they wish to |
|
|
|
|
invert the sort order. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Fix recursion hazard in shared-invalidation message processing |
|
|
|
|
(Tom Lane) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
This error could, for example, result in failure to access a system |
|
|
|
|
catalog or index that had just been processed by <command>VACUUM |
|
|
|
|
FULL</command>. |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
This change adds a new result code |
|
|
|
|
for <function>LockAcquire</function>, which might possibly affect |
|
|
|
|
external callers of that function, though only very unusual usage |
|
|
|
|
patterns would have an issue with it. The API |
|
|
|
|
of <function>LockAcquireExtended</function> is also changed. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Save and restore SPI's global variables |
|
|
|
|
during <function>SPI_connect()</function> |
|
|
|
|
and <function>SPI_finish()</function> (Chapman Flack, Tom Lane) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
This prevents possible interference when one SPI-using function calls |
|
|
|
|
another. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Avoid using potentially-under-aligned page buffers (Tom Lane) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
Invent new union types <type>PGAlignedBlock</type> |
|
|
|
|
and <type>PGAlignedXLogBlock</type>, and use these in place of plain |
|
|
|
|
char arrays, ensuring that the compiler can't place the buffer at a |
|
|
|
|
misaligned start address. This fixes potential core dumps on |
|
|
|
|
alignment-picky platforms, and may improve performance even on |
|
|
|
|
platforms that allow misalignment. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Make <filename>src/port/snprintf.c</filename> follow the C99 |
|
|
|
|
standard's definition of <function>snprintf()</function>'s result |
|
|
|
|
value (Tom Lane) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
On platforms where this code is used (mostly Windows), its pre-C99 |
|
|
|
|
behavior could lead to failure to detect buffer overrun, if the |
|
|
|
|
calling code assumed C99 semantics. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
When building on i386 with the <application>clang</application> |
|
|
|
|
compiler, require <option>-msse2</option> to be used (Andres Freund) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
This avoids problems with missed floating point overflow checks. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Fix <application>configure</application>'s detection of the result |
|
|
|
|
type of <function>strerror_r()</function> (Tom Lane) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
The previous coding got the wrong answer when building |
|
|
|
|
with <application>icc</application> on Linux (and perhaps in other |
|
|
|
|
cases), leading to <application>libpq</application> not returning |
|
|
|
|
useful error messages for system-reported errors. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Update time zone data files to <application>tzdata</application> |
|
|
|
|
release 2018g for DST law changes in Chile, Fiji, Morocco, and Russia |
|
|
|
|
(Volgograd), plus historical corrections for China, Hawaii, Japan, |
|
|
|
|
Macau, and North Korea. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
</itemizedlist> |
|
|
|
|
|
|
|
|
|
</sect2> |
|
|
|
|
</sect1> |
|
|
|
|
|
|
|
|
|
<sect1 id="release-9-6-10"> |
|
|
|
|
<title>Release 9.6.10</title> |
|
|
|
|
|
|
|
|
|
|