chore(deps): bump sqlx 0.7 to 0.8 (BUNYIP-399) #395

Merged
David merged 2 commits from fix/BUNYIP-399-sqlx-0.8 into main 2026-08-01 02:35:58 +02:00
Owner

What

Bump sqlx from 0.7.4 to 0.8.6 (latest 0.8.x) across the bunyip workspace, and repin the dunite git dependencies to the DUNITE-3 revision that runs on sqlx 0.8, so bunyip and dunite share one sqlx major.

Why

The workspace pinned sqlx 0.7.4, which emits a future-incompatibility warning for sqlx-postgres 0.7.4 ("contains code that will be rejected by a future version of Rust") and is two minor versions behind the supported 0.8.x line. bunyip cannot move alone because it consumes dunite-core/download/oci/oidc as compiled git dependencies and both sides must agree on the sqlx major; DUNITE-3 (dunite PR #20) upgrades dunite to sqlx 0.8, which unblocks this (BUNYIP-399).

Changes

  • Repin the four dunite git-dep declarations (dunite-core and dunite-download in crates/bunyip-domain, dunite-oci in crates/bunyip-oci, dunite-oidc in crates/bunyip-oidc) from main's rev = "70eea0b..." to rev = "ded4b9f054f677a00d42bb7c3fbd51806a12a427", keeping the same git URL and the rev-pin form BUNYIP-426 F6 requires. All four resolve to one git source, so they move together.
  • Bump sqlx from 0.7 to 0.8 in the four crate manifests (bunyip-api, crates/bunyip-domain, crates/bunyip-oci, crates/bunyip-oidc) with the identical feature set (runtime-tokio, postgres, uuid, chrono, ipnetwork, migrate).
  • A package-scoped cargo update locks sqlx to 0.8.6 (libsqlite3-sys 0.30.1, hashlink 0.10.0) and the dunite crates to ded4b9f; the regenerated Cargo.lock is committed.
  • No bunyip source changes were needed: the code uses only FromRow derives plus runtime and compile-time query macros, with no custom Encode/Decode/Type impls and no Any driver, so sqlx 0.8 required no call-site fixes.
  • No .sqlx/ cache regeneration was needed: the committed offline query cache validated unchanged under sqlx 0.8 (bunyip-oidc's compile-time query! macros build clean with SQLX_OFFLINE=true).

Refresh against main (2026-07-31)

The branch had been open since 2026-07-24 and had gone unmergeable ("Merge conflicts" on the PR). main moved from v0.8.0 to v0.9.0 and repinned the dunite deps by rev in the meantime, so Cargo.lock and three crate manifests conflicted. Merge commit a768c20 resolves every conflict to main's side and re-applies only this branch's two intended edits (sqlx 0.7 -> 0.8, dunite rev -> ded4b9f) on top, so the PR diff against main is now exactly the 4 manifests plus Cargo.lock. Forgejo reports the PR as mergeable again.

Tests

Full gate green in the pinned rust-builder-glibc container with SQLX_OFFLINE=true, re-run after the refresh: cargo fmt --all --check clean, cargo clippy --workspace --all-targets -- -D warnings clean with zero warnings (the sqlx-postgres future-incompatibility warning is gone), cargo build --workspace --all-targets --locked green (Cargo.lock is consistent for CI's locked build), and cargo test --workspace --all-targets reports 607 passed and 0 failed. The four CI invariant scripts (check-security-invariants.sh, check-migration-immutability.sh, check-migration-versions.sh, check-workflow-secrets.sh) all pass.

Merge prerequisite (DUNITE-3)

Do not merge until DUNITE-3 (dunite PR #20) is merged; then repin the dunite rev from ded4b9f to dunite's merged main commit and re-run cargo update for the four dunite packages. ded4b9f is a commit on the still-open DUNITE-3 branch; if dunite is squash-merged and the branch is deleted, that commit can become unreachable and break bunyip's build. dunite PR #20 currently reports "Can be merged" with its own gate green, and its head sits directly on dunite main (70eea0b), so landing it is a fast-forward-shaped merge.

## What Bump sqlx from 0.7.4 to 0.8.6 (latest 0.8.x) across the bunyip workspace, and repin the dunite git dependencies to the DUNITE-3 revision that runs on sqlx 0.8, so bunyip and dunite share one sqlx major. ## Why The workspace pinned sqlx 0.7.4, which emits a future-incompatibility warning for sqlx-postgres 0.7.4 ("contains code that will be rejected by a future version of Rust") and is two minor versions behind the supported 0.8.x line. bunyip cannot move alone because it consumes dunite-core/download/oci/oidc as compiled git dependencies and both sides must agree on the sqlx major; DUNITE-3 (dunite PR #20) upgrades dunite to sqlx 0.8, which unblocks this (BUNYIP-399). ## Changes - Repin the four dunite git-dep declarations (dunite-core and dunite-download in crates/bunyip-domain, dunite-oci in crates/bunyip-oci, dunite-oidc in crates/bunyip-oidc) from main's `rev = "70eea0b..."` to `rev = "ded4b9f054f677a00d42bb7c3fbd51806a12a427"`, keeping the same git URL and the rev-pin form BUNYIP-426 F6 requires. All four resolve to one git source, so they move together. - Bump `sqlx` from 0.7 to 0.8 in the four crate manifests (bunyip-api, crates/bunyip-domain, crates/bunyip-oci, crates/bunyip-oidc) with the identical feature set (runtime-tokio, postgres, uuid, chrono, ipnetwork, migrate). - A package-scoped `cargo update` locks sqlx to 0.8.6 (libsqlite3-sys 0.30.1, hashlink 0.10.0) and the dunite crates to ded4b9f; the regenerated Cargo.lock is committed. - No bunyip source changes were needed: the code uses only FromRow derives plus runtime and compile-time query macros, with no custom Encode/Decode/Type impls and no Any driver, so sqlx 0.8 required no call-site fixes. - No `.sqlx/` cache regeneration was needed: the committed offline query cache validated unchanged under sqlx 0.8 (bunyip-oidc's compile-time `query!` macros build clean with SQLX_OFFLINE=true). ## Refresh against main (2026-07-31) The branch had been open since 2026-07-24 and had gone unmergeable ("Merge conflicts" on the PR). main moved from v0.8.0 to v0.9.0 and repinned the dunite deps by rev in the meantime, so Cargo.lock and three crate manifests conflicted. Merge commit a768c20 resolves every conflict to main's side and re-applies only this branch's two intended edits (sqlx 0.7 -> 0.8, dunite rev -> ded4b9f) on top, so the PR diff against main is now exactly the 4 manifests plus Cargo.lock. Forgejo reports the PR as mergeable again. ## Tests Full gate green in the pinned rust-builder-glibc container with SQLX_OFFLINE=true, re-run after the refresh: `cargo fmt --all --check` clean, `cargo clippy --workspace --all-targets -- -D warnings` clean with zero warnings (the sqlx-postgres future-incompatibility warning is gone), `cargo build --workspace --all-targets --locked` green (Cargo.lock is consistent for CI's locked build), and `cargo test --workspace --all-targets` reports 607 passed and 0 failed. The four CI invariant scripts (check-security-invariants.sh, check-migration-immutability.sh, check-migration-versions.sh, check-workflow-secrets.sh) all pass. ## Merge prerequisite (DUNITE-3) Do not merge until DUNITE-3 (dunite PR #20) is merged; then repin the dunite rev from ded4b9f to dunite's merged main commit and re-run `cargo update` for the four dunite packages. `ded4b9f` is a commit on the still-open DUNITE-3 branch; if dunite is squash-merged and the branch is deleted, that commit can become unreachable and break bunyip's build. dunite PR #20 currently reports "Can be merged" with its own gate green, and its head sits directly on dunite main (70eea0b), so landing it is a fast-forward-shaped merge.
chore(deps): bump sqlx 0.7 to 0.8, repin dunite to sqlx-0.8 rev
All checks were successful
E2E / Playwright against deployment (pull_request) Successful in 32s
Check / fmt + clippy + build + tests (pull_request) Successful in 11m56s
d07e7477b8
Move the workspace to sqlx 0.8.6 (latest 0.8.x), clearing the sqlx-postgres 0.7.4 future-incompatibility warning and staying on a supported line. This was blocked on dunite until DUNITE-3 (PR #20) upgraded dunite to sqlx 0.8; bunyip and dunite must share one sqlx major because bunyip consumes dunite-core/download/oci/oidc as compiled git dependencies.

Lockstep: repin the four dunite git-dep declarations (dunite-core and dunite-download in bunyip-domain, dunite-oci in bunyip-oci, dunite-oidc in bunyip-oidc) from `branch = "main"` to `rev = "ded4b9f054f677a00d42bb7c3fbd51806a12a427"` (the DUNITE-3 #20 branch HEAD, the first dunite revision on sqlx 0.8), keeping the git URL. All four resolve to the same git source, so they move together. Then bump sqlx 0.7 to 0.8 in the four bunyip crate manifests (bunyip-api, bunyip-domain, bunyip-oci, bunyip-oidc) with the same feature set, and lock via `cargo update`.

No bunyip source changes were needed: the code uses only `FromRow` derives plus runtime and compile-time query macros, with no custom Encode/Decode/Type impls and no `Any` driver, so sqlx 0.8 required no call-site fixes. The `.sqlx/` offline query cache validated unchanged under sqlx 0.8 (bunyip-oidc's `query!` macros compile clean with SQLX_OFFLINE=true), so no cache regeneration was required.

Merge prerequisite: `ded4b9f` is a branch commit on the still-open DUNITE-3 (#20). Do not merge this PR until DUNITE-3 (#20) is merged; then repin the dunite rev from `ded4b9f` to dunite's merged main commit so it cannot go unreachable if the branch is squashed and deleted.

Gate (docker rust-builder-glibc, SQLX_OFFLINE=true): cargo fmt --all --check, cargo clippy --workspace --all-targets -D warnings (zero warnings, future-incompat gone), and cargo test --workspace --all-targets (495 passed, 0 failed) all green; cargo check --locked confirms Cargo.lock is consistent.

#BUNYIP-399

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Merge main into fix/BUNYIP-399-sqlx-0.8
All checks were successful
E2E PR gate / Install + reachability (no deployment secrets) (pull_request) Successful in 23s
Check / fmt + clippy + build + tests (pull_request) Successful in 14m44s
Create release / Create release from merged PR (pull_request) Has been skipped
a768c207b9
Resolves the merge conflicts that made PR #395 unmergeable. main moved from v0.8.0 to v0.9.0 and repinned the four dunite git deps by rev (BUNYIP-426 F6) while this branch sat open, so Cargo.lock and the three crate manifests conflicted. Every conflict is resolved to main's side, then the branch's two intended edits are re-applied on top: sqlx 0.7 -> 0.8 in the four crate manifests, and the dunite rev moved from main's 70eea0b to ded4b9f (DUNITE-3's head, the sqlx-0.8 dunite).

Cargo.lock regenerated with a package-scoped `cargo update` for sqlx plus the four dunite crates; sqlx locks to 0.8.6 and libsqlite3-sys to 0.30.1. No bunyip source change was needed and the committed .sqlx/ offline cache still validates.

Verified in the pinned rust-builder-glibc image with SQLX_OFFLINE=true: cargo fmt --all --check clean, cargo clippy --workspace --all-targets -D warnings clean, cargo build --workspace --all-targets --locked green, cargo test --workspace --all-targets 607 passed 0 failed. The four CI invariant scripts (security invariants, migration immutability, migration versions, workflow secrets) all pass.

DUNITE-3 (dunite PR #20) is still open, so ded4b9f remains a commit on an unmerged branch. Merge that first, then repin this branch to dunite main before merging.

#BUNYIP-399
David referenced this pull request from a commit 2026-08-01 02:21:13 +02:00
David scheduled this pull request to auto merge when all checks succeed 2026-08-01 02:22:22 +02:00
David merged commit 0d972c2fc6 into main 2026-08-01 02:35:58 +02:00
David deleted branch fix/BUNYIP-399-sqlx-0.8 2026-08-01 02:35:59 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
psa-systems/bunyip!395
No description provided.