Skip to content

Bump PG minor versions and enable PG19 source build (dev)#218

Open
ihalatci wants to merge 1 commit into
masterfrom
bump-pg-minors-add-pg19-main
Open

Bump PG minor versions and enable PG19 source build (dev)#218
ihalatci wants to merge 1 commit into
masterfrom
bump-pg-minors-add-pg19-main

Conversation

@ihalatci
Copy link
Copy Markdown
Contributor

Two related changes targeting master:

1. Bump PG minors (apt-tracked majors)

Major Was Now
16 16.13 16.14
17 17.9 17.10
18 18.3 18.4

2. Enable PG19 source build (dev branch)

PG19 is unreleased and not available on apt.postgresql.org. To let CI start producing PG19 test images now, this PR adds a source-build path for PG19 across all per-PG Dockerfiles.

  • PG_VERSIONS: adds PG19=19devel.
  • Makefile:
    • New PG19_SOURCE_REF ?= 43649b6a53e9b3964e921cc962f5c977bce688fd pinned to upstream postgres/postgres master. Override at build time (make PG19_SOURCE_REF=<sha> ...).
    • CITUS_UPGRADE_PG_VERSIONS switched to grep -v '^PG19=' — no Citus release supports PG19, so no citusupgradetester:19devel image is produced.
    • PG19_SOURCE_REF passed as a --build-arg to every per-PG image target.
  • extbuilder / exttester / failtester / citusupgradetester / pgupgradetester Dockerfiles: conditional source build when PG_MAJOR=19:
    • Fetch the source tarball from the pinned SHA via codeload.github.com.
    • ./configure --prefix=/usr/lib/postgresql/19 --enable-rpath --with-{openssl,icu,libxml,libxslt,lz4,zstd} --with-system-tzdata=/usr/share/zoneinfo then make install-world-bin.
    • --enable-rpath ensures PG19 binaries find their own libpq.so.5 under /usr/lib/postgresql/19/lib even when the multi-PG pgupgradetester image has an older apt libpq under /usr/lib/x86_64-linux-gnu/.
    • apt's postgresql-common normally creates the postgres user/group + /var/lib/postgresql; the source-build path creates them manually so the existing chown -R postgres:postgres /var/run/postgresql step still works.
  • exttester: skips postgresql-19-wal2json (not yet packaged); CITUS_VERSION is empty for PG19 (no Citus release supports it), and the build-citus step is already guarded on a non-empty value.
  • extbuilder: also exports PATH=/usr/lib/postgresql/$PG_MAJOR/bin/:$PATH so pg_config is discoverable by downstream extension builds, matching the other images.

Verification

The GitHub Actions build-test-images workflow auto-builds the matrix on push and is the end-to-end gate for PG19. PG19 wasn't compiled locally — CI is the first real test. If a PG19 image build fails, the most likely culprits are configure flags or missing apt deps; iterate by adjusting PG19_SOURCE_REF or the configure line in the Dockerfile.

Once a Citus release ships with PG19 support, follow up by adding CITUS_UPGRADE_VERSIONS_19=<tag> and dropping the grep -v '^PG19=' filter.

Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com

- PG_VERSIONS: bump minors, add PG19=19devel.
- Makefile: add PG19_SOURCE_REF (pinned to upstream postgres master SHA),
  switch the citusupgradetester matrix to filter PG19 out explicitly
  (grep -v '^PG19=') so no Citus release is required for PG19, and pass
  PG19_SOURCE_REF as a build-arg to every per-PG image target.
- extbuilder/exttester/failtester/citusupgradetester/pgupgradetester
  Dockerfiles: when PG_MAJOR=19, fetch the source tarball from the
  pinned upstream SHA and build with --prefix=/usr/lib/postgresql/19
  using --enable-rpath plus --with-{openssl,icu,libxml,libxslt,lz4,zstd}
  and --with-system-tzdata. apt-installed PG packages would normally
  create the postgres user/group and /var/lib/postgresql; the
  source-build path creates them manually so the existing chown steps
  still work.
- extbuilder: also export PATH=/usr/lib/postgresql/$PG_MAJOR/bin/:$PATH
  so pg_config is discoverable by downstream extension builds, matching
  exttester/failtester/citusupgradetester.
- exttester: skip postgresql-19-wal2json (not packaged for PG19 yet);
  CITUS_VERSION is empty for PG19 because no Citus release supports it,
  and the build-citus step is already guarded on a non-empty value.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
ihalatci added a commit to citusdata/citus that referenced this pull request May 29, 2026
Pulls in the test images built by citusdata/the-process#218:
  - PG16: 16.13 -> 16.14
  - PG17: 17.9  -> 17.10
  - PG18: 18.3  -> 18.4
  - PG19: 19devel (new, source-built in the upstream image)

Bumps image_suffix to -dev-e11d99c, updates sql_snapshot_pg_version
to 18.4, and updates upgrade_pg_versions to 16.14-17.10-18.4.

Adds pg19_version to the build matrix so PG19 source-level build is
exercised by CI. PG19 is intentionally NOT added to test-citus /
test-citus-failure / test-citus-cdc / upgrade jobs in this PR: the
regression suite requires the upstream-derived ruleutils_19.c that
lands in PR1b. Until then, only the build path is meaningful on PG19.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants