From 9c1b21cbfe4f3d089ea36a0164b12de07c727a50 Mon Sep 17 00:00:00 2001 From: Greg Heartsfield Date: Mon, 21 Feb 2022 09:03:05 -0600 Subject: [PATCH] improvement: more granular perf logging for SQL queries --- src/db.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/db.rs b/src/db.rs index 53be636..b157ec7 100644 --- a/src/db.rs +++ b/src/db.rs @@ -513,11 +513,19 @@ pub async fn db_query( let start = Instant::now(); // generate SQL query let (q, p) = query_from_sub(&sub); + debug!("SQL generated in {:?}", start.elapsed()); + let start = Instant::now(); // execute the query. Don't cache, since queries vary so much. let mut stmt = conn.prepare(&q)?; let mut event_rows = stmt.query(rusqlite::params_from_iter(p))?; + let mut first_result = true; while let Some(row) = event_rows.next()? { - // check if this is still active (we could do this every N rows) + if first_result { + debug!("time to first result: {:?}", start.elapsed()); + first_result = false; + } + // check if this is still active + // TODO: check every N rows if abandon_query_rx.try_recv().is_ok() { debug!("query aborted"); return Ok(());