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
- First-draft release notes for 18.5 (and 17.11, 16.15, 15.19, 14.24) — Tom Lane posted the draft and then committed the notes across branches; the next minor release set is imminent, so this is the week to read what's landing in your production branch. (Tom Lane · pgsql-committers)
[committed] - Jeff Davis rebuilt subscription conninfo handling — a ten-commit series that removes the
conninfofield fromSubscriptionand generates the string in the caller instead, then fixes everything that fell out: build it only after checking the subscription is enabled, be precise about whenALTER SUBSCRIPTIONactually needs it, don't construct it unnecessarily inCREATE SUBSCRIPTION, revert the earlier owner-change validation, always check foreign-server USAGE when resolving the connection, stop erroring on owner change, and demote user-mapping checks to WARNING for subscription DDL. The one to backpatch-watch: Do not log subscription conninfo — connection strings can carry passwords and were reaching the log. (Jeff Davis · pgsql-committers)[committed] - PG19's referential-integrity fast path gets its shakedown — Amit Langote's SPI-free FK check needed four corrections in one week: handle a nullable referenced key, restrict the fast path to btree referenced indexes, begin the index scan under the switched user id (a privilege bug, not a tidy-up), and fire the batched checks inside the deferred-trigger loop rather than after it. A good illustration of what replacing SPI with direct scans actually costs in review. (Amit Langote · pgsql-committers)
[committed] - VACUUM's failsafe stopped abandoning its ring buffer — restored — when vacuum trips the wraparound failsafe it is supposed to drop the small buffer-access-strategy ring and use all of shared buffers; the read-stream conversion had silently lost that. Follow-up: only clear the read stream's strategy once instead of on every call. (Melanie Plageman · pgsql-committers)
[committed] - Async foreign scans left requests in flight across ExecReScanAppend — pending asynchronous requests are now drained when an Append is rescanned; backpatched across seven branches, so anyone running
postgres_fdwwithasync_capablepartitions wants this one. (Etsuro Fujita · pgsql-committers)[committed] - Hot standby accepted connections too early after a crash restart — a standby could open for queries before recovery had reached a consistent point following crash recovery. Fujii Masao also moved replication-slot checkpointing later in the checkpoint cycle. (Fujii Masao · pgsql-committers)
[committed] - Planner: a NOT IN could be turned into an anti-join on a false premise —
query_outputs_are_not_nullable()matched Vars on varno/varattno without checkingvarlevelsup, so an outer reference could be "proved" non-null by an unrelated Var of the sub-select's own range table, producing wrong answers when the outer reference is NULL. Author Rui Zhao; backpatched through 19. (Richard Guo · pgsql-committers)[committed] - pgstat hardened against OOM — three commits close a local entry leak on OOM during entry creation, a shared refcount leak in entry acquisition, and a non-OOM-safe shared hashtable insert. Michael Paquier also modernised the crypto layer for OpenSSL ≥ 3.0:
EVP_MACfor HMAC and explicit fetching for digests — the legacy routines bypass the provider framework. (Michael Paquier · pgsql-committers)[committed] - SQL/PGQ keeps shedding sharp edges — aggregates, window functions and SRFs in
GRAPH_TABLECOLUMNS crashed the backend and are now rejected; also duplicate property/label names get a proper error,GRANT ... ON TABLEon a property graph is prohibited, and a deparse bug dropped a space before WHERE. The feature is new in 19 and it shows. (Peter Eisentraut · pgsql-committers)[committed] - Master grab-bag — UUIDv6 support in
uuid_extract_timestamp()(Masahiko Sawada); an incremental tuple-deform bug with missing attributes, missingmoneyoverflow checks forINT64_MIN / -1andMCXT_ALLOC_NO_OOMignored byMemoryContextAllocAligned(David Rowley); a match-length miscalculation for localized month/weekday names, apg_surgeryinfinite loop on large TID arrays andALTER COLUMN ... DROP EXPRESSIONon subpartitions (Álvaro Herrera); oversized-record handling inxlogreader.c; concurrently-dropped relations in database-wide VACUUM (Nathan Bossart); two more online data-checksum fixes (Daniel Gustafsson); andpgoutputproto_version parsing tightened.[committed]
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-beforeto clean up the WAL archive; per-repo backup progress ininfo- 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.infochecks inverify - Breaking: only
restoremay run as root by default — everything else now errors unlessallow-rootis 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 pgcolumnaris 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
fillfactorconverts 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_pagesandignore_system_indexes. Theidle_session_timeoutentry is a useful corrective: idle sessions burn connection slots and backend memory but hold neither locks nor an xmin — it'sidle_in_transactionthat 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-createthatON CONFLICTnever quite expressed. (Shaun Thomas · pgEdge)[vendor blog — substantive] - Initial integration of Lua into psql — Pavel Stehule has a working
\luacodeprototype: 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 fast —
CREATE DATABASE ... TEMPLATEas 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 catalogs —
ClusterImageCatalogcan carry extension images alongside the operand, so aClustermanifest names an extension and the operator resolves image, paths and dependencies from one versioned source per major version. The distribution-side half of PG18'sextension_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)
- Queue (as of Aug 10): 381 entries total — 269 needs review · 44 ready for committer · 20 waiting on author · 21 committed · 23 moved to next CF · 4 withdrawn. PG20-1 (#59) has closed; PG20-2 opened Aug 1 and runs in-progress through September.
- Balance (Aug 5–9 only): ~19 new patch records · 5 closed (3 committed / 2 withdrawn) → net +14. This is a partial count: the activity log keeps only its last ~100 rows, which by the time of writing reached back to Aug 5 — Aug 3–4 had already aged out and is unrecoverable, not merely unfetched. Last week's snapshot wasn't captured either, so there is no week-over-week delta.
- New this week: Reduce WAL volume for heap tuple hint bits (Andrey Borodin) — one of six entries Borodin filed in a single sitting on Aug 7, alongside Support specialized B-tree page searches, Archive-fed logical decoding: pausing recovery on slot conflict, Avoid streaming zero-filled WAL switch padding, Small fixes needed by high-availability tools and FROM clause before SELECT. Also worth watching: Index skip-merge scan (#7116) and Split index and table statistics into different types of stats (#7113).
- Closed: GRAPH_TABLE aggregates/window/SRF crash (#7018, committed), tab completion for DROP PROPERTY GRAPH (#7093, committed), remove unused scram key-length fields (#7111, committed — filed and committed inside 48 hours), plus two withdrawals.
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 LOCKEDto 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 COMMITTEDto 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_passwordand 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 tuples —
mssql-pythongained 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
- Window Function Optimization: Co-Evaluation and Other Techniques — techniques for evaluating multiple window functions together instead of stacking one WindowAgg per frame; directly applicable to a Postgres executor that currently pays per-window sorts. (Lindner, Naumann, Lerner · PVLDB 19(11):3525–3537) [paper]
- Oasis: Hiding the Cost of Querying Parquet Files in the Datapath — pushes Parquet decoding into the data path so scan cost overlaps with I/O rather than following it. (Dann, Tagliavini, Alonso · ETH Zürich, Aug 4) [paper]
- Uplifting the Superpowers of Worst-Case-Optimal Join Algorithms — more of the WCOJ theory made practical; relevant every time a Postgres plan degenerates on a cyclic multi-way join. (Gómez-Brandón, Hogan, Navarro · Aug 5) [paper]
- Machine-Checked Dual-Write Recovery from a Committed Log — an Isabelle/HOL-verified treatment of the dual-write problem (database plus downstream store) with the formal development archived; rare to see this class of outbox-pattern argument actually proved. (Andreas Andreakis · Aug 4) [paper]
- Six Dimensions of Benchmarking Time-Series Databases — a methodology paper for an area where vendor benchmarks are the norm. (Mostafa, Melissano, Jerome, Chilingaryan, Kopmann · Aug 4) [paper]
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.