From bae130d4fd357c585db685c3aef5d8f1db71efa6 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Tue, 21 Jan 2020 15:01:51 +0100 Subject: [PATCH] Bug 21674: Remove duplicates from library_groups before adding the uniq constraint To avoid to make it fails if duplicates existed prior to this change --- installer/data/mysql/atomicupdate/bug_21674.perl | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/installer/data/mysql/atomicupdate/bug_21674.perl b/installer/data/mysql/atomicupdate/bug_21674.perl index 3bcf5f9f76..5242252571 100644 --- a/installer/data/mysql/atomicupdate/bug_21674.perl +++ b/installer/data/mysql/atomicupdate/bug_21674.perl @@ -1,6 +1,19 @@ $DBversion = 'XXX'; # will be replaced by the RM if( CheckVersion( $DBversion ) ) { if( !index_exists( 'library_groups', 'library_groups_uniq_2' ) ) { + my $library_groups = $dbh->selectall_arrayref(q|SELECT id, parent_id, branchcode FROM library_groups|, { Slice => {} }); + my %existing_groups; + for my $g ( @$library_groups ) { + + next unless $g->{parent_id}; + + unless ( exists $existing_groups{$g->{parent_id}}{$g->{branchcode}} ) { + $existing_groups{$g->{parent_id}}{$g->{branchcode}} = 1; + next; + } + + $dbh->do(q|DELETE FROM library_groups WHERE id=?|, undef, $g->{id}); + } $dbh->do(q| ALTER TABLE library_groups ADD UNIQUE KEY library_groups_uniq_2 (parent_id, branchcode) -- 2.11.0