From dd2d2b7784f3311c4fb6cfadb6033270de44cb44 Mon Sep 17 00:00:00 2001 From: phiresky Date: Mon, 15 Jan 2024 21:50:35 +0100 Subject: [PATCH] pragmas individually --- src/preproc_cache.rs | 53 ++++++++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 27 deletions(-) diff --git a/src/preproc_cache.rs b/src/preproc_cache.rs index b5cb469..32f3a4c 100644 --- a/src/preproc_cache.rs +++ b/src/preproc_cache.rs @@ -2,7 +2,10 @@ use crate::{adapters::FileAdapter, preproc::ActiveAdapters}; use anyhow::{Context, Result}; use path_clean::PathClean; use rusqlite::{named_params, OptionalExtension}; -use std::{path::Path, time::UNIX_EPOCH}; +use std::{ + path::Path, + time::{Duration, UNIX_EPOCH}, +}; use tokio_rusqlite::Connection; #[derive(Clone)] @@ -55,27 +58,27 @@ async fn connect_pragmas(db: &Connection) -> Result<()> { //db.execute(&format!("pragma page_size = {};", want_page_size)) // .context("setup pragma 1")?; db.call(|db| { - db.execute_batch( - " - pragma journal_mode = WAL; - pragma foreign_keys = on; - pragma temp_store = memory; - pragma synchronous = off; -- integrity isn't very important here - pragma mmap_size = 30000000000; + db.busy_timeout(Duration::from_secs(10))?; + db.pragma_update(None, "journal_mode", "wal")?; + db.pragma_update(None, "foreign_keys", "on")?; + db.pragma_update(None, "temp_store", "memory")?; + db.pragma_update(None, "synchronous", "off")?; // integrity isn't very important here + db.pragma_update(None, "mmap_size", "2000000000")?; + db.execute(" + create table if not exists preproc_cache ( + adapter text not null, + adapter_version integer not null, + created_unix_ms integer not null default (unixepoch() * 1000), + active_adapters text not null, -- 'null' if adapter cannot recurse + file_path text not null, + file_mtime_unix_ms integer not null, + text_content_zstd blob not null + ) strict", [] + )?; + + db.execute("create unique index if not exists preproc_cache_idx on preproc_cache (adapter, adapter_version, file_path, active_adapters)", [])?; - create table if not exists preproc_cache ( - adapter text not null, - adapter_version integer not null, - created_unix_ms integer not null default (unixepoch() * 1000), - active_adapters text not null, -- 'null' if adapter cannot recurse - file_path text not null, - file_mtime_unix_ms integer not null, - text_content_zstd blob not null - ) strict; - - create unique index if not exists preproc_cache_idx on preproc_cache (adapter, adapter_version, file_path, active_adapters); - ", - )?; Ok(()) + Ok(()) }) .await.context("connect_pragmas")?; let jm: i64 = db @@ -90,12 +93,8 @@ async fn connect_pragmas(db: &Connection) -> Result<()> { async fn create_pragmas(db: &Connection) -> Result<()> { db.call(|db| { - db.execute_batch( - " - pragma application_id = 924716026; - pragma user_version = 2; -- todo: on upgrade clear db if version is unexpected - ", - )?; + db.pragma_update(None, "application_id", "924716026")?; + db.pragma_update(None, "user_version", "2")?; // todo: on upgrade clear db if version is unexpected Ok(()) }) .await?;