diff options
| author | Gord Thompson <gord@gordthompson.com> | 2021-10-09 13:58:36 -0600 |
|---|---|---|
| committer | mike bayer <mike_mp@zzzcomputing.com> | 2021-10-14 22:38:18 +0000 |
| commit | fa247a04682a08a574d4f8356f62f474db1cdb57 (patch) | |
| tree | 948ed210733580162982b579cc1599e27e84f5d2 /test/dialect/mssql | |
| parent | fec2b6560c14bb28ee7fc9d21028844acf700b04 (diff) | |
| download | sqlalchemy-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.py | 53 |
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)) |
