Skip to content

fix(deps): update rust crate sqlx to 0.9#94

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/sqlx-0.x
Open

fix(deps): update rust crate sqlx to 0.9#94
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/sqlx-0.x

Conversation

@renovate

@renovate renovate Bot commented Jun 7, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Type Update Change
sqlx dependencies minor 0.80.9

Release Notes

launchbadge/sqlx (sqlx)

v0.9.0

Compare Source

Important Announcements
New Github Organization

Shortly after this release is published, the SQLx repository will be transferred to a new GitHub organization:
https://github.com/transact-rs/

This is because SQLx has not been owned or maintained by LaunchBadge, LLC. for a few years now, and has since been
informally transferred to the collective ownership of its principal authors. Moving the repository to a new
organization makes this change more clear, and also allows for potentially inviting outside collaborators.

Cargo.lock Removed from Tracking

The Cargo.lock has been removed from tracking in Git. CI should now always test with the latest versions of
all dependencies by default, alongside our pass that checks with cargo generate-lockfile -Z minimal-versions.

This should eliminate the need for any PRs that update dependencies to also update Cargo.lock or
contend with an endless stream of merge conflicts against it.

N.B. cargo install --locked sqlx-cli will no longer work. However, cargo install sqlx-cli has always
used the latest dependencies by default, ignoring the lockfile, so most users should not be affected. For users
requiring reproducible builds, consider maintaining your own lockfile instead; historically, we only ran cargo update
sporadically, so relying on SQLx's lockfile offered few guarantees anyway.

See the manual page for cargo install for details.

Breaking

As per our MSRV policy, the supported Rust version for this release cycle is 1.94.0.

  • [#​3383]: feat: create sqlx.toml format [[@​abonander]]
    • SQLx and sqlx-cli now support per-crate configuration files (sqlx.toml)
    • New functionality includes, but is not limited to:
      • Rename DATABASE_URL for a crate (for multi-database workspaces)
      • Set global type overrides for the macros (supporting custom types)
      • Rename or relocate the _sqlx_migrations table (for multiple crates using the same database)
      • Set characters to ignore when hashing migrations (e.g. ignore whitespace)
    • More to be implemented in future releases.
    • Enable feature sqlx-toml to use.
    • Guide: see sqlx::_config module in documentation.
    • Reference: [Link]
    • Examples (written for Postgres but can be adapted to other databases; PRs welcome!):
      • Multiple databases using DATABASE_URL renaming and global type overrides: [Link]
      • Multi-tenant database using _sqlx_migrations renaming and multiple schemas: [Link]
      • Force use of chrono when time is enabled (e.g. when using tower-sessions-sqlx-store): [Link]
        • Forcing bigdecimal when rust_decimal is enabled is also shown, but problems with chrono/time are more common.
    • Breaking changes:
      • Significant changes to the Migrate trait
      • sqlx::migrate::resolve_blocking() is now #[doc(hidden)] and thus SemVer-exempt.
  • [#​3486]: fix(logs): Correct spelling of aquired_after_secs tracing field [[@​iamjpotts]]
    • Breaking behavior change: implementations parsing tracing logs from SQLx will need to update the spelling.
  • [#​3495]: feat(postgres): remove lifetime from PgAdvisoryLockGuard [[@​bonsairobo]]
  • [#​3526]: Return &mut Self from the migrator set_ methods [[@​nipunn1313]]
    • Minor breaking change: Migrator::set_ignore_missing and set_locking now return &mut Self instead of &Self
      which may break code in rare circumstances.
  • [#​3541]: Postgres: force generic plan for better nullability inference. [[@​joeydewaal]]
    • Breaking change: may alter the output of the query!() macros for certain queries in Postgres.
  • [#​3613]: fix: RawSql lifetime issues [[@​abonander]]
    • Breaking change: adds DB type parameter to all methods of RawSql
  • [#​3670]: Bump ipnetwork to v0.21.1 [[@​BeauGieskens]]
  • [#​3674]: Implement Decode, Encode and Type for Box, Arc, Cow and Rc [[@​joeydewaal]]
    • Breaking change: impl Decode for Cow now always decodes Cow::Owned, lifetime is unlinked
    • See this discussion for motivation: #​3674 (comment)
  • [#​3723]: Add SqlStr [[@​joeydewaal]]
    • Breaking change: all query*() functions now take impl SqlSafeStr
      which is only implemented for &'static str and AssertSqlSafe.
      For all others, wrap in AssertSqlSafe(<query>).
    • This, along with [#​3960], finally allows returning owned queries as the type will be Query<'static, DB>.
    • SqlSafeStr trait is deliberately similar to std::panic::UnwindSafe,
      serving as a speedbump to warn users about naïvely building queries with format!()
      while allowing a workaround for advanced usage that is easy to spot on code review.
  • [#​3800]: Escape PostgreSQL Options [[@​V02460]]
    • Breaking behavior change: options passed to PgConnectOptions::options() are now automatically escaped.
      Manual escaping of options is no longer necessary and may cause incorrect behavior.
  • [#​3821]: Groundwork for 0.9.0-alpha.1 [[@​abonander]]
    • Increased MSRV to 1.86 and set rust-version
    • Deleted deprecated combination runtime+TLS features (e.g. runtime-tokio-native-tls)
    • Deleted re-export of unstable TransactionManager trait in sqlx.
      • Not technically a breaking change because it's #[doc(hidden)],
        but it will break SeaORM if not proactively fixed.
  • [#​3924]: breaking(mysql): assume all non-binary collations compatible with str [[@​abonander]]
    • Text (or text-like) columns which previously were inferred to be Vec<u8> will be inferred to be String
      (this should ultimately fix more code than it breaks).
    • SET NAMES utf8mb4 COLLATE utf8_general_ci is no longer sent by default; instead, SET NAMES utf8mb4 is sent to
      allow the server to select the appropriate default collation (since this is version- and configuration-dependent).
    • MySqlConnectOptions::charset() and ::collation() now imply ::set_names(true) because they don't do anything otherwise.
    • Setting charset doesn't change what's sent in the Protocol::HandshakeResponse41 packet as that normally only
      matters for error messages before SET NAMES is sent.
      The default collation if set_names = false is utf8mb4_general_ci.
    • See this comment for details.
    • Incidental breaking change: RawSql::fetch_optional() now returns sqlx::Result<Option<DB::Row>>
      instead of sqlx::Result<DB::Row>. Whoops.
  • [#​3928]: breaking(sqlite): libsqlite3-sys versioning, feature flags, safety changes [[@​abonander]]
    • SemVer policy changes: libsqlite3-sys version is now specified using a range.
      The maximum of the range may now be increased in any backwards-compatible release.
      The minimum of the range may only be increased in major releases.
      If you have libsqlite3-sys in your dependencies, Cargo should choose a compatible version automatically.
      If otherwise unconstrained, Cargo should choose the latest version supported.
    • SQLite extension loading (including through the new sqlx-toml feature) is now unsafe.
    • Added new non-default features corresponding to conditionally compiled SQLite APIs:
      • sqlite-deserialize enabling SqliteConnection::serialize() and SqliteConnection::deserialize()
      • sqlite-load-extension enabling SqliteConnectOptions::extension() and ::extension_with_entrypoint()
      • sqlite-unlock-notify enables internal use of sqlite3_unlock_notify()
    • SqliteValue and SqliteValueRef changes:
      • The sqlite3_value* interface reserves the right to be stateful.
        Without protection, any call could theoretically invalidate values previously returned, leading to dangling pointers.
      • SqliteValue is now !Sync and SqliteValueRef is !Send to prevent data races from concurrent accesses.
        • Instead, clone or wrap the SqliteValue in Mutex, or convert the SqliteValueRef to an owned value.
      • SqliteValue and any derived SqliteValueRefs now internally track if that value has been used to decode a
        borrowed &[u8] or &str and errors if it's used to decode any other type.
      • This is not expected to affect the vast majority of usages, which should only decode a single type
        per SqliteValue/SqliteValueRef.
      • See new docs on SqliteValue for details.
  • [#​3949]: Postgres: move PgLTree::from to From<Vec<PgLTreeLabel>> implementation [[@​JerryQ17]]
  • [#​3957]: refactor(sqlite): do not borrow bound values, delete lifetime on SqliteArguments [[@​iamjpotts]]
  • [#​3958]: refactor(any): Remove lifetime parameter from AnyArguments [[@​iamjpotts]]
  • [#​3960]: refactor(core): Remove lifetime parameter from Arguments trait [[@​iamjpotts]]
  • [#​3993]: Unescape PostgreSQL passfile password [[@​V02460]]
    • Previously, .pgpass file handling did not process backslash-escapes in the password part.
      Now it does, which may change what password is sent to the server.
  • [#​4008]: make #[derive(sqlx::Type)] automatically generate impl PgHasArrayType by default for newtype structs [[@​papaj-na-wrotkach]]
    • Manual implementations of PgHasArrayType for newtypes will conflict with the generated one.
      Delete the manual impl or add #[sqlx(no_pg_array)] where conflicts occur.
  • [#​4077]: breaking: make offline optional to allow building without serde [[@​CathalMullan]]
  • [#​4094]: Bump bit-vec to v0.8 [[@​zennozenith]]
  • [#​4142]: feat(mysql): add mysql-rsa feature for non-TLS RSA auth [[@​dertin]]
    • Connections requiring RSA password encryption now need to enable the mysql-rsa feature
      or an error will be generated at runtime. RSA encryption is only used for plaintext (non-TLS) connections.
  • [#​4255]: breaking(any+mysql): correctly convert text and blob types to AnyTypeInfo [[@​abonander]]
Added
Changed
Fixed

Configuration

📅 Schedule: (in timezone Asia/Tokyo)

  • Branch creation
    • "before 9am on monday"
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Enabled.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

Summary by CodeRabbit

  • Chores
    • バックエンドの内部依存ライブラリをメジャーアップデートしました。
    • エンドユーザー向けの操作や見た目に直接の変更はありません。
    • 安定性・互換性の向上を目的とした保守作業で、今後の信頼性や保守性が改善されます。

@renovate renovate Bot added the dependencies label Jun 7, 2026
@renovate

renovate Bot commented Jun 7, 2026

Copy link
Copy Markdown
Contributor Author

⚠️ Artifact update problem

Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.

♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

  • any of the package files in this branch needs updating, or
  • the branch becomes conflicted, or
  • you click the rebase/retry checkbox if found above, or
  • you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:

File name: apps/backend/Cargo.lock
Command failed: cargo update --config net.git-fetch-with-cli=true --manifest-path apps/backend/Cargo.toml --workspace
error: failed to select a version for `sqlx`.
    ... required by package `backend v0.1.0 (/tmp/renovate/repos/github/koyori-app/task/apps/backend)`
versions that meet the requirements `^0.9` (locked to 0.9.0) are: 0.9.0

package `backend` depends on `sqlx` with feature `runtime-tokio-rustls` but `sqlx` does not have that feature.
help: available features: _rt-async-global-executor, _rt-async-std, _rt-smol, _rt-tokio, _sqlite, _unstable-all-types, _unstable-docs, all-databases, any, bigdecimal, bit-vec, bstr, chrono, default, derive, ipnet, ipnetwork, json, mac_address, macros, migrate, mysql, mysql-rsa, postgres, regexp, runtime-async-global-executor, runtime-async-std, runtime-smol, runtime-tokio, rust_decimal, sqlite, sqlite-bundled, sqlite-deserialize, sqlite-load-extension, sqlite-preupdate-hook, sqlite-unbundled, sqlite-unlock-notify, sqlx-macros, sqlx-mysql, sqlx-postgres, sqlx-sqlite, sqlx-toml, time, tls-native-tls, tls-none, tls-rustls, tls-rustls-aws-lc-rs, tls-rustls-ring, tls-rustls-ring-native-roots, tls-rustls-ring-webpki, uuid


failed to select a version for `sqlx` which could resolve this conflict

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Jun 7, 2026

Copy link
Copy Markdown

Deploying koyori with  Cloudflare Pages  Cloudflare Pages

Latest commit: df8cb17
Status:⚡️  Build in progress...

View logs

@renovate renovate Bot force-pushed the renovate/sqlx-0.x branch 23 times, most recently from 208d63e to e461b46 Compare June 9, 2026 17:56
@coderabbitai

coderabbitai Bot commented Jun 9, 2026

Copy link
Copy Markdown

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

バックエンドの Cargo.tomlsqlx 依存をバージョン 0.8 から 0.9 にアップグレード。既存の runtime-tokio-rustlspostgrestime 機能フラグは変更なし。

Changes

SQLx 依存関係アップグレード

Layer / File(s) Summary
SQLx バージョン更新
apps/backend/Cargo.toml
SQLx 依存関係が 0.8 から 0.9 にアップグレード。既存の runtime-tokio-rustlspostgrestime 機能フラグは維持。

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~2 minutes

Poem

🐰 依存関係のスキップに、
SQLx が新しい世界へ、
マイナーバージョン、上昇す、
機能フラグは変わらぬまま、
アップデートの道を歩み続け.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed プルリクエストのタイトルは、変更セットの主要な目的であるsqlx依存関係を0.8から0.9に更新することを明確かつ簡潔に説明しています。
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch renovate/sqlx-0.x

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@apps/backend/Cargo.toml`:
- Line 56: The dependency line sqlx = { version = "0.9", features =
["runtime-tokio-rustls", "postgres", "time"] } requires MSRV 1.94.0, so add
rust-version = "1.94.0" to the same Cargo.toml containing that sqlx entry and
also pin the CI toolchain (create or update rust-toolchain.toml or set the
dtolnay/rust-toolchain action to channel 1.94.0) so CI uses Rust 1.94.0
consistently; ensure changes reference the existing sqlx declaration and the
rust-version key to make the MSRV explicit.
- Line 56: The public APIs in jobs (e.g., the connect/setup functions referenced
in apps/backend/src/jobs/mod.rs and apps/backend/src/jobs/github_webhook.rs)
expose Result<..., sqlx::Error>, which can clash because apalis-postgres pulls
sqlx 0.8 while the crate uses sqlx 0.9; change those function signatures to
return a non-sqlx public error type (for example anyhow::Error or Box<dyn
std::error::Error + Send + Sync>) or the apalis_postgres-specific error type,
and map/convert any internal sqlx errors to that chosen type before returning
(use .map_err(|e| e.into() / anyhow::Error::from(e)) in the connect/setup and
related functions so callers never see sqlx::Error across the crate boundary).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 3a24f089-ce72-475d-bfbd-d114de36b944

📥 Commits

Reviewing files that changed from the base of the PR and between cd8f868 and e461b46.

📒 Files selected for processing (1)
  • apps/backend/Cargo.toml

@renovate renovate Bot force-pushed the renovate/sqlx-0.x branch from e461b46 to 1bb6dff Compare June 9, 2026 20:25

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ Duplicate comments (1)
apps/backend/Cargo.toml (1)

56-56: ⚠️ Potential issue | 🟠 Major | 🏗️ Heavy lift

既存の主要な懸念事項が未解決のまま、SQLx 0.9 の破壊的変更による影響確認が必要です

過去のレビューで指摘された2つの重大な問題(MSRV 1.94.0 の未設定、apalis-postgres との sqlx バージョン競合)が未解決です。さらに、PR の説明に記載されている SQLx 0.9 の破壊的変更(query*()SqlStr 要件、Migrate トレイトの変更、型・ライフタイムパラメータの調整、Postgres 固有の動作変更)がコードベースに影響を与えないか確認が必要です。

以下のスクリプトで、sqlx 0.9 へのアップグレード後もコンパイルとテストが通るか検証してください:

#!/bin/bash
set -euo pipefail

echo "== Cargo.toml の sqlx バージョン確認 =="
rg -n 'sqlx.*version' apps/backend/Cargo.toml

echo
echo "== cargo check でコンパイル確認 =="
cd apps/backend
cargo check 2>&1 | head -100

echo
echo "== 依存関係の競合確認(sqlx 0.8 と 0.9 の混在) =="
cargo tree -p sqlx 2>&1 | head -50
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/backend/Cargo.toml` at line 56, The Cargo.toml upgrade to sqlx = "0.9"
may break build and conflicts with apalis-postgres and MSRV requirements; run
the provided verification script in the repository root to (1) confirm the sqlx
version entry in apps/backend/Cargo.toml, (2) run cargo check in apps/backend to
surface compile errors caused by sqlx 0.9 breaking changes (e.g., query*()
requiring SqlStr, Migrate trait signature changes, type/lifetime parameter
adjustments, Postgres-specific behavior), and (3) inspect cargo tree -p sqlx to
detect mixed 0.8/0.9 dependencies and apalis-postgres version mismatches; if
issues appear, either pin sqlx back to a compatible 0.8 version or update
dependent crates (including apalis-postgres) and adjust code paths that use
query*(), Migrate implementations, and any Postgres-specific APIs to the sqlx
0.9 signatures, and ensure MSRV is set to >=1.94.0 in CI/toolchain
configuration.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Duplicate comments:
In `@apps/backend/Cargo.toml`:
- Line 56: The Cargo.toml upgrade to sqlx = "0.9" may break build and conflicts
with apalis-postgres and MSRV requirements; run the provided verification script
in the repository root to (1) confirm the sqlx version entry in
apps/backend/Cargo.toml, (2) run cargo check in apps/backend to surface compile
errors caused by sqlx 0.9 breaking changes (e.g., query*() requiring SqlStr,
Migrate trait signature changes, type/lifetime parameter adjustments,
Postgres-specific behavior), and (3) inspect cargo tree -p sqlx to detect mixed
0.8/0.9 dependencies and apalis-postgres version mismatches; if issues appear,
either pin sqlx back to a compatible 0.8 version or update dependent crates
(including apalis-postgres) and adjust code paths that use query*(), Migrate
implementations, and any Postgres-specific APIs to the sqlx 0.9 signatures, and
ensure MSRV is set to >=1.94.0 in CI/toolchain configuration.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: e9ffbdff-e52a-40fb-b04b-4fe96b1d928c

📥 Commits

Reviewing files that changed from the base of the PR and between e461b46 and 1bb6dff.

📒 Files selected for processing (1)
  • apps/backend/Cargo.toml

@renovate renovate Bot force-pushed the renovate/sqlx-0.x branch 2 times, most recently from d6f0ce1 to 1beedb7 Compare June 16, 2026 17:21
@opencode-agent

Copy link
Copy Markdown
Contributor

User renovate[bot] does not have write permissions

github run

@renovate renovate Bot force-pushed the renovate/sqlx-0.x branch 5 times, most recently from ae4cc72 to c5226e5 Compare June 16, 2026 18:30
@github-actions

Copy link
Copy Markdown

User renovate[bot] does not have write permissions

github run

@renovate renovate Bot force-pushed the renovate/sqlx-0.x branch from c5226e5 to 45941d5 Compare June 16, 2026 18:44
@github-actions

Copy link
Copy Markdown

User renovate[bot] does not have write permissions

github run

@renovate renovate Bot force-pushed the renovate/sqlx-0.x branch from 45941d5 to a9f17fc Compare June 17, 2026 05:37
@github-actions

Copy link
Copy Markdown

User renovate[bot] does not have write permissions

github run

@renovate renovate Bot force-pushed the renovate/sqlx-0.x branch from a9f17fc to d55d995 Compare June 17, 2026 09:56
@github-actions

Copy link
Copy Markdown

User renovate[bot] does not have write permissions

github run

@renovate renovate Bot force-pushed the renovate/sqlx-0.x branch from d55d995 to 629d030 Compare June 17, 2026 13:35
@github-actions

Copy link
Copy Markdown

User renovate[bot] does not have write permissions

github run

@renovate renovate Bot force-pushed the renovate/sqlx-0.x branch 12 times, most recently from 08ae086 to 7ad1a02 Compare June 19, 2026 13:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants