From 561a81a9519779dd6cc89db898f14c1e5aea27b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Reynir=20Bj=C3=B6rnsson?= Date: Thu, 29 Apr 2021 15:16:19 +0200 Subject: [PATCH] Alter db build index We started looking up by date a lot. --- bin/migrations/builder_migrations.ml | 12 +++++++++++ bin/migrations/m20210427.ml | 31 ++++++++++++++++++++++++++++ db/builder_db.ml | 4 ++-- 3 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 bin/migrations/m20210427.ml diff --git a/bin/migrations/builder_migrations.ml b/bin/migrations/builder_migrations.ml index a38523f..3758ae1 100644 --- a/bin/migrations/builder_migrations.ml +++ b/bin/migrations/builder_migrations.ml @@ -101,6 +101,17 @@ let f20210308 = Cmdliner.Term.(const do_database_action $ const M20210308.fixup $ setup_log $ dbpath), Cmdliner.Term.info ~doc "fixup-2021-03-08" +let m20210427 = + let doc = "Adds an index 'idx_build_job_start' on 'build' (2021-04-27)" in + Cmdliner.Term.(const do_database_action $ const M20210427.migrate $ setup_log $ dbpath), + Cmdliner.Term.info ~doc "migrate-2021-04-27" + +let r20210427 = + let doc = "Rollback index 'idx_build_job_start'' on 'build' (2021-04-27)" in + Cmdliner.Term.(const do_database_action $ const M20210427.rollback $ setup_log $ dbpath), + Cmdliner.Term.info ~doc "rollback-2021-04-27" + + let help_cmd = let topic = let doc = "Migration to get help on" in @@ -124,5 +135,6 @@ let () = m20210216; r20210216; m20210218; r20210218; f20210308; + m20210427; r20210427; ] |> Cmdliner.Term.exit diff --git a/bin/migrations/m20210427.ml b/bin/migrations/m20210427.ml new file mode 100644 index 0000000..6247545 --- /dev/null +++ b/bin/migrations/m20210427.ml @@ -0,0 +1,31 @@ +open Rresult.R.Infix + +let migrate (module Db : Caqti_blocking.CONNECTION) = + let idx_build_job_start = + Caqti_request.exec ~oneshot:true + Caqti_type.unit + "CREATE INDEX idx_build_job_start ON build(job, start_d DESC, start_ps DESC)" + in + let rm_job_build_idx = + Caqti_request.exec ~oneshot:true + Caqti_type.unit + "DROP INDEX IF EXISTS job_build_idx" + in + Grej.check_version ~user_version:3L (module Db) >>= fun () -> + Db.exec rm_job_build_idx () >>= fun () -> + Db.exec idx_build_job_start () + +let rollback (module Db : Caqti_blocking.CONNECTION) = + let job_build_idx = + Caqti_request.exec ~oneshot:true + Caqti_type.unit + "CREATE INDEX job_build_idx ON build(job)" + in + let rm_idx_build_job_start = + Caqti_request.exec ~oneshot:true + Caqti_type.unit + "DROP INDEX IF EXISTS idx_build_job_start" + in + Grej.check_version ~user_version:3L (module Db) >>= fun () -> + Db.exec rm_idx_build_job_start () >>= fun () -> + Db.exec job_build_idx () diff --git a/db/builder_db.ml b/db/builder_db.ml index 3b89207..5f24c0f 100644 --- a/db/builder_db.ml +++ b/db/builder_db.ml @@ -516,7 +516,7 @@ let migrate = [ Build_file.migrate; User.migrate; Caqti_request.exec Caqti_type.unit - "CREATE INDEX job_build_idx ON build(job)"; + "CREATE INDEX idx_build_job_start ON build(job, startd DESC, start_ps DESC)"; set_current_version; set_application_id; ] @@ -528,7 +528,7 @@ let rollback = [ Build.rollback; Job.rollback; Caqti_request.exec Caqti_type.unit - "DROP INDEX IF EXISTS job_build_idx"; + "DROP INDEX IF EXISTS idx_build_job_start"; Caqti_request.exec Caqti_type.unit "PRAGMA user_version = 0"; Caqti_request.exec Caqti_type.unit