PostgreSQL

PostgreSQL

Two Hundred and Twelve Things

Bruce Momjian posted the first draft of the PostgreSQL 19 release notes to pgsql-hackers on April 15. The count, by his own enumeration, is 212 items. Feature freeze landed a week earlier on April 8. Beta 1 is expected next month. The final release is on the calendar for September.

Two hundred and twelve is a lot of items,

pgxbackup: Continuity Support for pgBackRest

PGX is providing continuity support for pgBackRest, under the name pgxbackup.

pgBackRest has been the gold standard for PostgreSQL backup and restore for over a decade. David Steele built it, maintained it, and shaped how a generation of PostgreSQL DBAs think about backup. It earned its place in production because it does the unglamorous things correctly: parallel backup

All Your GUCs in a Row: authentication_timeout

A connection is not free just because it has not logged in yet. From the moment the TCP handshake completes, the would-be client is holding a backend slot counted against max_connections, and it will hold that slot until one of two things happens: it finishes the authentication protocol, or authentication_timeout kicks in and the server hangs up on it.

On pgvectorscale, and Hybrid Search Without an Elasticsearch Sidecar

pgvector is excellent. It is also, at large scale, expensive — because the HNSW index it gives you wants to live in memory to be fast, and “wants to live in memory” stops being a casual statement somewhere around fifty million 1536-dimensional embeddings. At which point you reach for Pinecone, or you scale up the box, or you wave your

PHP Goes BSD

The php.internals vote closed on April 4, and PHP 9.0 will ship under the 3-clause BSD license. The RFC, driven by Ben Ramsey, replaces both the PHP License v3.01 and the Zend Engine License v2.0 with a single, OSI-recognized, FSF-recognized, GPL-compatible permissive license that has been sitting on the shelf for thirty-five years. This is a good decision, and the

After pgBackRest

pgBackRest is now unmaintained. If you were running pgBackRest in production — and a lot of people were running pgBackRest in production — what do you actually do now?

The honest answer has three parts. First: the world has not ended. pgBackRest still works. The git repository still exists, the binaries you have installed still take backups, and

All Your GUCs in a Row: array_nulls

We leave the archive arc behind and enter the first of several backward-compatibility GUCs. array_nulls controls whether the array input parser treats an unquoted NULL as an actual SQL null or as the four-character string "NULL". Default is on; context is user; it has been on by default since PostgreSQL 8.2, which shipped in December 2006.

AIO Grows Up

PostgreSQL 18 shipped asynchronous I/O. PostgreSQL 19, currently in feature freeze and headed for a September release, makes it tolerable to operate.

That sounds like a snide reading. It is not. The AIO subsystem in PG18 was a serious piece of engineering, and on the workloads it covers — sequential scans, bitmap heap scans, and VACUUM — it does

REPACK Moves In

For about fifteen years, the standard answer to “this table is bloated, what do I actually do about it” has been one of the out-of-tree options: pg_repack (the extension), pg_squeeze (Antonin Houska’s predecessor work), or a hand-rolled CREATE TABLE AS and swap. PG19 changes that. The new built-in REPACK command absorbs the work VACUUM FULL and CLUSTER already did, and

All Your GUCs in a Row: archive_timeout

The archiver only runs when a WAL segment is complete. On a busy database that happens constantly; on a quiet one it might not happen for hours or days. archive_timeout exists to prevent the resulting “our database has been accepting writes all afternoon but none of them are in the archive yet” problem.

When set to a positive value,