]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 715870: [Oracle] Related sequences and triggers must be removed when dropping...
authorFrédéric Buclin <LpSolit@gmail.com>
Tue, 24 Jan 2012 17:41:55 +0000 (18:41 +0100)
committerFrédéric Buclin <LpSolit@gmail.com>
Tue, 24 Jan 2012 17:41:55 +0000 (18:41 +0100)
r=mkanat a=LpSolit

Bugzilla/DB/Schema/Oracle.pm

index cdc39409d8c9b8bb3a392c5fa5c6e34fa7c2b11c..f2d5b8be02cc6c08823faa8b3cc178ad4e4c64ad 100644 (file)
@@ -386,13 +386,31 @@ sub get_rename_table_sql {
         }
         if ($def->{TYPE} =~ /varchar|text/i && $def->{NOTNULL}) {
             push(@sql, _get_notnull_trigger_ddl($new_name, $column));
-            push(@sql, "DROP TRIGGER ${$old_name}_${column}");
+            push(@sql, "DROP TRIGGER ${old_name}_${column}");
         }
     }
 
     return @sql;
 }
 
+sub get_drop_table_ddl {
+    my ($self, $name) = @_;
+    my @sql;
+
+    my @columns = $self->get_table_columns($name);
+    foreach my $column (@columns) {
+        my $def = $self->get_column_abstract($name, $column);
+        if ($def->{TYPE} =~ /SERIAL/i) {
+            # If there's a SERIAL column on this table, we also need
+            # to remove the sequence.
+            push(@sql, "DROP SEQUENCE ${name}_${column}_SEQ");
+        }
+    }
+    push(@sql, "DROP TABLE $name CASCADE CONSTRAINTS PURGE");
+
+    return @sql;
+}
+
 sub _get_notnull_trigger_ddl {
       my ($table, $column) = @_;