Don't compare across systems in one query
As the query seems to be super slow, and this allows parallelising it as well.
This commit is contained in:
parent
94e66d5b1f
commit
4e7c2bcfbf
2 changed files with 32 additions and 29 deletions
|
|
@ -255,7 +255,7 @@ GROUP BY derivation_source_files.store_path"))
|
||||||
base_guix_revision_id
|
base_guix_revision_id
|
||||||
target_guix_revision_id
|
target_guix_revision_id
|
||||||
#:key
|
#:key
|
||||||
(systems #f)
|
(system #f)
|
||||||
(targets #f)
|
(targets #f)
|
||||||
(include-builds? #t)
|
(include-builds? #t)
|
||||||
(exclude-unchanged-outputs? #t)
|
(exclude-unchanged-outputs? #t)
|
||||||
|
|
@ -267,15 +267,8 @@ GROUP BY derivation_source_files.store_path"))
|
||||||
after-name)
|
after-name)
|
||||||
(define extra-constraints
|
(define extra-constraints
|
||||||
(string-append
|
(string-append
|
||||||
(if systems
|
(if system
|
||||||
(string-append
|
(string-append " AND systems.system = '" system "'")
|
||||||
" AND systems.system IN ("
|
|
||||||
(string-join (map
|
|
||||||
(lambda (s)
|
|
||||||
(string-append "'" s "'"))
|
|
||||||
systems)
|
|
||||||
", ")
|
|
||||||
")")
|
|
||||||
"")
|
"")
|
||||||
(if targets
|
(if targets
|
||||||
(string-append
|
(string-append
|
||||||
|
|
|
||||||
|
|
@ -684,27 +684,33 @@
|
||||||
|
|
||||||
(let ((base-commit (assq-ref query-parameters 'base_commit))
|
(let ((base-commit (assq-ref query-parameters 'base_commit))
|
||||||
(target-commit (assq-ref query-parameters 'target_commit))
|
(target-commit (assq-ref query-parameters 'target_commit))
|
||||||
(systems (assq-ref query-parameters 'system))
|
(systems (or (assq-ref query-parameters 'system)
|
||||||
|
(call-with-resource-from-pool (connection-pool)
|
||||||
|
list-systems)))
|
||||||
(targets (assq-ref query-parameters 'target))
|
(targets (assq-ref query-parameters 'target))
|
||||||
(build-change (and=>
|
(build-change (and=>
|
||||||
(assq-ref query-parameters 'build_change)
|
(assq-ref query-parameters 'build_change)
|
||||||
string->symbol))
|
string->symbol))
|
||||||
(after-name (assq-ref query-parameters 'after_name))
|
(after-name (assq-ref query-parameters 'after_name))
|
||||||
(limit-results (assq-ref query-parameters 'limit_results)))
|
(limit-results (assq-ref query-parameters 'limit_results)))
|
||||||
(letpar& ((data
|
(let ((data
|
||||||
|
(concatenate!
|
||||||
|
(par-map&
|
||||||
|
(lambda (system)
|
||||||
(with-resource-from-pool (connection-pool) conn
|
(with-resource-from-pool (connection-pool) conn
|
||||||
(package-derivation-differences-data
|
(package-derivation-differences-data
|
||||||
conn
|
conn
|
||||||
(commit->revision-id conn base-commit)
|
(commit->revision-id conn base-commit)
|
||||||
(commit->revision-id conn target-commit)
|
(commit->revision-id conn target-commit)
|
||||||
#:systems systems
|
#:system system
|
||||||
#:targets targets
|
#:targets targets
|
||||||
#:build-change build-change
|
#:build-change build-change
|
||||||
#:after-name after-name
|
#:after-name after-name
|
||||||
#:limit-results limit-results)))
|
#:limit-results limit-results)))
|
||||||
(build-server-urls
|
systems)))
|
||||||
(call-with-resource-from-pool (connection-pool)
|
(build-server-urls
|
||||||
select-build-server-urls-by-id)))
|
(call-with-resource-from-pool (connection-pool)
|
||||||
|
select-build-server-urls-by-id)))
|
||||||
(let ((names-and-versions
|
(let ((names-and-versions
|
||||||
(package-derivation-data->names-and-versions data)))
|
(package-derivation-data->names-and-versions data)))
|
||||||
(let-values
|
(let-values
|
||||||
|
|
@ -771,7 +777,9 @@
|
||||||
(base-datetime (assq-ref query-parameters 'base_datetime))
|
(base-datetime (assq-ref query-parameters 'base_datetime))
|
||||||
(target-branch (assq-ref query-parameters 'target_branch))
|
(target-branch (assq-ref query-parameters 'target_branch))
|
||||||
(target-datetime (assq-ref query-parameters 'target_datetime))
|
(target-datetime (assq-ref query-parameters 'target_datetime))
|
||||||
(systems (assq-ref query-parameters 'system))
|
(systems (or (assq-ref query-parameters 'system)
|
||||||
|
(call-with-resource-from-pool (connection-pool)
|
||||||
|
list-systems)))
|
||||||
(targets (assq-ref query-parameters 'target))
|
(targets (assq-ref query-parameters 'target))
|
||||||
(build-change (and=>
|
(build-change (and=>
|
||||||
(assq-ref query-parameters 'build_change)
|
(assq-ref query-parameters 'build_change)
|
||||||
|
|
@ -789,18 +797,20 @@
|
||||||
(select-guix-revision-for-branch-and-datetime conn
|
(select-guix-revision-for-branch-and-datetime conn
|
||||||
target-branch
|
target-branch
|
||||||
target-datetime))))
|
target-datetime))))
|
||||||
(letpar&
|
(let ((data
|
||||||
((data
|
(par-map&
|
||||||
(with-resource-from-pool (connection-pool) conn
|
(lambda (system)
|
||||||
(package-derivation-differences-data
|
(with-resource-from-pool (connection-pool) conn
|
||||||
conn
|
(package-derivation-differences-data
|
||||||
(first base-revision-details)
|
conn
|
||||||
(first target-revision-details)
|
(first base-revision-details)
|
||||||
#:systems systems
|
(first target-revision-details)
|
||||||
#:targets targets
|
#:system system
|
||||||
#:build-change build-change
|
#:targets targets
|
||||||
#:after-name after-name
|
#:build-change build-change
|
||||||
#:limit-results limit-results))))
|
#:after-name after-name
|
||||||
|
#:limit-results limit-results)))
|
||||||
|
systems)))
|
||||||
(let ((names-and-versions
|
(let ((names-and-versions
|
||||||
(package-derivation-data->names-and-versions data)))
|
(package-derivation-data->names-and-versions data)))
|
||||||
(let-values
|
(let-values
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue