Speed up finding the locales for a revision
This commit is contained in:
parent
12af30c039
commit
e3062abf33
5 changed files with 51 additions and 15 deletions
|
|
@ -435,23 +435,37 @@ WHERE packages.id IN (
|
|||
revision-id)
|
||||
(exec-query
|
||||
conn
|
||||
"SELECT DISTINCT coalesce(package_descriptions.locale, package_synopsis.locale)
|
||||
FROM package_descriptions
|
||||
INNER JOIN package_description_sets
|
||||
ON package_descriptions.id = ANY (package_description_sets.description_ids)
|
||||
INNER JOIN package_metadata
|
||||
ON package_metadata.package_description_set_id = package_description_sets.id
|
||||
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)
|
||||
INNER JOIN packages
|
||||
ON packages.package_metadata_id = package_metadata.id
|
||||
INNER JOIN package_derivations
|
||||
ON package_derivations.package_id = packages.id
|
||||
"
|
||||
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"
|
||||
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
|
||||
SELECT locale FROM description_locales"
|
||||
(list revision-id)))
|
||||
|
||||
(define (synopsis-counts-by-locale conn revision-id)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue