dataiotech Labs
dbaguidedbaguideDBAdataxtoolsdataopsphere
Home/Versions/postgresql-versioning-scheme
10 - 17+Sürümleme & Yaşam Döngüsü Mimarisi · Sürekli Standart (Yıllık Majör)11 min read

PostgreSQL Versioning Scheme: Numbering Semantics, 5-Year Lifecycle Model, and Zero-Downtime Patching

Pre-v10 vs Post-v10 Semantics, Annual Major Cadence, Community EOL Policies, and pg_upgrade Mechanics

Senior DBA Evaluation Matrix
Two-Part Versioning (Post-v10)

Starting with PostgreSQL 10, the primary integer (15, 16, 17) denotes a major release, while the secondary integer represents bug/security patches.

⚠ Moving from 17.0 to 17.1 preserves data catalog structure; zero pg_upgrade or data dump required.
100% Binary Compatibility on Minor Updates

Minor updates within a major family never mutate on-disk heap, index, or WAL formats.

⚠ Safe rolling patch deployment: update system packages and restart PostgreSQL backend.
Predictable 5-Year EOL Cycle

Each major release enjoys precisely 5 years of community support, terminating on the second Thursday of November.

⚠ Enterprise clusters must budget major version upgrades before reaching the 4th year of life.

▸1. PostgreSQL Versioning Evolution: Pre-v10 vs Post-v10

With the landmark release of PostgreSQL 10 in 2017, the PostgreSQL Global Development Group modernized and simplified its versioning scheme:

EpochMajor Version RepresentationMinor Version RepresentationHistorical Example
PostgreSQL 9.6 & EarlierFirst two numbers (X.Y)Third digit (Z)9.6 was the major release; 9.6.1 and 9.6.2 were minor bugfixes. Moving from 9.5 to 9.6 was a major upgrade.
PostgreSQL 10 & LaterSingle integer (X)Second integer (Y)16 or 17 is the major release; 17.1, 17.2 are minor maintenance updates.
[!IMPORTANT] There is no longer a concept of a "point major release" (like 17.1 being a major upgrade). 17 is major; 17.1 is strictly a bugfix/security patch.

▸2. The Annual Major Release Train

PostgreSQL operates on one of the most reliable, disciplined engineering cadences in open-source software:

  1. 1CommitFest Cycles (July - March): Five two-month development sprints.
  2. 2Feature Freeze (April): Code base frozen; no new feature patches accepted.
  3. 3Beta Releases (May - August): Public beta builds for community testing.
  4. 4Release Candidates - RC (August / September): Final regression testing and bug sweeps.
  5. 5General Availability - GA (September / October): Final major release dropped globally (16.0, 17.0).

▸3. Minor Releases: Why pg_upgrade is Never Required

Minor releases are published quarterly (February, May, August, November) or out-of-band for critical zero-day CVEs:

  • •Binary Compatibility: Minor updates within a major family never alter on-disk heap files, page layouts, index physical structures, or system catalogs.
  • •No Dump or Upgrade Utility Needed: You never run pg_dump or pg_upgrade to move from 17.1 to 17.2.
  • •Deployment Pattern:
bash
# Debian / Ubuntu package upgrade: sudo apt-get update && sudo apt-get --only-upgrade install postgresql-17 sudo systemctl restart postgresql

▸4. 5-Year Lifecycle & EOL Policy

The PostgreSQL project enforces an unambiguous support lifespan:

  • •Support Duration: Exactly 5 years of active maintenance from the initial GA date.
  • •The November Rule: Support officially lapses on the second Thursday of November in the 5th year.
  • •Post-EOL Exposure: Once retired, no security patches or CVE mitigations will ever be issued by the community.
sql
-- Query engine version and internal integer representation: SELECT version(); SHOW server_version_num; -- e.g., 170001 (17.1)

▸5. Major Upgrade Strategies

StrategyDowntime WindowStorage FootprintComplexitySenior DBA Verdict
pg_upgrade --link1-5 MinutesNegligible (Hard-links)LowProduction standard for standalone/HA clusters.
Logical Replication0 - 5 Seconds2x (Parallel cluster)Medium/HighZero-downtime tier-1 fintech/e-commerce.
pg_dump / pg_restoreHours to DaysHighVery LowSuitable only for non-critical datasets < 50 GB.