From 14d1718889605be9c15bd0dd86b50f8f339b9b84 Mon Sep 17 00:00:00 2001 From: Christopher Kolstad Date: Fri, 19 Mar 2021 11:54:12 +0100 Subject: [PATCH] fix: delete duplicate client instances - Due to applying a primary key constraint on app_name, instance_id, active installations with client_instances that have already violated this unique constraint will fail to migrate. - This commit drops all but the latest instance of each (app_name, instance_id) tuple, thus preparing the database for applying the unique constraint Co-authored-by: Ivar Conradi Osthus Co-authored-by: Fredrik Strand Oseberg --- src/migrations/20210302080040-add-pk-to-client-instances.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/migrations/20210302080040-add-pk-to-client-instances.js b/src/migrations/20210302080040-add-pk-to-client-instances.js index eecf9f887d..210f674638 100644 --- a/src/migrations/20210302080040-add-pk-to-client-instances.js +++ b/src/migrations/20210302080040-add-pk-to-client-instances.js @@ -3,6 +3,7 @@ exports.up = function(db, cb) { db.runSql( ` + DELETE FROM client_instances a USING client_instances b WHERE a.app_name = b.app_name AND a.instance_id = b.instance_id AND a.created_at < b.created_at; ALTER TABLE client_instances ADD PRIMARY KEY (app_name, instance_id); `, cb, @@ -13,7 +14,7 @@ exports.down = function(db, cb) { db.runSql( ` ALTER TABLE client_instances DROP CONSTRAINT client_instances_pkey; - DROP INDEX client_instance_pkey + DROP INDEX IF EXISTS client_instance_pkey `, cb, );