diff options
author | iElectric <unknown> | 2010-05-11 22:52:07 +0200 |
---|---|---|
committer | iElectric <unknown> | 2010-05-11 22:52:07 +0200 |
commit | 6e025c4a4d0f8ad558c3ed66b45a1f0087b860d1 (patch) | |
tree | adb6cc83a847b2409f8efe4cd3dac9e28521d2df /migrate/changeset/databases | |
parent | ec75b93b07a1afe952c50faae67b3be3c07bf0a7 (diff) | |
download | sqlalchemy-migrate-6e025c4a4d0f8ad558c3ed66b45a1f0087b860d1.tar.gz |
add firebird to test_db.cfg.tmpl; fix bug when dropping a column in firebird: also drop related constraint or index
Diffstat (limited to 'migrate/changeset/databases')
-rw-r--r-- | migrate/changeset/databases/firebird.py | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/migrate/changeset/databases/firebird.py b/migrate/changeset/databases/firebird.py index a8831bf..297fe6c 100644 --- a/migrate/changeset/databases/firebird.py +++ b/migrate/changeset/databases/firebird.py @@ -18,6 +18,19 @@ class FBColumnDropper(ansisql.ANSIColumnDropper): """Firebird column dropper implementation.""" def visit_column(self, column): + """Firebird supports 'DROP col' instead of 'DROP COLUMN col' syntax + + Drop primary key and unique constraints if dropped column is referencing it.""" + if column.primary_key: + if column.table.primary_key.columns.contains_column(column): + column.table.primary_key.drop() + # TODO: recreate primary key if it references more than this column + if column.unique or getattr(column, 'unique_name', None): + for cons in column.table.constraints: + if cons.contains_column(column): + cons.drop() + # TODO: recreate unique constraint if it refenrences more than this column + table = self.start_alter_table(column) self.append('DROP %s' % self.preparer.format_column(column)) self.execute() |