aboutsummaryrefslogtreecommitdiff
path: root/guix-build-coordinator/datastore/sqlite.scm
diff options
context:
space:
mode:
Diffstat (limited to 'guix-build-coordinator/datastore/sqlite.scm')
-rw-r--r--guix-build-coordinator/datastore/sqlite.scm75
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>)