summaryrefslogtreecommitdiffstats
path: root/Bugzilla/DB.pm
diff options
context:
space:
mode:
authormkanat%bugzilla.org <>2009-08-06 16:53:46 +0200
committermkanat%bugzilla.org <>2009-08-06 16:53:46 +0200
commit5539de9f747ef48c0ef2bd416d5008bb7a341cfa (patch)
tree5ade6b48be008e2db1037e7031ff89d5e92c7972 /Bugzilla/DB.pm
parent8dc4b874a314a9ff4b32d3223fe481ef32a6a475 (diff)
downloadbugzilla-5539de9f747ef48c0ef2bd416d5008bb7a341cfa.tar.gz
bugzilla-5539de9f747ef48c0ef2bd416d5008bb7a341cfa.tar.xz
Bug 508181: UTF-8 table conversion was failing when there were FKs on the column or on related columns
Patch by Max Kanat-Alexander <mkanat@bugzilla.org> r=LpSolit, a=mkanat
Diffstat (limited to 'Bugzilla/DB.pm')
-rw-r--r--Bugzilla/DB.pm22
1 files changed, 22 insertions, 0 deletions
diff --git a/Bugzilla/DB.pm b/Bugzilla/DB.pm
index 4bf064375..9ede5bd80 100644
--- a/Bugzilla/DB.pm
+++ b/Bugzilla/DB.pm
@@ -747,6 +747,28 @@ sub bz_drop_fk {
}
+sub bz_drop_related_fks {
+ my ($self, $table, $column) = @_;
+ my @tables = $self->_bz_real_schema->get_table_list();
+ my @dropped;
+ foreach my $check_table (@tables) {
+ my @columns = $self->bz_table_columns($check_table);
+ foreach my $check_column (@columns) {
+ my $def = $self->bz_column_info($check_table, $check_column);
+ my $fk = $def->{REFERENCES};
+ if ($fk
+ and (($fk->{TABLE} eq $table and $fk->{COLUMN} eq $column)
+ or ($check_column eq $column and $check_table eq $table)))
+ {
+ $self->bz_drop_fk($check_table, $check_column);
+ push(@dropped, [$check_table, $check_column, $fk]);
+ }
+ } # foreach $column
+ } # foreach $table
+
+ return \@dropped;
+}
+
sub bz_drop_index {
my ($self, $table, $name) = @_;