From 5741bafa3b9149a312cac686247972010e115dc2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20K=C3=BChlewindt?= Date: Fri, 24 Oct 2025 13:01:33 +0700 Subject: [PATCH] radicle/cob/db: Add index for issues and patches To improve query performance for issues and patches, add a composite index on "repo" and "id" to the SQLite database schema via a migration. --- crates/radicle/src/cob/cache.rs | 12 ++++++++---- crates/radicle/src/cob/cache/migrations/3.sql | 2 ++ 2 files changed, 10 insertions(+), 4 deletions(-) create mode 100644 crates/radicle/src/cob/cache/migrations/3.sql diff --git a/crates/radicle/src/cob/cache.rs b/crates/radicle/src/cob/cache.rs index 4a28431a..5997eb7c 100644 --- a/crates/radicle/src/cob/cache.rs +++ b/crates/radicle/src/cob/cache.rs @@ -28,6 +28,7 @@ const DB_WRITE_TIMEOUT: time::Duration = time::Duration::from_secs(6); const MIGRATIONS: &[Migration] = &[ Migration::Sql(include_str!("cache/migrations/1.sql")), Migration::Native(migrations::_2::run), + Migration::Sql(include_str!("cache/migrations/3.sql")), ]; /// Function signature for native migrations. @@ -466,10 +467,13 @@ mod tests { assert_eq!(db.migrate_to(2, migrate::ignore).unwrap(), 2); // 1 -> 2 assert_eq!(db.version().unwrap(), 2); - assert_eq!(db.migrate_to(1, migrate::ignore).unwrap(), 2); // No-op. - assert_eq!(db.version().unwrap(), 2); + assert_eq!(db.migrate_to(3, migrate::ignore).unwrap(), 3); // 2 -> 3 + assert_eq!(db.version().unwrap(), 3); - assert_eq!(db.migrate_to(99, migrate::ignore).unwrap(), 2); // No-op. - assert_eq!(db.version().unwrap(), 2); + assert_eq!(db.migrate_to(1, migrate::ignore).unwrap(), 3); // No-op. + assert_eq!(db.version().unwrap(), 3); + + assert_eq!(db.migrate_to(99, migrate::ignore).unwrap(), 3); // No-op. + assert_eq!(db.version().unwrap(), 3); } } diff --git a/crates/radicle/src/cob/cache/migrations/3.sql b/crates/radicle/src/cob/cache/migrations/3.sql new file mode 100644 index 00000000..72bc9e6d --- /dev/null +++ b/crates/radicle/src/cob/cache/migrations/3.sql @@ -0,0 +1,2 @@ +create index if not exists 'ix_issues_repo_id' on 'issues' (repo, id); +create index if not exists 'ix_patches_repo_id' on 'patches' (repo, id);