summaryrefslogtreecommitdiffstats
path: root/Bugzilla/DB.pm
diff options
context:
space:
mode:
authormkanat%kerio.com <>2005-03-18 12:28:51 +0100
committermkanat%kerio.com <>2005-03-18 12:28:51 +0100
commit675c4bb9d83bdf1916eb0bcb61a973c6f4b69a73 (patch)
tree60143f66c528547062f2082b0640beb4b0b0858b /Bugzilla/DB.pm
parent026808687250a3e1c2415c1967e1a48abeba217b (diff)
downloadbugzilla-675c4bb9d83bdf1916eb0bcb61a973c6f4b69a73.tar.gz
bugzilla-675c4bb9d83bdf1916eb0bcb61a973c6f4b69a73.tar.xz
Bug 285748: Cross-DB bz_alter_column (Part of Bug 285111)
Patch By Max Kanat-Alexander <mkanat@kerio.com> r=Tomas.Kopal, a=justdave
Diffstat (limited to 'Bugzilla/DB.pm')
-rw-r--r--Bugzilla/DB.pm21
1 files changed, 21 insertions, 0 deletions
diff --git a/Bugzilla/DB.pm b/Bugzilla/DB.pm
index 5256a5434..d84ce873d 100644
--- a/Bugzilla/DB.pm
+++ b/Bugzilla/DB.pm
@@ -357,6 +357,27 @@ sub bz_add_column {
}
}
+sub bz_alter_column {
+ my ($self, $table, $name, $new_def) = @_;
+
+ my $current_def = $self->bz_column_info($table, $name);
+
+ if (!$self->_bz_schema->columns_equal($current_def, $new_def)) {
+ my @statements = $self->_bz_real_schema->get_alter_column_ddl(
+ $table, $name, $new_def);
+ my $old_ddl = $self->_bz_schema->get_type_ddl($current_def);
+ my $new_ddl = $self->_bz_schema->get_type_ddl($new_def);
+ print "Updating column $name in table $table ...\n";
+ print "Old: $old_ddl\n";
+ print "New: $new_ddl\n";
+ foreach my $sql (@statements) {
+ $self->do($sql);
+ }
+ $self->_bz_real_schema->set_column($table, $name, $new_def);
+ $self->_bz_store_real_schema;
+ }
+}
+
# XXX - Need to make this cross-db compatible
# XXX - This shouldn't print stuff to stdout