diff options
author | Christopher Baines <mail@cbaines.net> | 2020-11-06 19:28:56 +0000 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2020-11-06 19:28:56 +0000 |
commit | 731bf719eaecbfe523bf448a31670c272002aff2 (patch) | |
tree | c04e7d5c53533437e7b7b11e6ed4322d9595fc30 /guix-build-coordinator | |
parent | 9b44218b3e5f8168aec5a8eef467f0cb9a5b8473 (diff) | |
download | build-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.scm | 25 |
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 ")))) |