]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 516712: Allow checksetup.pl to upgrade installations from before 3.4 where profil...
authormkanat%bugzilla.org <>
Mon, 21 Sep 2009 23:49:18 +0000 (23:49 +0000)
committermkanat%bugzilla.org <>
Mon, 21 Sep 2009 23:49:18 +0000 (23:49 +0000)
Patch by Max Kanat-Alexander <mkanat@bugzilla.org> r=dkl, a=mkanat

Bugzilla/Install/DB.pm

index d39d1a770e1430403c41ee2cdf1a0599ce89ab4e..99e5b98957e9ec74f524d72246936195d2bd7af7 100644 (file)
@@ -559,8 +559,7 @@ sub update_table_definitions {
     _add_visiblity_value_to_value_tables();
 
     # 2009-03-02 arbingersys@gmail.com - Bug 423613
-    $dbh->bz_add_index('profiles', 'profiles_extern_id_idx',
-                       {TYPE => 'UNIQUE', FIELDS => [qw(extern_id)]});
+    _add_extern_id_index();
 
     # 2009-03-31 LpSolit@gmail.com - Bug 478972
     $dbh->bz_alter_column('group_control_map', 'entry',
@@ -3180,6 +3179,17 @@ sub _add_visiblity_value_to_value_tables {
     }
 }
 
+sub _add_extern_id_index {
+    my $dbh = Bugzilla->dbh;
+    if (!$dbh->bz_index_info('profiles', 'profiles_extern_id_idx')) {
+        # Some Bugzillas have a multiple empty strings in extern_id,
+        # which need to be converted to NULLs before we add the index.
+        $dbh->do("UPDATE profiles SET extern_id = NULL WHERE extern_id = ''");
+        $dbh->bz_add_index('profiles', 'profiles_extern_id_idx',
+                           {TYPE => 'UNIQUE', FIELDS => [qw(extern_id)]});
+    }
+}
+
 sub _convert_disallownew_to_isactive {
     my $dbh = Bugzilla->dbh;
     if ($dbh->bz_column_info('products', 'disallownew')){