diff --git a/Cargo.toml b/Cargo.toml index 27a9cb3..4feb4b7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -28,7 +28,7 @@ secp256k1 = {version = "0.21", features = ["rand", "rand-std", "serde", "bitcoin serde = { version = "1.0", features = ["derive"] } serde_json = {version = "1.0", features = ["preserve_order"]} hex = "0.4" -rusqlite = { version = "0.26", features = ["limits","bundled"]} +rusqlite = { version = "0.26", features = ["limits","bundled","modern_sqlite", "trace"]} r2d2 = "0.8" r2d2_sqlite = "0.19" lazy_static = "1.4" diff --git a/src/db.rs b/src/db.rs index 1b8519b..7e9ec07 100644 --- a/src/db.rs +++ b/src/db.rs @@ -753,10 +753,13 @@ pub async fn db_query( let start = Instant::now(); let mut slow_first_event; let mut last_successful_send = Instant::now(); - if let Ok(conn) = pool.get() { - // execute the query. Don't cache, since queries vary so much. - let mut stmt = conn.prepare(&q)?; + if let Ok(mut conn) = pool.get() { + // execute the query. + // make the actual SQL query (with parameters inserted) available + conn.trace(Some(|x| {trace!("SQL trace: {:?}", x)})); + let mut stmt = conn.prepare_cached(&q)?; let mut event_rows = stmt.query(rusqlite::params_from_iter(p))?; + let mut first_result = true; while let Some(row) = event_rows.next()? { let first_event_elapsed = start.elapsed();