34 lines
859 B
PL/PgSQL
34 lines
859 B
PL/PgSQL
-- Deploy guix-data-service:sort_out_duplicate_builds to pg
|
|
|
|
BEGIN;
|
|
|
|
DELETE FROM build_status WHERE build_id IN (
|
|
SELECT builds.id
|
|
FROM builds
|
|
INNER JOIN (
|
|
SELECT derivation_file_name, MIN(id) AS id
|
|
FROM builds
|
|
GROUP BY build_server_id, derivation_file_name
|
|
HAVING COUNT(DISTINCT id) > 1
|
|
) AS min_ids
|
|
ON min_ids.derivation_file_name = builds.derivation_file_name AND
|
|
min_ids.id != builds.id
|
|
);
|
|
|
|
DELETE FROM builds WHERE id IN (
|
|
SELECT builds.id
|
|
FROM builds
|
|
INNER JOIN (
|
|
SELECT derivation_file_name, MIN(id) AS id
|
|
FROM builds
|
|
GROUP BY build_server_id, derivation_file_name
|
|
HAVING COUNT(DISTINCT id) > 1
|
|
) AS min_ids
|
|
ON min_ids.derivation_file_name = builds.derivation_file_name AND
|
|
min_ids.id != builds.id
|
|
);
|
|
|
|
CREATE UNIQUE INDEX ON builds (build_server_id, derivation_file_name);
|
|
|
|
COMMIT;
|