summaryrefslogtreecommitdiff
path: root/migrate/tests/changeset/test_changeset.py
diff options
context:
space:
mode:
Diffstat (limited to 'migrate/tests/changeset/test_changeset.py')
-rw-r--r--migrate/tests/changeset/test_changeset.py35
1 files changed, 34 insertions, 1 deletions
diff --git a/migrate/tests/changeset/test_changeset.py b/migrate/tests/changeset/test_changeset.py
index 3989ea3..bd7f034 100644
--- a/migrate/tests/changeset/test_changeset.py
+++ b/migrate/tests/changeset/test_changeset.py
@@ -18,6 +18,7 @@ class TestAddDropColumn(fixture.DB):
"""
level = fixture.DB.CONNECT
table_name = 'tmp_adddropcol'
+ table_name_idx = 'tmp_adddropcol_idx'
table_int = 0
def _setup(self, url):
@@ -26,14 +27,27 @@ class TestAddDropColumn(fixture.DB):
self.table = Table(self.table_name, self.meta,
Column('id', Integer, unique=True),
)
+ self.table_idx = Table(
+ self.table_name_idx,
+ self.meta,
+ Column('id', Integer, primary_key=True),
+ Column('a', Integer),
+ Column('b', Integer),
+ Index('test_idx', 'a', 'b')
+ )
self.meta.bind = self.engine
if self.engine.has_table(self.table.name):
self.table.drop()
+ if self.engine.has_table(self.table_idx.name):
+ self.table_idx.drop()
self.table.create()
+ self.table_idx.create()
def _teardown(self):
if self.engine.has_table(self.table.name):
self.table.drop()
+ if self.engine.has_table(self.table_idx.name):
+ self.table_idx.drop()
self.meta.clear()
super(TestAddDropColumn,self)._teardown()
@@ -257,7 +271,26 @@ class TestAddDropColumn(fixture.DB):
col.drop(self.table)
-# TODO: remove already attached columns with indexes, uniques, pks, fks ..
+# TODO: remove already attached columns with uniques, pks, fks ..
+ @fixture.usedb(not_supported='postgresql')
+ def test_drop_column_of_composite_index(self):
+ # NOTE(rpodolyaka): postgresql automatically drops a composite index
+ # if one of its columns is dropped
+ self.table_idx.c.b.drop()
+
+ reflected = Table(self.table_idx.name, MetaData(), autoload=True,
+ autoload_with=self.engine)
+ index = next(iter(reflected.indexes))
+ self.assertEquals(['a'], [c.name for c in index.columns])
+
+ @fixture.usedb()
+ def test_drop_all_columns_of_composite_index(self):
+ self.table_idx.c.a.drop()
+ self.table_idx.c.b.drop()
+
+ reflected = Table(self.table_idx.name, MetaData(), autoload=True,
+ autoload_with=self.engine)
+ self.assertEquals(0, len(reflected.indexes))
def _check_index(self,expected):
if 'mysql' in self.engine.name or 'postgres' in self.engine.name: