summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/sql/util.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2010-12-22 19:07:04 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2010-12-22 19:07:04 -0500
commit73f2b37fc98aeb7c5ec5b4b9e624352042018686 (patch)
tree7a1813eca263e74159d47c0542f9835fab4f693e /lib/sqlalchemy/sql/util.py
parent993af53204a0e4378fbf65a0bbf9a617e34dede1 (diff)
downloadsqlalchemy-73f2b37fc98aeb7c5ec5b4b9e624352042018686.tar.gz
- remove OrderedSet usage from a critical area
Diffstat (limited to 'lib/sqlalchemy/sql/util.py')
-rw-r--r--lib/sqlalchemy/sql/util.py11
1 files changed, 8 insertions, 3 deletions
diff --git a/lib/sqlalchemy/sql/util.py b/lib/sqlalchemy/sql/util.py
index 757de37c4..997fedade 100644
--- a/lib/sqlalchemy/sql/util.py
+++ b/lib/sqlalchemy/sql/util.py
@@ -217,7 +217,9 @@ def join_condition(a, b, ignore_nonexistent_tables=False, a_subset=None):
for left in (a_subset, a):
if left is None:
continue
- for fk in b.foreign_keys:
+ for fk in sorted(
+ b.foreign_keys,
+ key=lambda fk:fk.parent._creation_order):
try:
col = fk.get_referent(left)
except exc.NoReferencedTableError:
@@ -230,7 +232,9 @@ def join_condition(a, b, ignore_nonexistent_tables=False, a_subset=None):
crit.append(col == fk.parent)
constraints.add(fk.constraint)
if left is not b:
- for fk in left.foreign_keys:
+ for fk in sorted(
+ left.foreign_keys,
+ key=lambda fk:fk.parent._creation_order):
try:
col = fk.get_referent(b)
except exc.NoReferencedTableError:
@@ -247,7 +251,8 @@ def join_condition(a, b, ignore_nonexistent_tables=False, a_subset=None):
if len(crit) == 0:
if isinstance(b, expression._FromGrouping):
- hint = " Perhaps you meant to convert the right side to a subquery using alias()?"
+ hint = " Perhaps you meant to convert the right side to a "\
+ "subquery using alias()?"
else:
hint = ""
raise exc.ArgumentError(