summaryrefslogtreecommitdiff
path: root/migrate
diff options
context:
space:
mode:
authormarkbmc@gmail.com <unknown>2011-10-28 09:34:08 +0200
committermarkbmc@gmail.com <unknown>2011-10-28 09:34:08 +0200
commit6ecf665f1467f0667e1c3ed910ae028b5caf1262 (patch)
tree913c14b701b9bee189f98d572ced0184616056ed /migrate
parentb38c0fb2ccb508109b075c7a425acc21d5d2a941 (diff)
downloadsqalchemy-migrate-6ecf665f1467f0667e1c3ed910ae028b5caf1262.tar.gz
fix issue 128: "table rename failure with sqlalchemy 0.7.x"
Diffstat (limited to 'migrate')
-rw-r--r--migrate/changeset/schema.py8
-rw-r--r--migrate/tests/changeset/test_changeset.py10
2 files changed, 10 insertions, 8 deletions
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)