Fri. Dec 6th, 2019

PostgreSQL 12.1, 11.6, 10.11, 9.6.16, 9.5.20, and 9.4.25 releases: bug fixes and improvements

3 min read

PostgreSQL, often simply Postgres, is an object-relational database management system (ORDBMS) with an emphasis on extensibility and standards compliance. It can handle workloads ranging from small single-machine applications to large Internet-facing applications (or for data warehousing) with many concurrent users; on macOS Server, PostgreSQL is the default database; and it is also available for Microsoft Windows and Linux (supplied in most distributions).

PostgreSQL is ACID-compliant and transactional. PostgreSQL has updatable views and materialized views, triggers, foreign keys; supports functions and stored procedures, and other expandability.

PostgreSQL is developed by the PostgreSQL Global Development Group, a diverse group of many companies and individual contributors. It is free and open-source, released under the terms of the PostgreSQL License, a permissive software license. _Wiki

PostgreSQL 12
PostgreSQL 12.1, 11.6, 10.11, 9.6.16, 9.5.20, and 9.4.25 were released.

This update also fixes over 50 bugs that were reported in the last several months. Some of these issues affect only version 12, but may also affect all supported versions.

Some of these fixes include:

  • Fix crash that occurs when ALTER TABLE adds a column without a default value along with other changes that require a table rewrite
  • Several fixes for REINDEX CONCURRENTLY.
  • Fix for VACUUM that would cause it to fail under a specific case involving a still-running transaction.
  • Fix for a memory leak that could occur when VACUUM runs on a GiST index.
  • Fix for an error that occurred when running CLUSTER on an expression index.
  • Fix failure for SET CONSTRAINTS ... DEFERRED on partitioned tables.
  • Several fixes for the creation and dropping of indexes on partitioned tables.
  • Fix for partition-wise joins that could lead to planner failures.
  • Ensure that offset expressions in WINDOW clauses are processed when a query’s expressions are manipulated.
  • Fix misbehavior of bitshiftright() where it failed to zero out padding space in the last byte if the bit string length is not a multiple of 8. For how to correct your data, please see the “Updating” section.
  • Ensure an empty string that is evaluated by the position() functions returns 1, as per the SQL standard.
  • Fix for a parallel query failure when it is unable to request a background worker.
  • Fix crash triggered by a case involving a BEFORE UPDATE trigger.
  • Display the correct error when a query tries to access a TOAST table.
  • Allow encoding conversion to succeed on strings with output up to 1GB. Previously there was hard limit of 0.25GB on the input string.
  • Ensure that temporary WAL and history files are removed at the end of archive recovery.
  • Avoid failure in archive recovery if recovery_min_apply_delay is enabled.
  • Ignore restore_commandrecovery_end_command, and recovery_min_apply_delay settings during crash recovery.
  • Several fixes for logical replication, including a failure when the publisher and subscriber had different REPLICA IDENTITY columns set.
  • Correctly timestamp replication messages for logical decoding, which in the broken case would lead to pg_stat_subscription.last_msg_send_time set to NULL.
  • Several fixes for libpq, including one that improves PostgreSQL 12 compatibility.
  • Several pg_upgrade fixes.
  • Fix how a parallel restore handles foreign key constraints on partitioned tables to ensure they are not created too soon.
  • pg_dump now outputs similarly named triggers and RLS policies in order based on table name, instead of OID.
  • Fix pg_rewind to not update the contents of pg_control when using the --dry-run option.