From 8ee69d721141c1f8c4b88c2bf100cd538ac47e53 Mon Sep 17 00:00:00 2001 From: Robur Date: Wed, 17 Nov 2021 14:06:18 +0000 Subject: [PATCH] Work around caqti assertion failure --- db/builder_db.ml | 16 +++++++++++++--- db/builder_db.mli | 4 +++- lib/model.ml | 5 ++++- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/db/builder_db.ml b/db/builder_db.ml index 063aaa4..7feef1e 100644 --- a/db/builder_db.ml +++ b/db/builder_db.ml @@ -315,16 +315,26 @@ module Build = struct ORDER BY start_d DESC, start_ps DESC |} - (* XXX: caqti doesn't like this *) let get_all_failed = Caqti_request.collect - Caqti_type.(option string) + Caqti_type.unit (Caqti_type.tup2 (id `build) t) {| SELECT id, uuid, start_d, start_ps, finish_d, finish_ps, result_code, result_msg, console, script, platform, main_binary, input_id, user, job FROM build - WHERE ?1 IS NULL OR ?1 = build.platform + ORDER BY start_d DESC, start_ps DESC + |} + + let get_all_failed_by_platform = + Caqti_request.collect + Caqti_type.string + (Caqti_type.tup2 (id `build) t) + {| SELECT id, uuid, start_d, start_ps, finish_d, finish_ps, + result_code, result_msg, console, script, platform, + main_binary, input_id, user, job + FROM build + WHERE build.platform = ? ORDER BY start_d DESC, start_ps DESC |} diff --git a/db/builder_db.mli b/db/builder_db.mli index 56bb2b9..279a8ca 100644 --- a/db/builder_db.mli +++ b/db/builder_db.mli @@ -114,7 +114,9 @@ sig val get_all : ([`job] id, [`build] id * t, [ `Many | `One | `Zero ]) Caqti_request.t val get_all_failed : - (string option, [`build] id * t, [ `Many | `One | `Zero ]) Caqti_request.t + (unit, [`build] id * t, [ `Many | `One | `Zero ]) Caqti_request.t + val get_all_failed_by_platform : + (string, [`build] id * t, [ `Many | `One | `Zero ]) Caqti_request.t val get_all_artifact_sha : ([`job] id, Cstruct.t, [ `Many | `One | `Zero ]) Caqti_request.t val get_all_artifact_sha_by_platform : diff --git a/lib/model.ml b/lib/model.ml index 9a755be..e408455 100644 --- a/lib/model.ml +++ b/lib/model.ml @@ -82,7 +82,10 @@ let next_successful_build_uuid id (module Db : CONN) = Db.find_opt Builder_db.Build.get_next_successful_uuid id let failed_builds platform (module Db : CONN) = - Db.collect_list Builder_db.Build.get_all_failed platform >|= List.map snd + (match platform with + | None -> Db.collect_list Builder_db.Build.get_all_failed () + | Some p -> Db.collect_list Builder_db.Build.get_all_failed_by_platform p) + >|= List.map snd let builds_with_different_input_and_same_main_binary id (module Db : CONN) = Db.collect_list Builder_db.Build.get_different_input_same_output_input_ids id >>= fun ids ->