commit 5de817d46c6d6a3dfa02a1066d3bb8d6bf91de26
parent 49e30c66dad8b1263f673e8c9d783177dbdcc7c4
Author: triesap <tyson@radroots.org>
Date: Wed, 15 Jul 2026 02:11:45 +0000
sqlite: align worker bundled runtime
- update RHI SQLx usage to 0.9 with sqlite-bundled features
- patch libsqlite3-sys to the shared SQLite 3.53.3 source crate
- tighten processed-job query helpers for SQLx safe SQL bounds
- refresh the worker lockfile against the new runtime dependency floor
Diffstat:
3 files changed, 47 insertions(+), 28 deletions(-)
diff --git a/Cargo.lock b/Cargo.lock
@@ -1364,9 +1364,9 @@ dependencies = [
[[package]]
name = "flume"
-version = "0.11.1"
+version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095"
+checksum = "5e139bc46ca777eb5efaf62df0ab8cc5fd400866427e56c68b22e414e53bd3be"
dependencies = [
"futures-core",
"futures-sink",
@@ -1386,6 +1386,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2"
[[package]]
+name = "foldhash"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb"
+
+[[package]]
name = "form_urlencoded"
version = "1.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1645,7 +1651,7 @@ checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1"
dependencies = [
"allocator-api2",
"equivalent",
- "foldhash",
+ "foldhash 0.1.5",
]
[[package]]
@@ -1653,6 +1659,11 @@ name = "hashbrown"
version = "0.16.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100"
+dependencies = [
+ "allocator-api2",
+ "equivalent",
+ "foldhash 0.2.0",
+]
[[package]]
name = "hashlink"
@@ -1665,11 +1676,11 @@ dependencies = [
[[package]]
name = "hashlink"
-version = "0.10.0"
+version = "0.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1"
+checksum = "824e001ac4f3012dd16a264bec811403a67ca9deb6c102fc5049b32c4574b35f"
dependencies = [
- "hashbrown 0.15.5",
+ "hashbrown 0.16.1",
]
[[package]]
@@ -2164,9 +2175,7 @@ dependencies = [
[[package]]
name = "libsqlite3-sys"
-version = "0.30.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2e99fb7a497b1e3339bc746195567ed8d3e24945ecd636e3619d20b9de9e9149"
+version = "0.37.0"
dependencies = [
"cc",
"pkg-config",
@@ -5303,9 +5312,9 @@ dependencies = [
[[package]]
name = "sqlx"
-version = "0.8.6"
+version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1fefb893899429669dcdd979aff487bd78f4064e5e7907e4269081e0ef7d97dc"
+checksum = "378620ccc25c62c89d8be1c819e76a88d59bdcc3304733330788948e619bfd71"
dependencies = [
"sqlx-core",
"sqlx-macros",
@@ -5314,12 +5323,13 @@ dependencies = [
[[package]]
name = "sqlx-core"
-version = "0.8.6"
+version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ee6798b1838b6a0f69c007c133b8df5866302197e404e8b6ee8ed3e3a5e68dc6"
+checksum = "05b44e85bf579a8eeb4ceaa77a3a523baf2bf0e9bac7e40f405d537b5d2d5ccb"
dependencies = [
"base64 0.22.1",
"bytes",
+ "cfg-if",
"crc",
"crossbeam-queue",
"either",
@@ -5328,12 +5338,11 @@ dependencies = [
"futures-intrusive",
"futures-io",
"futures-util",
- "hashbrown 0.15.5",
- "hashlink 0.10.0",
+ "hashbrown 0.16.1",
+ "hashlink 0.11.1",
"indexmap 2.13.0",
"log",
"memchr",
- "once_cell",
"percent-encoding",
"serde",
"sha2",
@@ -5347,9 +5356,9 @@ dependencies = [
[[package]]
name = "sqlx-macros"
-version = "0.8.6"
+version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a2d452988ccaacfbf5e0bdbc348fb91d7c8af5bee192173ac3636b5fb6e6715d"
+checksum = "bd2b84f2bc39a5705ef27ec785a11c934a41bbd4a24941e257927cddc26b60bf"
dependencies = [
"proc-macro2",
"quote",
@@ -5360,15 +5369,15 @@ dependencies = [
[[package]]
name = "sqlx-macros-core"
-version = "0.8.6"
+version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "19a9c1841124ac5a61741f96e1d9e2ec77424bf323962dd894bdb93f37d5219b"
+checksum = "fb8d96de5fdc85a5c4ec813432b523ec637e80ba98f046555f75f7908ddac7c3"
dependencies = [
+ "cfg-if",
"dotenvy",
"either",
"heck",
"hex",
- "once_cell",
"proc-macro2",
"quote",
"serde",
@@ -5383,12 +5392,13 @@ dependencies = [
[[package]]
name = "sqlx-sqlite"
-version = "0.8.6"
+version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c2d12fe70b2c1b4401038055f90f151b78208de1f9f89a7dbfd41587a10c3eea"
+checksum = "488e99c397a62007e4229aec669a179816339afc6d2620ca6fa420dbee2e982c"
dependencies = [
"atoi",
"flume",
+ "form_urlencoded",
"futures-channel",
"futures-core",
"futures-executor",
@@ -5398,7 +5408,6 @@ dependencies = [
"log",
"percent-encoding",
"serde",
- "serde_urlencoded",
"sqlx-core",
"thiserror 2.0.18",
"tracing",
diff --git a/Cargo.toml b/Cargo.toml
@@ -51,11 +51,14 @@ serde = { version = "1", default-features = false }
serde_json = { version = "1", default-features = false }
reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls"] }
sha2 = { version = "0.10" }
-sqlx = { version = "0.8.6", default-features = false, features = ["runtime-tokio", "sqlite"] }
+sqlx = { version = "0.9.0", default-features = false, features = ["runtime-tokio", "sqlite-bundled"] }
tokio = { version = "1", features = ["full"] }
thiserror = { version = "2" }
toml = { version = "0.8" }
tracing = { version = "0.1" }
+[patch.crates-io]
+libsqlite3-sys = { path = "../lib/crates/libsqlite3_sys_3_53_3" }
+
[dev-dependencies]
tempfile = { version = "3" }
diff --git a/src/features/trade_listing/processed_jobs.rs b/src/features/trade_listing/processed_jobs.rs
@@ -1096,12 +1096,15 @@ fn u32_from_i64(value: i64, field: &'static str) -> Result<u32, RhiProcessedJobS
u32::try_from(value).map_err(|_| RhiProcessedJobStoreError::InvalidStoredValue(field))
}
-async fn query_i64(pool: &SqlitePool, sql: &str) -> Result<i64, RhiProcessedJobStoreError> {
+async fn query_i64(pool: &SqlitePool, sql: &'static str) -> Result<i64, RhiProcessedJobStoreError> {
let row = sqlx::query(sql).fetch_one(pool).await?;
Ok(row.try_get(0)?)
}
-async fn query_string(pool: &SqlitePool, sql: &str) -> Result<String, RhiProcessedJobStoreError> {
+async fn query_string(
+ pool: &SqlitePool,
+ sql: &'static str,
+) -> Result<String, RhiProcessedJobStoreError> {
let row = sqlx::query(sql).fetch_one(pool).await?;
Ok(row.try_get(0)?)
}
@@ -1159,7 +1162,11 @@ mod tests {
.expect("enable check constraints");
}
- async fn corrupt_job(store: &RhiProcessedJobStore, job: &RhiProcessedJobState, sql: &str) {
+ async fn corrupt_job(
+ store: &RhiProcessedJobStore,
+ job: &RhiProcessedJobState,
+ sql: &'static str,
+ ) {
disable_store_constraints(store).await;
sqlx::query(sql)
.bind(job.request_id.as_str())