citusdata / citusdata/packaging
PostgreSQL 19 support in packaging images
- Dominant language
- Dockerfile
- Stars
- 19
- Forks
- 11
- Avg merge
- 1d 15h
- Merged PRs (30d)
- 17
Description
Tracking issue for PostgreSQL 19 support in the packaging build images.
## Current state
Initial support is being added in https://github.com/citusdata/packaging/pull/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/ -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 `... -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.
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.