aboutsummaryrefslogtreecommitdiff
path: root/guix-build-coordinator
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2020-11-06 19:28:56 +0000
committerChristopher Baines <mail@cbaines.net>2020-11-06 19:28:56 +0000
commit731bf719eaecbfe523bf448a31670c272002aff2 (patch)
treec04e7d5c53533437e7b7b11e6ed4322d9595fc30 /guix-build-coordinator
parent9b44218b3e5f8168aec5a8eef467f0cb9a5b8473 (diff)
downloadbuild-coordinator-731bf719eaecbfe523bf448a31670c272002aff2.tar
build-coordinator-731bf719eaecbfe523bf448a31670c272002aff2.tar.gz
Use the unbuilt_outputs table in the derivation ordered allocator
As this speeds the query up substantially.
Diffstat (limited to 'guix-build-coordinator')
-rw-r--r--guix-build-coordinator/datastore/sqlite.scm25
1 files changed, 8 insertions, 17 deletions
diff --git a/guix-build-coordinator/datastore/sqlite.scm b/guix-build-coordinator/datastore/sqlite.scm
index 77fbf1e..07ea32e 100644
--- a/guix-build-coordinator/datastore/sqlite.scm
+++ b/guix-build-coordinator/datastore/sqlite.scm
@@ -1242,25 +1242,16 @@ WHERE processed = 0
created-after)
"")
"
-EXCEPT
- SELECT uuid
- FROM builds
- INNER JOIN derivation_inputs
- ON builds.derivation_name = derivation_inputs.derivation_name
+AND NOT EXISTS (
+ SELECT 1
+ FROM derivation_inputs
INNER JOIN derivation_outputs
ON derivation_inputs.derivation_output_id = derivation_outputs.id
- WHERE derivation_outputs.output IN (
- SELECT derivation_outputs.output
- FROM derivation_outputs
- EXCEPT
- SELECT derivation_outputs.output
- FROM builds
- INNER JOIN build_results
- ON builds.uuid = build_results.build_id
- INNER JOIN derivation_outputs
- ON builds.derivation_name = derivation_outputs.derivation_name
- WHERE build_results.result = 'success'
- )
+ INNER JOIN unbuilt_outputs
+ ON unbuilt_outputs.output =
+ derivation_outputs.output
+ WHERE builds.derivation_name = derivation_inputs.derivation_name
+)
EXCEPT
SELECT build_id FROM allocated_builds
"))))