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_timeprecision 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 ingbt_bit_ssup_cmp. (Tom Lane · postgres git)[committed] - Master grab-bag —
min()/max()foruuid(Masahiko Sawada); alog_statement_max_lengthGUC to truncate huge logged statements (Fujii Masao); set-returning functions disallowed in windowOVERclauses (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 report —
QUALIFYwas accepted into the SQL draft standard, unblocking the paused PostgreSQL patch for PG20; and days later a firstINSERT ... BY NAMEpatch (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
\dseq-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 crash —
VARIADIC NULLcrashes 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_analyzein 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.