From: Mike Bayer Date: Mon, 7 Oct 2013 15:14:29 +0000 (-0400) Subject: - for newly added tables, run compare_indexes with None for conn_table X-Git-Tag: rel_0_6_1~22 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c4e43711c00c87bfc6f0edbc26ab7182a7ccd180;p=thirdparty%2Fsqlalchemy%2Falembic.git - for newly added tables, run compare_indexes with None for conn_table so that we get those table's indexes added as separate create index steps. --- diff --git a/alembic/autogenerate/compare.py b/alembic/autogenerate/compare.py index 17324d86..074ab35f 100644 --- a/alembic/autogenerate/compare.py +++ b/alembic/autogenerate/compare.py @@ -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): diff --git a/tests/test_autogenerate.py b/tests/test_autogenerate.py index 6dcdba45..132003bc 100644 --- a/tests/test_autogenerate.py +++ b/tests/test_autogenerate.py @@ -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):