summaryrefslogtreecommitdiff
path: root/migrate/changeset/databases
diff options
context:
space:
mode:
authoriElectric <unknown>2010-05-11 22:52:07 +0200
committeriElectric <unknown>2010-05-11 22:52:07 +0200
commit6e025c4a4d0f8ad558c3ed66b45a1f0087b860d1 (patch)
treeadb6cc83a847b2409f8efe4cd3dac9e28521d2df /migrate/changeset/databases
parentec75b93b07a1afe952c50faae67b3be3c07bf0a7 (diff)
downloadsqlalchemy-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.py13
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()