Pulp and Postgres-13

Currently, Pulp builds and tests against Postgres-13. This is a Really Old Version; we use it because we have a significant userbase that relies on it, and we try to avoid inadvertently adding features that would require a newer DB.

However - Postgres-13 is going EOL in November 2025. We’d like to no longer rely on it well before then, to give folk who need to, time to upgrade before they start missing security fixes :slight_smile:

In pursuit of this goal, we’d like to settle on a more-recent Postgres for our CI and oci-images. I can see from https://analytics.pulpproject.org/ that we have users on everything up to and including Postgres-17(!), so it looks like we work on those versions.

One consideration here is the next “long term” support we’re likely to face (centos-10-stream’s beta is shipping Postgres-16, for example)

Does anyone have Opinions on “features it would be really cool to see Pulp take advantage of” in newer versions?

7 Likes

Better support for ICU (unicode language features) that come with PG16.

see also:

1 Like

OK folks - lots of discussion has been had.

The current consensus is that Pulp will:

  • be targeting Postgres16
  • as part of the core/3.85 release
  • which will happen in the next 10-15 weeks (call it “3 months(ish)”

The rationale is

  • we have to leave Postgres13 before it EOLs in November
  • there are some new features and a lot of performance improvements in 16
  • 16 is widely available in the EL/CentOS environment (EL9 and CentOS10, for example, both have 16 available)

Note that there are already people running Pulp on Postgres15/16/17 today (see the analytics site for that data). So we aren’t talking (yet) about code-changes - just changes to “what do our containers get built with” and “what Postgres do we test against in CI/PRs”.

Once we start taking advantage of new features, of course, then one would need the new Postgres in addition to updating Pulp code.

4 Likes

Hello everyone,
I’m looking at recent changelogs and don’t see explicit PG16 (PostgreSQL 16) support notes. The last documentation I could locate was this pull request diff: https://github.com/pulp/pulpcore/pull/3517/files#diff-c999f2b6438cd23240ff8dab52b23fea8faeb82e767591840181cd0ba1fa0aae, but the page no longer exists.
My impression is that, since Django 4.2 uses psycopg3, there may not be a risk for DBAs upgrading to PostgreSQL 16. Before we proceed, could anyone share current guidance on PG16 support for Pulpcore? Are there known compatibility issues, recommended upgrade paths, or an updated CI/doc matrix we should rely on? Any experiences from others who’ve upgraded to PG16 would be really helpful. Thanks for the great work!

1 Like

Our oci-images have been running with Postgres16 since 2025-08-12, which means (among other things) that our CI pipeline tests against it since then as well. We’ve had users using it longer than that, but it’s what we are testing against.

I don’t have specific knowledge about the upgrade process, hopefully someone who’s been through it can chime in!

2 Likes

thanks a lot for the feedback,
I see as well you used 3.73 (from github action file), so I should be fine with 3.76.12 i’m running now :slight_smile:

Cheers

3 Likes

Our biggest concern is actually that we introduce backward incompatibilities by starting to use new PostgreSQL feature unavailable in PG13 and our tests no longer tell us that. Upgrading to a newer version of the DB was always considered to be not a problem.

2 Likes