sql_support/
maintenance.rs1use crate::ConnExt;
6use rusqlite::{Connection, Result};
7
8pub fn run_maintenance(conn: &Connection) -> Result<()> {
13 vacuum(conn)?;
14 conn.execute_one("PRAGMA optimize")?;
15 conn.execute_one("PRAGMA wal_checkpoint(PASSIVE)")?;
16 Ok(())
17}
18
19fn vacuum(conn: &Connection) -> Result<()> {
21 let auto_vacuum_setting: u32 = conn.conn_ext_query_one("PRAGMA auto_vacuum")?;
22 if auto_vacuum_setting == 2 {
23 conn.execute_one("PRAGMA incremental_vacuum(2)")?;
25 } else {
26 error_support::warn!(
28 "run_maintenance_vacuum: Need to run a full vacuum to set auto_vacuum=incremental"
29 );
30 conn.execute_one("PRAGMA auto_vacuum=incremental")?;
31 conn.execute_one("VACUUM")?;
32 }
33 Ok(())
34}