diff --git a/doc/src/sgml/release-11.sgml b/doc/src/sgml/release-11.sgml index 6d46a383ad..c6a13e98bd 100644 --- a/doc/src/sgml/release-11.sgml +++ b/doc/src/sgml/release-11.sgml @@ -1,6 +1,982 @@ + + Release 11.9 + + + Release date: + 2020-08-13 + + + + This release contains a variety of fixes from 11.8. + For information about new features in major release 11, see + . + + + + Migration to Version 11.9 + + + A dump/restore is not required for those running 11.X. + + + + However, if you are upgrading from a version earlier than 11.6, + see . + + + + + Changes + + + + + + + Fix edge cases in partition pruning (Etsuro Fujita, Dmitry Dolgov) + + + + When there are multiple partition key columns, generation of pruning + tests could misbehave if some columns had no + constraining WHERE clauses or multiple + constraining clauses. This could lead to server crashes, incorrect + query results, or assertion failures. + + + + + + + Fix construction of parameterized BitmapAnd and BitmapOr index scans + on the inside of partition-wise nestloop joins (Tom Lane) + + + + A plan in which such a scan needed to use a value from the outside + of the join would usually crash at execution. + + + + + + + In logical replication walsender, fix failure to send feedback + messages after sending a keepalive message (Álvaro Herrera) + + + + This is a relatively minor problem when using built-in logical + replication, because the built-in walreceiver will send a feedback + reply (which clears the incorrect state) fairly frequently anyway. + But with some other replication systems, such + as pglogical, it causes significant + performance issues. + + + + + + + Fix firing of column-specific UPDATE triggers in + logical replication subscribers (Tom Lane) + + + + The code neglected to account for the possibility of column numbers + being different between the publisher and subscriber tables, so that + if those were indeed different, wrong decisions might be made about + which triggers to fire. + + + + + + + Update oldest xmin and LSN values + during pg_replication_slot_advance() (Michael + Paquier) + + + + This function previously failed to do that, possibly preventing + resource cleanup (such as removal of no-longer-needed WAL segments) + after manual advancement of a replication slot. + + + + + + + Fix slow execution of ts_headline() (Tom Lane) + + + + The phrase-search fix added in our previous set of minor releases + could cause ts_headline() to take unreasonable + amounts of time for long documents; to make matters worse, the query + was not cancellable within the troublesome loop. + + + + + + + Ensure the repeat() function can be interrupted + by query cancel (Joe Conway) + + + + + + + Fix pg_current_logfile() to not include a + carriage return (\r) in its result on Windows + (Tom Lane) + + + + + + + Ensure that pg_read_file() and related + functions read until EOF is reached (Joe Conway) + + + + Previously, if not given a specific data length to read, these + functions would stop at whatever file length was reported + by stat(). That's unhelpful for pipes and + other sorts of virtual files. + + + + + + + Fix mis-handling of NaN inputs during parallel + aggregation on numeric-type columns (Tom Lane) + + + + If some partial aggregation workers found only NaNs + while others found only non-NaNs, the results + were combined incorrectly, possibly leading to the wrong overall + result (i.e., not NaN when it should be). + + + + + + + Reject time-of-day values greater than 24 hours (Tom Lane) + + + + The intention of the datetime input code is to + allow 24:00:00 or + equivalently 23:59:60, but no larger value. + However, the range check was miscoded so that it would + accept 23:59:60.nnn with + nonzero fractional-second nnn. In + timestamp values this would result in wrapping into the first second + of the next day. In time and timetz + values, the stored value would actually be more than 24 hours, + causing dump/reload failures and possibly other misbehavior. + + + + + + + Undo double-quoting of index names in EXPLAIN's + non-text output formats (Tom Lane, Euler Taveira) + + + + + + + Fix EXPLAIN's accounting for resource usage, + particularly buffer accesses, in parallel workers in a plan + using Gather Merge nodes + (Jehan-Guillaume de Rorthais) + + + + + + + Fix timing of constraint revalidation in ALTER + TABLE (David Rowley) + + + + If ALTER TABLE needs to fully rewrite the table's + contents (for example, due to change of a column's data type) and + also needs to scan the table to re-validate foreign keys + or CHECK constraints, it sometimes did things in + the wrong order, leading to odd errors such as could not read + block 0 in file "base/nnnnn/nnnnn": read only 0 of 8192 bytes. + + + + + + + Work around incorrect not-null markings for + pg_subscription.subslotname + and pg_subscription_rel.srsublsn + (Tom Lane) + + + + The bootstrap catalog data incorrectly marks these two catalog + columns as always non-null. There's no easy way to correct that + mistake in existing installations (though v13 and later will have + the correct markings). The main place that depends on that marking + being correct is JIT-enabled tuple deconstruction, so teach it to + explicitly ignore the marking for these two columns. Also adjust + some C code that accessed srsublsn without + checking to see if it's null; a crash from that is improbable but + perhaps not impossible. + + + + + + + Cope with LATERAL references in restriction + clauses attached to an un-flattened sub-SELECT in + the FROM clause (Tom Lane) + + + + This oversight could result in assertion failures or crashes at + query execution. + + + + + + + Avoid believing that a never-analyzed foreign table has zero tuples + (Tom Lane) + + + + This primarily affected the planner's estimate of the number of + groups that would be obtained by GROUP BY. + + + + + + + Remove bogus warning about leftover placeholder tuple + in BRIN index de-summarization (Álvaro Herrera) + + + + The case can occur legitimately after a cancelled vacuum, so warning + about it is overly noisy. + + + + + + + Fix selection of tablespaces for shared fileset + temporary files (Magnus Hagander, Tom Lane) + + + + If temp_tablespaces is empty or explicitly names + the database's primary tablespace, such files got placed into + the pg_default tablespace rather than the + database's primary tablespace as expected. + + + + + + + Fix corner-case error in masking of SP-GiST index pages during WAL + consistency checking (Alexander Korotkov) + + + + This could cause false failure reports + when wal_consistency_checking is enabled. + + + + + + + Improve error handling in the server's buffile + module (Thomas Munro) + + + + Fix some cases where I/O errors were indistinguishable from reaching + EOF, or were not reported at all. Also add details such as block + numbers and byte counts where appropriate. + + + + + + + Fix conflict-checking anomalies in SERIALIZABLE + isolation mode (Peter Geoghegan) + + + + If a concurrently-inserted tuple was updated by a different + concurrent transaction, and neither tuple version was visible to the + current transaction's snapshot, serialization conflict checking + could draw the wrong conclusions about whether the tuple was relevant + to the results of the current transaction. This could allow a + serializable transaction to commit when it should have failed with a + serialization error. + + + + + + + Avoid repeated marking of dead btree index entries as dead (Masahiko + Sawada) + + + + While functionally harmless, this led to useless WAL traffic when + checksums are enabled or wal_log_hints is on. + + + + + + + Avoid trouble during cleanup of a non-exclusive backup when JIT + compilation has been activated during the backup (Robert Haas) + + + + + + + Fix failure of some code paths to acquire the correct lock before + modifying pg_control (Nathan Bossart, Fujii + Masao) + + + + This oversight could allow pg_control to be + written out with an inconsistent checksum, possibly causing trouble + later, including inability to restart the database if it crashed + before the next pg_control update. + + + + + + + Fix errors in currtid() + and currtid2() (Michael Paquier) + + + + These functions (which are undocumented and used only by ancient + versions of the ODBC driver) contained coding errors that could + result in crashes, or in confusing error messages such as could + not open file when applied to a relation having no storage. + + + + + + + Avoid calling elog() + or palloc() while holding a spinlock (Michael + Paquier, Tom Lane) + + + + Logic associated with replication slots had several violations of + this coding rule. While the odds of trouble are quite low, an error + in the called function would lead to a stuck spinlock. + + + + + + + Fix assertion in logical replication subscriber to allow use + of REPLICA IDENTITY FULL (Euler Taveira) + + + + This was just an incorrect assertion, so it has no impact on + standard production builds. + + + + + + + Report out-of-disk-space errors properly + in pg_dump + and pg_basebackup (Justin Pryzby, Tom + Lane, Álvaro Herrera) + + + + Some code paths could produce silly reports like could not + write file: Success. + + + + + + + Fix parallel restore of tables having both table-level privileges + and per-column privileges (Tom Lane) + + + + The table-level privilege grants have to be applied first, but a + parallel restore did not reliably order them that way; this could + lead to tuple concurrently updated errors, or to + disappearance of some per-column privilege grants. The fix for this + is to include dependency links between such entries in the archive + file, meaning that a new dump has to be taken with a + corrected pg_dump to ensure that the + problem will not recur. + + + + + + + Ensure that pg_upgrade runs + with vacuum_defer_cleanup_age set to zero in the + target cluster (Bruce Momjian) + + + + If the target cluster's configuration has been modified to + set vacuum_defer_cleanup_age to a nonzero value, + that prevented freezing of the system catalogs from working properly, + which caused the upgrade to fail in confusing ways. Ensure that any + such setting is overridden for the duration of the upgrade. + + + + + + + Fix pg_recvlogical to drain pending + messages before exiting (Noah Misch) + + + + Without this, the replication sender might detect a send failure and + exit without making the expected final update to the replication + slot's LSN position. That led to re-transmitting data after the + next connection. It was also possible to miss error messages sent + after the last data that pg_recvlogical + wants to consume. + + + + + + + Fix pg_rewind's handling of just-deleted + files in the source data directory (Justin Pryzby, Michael Paquier) + + + + When working with an on-line source database, concurrent file + deletions are possible, but pg_rewind + would get confused if deletion happened between seeing a file's + directory entry and examining it with stat(). + + + + + + + Make pg_test_fsync use binary I/O mode on + Windows (Michael Paquier) + + + + Previously it wrote the test file in text mode, which is not an + accurate reflection of PostgreSQL's + actual usage. + + + + + + + Fix contrib/amcheck to not complain about + deleted index pages that are empty (Alexander Korotkov) + + + + This state of affairs is normal during WAL replay. + + + + + + + Fix failure to initialize local state correctly + in contrib/dblink (Joe Conway) + + + + With the right combination of circumstances, this could lead to + dblink_close() issuing an unexpected + remote COMMIT. + + + + + + + Fix contrib/pgcrypto's misuse + of deflate() (Tom Lane) + + + + The pgp_sym_encrypt functions could produce + incorrect compressed data due to mishandling + of zlib's API requirements. We have no + reports of this error manifesting with + stock zlib, but it can be seen when using + IBM's zlibNX implementation. + + + + + + + Fix corner case in decompression logic + in contrib/pgcrypto's + pgp_sym_decrypt functions (Kyotaro Horiguchi, + Michael Paquier) + + + + A compressed stream can validly end with an empty packet, but the + decompressor failed to handle this and would complain about corrupt + data. + + + + + + + Use POSIX-standard strsignal() in place of the + BSD-ish sys_siglist[] (Tom Lane) + + + + This avoids build failures with very recent versions + of glibc. + + + + + + + Support building our NLS code with Microsoft Visual Studio 2015 or + later (Juan José Santamaría Flecha, Davinder Singh, + Amit Kapila) + + + + + + + Avoid possible failure of our MSVC install script when there is a + file named configure several levels above the + source code tree (Arnold Müller) + + + + This could confuse some logic that looked + for configure to identify the top level of the + source tree. + + + + + + + + Release 11.8