From 6e025c4a4d0f8ad558c3ed66b45a1f0087b860d1 Mon Sep 17 00:00:00 2001 From: iElectric Date: Tue, 11 May 2010 22:52:07 +0200 Subject: add firebird to test_db.cfg.tmpl; fix bug when dropping a column in firebird: also drop related constraint or index --- migrate/changeset/databases/firebird.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'migrate/changeset/databases') 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() -- cgit v1.2.1