]> git.ipfire.org Git - thirdparty/sqlalchemy/alembic.git/commitdiff
- for newly added tables, run compare_indexes with None for conn_table
authorMike Bayer <mike_mp@zzzcomputing.com>
Mon, 7 Oct 2013 15:14:29 +0000 (11:14 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Mon, 7 Oct 2013 15:14:29 +0000 (11:14 -0400)
so that we get those table's indexes added as separate create index
steps.

alembic/autogenerate/compare.py
tests/test_autogenerate.py

index 17324d86f04d7f99f98462da323b1c3c9f03738f..074ab35fa7d19b1a1b7d5fc4b2f998529f4b9dcb 100644 (file)
@@ -24,6 +24,11 @@ def _compare_tables(conn_table_names, metadata_table_names,
         if _run_filters(metadata_table, tname, "table", False, None, object_filters):
             diffs.append(("add_table", metadata.tables[name]))
             log.info("Detected added table %r", name)
+            _compare_indexes(s, tname, object_filters,
+                    None,
+                    metadata_table,
+                    diffs, autogen_context, inspector,
+                    set())
 
     removal_metadata = sa_schema.MetaData()
     for s, tname in conn_table_names.difference(metadata_table_names):
index 6dcdba4552d0baf346bb223e7c1be8ec689df3d7..132003bc8508420f94e736346dd60efb023007f4 100644 (file)
@@ -807,6 +807,11 @@ class AutogenerateUniqueIndexTest(AutogenTest, TestCase):
             CheckConstraint('amount >= 0', name='ck_order_amount')
         )
 
+        Table('extra', m,
+                Column('foo', Integer, index=True),
+                Column('bar', Integer),
+                Index('newtable_idx', 'bar')
+            )
         return m
 
     @classmethod
@@ -856,22 +861,33 @@ class AutogenerateUniqueIndexTest(AutogenTest, TestCase):
                                           object_filters=_default_object_filters,
                                     )
 
-        eq_(diffs[0][0], "add_constraint")
-        eq_(diffs[0][1].table.name, "address")
+        eq_(diffs[0][0], "add_table")
+        eq_(diffs[0][1].name, "extra")
 
-        eq_(diffs[1][0], "remove_index")
-        eq_(diffs[1][1].name, "order_user_id_amount_idx")
-        eq_(diffs[1][1].unique, False)
+        eq_(diffs[1][0], "add_index")
+        eq_(diffs[1][1].name, "ix_extra_foo")  # sqlalchemy's naming scheme
 
         eq_(diffs[2][0], "add_index")
-        eq_(diffs[2][1].name, "order_user_id_amount_idx")
-        eq_(diffs[2][1].unique, True)
+        eq_(diffs[2][1].name, "newtable_idx")
 
         eq_(diffs[3][0], "add_constraint")
-        eq_(diffs[3][1].table.name, "user")
+        eq_(diffs[3][1].table.name, "address")
 
         eq_(diffs[4][0], "remove_index")
-        eq_(diffs[4][1].name, "ix_user_name")
+        eq_(diffs[4][1].name, "order_user_id_amount_idx")
+        eq_(diffs[4][1].unique, False)
+
+        eq_(diffs[5][0], "add_index")
+        eq_(diffs[5][1].name, "order_user_id_amount_idx")
+        eq_(diffs[5][1].unique, True)
+
+        eq_(diffs[6][0], "add_constraint")
+        eq_(diffs[6][1].table.name, "user")
+
+        eq_(diffs[7][0], "remove_index")
+        eq_(diffs[7][1].name, "ix_user_name")
+
+
 
 
 class AutogenerateCustomCompareTypeTest(AutogenTest, TestCase):