diff options
Diffstat (limited to 'guix-build-coordinator/datastore/sqlite.scm')
-rw-r--r-- | guix-build-coordinator/datastore/sqlite.scm | 75 |
1 files changed, 41 insertions, 34 deletions
diff --git a/guix-build-coordinator/datastore/sqlite.scm b/guix-build-coordinator/datastore/sqlite.scm index ea3acba..6cdfc6b 100644 --- a/guix-build-coordinator/datastore/sqlite.scm +++ b/guix-build-coordinator/datastore/sqlite.scm @@ -743,15 +743,18 @@ WHERE related_derivations.id != :derivation_id (define-method (datastore-list-failed-builds-with-blocking-count (datastore <sqlite-datastore>) - system) - (call-with-worker-thread - (slot-ref datastore 'worker-reader-thread-channel) - (lambda (db) - (let ((statement - (sqlite-prepare - db - (string-append - " + . + args) + (apply + (lambda* (system #:key include-cancelled?) + (call-with-worker-thread + (slot-ref datastore 'worker-reader-thread-channel) + (lambda (db) + (let ((statement + (sqlite-prepare + db + (string-append + " SELECT * FROM ( SELECT @@ -784,16 +787,20 @@ FROM ( ( ( builds.processed = 1 - AND build_results.result = 'failure' + AND build_results.result = 'failure'" + (if include-cancelled? + " ) OR ( - builds.canceled = 1 + builds.canceled = 1" + "") + " ) )" - (if system - " + (if system + " AND derivations.system = :system" - "") - " + "") + " AND NOT EXISTS ( SELECT 1 FROM derivation_outputs @@ -804,27 +811,27 @@ FROM ( INNER JOIN build_results AS other_build_results ON other_builds.id = other_build_results.build_id WHERE derivation_outputs.derivation_id = builds.derivation_id - AND other_build_results.result = 'success' + AND other_build_results.result = 'success' ) -) AS data -WHERE blocking_count > 0 -ORDER BY 3 DESC, 2, 1") - #:cache? #t))) - - (when system - (sqlite-bind-arguments statement - #:system system)) - - (let ((result (sqlite-map - (match-lambda - (#(uuid derivation-name blocked-count) - `((uuid . ,uuid) - (derivation_name . ,derivation-name) - (blocked_count . ,blocked-count)))) - statement))) - (sqlite-reset statement) + ) AS data + WHERE blocking_count > 0 + ORDER BY 3 DESC, 2, 1") + #:cache? #t))) + (when system + (sqlite-bind-arguments statement + #:system system)) + + (let ((result (sqlite-map + (match-lambda + (#(uuid derivation-name blocked-count) + `((uuid . ,uuid) + (derivation_name . ,derivation-name) + (blocked_count . ,blocked-count)))) + statement))) + (sqlite-reset statement) - result))))) + result))))) + args)) (define-method (datastore-list-builds-for-derivation-recursive-inputs (datastore <sqlite-datastore>) |