summaryrefslogtreecommitdiff
path: root/test/dialect/mysql/test_reflection.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/dialect/mysql/test_reflection.py')
-rw-r--r--test/dialect/mysql/test_reflection.py39
1 files changed, 20 insertions, 19 deletions
diff --git a/test/dialect/mysql/test_reflection.py b/test/dialect/mysql/test_reflection.py
index b8f72b942..99733e397 100644
--- a/test/dialect/mysql/test_reflection.py
+++ b/test/dialect/mysql/test_reflection.py
@@ -283,36 +283,37 @@ class ReflectionTest(fixtures.TestBase, AssertsExecutionResults):
view_names = dialect.get_view_names(connection, "information_schema")
self.assert_('TABLES' in view_names)
+ @testing.provide_metadata
def test_reflection_with_unique_constraint(self):
insp = inspect(testing.db)
- uc_table = Table('mysql_uc', MetaData(testing.db),
+ meta = self.metadata
+ uc_table = Table('mysql_uc', meta,
Column('a', String(10)),
UniqueConstraint('a', name='uc_a'))
- try:
- uc_table.create()
+ uc_table.create()
- # MySQL converts unique constraints into unique indexes and
- # the 0.9 API returns it as both an index and a constraint
- indexes = set(i['name'] for i in insp.get_indexes('mysql_uc'))
- constraints = set(i['name']
- for i in insp.get_unique_constraints('mysql_uc'))
+ # MySQL converts unique constraints into unique indexes.
+ # separately we get both
+ indexes = dict((i['name'], i) for i in insp.get_indexes('mysql_uc'))
+ constraints = set(i['name']
+ for i in insp.get_unique_constraints('mysql_uc'))
- self.assert_('uc_a' in indexes)
- self.assert_('uc_a' in constraints)
+ self.assert_('uc_a' in indexes)
+ self.assert_(indexes['uc_a']['unique'])
+ self.assert_('uc_a' in constraints)
- # However, upon creating a Table object via reflection, it should
- # only appear as a unique index and not a constraint
- reflected = Table('mysql_uc', MetaData(testing.db), autoload=True)
+ # reflection here favors the unique index, as that's the
+ # more "official" MySQL construct
+ reflected = Table('mysql_uc', MetaData(testing.db), autoload=True)
- indexes = set(i.name for i in reflected.indexes)
- constraints = set(uc.name for uc in reflected.constraints)
+ indexes = dict((i.name, i) for i in reflected.indexes)
+ constraints = set(uc.name for uc in reflected.constraints)
- self.assert_('uc_a' in indexes)
- self.assert_('uc_a' not in constraints)
- finally:
- uc_table.drop()
+ self.assert_('uc_a' in indexes)
+ self.assert_(indexes['uc_a'].unique)
+ self.assert_('uc_a' not in constraints)
class RawReflectionTest(fixtures.TestBase):