Skip to content

Commit 5093825

Browse files
committed
feat: add WAL, WITHOUT ROWID, cached statment
1 parent 4e27712 commit 5093825

File tree

1 file changed

+10
-7
lines changed
  • src/cargo/sources/registry

1 file changed

+10
-7
lines changed

src/cargo/sources/registry/db.rs

+10-7
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ const TABLE_SUMMARIES: &'static str = "\
1010
CREATE TABLE IF NOT EXISTS summaries (
1111
name TEXT PRIMARY KEY NOT NULL,
1212
contents BLOB NOT NULL
13-
)";
13+
) WITHOUT ROWID";
1414

1515
const INSERT_SUMMERIES: &'static str = "\
1616
INSERT OR REPLACE INTO summaries (name, contents) VALUES (?, ?)";
@@ -25,6 +25,7 @@ impl Db {
2525
let conn = Connection::open(path.as_ref())?;
2626
conn.pragma_update(None, "locking_mode", &"EXCLUSIVE")?;
2727
conn.pragma_update(None, "cache_size", &2048)?;
28+
conn.pragma_update(None, "journal_mode", &"WAL")?;
2829
conn.execute(TABLE_SUMMARIES, [])?;
2930
Ok(Mutex::new(Self(conn)))
3031
})
@@ -35,19 +36,21 @@ impl Db {
3536
K: AsRef<[u8]>,
3637
{
3738
let key = key.as_ref();
38-
Ok(self.0.query_row(
39-
"SELECT contents FROM summaries WHERE name = ? LIMIT 1",
40-
[key],
41-
|row| row.get(0),
42-
)?)
39+
Ok(self
40+
.0
41+
.prepare_cached("SELECT contents FROM summaries WHERE name = ? LIMIT 1")?
42+
.query_row([key], |row| row.get(0))?)
4343
}
4444

4545
pub fn insert<K>(&self, key: K, value: &[u8]) -> CargoResult<()>
4646
where
4747
K: AsRef<[u8]>,
4848
{
4949
let key = key.as_ref();
50-
let modified = self.0.execute(INSERT_SUMMERIES, params![key, value])?;
50+
let modified = self
51+
.0
52+
.prepare_cached(INSERT_SUMMERIES)?
53+
.execute(params![key, value])?;
5154
log::debug!(
5255
"insert {} record for {}",
5356
modified,

0 commit comments

Comments
 (0)