X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=DBSchema.pm;h=b821d16ac2383f9a4f4d09d9c4eb9bad12f4b989;hb=e68fd260624a98ae998060abcd0a06e9070ad4a1;hp=12eda6d270e2d00d8c4d7093bd9a4cbe1f5ac055;hpb=d2de365ce67040de0511073417db40e5550d63be;p=DBIx-DBSchema.git diff --git a/DBSchema.pm b/DBSchema.pm index 12eda6d..b821d16 100644 --- a/DBSchema.pm +++ b/DBSchema.pm @@ -4,13 +4,13 @@ use strict; use vars qw($VERSION $DEBUG $errstr); use Storable; use DBIx::DBSchema::_util qw(_load_driver _dbh); -use DBIx::DBSchema::Table 0.04; +use DBIx::DBSchema::Table 0.05; use DBIx::DBSchema::Index; use DBIx::DBSchema::Column; use DBIx::DBSchema::ColGroup::Unique; use DBIx::DBSchema::ColGroup::Index; -$VERSION = "0.33_01"; +$VERSION = "0.34_01"; $VERSION = eval $VERSION; # modperlstyle: convert the string into a number $DEBUG = 0; @@ -289,10 +289,20 @@ sub sql_update_schema { } - # should eventually drop tables not in $new + # drop tables not in $new + foreach my $table ( $self->tables ) { + + if ( !$new->table($table) ) { + + warn "table $table should be dropped.\n" if $DEBUG; + + push @r, + $self->table($table)->sql_drop_table( $dbh ); + } + } warn join("\n", @r). "\n" - if $DEBUG; + if $DEBUG > 1; @r; @@ -500,13 +510,6 @@ or deal with deleted or modified columns yet. Need to port and test with additional databases -On schema updates, index changes are not as efficent as they could be, -especially with large data sets. Specifically, we don't currently recognize -existing indices with different/"wrong" names that we could use "ALTER INDEX -name RENAME TO new_name" on, and instead drop the "wrongly named" index and -re-build a new one. Since these are indices and not columns, its not a huge -deal, everything turns out right in the end, though inefficient. - Each DBIx::DBSchema object should have a name which corresponds to its name within the SQL database engine (DBI data source).