Speed up deleting blocked_builds entries

This commit is contained in:
Christopher Baines 2023-02-27 22:52:43 +00:00
parent 1bce38a69d
commit 2d96fbff48
1 changed files with 21 additions and 7 deletions

View File

@ -388,14 +388,28 @@ DELETE FROM builds WHERE id IN ("
(define (delete-blocked-builds-for-derivation-output-details-set
conn
derivation-output-details-set-id)
(exec-query
conn
"
;; Do this for each build server individually, as that helps PostgreSQL
;; efficiently check the partitions
(let ((build-server-ids
(map
car
(exec-query
conn
"SELECT id FROM build_servers"))))
(for-each
(lambda (build-server-id)
(exec-query
conn
"
DELETE FROM blocked_builds
WHERE blocked_derivation_output_details_set_id = $1
OR blocking_derivation_output_details_set_id = $2"
(list derivation-output-details-set-id
derivation-output-details-set-id)))
WHERE build_server_id = $1
AND (
blocked_derivation_output_details_set_id = $2 OR blocking_derivation_output_details_set_id = $3
)"
(list build-server-id
derivation-output-details-set-id
derivation-output-details-set-id)))
build-server-ids)))
(define (delete-unreferenced-derivations-source-files conn)
(exec-query