]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 359234: missing indexes on the cc and profiles table cause upgrades to fail
authormkanat%bugzilla.org <>
Sat, 4 Nov 2006 07:11:16 +0000 (07:11 +0000)
committermkanat%bugzilla.org <>
Sat, 4 Nov 2006 07:11:16 +0000 (07:11 +0000)
Patch By Noel Cragg <noel@red-bean.com> r=mkanat, a=myk

Bugzilla/Install/DB.pm

index d1d154c533a3ed7332930b44baf0aa6a53b3008a..863ce9bfa3dfc538ae24af10b43a008fae7684dd 100644 (file)
@@ -13,6 +13,7 @@
 # The Original Code is the Bugzilla Bug Tracking System.
 #
 # Contributor(s): Max Kanat-Alexander <mkanat@bugzilla.org>
+#                 Noel Cragg <noel@red-bean.com>
 
 package Bugzilla::Install::DB;
 
@@ -184,12 +185,16 @@ sub update_table_definitions {
     # 2000-03-24 Added unique indexes into the cc and keyword tables.  This
     # prevents certain database inconsistencies, and, moreover, is required for
     # new generalized list code to work.
-    if (!$dbh->bz_index_info('cc', 'cc_bug_id_idx')->{TYPE}) {
+    if (!$dbh->bz_index_info('cc', 'cc_bug_id_idx')
+        || !$dbh->bz_index_info('cc', 'cc_bug_id_idx')->{TYPE})
+    {
         $dbh->bz_drop_index('cc', 'cc_bug_id_idx');
         $dbh->bz_add_index('cc', 'cc_bug_id_idx',
                            {TYPE => 'UNIQUE', FIELDS => [qw(bug_id who)]});
     }
-    if (!$dbh->bz_index_info('keywords', 'keywords_bug_id_idx')->{TYPE}) {
+    if (!$dbh->bz_index_info('keywords', 'keywords_bug_id_idx')
+        || !$dbh->bz_index_info('keywords', 'keywords_bug_id_idx')->{TYPE})
+    {
         $dbh->bz_drop_index('keywords', 'keywords_bug_id_idx');
         $dbh->bz_add_index('keywords', 'keywords_bug_id_idx',
             {TYPE => 'UNIQUE', FIELDS => [qw(bug_id keywordid)]});
@@ -752,8 +757,9 @@ sub _add_unique_login_name_index_to_profiles {
     # declared to be unique.  Sure enough, somehow, I got 22 duplicated entries
     # in my database.  This code detects that, cleans up the duplicates, and
     # then tweaks the table to declare the field to be unique.  What a pain.
-    if (!$dbh->bz_index_info('profiles', 'profiles_login_name_idx') ||
-        !$dbh->bz_index_info('profiles', 'profiles_login_name_idx')->{TYPE}) {
+    if (!$dbh->bz_index_info('profiles', 'profiles_login_name_idx')
+        || !$dbh->bz_index_info('profiles', 'profiles_login_name_idx')->{TYPE})
+    {
         print "Searching for duplicate entries in the profiles table...\n";
         while (1) {
             # This code is weird in that it loops around and keeps doing this