Over the past decade, the timing of PostgreSQL major releases has become very predictable: no earlier than the middle of September, and no later than the middle of October. This year is going to be different. PostgreSQL 19 most likely won’t be released until November, and it’s not impossible that the project could decide to postpone the release further.
Moreover, this year, several rather large features were reverted quite late in the beta period: UPDATE/DELETE FOR PORTION OF, SQL Property Graph Queries (SQL/PGQ), and ALTER TABLE … MERGE PARTITION/SPLIT PARTITION were all reverted between August 27 and September 15. While major feature reverts are not especially uncommon immediately after feature freeze, which each year occurs on April 8, it is unusual to see multiple major features get pulled from the release at such a late date. So, what happened?
The short answer is that LLMs happened. All software contains bugs, and PostgreSQL’s code base is large, complex, and old. Our git history – converted from CVS – now reaches back more than 30 years, and the first code was written a decade before that. There’s a huge amount of code, and that code contains a huge number of bugs. That’s always been true, and it hasn’t stopped PostgreSQL from being popular or successful. What’s different now is that it’s become vastly easier to find those bugs. Fixing them has also gotten easier, but not to the same degree.
Between April 8th, 2025 and September 25, 2025, there were 1037 commits to PostgreSQL’s master branch and 724 commits to REL_18_STABLE. In 2026, during the same date range, there were 1443 commits to the master branch and 1169 commits to REL_19_STABLE. In other words, if you look at the number of commits that went into the master branch only between feature freeze and September 25th, it actually declined slightly from last year to this year, but the number of back-patched commits jumped by more than 60%.
It’s possible that some of this jump is the result of committers making more mistakes this year than they did last year, but I don’t think anyone who works on the project really believes that’s the main cause. Rather, it seems likely that PostgreSQL committers were about as conservative in 2026 as they were in preceding years, but a lot more of the mistakes they made were quickly found by LLMs.
And it isn’t just mistakes in the latest release. In the same time period, during 2025, there were 248 commits to REL_17_STABLE, and during 2026, there were 433 commits to REL_18_STABLE. In other words, the number of commits being back-patched not just to the release in progress but also to at least one prior release jumped by more than 74% in a single year. The reason for this is simply that a huge number of people on the Internet are now reporting bugs in PostgreSQL that they found using LLMs, and the PostgreSQL committers have been very, very busy fixing them.
And I think that’s also why we had so many late reverts, and why the release itself is delayed. Two factors are at play here.
First, because so many more bugs are being found now, it takes more time to fix them. LLMs can draft fixes, but those fixes aren’t always correct or compliant with PostgreSQL standards. So, they still need to be reviewed and committed by humans, and those humans have not gotten any smarter between 2025 and 2026.
Second, time that would have been spent reviewing what went into the release got diverted into addressing security issues and other bugs in the back-branches, and so it took longer to figure out what needed to be reverted before shipping v19.
In the end, I don’t think that the delay in shipping PostgreSQL 19 is particularly concerning. It is not a long delay in the grand scheme of things, and it emerges directly from the project’s concern for quality.
The long-term picture is less clear and in some ways more troubling: given that we have forty years of bugs that humans were unable to find but LLMs are quite capable of discovering, how are we ever going to catch up, and how will PostgreSQL continue to innovate? Right now, I’m not sure. What I do know is that I, and many others, are working really hard to figure it out.
I became a PostgreSQL developer partly because the PostgreSQL code base is some of the cleanest and highest-quality code upon which I have ever had the privilege to work. The recent success of AI in finding bugs in that code base does not change my high estimation of it. It is not perfect – no software product is – but if it had more defects visible even to human eyes, the number of things found by LLMs would likely be even greater.
There’s no escaping the fact that LLMs are going to require every PostgreSQL developer – and some extent, every software developer on earth – to raise their game. Every feature that we write from now until the end of our careers will be scrutinized by AI, and things that would have escaped forever unnoticed in an earlier era will now be found, perhaps in a matter of hours. That’s both a challenge and an opportunity.
[This blog post originally appeared at https://neon.com/blog/postgres-19-is-late-and-its-ais-fault]
This is actually good.
ReplyDeleteyou've got to draw the line somewhere
Deletegood for what ?
Deleteyou've got to draw the line somewhere-- was not meant to be in reply to "this is actually good."
ReplyDeleteTwo years ago, people used to say AI lowered the bar for software engineers, now it's raising it up again, even higher than before.
ReplyDeleteVersion 19, and maybe 20, might then become the most robust and reliable releases ever, maybe with fewer new features.
ReplyDeleteFeels like a necessary slowdown that will allow future releases to be sped up.
> might then become the most robust and reliable releases ever
DeleteWhat was the last release of PostgreSQL that you recall being not robust or reliable? How much increased reliability, in terms of measured real-world benefit, justifies the relatively late reversion of three significant features?
"Perfect is the enemy of good" is a pretty good summary of what is happening with this release.
It needs to be more robust than it was, from a security standpoint because attackers have access to LLMs too. The bar has been raised for attacks so it needs to be raised for security fixes.
DeleteCalling a Postgres release "late" feels weird in a world where the vast majority of software with a fixed release date is half-finished mess and so many production setups end up skipping many major versions regardless of potential improvements.
ReplyDeleteIts the problem of web development, before it code had to finish. Nowadays code must go on, improve, fix, but never finish its all subscription based, there is always something to improve or a useful feature to add #rnd-future-generator...
DeleteThe ones that actually tend to be very late on Postgres releases are cloud providers.
ReplyDeleteOops sorry you are right,
ReplyDeleteWould you like me to give other examples of human failures, or would you rather explore the pitfalls of the current design, we could also migrate this to mySql, tell me what do you want?