← All digests

DBMS Weekly — 2026-08-24 (week of 2026-08-24–2026-08-30) · fable edition

Regenerated edition of 2026-08-24, produced by Claude Fable 5 from a full independent rescan of the window (browser + archive-walk path; every item below verified against its primary source on 2026-08-31).

The week the v19 hangover was named out loud. Robert Haas asked an LLM to rank the release's scariest post-freeze patches — RI fast-path FK checks, REPACK, online checksums — and then asked -hackers whether any should be reverted before 19 ships; Nathan Bossart and Bharath Rupireddy spent three days filing a dozen fresh REPACK defects as if to prove the point, and Noah Misch concluded pg_get_*_ddl() needs a redesign, not a review. Outside the tree, the biggest database story of the year so far: AWS is acquiring DuckLabs, with DuckDB staying MIT under the DuckDB Foundation. The PG20-2 CommitFest closed its collection month at 512 patches.

PostgreSQL

  • The Sixth Execution — the definitive walkthrough of plancache.c: why a prepared statement's sixth execution can silently swap in a generic plan built on blind estimates, why the decision is sticky and never consults actual runtimes, and who (PL/pgSQL, JDBC, psycopg 3, PgBouncer 1.21+) is using the plan cache without telling you. (Christophe Pettus · thebuild.com)
  • Read your writes: WAIT FOR in PostgreSQL 19 — the new WAIT FOR LSN command gives read-your-writes on async replicas without remote_apply's per-commit tax; includes the ten-year history (three reverts) and why snapshot self-deadlock forces it to be a top-level utility command. (Gülçin Yıldırım Jelínek · clickhouse.com) [vendor blog — substantive]
  • PostgreSQL 18: 23x faster inserts with UUID v7 — production numbers, not a synthetic bench: switching PK defaults to uuidv7() on an 18.4 fleet cut a 12,000-calls/min multi-row insert from 0.7ms to 0.03ms on a billions-row table; the real war story is retrying the ACCESS EXCLUSIVE column-default change under load with jittered-backoff loops. (Andrew Atkinson · andyatkinson.com)
  • New things for regular expressions in PostgreSQL: pg_tre and pg_re2 — measured on a 33 GB corpus: pg_tre's index took 7 hours to build and 21 GB but does built-in fuzzy (Levenshtein) matching; pg_re2 beat the built-in ~ even unindexed (23s vs 41s) and beat pg_trgm with its GIN opclass, at the price of re2's no-lookbehind semantics. (Hubert 'depesz' Lubaczewski · depesz.com)
  • Integration of Lua into psql — Pavel Stehule's lua-psql patch series lets you script your own backslash commands (his demos: a \dt sorted by size — ending a decade-old syntax stalemate — and a VACUUM wrapper with live pg_stat_progress_vacuum output); interest-gauging thread "extendable psql?" opened on -hackers. (Pavel Stehule)
  • The Dump That Breaks Its Own Restore — pg_dump's own search_path='' preamble makes a data-only restore fail on any trigger that names tables unqualified, the failed COPY leaves the table empty while setval runs anyway, and psql exits 0 through all of it; reproduced step by step on 18.6. (Mikhail Shytsko · seedfa.st)
  • pg_statviz 1.2 — the minimalist stats time-series extension gets PG19 support and a locking module. (Jimmy Angelakos)
    • captures PG19's new wal_fpi_bytes counter and the I/O-worker / autovacuum-scoring settings
    • new blocking-locks module built on pg_blocking_pids() — counts soft blocks (lock-queue waiters), not just hard conflicts
    • --ai openai provider flag works with any OpenAI-compatible endpoint; AI analysis stays opt-in
    • tested across PostgreSQL 13–19beta3
  • pgwatch v6.0.0-beta — biggest release since v5: Prometheus exporters become first-class sources. (Pavlo Golub · Cybertec)
    • scrape Patroni/node_exporter endpoints next to SQL sources (built-in patroni preset, 12 metric families) — cluster-manager truth alongside pg_stat_* truth
    • custom_tags per source for cluster/node grouping; no double-pgwatch_ prefixing when the sink is Prometheus too
    • part 2 (Grafana v13 schema, hardened reaper) still to come
  • PostGIS 3.7.0rc1 — release candidate targeting PostgreSQL 19 beta3; bug fixes ahead of GA. (Regina Obe · PostGIS)

PostgreSQL mailing lists

  • [hackers] scary patch contest — Robert Haas had Claude rank v19's features by post-freeze bug count — RI fast-path FK batching (~16 fixes incl. an OOB write and five classes of wrong FK enforcement), REPACK (28 fixes incl. data loss, prerequisite reverted), online checksums (~25 state-machine holes), FOR PORTION OF (17, three security) — and asked which deserve reverting before 19.0; 40+ messages with Tom Lane, Andres Freund, Kapila, Rowley and Vondra weighing in. (Robert Haas) [open]
  • [hackers] REPACK (CONCURRENTLY) beta shakedown — Nathan Bossart and Bharath Rupireddy filed roughly a dozen distinct REPACK defect threads in three days: segfault under REPACK (ANALYZE) in a transaction block, rewriting user_catalog_table relations, ONLY accepted but ignored, no table-AM check, indefinite hang when the decoding worker fails to start, wrong errors for matviews — systematic hardening of scary-patch #2 in real time. (Nathan Bossart, Bharath Rupireddy) [open]
  • [hackers] pg_get_*_ddl() needs a redesign — Noah Misch's review of the v19 DDL-reconstruction functions: password hashes silently omitted, no dependency ordering ("the word 'depend' appears nowhere on the threads"), and a standing objection to carrying two independent catalog→SQL implementations next to pg_dump; defect tests attached. (Noah Misch) [open]
  • [hackers] Logical replication can lose an update after concurrent index invalidation — REINDEX/DROP INDEX CONCURRENTLY racing the apply worker makes RelationFindReplTupleByIndex() re-derive the wrong answer, report update_missing, and let the subscriber silently diverge; affects v16+ (bisected to 89e46da5e51), patches for all branches posted. (Mihail Nikalayeu) [patch posted]
  • [hackers] pg_upgrade silently truncates nextMultiOffset to 32 bits — first fallout of v19's 64-bit MultiXactOffset widening: pg_upgrade still parses the control-file value with str2uint(); Heikki Linnakangas engaged same-day, fix plus a pg_control_checkpoint() reporting correction posted. (Masahiko Sawada) [patch posted]
  • [hackers] Allow aggressive VACUUM to freeze without a cleanup lock — anti-wraparound VACUUM starved of a cleanup lock by overlapping buffer pins (real production case) gets a narrow escape hatch: one freeze-only pass under a plain exclusive content lock before falling back to waiting; Melanie Plageman and Peter Geoghegan reviewing. (Jingtang Zhang · Alibaba) [patch posted]
  • [hackers] Open SSI correctness issues — Andrey Borodin catalogs seven reproducible SERIALIZABLE bugs (duplicate PKs via SnapshotDirty, serialization failures swallowed by ROLLBACK TO SAVEPOINT, TID-range scans taking no SIREAD lock…), most with reproducers and fixes waiting on an invariant decision — pitched as a bounded deep-dive for a prospective committer. (Andrey Borodin) [open]
  • [hackers] Allow tuple visibility checks without hint-bit maintenance — table AMs that keep heap-format tuples under generic WAL corrupt standby pages when visibility checks opportunistically write hint bits between WAL operations; *NoHints() wrappers proposed, Andres Freund responded. (Andrew Dunstan) [patch posted]
  • [bugs] BUG #19640: Standby permanently stuck re-requesting old timeline after promotion — with recovery_target_timeline='latest' a restarted ex-primary can loop forever requesting its old timeline (repro'd 5x on 17.6 and 18.0, matching a CloudNativePG report); reporter traces it to expectedTLEs being seeded from receiveTLI, the same race Dilip Kumar analyzed years ago. (Harshit Singh) [open]
  • [performance] Traced PostgreSQL 18's io_uring with eBPF — cold seq scan: io_uring 1.60s vs worker (the default) 1.88s vs sync 2.65s, measured on a VM; comes with uringscope, the author's eBPF tool for watching what Postgres actually submits to the ring. (Rajarshi Chowdhury) [tool author's own numbers]

CommitFest (open: PG20-2, #61 — collection month ended 2026-08-31)

  • Balance (Mon–Sun, from queue totals 08-24 → 08-31): total 453 → 512 (+59) · committed 50 → 69 (+19) · Needs Review 292 → 311 · Ready for Committer 54 → 62 · withdrawn 9 → 16. (vs last week: commit tempo up — +19 committed vs +11; the ~100-row activity log only covered Fri–Sun by capture time, so per-entry flow below is the partial tail: 17 new records, 11 committed, 4 withdrawn.)
  • New this week: Make pgbench functions available server-side (Hannu Krosing) — extract pgbench's client-side function library and expose it as a server extension; also SSI: ON CONFLICT DO SELECT predicate-lock fix (#7213), hint-bit-free visibility checks (#7212, since withdrawn for rework), a pg_rewind hardening pair (#7220/#7221), SCRAM iteration-parsing bounds in libpq (#7217), and a hashbulkdelete() interrupt-latency fix (#7216).
  • Closed: Perform join removal by editing the query's jointree (#7059, committed — Tom Lane landing a significant planner restructure), Fix exported snapshot xmin handoff race (#7089, committed · Geoghegan), autovacuum: propagate updated parameters (#7168, committed · Gustafsson), Thread-safe stringToNode() (#7148, committed), apply worker misses closing partition leaves (#7158, committed), walreceiver temp-slot duplication on timeline switch (#7182, committed).

Community pulse

  • Your executable is a SQLite database — Farid Zakaria's SELF prototype replaces ELF outright: the file you chmod +x is a SQLite database (strip = DELETE+VACUUM, ldd = a JOIN, atomic LD_PRELOAD via transaction), and a whole 723-binary userland packed as one closure comes out smaller than the ELF originals; the thread argues loaders, page-sharing costs, and whether ELF was a database all along. (Hacker News · 563 pts, 109 comments; 25 more on Lobsters)
  • Show HN: LatticeDB — like SQLite but for graph databases — an embedded, in-process graph engine drew the week's liveliest storage-engine design thread. (Hacker News · 188 pts, 54 comments)
  • Solving the 1+N Query Problem — acadia.engineering's Datalog-flavored project drives a cross-platform argument for the second week running (also 29 comments on Lobsters) over whether the ORM N+1 problem is a language problem or a schema problem. (Hacker News · 59 pts, 54 comments)
  • Moving away from Fivetran due to cost — massive Salesforce→Snowflake ingestion priced off the managed connector; the week's biggest ingestion-replatforming argument, trading real alternatives and their engineering costs. (r/dataengineering · 99 upvotes, 127 comments)
  • Scale-to-zero Postgres via a wire-protocol proxy — a proxy in front of containerized Postgres 18 that fully shuts down idle databases and cold-starts them on the first packet; thread digs into the startup-latency and connection-state tradeoffs. (r/PostgreSQL · 49 upvotes, 21 comments)

Wider DBMS & distributed data

  • DuckLabs to join AWS; DuckDB stays MIT under the DuckDB Foundation — the bootstrapped Amsterdam team behind DuckDB/DuckLake/Quack (30 people, 1M+ downloads/day) is acquired; announced plans include a Foundation technical advisory board and opening the extension stack to third-party signing. The HN thread (1102 pts, 316 comments) is equal parts congratulation and "remember what happened to the last N acquired OSS databases". (Raasveldt & Mühleisen · ducklabs.com)
  • DuckLake was 41x faster than Iceberg for our Postgres CDC workload — small-batch CDC commits (1M rows, 100k updates, flush=1000) hit Iceberg's copy-on-write metadata amplification hard: 269s vs 6.6s with a DuckDB catalog; author's own tool and workload, so treat the ratio as the finding. (ex-Cloudflare Postgres lead · r/PostgreSQL) [self-reported]

Commercial engines (SQL Server, Oracle, MySQL, …)

  • Real-time SQL Plan Management in Oracle — Oracle's engineers on detecting and repairing plan regressions automatically at execution time, instead of DBA-curated baselines — the same "plans get pinned, but nothing watches them" gap a fresh -hackers thread raised about v19's pg_plan_advice this week. (Oracle · arXiv) [paper]

Migration experience

  • A safe MySQL upgrade that wasn't so safe — an EOL-driven upgrade via replica switchover shipped divergent data: ALTER TABLE … ADD COLUMN AUTO_INCREMENT may assign different IDs on source and replica, and binlog_format=MIXED replicated five referencing tables by statement (correct) and one by row (stale IDs) — the kind of silent divergence you find an hour after cutover. (Elis K. · blog.elis.cc)

Research & cutting edge

International (non-English sources)

  • Oracle → PostgreSQL with zero downtime: moving a terabyte of banking data, and everywhere it broke — 70+ tables, 500–3000 read RPS, no maintenance window; written as a checklist of failures ordered from "everyone knows and steps on it anyway" to "we learned this a week before cutover". (i_alakey · Habr) [ru] (orig: Oracle → PostgreSQL без даунтайма: как мы перевозили терабайт банковской базы и где всё ломалось)
  • They laughed at my answer about VIEWs — so I benchmarked MySQL 8.4 and PostgreSQL 17 — interview grudge turned measurement: identical data, scenario-by-scenario comparison of view performance on both engines; 86-comment argument in the thread. (FrolovAlexander · Habr) [ru] (orig: Меня подняли на смех за ответ про VIEW. Я поднял MySQL 8.4 и PostgreSQL 17 и померил)
  • Oracle to PostgreSQL in one INSERT: DuckDB as an ETL engine, no Oracle client needed — DuckDB's Oracle and Postgres extensions join source and target in one SQL plan, with parallel sharded reads off a single consistent SCN — timely, given who just bought the duck. (Rudy6885 · Habr) [ru] (orig: Из Oracle в PostgreSQL одним INSERT: DuckDB как ETL без Oracle-клиента)
  • Catalog Bullshit: unbundle the database, then rent you back a PostgreSQL table — argues Snowflake's lakehouse-governance framing inflates what an Iceberg catalog is (a metadata-pointer CAS) into a new pay layer, and that the real governance gap is the split between control plane and data path. (Ruohang Feng · blog.vonng.com) [zh] (orig: Catalog Bullshit:把数据库拆开,再租给你一张 PostgreSQL 表)
  • Publickey's rundown of the DuckDB 2.0 preview — Japan's enterprise-IT press digests the 2.0 preview for practitioners — client/server mode promoted to stable, schemaless VARIANT type, triggers, async I/O — days before the AWS news recontextualized all of it. (Junichi Niino · publickey1.jp) [ja] (orig: シングルバイナリなOLAP DBの次期版「DuckDB 2.0」プレビュー)

37 items · yield — mailing lists: 823 messages (721 -hackers / 93 -bugs / 8 -general / 1 -performance) → 18 threads read → 10 published · blogs: ~40 in-window posts (Planet 28 + news/newsletters) → 16 → 12 · community: ~100 threads viewed (HN 51, Reddit ~35, Lobsters 20, DBA SE 10) → 9 → 5 (+1 folded into Wider DBMS) · research: 33 cs.DB preprints → 6 → 5 (one filed under Commercial engines) · international: ru 20→4→3, zh 6→2→1, ja 10→2→1, fr 15→0→0 (Dalibo/dbi quiet or English-only this week; de not worked)