← All digests

DBMS Weekly — 2026-06-29 (week of 2026-06-29–2026-07-05)

Master was stamped 20devel on Jun 29 ("Let the hacking begin…") and the PG20-1 CommitFest went In Progress on Jul 1 — the commit tempo jumped accordingly. PG19 Beta 2 is slated for Jul 16 (announced on hackers just before the window). Several fetch paths were cache-stale this run; see the source note at the bottom.

PostgreSQL

  • Master is now PG20 — Joe Conway stamped HEAD as 20devel on Jun 29 ("Let the hacking begin ..."), opening the PostgreSQL 20 cycle while PG19 heads to Beta 2. (Joe Conway · postgres git) [committed]
  • Logical replication conflicts can now be logged to a table — June's busiest design thread landed: a subscription can persist apply-time conflicts to a queryable, system-managed table instead of only the server log. (Amit Kapila · postgres git) [committed]
  • Per-backend lock statistics — new backend-level lock-stats view (plus a new docs section on fast-path locking and a wait_time precision change) makes lock contention observable per backend rather than only cluster-wide. (Michael Paquier · postgres git) [committed]
  • UNION's output rowcount estimate improved — the planner gets a better cardinality estimate for UNION; filed in the CommitFest Jun 22, committed Jul 1 — a nine-day turnaround. (Richard Guo · postgres git) [committed]
  • A btree_gist correctness week — Tom Lane fixed the <> (NotEqual) strategy on internal index pages — wrong-results territory — then swept the module: truncated-bounds handling, removal of useless encoding-aware truncation, and a wrong comparator in gbt_bit_ssup_cmp. (Tom Lane · postgres git) [committed]
  • Master grab-bagmin()/max() for uuid (Masahiko Sawada); a log_statement_max_length GUC to truncate huge logged statements (Fujii Masao); set-returning functions disallowed in window OVER clauses (Tom Lane); unlogged-sequence corruption after standby promotion fixed (Fujii Masao); REPACK CONCURRENTLY fixes for stored generated columns (Álvaro Herrera); and a SQL/PGQ property-graph hardening cluster (Peter Eisentraut). [committed]

Reading from Planet PostgreSQL

  • Waiting for SQL:202y: Stockholm meeting reportQUALIFY was accepted into the SQL draft standard, unblocking the paused PostgreSQL patch for PG20; and days later a first INSERT ... BY NAME patch (also newly standardized, DuckDB-style) appeared on hackers. (Peter Eisentraut · EDB)
  • Inside a PostgreSQL checkpointer bug: a production postmortem — an "invalid memory alloc request size" error that wasn't memory at all: a known bug trapped the 16.8 checkpointer in an infinite retry loop; forced restart, long WAL replay, permanently fixed by a minor upgrade. (Warda Bibi · Stormatics)
  • Extreme rescue: full-file ransomware recovery — with every data file encrypted and the catalogs unusable, core tables were carved out by matching relation files against known DDL; the companion post argues Postgres's file-per-relation layout makes catalog loss unusually painful vs MySQL/Oracle. (Zhang Chen · pduzc.com)
  • Too many tables are bad for you — OOM kills and CPU-hogging queries traced back to relcache/catcache memory bloat from an enormous table count; why "just add more tables" has a per-backend memory price. (Laurenz Albe · Cybertec)
  • Sequence synchronization closes a critical upgrade gap — the author of the logical-replication sequence-sync work explains how it fixes the "sequences don't replicate" hole in pg_createsubscriber-based near-zero-downtime upgrades. (Vignesh C · Fujitsu) [by author]
  • All Your GUCs in a Row kept rolling — six more short planner-GUC deep-dives this week: incremental sort, index-only scan, material/memoize, merge join, nested loop, parallel append. (Christophe Pettus · thebuild.com)
  • LOAD "PL/CBMBASIC",8,1: Commodore 64 BASIC for PostgreSQL — a procedural language running the actual 1982 C64 BASIC interpreter (via cbmbasic's 6502→C recompile) inside the backend; every call is an in-memory "power cycle" costing ~15–20 µs. Absurd, and a nice tour of PL extension mechanics. (Thom Brown · Data Egret)

Ecosystem releases

  • pgcopydb v0.18 — biggest release the project has had (88 commits since v0.17 of Aug 2024). (Dimitri Fontaine)
    • PostgreSQL 16/17/18 compatibility; pgoutput-default CDC engine with reliability and performance work
    • regular-expression-based filtering; Citus-to-Citus migration support; 24 bug fixes
  • pg-healthcheck — new open-source Go CLI running 180+ live-catalog checks in 14 groups (bloat, slots holding WAL, wraparound, TOAST corruption, backup drift), coloured terminal or JSON output, CI-friendly exit codes. (Ahsan Hadi · pgEdge)
  • pg-cdc — "frustratingly simple" WAL→S3 change-data-capture streamer, announced on postgresql.org. (burnside project)
  • HexaCluster's Oracle-compat refresh — pg_dbms_errlog 2.4, credcheck 5.0 and pg_dbms_lock 2.0 all announced Jul 5. (HexaCluster)

PostgreSQL mailing lists

  • [hackers] Re-read subscription state after lock in AlterSubscription — the week's busiest thread (~20 messages): ALTER SUBSCRIPTION/PUBLICATION act on catalog state read before locking, so OID reuse can hit stale data — aggravated by the new conflict-table code; debate with Amit Kapila on a RangeVarGetRelidExtended()-style unified resolve-and-lock and how far to backpatch. (Bertrand Drouvot · pgsql-hackers) [open]
  • [hackers] Path traversal vulnerability in pg_dump directory format — filenames in a directory-format TOC are trusted during restore, so a maliciously edited archive can make pg_restore read files outside the dump directory; v1 patch validates entry names. (Dilip Kumar · pgsql-hackers) [patch posted]
  • [hackers] Make \d tablename fast again — the nondeterministic-collation LIKE commit accidentally disabled the LIKE→index-equality optimization, making psql's \d seq-scan pg_class (reported by Andres Freund, patch by Jelte Fennema-Nio, reworked by Tom Lane, backpatch-through 18); Tom found a further wrong-results LIKE bug the same day. (Tom Lane · pgsql-hackers) [patch posted]
  • [hackers] satisfies_hash_partition crashVARIADIC NULL crashes the server; Robert Haas blames his own 2017 commit and wants the fix in all branches; patches iterated under his review. (Robert Haas · pgsql-hackers) [patch under review]
  • [hackers] Batching in executor: corrected benchmarks — new numbers for the executor-batching series: count(*) 12–21% faster depending on visibility/quals; the author corrected his own earlier mislabeled run — careful, quantified progress on a major executor rework. (Amit Langote · pgsql-hackers) [patch posted]
  • [hackers] Can we get rid of TerminateThread() in pg_dump?TerminateThread() on ^C can deadlock on Windows fd locks; Thomas Munro proposes removing it — groundwork for using threads for parallel pg_dump on all platforms (companion thread under review by Heikki Linnakangas). (Thomas Munro · pgsql-hackers) [design discussion]
  • [hackers] DROP INVALID INDEXES redirected — a proposed DDL command to clean up invalid indexes (pg_repack leftovers) got pushback from Álvaro Herrera: better crash-cleanup or a pg_drop_invalid_indexes() function, plus concurrency tests against CREATE INDEX CONCURRENTLY. (Roman Khapov, Álvaro Herrera · pgsql-hackers) [redirected]
  • [general] last_analyze/last_vacuum suddenly NULL — Laurenz Albe's surprising answer: a server crash wipes cumulative-stats timestamps, so NULLed last_vacuum/last_analyze in monitoring can be a post-crash symptom. (Laurenz Albe · pgsql-general) [answered]

CommitFest (open: PG20-1, #59 — In Progress Jul 1–31)

  • Balance (Jun 30 18:30 → Jul 5, see note): 5 new · 27 closed (25 committed / 1 withdrawn / 1 rejected) → net −22. (vs last week: commit tempo up ~6× — 25 committed vs 4 — as the review month began; new-patch inflow now flows to PG20-2, which opened Jul 1.)
  • Queue (as served Jul 6): 300 needs review · 35 waiting on author · 48 ready for committer · 69 committed · 510 total. Totals baseline starts this week.
  • New this week: Prevent crash when calling pgstat functions with unregistered stats kind (Bertrand Drouvot) — matches one of the week's busiest hackers threads; also "hash joins vs. bitmap filters" (§6964), an octal-GUC display patch by Tom Lane (§6962).
  • Closed: per-backend lock statistics (§6838, committed), min/max for uuid (§6926, committed), UNION rowcount estimate (§6919, committed); the deprecated-features usage-statistics view was withdrawn (§6948); an auto-rollback-of-stale-prepared-transactions GUC was rejected.
  • Note: the per-CF activity log serves only its last 100 rows, which reach back to Jun 30 18:30 — the first ~1.7 days of the window could not be enumerated, so the flow above slightly undercounts.

Community pulse

  • What ORMs have taught me: just learn SQL (2014) — the wozniak.ca classic resurfaced and re-ran the eternal ORM war at a comments-per-point ratio near 1.2: ORMs as obfuscation vs ORMs as a forcing function for domain modeling. (Hacker News · 266 pts, 319 comments)
  • Postgres transactions are a distributed systems superpower — DBOS's case for co-locating workflow state with application data so each step commits atomically; the fault line: "congratulations, you discovered a mutex" vs "hub-and-spoke through a small consistent core is how mature systems work". (Hacker News · 229 pts, 93 comments)
  • Looking Ahead to Postgres 19 — Snowflake's PG19-beta deep-dive turned into a cross-vendor holy war: MSSQL developer-experience envy, synchronously-updated materialized-view wishlists, and a rebuttal that MySQL's horizontal-scaling edge is long gone. (Hacker News · 216 pts, 131 comments)
  • PostgreSQL and the OOM killer: why we use strict memory overcommit — Ubicloud's case for vm.overcommit_memory=2 (graceful ENOMEM beats SIGKILL + crash recovery) drew a real kernel-vs-database clash, with bcachefs's Kent Overstreet venting about Linux mm politics; the author conceded the original "you must" title was too strong and retitled it. (Hacker News · 191 pts, 127 comments)
  • Postgres data stored in Parquet on S3: "LTAP" explained — Databricks' Lakebase storage design (hot Postgres pages cached, one durable Parquet/Delta copy on S3) met the same skepticism as its launch: "two copies of data, not one", and renaming HTAP "changes the marketing, not the physics". (Hacker News · 180 pts, 54 comments)

Wider DBMS & distributed data

  • Hunting a 16-year-old SQLite WAL bug with TLA+ — Canonical's dqlite team modeled the WAL-checkpointing corruption bug that sat in SQLite since 2010 (recently fixed upstream) in TLA+, hit the corruption trace in ~20 states, and proved dqlite unaffected; the author took questions in the 237-point HN thread. (Canonical · via Hacker News, 237 pts)
  • How we scale PgBouncer — around the classic single-core PgBouncer ceiling: a per-core process fleet on one port via SO_REUSEPORT, with peering to route cancel requests (which arrive on new connections the kernel may deliver to the wrong process) to the owning process; pgbench select-only goes ~87k → ~336k TPS on 16 vCPUs, full methodology table included. (Kaushik Iska · ClickHouse blog) [vendor blog — substantive]

International (non-English sources)

  • Think seven times, shard once: scaling Telemost chat metadata [ru] — Yandex's messenger keeps messages in YDB but all membership/ACL metadata in PostgreSQL at 650K RPS; a production war story on starting to shard that PG layer. (Yandex · Habr) (orig: «Семь раз подумай, один раз пошардируй…»)
  • AngaraBase: a new HTAP DBMS [ru] — a from-scratch Rust HTAP engine speaking the Postgres wire protocol: UNDO-log MVCC with no VACUUM, SIMD-vectorized batch executor, phase-broken-down EXPLAIN; dev preview. Author's own project — architectural substance with a self-promo caveat. (Habr) (orig: «AngaraBase: новая HTAP СУБД»)
  • The implicit numeric type coercion trap [ru] — the one implicit cast Postgres happily performs — within numeric types — and the plan surprises it produces, with a repro. (GNIVC · Habr) (orig: «Ловушка неявного приведения числовых типов»)
  • "PostgreSQL 18 Internals" — the book, updated [ru] — Egor Rogov's internals reference updated for PG18; the electronic edition is freely available now. (Postgres Professional · Habr) (orig: «Книга „PostgreSQL 18 изнутри“»)
  • Why your UPDATE never finishes — transactions, locks and MVCC by experiment [ja] — hands-on reconstruction of row-lock waits on concurrent UPDATEs and how to triage them. (SRA OSS) (orig: «PostgreSQL であなたの UPDATE が終わらない理由»)
  • PostgreSQL 19 verification report [ja] — SRA OSS's annual pre-release verification document: new features, performance changes, incompatibilities, with reproducible procedures; their June pgsql-hackers watch shipped the same week. (SRA OSS) (orig: «PostgreSQL 19検証報告»)
  • Back from POSETTE 2026 [fr] — conference notes from the virtual Postgres event, via the French planet. (LOXODATA) (orig: «Retour sur POSETTE 2026»)

New sources added this week

  • pduzc.com (Zhang Chen) — PostgreSQL data-recovery and file-forensics field reports (this week: ransomware carve-out recovery); rare, hands-on content. Added to Postgres blogs.

~33 items · sources scanned: Planet PostgreSQL (full window), postgresql.org news archive + events page, pgsql-hackers via mail-archive (full window, ~15 threads opened), pgsql-general (full window), pgsql-performance (mirror silent since May 11), CommitFest #59 live activity log + queue totals (in-browser), postgres git master (84 commits, full window), Hacker News (item pages + weekly aggregate), GitHub releases (8 engines checked — none in-window), Habr [ru], SRA OSS + Qiita [ja], Dalibo + planete.postgresql.fr [fr], Cybertec DE [de] · filtered out as marketing/promotion: ~12 · out-of-window items excluded (incl. ClickHouse 26.6, covered last week).

Source note: plain fetch was widely cache-stale this run (CommitFest activity, arXiv cs.DB listings, Lobsters, Reddit, DBA SE unreachable or stale — arXiv skipped rather than guessed, so no Research section; pgsql-bugs has no fetchable archive for the current era and was covered via hackers cross-references). The Claude-in-Chrome + same-origin fetch fallback recovered CommitFest and postgres git ground truth. The polyglot-search backend was unavailable; international coverage came from native feeds and HTML listings.