Upgrade to pgrx 0.19.1 — PostgreSQL 18 (resolve E-006)#64
Merged
Conversation
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
…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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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):
NonNull::from_mut) is a Rust-version gate — clears on Rust ≥ 1.96,which pgrx adopted as its MSRV in 0.18.1.
impl_table_iter) clears via pgrx 0.18'sSqlTranslatable→associated-
constmigration (the&[..]temporary now gets'staticpromotion in const context).
Changes
Extension
Cargo.toml:pgrx/pgrx-tests→=0.19.1; addpg18feature;check-cfgknown values →
pg13,pg19.[[bin]] pgrx_embed+ deletesrc/bin/pgrx_embed.rs(0.18 single-passschema embed). pgRDF has zero hand-written
SqlTranslatableimpls, so themigration's main breaking change doesn't touch us.
crate-typekeeps"lib".Local build / compose
compose/builder.Containerfile:rust:1.91→1.96,PGRX_VERSION→0.19.1.compose/compose.yml:postgres:18-bookworm,/18/extension paths, and PGDATAon a named volume mounted at
/var/lib/postgresql(PG18's data-dir convention;Upgrading between major versions? docker-library/postgres#37).
CI / release — moved active major 17 → 18, preserved 17 (armed, not run)
PGRX_VERSION→0.19.1everywhere (must match the new pin or even pg17 breaks).ci.ymlclippy + test matrices →["18"]; compose regression job → pg18.release.yml,oci-publish.yml,update-latest-md.yml(attested chain) → pg18.CI/artifact-credit bloat.
Validation
--features pg18build (0 errors/0 warnings),cargo fmt --checkclippy -D warningsgreen, and a livepgrdf-compose stack on PG 18.4:CREATE EXTENSION pgrdf+pgrdf.version()= 0.6.19 + a SPARQLload_turtle→joinround-trip.
cargo pgrx test+ compose regression + W3C harnesses.Not in this PR (release-cut / follow-up)
cargo pgrx test+ regression green in CI (flip to Ready)v0.6.20)pg19feature +postgres:19; pgrx 0.19.x alreadycarries
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.