Skip to content

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

Description

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

This is the final phase of PostgreSQL 19 support. Phases 1 and 2 are already merged (#383, #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. As of 2026-09-02 library/postgres has only 19beta1, 19beta2, 19beta3 — no GA tag.
  • postgresql-19-citus-<ver> published on repos.citusdata.com. As of 2026-09-02 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 masterupdate_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 pkgvarspostgres_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).
  • Dockerfilepostgresql-$PG_MAJOR-hll 2.192.21 and topn 2.7.02.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

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

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions