Commit f18c6f0b authored by mkanat%kerio.com's avatar mkanat%kerio.com

Bug 290411: Cross-DB bz_drop_table

Patch By Max Kanat-Alexander <mkanat@bugzilla.org> r=Tomas.Kopal, a=justdave
parent 8231d98d
...@@ -569,6 +569,21 @@ sub bz_drop_index_raw { ...@@ -569,6 +569,21 @@ sub bz_drop_index_raw {
$self->do($_) foreach (@statements); $self->do($_) foreach (@statements);
} }
sub bz_drop_table {
my ($self, $name) = @_;
my $table_exists = $self->bz_table_info($name);
if ($table_exists) {
my @statements = $self->_bz_schema->get_drop_table_ddl($name);
print "Dropping table $name...\n";
$self->do($_) foreach (@statements);
$self->_bz_real_schema->delete_table($name);
$self->_bz_store_real_schema;
}
}
# XXX - Needs to be made cross-db compatible # XXX - Needs to be made cross-db compatible
sub bz_drop_table_indexes ($) { sub bz_drop_table_indexes ($) {
my ($self, $table) = @_; my ($self, $table) = @_;
...@@ -1006,6 +1021,7 @@ Bugzilla::DB - Database access routines, using L<DBI> ...@@ -1006,6 +1021,7 @@ Bugzilla::DB - Database access routines, using L<DBI>
$dbh->bz_add_index($table, $name, $definition); $dbh->bz_add_index($table, $name, $definition);
$dbh->bz_add_table($name); $dbh->bz_add_table($name);
$dbh->bz_drop_index($table, $name); $dbh->bz_drop_index($table, $name);
$dbh->bz_drop_table($name);
$dbh->bz_alter_column($table, $name, \%new_def); $dbh->bz_alter_column($table, $name, \%new_def);
$dbh->bz_drop_column($table, $column); $dbh->bz_drop_column($table, $column);
$dbh->bz_rename_column($table, $old_name, $new_name); $dbh->bz_rename_column($table, $old_name, $new_name);
...@@ -1363,6 +1379,13 @@ C<Bugzilla::DB::Schema::ABSTRACT_SCHEMA>. ...@@ -1363,6 +1379,13 @@ C<Bugzilla::DB::Schema::ABSTRACT_SCHEMA>.
$name - The name of the index that you want to drop. $name - The name of the index that you want to drop.
Returns: nothing Returns: nothing
=item C<bz_drop_table($name)>
Description: Drops a table from the database. If the table
doesn't exist, we just return silently.
Params: $name - The name of the table to drop.
Returns: nothing
=item C<bz_alter_column($table, $name, \%new_def)> =item C<bz_alter_column($table, $name, \%new_def)>
Description: Changes the data type of a column in a table. Prints out Description: Changes the data type of a column in a table. Prints out
......
...@@ -1549,6 +1549,18 @@ sub get_drop_column_ddl { ...@@ -1549,6 +1549,18 @@ sub get_drop_column_ddl {
return ("ALTER TABLE $table DROP COLUMN $column"); return ("ALTER TABLE $table DROP COLUMN $column");
} }
=item C<get_drop_table_ddl($table)>
Description: Generate SQL to drop a table from the database.
Params: $table - The name of the table to drop.
Returns: An array of SQL statements.
=cut
sub get_drop_table_ddl {
my ($self, $table) = @_;
return ("DROP TABLE $table");
}
sub get_rename_column_ddl { sub get_rename_column_ddl {
=item C<get_rename_column_ddl($table, $old_name, $new_name)> =item C<get_rename_column_ddl($table, $old_name, $new_name)>
...@@ -1568,11 +1580,28 @@ sub get_rename_column_ddl { ...@@ -1568,11 +1580,28 @@ sub get_rename_column_ddl {
. " has not implemented a method."; . " has not implemented a method.";
} }
=item C<delete_table($name)>
Description: Deletes a table from this Schema object.
Dies if you try to delete a table that doesn't exist.
Params: $name - The name of the table to delete.
Returns: nothing
=cut
sub delete_table {
my ($self, $name) = @_;
die "Attempted to delete nonexistent table '$name'." unless
$self->get_table_abstract($name);
delete $self->{abstract_schema}->{$name};
delete $self->{schema}->{$name};
}
sub get_column_abstract { sub get_column_abstract {
=item C<get_column_abstract($table, $column)> =item C<get_column_abstract($table, $column)>
Description: A column definition from the abstract internal schema. Description: A column definition from the abstract internal schema.
cross-database format. cross-database format.
Params: $table - The name of the table Params: $table - The name of the table
......
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