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_buffercache session: what the buffer pool actually holds after a query, why a SELECT can dirty a page, and how eviction plays out. Also corrected the version that introduced vacuum_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 it WAIT FOR everywhere, 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 to WAIT instead. The syntax does not change, you still write WAIT 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.