]> git.ipfire.org Git - thirdparty/sqlalchemy/alembic.git/commitdiff
Autogenerate index and unique's comparison takes schema into account
authorDimitris Theodorou <dimitris.theodorou@gmail.com>
Sun, 19 Jan 2014 14:49:14 +0000 (15:49 +0100)
committerDimitris Theodorou <dimitris.theodorou@gmail.com>
Sun, 19 Jan 2014 14:49:14 +0000 (15:49 +0100)
The inspector now will recover the indexes and unique constraints of
the table in the correct schema. Previously it was not taking schema
into account, resulting in always re-creating the existing uniques
and indexes.

alembic/autogenerate/compare.py

index cf313bb56e547fd000e94763a4cff171fc52ddd1..95257d118b5bb2a2316a4c7991909c2274a2240c 100644 (file)
@@ -193,19 +193,20 @@ def _compare_indexes_and_uniques(schema, tname, object_filters, conn_table,
     metadata_indexes = set(metadata_table.indexes)
 
     # 1b. ... and from connection
+    conn_uniques = []
     if conn_table is not None and hasattr(inspector, "get_unique_constraints"):
         try:
-            conn_uniques = inspector.get_unique_constraints(tname)
+            conn_uniques = inspector.get_unique_constraints(tname,
+                                                            schema=schema)
         except (NotImplementedError, NoSuchTableError):
-            conn_uniques = []
-    else:
-        conn_uniques = []
-
+            pass
 
-    try:
-        conn_indexes = inspector.get_indexes(tname)
-    except NoSuchTableError:
-        conn_indexes = []
+    conn_indexes = []
+    if conn_table is not None:
+        try:
+            conn_indexes = inspector.get_indexes(tname, schema=schema)
+        except NoSuchTableError:
+            pass
 
     # 2. convert conn-level objects from raw inspector records
     # into schema objects