summaryrefslogtreecommitdiff
path: root/test/dialect/mssql
diff options
context:
space:
mode:
authorGord Thompson <gord@gordthompson.com>2021-10-09 13:58:36 -0600
committermike bayer <mike_mp@zzzcomputing.com>2021-10-14 22:38:18 +0000
commitfa247a04682a08a574d4f8356f62f474db1cdb57 (patch)
tree948ed210733580162982b579cc1599e27e84f5d2 /test/dialect/mssql
parentfec2b6560c14bb28ee7fc9d21028844acf700b04 (diff)
downloadsqlalchemy-fa247a04682a08a574d4f8356f62f474db1cdb57.tar.gz
Fix reflection of FK against a unique index
Also implement reflection of ON DELETE, ON UPDATE as the data is right there. Fixes: #7160 Change-Id: Ifff871a8cb1d1bea235616042e16ed3b5c5f19f9
Diffstat (limited to 'test/dialect/mssql')
-rw-r--r--test/dialect/mssql/test_reflection.py53
1 files changed, 53 insertions, 0 deletions
diff --git a/test/dialect/mssql/test_reflection.py b/test/dialect/mssql/test_reflection.py
index 12bb46d91..1fa301e28 100644
--- a/test/dialect/mssql/test_reflection.py
+++ b/test/dialect/mssql/test_reflection.py
@@ -7,6 +7,7 @@ from sqlalchemy import DDL
from sqlalchemy import event
from sqlalchemy import exc
from sqlalchemy import ForeignKey
+from sqlalchemy import ForeignKeyConstraint
from sqlalchemy import Identity
from sqlalchemy import Index
from sqlalchemy import inspect
@@ -217,6 +218,7 @@ class ReflectionTest(fixtures.TestBase, ComparesTables, AssertsCompiledSQL):
"referred_schema": "test_schema",
"referred_table": "subject",
"referred_columns": ["id"],
+ "options": {},
}
],
)
@@ -384,6 +386,7 @@ class ReflectionTest(fixtures.TestBase, ComparesTables, AssertsCompiledSQL):
"referred_schema": referred_schema,
"name": "fkfoo",
"constrained_columns": ["foo_id"],
+ "options": {},
}
],
)
@@ -399,6 +402,56 @@ class ReflectionTest(fixtures.TestBase, ComparesTables, AssertsCompiledSQL):
)
eq_(m2.tables["%s.foo" % referred_schema].schema, referred_schema)
+ def test_fk_on_unique_index(self, metadata, connection):
+ # test for issue #7160
+ Table(
+ "uidx_parent",
+ metadata,
+ Column("id", Integer, primary_key=True),
+ Column("uidx_col1", Integer, nullable=False),
+ Column("uidx_col2", Integer, nullable=False),
+ Index(
+ "UIDX_composite",
+ "uidx_col1",
+ "uidx_col2",
+ unique=True,
+ ),
+ )
+
+ Table(
+ "uidx_child",
+ metadata,
+ Column("id", Integer, primary_key=True),
+ Column("parent_uidx_col1", Integer, nullable=False),
+ Column("parent_uidx_col2", Integer, nullable=False),
+ ForeignKeyConstraint(
+ ["parent_uidx_col1", "parent_uidx_col2"],
+ ["uidx_parent.uidx_col1", "uidx_parent.uidx_col2"],
+ name="FK_uidx_parent",
+ ),
+ )
+
+ metadata.create_all(connection)
+
+ inspector = inspect(connection)
+ fk_info = inspector.get_foreign_keys("uidx_child")
+ eq_(
+ fk_info,
+ [
+ {
+ "referred_table": "uidx_parent",
+ "referred_columns": ["uidx_col1", "uidx_col2"],
+ "referred_schema": None,
+ "name": "FK_uidx_parent",
+ "constrained_columns": [
+ "parent_uidx_col1",
+ "parent_uidx_col2",
+ ],
+ "options": {},
+ }
+ ],
+ )
+
def test_indexes_cols(self, metadata, connection):
t1 = Table("t", metadata, Column("x", Integer), Column("y", Integer))