summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/sql
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
parent993af53204a0e4378fbf65a0bbf9a617e34dede1 (diff)
downloadsqlalchemy-73f2b37fc98aeb7c5ec5b4b9e624352042018686.tar.gz
- remove OrderedSet usage from a critical area
Diffstat (limited to 'lib/sqlalchemy/sql')
-rw-r--r--lib/sqlalchemy/sql/expression.py11
-rw-r--r--lib/sqlalchemy/sql/util.py11
2 files changed, 8 insertions, 14 deletions
diff --git a/lib/sqlalchemy/sql/expression.py b/lib/sqlalchemy/sql/expression.py
index bc36e888c..9e4804349 100644
--- a/lib/sqlalchemy/sql/expression.py
+++ b/lib/sqlalchemy/sql/expression.py
@@ -2401,14 +2401,6 @@ class FromClause(Selectable):
self.primary_key = ColumnSet()
self.foreign_keys = set()
- def _export_columns(self):
- """Initialize column collections."""
-
- self._columns = ColumnCollection()
- self._primary_key = ColumnSet()
- self._foreign_keys = set()
- self._populate_column_collection()
-
def _populate_column_collection(self):
pass
@@ -3655,9 +3647,6 @@ class TableClause(_Immutable, FromClause):
def _init_collections(self):
pass
- def _export_columns(self):
- raise NotImplementedError()
-
@util.memoized_property
def description(self):
# Py3K
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(