# metadata
removed = set()
for idx in list(conn_indexes):
+ if idx.unique:
+ continue
# MySQL puts implicit indexes on FK columns, even if
# composite and even if MyISAM, so can't check this too easily.
# the name of the index may be the column name or it may
# be the name of the FK constraint.
for col in idx.columns:
- if idx.unique:
- continue
if idx.name == col.name:
conn_indexes.remove(idx)
removed.add(idx.name)
==========
Changelog
==========
+.. changelog::
+ :version: 0.7.2
+
+ .. change::
+ :tags: bug, mysql
+ :tickets: 251
+ :pullreq: bitbucket:35
+
+ Fixed an issue where the MySQL routine to skip foreign-key-implicit
+ indexes would also catch unnamed unique indexes, as they would be
+ named after the column and look like the FK indexes. Pull request
+ courtesy Johannes Erdfelt.
+
.. changelog::
:version: 0.7.1
:released: December 3, 2014
else:
eq_(diffs, [])
+ def test_unique_flag_nothing_changed(self):
+ m1 = MetaData()
+ m2 = MetaData()
+
+ Table('unq_idx', m1,
+ Column('id', Integer, primary_key=True),
+ Column('x', String(20)),
+ Index('x', 'x', unique=True)
+ )
+
+ Table('unq_idx', m2,
+ Column('id', Integer, primary_key=True),
+ Column('x', String(20)),
+ Index('x', 'x', unique=True)
+ )
+
+ diffs = self._fixture(m1, m2)
+ eq_(diffs, [])
+
def test_index_becomes_unique(self):
m1 = MetaData()
m2 = MetaData()
else:
assert False, "unexpected success"
- def test_unique_index_foreign_key(self):
- m1 = MetaData()
- m2 = MetaData()
-
- Table('unq_idx', m1,
- Column('id', Integer, primary_key=True),
- Column('x', String(20)),
- Index('x', 'x', unique=True)
- )
-
- Table('unq_idx', m2,
- Column('id', Integer, primary_key=True),
- Column('x', String(20)),
- Index('x', 'x', unique=True)
- )
-
- diffs = self._fixture(m1, m2)
- eq_(diffs, [])
class NoUqReflectionIndexTest(NoUqReflection, AutogenerateUniqueIndexTest):