From 47d2576365e60af6bfebad5761d8a81324538f6d Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Mon, 3 Nov 2008 03:37:44 +0000 Subject: - Fixed bug when using multiple query.join() with an aliased-bound descriptor which would lose the left alias. --- lib/sqlalchemy/orm/query.py | 14 ++++++++------ lib/sqlalchemy/orm/util.py | 2 +- 2 files changed, 9 insertions(+), 7 deletions(-) (limited to 'lib') diff --git a/lib/sqlalchemy/orm/query.py b/lib/sqlalchemy/orm/query.py index b358f4311..cad35972d 100644 --- a/lib/sqlalchemy/orm/query.py +++ b/lib/sqlalchemy/orm/query.py @@ -886,12 +886,14 @@ class Query(object): if isinstance(onclause, sql.ClauseElement): onclause = right_adapter.traverse(onclause) - if prop: - # MapperProperty based onclause - onclause = prop - else: - # ClauseElement based onclause - onclause = self._adapt_clause(onclause, False, True) + # TODO: is this a little hacky ? + if not isinstance(onclause, attributes.QueryableAttribute) or not isinstance(onclause.parententity, AliasedClass): + if prop: + # MapperProperty based onclause + onclause = prop + else: + # ClauseElement based onclause + onclause = self._adapt_clause(onclause, False, True) clause = orm_join(clause, right_entity, onclause, isouter=outerjoin) if alias_criterion: diff --git a/lib/sqlalchemy/orm/util.py b/lib/sqlalchemy/orm/util.py index fbc1acd5d..689df8d86 100644 --- a/lib/sqlalchemy/orm/util.py +++ b/lib/sqlalchemy/orm/util.py @@ -349,7 +349,7 @@ class _ORMJoin(expression.Join): adapt_from = left else: adapt_from = None - + right_mapper, right, right_is_aliased = _entity_info(right) if right_is_aliased: adapt_to = right -- cgit v1.2.1