From: Mike Bayer Date: Wed, 30 Aug 2017 16:25:57 +0000 (-0400) Subject: Join key_constraints on schema as well for SQL server get_fks X-Git-Tag: origin~34^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=43447c4254f0d1a9778911bc2d6b794760d83fa7;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git Join key_constraints on schema as well for SQL server get_fks Fixed bug where the SQL Server dialect could pull columns from multiple schemas when reflecting a self-referential foreign key constraint, if multiple schemas contained a constraint of the same name against a table of the same name. Tests are part of standard suite already (CI has been disabled) Change-Id: I04ff4a5dea9b82c8e517b3700a28fe994b5550f3 Fixes: #4060 --- diff --git a/doc/build/changelog/unreleased_12/4060.rst b/doc/build/changelog/unreleased_12/4060.rst new file mode 100644 index 0000000000..f834430057 --- /dev/null +++ b/doc/build/changelog/unreleased_12/4060.rst @@ -0,0 +1,9 @@ +.. change:: + :tags: bug, mssql + :tickets: 4060 + + Fixed bug where the SQL Server dialect could pull columns from multiple + schemas when reflecting a self-referential foreign key constraint, if + multiple schemas contained a constraint of the same name against a + table of the same name. + diff --git a/lib/sqlalchemy/dialects/mssql/base.py b/lib/sqlalchemy/dialects/mssql/base.py index 05381d671e..08405e040b 100644 --- a/lib/sqlalchemy/dialects/mssql/base.py +++ b/lib/sqlalchemy/dialects/mssql/base.py @@ -2151,6 +2151,7 @@ class MSDialect(default.DefaultDialect): RR.c.delete_rule], sql.and_(C.c.table_name == tablename, C.c.table_schema == owner, + R.c.table_schema == C.c.table_schema, C.c.constraint_name == RR.c.constraint_name, R.c.constraint_name == RR.c.unique_constraint_name,