fix issue 128: "table rename failure with sqlalchemy 0.7.x"
This commit is contained in:
parent
b38c0fb2cc
commit
6ecf665f14
@ -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):
|
||||
|
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user