Skip to content

PostgreSQL 19 support in packaging images #1209

Description

Tracking issue for PostgreSQL 19 support in the packaging build images.

Current state

Initial support is being added in #1203:

  • deb (templates/Dockerfile-deb.tmpl + generated dockerfiles/*-all/Dockerfile): the extra 19 component is appended to the PGDG apt source line (deb http://apt.postgresql.org/pub/repos/apt/ <release>-pgdg main 19), build deps switched to postgresql-server-dev-19, and DEB_PG_SUPPORTED_VERSIONS extended to 14 15 16 17 18 19.
  • rpm (templates/Dockerfile-rpm.tmpl + dockerfiles/almalinux-9-pg19/): the pgdg19-updates-testing repo is enabled via sed on pgdg-redhat-all.repo, because the GA repo (pub/repos/yum/19/redhat/...) does not exist yet.
  • version lists: 19 added to update_dockerfiles, update_image, and ci/push_images.
  • CI matrices: PG19 is added as a one-off include entry (almalinux,9 only) in build-package.yml, build-package-test.yml, and image-health-check.yml, rather than in the main POSTGRES_VERSION cross-product list.

Nothing pins a specific beta (beta1/beta2/beta3); packages are installed unpinned, so a rebuild always picks up the newest 19 build PGDG publishes.

Known limitations while PG19 is pre-GA

  • No EL8 packages. PGDG publishes no PostgreSQL 19 RPMs for EL8 — testing/19/redhat/rhel-8-x86_64/ is empty while rhel-9-x86_64/ is populated. update_dockerfiles, update_image, and ci/push_images therefore guard against release=8 + pgversion=19, and this is also why PG19 is an include entry in the CI matrices instead of being in the main list (the cross-product would otherwise pull in almalinux,8 and oraclelinux,8).
  • Beta packages come from the testing channel. The RPM images depend on pgdg19-updates-testing; the deb images depend on the version-specific 19 component of the pgdg archive. Both are pre-GA mechanisms.

TODOs after PostgreSQL 19 GA

  • rpm — drop the testing repo enable. Remove the sed -i '/\[pgdg19-updates-testing\]/...' line from templates/Dockerfile-rpm.tmpl and the pg19_sed_cmd conditional from update_dockerfiles, then regenerate with ./update_dockerfiles. Verify https://download.postgresql.org/pub/repos/yum/19/redhat/rhel-9-x86_64/ exists first (it currently 404s).
  • deb — drop the extra 19 component. Revert the pgdg source line in templates/Dockerfile-deb.tmpl back to ... <release>-pgdg main once PG19 packages land in the default main component, then regenerate.
  • Re-check EL8 availability. If PGDG ships PG19 for EL8 at GA, remove the release=8 guards in update_dockerfiles, update_image, and ci/push_images, and generate the almalinux-8-pg19 / oraclelinux-8-pg19 images. If EL8 remains unsupported (likely, given EL8 is near EOL), keep the guards and leave a short comment recording that it is permanent.
  • Fold PG19 into the main CI matrices. Once the EL8 question is settled, move 19 from the include block into the POSTGRES_VERSION list in build-package.yml, build-package-test.yml, and image-health-check.yml (or keep the include if EL8 stays excluded).
  • Rebuild and push images so the published citus/packaging tags carry GA PostgreSQL 19 rather than a beta build.
  • Extend PG19 to the remaining RPM platforms if PGDG coverage grows beyond EL9 (e.g. EL10) by the time of GA.
  • Update the release-side PostgreSQL version matrix (postgres-matrix.yml on the all-citus branch) once Citus itself declares PG19 support, so packages are actually built against PG19.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions