DBMS Weekly — 2026-07-06 (week of 2026-07-06–2026-07-12)
Review month in full swing: PG20-1's committed count jumped 69 → 153 in a week, JSON_TABLE got its PLAN clause, and PostgreSQL quietly turned 30 (first commit: Jul 8/9, 1996). PG19 Beta 2 is due Jul 16 (fix cutoff was Jul 11). The loudest thread of the week was an LLM-assisted Postgres-in-Rust rewrite claiming to pass the full regression suite. A replication self-deadlock in the current 14–16 minors is worth reading before your next standby upgrade. No browser was available this run and several fetch paths were cache-stale; see the source note at the bottom.
PostgreSQL
- JSON_TABLE gets its PLAN clause — the last big missing piece of SQL/JSON's JSON_TABLE lands in PG20:
PLAN/PLAN DEFAULTcontrol how nested paths join (+2,017 lines; originally by Malakhov, Glukhov, Sigaev, Bartunov et al.). (Alexander Korotkov · postgres git)[committed] - Grouped subqueries stop defaulting to 1/200 selectivity —
stadistinctnow propagates through GROUP BY/DISTINCT in subqueries and CTEs; the commit message credits the old fallback as a significant factor in poor TPC-DS plans. (Richard Guo · postgres git)[committed] - enable_groupagg joins the planner GUC family — soft-disables sort-based grouping (GroupAggregate/Group, sorted DISTINCT/Unique, sorted SetOp) via
disabled_nodes, mirroringenable_hashagg. (Richard Guo · postgres git)[committed] - Wrong results from qual pushdown past mismatched grouping — pushing HAVING→WHERE or into a subquery across DISTINCT/set-op grouping whose notion of equality disagrees (opfamily or nondeterministic collation) could change answers; backpatched through 18. (Richard Guo · postgres git)
[committed] - RETURNING OLD could return wrong values under concurrency — with a BEFORE UPDATE trigger and a concurrently updated target row at READ COMMITTED, OLD reflected the wrong tuple (bug #19536); backpatched through 18. (Dean Rasheed · postgres git)
[committed] - psql's \d is fast again — last week's find that the nondeterministic-LIKE work broke the exact-match-LIKE→index-equality optimization is fixed and backpatched through 18; a HEAD-only follow-up dropping the now-useless recheck surfaced its own collation edge cases. (Jelte Fennema-Nio, Tom Lane · postgres git)
[committed] - libpq could hang a nonblocking client on big TLS/GSS messages —
pqReadData()now drains bytes pending inside the SSL/GSS transport buffers, where a message spanning TLS records could strand data and stall the connection; backpatched through 14. (Jacob Champion, Heikki Linnakangas · postgres git)[committed] - Master grab-bag — UnlockBufHdrExt CAS-ordering fix that could lose flags like BM_IO_ERROR (Andres Freund); FSM now updated after on-access VM setting to stop stale-FSM bloat (Melanie Plageman); database-wide REPACK drops a useless lock pass (ChangAo Chen, Álvaro Herrera);
satisfies_hash_partitionVARIADIC NULL crash fixed in all branches (Robert Haas); therefintcontrib module retired (Nathan Bossart).[committed]
Reading
- Replication deadlock bug in current Postgres releases 14–16 — the May minors (14.23/15.18/16.14) can self-deadlock in the MultiXactOffset SLRU during WAL replay when the WAL comes from a primary on an older minor: standbys and PITR hang (bug #19490); hold standbys back or two-step upgrade until the Aug 13 minors. (credativ team)
[publish date unverified] - The tests passed. The plan didn't. — RegreSQL 2.0 gates CI on plan shape, buffers, spills and q-error rather than green tests alone, and injects production statistics via PG18's
pg_dump --statistics-onlyso the planner in test behaves like production. (Radim Marek · boringsql.com) - Why pg_hardstorage has no incremental chain — the case for content-addressed (SHA-256 chunked) backups over incremental chains, with 87.5% dedup measured on a 487 GiB fleet and an honest accounting of the full-read I/O cost. (Hans-Jürgen Schönig · Cybertec)
[vendor blog — substantive]
Ecosystem releases
- PostgreSQL JDBC 42.7.12 security release (CVE-2026-54291) — with
channelBinding=require, 42.7.4–42.7.11 could silently downgrade from SCRAM-SHA-256-PLUS to plain SCRAM when the server certificate's signature algorithm has no tls-server-end-point hash (Ed25519/Ed448/PQC certs). (pgJDBC) - CloudNativePG 1.30.0 — (CloudNativePG)
- new
DatabaseRoleCRD (declarative roles, auto-renewed TLS client certs) and KubernetesLeaseas the promotion gate for primary election - in-place major upgrades with Image Volume extensions
- security fixes CVE-2026-55769 (
search_pathpinning vs operator-privilege escalation) and CVE-2026-55765 (SCRAM-encode passwords before CREATE/ALTER ROLE); breaking:clusterrefs now immutable
- new
- pg_re2: RE2-powered regular expressions for Postgres — new extension wrapping Google's automata-based RE2: 1.8–8.6x over the native backtracking engine, plus a
@~operator whosegin_re2_opsopclass indexes patternspg_trgmgives up on. (David Wheeler, Philip Dubé · ClickHouse blog)[vendor blog — substantive] - pg_ivm 1.15 — IMMV metadata now survives pg_dump/pg_upgrade (
pg_ivm_dump_metadata+restore_immv()); fixes wrong view maintenance under self-modifying triggers and a v1.14 outer-join segfault. (Yugo Nagata) - Barman 3.19 — restore directly from cloud object storage (new
barman cloud-wal-restorewith parallel fetch), backup export/import tarballs, and a fix for--no-get-walrestores skipping newer-timeline WAL — broken PITR on PG12+. (Barman team) - PDU: an offline data unloader for dead clusters — catalog reconstruction, table export and WAL row extraction from clusters that won't start; companion tooling to the ransomware-recovery field reports covered last week. (via postgresql.org news)
PostgreSQL mailing lists
- [hackers] Hash index scans can miss rows during concurrent bucket splits —
_hash_nextlacks the split-transition logic_hash_readnexthas, so scans can silently skip matching rows mid-split; all stable branches affected; fix posted, but Amit Kapila still saw a regression diff with it applied. (Peter Geoghegan · pgsql-hackers)[patch posted] - [hackers] PG19's FK fast path can validate a violating constraint — Noah Misch's post-commit review rejected the earlier top-transaction-only fix and found worse: a caught FK error inside a PL/pgSQL EXCEPTION block strands the fast-path state, after which ALTER TABLE ADD FK can mark a constraint valid with a violating row present; Amit Langote confirmed and posted a per-subtransaction rework. (Noah Misch, Amit Langote · pgsql-hackers)
[patch posted] - [hackers] Selective index updates (WARM redux) hit the BitmapAnd wall — Alexander Korotkov points out that aiming unchanged indexes at the chain root and changed ones at the new tuple makes BitmapAnd intersect to empty — the same false-negative trap he calls "one of the critical weaknesses in WARM". (Alexander Korotkov · pgsql-hackers)
[design discussion] - [hackers] TOML? JSON5? A new config format for pg_hba & friends — TOML mockups for hba/ident/hosts drew Tom Lane's demand for concrete end-user benefit and a -1 on TOML; momentum shifted toward JSON5, with freezing the old format still contested. (Zsolt Parragi et al. · pgsql-hackers)
[design discussion] - [hackers] Scrollable cursors at the wire-protocol level — pgJDBC's Dave Cramer proposes extending Execute with direction+count under a protocol extension so drivers stop buffering entire scrollable result sets client-side. (Dave Cramer · pgsql-hackers)
[design discussion] - [hackers] EXPLAIN ANALYZE wait events redirected to sampling — after Andres Freund vetoed adding a branch to
pgstat_report_wait_start/end(), the author dropped exact accounting; Robert Haas mapped out the self-sampler vs external-sampler design space (interrupt-handler limits vs cross-process plan-node attribution). (pgsql-hackers)[redirected] - [hackers] sequencesync can mark sequences READY with stale data — a race between the sequencesync worker and REFRESH SEQUENCES lets subscribed sequences reach READY despite subscriber data older than the refresh; found via an AI-assisted review pass, fix under debate. (Noah Misch · pgsql-hackers)
[open] - [hackers] pg_xmin_horizon: what exactly is pinning my horizon? — proposed system view unifying backends, prepared xacts, replication slots and hot-standby feedback with correct horizon classification — the query every DBA hand-rolls, done right this time. (Scott Ray · pgsql-hackers)
[patch posted]
CommitFest (open: PG20-1, #59 — In Progress Jul 1–31)
- Balance (queue totals, Jul 6 → Jul 13): committed 69 → 153 (+84) as the review month accelerated; needs-review roughly flat (300 → 304); total 510 → 613 as patches keep moving in from PG20-2. The CF59 activity log was served stale (cut at Jun 24), so per-patch flow could not be enumerated this week — totals tell the story instead. (totals as served Jul 13, so they include a sliver of Monday morning)
- Inflow (PG20-2, #61 — where new patches now land): 16 new records Jul 6–12 — incl. per-backend AIO statistics (#6991, Bertrand Drouvot), logical decoding of rollbacks as
xact_rollback(#6992), and pg_xmin_horizon (#7004, matching the hackers thread above); 6 entries closed as committed after moving to PG20-1; 1 promoted Ready-for-Committer. - New this week: Batched clock sweep (#7000) (Greg Burd) — batches buffer-eviction clock-sweep claims on the shared
nextVictimBufferatomic so backends stop fighting one CAS-contended counter across sockets; v5 posted Jul 11, CI green. - Note: CF numbering quirk — #60 is the year-long drafts CF; the next regular CF (PG20-2) is #61.
Community pulse
- Postgres rewritten in Rust, passing 100% of the regression tests — the week's monster thread: an ex-Heap engineer's LLM-driven c2rust-then-rewrite pipeline produced a thread-per-connection Postgres claiming +50% on sysbench-tpcc and ~300x on analytics; fault lines were threads-vs-processes (a PG contributor: threads buy development ease, not speed), extension crash-isolation, "is fsync on?" benchmark skepticism, and whether an LLM rewrite is maintainable — or even properly licensed. (Hacker News · 812 pts, 721 comments)
- Prefer strict tables in SQLite — near-consensus that STRICT should be the default ran into SQLite's compatibility philosophy; the APSW author's history lesson landed best: "SQLite is competition for fopen, not Oracle/Postgres". (Hacker News · 215 pts, 105 comments)
- Why we built yet another Postgres connection pooler — PgDog's rationale (keeping SET and LISTEN/NOTIFY alive under transaction pooling) escalated into the Vitess-for-Postgres race — Supabase Multigres vs PlanetScale Neki — with PlanetScale's CEO claiming production customer moves while sidestepping the is-it-open-source question. (Hacker News · 154+ pts, 40+ comments — early snapshot)
Commercial engines (SQL Server, Oracle, MySQL, …)
- Running DuckDB as a MySQL 9.7 storage engine — experimental
ENGINE=DuckDBvia the newhandlerton::pushdown_selecthook, regenerating whole SELECTs as DuckDB SQL only when provably semantics-identical (collations, NULL order, decimal scale); TPC-H SF10 in ~15 s vs InnoDB's 1,317 s, andLOAD DATArerouted to DuckDB COPY loads 600M rows in ~20 min instead of 80. (Evgeniy Patlan · Percona)
Migration experience
- Four ways to move between Postgres Kubernetes operators — same-pgBackRest-repo standby, streaming standby, backup/restore, and PV reuse (bind the retained PGDATA volume to the new operator: full downtime but no restore — fastest for huge datasets), with a downtime/rollback/DNS-caching comparison that applies to any operator swap. (Chetan Shivashankar · Percona)
Research & cutting edge
- Breaking database lock-in: agentic regeneration of storage readers — LLM agents ingest format docs and source to synthesize direct readers of PostgreSQL/MySQL storage files emitting Arrow for DuckDB/Spark/cuDF; TPC-H-validated, up to 27x analytical throughput over JDBC — your heap format is the API now. (Giannakouris, Trummer · Cornell, AIDB @ VLDB 2026) [paper]
- Eiger: an efficient library for GPU-based data analytics — runtime-adaptive GPU operator library that keeps multiple implementations per operator and picks using on-the-fly statistics (value ranges, HyperLogLog++); up to 1.8x whole-TPC-H (SF100) and 6.1x per query vs cuDF. (Wu, Kabić, Hepkema, Mageirakos, Kozyrakis, Alonso · ETH/Stanford) [paper]
International (non-English sources)
- Postgresso #5 (90) — the Russian Postgres roundup — the RU counterpart of Postgres Weekly; this issue pins PG19 Beta 2 to Jul 16 with a Jul 11 fix cutoff. (Igor Levshin · Postgres Professional) [ru] (orig: «Postgresso #5 (90)»)
- "The Design of POSTGRES" (1986), fully translated — the Stonebraker/Rowe design paper in Russian for the project's 30th birthday: the origin document of the codebase you hack on. (Postgres Professional · Habr) [ru] (orig: «Проектирование POSTGRES: как задумывалась популярная СУБД»)
- A skeptic's read of ClickHouse Open House 2026 — dissects the managed-Postgres "5x vs RDS" claim (local NVMe vs network storage; price never compared) amid the ClickStack / Agents / IPO-prep announcements — the anti-marketing work done for you. (Maksim Yudin · Habr) [ru] (orig: «Пока все хоронили пайплайны, ClickHouse достраивал слои»)
- PostgreSQL turns 30 — commit-timestamp forensics of the birthday — first commit d31084e landed 1996-07-09 06:22:35 UTC, i.e. Jul 8, 23:22 PDT — settling the Jul 8-vs-9 debate, with a 30-year feature timeline. (Ruohang Feng · vonng) [zh] (orig: «PostgreSQL 三十岁生日快乐»)
- Instant database clones on PG18 copy-on-write —
file_copy_method = clonegives constant-time database cloning on XFS/CoW file systems, wrapped in the author's own CLI; notes Aliyun RDS just shipped the same trick. (Ruohang Feng · vonng) [zh] (orig: «瞬间克隆 PostgreSQL 数据库,无需黑魔法») - Multigres v0.1 alpha: Vitess-style clustering for Postgres, explained — Supabase's consensus/pooling/failover architecture walked through for the JP audience, with the honest caveat that v0.1 ships no sharding yet. (Junichi Niino · Publickey) [ja] (orig: «PostgreSQLをクラスタ化した分散DB「Multigres v0.1」アルファ版が登場»)
- The double life of default_statistics_target — one GUC, two jobs: ANALYZE sample size (300 × target, per Chaudhuri et al.) and MCV/histogram resolution — with a demo where 1,000 histogram buckets flip a bad index-scan plan to a 30x-faster bitmap scan. (Alain Lesage · Dalibo) [fr] (orig: «La double vie de default_statistics_target»)
New sources added this week
- pgdog.dev/blog (Lev Kokotov) — pooler/sharding internals written by the implementer.
- blog.vonng.com (Ruohang Feng) — high-signal Chinese Postgres-ecosystem essays, two strong items this week; EN mirrors at /en/. [zh]
- publickey1.jp (Junichi Niino) — server-rendered, reliably fetchable Japanese DBMS/cloud journalism. [ja]
- mariadb.org blog — MariaDB Foundation engine-level write-ups (source of the DuckDB-storage-engine line of work).
~38 items · sources scanned: postgres git via pgsql-committers archive (≈86 commits, Jul 6–11 as listed), pgsql-hackers via mail-archive per-day search (msg232612–233257, Jul 6–11), pgsql-general (index stale — nothing verifiable), pgsql-performance (mirror still silent since May 11), CommitFest #59/#60/#61 (status summaries + #61 activity live; #59 activity stale), postgresql.org news + events, Postgres Weekly #656, Hacker News (hntoplinks/hckrnews + cached item pages), arXiv cs.DB 2026-07 month listing, engine release pages (SQLite, DuckDB, MongoDB, CockroachDB, TiDB, MariaDB — none in-window), Habr + Postgres Pro [ru], vonng [zh], Publickey + SRA OSS [ja], Dalibo [fr], Cybertec DE [de] (nothing in-window) · filtered out as marketing/ads: ~12 · out-of-window: several (incl. ClickHouse 26.6, Jul 3).
Source note: no browser was connected this run, and plain-fetch caches were widely stale — Planet PostgreSQL frozen at Jul 4 (in-window blog coverage reconstructed via Postgres Weekly #656 plus direct blog fetches; Planet-only authors may be under-sampled), mail-archive index pages frozen (walked via per-day searches instead), the CF59 activity log cut at Jun 24 (flow reported via queue totals), arXiv /recent stale (the July month listing was fresh), HN item pages served from earlier cached snapshots. Lobsters, Reddit and DBA StackExchange were unreachable without a browser; pgsql-bugs has no fetchable archive for the current era and was covered via hackers cross-references. The polyglot-search backend was unavailable; Chinese/Japanese coverage came from native-language web search and direct feeds. Sunday Jul 12 had thin archive coverage — a late-Sunday commit or thread may be missing.