Skip to content

Commit 5972e47

Browse files
committed
Auto merge of #591 - Mark-Simulacrum:bump-sqlite, r=Mark-Simulacrum
Upgrade to latest rusqlite Upgrades underlying sqlite from 3.25.2 to 3.37.0.
2 parents 64bc28f + 7359da3 commit 5972e47

File tree

13 files changed

+186
-161
lines changed

13 files changed

+186
-161
lines changed

Cargo.lock

Lines changed: 56 additions & 27 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,14 @@ minifier = { version = "0.0.20", features = ["html"] }
3232
paste = "0.1.3"
3333
petgraph = "0.4.11"
3434
r2d2 = "0.8.2"
35-
r2d2_sqlite = "0.7.0"
35+
r2d2_sqlite = "0.19.0"
36+
rusqlite = { version = "0.26.0", features = ["chrono", "functions", "bundled"] }
3637
rand = "0.5"
3738
regex = "1.0"
3839
reqwest = "0.9"
3940
rusoto_core = "0.35.0"
4041
rusoto_credential = "0.14.0"
4142
rusoto_s3 = "0.35.0"
42-
rusqlite = { version = "0.15.0", features = ["chrono", "functions", "bundled"] }
4343
serde = "1.0"
4444
serde_derive = "1.0"
4545
serde_json = "1.0"

src/actions/experiments/create.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -187,8 +187,8 @@ mod tests {
187187
"SELECT crate FROM experiment_crates WHERE experiment = ?1 AND skipped = 0",
188188
&[&ex],
189189
|row| {
190-
let krate: String = row.get("crate");
191-
krate.parse().unwrap()
190+
let krate: String = row.get("crate")?;
191+
Ok(krate.parse().unwrap())
192192
},
193193
)
194194
.unwrap();

src/actions/experiments/edit.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -253,8 +253,8 @@ mod tests {
253253
"SELECT crate FROM experiment_crates WHERE experiment = ?1 AND skipped = 0",
254254
&[&ex],
255255
|row| {
256-
let krate: String = row.get("crate");
257-
krate.parse().unwrap()
256+
let krate: String = row.get("crate")?;
257+
Ok(krate.parse().unwrap())
258258
},
259259
)
260260
.unwrap();

src/agent/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ impl Capabilities {
5151
let caps = db.query(
5252
"SELECT capability FROM agent_capabilities WHERE agent_name = ?1",
5353
&[&agent],
54-
|r| r.get("capability"),
54+
|r| r.get::<_, String>(0),
5555
)?;
5656

5757
Ok(caps.into_iter().collect())

src/crates/lists.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,14 +49,11 @@ pub(crate) trait List {
4949
let crates_results = db.query(
5050
"SELECT crate FROM crates WHERE list = ?1 ORDER BY rowid;",
5151
&[&Self::NAME],
52-
|r| {
53-
let raw: String = r.get("crate");
54-
Ok(raw.parse()?)
55-
},
52+
|r| r.get::<_, String>(0),
5653
)?;
5754

5855
// Turns Vec<Fallible<Crate>> into Fallible<Vec<Crate>>
59-
crates_results.into_iter().collect()
56+
crates_results.into_iter().map(|v| v.parse()).collect()
6057
}
6158
}
6259

src/db/migrations.rs

Lines changed: 49 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,6 @@ use rand::{self, distributions::Alphanumeric, Rng};
33
use rusqlite::{Connection, Transaction};
44
use std::collections::HashSet;
55

6-
fn no_args() -> impl Iterator<Item = &'static str> {
7-
::std::iter::empty()
8-
}
9-
106
enum MigrationKind {
117
SQL(&'static str),
128
Code(Box<dyn Fn(&Transaction) -> ::rusqlite::Result<()>>),
@@ -145,40 +141,46 @@ fn migrations() -> Vec<(&'static str, MigrationKind)> {
145141
.take(10)
146142
.collect::<String>()
147143
);
148-
t.create_scalar_function(&fn_name, 1, true, |ctx| {
149-
let legacy = ctx.get::<String>(0)?;
150-
151-
if let Ok(parsed) = serde_json::from_str(&legacy) {
152-
Ok(match parsed {
153-
LegacyToolchain::Dist(name) => name,
154-
LegacyToolchain::TryBuild { sha } => format!("try#{}", sha),
155-
LegacyToolchain::Master { sha } => format!("master#{}", sha),
156-
})
157-
} else {
158-
Ok(legacy)
159-
}
160-
})?;
161-
162-
t.execute("PRAGMA foreign_keys = OFF;", no_args())?;
144+
t.create_scalar_function(
145+
&fn_name,
146+
1,
147+
rusqlite::functions::FunctionFlags::SQLITE_DETERMINISTIC
148+
| rusqlite::functions::FunctionFlags::SQLITE_UTF8,
149+
|ctx| {
150+
let legacy = ctx.get::<String>(0)?;
151+
152+
if let Ok(parsed) = serde_json::from_str(&legacy) {
153+
Ok(match parsed {
154+
LegacyToolchain::Dist(name) => name,
155+
LegacyToolchain::TryBuild { sha } => format!("try#{}", sha),
156+
LegacyToolchain::Master { sha } => format!("master#{}", sha),
157+
})
158+
} else {
159+
Ok(legacy)
160+
}
161+
},
162+
)?;
163+
164+
t.execute("PRAGMA foreign_keys = OFF;", [])?;
163165
t.execute(
164166
&format!(
165167
"UPDATE experiments SET toolchain_start = {}(toolchain_start);",
166168
fn_name
167169
),
168-
no_args(),
170+
[],
169171
)?;
170172
t.execute(
171173
&format!(
172174
"UPDATE experiments SET toolchain_end = {}(toolchain_end);",
173175
fn_name
174176
),
175-
no_args(),
177+
[],
176178
)?;
177179
t.execute(
178180
&format!("UPDATE results SET toolchain = {}(toolchain);", fn_name),
179-
no_args(),
181+
[],
180182
)?;
181-
t.execute("PRAGMA foreign_keys = ON;", no_args())?;
183+
t.execute("PRAGMA foreign_keys = ON;", [])?;
182184

183185
Ok(())
184186
})),
@@ -334,30 +336,36 @@ fn migrations() -> Vec<(&'static str, MigrationKind)> {
334336
.take(10)
335337
.collect::<String>()
336338
);
337-
t.create_scalar_function(&fn_name, 1, true, |ctx| {
338-
let legacy = ctx.get::<String>(0)?;
339-
340-
if let Ok(parsed) = serde_json::from_str::<Crate>(&legacy) {
341-
Ok(parsed.id())
342-
} else {
343-
Ok(legacy)
344-
}
345-
})?;
339+
t.create_scalar_function(
340+
&fn_name,
341+
1,
342+
rusqlite::functions::FunctionFlags::SQLITE_DETERMINISTIC
343+
| rusqlite::functions::FunctionFlags::SQLITE_UTF8,
344+
|ctx| {
345+
let legacy = ctx.get::<String>(0)?;
346+
347+
if let Ok(parsed) = serde_json::from_str::<Crate>(&legacy) {
348+
Ok(parsed.id())
349+
} else {
350+
Ok(legacy)
351+
}
352+
},
353+
)?;
346354

347-
t.execute("PRAGMA foreign_keys = OFF;", no_args())?;
355+
t.execute("PRAGMA foreign_keys = OFF;", [])?;
348356
t.execute(
349357
&format!("UPDATE experiment_crates SET crate = {}(crate);", fn_name),
350-
no_args(),
358+
[],
351359
)?;
352360
t.execute(
353361
&format!("UPDATE results SET crate = {}(crate);", fn_name),
354-
no_args(),
362+
[],
355363
)?;
356364
t.execute(
357365
&format!("UPDATE crates SET crate = {}(crate);", fn_name),
358-
no_args(),
366+
[],
359367
)?;
360-
t.execute("PRAGMA foreign_keys = ON;", no_args())?;
368+
t.execute("PRAGMA foreign_keys = ON;", [])?;
361369

362370
Ok(())
363371
})),
@@ -368,19 +376,16 @@ fn migrations() -> Vec<(&'static str, MigrationKind)> {
368376

369377
pub fn execute(db: &mut Connection) -> Fallible<()> {
370378
// If the database version is 0, create the migrations table and bump it
371-
let version: i32 = db.query_row("PRAGMA user_version;", no_args(), |r| r.get(0))?;
379+
let version: i32 = db.query_row("PRAGMA user_version;", [], |r| r.get(0))?;
372380
if version == 0 {
373-
db.execute(
374-
"CREATE TABLE migrations (name TEXT PRIMARY KEY);",
375-
no_args(),
376-
)?;
377-
db.execute("PRAGMA user_version = 1;", no_args())?;
381+
db.execute("CREATE TABLE migrations (name TEXT PRIMARY KEY);", [])?;
382+
db.execute("PRAGMA user_version = 1;", [])?;
378383
}
379384

380385
let executed_migrations = {
381386
let mut prepared = db.prepare("SELECT name FROM migrations;")?;
382387
let mut result = HashSet::new();
383-
for value in prepared.query_map(no_args(), |row| -> String { row.get("name") })? {
388+
for value in prepared.query_map([], |row| row.get::<_, String>(0))? {
384389
result.insert(value?);
385390
}
386391

0 commit comments

Comments
 (0)