Changelog
Change is the only constant. All the works here gets corrected, updated and/or extended after publication. PostgreSQL releases are major factor, readers catch things I got wrong or misleading. This page is a honest record of that. Every publication and every revision, newest first.
2026
-
updated
Introduction to Buffers in PostgreSQL
Reworked the article around a live
pg_buffercachesession: what the buffer pool actually holds after a query, why aSELECTcan dirty a page, and how eviction plays out. Also corrected the version that introducedvacuum_buffer_usage_limit.
- new The unbearable lightness of one more index Thirty PostgreSQL schemas written by coding agents, loaded and measured. The indexes are competent; the cumulative cost is not.
-
updated
Read your own writes, off the primary
One naming cleanup landed after this was written. The command tag the statement returns is
WAIT, while the beta documentation called itWAIT FOReverywhere, and the tag cannot change once 19.0 ships. The -hackers agreement is to keep the tag and rename the documentation, error messages, and reference page toWAITinstead. The syntax does not change, you still writeWAIT FOR LSN '...', but if you match on error text or link to the docs page, the wording and the anchor will differ from the betas.
- new Read your own writes, off the primary WAIT FOR in PostgreSQL 19 lets a reader block until the replica has replayed a specific LSN. Measured against sticky routing, sleeps, and synchronous commit, on a replica that misses the write 99% of the time.