PostgreSQL 19 Release Date and New Features: RC1 Ships, GA Nears
PostgreSQL 19 release candidate 1 is live, with general availability planned for November 19. Here is the confirmed timeline and the headline features, from REPACK to parallel autovacuum.

PostgreSQL 19 is now in its first release candidate, and the PostgreSQL Global Development Group has set a firm target date for general availability: November 19, 2026. RC1 shipped on October 15, 2026, and a second release candidate is scheduled for November 12, 2026 — but only if the project's testers turn up a problem serious enough to need it. If RC1 holds up, PostgreSQL 19 becomes the stable release for the next year of production databases. Here is the confirmed timeline, every headline feature verified against the official release notes, and what database teams should be testing in RC1 right now.
- RC1 released: October 15, 2026
- RC2 (if needed): November 12, 2026
- General availability: November 19, 2026 (planned)
- Headline feature: new
REPACKcommand, including onlineREPACK (CONCURRENTLY) - Also new:
pg_plan_advice/pg_stash_advice, restart-free logical replication, aWAITcommand, parallel autovacuum - Who should care: DBAs, backend/platform teams, anyone running logical replication or large table maintenance jobs
PostgreSQL 19 release date: RC1 now, GA on November 19
The PostgreSQL Global Development Group's official announcement confirms that RC1 is "intended to be identical to the initial general availability release of PostgreSQL 19, except for any bugs that are found," and that testing it against real applications and workloads before the final release is exactly how those bugs get found. The same announcement spells out the remaining schedule: a second release candidate is penciled in for November 12, 2026, to coincide with that month's regular quarterly update release, and general availability is planned for November 19, 2026 — one week later. RC2 is not guaranteed; the project only ships it if testing surfaces something that needs fixing before GA.
That GA date is itself a change from an earlier internal schedule that had targeted a release in late October. The project moved the date rather than rush a release candidate, which is consistent with PostgreSQL's long-standing practice of slipping beta and RC windows when needed rather than cutting a major version on a fixed calendar date.
| Milestone | Date | Status |
|---|---|---|
| RC1 | October 15, 2026 | Released |
| RC2 | November 12, 2026 | Planned, only if needed |
| General availability (PostgreSQL 19.0) | November 19, 2026 | Planned |
REPACK: the headline new feature
The single biggest change in PostgreSQL 19 is a new top-level SQL command: REPACK. According to the official release notes, REPACK "reclaims disk space and reorganizes table contents, which can improve query performance," and it is explicitly built to replace most uses of VACUUM FULL and CLUSTER — both of which remain available for compatibility but are now considered the old way of doing this.
The reason this matters to anyone who runs PostgreSQL in production is the CONCURRENTLY option. The release notes describe it plainly: REPACK (CONCURRENTLY) "allows repacking without blocking reads and writes to the table." Historically, reclaiming bloated space from a heavily updated table meant either living with the bloat or scheduling a maintenance window for VACUUM FULL/CLUSTER, both of which take an access-exclusive lock and block the table entirely while they run. A new server setting, max_repack_replication_slots, backs the concurrent mode. For teams that have spent years working around table bloat with third-party tools like pg_repack, this is PostgreSQL finally absorbing that capability into core.
pg_plan_advice and pg_stash_advice: steering the query planner
PostgreSQL 19 ships two new bundled extensions aimed at a long-standing pain point: the query planner occasionally picks a bad plan, and until now there has been no supported, built-in way to override it short of query hints hacks or rewriting SQL. pg_plan_advice is described in the release notes as a module "to stabilize and control planner decisions," while pg_stash_advice is a companion extension that allows "per-query-id advice to be specified" — meaning advice can be pinned to a specific query and applied automatically whenever that exact query runs again, without an application change.
In practice, this gives DBAs a supported escape hatch for the recurring "the planner picked a bad plan for this one query, and it matters" problem, instead of reaching for pg_hint_plan-style unofficial extensions.
Logical replication: no-restart enablement and sequence sync
Two related logical replication changes stand out. First, the release notes confirm: "Logical replication can now be enabled without a server restart when wal_level is set to replica." Previously, turning on logical replication meant setting wal_level = logical and restarting the server — disruptive for a database that was never originally provisioned with logical replication in mind. PostgreSQL 19 lets the server raise its effective WAL level automatically the moment a logical replication slot is created, and drop back down once it's no longer needed.
Second, PostgreSQL 19 adds logical replication of sequence values, which the release notes describe as allowing "sequence values stored in subscribers to match the publisher." Sequences have always been a weak point of logical replication — subscribers could fall out of sync on auto-incrementing IDs after a failover or cutover. Keeping sequence state in lockstep removes a common source of manual intervention when switching an application over to a logical replica.
Read-your-writes consistency: the new WAIT command
PostgreSQL 19 introduces a new WAIT command, which the release notes summarize as support for "'read-your-writes' consistency on standbys." Concretely, it lets a client connected to a standby wait for a specific LSN (log sequence number) to be written, flushed, or replayed before continuing — the standard mechanism for guaranteeing that a read issued right after a write, potentially against a different replica, actually sees that write. Applications that load-balance reads across replicas have long had to build this kind of consistency check themselves, in the client or via a proxy; having it as a native SQL command removes a layer of application-side plumbing.
Parallel autovacuum and table prioritization
Autovacuum gets two substantial changes. The release notes describe "parallel autovacuum of table indexes" — allowing a single autovacuum worker to parallelize the index-cleanup portion of its work across multiple processes — alongside "autovacuum prioritization through a new scoring system," which the detailed changelog clarifies is "a scoring system to control the order that tables are processed by autovacuum." For large, multi-tenant databases where autovacuum has historically fallen behind on the tables that need it most while churning through less urgent ones, a priority score that reorders the work queue is a meaningful operational improvement, not just a performance tweak.
Other performance work: I/O workers, FK checks, planner tuning
The release notes group several further items under general performance improvements. PostgreSQL's io_method setting can now, per the changelog, "automatically control needed background workers" — scaling the number of I/O worker processes up or down rather than running a fixed pool. The notes also cite quicker foreign-key checks and additional planning/execution optimizations, including fixes to how the planner reasons about expressions that may or may not be able to return NULL. None of these are single headline features on their own, but together they continue PostgreSQL's recent multi-release push (following the I/O method work introduced in PostgreSQL 18) toward narrowing the gap with purpose-built high-throughput engines on raw read/write performance.
Who should care about this release
This is a database-operations release more than an application-developer one. The teams who should read the release notes closely are:
- DBAs and platform engineers running large, frequently updated tables —
REPACK (CONCURRENTLY)is the single most actionable change, since it can remove scheduled maintenance windows from the calendar entirely. - Anyone operating logical replication for CDC pipelines, zero-downtime migrations, or multi-region read replicas — the restart-free
wal_levelchange and sequence-value replication both remove manual steps from common runbooks. - Teams load-balancing reads across standbys who have hand-rolled read-your-writes logic — the new
WAITcommand is a candidate to simplify that code. - Anyone running analytical workloads that rely on JIT — see the defaults change below, since this one can quietly change performance on upgrade if missed.
It's a smaller release for application developers who mostly write SQL and don't manage the server itself — though worth knowing about if your team recently evaluated other runtime upgrades, such as Node.js 26's move to active LTS or the Python 3.15 release timeline, since database and language-runtime upgrade windows often get planned together.
What changes by default — and why it matters before you upgrade
Several defaults flip in PostgreSQL 19, and the release notes flag them specifically in the "Migration to Version 19" section because they can silently change behavior after an upgrade:
| Change | What the release notes say |
|---|---|
| JIT compilation | Disabled by default. The notes say the prior cost-based activation "has been determined to be unreliable," and that sites running many large analytical queries will need to manually re-enable JIT. |
| TOAST compression | Default method changes from pglz to the more efficient lz4, via the default_toast_compression setting. |
| RADIUS authentication | Removed entirely. The notes state PostgreSQL's RADIUS support only ever worked over UDP, which they describe as "unfixably insecure." |
max_locks_per_transaction | Default doubles from 64 to 128, because of a change to how lock-size allocation works internally. |
standard_conforming_strings | Forced to always be on at the server level; old dumps made with it set to off will need to be regenerated with a current pg_dump. |
None of these are reasons to avoid PostgreSQL 19 — but each is a reason to actually read the migration section of the release notes rather than assume a major upgrade is a drop-in swap, particularly the JIT default flip if your workload leans analytical, and the RADIUS removal if any authentication configuration still depends on it.
Upgrade path: pg_upgrade, dump/restore, or logical replication
PostgreSQL's own documentation lays out three supported ways to move to a new major version, none of which are PostgreSQL-19-specific but all of which apply here: a pg_dumpall dump and restore, the in-place pg_upgrade utility (fast, especially in --link mode, since it reuses existing data files instead of rewriting them), or cutting over via logical replication for close-to-zero downtime. pg_upgrade supports upgrading from PostgreSQL 9.2 and later straight to 19, and its --check flag can validate compatibility against a running old-version cluster before anything is touched. As with every major version, PostgreSQL's versioning policy means 19 will get roughly five years of minor-release support once it ships, following the same cadence as PostgreSQL 18 and earlier versions before it.
If you're testing an upgrade path now, treat RC1 the way the project intends: install it alongside (not instead of) your current production version — a disposable container is the easiest way to do this, the same approach many teams already use when comparing tools like Docker and Podman for local testing — dump a copy of your schema and representative data into it, and run pg_upgrade --check plus your own application test suite against it before GA ships.
What to watch next
Three concrete dates to track: RC2 lands November 12, 2026, only if the project's own testing (or community bug reports against RC1) surfaces something serious enough to warrant it; general availability is planned for November 19, 2026; and once 19.0 ships, the first minor update will follow within the project's standard quarterly cadence. Between now and GA, the most useful thing a database team can do is exactly what the PostgreSQL project is asking for: install RC1, point a staging copy of a real workload at it, and specifically exercise REPACK (CONCURRENTLY) against a bloated table, test any logical replication setup against the restart-free wal_level behavior, and confirm whether the JIT default flip changes plan costs for analytical queries. Anything found now still has a chance of being fixed before the version ships as stable.
Frequently asked questions
When is PostgreSQL 19 coming out?
PostgreSQL 19 release candidate 1 (RC1) shipped on October 15, 2026. The PostgreSQL Global Development Group's plan has general availability landing on November 19, 2026, with a second release candidate on November 12, 2026 only if testing turns up a problem that needs fixing first.
What is the biggest new feature in PostgreSQL 19?
The new REPACK command, especially its REPACK (CONCURRENTLY) option. It reclaims disk space and reorganizes table contents without blocking reads or writes, replacing most uses of VACUUM FULL and CLUSTER, which require an access-exclusive lock.
Can I enable logical replication in PostgreSQL 19 without restarting the server?
Yes. PostgreSQL 19 can automatically raise the effective WAL level to logical when a logical replication slot is created, as long as wal_level is already set to replica, with no server restart required.
What is the new WAIT command for?
It lets a client connected to a standby wait for a specific log sequence number (LSN) to be written, flushed, or replayed, giving applications built-in 'read-your-writes' consistency when reads are load-balanced across replicas.
Does PostgreSQL 19 change any defaults I should know about before upgrading?
Yes. JIT compilation is now disabled by default, TOAST compression defaults to lz4 instead of pglz, RADIUS authentication support is removed, and max_locks_per_transaction doubles from 64 to 128. All are documented in the release notes' migration section.
How do I upgrade to PostgreSQL 19?
The same three methods PostgreSQL has always supported: a pg_dumpall dump and restore, the in-place pg_upgrade utility (fast, especially with --link mode), or cutting over via logical replication for minimal downtime. pg_upgrade supports upgrading directly from PostgreSQL 9.2 and later.
Sources
- PostgreSQL Global Development Group: PostgreSQL 19 RC 1 Releasedpostgresql.org
- PostgreSQL 19 Release Notes (official docs)postgresql.org
- PostgreSQL docs: Upgrading a PostgreSQL Clusterpostgresql.org
- PostgreSQL docs: pg_upgradepostgresql.org
- PostgreSQL: Versioning Policypostgresql.org
Felix Moreau writes Pandromeda's software coverage and how-to guides. He covers Windows, macOS and Linux updates, the apps people rely on, emulators and developer tools, and turns official documentation into clear, numbered steps that work on the current version.


