DBMS Weekly — 2026-09-14 (week of Sep 14–20)
The week PostgreSQL 19 lost its last flagship feature, and the week a review technique stopped being
a novelty. Online data checksum transitions were reverted in full from REL_19_STABLE on 16 September —
30 commits backed out — after an LLM review run by Noah Misch surfaced that the feature works through
pg_class and therefore never touches orphaned relation files left behind by a crash; Robert Haas
confirmed Postgres has no orphan-file cleanup at all, so any cluster that had ever crashed mid-CREATE
would have started failing base-backup page verification with no tool to fix it. The revert itself then
broke the buildfarm. The same pattern ran through the rest of the week: Richard Guo filed six distinct
planner crashes in seven days from fuzzing join-alias expansion, most reproducing back to v14; Jeff
Davis filed three independent wrong-results bugs (Gather rescan losing its tuple bound, MERGE …
WHEN NOT MATCHED BY SOURCE racing a DELETE, TID range scans after scanning backwards); and Haas
LLM-probed eager aggregation into three real bugs plus a semantics question the thread had to settle by
hand. Outside the tree, PlanetScale shipped TIN — a full-text index that stores raw ctids so segment
merges move bitmaps instead of renumbering docids — and got a 95-comment argument about what building
proprietary software on Postgres owes upstream; MariaDB 13.0 went stable with DuckDB as a pluggable
storage engine (gamma quality, explicitly not production); and a volunteer took Simplified Chinese
message catalogs from 66% to 100% across PG 14–19 in seven days, merged upstream on 18 September, finding
two genuine format-string bugs in the old translations on the way.
PostgreSQL
- Introducing TIN: full-text search for Postgres — the week's most substantial index-design write-up: postings are raw
ctids so merges transfer bitmaps instead of renumbering segment-local docids, two-level page/offset bitmaps are sized to AVX2/AVX-512 registers, and MVCC correctness comes from visibility-map intersection plus a per-segment liveness bitmap cleared by VACUUM; benchmarks against ParadeDB, pg_textsearch and GIN disclose instance type, container limits, corpus and harness. (Eric Ridge, Patrick Reynolds · planetscale.com)[vendor blog — substantive] - The architecture of Neki — component-by-component teardown of sharded Postgres on an unmodified server: one "authoritative shard" as the source of truth for custom-type OIDs across shards, three distinct sidecar pooling lifetimes (autocommit / open transaction / session advisory lock),
pg_rewind-based failover, and Reshard/MoveTables/OnlineDDL all riding a single logical-decoding CDC path. (Harshit Gangal · planetscale.com)[vendor blog — substantive] - 19th Nervous Breakdown — the sharpest account of why PG19 fell over: eight major features landing in the five weeks before freeze, and three committers ending up withdrawing their own work. (Christophe Pettus · thebuild.com)
- Looking Forward to Postgres 19: Epilogue — the author of the twelve-part PG19 preview walks back through his own series revert by revert, naming commits and committers (SQL/PGQ pulled by Peter Eisentraut 2026-09-07, MERGE/SPLIT PARTITION by Alexander Korotkov 2026-08-27, non-text output formats for
pg_dumpallby Andrew Dunstan 2026-06-15, commit7ca548f23a), anchored on Haas's "scary patch contest" thread. (Shaun Thomas · pgedge.com) - PostgreSQL 19: Sept 08 – Sept 16, 2026 — ground truth rather than commentary: 71 commits on REL_19_STABLE, 46 on master, 74 commits withdrawn across 6 reverts, window closing at
d8408e8d682. The cheapest way to fact-check every "PG19 lost feature X" claim this week. (Joshua Drake · commandprompt.com) - Where PostgreSQL stores row locks —
pageinspectwalkthrough showing thatSELECT … FOR UPDATEand FK checks write the locker's xid intot_xmaxwitht_infomaskflags, so every "row lock" is physically a page write; captured on a real 18.6 container with runnable SQL. (Radim Marek · boringsql.com) - Your agent is reading someone else's tenant — reproduces, with psql transcripts, a second client inheriting
app.tenantthrough a PgBouncer transaction-mode backend and reading another tenant's RLS-protected rows; ties it to the 2026-07-28 MCP spec change that removed the session from the protocol. (Mikhail Shytsko · seedfa.st) - Plan Advice in PostgreSQL 19 — hands-on with
pg_plan_adviceandpg_stash_adviceon a real 19beta3 build: plan capture, selective enforcement, automatic application by query id, and why the two extensions go in different preload lists (pg_plan_adviceinsession_preload_libraries,pg_stash_adviceinshared_preload_librariesso advice survives a restart). (Dimitri Fontaine · tapoueh.org) - Postgres development activity — three decades of charts on commit counts and insertions/deletions, and 28 years of pgsql-hackers traffic; list volume has grown far faster than commit throughput, which is the quantitative version of this week's release-process argument. (Tomas Vondra · vondra.me)
[by committer] - PostgreSQL CommitFest metrics: PGConf.dev 2026, part one — write-up of the Angelakos/Scherbaum study of what actually happens to a patch after submission, pulled from the CommitFest app; deliberately observation over diagnosis, closing with modest suggestions about making formal closure easier rather than a list of fixes. (Jimmy Angelakos · vyruss.org)
- Knowing when your composite index earns its write cost — prices both sides with numbers:
pgstatindexleaf density 90.1% for(ts)vs 57.6% for(tag_id, ts DESC)built by inserts, 699 MB vs 834 MB WAL over 5M inserts, pgbench 12,623 → 11,639 inserts/sec (−7.8%) — and is honest that its first run understated the penalty at 4.7% because the index still fit inshared_buffers. (NanoHertz Communications · tigerdata.com)[vendor blog — substantive] - Sizing an OLTP TPC-E-like workload, part 1 — systematic DBT-5 scale-factor sweep on EC2 from 5,000 to 97,000 customers with 1→2× logical processors in user count and a 1-hour steady state per run; best result at 32,000 customers / 24 users, harness and results published. (Mark Wong · markwkm.blogspot.com)
- Troubleshooting row lock contention in Aurora PostgreSQL — how row lock contention collapses throughput while CPU and I/O both look healthy, traced with the built-in views,
pgrowlocksand lock-wait logging; part 2 covers query termination, timeout parameters,SKIP LOCKEDand row splitting. (Sameer Kumar, Sabesan Manivasakan · aws.amazon.com) - All your GUCs in a row: max_notify_queue_pages — explains why the GUC exists at all rather than restating the docs: the cluster-wide LISTEN/NOTIFY SLRU queue under
pg_notify/stopped being self-limiting after PG16. (Christophe Pettus · thebuild.com) - pgColumnar 1.0-alpha4 — fourth alpha of the columnar table access method, themed on layout and skipping. (Joshua Drake · commandprompt.com)
- tables can be laid out on a Hilbert curve, which keeps neighbouring keys closer than Z-order
- star-schema joins now skip fact-table groups
- previous release 1.0-alpha3 on 2026-09-02
PostgreSQL mailing lists
- [hackers] Revert online data checksum transitions — one of PG19's flagship features backed out of REL_19_STABLE in full on 16 Sep (30 commits, kept in master for a v20 retry), and the revert immediately broke the buildfarm because
pg_control_checkpoint()was left declaring 20 output columns against a 19-elementvalues[]array. (Daniel Gustafsson · pgsql-hackers)[committed] - [hackers] Trying to break online checksums with LLMs — the reason for that revert: online checksum enabling works through
pg_classand so never touches orphaned relation files left by a crash, meaning any cluster that crashed mid-CREATE would start failing base-backup page verification with no cleanup tool — Haas confirmed Postgres has no orphan-file cleanup at all, and the RMT agreed to revert on 15 Sep. (Daniel Gustafsson / Robert Haas, on Noah Misch's review · pgsql-hackers)[committed] - [hackers] Issues with eager aggregation — LLM-probing Richard Guo's eager aggregation turned up three real bugs, including a wrong-grouping bug where
get_expression_sortgroupref()reuses a grouping key'sSortGroupClausefor an EC-equal Var of a different type, so 5 and 65541 land in the same group; the semantics question (eager aggregation can make a working query raise division-by-zero) was settled as no worse than existing qual pushdown, to be handled by a documentation note rather than a code change. (Robert Haas · pgsql-hackers)[patch posted] - [hackers] Unprocessed SubLink from whole-row join alias expansion — one of six distinct planner crashes Guo filed in seven days from fuzzing join-alias expansion (
no relation entry for relid 3,too late to create a new PlaceHolderInfo,unsupported join alias expression,SubPlan found with no parent plan, lateral refs hidden in join Vars, and this one), most reproducing back to v14/v16. (Richard Guo · pgsql-hackers)[patch posted] - [hackers] remove_useless_joins vs. bug #19560 — long-running thread resolved: the PlaceHolderVar preprocessing fix runs in
preprocess_expressionright beforeSS_process_sublinks, so each upper-level PHV is preprocessed exactly once and always after join-alias expansion; back-patched to v16, plus a second fix for avarnosynassertion from2ebf25e7d. (Richard Guo / Tom Lane · pgsql-hackers)[committed] - [hackers] Routed ON CONFLICT inserts broken by partition-local deferrable unique constraints — PG19 open item cleared just ahead of the beta4 freeze with a new
IsIndexCompatibleAsArbiter()comparison; while reviewing, Álvaro Herrera documented a separate long-standing bug — with a non-deterministic collation,ON CONFLICT (x)works but theON CONFLICT ON CONSTRAINTform throws an error it shouldn't, broken in 18 and earlier and still broken after this fix. (Álvaro Herrera / Zsolt Parragi / Mihail Nikalayeu · pgsql-hackers)[committed] - [hackers] Reject WAIT FOR earlier in transaction-snapshot mode — the docs claimed
WAIT FORis rejected above READ COMMITTED, but it was accepted in REPEATABLE READ and SERIALIZABLE as long as no snapshot had been taken yet; fix pushed 18 Sep and the PG19 open item closed. (Sami Imseih / Alexander Korotkov · pgsql-hackers)[committed] - [hackers] Regression tests failures due to concurrent grants — intermittent
ERROR: tuple concurrently updatedin the publication/subscription tests traced to GRANT taking no object lock at all, so two concurrent GRANTs on the same database race; the discussion turns on whether a self-exclusive lock would be needed before everyCatalogTupleUpdate()of a GRANT-affectable row. Reported once before and declined, now reopened. (Andres Freund · pgsql-hackers)[open] - [bugs] Gather rescan keeps the first scan's tuple bound in workers — silent wrong results on every supported branch: a Gather or Gather Merge under a parameterised Limit, rescanned as the inner side of a nested loop or LATERAL, keeps the first scan's tuple bound in its workers, so later scans return too few rows — or, over a Sort, the right number of the wrong rows. (Jeff Davis · pgsql-bugs)
[patch posted] - [bugs] Wrong results: MERGE WHEN NOT MATCHED BY SOURCE — racing a concurrent DELETE under READ COMMITTED inserts a null-source row; affects 17+. Dean Rasheed has a fix ready but is holding the push until the 19 beta wraps. (Jeff Davis / Dean Rasheed · pgsql-bugs)
[patch posted] - [bugs] TID range scans can return wrong results after scanning backwards —
rs_numblocksis spent as a budget in both directions, so a backward scan eats the forward scan's allowance; back to v14, and the third independent AI-found wrong-results bug from the same person in one week; Ewan Young posted a direction-change fix on 17 Sep. (Jeff Davis · pgsql-bugs)[patch posted] - [hackers] Opportunistic pruning is lost under direct I/O — the benchmark that had to be thrown away and came back stronger: Melanie Plageman called the original setup contrived (with 1024 buffers,
MaxProportionalPinsleft ~9 pins per backend, so the read stream never looked ahead), so shihao zhong re-ran at pgbench scale 1000 and got missed-prune rates of 66.7%/54.1% with direct I/O against 4.6%/3.2% without — "I would not call that a corner case." (shihao zhong / Melanie Plageman · pgsql-hackers)[open]
CommitFest (open: PG20-3, #62)
- Balance (Sep 14–20): ≥26 new · ≥7 closed (7 committed / 0 withdrawn / 0 rejected) → net ≥ +19. (The per-CF activity log caps at 100 rows and its oldest entry is 2026-09-14 02:15, so the first 2h15m of the window is clipped — both counts are lower bounds.) Queue at scan time: 74 needs review · 7 waiting on author · 10 ready for committer.
- New this week: Add get_actual_variable_range index page read limit (Peter Geoghegan) — splits an
INDEX_PAGES_LIMITout of the long-runningVISITED_PAGES_LIMITthread, after Mark Callaghan's insert benchmark showed the existing 100-heap-page limit is ineffective once dead index tuples pile up on queue-like tables; deliberately leaves standby behaviour unchanged because LP_DEAD bits can't be set during hot standby. Also created: Report pruning statistics in pg_stat_all_tables, Combine qual-based and NOT NULL proofs when reducing outer joins, Improve hash aggregate spilling by writing only the needed columns, Discard aborted updaters when expanding a multixact, pg_rewind does not rewind diverging timelines, postgres_fdw: fix cost estimation for semi join pushdown, Use bounded GIN pending-list cleanup in parallel autovacuum, pg_walinspect: locate and list WAL by time and LSN. - Closed (all committed): REPACK (CONCURRENTLY) decoding worker is canceled by lock_timeout (→ Herrera), Reject WAIT FOR earlier in transaction-snapshot mode and Improve WAIT FOR read-your-writes consistency doc (→ Korotkov), pgoutput: schema cache cleanup after streamed 2PC (→ Sawada), SHMEM_ATTACH_UNKNOWN_SIZE reaches InitShmemIndexEntry() (→ Linnakangas), plus two doc fixes. The last two were created and committed inside the same week.
Community pulse
- Is PG19's late revert spree the project breaking, or working as intended? — after SQL/PGQ, MERGE/SPLIT PARTITION, GROUP BY ALL and the CREATE SCHEMA work were all yanked post-beta, the thread split three ways — "this is 'it's done when it's done' done right", "the cycle should be feature-driven, not calendar-driven", and one reading it as a reaction to code that's easy to write and hard to test. Nobody defended shipping the reverted patches. (r/PostgreSQL · 92 pts, 17 comments)
- Can a 4B model pick better query plans than the planner? — the correctness objection closed fast: any hint
pg_hint_planaccepts still yields a valid plan for the query, and its debug log tells you whether the hint was used at all. What the thread then argued about was staleness — the hints are generated offline (~95 hours on a 2×H100 node, $1,200 all in) and go stale the moment stats or workload shift — with Steinar Gunderson pushing back on the premise that Postgres assumes uniform distributions when it keeps histograms and MCVs. It landed as a plausible offline advisory/CI tool, not a runtime planner. (Hacker News · 696 pts, 143 comments) - "Full-text search for Postgres" that only runs on the vendor's cloud — within half an hour the top comment established that the open
planetscale/leadbuild is a syntax-compatibility stub with different performance characteristics, and the thread turned into a real open-source ethics fight, with TIN's own author arguing a moral obligation to the upstream you build on. Unresolved: "open source is a license, not a moral framework" versus "we live in a society." (Hacker News · 225 pts, 95 comments) - CTEs vs subqueries vs temp tables, and no consensus at all — the week's highest-comment database thread: "CTEs, because I don't have temp-table privs and they're easier to optimise and troubleshoot" (+109) against a large temp-table camp arguing materialisation wins when you touch the data twice and you can validate stage by stage. Platform-specific war stories carried the most weight. (r/SQL · 93 pts, 107 comments) — the framing is a karma-farm template from a two-week-old account; the commenters are real practitioners.
- When does a database become too complicated to operate? — the thread rejected the premise ("you don't add replication for funsies") but produced the week's best war story: someone deleted indexes that made the system 5% faster because they were the primary source of outages. Agreed failure mode was accreted bolt-on design plus missing documentation, not any one feature. (r/Database · 44 pts, 22 comments)
- Is self-managing Postgres on a VPS actually worth it? — a hard yes with receipts: a 500 GB production DB behind a multi-million-ARR SaaS untouched for six years, plus a 4 TB instance doing ~1 TB of upserts/day. The counterweight was procedural rather than technical — you need tested backups, patching and DR policies, and you need them on a managed provider too. (r/PostgreSQL · 37 pts, 23 comments)
Wider DBMS & distributed data
- Keeping up with AI: Valkey security in 2026 — the project published more security advisories in the first eight months of 2026 than in its first twenty-one months combined, because AI made bug-finding cheap; a project-side account of how triage and disclosure had to adapt. Every OSS database is about to hit this curve. (Valkey project · valkey.io)
- Trying DuckDB for Magento analytics: one million orders — the same two real Magento report queries across three storage configurations: 18.464 s all-InnoDB, 8.267 s with orders on DuckDB, 0.292 s with orders and items on DuckDB. A concrete data point on row-store and column-store coexisting inside one engine. (Roman Nozdrin · mariadb.org)
Commercial engines (SQL Server, Oracle, MySQL, …)
- MariaDB 13.0 is now stable — (Frédéric Descamps · mariadb.org)
- headline: DuckDB usable as a pluggable storage engine — columnar, vectorised analytical execution alongside InnoDB, joinable in one statement — shipped as
MariaDB-duckdb-engine13.0.2 but gamma quality, not production - also:
QB_NAME()optimizer hint, richer optimizer/metadata visibility, InnoDB log archiving (innodb_log_archive), Performance Schema digest changes, binlog/replication work - did not make it: optimizer trace showing the statistics actually used (MDEV-38701), atomic
CREATE OR REPLACE TABLE(MDEV-25292) - 604 commits and 335 MDEVs between RC and stable; rolling release, explicitly not LTS
- headline: DuckDB usable as a pluggable storage engine — columnar, vectorised analytical execution alongside InnoDB, joinable in one statement — shipped as
- When did this transaction happen? PostgreSQL snapshots, LSNs, Oracle SCNs, and more — long-form cross-engine comparison of how each system stamps and orders commits; the kind of side-by-side that makes Postgres's own design choices legible by contrast. (Franck Pachot · dev.to/franckpachot)
- Learn PostgreSQL extensibility through a gloriously bad idea: MM/DD/YYYY native datatype — builds a deliberately terrible native datatype end to end as a teaching device for the type-system machinery an extension actually has to touch. (Franck Pachot · dev.to/franckpachot)
Migration experience
- Inspecting a catalog with pg_migrate — why
information_schemais not a usable universal source for reconstructing a data model, and how PostgreSQL Migrator 1.0's offline catalog snapshots the Oracle catalog so migration analysis stops requiring a live source connection. Written by one of the tool's three authors, who has been on the project since 2024. (Florent Jardin · fljd.in)
Research & cutting edge
- How can we shrink the family of test databases? Query containment with nulls and comparisons — containment for conjunctive queries under SQL's three-valued NULL semantics and order comparisons is Π₂ᵖ-complete and normally needs an exponentially large family of test databases; they shrink it to be exponential only in a small variable set (NP when that set is constant-size) and show the combined test is FPT in three local parameters — a route to certifying rewrite equivalence with real NULLs using ordinary query evaluation. (Sternbach, Cohen) [paper]
- FastPair: GPU-optimized string decoding — reorganises dictionary-code lookups so decoded substrings are written contiguously, beating NVIDIA's on-die fixed-function decompression engine by 2.4–4.2× on ten real string columns (up to 1.6 TB/s on a B300); the win comes from memory-access shape, not a better codec. (Isaacs, Gargiulo, Boncz, Kruszewski, Gates, Venturini, Manning, Prammer) [paper]
- Chronos: efficient bolt-on branching across data stores for stateful agentic applications — interval-based versioning implemented purely as query rewrite plus a branch manager sitting beside each engine, so branching and merging work unmodified on PostgreSQL, SQLite, DuckDB and Qdrant; up to 16.7× faster than prior approaches on MCTS-style exploration, and it prevents partially visible cross-store merges — at some per-query rewrite cost. (Zhou, Mohoney, Madden, Stonebraker, Cao) [paper]
- Distribution-aware distributed database testing — argues existing DBMS fuzzers, built for centralized engines, mostly generate queries that fail to execute or never reach distribution-specific plans; varying logical schema × data-distribution strategy with historical feedback found 31 previously unknown bugs in four production distributed DBMSs, 28 of them in distributed query processing and optimization. (Zhou, Liu, Wei, Zhang) [paper]
- SKYE: write-optimized key-value store with fine-grained control over persistent-memory access — deliberately gives up direct application access to PM: requests go to dedicated threads that control per-NVDIMM placement and limit remote NUMA traffic, reaching 2.5–5× over state-of-the-art PM stores on YCSB with a single NVDIMM, and ~86% of PM write bandwidth once spread over four NVDIMMs across four NUMA nodes. The lesson generalises past PM — unrestricted thread-level device access can cost more than the indirection saves. (Ponnapalli, Lee, Kadekodi, Chidambaram · UT Austin) [paper]
- ZigZag Trie: a new index for contextual queries — a linear-size full-text index (O(n log n) construction) that reorders the text so all left/right contexts growing symmetrically around a pattern land in one subtree, giving optimal-time answers for three of its four context-query classes and near-optimal for the fourth; validated on billion-letter datasets at comparable index size. (Li, Gibney, Thankachan, Shah, Loukides, Pissis) [paper]
- Fast label-filtering ANN search via progressive label-set stratification — a label-stratified similarity graph whose edges only connect vectors in the same label-similarity tier, with MinHash keeping label handling scalable; measured as hitting ideal optimality for equality filters, and 1.06–92.9× faster on containment (1.08–84.1× on overlap) at equal accuracy with 0.35× index size. Directly relevant to the filtered-vector-search problem in pgvector. (Wang, Zhang, Shen, Hu) [paper]
- Scalable triangle counting: the threshold algorithm — read a random-order edge stream until Q triangles appear, then output Q·(m/S)³; no a priori estimate and no prescribed memory budget, because the stopping rule self-selects. On a 1.8×10⁹-edge graph it reads 0.46% of the stream for 3.8% error — and the paper is honest that at a fixed stored-edge budget, variance-reduced reservoir samplers are often more accurate — just only after a full pass. (Etgar, Gilbert, Liu, McGregor) [paper]
International (non-English sources)
- Simplified Chinese Postgres messages went from 66% to 100% in seven days, after seven years untouched (EN mirror) — zh_CN sat at 66% and zh_TW at 70%, below the 80% threshold for shipping, and both were on the July pgsql-translators list of languages at risk of being dropped from PG19; the author volunteered on 11 Sep and by 17 Sep had submitted all PG 14–19 catalogs (162 files, 67,487 messages, zero fuzzy, clean
msgfmt --check --check-format), merged by Peter Eisentraut on 18 Sep. The interesting part is the two real bugs found in the old translations:pg_ctl'sinvalid binary "%s": %msilently dropped the%m, and anecpgmsgid with one%shad a translation using%1$s/%2$s, reading an argument that was never passed. (Ruohang Feng · blog.vonng.com) [zh] (orig: PostgreSQL 中文版来了) - 5 TB dropped: single-node Docker PolarDB-for-PostgreSQL in production, no backups — several terabytes gone including the data dictionary, and contacts of the author's at Alibaba Cloud told him there is no data-recovery service for the PolarDB-for-PG kernel; recovery was handed to the author of PDU and was past 70% at time of writing. The back half is a consulting pitch; the failure anatomy in the front half is real. (Ruohang Feng · blog.vonng.com) [zh] (orig: 删库 5 TB)
- A TiDB Region is not a shelf slot — it's a book-number range that splits, moves and merges — corrects the most common beginner mental model: a Region has no dedicated file, no dedicated process and no fixed physical home; it is a key interval plus the Raft multi-replica state responsible for it, living at the TiKV KV layer and deliberately not aligned with SQL tables. (TiDBer_wangwenjing · TiDB Community) [zh] (orig: TiDB 的 Region:不是书架格子,而是一段会"分裂、搬家、合并"的图书编号区间)
- Dewu's TiDB upgrade: five years self-hosted, 5.3.3 → 7.5.x, and two optimiser regressions — cluster survey, pre-upgrade validation, traffic migration during the upgrade and teardown after — and, unusually for a vendor-channel post, it names two things that got worse on 7.5.x: queries tending toward full table scans, and inaccurate execution plans for aggregate queries. (Dewu DBA team, posted by Billmay表妹 · TiDB Community) [zh] (orig: 【最佳升级实践指南】得物TiDB升级实践)
- Anatomy of FASTTRUNCATE: what 1C actually does with temporary tables in Postgres —
FASTTRUNCATE, a 1C vendor-patch function rather than anything in core, accounted for 12.9% of CPU time over 24 hours on a 700 GB production ERP base; walks through the platform's temp-table handling, whyУНИЧТОЖИТЬin a query destroys nothing, and what changed in 8.3.25. (alex7six · Habr) [ru] (republished 2026-09-15; the author notes the text dates from 2024) (orig: Анатомия FASTTRUNCATE: как 1С работает с временными таблицами в PostgreSQL) - Four in one transaction: lock ordering, PgBouncer under Prisma, and a replica showing an empty inventory — concurrency write-up from a CS2 case-opening site: what happens when several people move the same money at once, the lock ordering that keeps it deadlock-free, PgBouncer behaviour under Prisma, and a replica-read rule the author argues cannot be expressed in the type system. (i_alakey · Habr) [ru] (orig: Четверо в одной транзакции: кейс-батлы, PgBouncer под Prisma и реплика, которая показывает пустой инвентарь)
- Apache Iceberg: the catalog is where power over your data actually sits — argues the lakehouse "your data is vendor-neutral" story breaks at a layer nobody looks at: the catalog holds the pointer to the current table version plus access rights and temporary storage keys, so whoever owns it decides which engines can see your data. (Maxpiter · Habr) [ru] (orig: Apache Iceberg: Индиана Джонс и Каталог судьбы в Lakehouse)
- Calling an external API from Aurora PostgreSQL:
aws_lambda.invokeis the only door, and batching gives 72× — verifies empirically that Aurora PostgreSQL 17.9 ships nohttp/pgsql-http,pg_net,plpython3uorplperlu(the control file is absent, i.e. the binary isn't there rather than being blocked), then measures batching on 1,000 rows: 482.6 s at N=1 down to 6.7 s at N=100, with accuracy flat and round-trip only 476 ms → 670 ms. (asahide · Qiita) [ja] (orig: Aurora PostgreSQL から Jev を呼んでみた) - Dalibo training manuals, version 26.09 — quarterly refresh of the open-access PostgreSQL manuals (PDF, ePub, HTML, free): administration, backup and replication, HA, performance, indexing, advanced SQL. New this quarter: CNPG1 on running Postgres in Kubernetes with CloudNativePG, and DEV1, an SQL primer. (Dalibo · blog.dalibo.com) [fr] (orig: Manuels Dalibo : sortie de la version 26.09)
- From relational databases to hybrid lakehouse systems — a long-form German feature on how vector search, real-time processing and dynamic scaling are reshaping architectures around relational engines. (Dr. Andreas Weininger, Sascha Slomka · heise online) [de]
[unverified](heise+ paywalled — only the standfirst and table of contents were readable, so the argument is not summarised here) (orig: Der Weg von relationalen Datenbanken zu hybriden Lakehouse-Systemen mit KI-Hilfe)
Upcoming events
- PGConf.EU 2026 — Valencia, Spain, 20–23 October — the biggest European Postgres event, with a dedicated Postgres Internals track. Internals picks:
- Batched and Vectorized Execution in the PostgreSQL Executor (Amit Langote) — the long-running attempt to give the executor a batch interface without forking it; the design constraints here decide what a vectorised Postgres can look like.
- Signals, Latches, and Interrupts (Heikki Linnakangas) — the plumbing every backend depends on and almost nobody reads; directly relevant if you write anything that has to be interruptible.
- Designing a new SQL language feature: Key joins (Andreas Karlsson, Joel Jacobson) — a walk through what it actually takes to get new syntax through the parser, the planner and the standards argument.
New sources added this week
- commandprompt.com/blog — the best find of the run: a weekly commit-level ledger of REL_19_STABLE and master (counts, revert counts, the closing commit hash), plus real release notes for pgColumnar. The cheapest way to fact-check any "PG19 lost feature X" claim. (Joshua Drake)
- markwkm.blogspot.com — TPC-E / DBT-5 benchmark work with published harnesses and result repositories; appears on Planet but was never pinned here. (Mark Wong)
- snowflake.com engineering — Open Source — where the Crunchy Data Postgres writing has landed post-acquisition; filter the non-Postgres categories hard.
- clickhouse.com/blog — real Postgres-adjacent engineering from Gülçin Yıldırım Jelínek and Sai Srirampur (physical-WAL-to-ClickHouse replication, with benchmarks); heavy product mix, worth a filtered watch.
- babel.postgresql.org — not a news source, but the NLS translation-status dashboard is the primary artefact behind this week's biggest Chinese-language story and a useful standing reference.
63 items · yield — mailing lists: 869 messages in window (730 hackers / 106 bugs / 0 performance / 33 general) → 22 shortlisted → 12 published · blogs: 55 posts in window → 30 shortlisted → 21 published · community: ~370 threads viewed → 12 shortlisted → 6 published · research: 22 cs.DB preprints in window → 10 shortlisted → 8 published · international: ru 17→6→3, zh 21→7→4, ja 14→3→1, fr 1→1→1, de 2→1→1.