A developer option, and a genuinely useful one. backtrace_functions takes a comma-separated list of internal C function names; if an error is raised inside any function in the list, PostgreSQL writes a C-level stack trace to the server log alongside the error. Added in PostgreSQL 13. Default empty. Context is superuser (or any user with the appropriate SET privilege). Not
PostgreSQL 18.4, 17.10, 16.14, 15.18, and 14.23 are out as of May 14, 2026. The release fixes eleven security issues and more than sixty bugs. That is not a typo. Eleven CVEs is the largest single-release security batch I can remember, and three of them are CVSS 8.8 with practical exploitation paths. Patch this week. If you can patch
MERGE PARTITIONS and SPLIT PARTITION are back in PostgreSQL 19. They were merged for PostgreSQL 17, reverted before GA, and have spent a year in rework. The version landing in 19 takes a heavier lock than the original and makes fewer ambitious promises. This is the right outcome, and the story of how it got here is worth understanding if
The B cluster’s first historical artifact. backslash_quote controls whether \' is accepted as a way of representing a single quote inside a SQL string literal. It exists because of a 2006 SQL injection vulnerability involving multibyte character encodings, and almost twenty years on it is still in the GUC list because removing it would break some application somewhere. PostgreSQL is
CVE-2026-2005 is a heap buffer overflow in the OpenPGP code path of pgcrypto. Feeding crafted ciphertext to pgp_sym_decrypt or its siblings allows arbitrary code execution as the operating system user the database is running as. The bug has been there since approximately 2005. Twenty years of pgcrypto shipping in every PostgreSQL release. Twenty years of “battle-tested” extension code. Twenty
We open the B cluster with a parameter whose existence is a confession. PostgreSQL has a complicated relationship with the Linux page cache, and backend_flush_after is one of four GUCs that exist to mediate that relationship. The other three — bgwriter_flush_after, checkpoint_flush_after, and wal_writer_flush_after — will get their own posts in due course. They share a mechanism and
In the last twelve months, three of the biggest data-platform companies have shipped a Postgres-flavored database with a custom storage layer and a “scale-out compute, shared storage” architecture. Snowflake Postgres is GA, built on the Crunchy Data team’s work, with pg_lake as the lakehouse hook. Databricks Lakebase is GA on AWS, public preview on Azure, built on the Neon engine
Third in a series of dispassionate tours of managed PostgreSQL services. Previously: Amazon RDS for PostgreSQL and Amazon Aurora PostgreSQL. After Aurora’s distributed-storage architecture, Cloud SQL reads like a return to first principles — a conventional PostgreSQL instance in a VM with a regional disk under it.
The last entry in the autovacuum cluster, and the newest. PostgreSQL 18 introduced autovacuum_worker_slots to solve a long-standing operational annoyance: changing autovacuum_max_workers used to require a server restart, which made it impossible to respond to evolving vacuum workload without a maintenance window. PG 18 fixes that by splitting the parameter in two.
For as long as logical replication has existed in PostgreSQL, the rule has been: if you ever might want to use it, set wal_level = logical at server start and live with the WAL volume forever. The cost wasn’t disastrous, but it was always-on. Set it once, pay it forever, including for the 364 days a year you weren’t using