diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-03-24 12:15:42 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-03-24 12:15:42 -0400 |
commit | 4cf01115f669e44d77d46381f16ea5bf57197a1b (patch) | |
tree | 3f2da9d8240040c9ef50eb5f22574017ddd485e1 /lib/sqlalchemy/orm/query.py | |
parent | 928354dca101e57fcb1c7440a4c2eef45594c5b8 (diff) | |
download | sqlalchemy-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.py | 7 |
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) |