Commit 9162305e authored by mkanat%bugzilla.org's avatar mkanat%bugzilla.org

Bug 359234: missing indexes on the cc and profiles table cause upgrades to fail

Patch By Noel Cragg <noel@red-bean.com> r=mkanat, a=myk
parent 394a014b
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
# The Original Code is the Bugzilla Bug Tracking System. # The Original Code is the Bugzilla Bug Tracking System.
# #
# Contributor(s): Max Kanat-Alexander <mkanat@bugzilla.org> # Contributor(s): Max Kanat-Alexander <mkanat@bugzilla.org>
# Noel Cragg <noel@red-bean.com>
package Bugzilla::Install::DB; package Bugzilla::Install::DB;
...@@ -184,12 +185,16 @@ sub update_table_definitions { ...@@ -184,12 +185,16 @@ sub update_table_definitions {
# 2000-03-24 Added unique indexes into the cc and keyword tables. This # 2000-03-24 Added unique indexes into the cc and keyword tables. This
# prevents certain database inconsistencies, and, moreover, is required for # prevents certain database inconsistencies, and, moreover, is required for
# new generalized list code to work. # 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_drop_index('cc', 'cc_bug_id_idx');
$dbh->bz_add_index('cc', 'cc_bug_id_idx', $dbh->bz_add_index('cc', 'cc_bug_id_idx',
{TYPE => 'UNIQUE', FIELDS => [qw(bug_id who)]}); {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_drop_index('keywords', 'keywords_bug_id_idx');
$dbh->bz_add_index('keywords', 'keywords_bug_id_idx', $dbh->bz_add_index('keywords', 'keywords_bug_id_idx',
{TYPE => 'UNIQUE', FIELDS => [qw(bug_id keywordid)]}); {TYPE => 'UNIQUE', FIELDS => [qw(bug_id keywordid)]});
...@@ -752,8 +757,9 @@ sub _add_unique_login_name_index_to_profiles { ...@@ -752,8 +757,9 @@ sub _add_unique_login_name_index_to_profiles {
# declared to be unique. Sure enough, somehow, I got 22 duplicated entries # declared to be unique. Sure enough, somehow, I got 22 duplicated entries
# in my database. This code detects that, cleans up the duplicates, and # 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. # then tweaks the table to declare the field to be unique. What a pain.
if (!$dbh->bz_index_info('profiles', 'profiles_login_name_idx') || if (!$dbh->bz_index_info('profiles', 'profiles_login_name_idx')
!$dbh->bz_index_info('profiles', 'profiles_login_name_idx')->{TYPE}) { || !$dbh->bz_index_info('profiles', 'profiles_login_name_idx')->{TYPE})
{
print "Searching for duplicate entries in the profiles table...\n"; print "Searching for duplicate entries in the profiles table...\n";
while (1) { while (1) {
# This code is weird in that it loops around and keeps doing this # This code is weird in that it loops around and keeps doing this
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment