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 (define (package-description-and-synopsis-locale-options-guix-revision conn
revision-id) revision-id)
;; TODO This no longer uses the revision-id, as that's too expensive. Maybe
;; some caching is needed.
(exec-query (exec-query
conn conn
" "
WITH package_metadata_ids AS ( SELECT locale FROM package_synopsis
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
UNION UNION
SELECT locale FROM description_locales" SELECT locale FROM package_descriptions"))
(list revision-id)))
(define (synopsis-counts-by-locale conn revision-id) (define (synopsis-counts-by-locale conn revision-id)
(define synopsis-counts (define synopsis-counts