From 8a5b8027ca0b805e9a25b57f2ecc9d9ab047cea6 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Fri, 3 Dec 2021 14:33:41 +0100 Subject: [PATCH] Bug 29631: Prevent uniq_lang creation to fail We got 2 reports of this problem in the last 24h, uniq_lang unique key is failing to be created because several rows with the same (subtag, type) exist in DB. I have no idea how this is possible, but apparently it is. Test plan: Checkout a commit before 21.06.00.012 reset_all Create duplicate in language_subtag_registry > insert into language_subtag_registry(subtag, type, description) values('IN', 'region', 'India'); Checkout master+this patch, updatedatabase => Only 1 IN-region exists in the DB, the last one. --- installer/data/mysql/db_revs/210600012.pl | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/installer/data/mysql/db_revs/210600012.pl b/installer/data/mysql/db_revs/210600012.pl index fef986078be..361a6056fcb 100755 --- a/installer/data/mysql/db_revs/210600012.pl +++ b/installer/data/mysql/db_revs/210600012.pl @@ -8,6 +8,15 @@ return { my $dbh = $args->{dbh}; if( !unique_key_exists( 'language_subtag_registry', 'uniq_lang' ) ) { + + $dbh->do(q{ + DELETE a + FROM language_subtag_registry AS a, language_subtag_registry AS b + WHERE a.id < b.id + AND a.subtag IS NOT NULL + AND a.subtag=b.subtag + AND a.type=b.type + }); $dbh->do(q{ ALTER TABLE language_subtag_registry ADD UNIQUE KEY uniq_lang (subtag, type) -- 2.25.1