summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/sql/util.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2009-05-08 01:41:51 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2009-05-08 01:41:51 +0000
commitf19d4dc8158680f3aa56f13d1ea8ea9b080563fc (patch)
tree362956e6ab850f2457a7662d1bc616a02a847dc5 /lib/sqlalchemy/sql/util.py
parentd8c9dcc0ad108d7f85cfa41181e5a959783fdd65 (diff)
downloadsqlalchemy-f19d4dc8158680f3aa56f13d1ea8ea9b080563fc.tar.gz
- It is now an error to specify both columns of a binary primaryjoin
condition in the foreign_keys or remote_side collection. Whereas previously it was just nonsensical, but would succeed in a non-deterministic way.
Diffstat (limited to 'lib/sqlalchemy/sql/util.py')
-rw-r--r--lib/sqlalchemy/sql/util.py8
1 files changed, 4 insertions, 4 deletions
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):