Skip to content

Upgrade to PostgreSQL 15 #9797

Open
Open
@ymahajan

Description

Jira Link: DB-1591

Motivation -

  1. Feature / Need: This is one of the key motivating factors for application developers and database administrators. Each new version introduces many small and big features which open new ways of solving a problem and introducing new improvements.
  2. Support for new Postgres Extensions: An added advantage for some can be added features which you get with the use of Postgres Extensions. With each new version of PostgreSQL the extensions take advantage of the new features and add functionality which can be boon for application development. Tools like Pgpool, Bgbouncer, extensions get better with each version.
  3. Community Support and Fixes: The best part of using an open source community database is not being bound by proprietary licensing hence low cost of operations as well as a large group of developers contributing to it. That doesn't translate to being able to keep using a version indefinitely or getting fixes indefinitely. Every version of Postgres is supported by the community for a defined period of time in which the community releases security patches and bug fixes on a regular cycle. Once the version is deemed unsupported, the fixes stop.
  4. Compliance: Organizations have strict compliances to ensure and enforce that critical application databases are up to date with the latest supported versions. These policies can also extend to applications with embedded databases. This makes it imperative to keep your deployments up to date.
  5. Performance: Throughput of your database can be your key driving factor for upgrades. With each new version Postgres keeps delivering better performances.

Phase 1 - Set up Postgres 15 branch for YSQL

Feature Status Comments
Create pg15 YSQL branch https://github.com/yugabyte/yugabyte-db/tree/pg15
Rebase Postgres 15 changes onto pg15 branch From PG version 15.2 (commit)
Fix post-rebase compilation issues Support compiling with ./yb_build.sh --clang15 --sjb --rebuild-postgres --no-initdb
Set up regular rebase of Yugabyte latest on pg15 branch weekly rebase from yugabyte-db/master branch

Phase 2 - Support YSQL database initialization (initdb)

Feature Status Comments
Initdb bootstrap stage Initialize core template1 system tables
Initialize rest of pinned objects setup_auth and setup_depend
Initialize rest of template1 objects collations, dictionary, privileges, schemas, plpgsql
Initialize other primitive databases template0, postgres, yugabyte, and system_platform

Phase 3 - Feature parity with current YSQL

Many features are already used internally as part of initdb (phase above)

Feature Status Comments
Set up CI tests for pg15 branch Run all the same tests as for the latest branch
Review new PG 15 tests Add any new tests for pre-existing (PG11) features
Clean up CI test results Fix any broken tests to get regular clean runs on pg15 branch
Review and merge PG extensions e.g. pg_stat_statements, pg_hint_plan, orafce, etc.
Support rolling upgrade to YSQL.PG15 Functional Spec and Design Doc
Merge pg15 branch into master PG v15 as default YSQL baseline

Phase 4 - Enable select PostgreSQL v12 to v15 features

Feature Status Comments
Allow foreign keys to reference partitioned tables Added in PG 12 (release notes)
Stored generated columns Added in PG 12 (release notes)
Better query planning when using extended statistics ⬜️ Added in PG 13 (release notes)
Improvements to PostgreSQL's query parallelism support ⬜️ Added in PG 14 (release notes)
Improved Sort Performance and Compression ⬜️ Added in PG 15 (release notes)
Support for the SQL MERGE command. ⬜️ Added in PG 15 (release notes)

Phase 5 (future) - Enable all PostgreSQL v12 to v15 features

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

area/ysqlYugabyte SQL (YSQL)current-roadmapkind/enhancementThis is an enhancement of an existing featurepriority/lowLow priorityroadmap-tracking-issueThis issue tracks a major roadmap item, and usually appears in the roadmap list.

Type

No type

Projects

  • Status

    No status

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions