2
0
Fork 0
mirror of git://git.savannah.gnu.org/guix/data-service.git synced 2023-12-14 03:23:03 +01:00

Improve the query in select-derivations-and-build-status

Fix handling derivations which target multiple systems (somehow?).
This commit is contained in:
Christopher Baines 2019-03-24 10:50:48 +00:00
parent 5d0dcea3e4
commit 5be4ebca0c

View file

@ -499,23 +499,24 @@ ORDER BY derivations.system DESC,
(define query
(string-append
"SELECT derivations.file_name, derivations.system, ("
" SELECT DISTINCT package_derivations.target"
" FROM package_derivations"
" WHERE derivations.id = package_derivations.derivation_id"
") AS target, "
"latest_build_status.status "
"FROM derivations "
"INNER JOIN package_derivations"
" ON derivations.id = package_derivations.derivation_id "
"LEFT OUTER JOIN builds ON derivations.id = builds.derivation_id "
"LEFT OUTER JOIN "
"(SELECT DISTINCT ON (internal_build_id) * "
"FROM build_status "
"ORDER BY internal_build_id, status_fetched_at DESC"
") AS latest_build_status "
"ON builds.internal_id = latest_build_status.internal_build_id "
"WHERE " criteria ";"))
"
SELECT
derivations.file_name,
derivations.system,
package_derivations.target,
latest_build_status.status
FROM derivations
INNER JOIN package_derivations
ON derivations.id = package_derivations.derivation_id
LEFT OUTER JOIN builds
ON derivations.id = builds.derivation_id
LEFT OUTER JOIN (
SELECT DISTINCT ON (internal_build_id) *
FROM build_status
ORDER BY internal_build_id, status_fetched_at DESC
) AS latest_build_status
ON builds.internal_id = latest_build_status.internal_build_id
WHERE " criteria ";"))
(exec-query conn query))