diff options
author | mkanat%bugzilla.org <> | 2007-03-09 15:30:20 +0100 |
---|---|---|
committer | mkanat%bugzilla.org <> | 2007-03-09 15:30:20 +0100 |
commit | 6e56a9271349f3935d070a08ad8f96788e0b79fd (patch) | |
tree | 9f2ebd8df5a6aee1450b0c10dc09f7d53c436c1d | |
parent | f26ceb85a7ee96d66523fe75c9ed94e48660beed (diff) | |
download | bugzilla-6e56a9271349f3935d070a08ad8f96788e0b79fd.tar.gz bugzilla-6e56a9271349f3935d070a08ad8f96788e0b79fd.tar.xz |
Bug 373286: Versions from 2.17.4 - 2.23.2 can no longer upgrade
Patch By Max Kanat-Alexander <mkanat@bugzilla.org> (module owner) a=mkanat
-rw-r--r-- | Bugzilla/DB/Mysql.pm | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/Bugzilla/DB/Mysql.pm b/Bugzilla/DB/Mysql.pm index dc8ad2ef2..2e8643fb0 100644 --- a/Bugzilla/DB/Mysql.pm +++ b/Bugzilla/DB/Mysql.pm @@ -282,6 +282,21 @@ sub bz_setup_database { print "\nISAM->MyISAM table conversion done.\n\n"; } + my $sd_index_deleted = 0; + my @tables = $self->bz_table_list_real(); + # We want to convert the bugs table to MyISAM, but it's possible that + # it has a fulltext index on it and this will fail unless we remove + # the index. + if (grep($_ eq 'bugs', @tables)) { + if ($self->bz_index_info_real('bugs', 'short_desc')) { + $self->bz_drop_index_raw('bugs', 'short_desc'); + } + if ($self->bz_index_info_real('bugs', 'bugs_short_desc_idx')) { + $self->bz_drop_index_raw('bugs', 'bugs_short_desc_idx'); + $sd_index_deleted = 1; # Used for later schema cleanup. + } + } + # Upgrade tables from MyISAM to InnoDB my @myisam_tables; foreach my $row (@$table_status) { @@ -307,7 +322,6 @@ sub bz_setup_database { # statements fail after a SHOW TABLE STATUS: # http://bugs.mysql.com/bug.php?id=13535 # This is a workaround, a dummy SELECT to reset the LAST_INSERT_ID. - my @tables = $self->bz_table_list_real(); if (grep($_ eq 'bugs', @tables) && $self->bz_column_info_real("bugs", "bug_id")) { @@ -487,6 +501,10 @@ sub bz_setup_database { # And now we create the tables and the Schema object. $self->SUPER::bz_setup_database(); + if ($sd_index_deleted) { + $self->_bz_real_schema->delete_index('bugs', 'bugs_short_desc_idx'); + $self->_bz_store_real_schema; + } # The old timestamp fields need to be adjusted here instead of in # checksetup. Otherwise the UPDATE statements inside of bz_add_column |