Skip to content

Upgrade to pgrx 0.19.1 — PostgreSQL 18 (resolve E-006)#64

Merged
styk-tv merged 4 commits into
mainfrom
pgrx-0.19-pg18-support
Jul 16, 2026
Merged

Upgrade to pgrx 0.19.1 — PostgreSQL 18 (resolve E-006)#64
styk-tv merged 4 commits into
mainfrom
pgrx-0.19-pg18-support

Conversation

@styk-tv

@styk-tv styk-tv commented Jul 16, 2026

Copy link
Copy Markdown
Owner

Closes #63. Resolves ERRATA E-006 (see new E-015 in specs/ERRATA.v0.6.md).

What this does

Upgrades pgrx 0.16.1 → 0.19.1 and moves the active PostgreSQL target to 18.
pgRDF v0.6.19 builds, links, boots and runs on PostgreSQL 18.4 with no
functional code changes — only the mechanical 0.18 migration.

Why E-006 no longer holds

The two blockers that held pgRDF at pgrx 0.16.1 were point-in-time, and the
errata's own re-check trigger ("any pgrx publish above 0.18.0") had fired
(0.18.1, 0.19.0, 0.19.1 shipped):

  • E0658 (NonNull::from_mut) is a Rust-version gate — clears on Rust ≥ 1.96,
    which pgrx adopted as its MSRV in 0.18.1.
  • E0716 (impl_table_iter) clears via pgrx 0.18's SqlTranslatable
    associated-const migration (the &[..] temporary now gets 'static
    promotion in const context).

Changes

Extension

  • Cargo.toml: pgrx/pgrx-tests=0.19.1; add pg18 feature; check-cfg
    known values → pg13,pg19.
  • Remove [[bin]] pgrx_embed + delete src/bin/pgrx_embed.rs (0.18 single-pass
    schema embed). pgRDF has zero hand-written SqlTranslatable impls, so the
    migration's main breaking change doesn't touch us. crate-type keeps "lib".

Local build / compose

CI / release — moved active major 17 → 18, preserved 17 (armed, not run)

  • PGRX_VERSION0.19.1 everywhere (must match the new pin or even pg17 breaks).
  • ci.yml clippy + test matrices → ["18"]; compose regression job → pg18.
  • release.yml, oci-publish.yml, update-latest-md.yml (attested chain) → pg18.
  • pg17 and pg14–16 are kept in the commented full matrices — one active major, no
    CI/artifact-credit bloat.

Validation

  • Local: clean --features pg18 build (0 errors/0 warnings), cargo fmt --check
    • clippy -D warnings green, and a live pgrdf-compose stack on PG 18.4:
      CREATE EXTENSION pgrdf + pgrdf.version() = 0.6.19 + a SPARQL load_turtle→join
      round-trip.
  • Pipeline: draft CI runs fmt + clippy(pg18); marking Ready runs the full pg18
    cargo pgrx test + compose regression + W3C harnesses.

Not in this PR (release-cut / follow-up)

  • Full pg18 cargo pgrx test + regression green in CI (flip to Ready)
  • Version bump + CHANGELOG fold happen at the release cut (v0.6.20)
  • PG 19 follow-up (add pg19 feature + postgres:19; pgrx 0.19.x already
    carries pg19beta, but PG 19 is still beta — not for an attested cut yet)

Kept as a draft pending the full pg18 pipeline pass + the maintainer's merge/
release call.

styk-tv added 3 commits July 16, 2026 04:12
Resolve ERRATA E-006. The E0658/E0716 blockers that held pgRDF at
pgrx 0.16.1 were point-in-time: E0658 (NonNull::from_mut) is a Rust
>=1.96 gate (pgrx's new MSRV); E0716 (impl_table_iter) is fixed by
pgrx 0.18's SqlTranslatable->associated-const migration.

- Cargo: pgrx/pgrx-tests =0.19.1; add pg18 feature; check-cfg pg13/pg19
- Drop [[bin]] pgrx_embed + src/bin/pgrx_embed.rs (0.18 single-pass embed)
- builder image: rust 1.96 + PGRX_VERSION 0.19.1, PG_MAJOR default 18
- compose: postgres:18-bookworm, /18/ paths, named PGDATA volume at
  /var/lib/postgresql (PG18 data-dir convention change)

Refs #63
Single active major (pg18); pg17 + pg14-16 preserved in the commented
full matrices (armed, not run) so nothing is deleted and CI/artifact
credits aren't spent building majors we're not shipping.

- setup-pgrx + ci/release/regression-w3c/perf-nightly: PGRX_VERSION 0.19.1
  (cargo-pgrx must match the new pgrx =0.19.1 pin, else even pg17 breaks)
- ci.yml: clippy + test matrix -> ["18"]; compose regression job builder
  (PG_MAJOR=18, rust 1.96) + postgres:18-bookworm
- release.yml: build matrix -> ["18"], MANIFEST base -> postgres:18
- oci-publish.yml: gate + leaf + aggregate index + smoke -> pg18
- update-latest-md.yml: attestation verify + head resolution -> pg18

Refs #63
@styk-tv styk-tv linked an issue Jul 16, 2026 that may be closed by this pull request
6 tasks
@styk-tv styk-tv added this to the v0.6.20 milestone Jul 16, 2026
@styk-tv
styk-tv marked this pull request as ready for review July 16, 2026 03:34
…t-parity)

The Ready-PR regression job (run 29469285205) failed only at the
artifact-parity step: it rebuilt a pg17 .so because Justfile +
verify-installed-artifacts.sh still defaulted PG_MAJOR=17, then compared
it to the pg18 .so the compose job produced -> hash mismatch. The compose
pg18 boot + CREATE EXTENSION succeeded; test(18) (pgrx 295-test suite)
passed. Only the missed default caused the failure. Verified locally:
artifact-parity OK on pg18 (fresh export == compose/extensions, container
bytes match, pgrdf.version()=0.6.19).

- Justfile PG_MAJOR default 17 -> 18
- tests/regression/scripts/verify-installed-artifacts.sh default 17 -> 18
- tests/perf/{benchmark-runner,lubm/run-lubm}.sh: postgres:18 + /18/ paths
- compose/compose.yml: refresh stale pg17/E-006 header comment

Refs #63
@styk-tv
styk-tv merged commit 8611218 into main Jul 16, 2026
4 checks passed
@styk-tv
styk-tv deleted the pgrx-0.19-pg18-support branch July 16, 2026 10:36
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.

Upgrade to pgrx 0.19.1 — unblock PostgreSQL 18 (resolve E-006)

1 participant