Re: [Sqlalchemy-tickets] [sqlalchemy] #2903: auto-aliasing for cls->joined-inh only considers the p
Brought to you by:
zzzeek
|
From: sqlalchemy <mi...@zz...> - 2014-01-02 21:52:17
|
#2903: auto-aliasing for cls->joined-inh only considers the previous class
------------------------------+----------------------------------
Reporter: zzzeek | Owner: zzzeek
Type: defect | Status: new
Priority: highest | Milestone: 0.9.xx
Component: orm | Severity: minor - half an hour
Resolution: | Keywords:
Progress State: needs tests |
------------------------------+----------------------------------
Changes (by zzzeek):
* severity: major - 1-3 hours => minor - half an hour
* status_field: in progress => needs tests
Comment:
patch:
{{{
#!diff
diff --git a/lib/sqlalchemy/orm/query.py b/lib/sqlalchemy/orm/query.py
index 4f10a6a..b1916b9 100644
--- a/lib/sqlalchemy/orm/query.py
+++ b/lib/sqlalchemy/orm/query.py
@@ -1847,9 +1847,13 @@ class Query(object):
l_info = inspect(left)
r_info = inspect(right)
- overlap = not create_aliases and \
- sql_util.selectables_overlap(l_info.selectable,
- r_info.selectable)
+ overlap = False
+ if not create_aliases:
+ for from_obj in self._from_obj or [l_info.selectable]:
+ if sql_util.selectables_overlap(from_obj,
r_info.selectable):
+ overlap = True
+ break
+
if overlap and l_info.selectable is r_info.selectable:
raise sa_exc.InvalidRequestError(
"Can't join table/selectable '%s' to itself" %
}}}
--
Ticket URL: <http://www.sqlalchemy.org/trac/ticket/2903#comment:1>
sqlalchemy <http://www.sqlalchemy.org/>
The Database Toolkit for Python
|