From 6ecf665f1467f0667e1c3ed910ae028b5caf1262 Mon Sep 17 00:00:00 2001 From: "markbmc@gmail.com" Date: Fri, 28 Oct 2011 09:34:08 +0200 Subject: fix issue 128: "table rename failure with sqlalchemy 0.7.x" --- migrate/changeset/schema.py | 8 +------- migrate/tests/changeset/test_changeset.py | 10 +++++++++- 2 files changed, 10 insertions(+), 8 deletions(-) (limited to 'migrate') diff --git a/migrate/changeset/schema.py b/migrate/changeset/schema.py index f4377ba..c8ce23f 100644 --- a/migrate/changeset/schema.py +++ b/migrate/changeset/schema.py @@ -468,15 +468,9 @@ class ChangesetTable(object): self.deregister() self._set_parent(self.metadata) - def _meta_key(self): - return sqlalchemy.schema._get_table_key(self.name, self.schema) - def deregister(self): """Remove this table from its metadata""" - key = self._meta_key() - meta = self.metadata - if key in meta.tables: - del meta.tables[key] + self.metadata._remove_table(self.name, self.schema) class ChangesetColumn(object): diff --git a/migrate/tests/changeset/test_changeset.py b/migrate/tests/changeset/test_changeset.py index ffadcdb..d4dae7a 100644 --- a/migrate/tests/changeset/test_changeset.py +++ b/migrate/tests/changeset/test_changeset.py @@ -508,10 +508,18 @@ class TestRename(fixture.DB): # object is inconsistent self.index.name = expected # TODO: Index DB check - + + def add_table_to_meta(name): + # trigger the case where table_name2 needs to be + # removed from the metadata in ChangesetTable.deregister() + tmp = Table(name, self.meta, Column(c_name, Integer)) + tmp.create() + tmp.drop() + try: # Table renames assert_table_name(table_name1) + add_table_to_meta(table_name2) rename_table(self.table, table_name2) assert_table_name(table_name2) self.table.rename(table_name1) -- cgit v1.2.1