Remove duplicates from the guix_revisions table

This commit is contained in:
Christopher Baines 2019-10-05 09:14:40 +01:00
parent a104fbc5e1
commit 9fc6dd08e6
4 changed files with 52 additions and 0 deletions

View file

@ -0,0 +1,37 @@
-- Deploy guix-data-service:remove_guix_revision_duplicates to pg
BEGIN;
WITH data AS (
SELECT unnest(old_ids) AS old, id FROM (
SELECT MIN(id) AS id, ARRAY_AGG(id) AS old_ids
FROM guix_revisions
GROUP BY commit, git_repository_id
HAVING COUNT(id) > 1
) AS d2
)
DELETE FROM guix_revision_package_derivations
WHERE revision_id IN (SELECT old FROM data WHERE old != id);
WITH data AS (
SELECT unnest(old_ids) AS old, id FROM (
SELECT MIN(id) AS id, ARRAY_AGG(id) AS old_ids
FROM guix_revisions
GROUP BY commit, git_repository_id
HAVING COUNT(id) > 1
) AS d2
)
UPDATE package_versions_by_guix_revision_range
SET first_guix_revision_id = data.id
FROM data
WHERE first_guix_revision_id = data.old;
DELETE FROM guix_revisions AS g WHERE id NOT IN (
SELECT MIN(id)
FROM guix_revisions
GROUP BY (commit, git_repository_id)
);
CREATE UNIQUE INDEX ON guix_revisions (commit, git_repository_id);
COMMIT;