]> git.ipfire.org Git - thirdparty/sqlalchemy/alembic.git/commitdiff
- adjust test here so that it applies to all backends
authorMike Bayer <mike_mp@zzzcomputing.com>
Thu, 4 Dec 2014 18:36:40 +0000 (13:36 -0500)
committerMike Bayer <mike_mp@zzzcomputing.com>
Thu, 4 Dec 2014 18:36:40 +0000 (13:36 -0500)
- skip index at the level of the index, not the columns inside it
- changelog
- bump for 0.7.2

alembic/__init__.py
alembic/ddl/mysql.py
docs/build/changelog.rst
tests/test_autogen_indexes.py

index 13678f85c8bc74ca2a499fdf78d18ec0c68bd3a1..87e578963d2566530a4d303ea39e79a0c5500417 100644 (file)
@@ -1,6 +1,6 @@
 from os import path
 
-__version__ = '0.7.1'
+__version__ = '0.7.2'
 
 package_dir = path.abspath(path.dirname(__file__))
 
index cb9d6349db2c8edda52d18a0d98d2d6d7f7ca957..8be45435f309d9d3348f6fd9eb6e8a84df0b4d86 100644 (file)
@@ -97,13 +97,13 @@ class MySQLImpl(DefaultImpl):
         # 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)
index 9a3e0921a483d8847fbe98e2834c901beff99191..8fe521675d2f16640393d63068478c0058ff8319 100644 (file)
@@ -3,6 +3,19 @@
 ==========
 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
index e2d9b4eafc39daabeda0b15e7fa51c3a1dcd40eb..95d43afdef6d0c0ebc13bff14b42bf86d8923c8d 100644 (file)
@@ -91,6 +91,25 @@ class AutogenerateUniqueIndexTest(AutogenFixtureTest, TestBase):
         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()
@@ -586,24 +605,6 @@ class MySQLUniqueIndexTest(AutogenerateUniqueIndexTest):
         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):