]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 299230: Schema-Modification Functions Shouldn't Die on A DB-side Deletion Failure
authormkanat%kerio.com <>
Sat, 3 Sep 2005 06:32:47 +0000 (06:32 +0000)
committermkanat%kerio.com <>
Sat, 3 Sep 2005 06:32:47 +0000 (06:32 +0000)
Patch By Max Kanat-Alexander <mkanat@bugzilla.org> r=joel, a=justdave

Bugzilla/DB.pm

index 4f7b3b1f651e7f7b71a3e96c0bd085f3ecebb5cb..c5f38d17bcf3b743814653b66af041e238a33123 100644 (file)
@@ -512,7 +512,10 @@ sub bz_drop_column {
             $table, $column);
         print "Deleting unused column $column from table $table ...\n";
         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_store_real_schema;
@@ -552,7 +555,12 @@ sub bz_drop_index_raw {
     my @statements = $self->_bz_schema->get_drop_index_ddl(
         $table, $name);
     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 {
@@ -563,7 +571,12 @@ sub bz_drop_table {
     if ($table_exists) {
         my @statements = $self->_bz_schema->get_drop_table_ddl($name);
         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_store_real_schema;
     }