Commit e60d388f authored by Frédéric Buclin's avatar Frédéric Buclin

Bug 451735 part2: fix bz_drop_index() so that it first drops related FKs before…

Bug 451735 part2: fix bz_drop_index() so that it first drops related FKs before deleting the index itself r/a=mkanat
parent 73ea7588
......@@ -933,10 +933,16 @@ sub bz_drop_index {
my $index_exists = $self->bz_index_info($table, $name);
if ($index_exists) {
# We cannot delete an index used by a FK.
foreach my $column (@{$index_exists->{FIELDS}}) {
$self->bz_drop_related_fks($table, $column);
}
$self->bz_drop_index_raw($table, $name);
$self->_bz_real_schema->delete_index($table, $name);
$self->_bz_store_real_schema;
}
return $index_exists ? 1 : 0;
}
# bz_drop_index_raw($table, $name, $silent)
......
......@@ -765,6 +765,22 @@ sub bz_setup_database {
}
$self->_fix_defaults();
# Bug 451735 highlighted a bug in bz_drop_index() which didn't
# check for FKs before trying to delete an index. Consequently,
# the series_creator_idx index was considered to be deleted
# despite it was still present in the DB. That's why we have to
# force the deletion, bypassing the DB schema.
if (!$self->bz_index_info('series', 'series_category_idx')) {
if (!$self->bz_drop_index('series', 'series_creator_idx')
&& $self->bz_index_info_real('series', 'series_creator_idx'))
{
foreach my $column (qw(creator category subcategory name)) {
$self->bz_drop_related_fks('series', $column);
}
$self->bz_drop_index_raw('series', 'series_creator_idx');
}
}
}
# When you import a MySQL 3/4 mysqldump into MySQL 5, columns that
......
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