diff options
Diffstat (limited to 'src/cuirass/database.scm')
-rw-r--r-- | src/cuirass/database.scm | 38 |
1 files changed, 27 insertions, 11 deletions
diff --git a/src/cuirass/database.scm b/src/cuirass/database.scm index 9664f1b..e17d4f0 100644 --- a/src/cuirass/database.scm +++ b/src/cuirass/database.scm @@ -559,7 +559,9 @@ AND (:job IS NULL OR (:job = Builds.job_name)) AND (:system IS NULL OR (:system = Builds.system)) AND (:evaluation IS NULL OR (:evaluation = Builds.evaluation)) AND (:status IS NULL OR (:status = 'done' AND Builds.status >= 0) - OR (:status = 'pending' AND Builds.status < 0)) + OR (:status = 'pending' AND Builds.status < 0) + OR (:status = 'succeeded' AND Builds.status = 0) + OR (:status = 'failed' AND Builds.status > 0)) AND (:borderlowtime IS NULL OR :borderlowid IS NULL OR ((:borderlowtime, :borderlowid) < (Builds.stoptime, Builds.rowid))) AND (:borderhightime IS NULL OR :borderhighid IS NULL @@ -712,26 +714,40 @@ SELECT MAX(id) FROM Evaluations WHERE specification=" spec))) (vector-ref (car rows) 0)))) -(define (db-get-builds-min eval) - "Return the min build (stoptime, id) pair for - the given evaluation EVAL." +(define (db-get-builds-min eval status) + "Return the min build (stoptime, rowid) pair for the given evaluation EVAL +and STATUS." (with-db-critical-section db (let ((rows (sqlite-exec db " SELECT stoptime, MIN(rowid) FROM (SELECT rowid, stoptime FROM Builds -WHERE evaluation=" eval " AND -stoptime = (SELECT MIN(stoptime) -FROM Builds WHERE evaluation=" eval "))"))) +WHERE evaluation=" eval " +AND stoptime = (SELECT MIN(stoptime) +FROM Builds +WHERE evaluation = " eval " +AND (" status " IS NULL OR (" status " = 'pending' + AND Builds.status < 0) + OR (" status " = 'succeeded' + AND Builds.status = 0) + OR (" status " = 'failed' + AND Builds.status > 0))))"))) (vector->list (car rows))))) -(define (db-get-builds-max eval) - "Return the max build (stoptime, id) pair for - the given evaluation EVAL." +(define (db-get-builds-max eval status) + "Return the max build (stoptime, rowid) pair for the given evaluation EVAL +and STATUS." (with-db-critical-section db (let ((rows (sqlite-exec db " SELECT stoptime, MAX(rowid) FROM (SELECT rowid, stoptime FROM Builds WHERE evaluation=" eval " AND stoptime = (SELECT MAX(stoptime) -FROM Builds WHERE evaluation=" eval "))"))) +FROM Builds +WHERE evaluation = " eval " +AND (" status " IS NULL OR (" status " = 'pending' + AND Builds.status < 0) + OR (" status " = 'succeeded' + AND Builds.status = 0) + OR (" status " = 'failed' + AND Builds.status > 0))))"))) (vector->list (car rows))))) |