| 
      
            Lines 1-8
          
      
      
        Link Here
      
     | 
  
        
          | 1 | 
          $DBversion = 'XXX'; # will be replaced by the RM  | 
          1 | 
          $DBversion = 'XXX'; # will be replaced by the RM  | 
        
        
          | 2 | 
          if( CheckVersion( $DBversion ) ) { | 
          2 | 
          if( CheckVersion( $DBversion ) ) { | 
        
          
            
              | 3 | 
                  $dbh->do( q{ALTER TABLE `authorised_values` ADD CONSTRAINT `category_code` UNIQUE (category,authorised_value)} ); | 
              3 | 
                  unless ( index_exists('authorised_values', 'av_uniq') ) { | 
            
            
               | 
               | 
              4 | 
                      my $duplicates = $dbh->selectall_arrayref(q|  | 
            
            
              | 5 | 
                          SELECT category, authorised_value, COUNT(concat(category, ':', authorised_value)) AS c  | 
            
            
              | 6 | 
                          FROM authorised_values  | 
            
            
              | 7 | 
                          GROUP BY category, authorised_value  | 
            
            
              | 8 | 
                          HAVING c > 1  | 
            
            
              | 9 | 
                      |, { Slice => {} }); | 
            
            
              | 10 | 
                      if ( @$duplicates ) { | 
            
            
              | 11 | 
                          warn "WARNING - Cannot create unique constraint on authorised_value(category, authorised_value)\n";  | 
            
            
              | 12 | 
                          warn "The following entries are duplicated: " . join (', ', map { sprintf "%s:%s (%s)", $_->{category}, $_->{authorised_value}, $_->{c} } @$duplicates); | 
            
            
              | 13 | 
                      } else { | 
            
            
              | 14 | 
                          $dbh->do( q{ALTER TABLE `authorised_values` ADD CONSTRAINT `av_uniq` UNIQUE (category, authorised_value)} ); | 
            
            
              | 15 | 
                      }  | 
            
            
              | 16 | 
                  }  | 
            
        
          | 4 | 
           | 
          17 | 
           | 
        
            
              | 5 | 
                  # Always end with this (adjust the bug info)  | 
               | 
               | 
            
        
          | 6 | 
              SetVersion( $DBversion );  | 
          18 | 
              SetVersion( $DBversion );  | 
        
        
          | 7 | 
              print "Upgrade to $DBversion done (Bug 22887 - Add unique constraint to authorised_values)\n";  | 
          19 | 
              print "Upgrade to $DBversion done (Bug 22887 - Add unique constraint to authorised_values)\n";  | 
        
        
          | 8 | 
          }  | 
          20 | 
          }  |