Commit 25ede8ea authored by mkanat%kerio.com's avatar mkanat%kerio.com

Bug 299230: Schema-Modification Functions Shouldn't Die on A DB-side Deletion Failure

Patch By Max Kanat-Alexander <mkanat@bugzilla.org> r=joel, a=justdave
parent c3d52c4b
...@@ -513,7 +513,10 @@ sub bz_drop_column { ...@@ -513,7 +513,10 @@ sub bz_drop_column {
$table, $column); $table, $column);
print "Deleting unused column $column from table $table ...\n"; print "Deleting unused column $column from table $table ...\n";
foreach my $sql (@statements) { foreach my $sql (@statements) {
$self->do($sql); # Because this is a deletion, we don't want to die hard if
# we fail because of some local customization. If something
# is already gone, that's fine with us!
eval { $self->do($sql); } or warn "Failed SQL: [$sql] Error: $@";
} }
$self->_bz_real_schema->delete_column($table, $column); $self->_bz_real_schema->delete_column($table, $column);
$self->_bz_store_real_schema; $self->_bz_store_real_schema;
...@@ -553,7 +556,12 @@ sub bz_drop_index_raw { ...@@ -553,7 +556,12 @@ sub bz_drop_index_raw {
my @statements = $self->_bz_schema->get_drop_index_ddl( my @statements = $self->_bz_schema->get_drop_index_ddl(
$table, $name); $table, $name);
print "Removing index '$name' from the $table table...\n" unless $silent; print "Removing index '$name' from the $table table...\n" unless $silent;
$self->do($_) foreach (@statements); foreach my $sql (@statements) {
# Because this is a deletion, we don't want to die hard if
# we fail because of some local customization. If something
# is already gone, that's fine with us!
eval { $self->do($sql) } or warn "Failed SQL: [$sql] Error: $@";
}
} }
sub bz_drop_table { sub bz_drop_table {
...@@ -564,7 +572,12 @@ sub bz_drop_table { ...@@ -564,7 +572,12 @@ sub bz_drop_table {
if ($table_exists) { if ($table_exists) {
my @statements = $self->_bz_schema->get_drop_table_ddl($name); my @statements = $self->_bz_schema->get_drop_table_ddl($name);
print "Dropping table $name...\n"; print "Dropping table $name...\n";
$self->do($_) foreach (@statements); foreach my $sql (@statements) {
# Because this is a deletion, we don't want to die hard if
# we fail because of some local customization. If something
# is already gone, that's fine with us!
eval { $self->do($sql); } or warn "Failed SQL: [$sql] Error: $@";
}
$self->_bz_real_schema->delete_table($name); $self->_bz_real_schema->delete_table($name);
$self->_bz_store_real_schema; $self->_bz_store_real_schema;
} }
......
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