Speed up package-description-and-synopsis-locale-options-guix-revision

This commit is contained in:
Christopher Baines 2024-09-08 11:19:44 +01:00
parent ea03ca7230
commit eac37b9e8a

View file

@ -433,40 +433,14 @@ WHERE packages.id IN (
(define (package-description-and-synopsis-locale-options-guix-revision conn
revision-id)
;; TODO This no longer uses the revision-id, as that's too expensive. Maybe
;; some caching is needed.
(exec-query
conn
"
WITH package_metadata_ids AS (
SELECT packages.package_metadata_id AS id
FROM packages
WHERE packages.id IN (
SELECT package_derivations.package_id
FROM package_derivations
INNER JOIN guix_revision_package_derivations
ON package_derivations.id = guix_revision_package_derivations.package_derivation_id
WHERE guix_revision_package_derivations.revision_id = $1
)
), synopsis_locales AS (
SELECT package_synopsis.locale
FROM package_metadata
INNER JOIN package_synopsis_sets
ON package_synopsis_sets.id = package_metadata.package_synopsis_set_id
INNER JOIN package_synopsis
ON package_synopsis.id = ANY (package_synopsis_sets.synopsis_ids)
WHERE package_metadata.id IN (SELECT id FROM package_metadata_ids)
), description_locales AS (
SELECT package_descriptions.locale
FROM package_metadata
INNER JOIN package_description_sets
ON package_description_sets.id = package_metadata.package_description_set_id
INNER JOIN package_descriptions
ON package_descriptions.id = ANY (package_description_sets.description_ids)
WHERE package_metadata.id IN (SELECT id FROM package_metadata_ids)
)
SELECT locale FROM synopsis_locales
SELECT locale FROM package_synopsis
UNION
SELECT locale FROM description_locales"
(list revision-id)))
SELECT locale FROM package_descriptions"))
(define (synopsis-counts-by-locale conn revision-id)
(define synopsis-counts