]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 57350: "added comments" search is slow or doesn't work at all
authormkanat%bugzilla.org <>
Mon, 4 Sep 2006 23:17:04 +0000 (23:17 +0000)
committermkanat%bugzilla.org <>
Mon, 4 Sep 2006 23:17:04 +0000 (23:17 +0000)
Patch By Max Kanat-Alexander <mkanat@bugzilla.org> r=bkor, a=myk

Bugzilla/DB/Schema.pm
Bugzilla/Install/DB.pm

index fb5fb9ce83a886f868579618eb9520ca61317ff6..b4a9005f78513caff20bd9dfd9b602dd1b509355 100644 (file)
@@ -269,7 +269,7 @@ use constant ABSTRACT_SCHEMA => {
         ],
         INDEXES => [
             longdescs_bug_id_idx   => ['bug_id'],
-            longdescs_who_idx     => ['who'],
+            longdescs_who_idx     => [qw(who bug_id)],
             longdescs_bug_when_idx => ['bug_when'],
             longdescs_thetext_idx => {FIELDS => ['thetext'],
                                       TYPE => 'FULLTEXT'},
index 7887d9844ea177a3f120875ed44d3dcef7fe3c6f..ccbb5f8cdc1bb9679b1421ff1296adc78fd4dc2d 100644 (file)
@@ -218,12 +218,6 @@ sub update_table_definitions {
 
     _recrypt_plaintext_passwords();
 
-    # 2001-06-06 justdave@syndicomm.com:
-    # There was no index on the 'who' column in the long descriptions table.
-    # This caused queries by who posted comments to take a LONG time.
-    #   http://bugzilla.mozilla.org/show_bug.cgi?id=57350
-    $dbh->bz_add_index('longdescs', 'longdescs_who_idx', [qw(who)]);
-
     # 2001-06-15 kiko@async.com.br - Change bug:version size to avoid
     # truncates re http://bugzilla.mozilla.org/show_bug.cgi?id=9352
     $dbh->bz_alter_column('bugs', 'version',
@@ -489,6 +483,8 @@ sub update_table_definitions {
     $dbh->bz_alter_column('profiles', 'realname',
         {TYPE => 'varchar(255)', NOTNULL => 1, DEFAULT => "''"});
 
+    _update_longdescs_who_index();
+
     ################################################################
     # New --TABLE-- changes should go *** A B O V E *** this point #
     ################################################################
@@ -2695,6 +2691,19 @@ EOT
     }
 }
 
+sub _update_longdescs_who_index {
+    my $dbh = Bugzilla->dbh;
+    # When doing a search on who posted a comment, longdescs is joined
+    # against the bugs table. So we need an index on both of these,
+    # not just on "who".
+    my $who_index = $dbh->bz_index_info('longdescs', 'longdescs_who_idx');
+    if (!$who_index || scalar @{$who_index->{FIELDS}} == 1) {
+        # If the index doesn't exist, this will harmlessly do nothing.
+        $dbh->bz_drop_index('longdescs', 'longdescs_who_idx');
+        $dbh->bz_add_index('longdescs', 'longdescs_who_idx', [qw(who bug_id)]);
+    }
+}
+
 1;
 
 __END__