diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-12-22 19:07:04 -0500 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-12-22 19:07:04 -0500 |
commit | 73f2b37fc98aeb7c5ec5b4b9e624352042018686 (patch) | |
tree | 7a1813eca263e74159d47c0542f9835fab4f693e /lib/sqlalchemy/sql/util.py | |
parent | 993af53204a0e4378fbf65a0bbf9a617e34dede1 (diff) | |
download | sqlalchemy-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.py | 11 |
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( |