chore(deps): bump rusqlite from 0.32.1 to 0.40.1 in /ecc2 (#2211)

* chore(deps): bump rusqlite from 0.32.1 to 0.40.1 in /ecc2

Bumps [rusqlite](https://github.com/rusqlite/rusqlite) from 0.32.1 to 0.40.1.
- [Release notes](https://github.com/rusqlite/rusqlite/releases)
- [Changelog](https://github.com/rusqlite/rusqlite/blob/master/Changelog.md)
- [Commits](https://github.com/rusqlite/rusqlite/compare/v0.32.1...v0.40.1)

---
updated-dependencies:
- dependency-name: rusqlite
  dependency-version: 0.40.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix(ecc2): cast u64 columns at sqlite boundary for rusqlite 0.40

rusqlite 0.40 removed the u64 ToSql/FromSql impls (SQLite stores
INTEGER as i64). Cast token counts, durations, counts, and paging
values to/from i64 at each bind/read site in session/store.rs.

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Affaan Mustafa <me@affaanmustafa.com>
This commit is contained in:
dependabot[bot]
2026-06-11 01:41:43 -04:00
committed by GitHub
parent 1481aa707e
commit fec84fcf19
3 changed files with 62 additions and 76 deletions

80
ecc2/Cargo.lock generated
View File

@@ -8,18 +8,6 @@ version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
[[package]]
name = "ahash"
version = "0.8.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75"
dependencies = [
"cfg-if",
"once_cell",
"version_check",
"zerocopy",
]
[[package]]
name = "aho-corasick"
version = "1.1.4"
@@ -802,15 +790,6 @@ dependencies = [
"url",
]
[[package]]
name = "hashbrown"
version = "0.14.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
dependencies = [
"ahash",
]
[[package]]
name = "hashbrown"
version = "0.15.5"
@@ -844,11 +823,11 @@ dependencies = [
[[package]]
name = "hashlink"
version = "0.9.1"
version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6ba4ff7128dee98c7dc9794b6a411377e1404dba1c97deb8d1a55297bd25d8af"
checksum = "a5081f264ed7adee96ea4b4778b6bb9da0a7228b084587aa3bd3ff05da7c5a3b"
dependencies = [
"hashbrown 0.14.5",
"hashbrown 0.17.1",
]
[[package]]
@@ -1167,9 +1146,9 @@ dependencies = [
[[package]]
name = "libsqlite3-sys"
version = "0.30.1"
version = "0.38.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2e99fb7a497b1e3339bc746195567ed8d3e24945ecd636e3619d20b9de9e9149"
checksum = "f6c19a05435c21ac299d71b6a9c13db3e3f47c520517d58990a462a1397a61db"
dependencies = [
"cc",
"pkg-config",
@@ -1833,10 +1812,20 @@ dependencies = [
]
[[package]]
name = "rusqlite"
version = "0.32.1"
name = "rsqlite-vfs"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7753b721174eb8ff87a9a0e799e2d7bc3749323e773db92e0984debb00019d6e"
checksum = "c51c9ae4df8a7fba42103df5c621fa3c37eccf3a3c650879e90fc48b11cc192c"
dependencies = [
"hashbrown 0.16.1",
"thiserror 2.0.18",
]
[[package]]
name = "rusqlite"
version = "0.40.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "11438310b19e3109b6446c33d1ed5e889428cf2e278407bc7896bc4aaea43323"
dependencies = [
"bitflags 2.13.0",
"fallible-iterator",
@@ -1844,6 +1833,7 @@ dependencies = [
"hashlink",
"libsqlite3-sys",
"smallvec",
"sqlite-wasm-rs",
]
[[package]]
@@ -2075,6 +2065,18 @@ dependencies = [
"windows-sys 0.61.2",
]
[[package]]
name = "sqlite-wasm-rs"
version = "0.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc3efc0da82635d7e1ced0053bbbfa8c7ab9645d0bf36ceb4f7127bb85315d75"
dependencies = [
"cc",
"js-sys",
"rsqlite-vfs",
"wasm-bindgen",
]
[[package]]
name = "stable_deref_trait"
version = "1.2.1"
@@ -3065,26 +3067,6 @@ dependencies = [
"synstructure",
]
[[package]]
name = "zerocopy"
version = "0.8.47"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "efbb2a062be311f2ba113ce66f697a4dc589f85e78a4aea276200804cea0ed87"
dependencies = [
"zerocopy-derive",
]
[[package]]
name = "zerocopy-derive"
version = "0.8.47"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0e8bc7269b54418e7aeeef514aa68f8690b8c0489a06b0136e5f57c4c5ccab89"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.117",
]
[[package]]
name = "zerofrom"
version = "0.1.6"

View File

@@ -20,7 +20,7 @@ crossterm = "0.29"
tokio = { version = "1", features = ["full"] }
# State store
rusqlite = { version = "0.32", features = ["bundled"] }
rusqlite = { version = "0.40", features = ["bundled"] }
# Git integration
git2 = { version = "0.20", features = ["ssh"] }

View File

@@ -1025,7 +1025,7 @@ impl StateStore {
profile.permission_mode,
add_dirs_json,
profile.max_budget_usd,
profile.token_budget,
profile.token_budget.map(|tokens| tokens as i64),
profile.append_system_prompt,
],
)?;
@@ -1062,7 +1062,9 @@ impl StateStore {
permission_mode: row.get(4)?,
add_dirs: serde_json::from_str(&add_dirs_json).unwrap_or_default(),
max_budget_usd: row.get(6)?,
token_budget: row.get(7)?,
token_budget: row
.get::<_, Option<i64>>(7)?
.map(|tokens| tokens as u64),
append_system_prompt: row.get(8)?,
agent: None,
})
@@ -1568,12 +1570,12 @@ impl StateStore {
updated_at = ?8
WHERE id = ?9",
rusqlite::params![
metrics.input_tokens,
metrics.output_tokens,
metrics.tokens_used,
metrics.tool_calls,
metrics.input_tokens as i64,
metrics.output_tokens as i64,
metrics.tokens_used as i64,
metrics.tool_calls as i64,
metrics.files_changed,
metrics.duration_secs,
metrics.duration_secs as i64,
metrics.cost_usd,
chrono::Utc::now().to_rfc3339(),
session_id,
@@ -1596,7 +1598,7 @@ impl StateStore {
row.get::<_, String>(1)?,
row.get::<_, String>(2)?,
row.get::<_, String>(3)?,
row.get::<_, u64>(4)?,
row.get::<_, i64>(4)? as u64,
))
})?
.collect::<std::result::Result<Vec<_>, _>>()?;
@@ -1626,7 +1628,7 @@ impl StateStore {
if duration_secs != current_duration {
self.conn.execute(
"UPDATE sessions SET duration_secs = ?1 WHERE id = ?2",
rusqlite::params![duration_secs, session_id],
rusqlite::params![duration_secs as i64, session_id],
)?;
}
}
@@ -1706,11 +1708,11 @@ impl StateStore {
cost_usd = ?4
WHERE id = ?5",
rusqlite::params![
aggregate.input_tokens,
aggregate.output_tokens,
aggregate.input_tokens as i64,
aggregate.output_tokens as i64,
aggregate
.input_tokens
.saturating_add(aggregate.output_tokens),
.saturating_add(aggregate.output_tokens) as i64,
aggregate.cost_usd,
session_id,
],
@@ -1871,7 +1873,7 @@ impl StateStore {
row.input_params_json,
row.output_summary,
trigger_summary,
row.duration_ms,
row.duration_ms as i64,
risk_score,
timestamp,
file_paths_json,
@@ -2135,12 +2137,12 @@ impl StateStore {
})
.with_timezone(&chrono::Utc),
metrics: SessionMetrics {
input_tokens: row.get(11)?,
output_tokens: row.get(12)?,
tokens_used: row.get(13)?,
tool_calls: row.get(14)?,
input_tokens: row.get::<_, i64>(11)? as u64,
output_tokens: row.get::<_, i64>(12)? as u64,
tokens_used: row.get::<_, i64>(13)? as u64,
tool_calls: row.get::<_, i64>(14)? as u64,
files_changed: row.get(15)?,
duration_secs: row.get(16)?,
duration_secs: row.get::<_, i64>(16)? as u64,
cost_usd: row.get(17)?,
},
})
@@ -3813,7 +3815,7 @@ impl StateStore {
input_params_json,
output_summary,
trigger_summary,
duration_ms,
duration_ms as i64,
risk_score,
timestamp,
],
@@ -3842,11 +3844,11 @@ impl StateStore {
let page = page.max(1);
let offset = (page - 1) * page_size;
let total: u64 = self.conn.query_row(
let total = self.conn.query_row(
"SELECT COUNT(*) FROM tool_log WHERE session_id = ?1",
rusqlite::params![session_id],
|row| row.get(0),
)?;
|row| row.get::<_, i64>(0),
)? as u64;
let mut stmt = self.conn.prepare(
"SELECT id, session_id, tool_name, input_summary, input_params_json, output_summary, trigger_summary, duration_ms, risk_score, timestamp
@@ -3857,7 +3859,9 @@ impl StateStore {
)?;
let entries = stmt
.query_map(rusqlite::params![session_id, page_size, offset], |row| {
.query_map(
rusqlite::params![session_id, page_size as i64, offset as i64],
|row| {
Ok(ToolLogEntry {
id: row.get(0)?,
session_id: row.get(1)?,
@@ -3868,7 +3872,7 @@ impl StateStore {
.unwrap_or_else(|| "{}".to_string()),
output_summary: row.get::<_, Option<String>>(5)?.unwrap_or_default(),
trigger_summary: row.get::<_, Option<String>>(6)?.unwrap_or_default(),
duration_ms: row.get::<_, Option<u64>>(7)?.unwrap_or_default(),
duration_ms: row.get::<_, Option<i64>>(7)?.unwrap_or_default() as u64,
risk_score: row.get::<_, Option<f64>>(8)?.unwrap_or_default(),
timestamp: row.get(9)?,
})
@@ -3903,7 +3907,7 @@ impl StateStore {
.unwrap_or_else(|| "{}".to_string()),
output_summary: row.get::<_, Option<String>>(5)?.unwrap_or_default(),
trigger_summary: row.get::<_, Option<String>>(6)?.unwrap_or_default(),
duration_ms: row.get::<_, Option<u64>>(7)?.unwrap_or_default(),
duration_ms: row.get::<_, Option<i64>>(7)?.unwrap_or_default() as u64,
risk_score: row.get::<_, Option<f64>>(8)?.unwrap_or_default(),
timestamp: row.get(9)?,
})
@@ -6629,7 +6633,7 @@ mod tests {
"{}",
"updated file",
"context graph",
0u64,
0i64,
0.0f64,
"2026-04-10T00:01:00Z",
"[\"src/backfill.rs\"]",