summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/orm/query.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2014-10-23 01:54:10 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2014-10-23 01:54:10 -0400
commit445b9e2aff4e45a7756a8ca8dfbd51bf359a831b (patch)
treefb5d5b4706c8ba1370192caa7a0973dc35358459 /lib/sqlalchemy/orm/query.py
parent47d316ec665e5d5fc7ac750ba62b189a64d98ddd (diff)
downloadsqlalchemy-445b9e2aff4e45a7756a8ca8dfbd51bf359a831b.tar.gz
- Fixed bug in single table inheritance where a chain of joins
that included the same single inh entity more than once (normally this should raise an error) could, in some cases depending on what was being joined "from", implicitly alias the second case of the single inh entity, producing a query that "worked". But as this implicit aliasing is not intended in the case of single table inheritance, it didn't really "work" fully and was very misleading, since it wouldn't always appear. fixes #3233
Diffstat (limited to 'lib/sqlalchemy/orm/query.py')
-rw-r--r--lib/sqlalchemy/orm/query.py6
1 files changed, 2 insertions, 4 deletions
diff --git a/lib/sqlalchemy/orm/query.py b/lib/sqlalchemy/orm/query.py
index dc09e8eb4..f07060825 100644
--- a/lib/sqlalchemy/orm/query.py
+++ b/lib/sqlalchemy/orm/query.py
@@ -1947,11 +1947,9 @@ class Query(object):
from_obj, r_info.selectable):
overlap = True
break
- elif sql_util.selectables_overlap(l_info.selectable,
- r_info.selectable):
- overlap = True
- if overlap and l_info.selectable is r_info.selectable:
+ if (overlap or not create_aliases) and \
+ l_info.selectable is r_info.selectable:
raise sa_exc.InvalidRequestError(
"Can't join table/selectable '%s' to itself" %
l_info.selectable)