summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/sqlalchemy/orm/properties.py4
-rw-r--r--lib/sqlalchemy/sql/util.py8
2 files changed, 6 insertions, 6 deletions
diff --git a/lib/sqlalchemy/orm/properties.py b/lib/sqlalchemy/orm/properties.py
index 398cbe5d9..d0cca2dc1 100644
--- a/lib/sqlalchemy/orm/properties.py
+++ b/lib/sqlalchemy/orm/properties.py
@@ -839,8 +839,8 @@ class RelationProperty(StrategizedProperty):
if self._foreign_keys:
raise sa_exc.ArgumentError("Could not determine relation direction for "
"primaryjoin condition '%s', on relation %s. "
- "Are the columns in 'foreign_keys' present within the given "
- "join condition ?" % (self.primaryjoin, self))
+ "Do the columns in 'foreign_keys' represent only the 'foreign' columns "
+ "in this join condition ?" % (self.primaryjoin, self))
else:
raise sa_exc.ArgumentError("Could not determine relation direction for "
"primaryjoin condition '%s', on relation %s. "
diff --git a/lib/sqlalchemy/sql/util.py b/lib/sqlalchemy/sql/util.py
index 36357faf5..f1f329b5e 100644
--- a/lib/sqlalchemy/sql/util.py
+++ b/lib/sqlalchemy/sql/util.py
@@ -343,14 +343,14 @@ def criterion_as_pairs(expression, consider_as_foreign_keys=None, consider_as_re
return
if consider_as_foreign_keys:
- if binary.left in consider_as_foreign_keys:
+ if binary.left in consider_as_foreign_keys and (binary.right is binary.left or binary.right not in consider_as_foreign_keys):
pairs.append((binary.right, binary.left))
- elif binary.right in consider_as_foreign_keys:
+ elif binary.right in consider_as_foreign_keys and (binary.left is binary.right or binary.left not in consider_as_foreign_keys):
pairs.append((binary.left, binary.right))
elif consider_as_referenced_keys:
- if binary.left in consider_as_referenced_keys:
+ if binary.left in consider_as_referenced_keys and (binary.right is binary.left or binary.right not in consider_as_referenced_keys):
pairs.append((binary.left, binary.right))
- elif binary.right in consider_as_referenced_keys:
+ elif binary.right in consider_as_referenced_keys and (binary.left is binary.right or binary.left not in consider_as_referenced_keys):
pairs.append((binary.right, binary.left))
else:
if isinstance(binary.left, schema.Column) and isinstance(binary.right, schema.Column):