summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/orm/query.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2010-03-24 12:15:42 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2010-03-24 12:15:42 -0400
commit4cf01115f669e44d77d46381f16ea5bf57197a1b (patch)
tree3f2da9d8240040c9ef50eb5f22574017ddd485e1 /lib/sqlalchemy/orm/query.py
parent928354dca101e57fcb1c7440a4c2eef45594c5b8 (diff)
downloadsqlalchemy-4cf01115f669e44d77d46381f16ea5bf57197a1b.tar.gz
- Query.join() will detect if the end result will be
"FROM A JOIN A", and will raise an error if so.
Diffstat (limited to 'lib/sqlalchemy/orm/query.py')
-rw-r--r--lib/sqlalchemy/orm/query.py7
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/sqlalchemy/orm/query.py b/lib/sqlalchemy/orm/query.py
index 43b4e6d77..d42a8f863 100644
--- a/lib/sqlalchemy/orm/query.py
+++ b/lib/sqlalchemy/orm/query.py
@@ -1068,6 +1068,13 @@ class Query(object):
if left is None:
left = self._joinpoint_zero()
+ if left is right and \
+ not create_aliases and \
+ not self._entity_zero()._subq_aliasing: # <-- TODO: hack
+ raise sa_exc.InvalidRequestError(
+ "Can't construct a join from %s to %s, they are the same entity" %
+ (left, right))
+
left_mapper, left_selectable, left_is_aliased = _entity_info(left)
right_mapper, right_selectable, is_aliased_class = _entity_info(right)