summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2017-08-30 12:25:57 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2017-08-30 12:25:57 -0400
commit43447c4254f0d1a9778911bc2d6b794760d83fa7 (patch)
treee8014920d07df22c2c038ca7a7976563ff6c010b
parent812c08efb41ff0a8bdafb876fe49079da5074916 (diff)
downloadsqlalchemy-43447c4254f0d1a9778911bc2d6b794760d83fa7.tar.gz
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
-rw-r--r--doc/build/changelog/unreleased_12/4060.rst9
-rw-r--r--lib/sqlalchemy/dialects/mssql/base.py1
2 files changed, 10 insertions, 0 deletions
diff --git a/doc/build/changelog/unreleased_12/4060.rst b/doc/build/changelog/unreleased_12/4060.rst
new file mode 100644
index 000000000..f83443005
--- /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 05381d671..08405e040 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,