← All digests

DBMS Weekly — 2026-08-03 (week of 2026-08-03–2026-08-09)

A dense week in the commit stream. Tom Lane started drafting release notes for 18.5 / 17.11 / 16.15 / 15.19 / 14.24, so the next minor set is close. Jeff Davis spent the week tearing Subscription.conninfo out of the catalog struct and rebuilding how subscription connection strings are constructed, checked and logged; Amit Langote hammered PG19's new SPI-free referential-integrity fast path into shape; and Melanie Plageman restored a vacuum failsafe behaviour that had quietly gone missing. Outside core, pgrust claimed 300x on ClickBench and showed its homework, Andy Pavlo left CMU's orbit for ClickHouse to run a new research lab, and Andrey Borodin dropped six fresh patch records into the open CommitFest in one sitting.

PostgreSQL

Releases

  • pgBackRest 2.59.0 — the backup workhorse gets PostgreSQL 19 support and a batch of storage-layer work. (pgBackRest community, announced Aug 4 for a Jul 30 release)
    • archive-expire-before to clean up the WAL archive; per-repo backup progress in info
    • S3 Outposts, S3 process authentication, configurable STS endpoint; batch delete for Azure
    • SFTP reconnects after an idle-connection drop; user/group caching for faster manifest builds
    • systemd notify integration; backup.info checks in verify
    • Breaking: only restore may run as root by default — everything else now errors unless allow-root is set. New optional dependency on libsystemd.
  • E-Maj 5.0.0 — fine-grained write logging and time travel over table subsets; the headline change is that non-superuser roles can now install and use the extension, with the feature set scaled to their privileges. Also easier idempotent admin scripts and parameter management, and PostgreSQL 19 compatibility (supports PG 14–19). (Philippe Beaudoin)
  • pgColumnar — a new column-oriented storage extension implemented as a table access method, so CREATE TABLE ... USING pgcolumnar is the whole interface. Per-column compression, chunk-group skipping, and a vectorized aggregate path, aimed at large scans and aggregates over append-mostly data. Builds from one source tree against PostgreSQL 15 through 19, MIT licensed. Second notable extension release from Command Prompt in two weeks (plRuby was last week's). (Command Prompt · r/PostgreSQL 41 upvotes)
  • pgAdmin 4 v9.17 and Autobase 2.10 — routine releases; Autobase 2.10 adds cluster-management actions to day-to-day operations.

Reading

  • Rebuilding Postgres for 300x faster analytics: batching, operator fusion, and SIMD — the week's most instructive read, and the one to argue with. Malis walks a miniature Volcano executor through the exact optimisations pgrust 0.2 applied, measuring each step on a 500M-row SUM: Volcano 1.3 s → batching 480 ms (stack-allocated 1024-row buffer, no allocation in the loop) → operator fusion 358 ms → hand-written NEON SIMD 135 ms, ~10x overall. Postgres itself takes ~20 s on the same query. Setup is disclosed (c8g.4xlarge Graviton4, PG 18.4, max_parallel_workers_per_gather = 0, warm shared buffers, median of 5), and he's candid that fusion is hardcoding for a known query and that JIT is the general answer — deferred to a later post. The wider project claims (300x on ClickBench, 30% ahead of Postgres on OLTP, ahead of ClickHouse) are the project's own and not independently reproduced here. (Michael Malis · malisper.me · HN 335 pts / 175 comments) [unverified — the 300x/ClickBench and OLTP figures are self-reported; the per-step numbers in the post are reproducible]
  • The DISTINCT in your COUNT — one keyword switches off parallel query for the entire statement. count(*) on 10M rows fans out to four workers plus the leader; count(DISTINCT user_id) collapses to a single serial Aggregate, and no GUC or index changes that — the reason is in how the aggregate has to execute. (Radim Marek · boringsql.com)
  • What is WAL backpressure, and why does ClickHouse Managed Postgres need it? — if the WAL archiver ships slower than the workload writes, segments pile up until the disk fills and Postgres PANICs. Their answer is deliberate self-throttling: a systemd timer counts pending segments every 15 s and caps write bandwidth via the cgroup v2 I/O controller — 100 pending → 80% of baseline, 500 → 50%, 1,000 → 20% (on a 500 MB/s disk: 400 / 250 / 100 MB/s). The good detail is the caveat: a service-wide cap would also throttle the cure — the archiver draining the queue, the checkpointer that frees old WAL, even the logger — so the throttle has to exclude them. Runs entirely on the data plane, so it holds when the control plane is unreachable. (Kaushik Iska · ClickHouse, Aug 5) [vendor blog — substantive]
  • Unveiling a 13-year-old Postgres bug in cascading replication — a guard added to streaming replication back in 9.3 could lock a cascading standby out of streaming from its upstream after it fell back to archive recovery. Found while running Postgres on Kubernetes; the fix lands in 18.5 / 17.11 and friends. (Gabriele Bartolini · EDB) [vendor blog — substantive]
  • Tuning PostgreSQL HOT updates: a HammerDB benchmark — TPROC-C runs showing how table fillfactor converts non-HOT updates into HOT ones, and what that does to vacuum work and bloat growth. Numbers, not adjectives. (Avi Vallarapu · HexaCluster)
  • PostgreSQL lockup vs. stale connection: how to tell them apart — same 2am page, two completely different problems: a true lockup means no new session can start from anywhere, including psql on the box; a stale pooled connection means Postgres is fine and one socket died quietly. Worth reading before you need it. (Umair Shahid · Stormatics)
  • All Your GUCs in a Row — Christophe Pettus shipped six entries this week alone, working through ident_file, idle_in_transaction_session_timeout, idle_replication_slot_timeout, idle_session_timeout, ignore_checksum_failure, ignore_invalid_pages and ignore_system_indexes. The idle_session_timeout entry is a useful corrective: idle sessions burn connection slots and backend memory but hold neither locks nor an xmin — it's idle_in_transaction that blocks vacuum. (Christophe Pettus · thebuild.com)
  • Looking forward to Postgres 19: syntax potpourri — the unglamorous end of the release: the syntax tweaks that each save four lines of SQL, including a clean get-or-create that ON CONFLICT never quite expressed. (Shaun Thomas · pgEdge) [vendor blog — substantive]
  • Initial integration of Lua into psql — Pavel Stehule has a working \luacode prototype: define functions in psql, call them from psql. Early, but psql scripting has been stuck at \if/variables for a long time. (Pavel Stehule)
  • pgtestdb's template-cloning approach to testing is fastCREATE DATABASE ... TEMPLATE as the test-isolation primitive: each test gets a real database cloned from a migrated template, which turns out to beat both transaction-rollback and schema-per-test in practice. (Brandur Leach · brandur.org)
  • CNPG Recipe 26 — extension image catalogsClusterImageCatalog can carry extension images alongside the operand, so a Cluster manifest names an extension and the operator resolves image, paths and dependencies from one versioned source per major version. The distribution-side half of PG18's extension_control_path. (Gabriele Bartolini · EDB)
  • Turning Claude into Postgres so I can raise a Series A — an LLM behind the Postgres wire protocol, answering queries however it likes, with real storage APIs underneath. A joke that had to be built to be understood; Christophe Pettus's write-up is the better entry point. (Jacob Jackson · byteofdev.com)
  • EXPLAIN ANALYZE the PGConf.EU CFP — what reviewing 407 submissions from 228 speakers across two voting tracks actually looks like from the inside, with aggregate topic statistics and no individual proposals discussed. Useful if you plan to submit anywhere. (Mayur B. · drunkdba.medium.com)
  • 47 PGConf.dev 2026 videos are up — this May's Vancouver talks, including the 30-years panel (Momjian, Wieck, Chen, Lockhart, Lane, Mikheev), Andres Freund on profiling traps, and a live committer panel evaluating surprise patch ideas. (surfaced via Postgres Weekly #660)

CommitFest (open: PG20-2, #61)

Community pulse

  • SQLite critical CVEs, or LLM slop? — JFrog's research team walks through recently filed "critical" SQLite CVEs and argues several are machine-generated noise; the thread is the week's real argument about what happens to vulnerability databases when report volume is free. (Hacker News · 727 pts, 375 comments)
  • Zed DeltaDB — Zed's operation-level, CRDT-based store for development history, which records every edit and the conversation that produced it rather than commit snapshots. The thread is mostly systems people arguing about whether fine-grained CRDT history is a database problem or a VCS problem. (Hacker News · 527 pts, 312 comments)
  • We replaced Redis with MySQL for inventory reservations — and it scaled — Shopify's oversell-protection rewrite resurfaced this week and drew the biggest applied-database thread of the seven days. The engineering is worth the detour even though the post itself predates this window (May 12): one row per sellable unit instead of a quantity column, SKIP LOCKED to avoid contending on the same row, a bounded 1,000-row pool per item/location with inline replenishment under a lock, a composite primary key to halve InnoDB's lock count (an auto-increment PK locked both the secondary and clustered index), READ COMMITTED to escape supremum gap locks blocking replenishment, and consistent lock ordering to kill a reserve/claim deadlock cycle. The real ceiling turned out to be connection hold time in unrelated checkout code, found by tagging statements /* conn_tag:… */ and aggregating per-caller at the ProxySQL layer. (Hacker News · 340 pts, 253 comments) article
  • Is AWS RDS still worth it for Postgres, or are there better managed alternatives now? — 65 comments of managed-Postgres cost and lock-in experience; as usual the value is in the replies rather than the question. (r/PostgreSQL · 35 upvotes, 65 comments)
  • Treating SQL as the source of truth: type-safe code generated from your queries, not an ORM — 53 comments on a post sitting at zero score, which is the tell: generating types from annotated SQL rather than hand-writing them or hiding the query in an ORM is more contested than its proponents expect. The useful replies are the compromise positions — entities modelling views and table-valued functions, codegen layered onto existing ORM code — plus a sharp aside that the worst SQL in production comes from generated-then-abandoned queries either way. (r/SQL · 0 points, 53 comments)

Wider DBMS & distributed data

  • Critical unauthenticated SQL injection in Metabase — patch now — an unauthenticated attacker can inject SQL into Metabase's own application database via /api/session/reset_password and obtain admin access; from there they can read the stored credentials for every connected database and export the data behind them. Metabase confirms active exploitation. If Metabase sits in front of your Postgres, this is your Postgres. Fixed in x.58.24, x.59.21, x.60.17, x.61.11, x.62.9 and x.63.5; if you cannot upgrade immediately, block the reset-password endpoint, and revoke all active sessions afterwards if it was publicly reachable. (Metabase security advisory, Aug 6)
  • Andy Pavlo joins ClickHouse to establish ClickHouse Labs — the CMU database professor becomes VP of Database Research and will build a team doing foundational work on query processing, systems performance and data architecture — explicitly covering both ClickHouse and PostgreSQL. Announced Aug 3. Worth watching purely for where the output lands: Pavlo's group has historically published rather than shipped. (ClickHouse · HN 340 pts, 76 comments)
  • Encoding or compression: why not both? — the Umbra-lineage team on why lightweight encodings (dictionary, frame-of-reference, RLE) and general-purpose compression are complementary rather than competing, and where each pays off in a scan. (CedarDB)
  • The FastLanes Unified Transport Layout — a readable walkthrough of the FastLanes columnar layout and what "unified transport" buys over Parquet-style formats when the consumer is a vectorised engine. (David Anderson · blog.dave.tf)

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

  • Concurrency vs. throughput: why more parallelism can make databases slower — a sixteen-minute production MySQL meltdown, reconstructed minute by minute (errors/min against queries/s, from 15,000 q/s down to 1,500 at the error peak and back to 8,500 on recovery). The trigger was mundane — a batch job holding row locks for fifteen minutes — but the pile-up was not lock waits: the queued queries were simple reads, and InnoDB had to walk an ever-growing version history to build each consistent snapshot, so millisecond reads blew through a 90-second ceiling and the application retried them in a tight loop until >10,000 requests were stacked inside the storage engine. The fix is counter-intuitive and transfers directly to Postgres: reduce pool size and queue, so backpressure lands outside the engine. (Liz van Dijk · PlanetScale, Aug 7) [vendor blog — substantive]
  • Loading Parquet into SQL Server no longer has to go through Python tuplesmssql-python gained an Arrow-native bulk-insert path, so landing Parquet in SQL Server no longer means exploding the file into a tuple per row and a boxed value per cell, all under the GIL and all garbage immediately after. Niche until it's your ETL. (r/dataengineering · 17 upvotes, 13 comments)

Research & cutting edge

International (non-English sources)

  • ggrebalance part 3: executing the rebalance — the execution half of the segment-rebalancing tool for Greengage DB (an open-source Greenplum fork): the state machine that physically moves primary and mirror segments between hosts, status tracking, failure handling and reentrancy, rollback, and an honest comparison against the alternatives. (saltysalsaparadox · habr.com) [ru] (orig: «ggrebalance: Часть 3. Выполнение ребаланса»)
  • Disk-full in the database: scenarios and defences — the failure teams underprepare for while they obsess over HA: what actually fills the disk (WAL partition, temp files, bloat), why it stays invisible until writes stop, and what to put in place beforehand. (Alexander Shmelev · VK Tech · habr.com) [ru] (orig: «Переполнение диска в БД: обзор сценариев и механизмов защиты»)

Upcoming events

  • PGDay UK 2026 — London, September 8 — one day, two tracks, Cavendish Conference Centre; schedule is up and registration is open. Internals picks:
    • A look at the Elephant's Trunk — PostgreSQL 19 (Magnus Hagander) — the pre-GA feature tour from someone who has given it for a decade; useful calibration on what actually made 19.
    • Building a truly compatible Postgres proxy: the Multigres story (Haritabh Gupta, Supabase) — wire-protocol fidelity is where every proxy and pooler eventually breaks; a first-hand account of what "compatible" costs.
    • Operational hazards of managing PostgreSQL DBs over 100TB (Teresa Lopes, Adyen) — the failure modes that only appear past the point where the usual advice stops applying.

New sources added this week

  • malisper.me — Michael Malis's pgrust series: a Postgres reimplementation in Rust, written up with per-optimisation measurements and disclosed benchmark setups. Treat the headline multipliers as self-reported, but the engineering write-ups are first-rate. (Michael Malis)
  • CedarDB blog — the Umbra/TUM lineage writing about storage encodings, compression and vectorised execution without a sales pitch attached.
  • HexaCluster blog — Avi Vallarapu's team publishes benchmark-backed Postgres tuning work (this week: HOT updates under HammerDB TPROC-C) rather than checklists. (Avi Vallarapu)
  • pgmi articles (Alexey Evlampiev) — short, sharply argued pieces on schema-migration mechanics: lock queues, transaction boundaries, CREATE INDEX CONCURRENTLY's two different refusals. Tool-adjacent but the reasoning is about Postgres, not the tool.

~46 items · sources scanned: Planet PostgreSQL (live, newest item Aug 9 — covered the full window), pgsql-committers via mail-archive (thread index fresh through Sun Aug 9; msg47693–47873 ≈ this week's commits, boundary timestamps verified in −0700), postgresql.org news archive (5 in-window posts), CommitFest PG20-2 queue totals + activity log, Postgres Weekly #660, live HN via the Algolia API (verified points/comments over the Aug 3–9 epoch window), Lobsters /t/databases, seven subreddits' top-of-week via the read-only JSON API (r/PostgreSQL, r/SQL, r/Database, r/databasedevelopment, r/dataengineering, r/programming, r/ExperiencedDevs), DBA Stack Exchange via the API (scanned, nothing cleared the bar — the week's top question drew 5 points and one answer), arXiv cs.DB recent (Aug 3–7 fully enumerated), Habr PostgreSQL hub [ru], blog.vonng.com [zh], blog.dalibo.com [fr], publickey1.jp + Qiita [ja], cybertec-postgresql.com, postgresql.org events + PGDay UK schedule · filtered out as marketing/ads: ~11 (an AI-frameworks series, two agentic-AI-on-Postgres positioning posts, a partnership press release, a sponsor slot, a cloud-migration calculator, an LLM-retrieval benchmark on a database vendor's blog, assorted product announcements) · out-of-window but surfaced this week: Shopify's inventory-reservation rewrite (May 12, in Community pulse for its thread), Snowflake's COUNT(DISTINCT) approximation guide and Mark Wong's performance-farm update (both Jul 31, via Postgres Weekly).

Source note: rebuilt with a browser after an initial no-browser pass; the browser materially changed the result, so the earlier caveats are superseded. Live HN via the Algolia API surfaced three significant items that a weekly top-60 scrape had missed entirely (pgrust's 300x write-up, the Shopify Redis→MySQL thread, and verified engagement on the ClickHouse Labs announcement), and Lobsters plus the database subreddits added four more. Mailing lists — pgsql-hackers/-bugs/-performance archives were still not usably reachable; coverage is the pgsql-committers stream, i.e. what actually landed, with committer names and dates verified per message. CommitFest — reachable and fresh, but both the global and per-CF activity logs keep only ~100 rows, so Aug 3–4 had already rolled off; that gap is data retention, not access, and the lesson (capture flow early in the week) is recorded in commitfest-state.json. Queue totals come from the authoritative /61/ status-summary line. International — the non-English ecosystems were scanned and were genuinely quiet, which is not the same as unscanned: blog.vonng.com [zh] had nothing newer than Jul 23, blog.dalibo.com [fr] nothing since Jul 30, publickey1.jp [ja] published nine in-window posts with no database item among them, Qiita's [ja] PostgreSQL tag had a single in-window post (a beginner psql-vs-SQL*Plus comparison, below the bar), and Cybertec's in-window output was one partnership announcement (filtered) plus the CNPG how-to listed above. modb.pro [zh] remains the one source not enumerated — its front page is a client-rendered SPA whose article list did not expose dated entries to either extraction path. Reddit redirects to a login/consent wall in the browser, but no account is needed: the read-only top.json / <permalink>.json endpoints serve scores, comment counts, self-text and comment bodies unauthenticated, so no banner was accepted and nothing was signed into. A seven-subreddit sweep on that path produced four items nothing else surfaced — the Metabase advisory, pgColumnar, the ClickHouse WAL-backpressure post and the SQL-codegen debate — which makes Reddit a first-class source here rather than a nice-to-have.