diff options
Diffstat (limited to 'Bugzilla/Install/DB.pm')
-rw-r--r-- | Bugzilla/Install/DB.pm | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/Bugzilla/Install/DB.pm b/Bugzilla/Install/DB.pm index d39d1a770..99e5b9895 100644 --- a/Bugzilla/Install/DB.pm +++ b/Bugzilla/Install/DB.pm @@ -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')){ |