summaryrefslogtreecommitdiffstats
path: root/Bugzilla
diff options
context:
space:
mode:
Diffstat (limited to 'Bugzilla')
-rw-r--r--Bugzilla/DB/Schema.pm2
-rw-r--r--Bugzilla/Install/DB.pm21
2 files changed, 16 insertions, 7 deletions
diff --git a/Bugzilla/DB/Schema.pm b/Bugzilla/DB/Schema.pm
index fb5fb9ce8..b4a9005f7 100644
--- a/Bugzilla/DB/Schema.pm
+++ b/Bugzilla/DB/Schema.pm
@@ -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'},
diff --git a/Bugzilla/Install/DB.pm b/Bugzilla/Install/DB.pm
index 7887d9844..ccbb5f8cd 100644
--- a/Bugzilla/Install/DB.pm
+++ b/Bugzilla/Install/DB.pm
@@ -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__