Blog
Recent posts
September 25th marks the release of PostgreSQL 18. This article covers the March CommitFest and concludes the series covering the new features of the upcoming update. This article turned out quite large, as the last March CommitFest is traditionally the biggest and richest in new features.
You can find previous reviews of PostgreSQL 18 CommitFests here: 2024-07, 2024-09, 2024-11, 2025-01.
Client and Server Applications
- pg_dump[all]/pg_restore: dump and restore statistics
- Collect statistics after server upgrade
- pg_upgrade --swap: migrate directories to a new cluster
- pg_combinebackup --link: hard links instead of copying files
- pg_dump[all], pg_restore: --no-policies
- pg_createsubscriber: enable two_phase for all subscriptions
- pg_createsubscriber: remove publications on subscriber
- pg_createsubscriber: create subscriptions for every database on the publication server
- psql: pipeline mode
- psql: current connection information
- psql: set the default time interval for \watch
- psql: \dx displays the default extension version
Monitoring
- NUMA: monitoring tools for non-uniform memory access architectures
- pg_stat_get_backend_wal: WAL statistics for a specific process
- EXPLAIN: actual rows shown to two decimal places
- EXPLAIN: an interface for adding more options to the command
- Log failed lock attempts
- Log session time-to-connect
- log_line_prefix: local server IP address
- pg_stat_statements: normalize commands with lists of constants in IN
- Additional WAL buffer overflow monitoring tools
- Track vacuum and analyze delays
[Auto]vacuum and Analysis
- vacuum_truncate: manage the truncation of empty pages at the end of a table
- More frequent autovacuuming of dead tuples in large tables
- Autovacuum triggers sooner after new rows are inserted
- Eager freezing to amortize aggressive vacuum
Performance
- Asynchronous input/output
- io_combine_limit: increase maximum allowed limit to 1MB
- Read stream interface usage
- BTree indexes: skipping the condition on the index’s leading column
- GiST indexes: fast index creation using the sortsupport method
- Planner: replacing IN (VALUES ...) with array search
- Planner: eliminating redundant self-joins
Procedural Languages
- PL/pgSQL: passing named values of cursor parameters using =>
Replication
- multiple_unique_conflicts: another logical replication conflict
- idle_replication_slot_timeout: canceling inactive slots by timeout
- max_active_replication_origins: maximum number of replication origins
Security
- Support for the OAuth 2.0 authorization protocol
- dblink: using pass-through SCRAM authentication
- pgcrypto: support for sha256crypt and sha512crypt password hashing algorithms
- pgcrypto: support for CFB mode for the AES encryption standard
- ALTER DEFAULT PRIVILEGES and large objects
- libpq: the sslkeylogfile parameter
Server
- Temporal primary, unique, and foreign keys
- Virtual computed columns
- NOT NULL integrity constraints: creation without validation, enabling and disabling inheritance
- Integrity constraints: NOT ENFORCED
- file_copy_method: method for copying files when creating a database
- extension_control_path: location of extension control files
- Nondeterministic collations: support for substring search functions
- The gamma and lgamma functions
- Conversion of integer types to bytea and back
- The pg_get_loaded_modules function: information about libraries loaded into shared memory
- pg_buffercache: evict tables or the entire cache
- amcheck: GIN index verification
SQL commands and built-in functions
- CREATE FOREIGN TABLE LIKE
- COPY ... TO: materialized view support
- The json_strip_nulls function removes empty values in arrays
- New array_sort function
...
Postgres Professional, a developer of data management products, has released version 17.5.1 of its Postgres Pro Enterprise DBMS. The system now supports embedded analytics, offers automated database tuning, introduces a new backup technology, and much more.
Postgres Professional introduces a scheduled update to the Postgres Pro Enterprise Manager (PPEM) platform—a comprehensive administration and maintenance solution for Postgres Pro databases. The new release includes features for real-time infrastructure monitoring, performance bottleneck detection, and management of Patroni-based high-availability clusters.
Browse by keywords:
Postgres Professional has issued updates for Postgres Pro Standard. Versions 13.21.1, 14.18.1, 15.13.1, 16.9.1 and 17.5.1 are now available for download and upgrade from the official repository.
Below is an overview of the fixes and enhancements that have been updated or newly introduced for 17.5.1 users.
We continue to follow the news about PostgreSQL 18. The January CommitFest brings in some notable improvements to monitoring, as well as other new features.
You can find previous reviews of PostgreSQL 18 CommitFests here: 2024-07, 2024-09, 2024-11.
EXPLAIN (analyze): buffers on by defaultpg_stat_io: input/output statistics in bytes instead of pagespg_stat_io: WAL statisticspg_stat_get_backend_io: I/O statistics for a specific processVACUUM(verbose): visibility map informationTotal vacuum and analysis time per tableautovacuum: change the number of workers without restarting the serverpsql: connection service informationpsql: expanded display for \d* commandspsql: leakproof flag in \df* outputjsonb: null conversion to other typesMD5 encryption algorithm: end-of-support preparationsNew function uuidv7postgres_fdw: SCRAM authentication without storing the passwordpasswordcheck: minimum password lengthNew function casefold and pg_unicode_fast collationDML commands: RETURNING with OLD and NEWto_number: convert a string of roman numberals to numeric
We continue the series of articles about new patches coming to PostgreSQL 18, this one covering the news of the November CommitFest.
If you missed the previous reviews, you can check them out here: 2024-07, 2024-09.
- initdb: checksum calculation enabled by default
- Planner: array lookup instead of multiple similar conditions under OR
- Planner: switching around expressions in DISTINCT clauses
- GROUPING SETS: HAVING -> WHERE
- Data type cache entry invalidation and temporary tables
- Planner: incremental sorting during Merge Join
- New function array_reverse
- Functions min and max for the type bytea
- Parallel worker usage statistics
- New function pg_ls_summariesdir
- new contrib module: pg_logicalsnapinspect
- Improved extension installation error messages
- NOT NULL constraints in the system catalog
- A TOAST table for pg_index
- COPY... FROM and file_fdw: rejected row limit
- LIKE support with nondetermenistic collations
- TLS v1.3: cipher suites
Major improvements in performance and scalability
Statistically, September CommitFests feature the fewest commits. Apparently, the version 18 CommitFest is an outlier. There are many accepted patches and many interesting new features to talk about.
If you missed the July CommitFest, get up to speed here: 2024-07.
- Conflict detection and logging in logical replication
- Planner: no more 10000000000
- Planner: memory management and usage monitoring for temporary tuple storage
- Reading buffers during index backwards scan
- pg_upgrade: asynchronous operations in multiple databases
- Hash Join speed-up
- Faster text value processing in JSON
- Optimized numeric-type multiplication
- Optimized numeric-type division
- ANALYZE ONLY and VACUUM ONLY
- Improved checkpointer statistics
- pg_stat_statements: normalization of SET commands
- postgres_fdw_get_connections and remote connection status
- file_fdw: ignore format conversion errors
- New function has_largeobject_privilege
- Functions crc32 and crc32c
- Client-server protocol: report search_path changes to the client
- psql: support for named prepared statements
- pg_verifybackup: integrity verification for tar backups
This article is the first in the series about the upcoming PostgreSQL 18 release. Let us take a look at the features introduced in the July CommitFest.
- Planner: Hash Right Semi Join support
- Planner: materializing an internal row set for parallel nested loop join
- Planner support functions for generate_series
- EXPLAIN (analyze): statistics for Parallel Bitmap Heap Scan node workers
- Functions min and max for composite types
- Parameter names for regexp* functions
- Debug mode in pgbench
- pg_get_backend_memory_contexts: column path instead of parent, new column type
- Function pg_get_acl
- pg_upgrade: pg_dump optimization
- Predefined role pg_signal_autovacuum_worker
Since the PostgreSQL 17 RC1 came out, we are on a home run towards the official PostgreSQL release, scheduled for September 26, 2024.
Letʼs take a look at the patches that came in during the March CommitFest. Previous articles about PostgreSQL 17 CommitFests: 2023-07, 2023-09, 2023-11, 2024-01.
Together, these give an idea of what the new PostgreSQL will look like.
Reverts after code freeze
Unfortunately, some previously accepted patches didn't make it in after all. Some of the notable ones:
- ALTER TABLE... MERGE/SPLIT PARTITION (revert: 3890d90c)
- Temporal primary, unique and foreign keys (revert: 8aee330a)
- Planner: remove redundant self-joins (revert: d1d286d8)
- pg_constraint: NOT NULL constraints (revert: 16f8bb7c1)
Now, letʼs get to the new stuff.
SQL commands
- New features of the MERGE command
- COPY ... FROM: messages about discarded rows
- The SQL/JSON standard support
Performance
- SLRU cache configuration
- Planner: Merge Append for the UNION implementation
- Planner: materialized CTE statistics (continued)
- Optimization of parallel plans with DISTINCT
- Optimizing B-tree scans for sets of values
- VACUUM: new dead tuples storage
- VACUUM: combine WAL records for vacuuming and freezing
- Functions with subtransactions in parallel processes
Monitoring and management
- EXPLAIN (analyze, serialize): data conversion costs
- EXPLAIN: improved display of SubPlan and InitPlan nodes
- pg_buffercache: eviction from cache
Server
- random: a random number in the specified range
- transaction_timeout: session termination when the transaction timeout is reached
- Prohibit the use of ALTER SYSTEM
- The MAINTAIN privilege and the pg_maintain predefined role
- Built-in locale provider for C.UTF8
- pg_column_toast_chunk_id: ID of the TOAST value
- pg_basetype function: basic domain type
- pg_constraint: NOT NULL restrictions for domains
- New function to_regtypemod
- Hash indexes for ltree
Replication
- pg_createsubscriber: quickly create a logical replica from a physical one
- Logical slots: tracking the causes of replication conflicts
- pg_basebackup -R: dbname in primary_conninfo
- Synchronization of logical replication slots between the primary server and replicas
- Logical decoding optimization for subtransactions
Client applications
- libpq: non-locking query cancellation
- libpq: direct connection via TLS
- vvacuumdb, clusterdb, reindexdb: processing individual objects in multiple databases
- reindexdb: --jobs and --index at the same time
- psql: new implementation of FETCH_COUNT
- pg_dump --exclude-extension
- Backup and restore large objects
Spring is in full swing as we bring you the hottest winter news of the January Commitfest. Let’s get to the good stuff right away!
Previous articles about PostgreSQL 17: 2023-07, 2023-09, 2023-11.
- Incremental backup
- Logical replication: maintaining the subscription status when upgrading the subscriber server
- Dynamic shared memory registry
- EXPLAIN (memory): report memory usage for planning
- pg_stat_checkpointer: restartpoint monitoring on replicas
- Building BRIN indexes in parallel mode
- Queries with the IS [NOT] NULL condition for NOT NULL columns
- Optimization of SET search_path
- GROUP BY optimization
- Support planner functions for range types
- PL/pgSQL: %TYPE and %ROWTYPE arrays
- Jsonpath: new data conversion methods
- COPY ... FROM: ignoring format conversion errors
- to_timestamp: format codes TZ and OF
- GENERATED AS IDENTITY in partitioned tables
- ALTER COLUMN ... SET EXPRESSION
The November commitfest is ripe with new interesting features! Without further ado, let’s proceed with the review.
If you missed our July and September commitfest reviews, you can check them out here: 2023-07, 2023-09.
- ON LOGIN trigger
- Event triggers for REINDEX
- ALTER OPERATOR: commutator, negator, hashes, merges
- pg_dump --filter=dump.txt
- psql: displaying default privileges
- pg_stat_statements: track statement entry timestamps and reset min/max statistics
- pg_stat_checkpointer: checkpointer process statistics
- pg_stats: statistics for range type columns
- Planner: exclusion of unnecessary table self-joins
- Planner: materialized CTE statistics
- Planner: accessing a table with multiple clauses
- Index range scan optimization
- dblink, postgres_fdw: detailed wait events
- Logical replication: migration of replication slots during publisher upgrade
- Replication slot use log
- Unicode: new information functions
- New function: xmltext
- AT LOCAL support
- Infinite intervals
- ALTER SYSTEM with unrecognized custom parameters
- Building the server from source
We continue to follow the news of the PostgreSQL 17 development. Let’s find out what the September commitfest brings to the table.
If you missed our July commitfest review, you can check it out here: 2023-07.
- Removed the parameter old_snapshot_threshold
- New parameter event_triggers
- New functions to_bin and to_oct
- New system view pg_wait_events
- EXPLAIN: a JIT compilation time counter for tuple deforming
- Planner: better estimate of the initial cost of the WindowAgg node
- pg_constraint: NOT NULL constraints
- Normalization of CALL, DEALLOCATE and two-phase commit control commands
- unaccent: the target rule expressions now support values in quotation marks
- COPY FROM: FORCE_NOT_NULL * and FORCE_NULL *
- Audit of connections without authentication
- pg_stat_subscription: new column worker_type
- The behaviour of pg_promote in case of unsuccessful switchover to a replica
- Choosing the disk synchronization method in server utilities
- pg_restore: optimization of parallel recovery of a large number of tables
- pg_basebackup and pg_receivewal with the parameter dbname
- Parameter names for a number of built-in functions
- psql: \watch min_rows
We continue to follow the news in the world of PostgreSQL. The PostgreSQL 16 Release Candidate 1 was rolled out on August 31. If all is well, PostgreSQL 16 will officially release on September 14.
What has changed in the upcoming release after the April code freeze? What’s getting into PostgreSQL 17 after the first commitfest? Read our latest review to find out!
PostgreSQL 16
For reference, here are our previous reviews of PostgreSQL 16 commitfests: 2022-07, 2022-09, 2022-11, 2023-01, 2023-03.
Since April, there have been some notable changes.
Let’s start with the losses. The following updates have not made it into the release:
- MAINTAIN — a new privilege for table maintenance (commit: 151c22de
- Setting parameter values at the database and user level (commit: b9a7a822)
Some patches have been updated:
...

PostgreSQL 14 Internals for print on demand
A quick note to let you know that the PostgreSQL 14 Internals book is now available for orders on a worldwide print-on-demand service. You can buy hardcover or paperback version. PDF is still freely available on our website.