Skip to content

PG19: enable PG19beta1 test matrices in CI - #8616

Merged
ihalatci merged 1 commit into
pg19-supportfrom
pg19-ci-test-matrices
Jun 18, 2026
Merged

PG19: enable PG19beta1 test matrices in CI#8616
ihalatci merged 1 commit into
pg19-supportfrom
pg19-ci-test-matrices

Conversation

@ihalatci

Copy link
Copy Markdown
Contributor

Turns on the PG19beta1 columns across the downstream Build & Test
matrices now that the build job already proves PG19 compiles under
-Werror and the ruleutils port (#8602) lands the runtime/regress
fixes those suites depend on.

Changes (.github/workflows/build_and_test.yml)

  • test-citus, test-citus-failure, test-citus-cdc: add
    pg19_version to the pg_versions array.
  • test-arbitrary-configs: add pg19_version to matrix.pg_version.
  • test-pg-upgrade: add the 18 -> 19 and 16 -> 19 upgrade pairs
    (adjacent + oldest -> newest, consistent with the existing
    16->17 / 17->18 / 16->18 set).
  • params: bump pg19_version / upgrade_pg_versions from 19devel
    to 19beta1, and point image_suffix at the PG19beta1-enabled
    the-process images (-dev-33b3cf5, built from
    Add PG19 (19beta2) and bump PG minors via apt the-process#222).

Deliberately not changed

  • test-citus-upgrade stays at PG16/PG17 — no released Citus binary
    supports PG19, so there is nothing to upgrade from.

Dependencies

Closes #8615
Part of #8597

@codecov

codecov Bot commented Jun 13, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
⚠️ Please upload report for BASE (pg19-support@34fb255). Learn more about missing BASE report.

Additional details and impacted files
@@               Coverage Diff               @@
##             pg19-support    #8616   +/-   ##
===============================================
  Coverage                ?   88.80%           
===============================================
  Files                   ?      288           
  Lines                   ?    64364           
  Branches                ?     8093           
===============================================
  Hits                    ?    57161           
  Misses                  ?     4872           
  Partials                ?     2331           
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Enable PG19beta1 across the downstream test matrices now that the build
job proves it compiles:

- test-citus, test-citus-failure, test-citus-cdc: add pg19_version
- test-arbitrary-configs: add pg19_version to the matrix
- test-pg-upgrade: add 18->19 and 16->19 upgrade pairs
- params: bump pg19_version/upgrade_pg_versions 19devel -> 19beta1
- params: point image_suffix at the PG19beta1 the-process images
  (-dev-33b3cf5, built from citusdata/the-process#222)

test-citus-upgrade is left at PG16/PG17 (no released Citus supports PG19).

Closes #8615
@ihalatci
ihalatci force-pushed the pg19-ci-test-matrices branch from ad4ccab to 2a197c5 Compare June 16, 2026 12:15
@onurctirtir
onurctirtir self-requested a review June 18, 2026 07:19
@ihalatci
ihalatci merged commit 87fe895 into pg19-support Jun 18, 2026
127 of 166 checks passed
@ihalatci
ihalatci deleted the pg19-ci-test-matrices branch June 18, 2026 07:41
ihalatci added a commit that referenced this pull request Jun 18, 2026
Stacked PR (PR2 of the PG19 stack). **Base = `pg19-ci-test-matrices`
(#8616)**, which is itself stacked on `pg19-ruleutils-port` (#8602) →
`pg19-support`. Review/merge in stack order.

Fixes two PG19 runtime crashes that surface in normal Citus operation
(outside the regression suite):

1. **`FuncnameGetCandidates()`** gained an `int *fgc_flags`
out-parameter that the callee writes to unconditionally. The compat shim
passed `NULL` and crashed on every by-name function lookup (e.g. the
maintenance daemon). Now passes the address of an int compound literal.
2. **`TupleDesc->firstNonCachedOffsetAttr`**: PG19 added an offset cache
that `BlessTupleDesc()` / `slot_deform_heap_tuple()` now assert is
populated but no longer populate themselves. `BlessTupleDesc` is wrapped
to call `TupleDescFinalize()` first (no-op shim on older majors), with
explicit calls added at the four sites that deform hand-built
TupleDescs.

Also installs `ApplicationNameAssignHook` via union access on PG19.

Closes #8610
Part of #8597
ihalatci added a commit that referenced this pull request Jun 26, 2026
Stacked PR (PR3 of the PG19 stack). **Base = `pg19-runtime-fixes`
(#8617)** → `pg19-ci-test-matrices` (#8616) → `pg19-ruleutils-port`
(#8602) → `pg19-support`. Review/merge in stack order.

PG19 enables parallel `CREATE INDEX` by default
(`max_parallel_maintenance_workers` defaults to 2). Columnar's TableAM
is always serial — `rs_parallel` is stored but never read, and the build
path flushes pending writes, which is disallowed inside a parallel
operation. This caused `CREATE INDEX` on columnar tables to fail on
PG19.

Three changes (all in `columnar_tableam.c`):

1. **`parallelscan_estimate`/`initialize`/`reinitialize`** now delegate
to the `table_block_*` helpers, so callers that unconditionally size and
initialize a `ParallelTableScanDesc` (e.g. PG19's parallel btree build)
no longer abort. Columnar ignores the descriptor, so the written state
is simply unused.
2. **`columnar_index_build_range_scan`** accepts a parallel scan
descriptor by discarding it (`scan = NULL`) and running the serial path.
3. **`ColumnarProcessUtility`** forces
`max_parallel_maintenance_workers=0` (via
`NewGUCNestLevel`/`AtEOXact_GUC` around `PrevProcessUtilityHook`) for
`CREATE INDEX` on a columnar AM relation, so the build runs serially.

Closes #8611
Part of #8597

---------

Co-authored-by: Ibrahim Halatci <ihalatci@microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
ihalatci added a commit that referenced this pull request Jul 16, 2026
…8619)

Stacked PR (PR3b of the PG19 stack). **Base = `pg19-columnar-index`
(#8618)** → `pg19-runtime-fixes` (#8617) → `pg19-ci-test-matrices`
(#8616) → `pg19-ruleutils-port` (#8602) → `pg19-support`. Review/merge
in stack order.

PG19 removed `get_relation_info_hook`, which is where pre-PG19 builds
disable parallel query and index-only scans for columnar relations
(columnar scans are always serial and cannot return tuples from an
index). The Phase-1 build left a `TODO(PG19, #8614)` placeholder; this
PR re-implements that suppression inside `ColumnarSetRelPathlistHook`:

- forbid future parallel workers (`rel_parallel_workers = 0`,
`consider_parallel = false`) and drop any already-generated partial
paths;
- clear each index's `canreturn` flags and strip any `IndexOnlyScan`
paths that were already created (`set_rel_pathlist_hook` runs after path
generation).

The pre-PG19 `ColumnarGetRelationInfoHook` path is unchanged.

Closes #8614
Part of #8597

---------

Co-authored-by: Ibrahim Halatci <ihalatci@microsoft.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
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.

PG19: CI test automation — enable PG19 test matrices (test-citus, -failure, -cdc, arbitrary-configs, pg-upgrade)

2 participants