summaryrefslogtreecommitdiffstats
path: root/Bugzilla/DB.pm
diff options
context:
space:
mode:
authormkanat%bugzilla.org <>2007-12-13 10:14:32 +0100
committermkanat%bugzilla.org <>2007-12-13 10:14:32 +0100
commita4b66874db35b0ad64257b202dc48d43924eb14e (patch)
treeb8bc2ff96e223c326810d5d9c032286d61e2b1da /Bugzilla/DB.pm
parent5c779ad57796cf6c1f88efe2f3b88b1b96144004 (diff)
downloadbugzilla-a4b66874db35b0ad64257b202dc48d43924eb14e.tar.gz
bugzilla-a4b66874db35b0ad64257b202dc48d43924eb14e.tar.xz
Bug 408032: [Oracle] Make bzdbcopy.pl work with Oracle
Patch By Max Kanat-Alexander <mkanat@bugzilla.org> (module owner) a=mkanat
Diffstat (limited to 'Bugzilla/DB.pm')
-rw-r--r--Bugzilla/DB.pm31
1 files changed, 31 insertions, 0 deletions
diff --git a/Bugzilla/DB.pm b/Bugzilla/DB.pm
index 49692eec0..f97273e1a 100644
--- a/Bugzilla/DB.pm
+++ b/Bugzilla/DB.pm
@@ -504,6 +504,19 @@ sub bz_setup_foreign_keys {
}
}
+# This is used by contrib/bzdbcopy.pl, mostly.
+sub bz_drop_foreign_keys {
+ my ($self) = @_;
+
+ my @tables = $self->_bz_real_schema->get_table_list();
+ foreach my $table (@tables) {
+ my @columns = $self->_bz_real_schema->get_table_columns($table);
+ foreach my $column (@columns) {
+ $self->bz_drop_fk($table, $column);
+ }
+ }
+}
+
#####################################################################
# Schema Modification Methods
#####################################################################
@@ -749,6 +762,24 @@ sub bz_drop_column {
}
}
+sub bz_drop_fk {
+ my ($self, $table, $column) = @_;
+
+ my $col_def = $self->bz_column_info($table, $column);
+ if ($col_def && exists $col_def->{REFERENCES}) {
+ my $def = $col_def->{REFERENCES};
+ print get_text('install_fk_drop',
+ { table => $table, column => $column, fk => $def })
+ . "\n" if Bugzilla->usage_mode == USAGE_MODE_CMDLINE;
+ my @sql = $self->_bz_real_schema->get_drop_fk_sql($table,$column,$def);
+ $self->do($_) foreach @sql;
+ delete $col_def->{REFERENCES};
+ $self->_bz_real_schema->set_column($table, $column, $col_def);
+ $self->_bz_store_real_schema;
+ }
+
+}
+
sub bz_drop_index {
my ($self, $table, $name) = @_;