On this page · 12 sections
- What ends on 11 November 2027
- Managed service dates: RDS, Aurora, Azure and Cloud SQL
- What extended support costs
- Choosing the target: PostgreSQL 18 or 19
- pg_upgrade or logical replication
- What breaks between 15 and 18 or 19
- Extension compatibility
- Worked example: the cost of staying on 15
- India, data residency and compliance
- The upgrade runbook
- How eCorpIT can help
- References
Summary. PostgreSQL 15 gets its final community release on 11 November 2027, five years after 15.0 shipped on 13 October 2022; after that there are no fixes, security fixes included. Amazon RDS and Aurora end standard support on 29 February 2028 and bill RDS Extended Support from 1 March 2028 to 28 February 2031. AWS charges $0.100 per vCPU-hour in US East for every PostgreSQL version now in Extended Support, doubling in year three, but has not yet listed a rate for 15. Cloud SQL enrols 15 instances in extended support on 1 February 2028 at $0.07 per vCPU-hour in Iowa and upgrades leftovers from 1 February 2031. Azure ends standard support on 11 November 2027 and has not yet scheduled extended support for 15. The target is PostgreSQL 18, supported to 14 November 2030, or PostgreSQL 19, at release candidate 1 with general availability planned for 19 November 2026. Use pg_upgrade when minutes of downtime are acceptable and logical replication when they are not, minding its gaps: no DDL, no large objects and, from a 15 source, no sequences. Our view: take 18 if you move before mid-2027, and 19 later in 2027 once your provider and your extensions support it.
About this article. This is for teams running PostgreSQL 15 on Amazon RDS, Aurora, Azure, Cloud SQL or their own servers. On 7 November 2026 we checked every date, price and behaviour against postgresql.org and the AWS, Microsoft and Google Cloud documentation, pricing pages and price catalogues. Providers revise calendars and prices, so re-check before you book a change window. This is not legal or financial advice; the DPDP Act reference is to the text published in the Gazette of India on 11 August 2023, and no vendor paid for inclusion. Researched with AI assistance and reviewed by our editorial team.
Python 3.11, common in the same estates, loses security support in October 2027; see our Python 3.11 end of life runbook.
What ends on 11 November 2027
The PostgreSQL Global Development Group supports each major version for five years, then ships one final minor release. PostgreSQL 14 gets its final release on 12 November 2026, the next scheduled update date, which also brings a new 15 minor. The project's table on 7 November 2026:
| Version | First release | Current minor | Final release |
|---|---|---|---|
| 14 | 30 Sep 2021 | 14.24 | 12 Nov 2026 |
| 15 | 13 Oct 2022 | 15.19 | 11 Nov 2027 |
| 16 | 14 Sep 2023 | 16.15 | 9 Nov 2028 |
| 17 | 26 Sep 2024 | 17.11 | 8 Nov 2029 |
| 18 | 25 Sep 2025 | 18.6 | 14 Nov 2030 |
| 19 | GA planned 19 Nov 2026 | RC1 (15 Oct 2026) | Not yet published |
PostgreSQL 19 is later than usual. The release team chose to fold the fixes from the 12 November update release into 19, so RC2 is due that day and GA is planned for 19 November unless a problem forces a delay. RC1 was still current on 7 November. The policy points to an end of life around November 2031; the project has not published it.
End of life does not stop a running server; it stops the fixes. You can skip intervening major versions, but the project asks you to read every intervening release note first. From 15 to 18 that means 16, 17 and 18; to 19, one more.
Managed service dates: RDS, Aurora, Azure and Cloud SQL
The provider calendars on 7 November 2026:
| Service | End of standard support for 15 | Extended support | Extended support ends | Newest major offered |
|---|---|---|---|---|
| Amazon RDS for PostgreSQL | 29 Feb 2028 | Year-1 pricing from 1 Mar 2028; year-3 pricing from 1 Mar 2030 | 28 Feb 2031 | 18, since 14 Nov 2025; new majors within 30 days of x.1 |
| Amazon Aurora PostgreSQL | 29 Feb 2028 | Same dates as RDS | 28 Feb 2031 | 18, since 11 Jun 2026; new majors within 8 months of x.1 |
| Azure Database for PostgreSQL flexible server | 11 Nov 2027 | Up to three years, automatic enrolment; 15 not yet listed | Not yet listed for 15 | 18, since 25 Sep 2025 |
| Cloud SQL for PostgreSQL | Regular support until 1 Feb 2028 | Three years, automatic enrolment, from 1 Feb 2028 | Deprecation and auto-upgrade from 1 Feb 2031 | 18 (default); new majors within 90 days of GA |
That hints at 19's arrival. If 19 ships on 19 November, Cloud SQL's 90 days run to about 17 February 2027. AWS counts from 19.1; if that ships on 11 February 2027, RDS follows by about 13 March 2027 and Aurora by about October 2027. That is our arithmetic, not an announcement. Microsoft publishes no commitment, though it offered 18 on the community release day.
Amazon RDS and Aurora
RDS moves 15 into Extended Support on 1 March 2028, with year-three pricing from 1 March 2030 and an end on 28 February 2031. Aurora uses the same dates and names 15.10 as its long-term support minor for 15.
Two details matter before 2028. Minors expire before majors: RDS supports 15.19 only until September 2027, so keep patching 15 while you plan. And the RDS pricing FAQ says an instance must be on the latest minor to receive Extended Support.
Azure Database for PostgreSQL flexible server
Microsoft lists 11 November 2027 as the end of Azure standard support for 15, matching the community date. Extended support adds up to three years with automatic enrolment and no exit except upgrading, and its table covers 11 to 14 only. For 14, Azure now lists 31 January 2027, 80 days after the community date; a similar buffer for 15 is possible but unannounced. Plan against 11 November.
Its FAQ adds a point that applies everywhere: the engine upgrade leaves noncore extensions such as pgvector and TimescaleDB for you to update.
Cloud SQL for PostgreSQL
Cloud SQL puts PostgreSQL 15 into extended support on 1 February 2028 and deprecates it on 1 February 2031. On deprecation, Cloud SQL upgrades remaining instances to the default major version during maintenance, after at least 12 months' notice. Extended support covers critical and high-severity CVEs, keeps SLA coverage and still allows new 15 instances.
What extended support costs
Rates come from AWS's price list files (29 October 2026), Azure's retail prices API and pricing page, and Google's pricing page.
| Provider | Unit | Years 1 and 2 | Year 3 | What is billed |
|---|---|---|---|---|
| Amazon RDS and Aurora, provisioned | vCPU-hour | $0.100 US East; $0.114 Mumbai (rate for 10 to 13; 15 not yet listed) | $0.200; $0.228 Mumbai | Primary, Multi-AZ standbys and read replicas; no Reserved Instance discount |
| Aurora Serverless v2 | ACU-hour | $0.085 US East (Ohio); $0.097 Mumbai (listed for 15) | $0.170; $0.194 Mumbai | Serverless capacity (ACUs) |
| Cloud SQL for PostgreSQL | vCPU-hour | $0.07 Iowa; HA $0.14 | $0.14; HA $0.28 | Per second while running; replicas at standalone rate; no committed use discount |
| Azure flexible server | vCore-hour | $0.07 East US; $0.098 Central India | Twice the year 1 and 2 rate | Running servers only; HA and replica metering undocumented |
AWS says the rate depends on Region, version and year; its examples and every provisioned PostgreSQL rate it lists today (10 to 13) are $0.100 and $0.200 in US East, so use $0.100 for 15 until AWS lists it. Microsoft now states that year three costs twice the year one and two rate. All of these come on top of instance, storage and backup costs.
Choosing the target: PostgreSQL 18 or 19
Skip 16 and 17: they end in November 2028 and 2029, one or two years before 18, for the same testing effort.
| Pick PostgreSQL 18 if | Pick PostgreSQL 19 if |
|---|---|
| You upgrade before mid-2027, while 19 is young and patchily available | You upgrade in late 2027 and your provider runs 19 at GA |
| Your provider already runs 18 (all four services do today) | You want support to about November 2031 instead of 14 November 2030 |
| You need extensions certified for 18 now | You want REPACK (CONCURRENTLY), sequence replication and parallel autovacuum |
| Aurora is your platform: Aurora 18 came seven months after 18.1, so 19 may land late in 2027 | You can absorb 19's extra incompatibilities (below) in the same test cycle |
Frameworks set floors too. The draft Django 6.2 release notes drop PostgreSQL 15 and require 16 or later, with 6.2 expected in April 2027. A Django application on 15 must move the database before taking that LTS; see our Django 6.2 LTS guide.
pg_upgrade or logical replication
You can cross major versions by dump and restore, pg_upgrade, or logical replication into a new cluster. Dump and restore is simple and slow; above tens of gigabytes the choice is between the other two. The table draws on the PostgreSQL and AWS documentation.
| Factor | pg_upgrade (in place) | Logical replication (side by side) |
|---|---|---|
| Downtime | Usually minutes in link, clone or swap mode | Seconds to minutes at cutover |
| Rollback | Restore from backup or snapshot; in link or swap mode the old cluster cannot safely be restarted | Keep the old primary and point traffic back |
| Schema changes during migration | Not applicable | DDL is not replicated; freeze schema changes |
| Sequences | Carried over | Not replicated from 15; set at cutover (RDS Blue/Green does it for you) |
| Large objects | Carried over | Not replicated |
| Tables without primary keys | No issue | UPDATE and DELETE need a primary key or a replica identity |
| Managed equivalent | In-place major upgrade on all four services | RDS Blue/Green; a self-built subscriber elsewhere |
pg_upgrade from 15: four things to know
- Checksums must match. PostgreSQL 18 changed
initdbto enable data checksums by default, andpg_upgraderequires matching checksum settings. If your 15 cluster has checksums off, initialise the new cluster with--no-data-checksums, or enable them on the old cluster offline withpg_checksumsfirst.
- Statistics now survive. From 18,
pg_upgradecarries planner statistics across, though not extended statistics. The documentation then has you runvacuumdbtwice, as in the runbook below.
- Logical slots do not survive from 15. PostgreSQL 17 taught
pg_upgradeto migrate logical replication slots and subscriptions, but only when the old cluster is 17 or later; slots on older clusters are silently ignored. From 15, Debezium and other CDC consumers lose their slots and need a planned resync.
- Use the fast modes.
--linkhard-links data files,--cloneuses copy-on-write where the file system supports it, 17 added--copy-file-range, and 18 added--swap, which moves directories instead of copying files. 18 also runs its pre-upgrade checks in parallel with--jobs.
Logical replication: near-zero downtime, with gaps
Logical replication streams row changes from the 15 publisher into an 18 or 19 subscriber, and you cut over when lag is near zero. AWS's Blue/Green limitations page is the most candid list of what goes wrong, and most of it applies elsewhere. DDL or a GRANT on the source degrades replication to the new (green) side, and you must recreate the deployment. Large objects are not replicated. Materialised views are not refreshed. The apply process is single-threaded, so a write-heavy source can outrun it. pg_partman must be disabled on the source and pg_cron kept off on the target, and point-in-time recovery history does not carry over after switchover.
PostgreSQL 19 replicates sequence values, but only from a 19 or later publisher, so from 15 you sync sequences yourself at cutover.
What breaks between 15 and 18 or 19
The release notes for 17, 18 and 19 list these incompatibilities, among others. Read 16's notes as well.
Arriving in 17:
- Functions run with a safe
search_pathduring maintenance such asREINDEXand materialised view refresh, so expression indexes and materialised views on functions that rely on an unqualifiedsearch_pathcan fail.
old_snapshot_thresholdand theadminpackextension are removed.
Arriving in 18:
initdbenables data checksums by default (see above).
- MD5 passwords are deprecated and setting one now warns. Move roles to SCRAM.
VACUUMandANALYZEprocess inheritance children by default;COPY FROMno longer treats\.as end-of-file in CSV files; unlogged partitioned tables are disallowed;AFTERtriggers run as the role active when the event was queued.
- Full text search uses the cluster's default collation provider. On clusters that default to ICU or the builtin provider, reindex full text search and
pg_trgmindexes afterpg_upgrade.
Arriving in 19:
- RADIUS authentication is removed.
standard_conforming_stringsis forced on; dumps made by olderpg_dumpwith it off will not load properly, so dump with 19's tools.
pg_upgraderefuses clusters withbtree_gistindexes oninetorcidrcolumns, and clusters whose database, role or tablespace names contain carriage returns or line feeds.
- JIT is off by default; analytics-heavy sites must turn it back on.
- Successful MD5 logins now produce a warning.
Extension compatibility
Extensions are where managed upgrades fail. AWS says most are not upgraded with the RDS engine, and Microsoft says the same of noncore extensions. Three rules cover most cases:
- The target must offer your extension. Compare
pg_extensionon 15 with your provider's list for 18 or 19; a missing library fails thepg_upgradechecks.
- Some extensions block specific paths. Azure lists them by source and target. A 15 to 18 move is blocked by
pgrouting,pg_diskann,azure_ai,azure_storage,azure_local_aiandpg_failover_slots;session_variable,anonandageblock every path;pg_repack,hypopgandpg_partmanmust be dropped and recreated. TimescaleDB is allowed from 15 to 18. Run Azure's pre-upgrade validation for your exact path.
- Update after the engine. Run
ALTER EXTENSION ... UPDATEfor each extension once the new engine is up, and re-test anything with its own on-disk structures, such as vector indexes. Our Postgres vector search guide covers pgvector and its relatives.
Worked example: the cost of staying on 15
Take one database with an 8-vCPU primary, an 8-vCPU high-availability standby and an 8-vCPU read replica, left on 15 past each cut-off, at 730 hours a month:
- Amazon RDS, US East (Ohio), Multi-AZ with one standby plus a replica: 24 vCPUs × $0.100 × 730 = $1,752 a month from 1 March 2028, or $21,024 a year, if 15 gets today's rate; $3,504 a month from 1 March 2030.
- Cloud SQL, Iowa, HA primary plus a replica: 8 HA vCPUs × $0.14 × 730 = $817.60, plus 8 vCPUs × $0.07 × 730 = $408.80, for $1,226.40 a month from 1 February 2028, replicas being billed at the standalone rate; $2,452.80 in year three.
- Azure flexible server, East US, primary only: 8 vCores × $0.07 × 730 = $408.80 a month, or $572.32 in Central India at $0.098, doubling in year three. Microsoft does not document how HA standbys and replicas are metered, so ask your account team.
These surcharges recur monthly until you upgrade, and double in year three on all three clouds.
India, data residency and compliance
Indian regions cost more. RDS Extended Support in Mumbai is $0.114 per vCPU-hour, 14% above Ohio, so the RDS example becomes 24 × $0.114 × 730 = $1,997.28 a month. Azure Central India is 40% above East US. Teams that keep personal data in India by policy or contract cannot move region to save, so cut vCPUs instead: consolidate small 15 instances before the cut-off. An engine without community fixes is also hard to square with the reasonable security safeguards duty in section 8(5) of the Digital Personal Data Protection Act 2023, and with GDPR Article 32. Our DPDP Act engineering playbook covers the wider controls.
The upgrade runbook
- Inventory every 15 cluster: provider, region, vCPUs, replicas, HA, extensions, logical slots and cut-off date.
- Pick 18 or 19 per cluster and record its end-of-life date.
- Patch 15 to the latest minor to stay in support while you plan.
- Run the checks below and fix tables without primary keys, MD5 roles,
search_path-dependent functions and blocked extensions.
- Rehearse on a restored copy with production-sized data, and time it.
- Choose the method: in-place
pg_upgradein a maintenance window, or logical replication with a schema freeze.
- After cutover: update extensions, rebuild statistics, reindex full text search and
pg_trgmindexes where needed, and recreate CDC slots.
- Decommission 15, including snapshots that would restore onto an end-of-life engine.
The managed commands follow the AWS, Azure and Google Cloud upgrade documentation.
# Pre-flight checks on the PostgreSQL 15 cluster
psql -c "SHOW data_checksums;"
psql -c "SELECT extname, extversion FROM pg_extension ORDER BY 1;"
psql -c "SELECT slot_name, slot_type, plugin FROM pg_replication_slots;"
psql -c "SELECT rolname FROM pg_authid WHERE rolpassword LIKE 'md5%';" # superuser only; managed services restrict pg_authid
# Self-managed (example paths): dry run, then a link-mode upgrade from 15 to 18
pg_upgrade -b /usr/lib/postgresql/15/bin -B /usr/lib/postgresql/18/bin \
-d /var/lib/postgresql/15/main -D /var/lib/postgresql/18/main --check --jobs 4
pg_upgrade -b /usr/lib/postgresql/15/bin -B /usr/lib/postgresql/18/bin \
-d /var/lib/postgresql/15/main -D /var/lib/postgresql/18/main --link --jobs 4
vacuumdb --all --analyze-in-stages --missing-stats-only --jobs 4
vacuumdb --all --analyze-only --jobs 4
# Managed services: list targets and run prechecks, then upgrade in place
aws rds describe-db-engine-versions --engine postgres --engine-version 15.19 \
--query "DBEngineVersions[].ValidUpgradeTarget[?IsMajorVersionUpgrade].EngineVersion"
aws rds modify-db-instance --db-instance-identifier mydb --engine-version 18.6 \
--allow-major-version-upgrade --apply-immediately
az postgres flexible-server upgrade --name mydb --resource-group my-rg --version 18 --validate-only
az postgres flexible-server upgrade --name mydb --resource-group my-rg --version 18
gcloud sql instances pre-check-major-version-upgrade mydb --target-database-version=POSTGRES_18
gcloud sql instances patch mydb --database-version=POSTGRES_18
How eCorpIT can help
eCorpIT is a Gurugram-based technology organisation, founded in 2021, assessed at CMMI Level 5 and MSME certified, with senior-led engineering teams working across AWS, Microsoft and Google platforms. Our PostgreSQL major version upgrade service covers inventory, extension audits, rehearsals and cutovers on RDS, Aurora, Azure, Cloud SQL and self-managed clusters. Talk to us at /contact-us/.
Last updated: 7 November 2026.