citusdata / citusdata/docker

BLOCKED: PG19 GA follow-up steps to complete PostgreSQL 19 support

Open
#387 0 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
Dockerfile
Stars
273
Forks
102
Avg merge
5d 20h
Merged PRs (30d)
2

Description

**Status: BLOCKED — do not start until both external gates below are open.**

This is the final phase of PostgreSQL 19 support. Phase 1 is merged (#383); phase 2 is open for review as #386. Everything left is gated on PostgreSQL 19 going GA and Citus publishing PG19 packages.

## Blocking gates

Both must be true before any step below is executed:

- [ ] **PostgreSQL 19 GA published on Docker Hub.** Re-verified 2026-09-08: `library/postgres` still has only `19beta1`, `19beta2`, `19beta3` — no GA and no RC tag.
- [ ] **`postgresql-19-citus-` published** on repos.citusdata.com. Re-verified 2026-09-08: no `postgresql-19-citus` package exists at any version (PG19 currently has only `hll` and `topn`).

## ⚠️ Hard ordering constraint — read before dispatching `update_version.yml`

`update_docker.py` sets `latest_postgres_version = postgres_19_version`, so the `latest` and `alpine` images are generated from whatever `postgres_19_version` holds in `pkgvars`.

`pkgvars` currently reads `postgres_19_version=19beta3`.

**If `update_version.yml` is dispatched for the Citus 15 release while `pkgvars` still says `19beta3`, `citus:latest` and `citus:alpine` will be pinned to a PostgreSQL 19 *beta*.** Step 1 must land before any release dispatch.

Note this is not triggered by merging to `master` — `update_version.yml` is `workflow_dispatch` only, and the publish workflows only build the Dockerfiles as they already exist in the repo.

## Steps, in order

- [ ] **1. Bump `pkgvars`** — `postgres_19_version=19beta3` → the PG19 GA version. Must precede step 5.
- [ ] **2. Add `postgres_19` to the build matrices** in `publish_docker_images_on_push.yml`, `publish_docker_images_cron.yml` and `publish_docker_images_on_tag.yml`.
- [ ] **3. Update `README.md`** (line 11) for the new supported-version set.
- [ ] **4. Confirm `postgres-19/Dockerfile`** is on the current Citus version. It is currently `ARG VERSION=14.1.0` / `postgresql-$PG_MAJOR-citus-14.1`; regeneration will move it to the release version, so this should be a no-op once step 5 runs.
- [ ] **5. Dispatch `update_version.yml`** for the Citus 15 release. This regenerates `Dockerfile`, `alpine/Dockerfile`, `postgres-17/18/19/Dockerfile` and the changelog from the templates in `citusdata/tools`.

## Verified side effects of step 5

Running the `v0.8.39` generator against current `master` produces exactly these changes, which are expected and correct:

- `Dockerfile` / `alpine/Dockerfile` — rebased onto `postgres_19_version` (hence step 1).
- `Dockerfile` — `postgresql-$PG_MAJOR-hll` `2.19` → `2.21` and `topn` `2.7.0` → `2.7.1`. This is pre-existing drift: `latest` currently ships older `hll`/`topn` than `pg17`/`pg18`. It self-corrects here, so no separate fix is needed.
- `postgres-19/Dockerfile` — Citus `14.1.0` → release version (step 4).
- `postgres-17/Dockerfile` — trailing-newline-only change, cosmetic.

## Also self-corrects at this point

`publish_docker_images_on_manual.yml` passes no `--image_type`, which is an intentional "build all regular images" mode. Its `main` trigger currently fails because `postgres_19` cannot build. Once the gates above are open it works again with no change. It is `workflow_dispatch`-only, so impact until then is limited.

## Context

- Phase 1 — #383, image content (`postgres-18/`, `postgres-19/`, `pkgvars` entries)
- Phase 2 — #386 (**open, awaiting review**), matrices moved to PG17/18, PG16 retired, tools pinned to `v0.8.39`
- Tools support landed in citusdata/tools#423, released as `v0.8.39`

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.