PostgreSQL 16

PostgreSQL 16 is the future development version of PostgreSQL, likely to be released in late 2023.

Initial commit marking the start of PostgreSQL 16 development is d31d3097 (2022-06-30).

CommitFests

Following CommitFests are for PostgreSQL 16 code submissions:

Note that the last CommitFest (March 2023) generally stays open a few days beyond the official end date until feature freeze is announced, usually in early April.

Backend changes

Build system

  • support for Meson build system added (initial commit e6927270)

Source configuration

  • segment size can be specified in blocks (commit d3b111e3)

Materialized views

  • materialized views participate in predicate locking (commit 43351557)

postmaster

  • option -n removed (commit 51b5834c)
  • option -T now sents SIGABRT rather than SIGSTOP (commit 51b5834c)

WAL

  • freeze plans in freeze WAL records deduplicated (commit 9e540599)

walreceiver

  • wakeup intervals made more targetted towards actual pending work (commit 05a7be93)

walsender

  • database name shown in ps display (commit af205152)

Performance improvements

Data type changes

General:

  • support for binary, octal and hexadecimal integer literals added (commit 6fcda9ab)
  • +infinity now accepted for input with date and timestamp types (commit 2ceea5ad)

Indexing changes

Hash indexes

  • speed of hash index builds improved (commit e09d7a12)

SQL changes

General:

  • FROM clause subquery aliases no longer required (commit bcedd8f5)
  • SYSTEM_USER reserved keyword now supported (commit 0823d061)

Modified:

System catalog changes

Tables

Modified:

Views

Modified:

System function changes

Added:

Modified:

Configuration changes

General:

Added:

Modified:

Removed:

Platform support changes

HP/Intel Itanium

HP-UX

Windows

  • support removed for versions older than Windows 10 (commit 495ed0ef)

Indexing changes

  • hash index build speed improved (commit d09dbeb9)

Logging changes

  • internal log_status_format() added for use by emit_log_hook etc. (commit b40baa96)
  • checkpoint and recovery point LSNs displayed in LogCheckpointEnd log message (commit 62c46eee)
  • autovacuum log output and VACUUM VERBOSE output now include a line containing the total number of heap pages which had one or more tuples frozen, and the total number of tuples frozen (commit d977ffd9)
  • LSN now included in some error messages related to WAL pages (commit 71cb84ec)

Users / roles

  • superuser privileges can no longer be removed from the bootstrap user (commit e530be2c)
  • pg_maintain predefined role added (commit 60684dd8)
  • pg_use_reserved_connections predefined role added (commit 6e2775e4)
  • users with the CREATEROLE attribute restricted to asdministrating roles they created or have been granted privileges on (cpmmit cf5eb37c)

Authentication changes

pg_hba.conf

  • regular expressions (regexp) support added for database and user entries (commit 8fea8683)
  • support for file inclusion added (commit a54b658c)

pg_ident.conf

  • support for file inclusion added (commit a54b658c)

Procedural language changes

PL/pgSQL

  • bound cursor variables no longer have a preassigned portal name (commit d747dc85)

Replication changes

Logical replication

  • publications can include both a schema and individual tables from the same schema (commit 13a185f5)
  • logical replication of data with an origin can be skipped (commit 36628396)
  • large transactions applied by parallel workers (commit 216a7848)

Foreign data wrapper changes

Core utilities

Modified:

  • createuser
    • following options added (commit 08951a7c):
      • -a/--admin
      • --bypassrls/--no-bypassrls
      • -m/--member
      • --valid-until
  • pg_dump
    • -Z/--compress option can now specify the compression method (commit 5e73a604)
    • locks now acquired in batches during startup (commit 5f53b42c)
  • vacuumdb
    • options --schema and --exclude-schema added (commit 7781f4e3)

Server utilities

Modified:

psql

  • \pset option xheader_width added (commit a45388d6)
  • \d+ on a partitioned table now indicates foreign partitions (commit bd95816f)
  • \bind command added for setting query parameters and using the extended query protocol (commit 5b66de34)
  • \dpS and \zS commands added (commit d913928c)

Contrib module changes

auto_explain

  • option auto_explain.log_parameter_max_length added (commit d4bfe412)

ltree

  • maximum label length extended to 1000 characters and labels may contain hyphens (commit b1665bf0)

pageinspect

  • function bt_multi_page_stats() added (commit 1fd3dd20)

pg_buffercache

  • function pg_buffercache_summary() added (commit 2589434a)

pg_walinspect

  • function pg_get_wal_fpi_info() added (commit c31cf1c0)

postgres_fdw

  • data returned for ANALYZE can be extracted using table sampling (commit 8ad51b5f)
  • option analyze_sampling added (commit 8ad51b5f)