PostgreSQL 19's Reliability Reckoning: What Survived Beta 4 — and What Got Cut

Photo by Mathias Reding on Pexels
Beta 4 Lands, and the Feature List Shrinks
The PostgreSQL Global Development Group announced PostgreSQL 19 Beta 4 on September 24, 2026 — the fourth beta of a cycle that has increasingly been defined by subtraction rather than addition.
Beta 4 is notable less for what it added than for what it took away. Several features that had been in the tree for months were reverted outright, and the community's stated rationale was blunt: reliability and a predictable release schedule. Rather than let unfinished work hold up the calendar or ship with sharp edges, the project pulled it.
Read charitably, this is late-cycle triage — a deliberate trade of headline features for a release that can actually ship on time. Read less charitably, it is a reminder that a feature landing in beta is not the same thing as a feature landing in a release.
What Got Reverted
The removals at Beta 4 cut across several areas of the database, and they include some of the cycle's most anticipated work:
- SQL/PGQ (property graph query) support — the marquee standards-conformance feature of the cycle, and the most visible casualty.
- Online enabling and disabling of data checksums — a long-requested operational convenience that would have let administrators flip checksums without a full cluster rebuild.
- Temporal updates and deletes via the FOR PORTION OF clause — part of the broader temporal-table work that has been inching forward across releases.
- ALTER TABLE ... MERGE PARTITIONS, with SPLIT PARTITIONS also cited among the removals.
Importantly, reverted is not the same as abandoned. The community has indicated these features may return in a later major release; the code exists, and the objections were about readiness rather than desirability. That is cold comfort if you had a roadmap pinned to PostgreSQL 19, but it does mean the work is not lost.
How Many Features Actually Fell Out? The Numbers Don't Agree
Here the reporting diverges, and it is worth being explicit about the uncertainty.
One account tallies 53 features reverted across all four beta rounds, naming SQL Property Graph Queries, MERGE/SPLIT PARTITIONS and GROUP BY ALL among them. That is a striking figure — but it is a single-source claim, and it should be treated with caution.
DevX, by contrast, reports six features pulled specifically at Beta 4 on September 24, 2026.
The most likely explanation for the gap is methodological: one number appears to count cumulatively across the entire beta cycle, the other counts only what was removed in the Beta 4 round. Those are different questions with legitimately different answers. Until the final release notes settle the accounting, the safe reading is that a meaningful but unconfirmed number of features came out, and the specific high-profile ones listed above are the ones that matter to most users.
Photo by Mika Baumeister on Unsplash
REPACK CONCURRENTLY: The Maintenance Headline That Survived
Of what remains, the new REPACK command is the most immediately useful addition for anyone who runs PostgreSQL rather than just queries it.
REPACK reclaims disk space and reorganizes table contents, combining the functionality of VACUUM FULL and CLUSTER into a single command. That consolidation alone tidies up a corner of the maintenance toolkit that has long required operators to remember which tool does what.
The real headline is the CONCURRENTLY option, which allows repacking without blocking reads and writes. Historically, reclaiming bloat on a busy table meant either accepting an exclusive lock — a non-starter for most production systems — or reaching for external tooling to perform an online table rewrite. Bringing that capability into core removes a dependency and a class of operational risk for teams that could not previously schedule the downtime.

Photo by Marta Branco on Pexels
Autovacuum Gets Parallel Workers and a Scoring System
Autovacuum, the subsystem most likely to be blamed when a PostgreSQL deployment misbehaves, gets two substantial upgrades in this release.
First, autovacuum can now use parallel worker processes to vacuum a table's indexes, rather than working through them serially. For wide tables with many indexes — the shape that tends to cause trouble at scale — this directly attacks the bottleneck.
Second, a new scoring system prioritizes which tables most need vacuuming or analyzing, replacing a cruder sense of urgency with something closer to a ranked queue. Crucially, those scores are not hidden: they are exposed through the new pg_stat_autovacuum_scores view, giving operators visibility into why autovacuum is making the choices it is making.
The behavior is tunable through a set of new GUCs, including autovacuum_max_parallel_workers, autovacuum_parallel_workers and the autovacuum_*_score_weight family — the latter letting administrators adjust how heavily different signals feed into prioritization.
Replication and Read Replicas
Replication picks up several changes aimed squarely at correctness problems that operators have been working around by hand.
A new WAIT command blocks until a standby has replayed changes up to a chosen point. That is the missing primitive for read-your-writes query patterns against standbys and read replicas: an application can write to the primary, wait for the replica to catch up to that point, and then read from the replica with confidence rather than crossing its fingers or routing everything back to the primary.
Logical replication also gains the ability to replicate sequence values. Sequence drift between a publisher and subscriber has been a classic source of duplicate key errors after a failover, and synchronizing sequences closes that gap.
Finally, logical replication can now be enabled without a server restart when wal_level is set to replica — a small change with outsized practical value for anyone who has had to schedule a maintenance window just to turn a feature on.
Planner Control: pg_plan_advice and pg_stash_advice
Plan stability has been one of the most persistent complaints about PostgreSQL in production, and the project has historically resisted the obvious fix — hard query hints — on the grounds that they age badly and paper over real planner problems.
PostgreSQL 19 offers a different answer. The new pg_plan_advice extension lets administrators stabilize and control query planner decisions, while the companion pg_stash_advice extension applies stored advice automatically based on the query.
The distinction matters: rather than embedding directives in application SQL, operators can capture and store advice out of band and have it applied when the matching query shows up. It addresses the plan-stability problem without the project having to adopt hints in the form it has long rejected.
Performance and Default Changes
Beyond the named features, PostgreSQL 19 carries a batch of performance work and two default changes that existing deployments should note before upgrading.
On the performance side:
- Automatic scaling of I/O worker processes: with
io_method=worker, the server now scales worker count automatically betweenio_min_workersandio_max_workers. - Faster foreign-key checks, reducing the overhead of referential integrity on write-heavy workloads.
- SIMD-accelerated
COPY FROMparsing for text and CSV input — relevant to anyone doing bulk loads. - Further planner and executor optimizations across the board.
Two defaults also change. The default TOAST compression algorithm switches from pglz to lz4. And, more consequentially for existing workloads, JIT compilation is now disabled by default. JIT has been a mixed blessing in practice — a win for some analytical queries, a source of unexpected latency for others — and flipping the default is a behavioral change that teams with tuned workloads should test rather than assume.
Smaller Additions: SQL Surface and Authentication Warnings
A few smaller items round out the release.
On the SQL side, five window functions — including lag and lead — gain an IGNORE NULLS option. It is a modest addition, but one that removes a familiar workaround from analytical queries that need to skip over gaps in a series.
On the authentication side, PostgreSQL 19 adds a password_expiration_warning_threshold server variable, with a default warning period of seven days — giving users notice before credentials lapse rather than after. The server also now issues a warning after a successful MD5 password authentication, a clear nudge away from a mechanism the project has been steering users off for years.
Release Timeline and Upgrade Path
The next planned milestone is a release candidate in early October 2026. General availability may also land in October 2026, though the precise date is not locked down — one secondary source points specifically to the end of the month. Given that the whole rationale for the Beta 4 reverts was schedule predictability, the project has a strong incentive to hit that window.
If you are testing Beta 4, plan for a full major-version upgrade rather than an in-place minor update. Upgrading from an earlier major version requires a major-version strategy: pg_upgrade or a pg_dump/pg_restore cycle. The release notes also cite pg_dumpall and logical replication as upgrade routes.
That distinction is worth internalizing now rather than on GA day — the operational cost of a major-version upgrade is what tends to determine how quickly teams actually adopt a new PostgreSQL release.
What It Means
Taken as a whole, PostgreSQL 19 is shaping up as an operations release. The surviving headline features — REPACK CONCURRENTLY, parallel autovacuum with a visible scoring system, the WAIT command and sequence replication, pg_plan_advice — are all about running the database more predictably. What got cut was almost entirely new SQL surface area and new schema-manipulation capability.
For teams whose plans depended on SQL/PGQ, online checksum toggling, FOR PORTION OF temporal updates, or partition MERGE and SPLIT, the practical advice is unambiguous: plan around a later major release. These features may well return, but not in this one, and building a roadmap on a beta feature is how you end up here.
The broader signal is about process. Reverting significant, long-developed work this late in a cycle is not a comfortable decision, and the community made it explicitly in the name of reliability and a predictable schedule. That tells you how the project weighs shipping on time against shipping complete — and, for anyone who depends on PostgreSQL in production, it is arguably the most reassuring thing about this release.