We don''t have any change log information yet for version 10.6.1 of PostgreSQL. Sometimes publishers take a little while to make this information available, so please check back in a few days to see if it has been updated.
Can you help?
If you have any change log info you can share with us, we''d love to hear from you! Head over to our Contact page and let us know.
Fix failure to reset libpq's state fully between connection attempts.
Fix INSERT ... ON CONFLICT UPDATE through a view that isn't just SELECT * FROM.
Ensure that updates to the relfrozenxid and relminmxid values for “nailed” system catalogs are processed in a timely fashion.
Fix case where a freshly-promoted standby crashes before having completed its first post-recovery checkpoint.
Avoid emitting a bogus WAL record when recycling an all-zero btree page.
During WAL replay, guard against corrupted record lengths exceeding 1GB.
When ending recovery, delay writing the timeline history file as long as possible.
Improve performance of WAL replay for transactions that drop many relations.
Improve performance of lock releasing in standby server WAL replay.
Make logical WAL senders report streaming state correctly.
Ensure that a snapshot is provided when executing data type input functions in logical replication subscribers.
Fix bugs in snapshot handling during logical decoding, allowing wrong decoding results in rare cases.
Add subtransaction handling in logical-replication table synchronization workers.
Ensure a table's cached index list is correctly rebuilt after an index creation fails partway through.
Fix mishandling of empty uncompressed posting list pages in GIN indexes.
Pad arrays of unnamed POSIX semaphores to reduce cache line sharing.
Ensure that a process doing a parallel index scan will respond to signals.
Ensure that VACUUM will respond to signals within btree page deletion loops.
Fix hash-join costing mistake introduced with inner_unique optimization.
Fix misoptimization of equivalence classes involving composite-type columns.
Fix planner to avoid “ORDER/GROUP BY expression not found in targetlist” errors in some queries with set-returning functions.
Fix handling of partition keys whose data type uses a polymorphic btree operator class, such as arrays.
Fix SQL-standard FETCH FIRST syntax to allow parameters ($n), as the standard expects.
Remove undocumented restriction against duplicate partition key columns.
Disallow temporary tables from being partitions of non-temporary tables.
Fix EXPLAIN's accounting for resource usage, particularly buffer accesses, in parallel workers.
Fix SHOW ALL to show all settings to roles that are members of pg_read_all_settings, and also allow such roles to see source filename and line number in the pg_settings view.
Fix failure to schema-qualify some object names in getObjectDescription and getObjectIdentity output.
Fix CREATE AGGREGATE type checking so that parallelism support functions can be attached to variadic aggregates.
Widen COPY FROM's current-line-number counter from 32 to 64 bits.
Allow replication slots to be dropped in single-user mode.
Fix incorrect results from variance(int4) and related aggregates when run in parallel aggregation mode.
Process TEXT and CDATA nodes correctly in xmltable() column expressions.
Cope with possible failure of OpenSSL's RAND_bytes() function.
Fix libpq's handling of some cases where hostaddr is specified.
Add a string freeing function to ecpg's pgtypes library, so that cross-module memory management problems can be avoided on Windows.
Fix ecpg's support for long long variables on Windows, as well as other platforms that declare strtoll/strtoull nonstandardly or not at all.
Fix misidentification of SQL statement type in PL/pgSQL, when a rule change causes a change in the semantics of a statement intra-session.
Fix password prompting in client programs so that echo is properly disabled on Windows when stdin is not the terminal.
Further fix mis-quoting of values for list-valued GUC variables in dumps.
Fix pg_dump's failure to dump REPLICA IDENTITY properties for constraint indexes.
Make pg_upgrade check that the old server was shut down cleanly.
Fix contrib/hstore_plperl to look through Perl scalar references, and to not crash if it doesn't find a hash reference where it expects one.
Fix crash in contrib/ltree's lca() function when the input array is empty.
Fix various error-handling code paths in which an incorrect error code might be reported.
Rearrange makefiles to ensure that programs link to freshly-built libraries (such as libpq.so) rather than ones that might exist in the system library directories.
Update time zone data files to tzdata release 2018e for DST law changes in North Korea, plus historical corrections for Czechoslovakia.
Remove public execute privilege from contrib/adminpack's pg_logfile_rotate() function.
Fix incorrect volatility markings on a few built-in functions.
Fix incorrect parallel-safety markings on a few built-in functions.
Avoid re-using TOAST value OIDs that match dead-but-not-yet-vacuumed TOAST entries.
Correctly enforce any CHECK constraints on individual partitions during COPY to a partitioned table.
Accept TRUE and FALSE as partition bound values.
Fix memory management for partition key comparison functions.
Fix possible crash when a query inserts tuples in several partitions of a partitioned table, and those partitions don't have identical row types.
Change ANALYZE's algorithm for updating pg_class.reltuples.
Include extended-statistics objects in the set of table properties duplicated by CREATE TABLE ... LIKE ... INCLUDING ALL.
Fix CREATE TABLE ... LIKE with bigint identity columns.
Avoid deadlocks in concurrent CREATE INDEX CONCURRENTLY commands that are run under SERIALIZABLE or REPEATABLE READ transaction isolation.
Fix possible slow execution of REFRESH MATERIALIZED VIEW CONCURRENTLY.
Fix UPDATE/DELETE ... WHERE CURRENT OF to not fail when the referenced cursor uses an index-only-scan plan.
Fix incorrect planning of join clauses pushed into parameterized paths.
Fix possibly incorrect generation of an index-only-scan plan when the same table column appears in multiple index columns, and only some of those index columns use operator classes that can return the column value.
Fix misoptimization of CHECK constraints having provably-NULL subclauses of top-level AND/OR conditions.
Prevent planner crash when a query has multiple GROUPING SETS, none of which can be implemented by sorting.
Fix executor crash due to double free in some GROUPING SET usages.
Fix misexecution of self-joins on transition tables.
Avoid crash if a table rewrite event trigger is added concurrently with a command that could call such a trigger.
Avoid failure if a query-cancel or session-termination interrupt occurs while committing a prepared transaction.
Fix query-lifespan memory leakage in repeatedly executed hash joins.
Fix possible leak or double free of visibility map buffer pins.
Avoid spuriously marking pages as all-visible.
Fix overly strict sanity check in heap_prepare_freeze_tuple.
Prevent dangling-pointer dereference when a C-coded before-update row trigger returns the “old” tuple.
Reduce locking during autovacuum worker scheduling.
Ensure client hostname is copied while copying pg_stat_activity data to local memory.
Handle pg_stat_activity information for auxiliary processes correctly.
Fix incorrect processing of multiple compound affixes in ispell dictionaries.
Fix collation-aware searches (that is, indexscans using inequality operators) in SP-GiST indexes on text columns.
Prevent query-lifespan memory leakage with SP-GiST operator classes that use traversal values.
Count the number of index tuples correctly during initial build of an SP-GiST index.
Count the number of index tuples correctly during vacuuming of a GiST index.
Fix a corner case where a streaming standby gets stuck at a WAL continuation record.
In logical decoding, avoid possible double processing of WAL data when a walsender restarts.
Fix logical replication to not assume that type OIDs match between the local and remote servers.
Allow scalarltsel and scalargtsel to be used on non-core datatypes.
Reduce libpq's memory consumption when a server error is reported after a large amount of query output has been collected.
Fix double-free crashes in ecpg.
Fix ecpg to handle long long int variables correctly in MSVC builds.
Fix mis-quoting of values for list-valued GUC variables in dumps.
Fix pg_recvlogical to not fail against pre-v10 PostgreSQL servers.
Ensure that pg_rewind deletes files on the target server if they are deleted from the source server during the run.
Fix pg_rewind to handle tables in non-default tablespaces correctly.
Fix overflow handling in PL/pgSQL integer FOR loops.
Adjust PL/Python regression tests to pass under Python 3.7.
Support testing PL/Python and related modules when building with Python 3 and MSVC.
Fix errors in initial build of contrib/bloom indexes.
Rename internal b64_encode and b64_decode functions to avoid conflict with Solaris 11.4 built-in functions.
Sync our copy of the timezone library with IANA tzcode release 2018e.
Update time zone data files to tzdata release 2018d for DST law changes in Palestine and Antarctica (Casey Station), plus historical corrections for Portugal and its colonies, as well as Enderbury, Jamaica, Turks & Caicos Islands, and Uruguay.
Document how to configure installations and applications to guard against search-path-dependent trojan-horse attacks from other users.
Avoid use of insecure search_path settings in pg_dump and other client programs.
Prevent logical replication from trying to ship changes for unpublishable relations.
Fix misbehavior of concurrent-update rechecks with CTE references appearing in subplans.
Fix planner failures with overlapping mergejoin clauses in an outer join.
Repair pg_upgrade's failure to preserve relfrozenxid for materialized views.
Fix incorrect pg_dump output for some non-default sequence limit values.
Fix pg_dump's mishandling of STATISTICS objects.
Fix incorrect reporting of PL/Python function names in error CONTEXT stacks.
Allow contrib/auto_explain's log_min_duration setting to range up to INT_MAX, or about 24 days instead of 35 minutes.
Mark assorted GUC variables as PGDLLIMPORT, to ease porting extension modules to Windows.
Fix processing of partition keys containing multiple expressions.
Ensure that all temporary files made by pg_upgrade are non-world-readable.
Fix vacuuming of tuples that were updated while key-share locked.
Fix failure to mark a hash index's metapage dirty after adding a new overflow page, potentially leading to index corruption.
Ensure that vacuum will always clean up the pending-insertions list of a GIN index.
Fix inadequate buffer locking in some LSN fetches.
Fix incorrect query results from cases involving flattening of subqueries whose outputs are used in GROUPING SETS.
Fix handling of list partitioning constraints for partition keys of boolean or array types.
Avoid unnecessary failure in a query on an inheritance tree that occurs concurrently with some child table being removed from the tree by ALTER TABLE NO INHERIT.
Fix spurious deadlock failures when multiple sessions are running CREATE INDEX CONCURRENTLY.
During VACUUM FULL, update the table's size fields in pg_class sooner.
Fix UNION/INTERSECT/EXCEPT over zero columns.
Disallow identity columns on typed tables and partitions.
Fix assorted failures to apply the correct default value when inserting into an identity column.
Fix failures when an inheritance tree contains foreign child tables.
Repair failure with correlated sub-SELECT inside VALUES inside a LATERAL subquery.
Fix “could not devise a query plan for the given query” planner failure for some cases involving nested UNION ALL inside a lateral subquery.
Allow functional dependency statistics to be used for boolean columns.
Avoid underestimating the number of groups emitted by subqueries containing set-returning functions in their grouping columns.
Fix use of triggers in logical replication workers.
Fix logical decoding to correctly clean up disk files for crashed transactions.
Fix walsender timeout failure and failure to respond to interrupts when processing a large transaction.
Fix race condition during replication origin drop that could allow the dropping process to wait indefinitely.
Allow members of the pg_read_all_stats role to see walsender statistics in the pg_stat_replication view.
Show walsenders that are sending base backups as active in the pg_stat_activity view.
Fix reporting of scram-sha-256 authentication method in the pg_hba_file_rules view.
Fix has_sequence_privilege() to support WITH GRANT OPTION tests, as other privilege-testing functions do.
In databases using UTF8 encoding, ignore any XML declaration that asserts a different encoding.
Provide for forward compatibility with future minor protocol versions.
Allow a client that supports SCRAM channel binding (such as v11 or later libpq) to connect to a v10 server.
Avoid live-lock in ConditionVariableBroadcast().
Clean up waits for condition variables correctly during subtransaction abort.
Ensure that child processes that are waiting for a condition variable will exit promptly if the postmaster process dies.
Fix crashes in parallel queries using more than one Gather node.
Fix hang in parallel index scan when processing a deleted or half-dead index page.
Avoid crash if parallel bitmap heap scan is unable to allocate a shared memory segment.
Cope with failure to start a parallel worker process.
Avoid unnecessary failure when no parallel workers can be obtained during parallel query startup.
Fix collection of EXPLAIN statistics from parallel workers.
Ensure that query strings passed to parallel workers are correctly null-terminated.
Avoid unsafe alignment assumptions when working with __int128.
Prevent stack-overflow crashes when planning extremely deeply nested set operations (UNION/INTERSECT/EXCEPT).
Avoid crash during an EvalPlanQual recheck of an indexscan that is the inner child of a merge join.
Fix crash in autovacuum when extended statistics are defined for a table but can't be computed.
Fix null-pointer crashes for some types of LDAP URLs appearing in pg_hba.conf.
Prevent out-of-memory failures due to excessive growth of simple hash tables.
Fix sample INSTR() functions in the PL/pgSQL documentation.
Fix pg_dump to make ACL (permissions), comment, and security label entries reliably identifiable in archive output formats.
Rename pg_rewind's copy_file_range function to avoid conflict with new Linux system call of that name.
In ecpg, detect indicator arrays that do not have the correct length and report an error.
Change the behavior of contrib/cube's cube ~> int operator to make it compatible with KNN search.
Avoid triggering a libc assertion in contrib/hstore, due to use of memcpy() with equal source and destination pointers.
Fix incorrect display of tuples' null bitmaps in contrib/pageinspect.
Fix incorrect output from contrib/pageinspect's hash_page_items() function.
In contrib/postgres_fdw, avoid “outer pathkeys do not match mergeclauses” planner error when constructing a plan involving a remote join.
In contrib/postgres_fdw, avoid planner failure when there are duplicate GROUP BY entries.
Provide modern examples of how to auto-start Postgres on macOS.
Fix incorrect selection of configuration-specific libraries for OpenSSL on Windows.
Support linking to MinGW-built versions of libperl.
Fix MSVC build to test whether 32-bit libperl needs -D_USE_32BIT_TIME_T.
On Windows, install the crash dump handler earlier in postmaster startup.
On Windows, avoid encoding-conversion-related crashes when emitting messages very early in postmaster startup.
Use our existing Motorola 68K spinlock code on OpenBSD as well as NetBSD.
Add support for spinlocks on Motorola 88K.
Update time zone data files to tzdata release 2018c for DST law changes in Brazil, Sao Tome and Principe, plus historical corrections for Bolivia, Japan, and South Sudan. The US/Pacific-New zone has been removed (it was only an alias for America/Los_Angeles anyway).
Restrict visibility of pg_user_mappings.umoptions, to protect passwords stored as user mapping options.
Prevent exposure of statistical information via leaky operators.
Restore libpq's recognition of the PGREQUIRESSL environment variable .
Fix possibly-invalid initial snapshot during logical decoding .
Fix possible corruption of "init forks" of unlogged indexes.
Fix incorrect reconstruction of pg_subtrans entries when a standby server replays a prepared but uncommitted two-phase transaction.
Avoid possible crash in walsender due to failure to initialize a string buffer.
Fix possible crash when rescanning a nearest-neighbor index-only scan on a GiST index.
Prevent delays in postmaster's launching of multiple parallel worker processes.
Fix postmaster's handling of fork() failure for a background worker process .
Fix possible "no relation entry for relid 0" error when planning nested set operations.
Fix assorted minor issues in planning of parallel queries.
Avoid applying "physical targetlist" optimization to custom scans.
Use the correct sub-expression when applying a FOR ALL row-level-security policy.
Ensure parsing of queries in extension scripts sees the results of immediately-preceding DDL.
Skip tablespace privilege checks when ALTER TABLE ... ALTER COLUMN TYPE rebuilds an existing index.
Fix ALTER TABLE ... VALIDATE CONSTRAINT to not recurse to child tables when the constraint is marked NO INHERIT.
Avoid dangling pointer in COPY ... TO when row-level security is active for the source table.
Avoid accessing an already-closed relcache entry in CLUSTER and VACUUM FULL.
Fix VACUUM to account properly for pages that could not be scanned due to conflicting page pins.
Ensure that bulk-tuple-transfer loops within a hash join are interruptible by query cancel requests.
Fix incorrect support for certain box operators in SP-GiST.
Fix integer-overflow problems in interval comparison.
Fix cursor_to_xml() to produce valid output with tableforest = false.
Fix roundoff problems in float8_timestamptz() and make_interval().
Fix pg_get_object_address() to handle members of operator families correctly.
Fix cancelling of pg_stop_backup() when attempting to stop a non-exclusive backup.
Improve performance of pg_timezone_names view.
Reduce memory management overhead for contexts containing many large blocks.
Fix sloppy handling of corner-case errors from lseek() and close().
Fix incorrect check for whether postmaster is running as a Windows service.
Fix ecpg to support COMMIT PREPARED and ROLLBACK PREPARED.
Fix a double-free error when processing dollar-quoted string literals in ecpg.
Fix pgbench to handle the combination of --connect and --rate options correctly.
Fix pgbench to honor the long-form option spelling --builtin, as per its documentation.
Fix pg_dump/pg_restore to correctly handle privileges for the public schema when using --clean option.
In pg_dump, fix incorrect schema and owner marking for comments and security labels of some types of database objects.
Fix typo in pg_dump's query for initial privileges of a procedural language.
Avoid emitting an invalid list file in pg_restore -l when SQL object names contain newlines.
Fix pg_upgrade to transfer comments and security labels attached to "large objects".
Improve error handling in contrib/adminpack's pg_file_write() function.
In contrib/dblink, avoid leaking the previous unnamed connection when establishing a new unnamed connection.
Fix contrib/pg_trgm's extraction of trigrams from regular expressions.
In contrib/postgres_fdw, allow join conditions that contain shippable extension-provided functions to be pushed to the remote server.
Support Tcl 8.6 in MSVC builds.
Sync our copy of the timezone library with IANA release tzcode2017b.
Update time zone data files to tzdata release 2017b for DST law changes in Chile, Haiti, and Mongolia, plus historical corrections for Ecuador, Kazakhstan, Liberia, and Spain. Switch to numeric abbreviations for numerous time zones in South America, the Pacific and Indian oceans, and some Asian and Middle Eastern countries.
Use correct daylight-savings rules for POSIX-style time zone names in MSVC builds.
- Fix a race condition that could cause indexes built with CREATE INDEX CONCURRENTLY to be corrupt
- If CREATE INDEX CONCURRENTLY was used to build an index that depends on a column not previously indexed, then rows updated by transactions that ran concurrently with the CREATE INDEX command could have received incorrect index entries. If you suspect this may have happened, the most reliable solution is to rebuild affected indexes after installing this update.
- Ensure that the special snapshot used for catalog scans is not invalidated by premature data pruning
- Backends failed to account for this snapshot when advertising their oldest xmin, potentially allowing concurrent vacuuming operations to remove data that was still needed. This led to transient failures along the lines of "cache lookup failed for relation 1255".
- Fix incorrect WAL logging for BRIN indexes
- The WAL record emitted for a BRIN "revmap" page when moving an index tuple to a different page was incorrect. Replay would make the related portion of the index useless, forcing it to be recomputed.
- Unconditionally WAL-log creation of the "init fork" for an unlogged table Previously, this was skipped when wal_level = minimal, but actually it's necessary even in that case to ensure that the unlogged table is properly reset to empty after a crash.
- If the stats collector dies during hot standby, restart it
- Ensure that hot standby feedback works correctly when it's enabled at standby server start
- Check for interrupts while hot standby is waiting for a conflicting query
- Avoid constantly respawning the autovacuum launcher in a corner case . This fix avoids problems when autovacuum is nominally off and there are some tables that require freezing, but all such tables are already being processed by autovacuum workers.
- Disallow setting the num_sync field to zero in synchronous_standby_names
- The correct way to disable synchronous standby is to set the whole value to an empty string.
- Don't count background worker processes against a user's connection limit
- Fix check for when an extension member object can be dropped Extension upgrade scripts should be able to drop member objects, but this was disallowed for serial-column sequences, and possibly other cases.
- Fix tracking of initial privileges for extension member objects so that it works correctly with ALTER EXTENSION ... ADD/DROP
- An object's current privileges at the time it is added to the extension will now be considered its default privileges; only later changes in its privileges will be dumped by subsequent pg_dump runs.
- Make sure ALTER TABLE preserves index tablespace assignments when rebuilding indexes
- Previously, non-default settings of default_tablespace could result in broken indexes.
- Fix incorrect updating of trigger function properties when changing a foreign-key constraint's deferrability properties with ALTER TABLE ... ALTER CONSTRAINT This led to odd failures during subsequent exercise of the foreign key, as the triggers were fired at the wrong times.
- Prevent dropping a foreign-key constraint if there are pending trigger events for the referenced relation This avoids "could not find trigger NNN" or "relation NNN has no triggers" errors.
- Fix ALTER TABLE ... SET DATA TYPE ... USING when child table has different column ordering than the parent. Failure to adjust the column numbering in the USING expression led to errors, typically "attribute N has wrong type".
- Fix processing of OID column when a table with OIDs is associated to a parent with OIDs via ALTER TABLE ... INHERIT . The OID column should be treated the same as regular user columns in this case, but it wasn't, leading to odd behavior in later inheritance changes.
- Ensure that CREATE TABLE ... LIKE ... WITH OIDS creates a table with OIDs, whether or not the LIKE-referenced table(s) have OIDs
- Fix CREATE OR REPLACE VIEW to update the view query before attempting to apply the new view options . Previously the command would fail if the new options were inconsistent with the old view definition.
- Report correct object identity during ALTER TEXT SEARCH CONFIGURATION The wrong catalog OID was reported to extensions such as logical decoding.
- Fix commit timestamp mechanism to not fail when queried about the special XIDs FrozenTransactionId and BootstrapTransactionId
- Fix incorrect use of view reloptions as regular table reloptions The symptom was spurious "ON CONFLICT is not supported on table ... used as a catalog table" errors when the target of INSERT ... ON CONFLICT is a view with cascade option.
- Fix incorrect "target lists can have at most N entries" complaint when using ON CONFLICT with wide tables
- Fix spurious "query provides a value for a dropped column" errors during INSERT or UPDATE on a table with a dropped column
- Prevent multicolumn expansion of foo.* in an UPDATE source expression This led to "UPDATE target count mismatch --- internal error". Now the syntax is understood as a whole-row variable, as it would be in other contexts.
- Ensure that column typmods are determined accurately for multi-row VALUES constructs .This fixes problems occurring when the first value in a column has a determinable typmod (e.g., length for a varchar value) but later values don't share the same limit.
- Throw error for an unfinished Unicode surrogate pair at the end of a Unicode string . Normally, a Unicode surrogate leading character must be followed by a Unicode surrogate trailing character, but the check for this was missed if the leading character was the last character in a Unicode string literal (U&'...') or Unicode identifier (U&"...").
- Fix execution of DISTINCT and ordered aggregates when multiple such aggregates are able to share the same transition state
- Fix implementation of phrase search operators in tsquery. Remove incorrect, and inconsistently-applied, rewrite rules that tried to transform away AND/OR/NOT operators appearing below a PHRASE operator; instead upgrade the execution engine to handle such cases correctly. This fixes assorted strange behavior and possible crashes for text search queries containing such combinations. Also fix nested PHRASE operators to work sanely in combinations other than simple left-deep trees, correct the behavior when removing stopwords from a phrase search clause, and make sure that index searches behave consistently with simple sequential-scan application of such queries.
- Ensure that a purely negative text search query, such as !foo, matches empty tsvectors . Such matches were found by GIN index searches, but not by sequential scans or GiST index searches.
- Prevent crash when ts_rewrite() replaces a non-top-level subtree with an empty query .
- Fix performance problems in ts_rewrite().
- Fix ts_rewrite()'s handling of nested NOT operators .
- Improve speed of user-defined aggregates that use array_append() as transition function.
- Fix array_fill() to handle empty arrays properly .
- Fix possible crash in array_position() or array_positions() when processing arrays of records .
- Fix one-byte buffer overrun in quote_literal_cstr() . The overrun occurred only if the input consisted entirely of single quotes and/or backslashes.
- Prevent multiple calls of pg_start_backup() and pg_stop_backup() from running concurrently.This avoids an assertion failure, and possibly worse things, if someone tries to run these functions in parallel.
- Disable transform that attempted to remove no-op AT TIME ZONE conversions . This resulted in wrong answers when the simplified expression was used in an index condition.
- Avoid discarding interval-to-interval casts that aren't really no-ops. In some cases, a cast that should result in zeroing out low-order interval fields was mistakenly deemed to be a no-op and discarded. An example is that casting from INTERVAL MONTH to INTERVAL YEAR failed to clear the months field.
- Fix crash if the number of workers available to a parallel query decreases during a rescan .
- Fix bugs in transmitting GUC parameter values to parallel workers.
- Allow statements prepared with PREPARE to be given parallel plans.
- Fix incorrect generation of parallel plans for semi-joins .
- Fix planner's cardinality estimates for parallel joins .
- Ensure that these estimates reflect the number of rows predicted to be seen by each worker, rather than the total.
- Fix planner to avoid trying to parallelize plan nodes containing initplans or subplans .
- Ensure that cached plans are invalidated by changes in foreign-table options.
- Fix the plan generated for sorted partial aggregation with a constant GROUP BY clause.
- Fix "could not find plan for CTE" planner error when dealing with a UNION ALL containing CTE references.
- Fix mishandling of initplans when forcibly adding a Material node to a subplan .
- The typical consequence of this mistake was a "plan should not reference subplan's variable" error.
- Fix foreign-key-based join selectivity estimation for semi-joins and anti-joins, as well as inheritance cases .
- The new code for taking the existence of a foreign key relationship into account did the wrong thing in these cases, making the estimates worse not better than the pre-9.6 code.
- Fix pg_dump to emit the data of a sequence that is marked as an extension configuration table.
- Fix mishandling of ALTER DEFAULT PRIVILEGES ... REVOKE in pg_dump . pg_dump missed issuing the required REVOKE commands in cases where ALTER DEFAULT PRIVILEGES had been used to reduce privileges to less than they would normally be.
- Fix pg_dump to dump user-defined casts and transforms that use built-in functions.
- Fix pg_restore with --create --if-exists to behave more sanely if an archive contains unrecognized DROP commands . This doesn't fix any live bug, but it may improve the behavior in future if pg_restore is used with an archive generated by a later pg_dump version.
- Fix pg_basebackup's rate limiting in the presence of slow I/O . If disk I/O was transiently much slower than the specified rate limit, the calculation overflowed, effectively disabling the rate limit for the rest of the run.
- Fix pg_basebackup's handling of symlinked pg_stat_tmp and pg_replslot subdirectories .
- Fix possible pg_basebackup failure on standby server when including WAL files.
- Improve initdb to insert the correct platform-specific default values for the xxx_flush_after parameters into postgresql.conf . This is a cleaner way of documenting the default values than was used previously.
- Fix possible mishandling of expanded arrays in domain check constraints and CASE execution. It was possible for a PL/pgSQL function invoked in these contexts to modify or even delete an array value that needs to be preserved for additional operations.
- Fix nested uses of PL/pgSQL functions in contexts such as domain check constraints evaluated during assignment to a PL/pgSQL variable.
- Ensure that the Python exception objects we create for PL/Python are properly reference-counted . This avoids failures if the objects are used after a Python garbage collection cycle has occurred.
- Fix PL/Tcl to support triggers on tables that have .tupno as a column name . This matches the behavior of PL/Tcl's spi_exec and spi_execp commands, namely that a magic .tupno column is inserted only if there isn't a real column named that.
- Allow DOS-style line endings in ~/.pgpass files, even on Unix. This change simplifies use of the same password file across Unix and Windows machines.
- Fix one-byte buffer overrun if ecpg is given a file name that ends with a dot .
- Fix incorrect error reporting for duplicate data in psql's crosstabview psql sometimes quoted the wrong row and/or column values when complaining about multiple entries for the same crosstab cell.
- Fix psql's tab completion for ALTER DEFAULT PRIVILEGES .
- Fix psql's tab completion for ALTER TABLE t ALTER c DROP ....
- In psql, treat an empty or all-blank setting of the PAGER environment variable as meaning "no pager" Previously, such a setting caused output intended for the pager to vanish entirely.
- Improve contrib/dblink's reporting of low-level libpq errors, such as out-of-memory
- Teach contrib/dblink to ignore irrelevant server options when it uses a contrib/postgres_fdw foreign server as the source of connection options Previously, if the foreign server object had options that were not also libpq connection options, an error occurred.
- Fix portability problems in contrib/pageinspect's functions for GIN indexes
- Fix possible miss of socket read events while waiting on Windows . This error was harmless for most uses, but it is known to cause hangs when trying to use the pldebugger extension.
- On Windows, ensure that environment variable changes are propagated to DLLs built with debug options .
- Sync our copy of the timezone library with IANA release tzcode2016j . This fixes various issues, most notably that timezone data installation failed if the target directory didn't support hard links.
- Update time zone data files to tzdata release 2016j for DST law changes in northern Cyprus (adding a new zone Asia/Famagusta), Russia (adding a new zone Europe/Saratov), Tonga, and Antarctica/Casey. Historical corrections for Italy, Kazakhstan, Malta, and Palestine. Switch to preferring numeric zone abbreviations for Tonga.
- Fix WAL-logging of truncation of relation free space maps and visibility maps (Pavan Deolasee, Heikki Linnakangas) It was possible for these files to not be correctly restored during crash recovery, or to be written incorrectly on a standby server. Bogus entries in a free space map could lead to attempts to access pages that have been truncated away from the relation itself, typically producing errors like "could not read block XXX: read only 0 of 8192 bytes". Checksum failures in the visibility map are also possible, if checksumming is enabled. Procedures for determining whether there is a problem and repairing it
- Fix possible data corruption when pg_upgrade rewrites a relation visibility map into 9.6 format. On big-endian machines, bytes of the new visibility map were written in the wrong order, leading to a completely incorrect map. On Windows, the old map was read using text mode, leading to incorrect results if the map happened to contain consecutive bytes that matched a carriage return/line feed sequence. The latter error would almost always lead to a pg_upgrade failure due to the map file appearing to be the wrong length. If you are using a big-endian machine (many non-Intel architectures are big-endian) and have used pg_upgrade to upgrade from a pre-9.6 release, you should assume that all visibility maps are incorrect and need to be regenerated. It is sufficient to truncate each relation's visibility map with contrib/pg_visibility's pg_truncate_visibility_map() function.
- Don't throw serialization errors for self-conflicting insertions in INSERT ... ON CONFLICT
- Fix use-after-free hazard in execution of aggregate functions using DISTINCT This could lead to a crash or incorrect query results.
- Fix incorrect handling of polymorphic aggregates used as window functions .The aggregate's transition function was told that its first argument and result were of the aggregate's output type, rather than the state type. This led to errors or crashes with polymorphic transition functions.
- Fix COPY with a column name list from a table that has row-level security enabled
- Fix EXPLAIN to emit valid XML when track_io_timing is on .Previously the XML output-format option produced syntactically invalid tags such as <I/O-Read-Time>. That is now rendered as <I-O-Read-Time>.
- Fix statistics update for TRUNCATE in a prepared transaction
- Fix bugs in merging inherited CHECK constraints while creating or altering a table.Allow identical CHECK constraints to be added to a parent and child table in either order. Prevent merging of a valid constraint from the parent table with a NOT VALID constraint on the child. Likewise, prevent merging of a NO INHERIT child constraint with an inherited constraint.
- Show a sensible value in pg_settings.unit for min_wal_size and max_wal_size
- Fix replacement of array elements in jsonb_set() If the target is an existing JSON array element, it got deleted instead of being replaced with a new value.
- Avoid very-low-probability data corruption due to testing tuple visibility without holding buffer lock
- Preserve commit timestamps across server restart. With track_commit_timestamp turned on, old commit timestamps became inaccessible after a clean server restart.
- Fix logical WAL decoding to work properly when a subtransaction's WAL output is large enough to spill to disk
- Fix dangling-pointer problem in logical WAL decoding
- Round shared-memory allocation request to a multiple of the actual huge page size when attempting to use huge pages on Linux
- This avoids possible failures during munmap() on systems with atypical default huge page sizes. Except in crash-recovery cases, there were no ill effects other than a log message. Don't try to share SSL contexts across multiple connections in libpq . This led to assorted corner-case bugs, particularly when trying to use different SSL parameters for different connections.
- Avoid corner-case memory leak in libpq . The reported problem involved leaking an error report during PQreset(), but there might be related cases.
- In pg_upgrade, check library loadability in name order .This is a workaround to deal with cross-extension dependencies from language transform modules to their base language and data type modules.
- Fix pg_upgrade to work correctly for extensions containing index access methods ( To allow this, the server has been extended to support ALTER EXTENSION ADD/DROP ACCESS METHOD. That functionality should have been included in the original patch to support dynamic creation of access methods, but it was overlooked.
- Improve error reporting in pg_upgrade's file copying/linking/rewriting steps
- Fix pg_dump to work against pre-7.4 servers
- Disallow specifying both --source-server and --source-target options to pg_rewind
- Make pg_rewind turn off synchronous_commit in its session on the source server.This allows pg_rewind to work even when the source server is using synchronous replication that is not working for some reason.
- In pg_xlogdump, retry opening new WAL segments when using --follow option. This allows for a possible delay in the server's creation of the next segment.
- Fix contrib/pg_visibility to report the correct TID for a corrupt tuple that has been the subject of a rolled-back update (Tom Lane)
- Fix makefile dependencies so that parallel make of PL/Python by itself will succeed reliably (Pavel Raiskup)
- Update time zone data files to tzdata release 2016h for DST law changes in Palestine and Turkey, plus historical corrections for Turkey and some regions of Russia. Switch to numeric abbreviations for some time zones in Antarctica, the former Soviet Union, and Sri Lanka.
# Major enhancements include:
* Parallel execution of sequential scans, joins and aggregates.
* Avoid scanning pages unnecessarily during vacuum freeze operations.
* Synchronous replication now allows multiple standby servers for increased reliability.
* Full-text search can now search for phrases (multiple adjacent words).
* postgres_fdw now supports remote joins, sorts, UPDATEs, and DELETEs.
* Substantial performance improvements, especially in the area of scalability on multi-CPU-socket servers.
- Fix possible mis-evaluation of nested CASE-WHEN expressions. A CASE expression appearing within the test value subexpression of another CASE could become confused about whether its own test value was null or not. Also, inlining of a SQL function implementing the equality operator used by a CASE expression could result in passing the wrong test value to functions called within a CASE expression in the SQL function's body. If the test values were of different data types, a crash might result; moreover such situations could be abused to allow disclosure of portions of server memory.
- Fix client programs' handling of special characters in database and role names.
- Fix corner-case misbehaviors for IS NULL/IS NOT NULL applied to nested composite values
- Fix "unrecognized node type" error for INSERT ... ON CONFLICT within a recursive CTE (a WITH item)
- Fix INSERT ... ON CONFLICT to successfully match index expressions or index predicates that are simplified during the planner's expression preprocessing phase
- Correctly handle violations of exclusion constraints that apply to the target table of an INSERT ... ON CONFLICT command, but are not one of the selected arbiter indexes Such a case should raise a normal constraint-violation error, but it got into an infinite loop instead.
- Fix INSERT ... ON CONFLICT to not fail if the target table has a unique index on OID
- Make the inet and cidr data types properly reject IPv6 addresses with too many colon-separated fields
- Prevent crash in close_ps() (the point ## lseg operator) for NaN input coordinates.Make it return NULL instead of crashing.
- Avoid possible crash in pg_get_expr() when inconsistent values are passed to it
- Fix several one-byte buffer over-reads in to_number()
- Do not run the planner on the query contained in CREATE MATERIALIZED VIEW or CREATE TABLE AS when WITH NO DATA is specified
- Avoid unsafe intermediate state during expensive paths through heap_update()
- Fix hint bit update during WAL replay of row locking operations
- Avoid unnecessary "could not serialize access" errors when acquiring FOR KEY SHARE row locks in serializable mode
- Make sure "expanded" datums returned by a plan node are read-only
- Avoid crash in postgres -C when the specified variable has a null string value
- Prevent unintended waits for the receiver in WAL sender processes
- Fix possible loss of large subtransactions in logical decoding
- Fix failure of logical decoding when a subtransaction contains no actual changes
- Ensure that backends see up-to-date statistics for shared catalogs
- Avoid redundant writes of the statistics files when multiple backends request updates close together
- Avoid consuming a transaction ID during VACUUM
- Prevent possible failure when vacuuming multixact IDs in an installation that has been pg_upgrade'd from pre-9.3
- When a manual ANALYZE specifies a column list, don't reset the table's changes_since_analyze counter
- Fix ANALYZE's overestimation of n_distinct for a unique or nearly-unique column with many null entries
- Prevent autovacuum from starting multiple workers for the same shared catalog
- Fix bug in b-tree mark/restore processing
- Avoid duplicate buffer lock release when abandoning a b-tree index page deletion attempt
- Fix building of large (bigger than shared_buffers) hash indexes
- Prevent infinite loop in GiST index build for geometric columns containing NaN component values
- Fix possible crash during a nearest-neighbor (ORDER BY distance) indexscan on a contrib/btree_gist index on an interval column
- Fix "PANIC: failed to add BRIN tuple" error when attempting to update a BRIN index entry
- Fix possible crash during background worker shutdown
- Fix PL/pgSQL's handling of the INTO clause within IMPORT FOREIGN SCHEMA commands
- Fix contrib/btree_gin to handle the smallest possible bigint value correctly
- Teach libpq to correctly decode server version from future servers
- Fix ecpg's code for unsigned long long array elements
- In pg_dump with both -c and -C options, avoid emitting an unwanted CREATE SCHEMA public command
- Improve handling of SIGTERM/control-C in parallel pg_dump and pg_restore
- Fix error reporting in parallel pg_dump and pg_restore
- Ensure that parallel pg_dump or pg_restore on Windows will shut down properly after an error
- Make parallel pg_dump fail cleanly when run against a standby server
- Make pg_dump behave better when built without zlib support
- Make pg_basebackup accept -Z 0 as specifying no compression
- Fix makefiles' rule for building AIX shared libraries to be safe for parallel make
- Fix TAP tests and MSVC scripts to work when build directory's path name contains spaces
- Be more predictable about reporting "statement timeout" versus "lock timeout"
- Make regression tests safe for Danish and Welsh locales
- Update our copy of the timezone code to match IANA's tzcode release 2016c
- Update time zone data files to tzdata release 2016f for DST law changes in Kemerovo and Novosibirsk, plus historical corrections for Azerbaijan, Belarus, and Morocco.
- Clear the OpenSSL error queue before OpenSSL calls, rather than assuming it's clear already; and make sure we leave it clear afterwards
- This change prevents problems when there are multiple connections using OpenSSL within a single process and not all the code involved follows the same rules for when to clear the error queue. Failures have been reported specifically when a client application uses SSL connections in libpq concurrently with SSL connections using the PHP, Python, or Ruby wrappers for OpenSSL. It's possible for similar problems to arise within the server as well, if an extension module establishes an outgoing SSL connection.
- Fix "failed to build any N-way joins" planner error with a full join enclosed in the right-hand side of a left join
- Fix incorrect handling of equivalence-class tests in multilevel nestloop plans
- Given a three-or-more-way equivalence class of variables, such as X.X = Y.Y = Z.Z, it was possible for the planner to omit some of the tests needed to enforce that all the variables are actually equal, leading to join rows being output that didn't satisfy the WHERE clauses. For various reasons, erroneous plans were seldom selected in practice, so that this bug has gone undetected for a long time.
- Fix corner-case parser failures occurring when operator_precedence_warning is turned on
- An example is that SELECT (ARRAY)::text gave an error, though it worked without the parentheses.
- Fix query-lifespan memory leak in GIN index scans
- Fix query-lifespan memory leak and potential index corruption hazard in GIN index insertion
- The memory leak would typically not amount to much in simple queries, but it could be very substantial during a large GIN index build with high maintenance_work_mem.
- Fix possible misbehavior of TH, th, and Y,YYY format codes in to_timestamp()
- These could advance off the end of the input string, causing subsequent format codes to read garbage.
- Fix dumping of rules and views in which the array argument of a value operator ANY (array) construct is a sub-SELECT
- Disallow newlines in ALTER SYSTEM parameter values
- The configuration-file parser doesn't support embedded newlines in string literals, so we mustn't allow them in values to be inserted by ALTER SYSTEM.
- Fix ALTER TABLE ... REPLICA IDENTITY USING INDEX to work properly if an index on OID is selected
- Avoid possible misbehavior after failing to remove a tablespace symlink
- Fix crash in logical decoding on alignment-picky platforms
- The failure occurred only with a transaction large enough to spill to disk and a primary-key change within that transaction.
- Avoid repeated requests for feedback from receiver while shutting down walsender
- Make pg_regress use a startup timeout from the PGCTLTIMEOUT environment variable, if that's set
- This is for consistency with a behavior recently added to pg_ctl; it eases automated testing on slow machines.
- Fix pg_upgrade to correctly restore extension membership for operator families containing only one operator class
- In such a case, the operator family was restored into the new database, but it was no longer marked as part of the extension. This had no immediate ill effects, but would cause later pg_dump runs to emit output that would cause (harmless) errors on restore.
- Fix pg_upgrade to not fail when new-cluster TOAST rules differ from old
- pg_upgrade had special-case code to handle the situation where the new PostgreSQL version thinks that a table should have a TOAST table while the old version did not. That code was broken, so remove it, and instead do nothing in such cases; there seems no reason to believe that we can't get along fine without a TOAST table if that was okay according to the old version's rules.
- Fix atomic operations for PPC when using IBM's XLC compiler
- Reduce the number of SysV semaphores used by a build configured with --disable-spinlocks
- Rename internal function strtoi() to strtoint() to avoid conflict with a NetBSD library function
- Fix reporting of errors from bind() and listen() system calls on Windows
- Reduce verbosity of compiler output when building with Microsoft Visual Studio
- Support building with Visual Studio 2015
- Note that builds made with VS2015 will not run on Windows versions before Windows Vista.
- Fix putenv() to work properly with Visual Studio 2013
- Avoid possibly-unsafe use of Windows' FormatMessage() function
- Use the FORMAT_MESSAGE_IGNORE_INSERTS flag where appropriate. No live bug is known to exist here, but it seems like a good idea to be careful.
- Update time zone data files to tzdata release 2016d for DST law changes in Russia and Venezuela. There are new zone names Europe/Kirov and Asia/Tomsk to reflect the fact that these regions now have different time zone histories from adjacent regions.