Skip to content

PostgreSQL 19 slips because AI review finds more bugs than anyone has time to fix

Published on 16 October 2026

Silueta de una persona de espaldas clasificando en bandejas un largo rollo de papel que sale de una impresora, con un calendario y un reloj de arena al fondo.

PostgreSQL 19 isn't shipping in October. It's now expected around 19 November, and eight to ten significant features have been pulled along the way. The reason given by one of the project's leading committers is what makes this worth reading: LLM-assisted code review surfaced more defects than there was time to close before the date.

What happened

The release was slated for late September or early October. It's now expected to be generally available around 19 November. Peter Eisentraut, a VP at EDB and a leading PostgreSQL committer, explained it on his blog, and The Register picked it up.

There are two different things mixed together here, and it's worth separating them:

  • Serious architectural defects in some of the reverted features. You don't patch your way out of those mid-beta.
  • A long tail of minor problems, fairly harmless edge cases that in the old days would have trickled out over the five years following launch, one bug fix at a time.

The second part is the new thing. Eisentraut describes it with a very recognisable image: you end up staring at a list of forty defect reports and, even if each one is a three-line fix on average, each one carries its own fixed overhead — reproduce it, write the test, get it reviewed, decide whether it goes to older branches — and the clock runs out.

His diagnosis is that the quality bar rose after the code was written and committed: when the big features were developed, LLM-assisted review wasn't as useful as it became in the months before launch. And he's explicit that this isn't a vibe coding story — most of that code was written before the technique was even available.

Among the casualties is support for property graph queries (SQL/PGQ), which joined the SQL standard in 2023 and provides syntax for relationships between nodes and edges. Tom Lane warned about it without any anaesthetic:

I'd be willing to bet dinner that if we ship it in v19 there will be post-release bug discoveries that are unfixable until v20.

What does land: REPACK CONCURRENTLY, which reclaims disk space without the exclusive table lock that VACUUM FULL demands. And there's a curious knock-on effect for planning: a few months ago PostgreSQL 20 was expected to be a bug-fix-only release; now it'll carry the leftovers.

Why it matters

This isn't a quirky anecdote about one database project. It's the first well-documented public case of a shift that will hit anyone plugging an automated reviewer into their repository: the bottleneck has moved. Finding defects got cheap. Triaging, reproducing and closing them costs exactly what it always did.

Three practical consequences:

1. The fixed cost per finding rules everything. Forty three-line patches are not two hours of work: they're forty context switches, reviews and decisions. If you're going to introduce LLM review, measure what closing an average finding costs your team before you turn on the hose. Without that number, what you'll get is a list nobody reads.

2. The bar moves under your feet. Code that passed human review in March fails in September with better tooling. That will happen to every codebase on earth, not just PostgreSQL. The operational reading: run the reviewer when the feature is written, not the week before freeze. Anything you find in beta isn't information any more, it's a calendar problem.

3. If 19 was in your autumn plan, move it. And if you were waiting on graph queries to retire a separate database, that plan slides to the next cycle. Don't build on something that hasn't shipped.

What doesn't change

The headline reads worse than the reality. There's no AI writing bad code here that another AI then catches — Eisentraut goes out of his way to say so. The architectural defects in the reverted features are the traditional kind, the sort human review either catches or doesn't.

It isn't a project meltdown either. It's roughly a six-week slip in an annual cycle, with the deferred features landing in the next release and a final version that, by his account, will be more robust precisely because of the extra scrutiny. Preferring that to shipping and dragging bugs for five years is a decision, not an accident.

And there's a number I'm missing: how many of those reports were real defects and how many were noise. The source doesn't break it down, and that's exactly the figure anyone considering the same setup at home would need.

Our take

I think this is good news, and I'd rather have it told this way, with names attached, than in the sanitised press-release version. A project that pulls eight features in beta is telling you something valuable about what the word "stable" means to them.

Where I disagree is the optimistic ending. Eisentraut suggests the situation should sort itself out in future cycles if review tooling keeps improving at the current rate. My bet is the opposite: the better the detector gets, the longer the queue. This doesn't get fixed with better detectors, it gets fixed with process — severity triage, an explicit rule for which edge cases stay open, and someone who signs off on that. Leave it to the tool and the bar rises indefinitely and you never ship.

We've seen this film before, by the way. Plug a new static analyser into a ten-year-old codebase and you get thousands of warnings and a paralysed team. What worked back then was the baseline: freeze what's there, label it known debt, enforce the new bar on new code only. PostgreSQL can't do exactly that with a feature already committed and in beta, but the underlying idea holds: you set the bar before the freeze, not once the list is staring at you.

It's the same pattern we run into when we put a model to review code or documents inside a company process: generating findings is free, closing them isn't. The expensive part of the project is never the model, it's deciding who looks at each finding and what happens to the ones nobody is going to fix.

Any questions, tell me and we'll go through it. All the best, Vicente.

Source: The Register

Did reading this raise a question?

Ask us. We answer even if you never become a client.