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.deregister()
|
||||||
self._set_parent(self.metadata)
|
self._set_parent(self.metadata)
|
||||||
|
|
||||||
def _meta_key(self):
|
|
||||||
return sqlalchemy.schema._get_table_key(self.name, self.schema)
|
|
||||||
|
|
||||||
def deregister(self):
|
def deregister(self):
|
||||||
"""Remove this table from its metadata"""
|
"""Remove this table from its metadata"""
|
||||||
key = self._meta_key()
|
self.metadata._remove_table(self.name, self.schema)
|
||||||
meta = self.metadata
|
|
||||||
if key in meta.tables:
|
|
||||||
del meta.tables[key]
|
|
||||||
|
|
||||||
|
|
||||||
class ChangesetColumn(object):
|
class ChangesetColumn(object):
|
||||||
|
@ -509,9 +509,17 @@ class TestRename(fixture.DB):
|
|||||||
self.index.name = expected
|
self.index.name = expected
|
||||||
# TODO: Index DB check
|
# 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:
|
try:
|
||||||
# Table renames
|
# Table renames
|
||||||
assert_table_name(table_name1)
|
assert_table_name(table_name1)
|
||||||
|
add_table_to_meta(table_name2)
|
||||||
rename_table(self.table, table_name2)
|
rename_table(self.table, table_name2)
|
||||||
assert_table_name(table_name2)
|
assert_table_name(table_name2)
|
||||||
self.table.rename(table_name1)
|
self.table.rename(table_name1)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user