diff options
author | David Lawrence <dlawrence@mozilla.com> | 2011-09-02 21:50:06 +0200 |
---|---|---|
committer | David Lawrence <dlawrence@mozilla.com> | 2011-09-02 21:50:06 +0200 |
commit | d3144ccde7c1d3c432baaf43fe0b79a6c30eb7b0 (patch) | |
tree | 8f7fac4d4b98c80a090e74934a754443c127d846 /Bugzilla/DB.pm | |
parent | 9344a458c830ba066b9004c301d0fc6cabc8f229 (diff) | |
parent | bf9156ad5f0a57a467dd46292efb2f0a47ec845e (diff) | |
download | bugzilla-d3144ccde7c1d3c432baaf43fe0b79a6c30eb7b0.tar.gz bugzilla-d3144ccde7c1d3c432baaf43fe0b79a6c30eb7b0.tar.xz |
merged with bugzilla/4.2
Diffstat (limited to 'Bugzilla/DB.pm')
-rw-r--r-- | Bugzilla/DB.pm | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/Bugzilla/DB.pm b/Bugzilla/DB.pm index 8d1cf32a0..a537d6131 100644 --- a/Bugzilla/DB.pm +++ b/Bugzilla/DB.pm @@ -93,6 +93,12 @@ use constant FULLTEXT_OR => ''; use constant WORD_START => '(^|[^[:alnum:]])'; use constant WORD_END => '($|[^[:alnum:]])'; +# On most databases, in order to drop an index, you have to first drop +# the foreign keys that use that index. However, on some databases, +# dropping the FK immediately before dropping the index causes problems +# and doesn't need to be done anyway, so those DBs set this to 0. +use constant INDEX_DROPS_REQUIRE_FK_DROPS => 1; + ##################################################################### # Overridden Superclass Methods ##################################################################### @@ -947,9 +953,11 @@ 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); + if ($self->INDEX_DROPS_REQUIRE_FK_DROPS) { + # 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); |