diff --git a/doc/src/sgml/release-12.sgml b/doc/src/sgml/release-12.sgml index 337a7a28a7..577a5d7173 100644 --- a/doc/src/sgml/release-12.sgml +++ b/doc/src/sgml/release-12.sgml @@ -1,6 +1,1795 @@ + + Release 12.1 + + + Release date: + 2019-11-14 + + + + This release contains a variety of fixes from 12.0. + For information about new features in major release 12, see + . + + + + Migration to Version 12.1 + + + A dump/restore is not required for those running 12.X. + + + + + Changes + + + + + + + Fix crash when ALTER TABLE adds a column without + a default value along with making other changes that require a table + rewrite (Andres Freund) + + + + + + + Fix failure of ALTER TABLE SET with a custom + relation option (Michael Paquier) + + + + + + + Disallow changing a multiply-inherited column's type if not all + parent tables were changed (Tom Lane) + + + + Previously, this was allowed, whereupon queries on the + now-out-of-sync parent would fail. + + + + + + + Avoid failure if the same target table is specified twice in + an ANALYZE command inside a transaction block + (Tom Lane) + + + + + + + Fix lock handling in REINDEX CONCURRENTLY + (Michael Paquier) + + + + REINDEX CONCURRENTLY neglected to take a + session-level lock on the new index version, potentially allowing + other sessions to manipulate it too soon. + Also, a query-cancel or session-termination interrupt arriving at the + wrong time could result in failure to release the session-level + locks that REINDEX CONCURRENTLY does hold. + + + + + + + Avoid crash due to race condition when reporting the progress of + a CREATE INDEX CONCURRENTLY or REINDEX + CONCURRENTLY command (Álvaro Herrera) + + + + + + + Avoid creating duplicate dependency entries during REINDEX + CONCURRENTLY (Michael Paquier) + + + + This bug resulted in bloat in pg_depend, + but no worse consequences than that. + + + + + + + Prevent VACUUM from trying to freeze + an old multixact ID involving a still-running transaction + (Nathan Bossart, Jeremy Schneider) + + + + This case would lead to VACUUM failing until the + old transaction terminates. + + + + + + + Fix wrong type of slot error when trying + to CLUSTER on an expression index (Andres Freund) + + + + + + + SET CONSTRAINTS ... DEFERRED failed on + partitioned tables, incorrectly complaining about lack of triggers + (Álvaro Herrera) + + + + + + + Fix failure when creating indexes for a partition, if the parent + partitioned table contains any dropped columns (Michael Paquier) + + + + + + + Fix dropping of indexed columns in partitioned tables + (Amit Langote, Michael Paquier) + + + + Previously this might fail with an error message complaining about + the dependencies of the indexes. It should automatically drop the + indexes, instead. + + + + + + + Ensure that a partition index can be dropped after a failure to + reindex it concurrently (Michael Paquier) + + + + The + index's pg_class.relispartition + flag was left in the wrong state in such a case, + causing DROP INDEX to fail. + + + + + + + Fix handling of equivalence class members for partition-wise joins + (Amit Langote) + + + + This oversight could lead either to failure to use a feasible + partition-wise join plan, or to a could not find pathkey item + to sort planner failure. + + + + + + + Fix planner's test for case-foldable characters + in ILIKE with an ICU collation (Tom Lane) + + + + This mistake caused the planner to treat too much of the pattern as + being a fixed prefix, so that indexscans derived from + an ILIKE clause might miss entries that they + should find. + + + + + + + Ensure that offset expressions in WINDOW clauses + are processed when a query's expressions are manipulated (Andrew Gierth) + + + + This oversight could result in assorted failures when the offsets + are nontrivial expressions. One example is that a function + parameter reference in such an expression would fail if the function + was inlined. + + + + + + + Fix handling of whole-row variables in WITH CHECK + OPTION expressions and row-level-security policy expressions + (Andres Freund) + + + + Previously, such usage might result in bogus errors about row type + mismatches. + + + + + + + Avoid postmaster failure if a parallel query requests a background + worker when no postmaster child process array slots remain free + (Tom Lane) + + + + + + + Fix crash triggered by an EvalPlanQual recheck on a table with + a BEFORE UPDATE trigger (Andres Freund) + + + + + + + Prevent possible double-free if a BEFORE UPDATE + trigger returns the old tuple as-is, and it is not the last such + trigger (Thomas Munro) + + + + + + + Fix crash if x = ANY + (array), or related operations, + contains a constant-null array (Tom Lane) + + + + + + + Fix unexpected relkind error when a query tries to + access a TOAST table (John Hsu, Michael Paquier, Tom Lane) + + + + The error should say that permission is denied, but this case got + broken during code refactoring. + + + + + + + Provide a relevant error context line when an error occurs while + setting GUC parameters during parallel worker startup (Thomas Munro) + + + + + + + In serializable mode, ensure that row-level predicate locks are + acquired on the correct version of the row (Thomas Munro, Heikki + Linnakangas) + + + + If the visible version of the row is HOT-updated, the lock might be + taken on its now-dead predecessor, resulting in subtle failures to + guarantee serialization. + + + + + + + Ensure that fsync() is applied only to files + that are opened read/write (Andres Freund, Michael Paquier) + + + + Some code paths tried to do this after opening a file read-only, + which works on many platforms, but others give bad file + descriptor or related errors. + + + + + + + Allow encoding conversion to succeed on longer strings than before + (Álvaro Herrera, Tom Lane) + + + + Previously, there was a hard limit of 0.25GB on the input string, + but now it will work as long as the converted output is not over 1GB. + + + + + + + Avoid an unnecessary catalog lookup during heap page pruning + (Thomas Munro) + + + + It's no longer necessary to check for unlogged indexes here, and the + check caused significant performance problems in some workloads. + There's also at least a theoretical possibility of deadlock. + + + + + + + Avoid creating unnecessarily-bulky tuple stores for window functions + (Andrew Gierth) + + + + In some cases the tuple storage would include all columns of the + source table(s), not just the ones that are needed by the query. + + + + + + + Fix failure to JIT-compile equality comparisons for grouping hash + tables, leading to performance loss (Andres Freund) + + + + + + + Allow repalloc() to give back space when a + large chunk is reduced in size (Tom Lane) + + + + + + + Ensure that temporary WAL and history files are removed at the end + of archive recovery (Sawada Masahiko) + + + + + + + Avoid failure in archive recovery + if recovery_min_apply_delay is enabled + (Fujii Masao) + + + + recovery_min_apply_delay is not typically used in + this configuration, but it should work. + + + + + + + Ignore restore_command, + recovery_end_command, + and recovery_min_apply_delay settings during + crash recovery (Fujii Masao) + + + + Now that these settings can be specified + in postgresql.conf, they could be turned on + during crash recovery, but honoring them then is undesirable. + Ignore these settings until crash recovery is complete. + + + + + + + Avoid unwanted delay during shutdown of a logical replication + walsender (Craig Ringer, Álvaro Herrera) + + + + + + + Fix timeout handling in logical replication walreceiver processes + (Julien Rouhaud) + + + + Erroneous logic prevented wal_receiver_timeout + from working in logical replication deployments. + + + + + + + Correctly time-stamp replication messages for logical + decoding (Jeff Janes) + + + + This oversight resulted, for example, + in pg_stat_subscription.last_msg_send_time + usually reading as NULL. + + + + + + + In logical decoding, ensure that sub-transactions are correctly + accounted for when reconstructing a snapshot (Masahiko Sawada) + + + + This error leads to assertion failures; it's unclear whether any + bad effects exist in production builds. + + + + + + + Fix race condition during backend exit, when the backend process has + previously waited for synchronous replication to occur (Dongming Liu) + + + + + + + Fix ALTER SYSTEM to cope with duplicate entries + in postgresql.auto.conf (Ian Barwick) + + + + ALTER SYSTEM itself will not generate such a state, + but external tools that modify postgresql.auto.conf + could do so. Duplicate entries for the target variable will now be + removed, and then the new setting (if any) will be appended at the end. + + + + + + + Reject include directives with empty file names in configuration + files, and report include-file recursion more clearly + (Ian Barwick, Tom Lane) + + + + + + + Avoid logging complaints about abandoned connections when using PAM + authentication (Tom Lane) + + + + libpq-based clients will typically make two connection attempts when + a password is required, since they don't prompt their user for a + password until their first connection attempt fails. Therefore the + server is coded not to generate useless log spam when a client + closes the connection upon being asked for a password. However, + the PAM authentication code hadn't gotten that memo, and would + generate several messages about a phantom authentication failure. + + + + + + + Fix some cases where an incomplete date specification is not + detected in time with time zone input (Alexander Lakhin) + + + + If a time zone is provided, a date must be as well (since the UTC + offset implied by the zone might be time-varying). Depending on the + syntax used, this check was not enforced in all cases. + + + + + + + Fix misbehavior of bitshiftright() (Tom Lane) + + + + The bitstring right shift operator failed to zero out padding space + that exists in the last byte of the result when the bitstring length + is not a multiple of 8. While invisible to most operations, any + nonzero bits there would result in unexpected comparison behavior, + since bitstring comparisons don't bother to ignore the extra bits, + expecting them to always be zero. + + + + If you have inconsistent data as a result of saving the output + of bitshiftright() in a table, it's possible to + fix it with something like + +UPDATE mytab SET bitcol = ~(~bitcol) WHERE bitcol != ~(~bitcol); + + + + + + + + Fix result of text position() function (also + known as strpos()) for an empty search string + (Tom Lane) + + + + Historically, and per the SQL standard, the result should be one in + such cases, but 12.0 returned zero. + + + + + + + Restore the ability to take type information from + an AS clause + in json[b]_populate_record() + and json[b]_populate_recordset() + (Tom Lane) + + + + If the record argument is NULL and has no declared composite type, + try to use the AS clause instead. This isn't + recommended usage, but it used to work, and now does again. + + + + + + + Avoid crash when selecting a namespace node + in XMLTABLE (Chapman Flack) + + + + + + + Fix detection of edge-case integer overflow in interval + multiplication (Yuya Watari) + + + + + + + Fix memory leaks + in lower(), upper(), + and initcap() functions when using ICU + collations (Konstantin Knizhnik) + + + + + + + Avoid crashes if ispell text search dictionaries + contain wrong affix data (Arthur Zakirov) + + + + + + + Fix incorrect compression logic for GIN posting lists + (Heikki Linnakangas) + + + + A GIN posting list item can require 7 bytes if the distance between + adjacent indexed TIDs exceeds 16TB. One step in the logic was out + of sync with that, and might try to write the value into a 6-byte + buffer. In principle this could cause a stack overrun, but on most + architectures it's likely that the next byte would be unused + alignment padding, making the bug harmless. In any case the bug + would be very difficult to hit. + + + + + + + Fix handling of infinity, NaN, and NULL values in KNN-GiST + (Alexander Korotkov) + + + + The query's output order could be wrong (different from a plain + sort's result) if some distances computed for non-null column values + are infinity or NaN. + + + + + + + Avoid memory leak while vacuuming a GiST index (Dilip Kumar) + + + + + + + Fix handling of searches for NULL in KNN-SP-GiST (Nikita Glukhov) + + + + + + + On Windows, recognize additional spellings of the Norwegian + (Bokmål) locale name (Tom Lane) + + + + + + + Fix libpq to allow trailing whitespace in + the string values of integer parameters (Michael Paquier) + + + + Version 12 tightened libpq's validation + of integer parameters, but disallowing trailing whitespace seems + undesirable. + + + + + + + In libpq, correctly + report CONNECTION_BAD connection status after a + failure caused by a syntactically + invalid parameter value (Lars Kanis) + + + + + + + Avoid compile failure if an ECPG client + includes ecpglib.h while + having ENABLE_NLS defined (Tom Lane) + + + + This risk was created by a misplaced + declaration: ecpg_gettext() should not be + visible to client code. + + + + + + + In psql, resynchronize internal state + about the server after an unexpected connection loss and successful + reconnection (Peter Billen, Tom Lane) + + + + Ordinarily this is unnecessary since the state would be the same + anyway. But it can matter in corner cases, such as where the + connection might lead to one of several servers. This change + causes psql to re-issue any interactive + messages that it would have issued at startup, for example about + whether SSL is in use. + + + + + + + Avoid platform-specific null pointer dereference + in psql (Quentin Rameau) + + + + + + + Fix pg_dump's handling of circular + dependencies in views (Tom Lane) + + + + In some cases a view may depend on an object + that pg_dump needs to dump later than the + view; the most common example is that a query using GROUP + BY on a primary-key column may be semantically invalid + without the primary key. This is now handled by emitting a + dummy CREATE VIEW command that just establishes + the view's column names and types, and then later + emitting CREATE OR REPLACE VIEW with the full + view definition. Previously, the dummy definition was actually + a CREATE TABLE command, and this was + automagically converted to a view by a later CREATE + RULE command. The new approach has been used successfully + in PostgreSQL version 10 and later. We + are back-patching it into older releases now because of reports that + the previous method causes bogus error messages about the view's + replica identity status. This change also avoids problems when + trying to use the option during a restore + involving such a view. + + + + + + + Fix scheduling of parallel restore of a foreign key constraint on a + partitioned table (Álvaro Herrera) + + + + pg_dump failed to emit full dependency + information for partitioned tables' foreign keys. This could allow + parallel pg_restore to try to recreate a + foreign key constraint too soon. + + + + + + + In pg_dump, ensure stable output order + for similarly-named triggers and row-level-security policy objects + (Benjie Gillam) + + + + Previously, if two triggers on different tables had the same names, + they would be sorted in OID-based order, which is less desirable + than sorting by name. Likewise for RLS policies. + + + + + + + Fix pg_dump to again work with pre-8.3 + source servers (Tom Lane) + + + + A previous fix caused pg_dump to always + try to query pg_opfamily, but that catalog + doesn't exist before 8.3. + + + + + + + In pg_restore, treat + as meaning output to stdout + (Álvaro Herrera) + + + + This synchronizes pg_restore's behavior + with some other applications, and in particular makes pre-v12 branches + act similarly to v12's pg_restore, + simplifying creation of dump/restore scripts that work across + multiple PostgreSQL versions. Before this + change, pg_restore interpreted such a + switch as meaning output to a file + named -, but few people would want that. + + + + + + + In pg_upgrade, reject tables with + columns of type sql_identifier, as that has changed + representation in v12 (Tomas Vondra) + + + + + + + Improve pg_upgrade's checks for the use + of a data type that has changed representation, such + as line (Tomas Vondra) + + + + The previous coding could be fooled by cases where the data type of + interest underlies a domain or composite type. + + + + + + + Detect file read errors + during pg_basebackup (Jeevan Chalke) + + + + + + + In pg_basebackup, don't fsync output files + until the end of backup (Michael Paquier) + + + + The previous coding could result in timeout failures if fsync was slow. + + + + + + + In pg_rewind + with the option, avoid + updating pg_control + (Alexey Kondratov) + + + + This could lead to failures in + subsequent pg_rewind attempts. + + + + + + + In pg_rewind with an online source + cluster, disable timeouts, much + as pg_dump does (Alexander Kukushkin) + + + + + + + Fix failure in pg_waldump with + the option, when a continuation WAL record ends + exactly at a page boundary (Andrey Lepikhov) + + + + + + + In pg_waldump, + include the newitemoff field in btree page split + records (Peter Geoghegan) + + + + + + + In pg_waldump with + the option, avoid emitting extra + newlines for WAL records involving full-page writes (Andres Freund) + + + + + + + Fix small memory leak in pg_waldump + (Andres Freund) + + + + + + + Fix vacuumdb with a + high option to handle running out of file + descriptors better (Michael Paquier) + + + + + + + Fix PL/pgSQL to handle replacements of composite types better + (Tom Lane) + + + + Cover the case where a composite type is dropped entirely, and + then a new type of the same name is created, between executions + of a PL/pgSQL function. Variables of the composite type will now + update to match the new definition. + + + + + + + Fix contrib/amcheck to skip unlogged indexes + during hot standby (Andrey Borodin, Peter Geoghegan) + + + + An unlogged index won't necessarily contain valid data in this + context, so don't try to check it. + + + + + + + Fix contrib/intarray's GiST opclasses to not + fail for empty arrays with <@ (Tom Lane) + + + + A clause like array_column + <@ constant_array is + considered indexable, but the index search may not find index + entries for empty arrays in the array column; of course, such + entries should trivially match the search. + + + + The only practical back-patchable fix for this requires + making <@ index searches scan the whole index, + which is what this patch does. This is unfortunate: it means that + the query performance is likely worse than a plain sequential scan + would be. + + + + Applications whose performance is adversely impacted by this change + have a couple of options. They could switch to a GIN index, which + doesn't have this bug, or they could replace + array_column + <@ constant_array + with array_column + <@ constant_array + AND array_column + && constant_array. + That will provide about the same performance as before, and it will + find all non-empty subsets of the given constant array, which is all + that could reliably be expected of the query before. + + + + + + + Put back pqsignal() as an + exported libpq symbol (Tom Lane) + + + + This function was removed on the grounds that no clients should be + using it, but that turns out to break usage of + current libpq with very old versions + of psql, and perhaps other applications. + + + + + + + Allow configure --with-python to succeed when + only python3 or + only python2 can be found (Peter Eisentraut, + Tom Lane) + + + + Search for python, + then python3, + then python2, so + that configure will succeed in the + increasingly more common situation where no executable named + simply python exists. It's still possible to + override the choice by setting the PYTHON environment + variable. + + + + + + + Fix configure's test for presence of + libperl so that it works on recent Red Hat releases (Tom Lane) + + + + Previously, it could fail if the user sets CFLAGS + to -O0. + + + + + + + Ensure correct code generation for spinlocks on PowerPC (Noah Misch) + + + + The previous spinlock coding allowed the compiler to select register + zero for use with an assembly instruction that does not accept that + register, causing a build failure. We have seen only one long-ago + report that matches this bug, but it could cause problems for people + trying to build modified code or use atypical compiler options. + + + + + + + On PowerPC, avoid depending on the xlc + compiler's __fetch_and_add() function + (Noah Misch) + + + + xlc 13 and newer interpret this function in a way incompatible with + our usage, resulting in an unusable build + of PostgreSQL. Fix by using custom + assembly code instead. + + + + + + + On AIX, don't use the compiler option + (Noah Misch) + + + + This avoids an internal compiler error with xlc v16.1.0, with little + consequence other than changing the format of compiler error messages. + + + + + + + Fix MSVC build process to cope with spaces in the file path of + OpenSSL (Andrew Dunstan) + + + + + + + Update time zone data files to tzdata + release 2019c for DST law changes in Fiji and Norfolk Island, plus + historical corrections for Alberta, Austria, Belgium, British + Columbia, Cambodia, Hong Kong, Indiana (Perry County), Kaliningrad, + Kentucky, Michigan, Norfolk Island, South Korea, and Turkey. + + + + + + + + Release 12 @@ -663,7 +2452,7 @@ Author: Michael Paquier Parse libpq integer connection parameters more strictly (Fabien Coelho) - + In previous releases, using an incorrect integer value for @@ -673,9 +2462,9 @@ Author: Michael Paquier keepalives_interval and port resulted in libpq either ignoring those values or failing with incorrect error messages. - + - +