diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2018-06-13 18:13:21 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2018-06-25 23:47:51 -0400 |
| commit | f683ddf16b34513d9f589202f2cdff9d0e0fad6b (patch) | |
| tree | 311b95bf0a5e7b04d01e85260b4b32636fa1aeb2 /lib | |
| parent | c99345ee9994c3ea2a5e6536cc3365f18d017cc1 (diff) | |
| download | sqlalchemy-f683ddf16b34513d9f589202f2cdff9d0e0fad6b.tar.gz | |
Look up adapter info for previous left side in chained query.join()
Fixed issue where chaining multiple join elements inside of
:meth:`.Query.join` might not correctly adapt to the previous left-hand
side, when chaining joined inheritance classes that share the same base
class.
Change-Id: I4b846430b7362912dbebf50599ec15a1eb978fd4
Fixes: #3505
Diffstat (limited to 'lib')
| -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 74d3079af..98747c680 100644 --- a/lib/sqlalchemy/orm/query.py +++ b/lib/sqlalchemy/orm/query.py @@ -2244,6 +2244,13 @@ class Query(object): left_entity = onclause._parententity + alias = self._polymorphic_adapters.get(left_entity, None) + # could be None or could be ColumnAdapter also + if isinstance(alias, ORMAdapter) and \ + alias.mapper.isa(left_entity): + left_entity = alias.aliased_class + onclause = getattr(left_entity, onclause.key) + prop = onclause.property if not isinstance(onclause, attributes.QueryableAttribute): onclause = prop |
