summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sqlalchemy')
-rw-r--r--lib/sqlalchemy/orm/path_registry.py5
-rw-r--r--lib/sqlalchemy/orm/strategy_options.py1
-rw-r--r--lib/sqlalchemy/orm/util.py2
3 files changed, 6 insertions, 2 deletions
diff --git a/lib/sqlalchemy/orm/path_registry.py b/lib/sqlalchemy/orm/path_registry.py
index f860cc8fe..1de54251c 100644
--- a/lib/sqlalchemy/orm/path_registry.py
+++ b/lib/sqlalchemy/orm/path_registry.py
@@ -255,7 +255,10 @@ class PropRegistry(PathRegistry):
and prop.parent in insp.with_polymorphic_mappers
):
subclass_entity = parent[-1]._entity_for_mapper(prop.parent)
- parent = parent.parent[subclass_entity]
+ if subclass_entity._use_mapper_path:
+ parent = parent.parent[subclass_entity.mapper]
+ else:
+ parent = parent.parent[subclass_entity]
self.prop = prop
self.parent = parent
diff --git a/lib/sqlalchemy/orm/strategy_options.py b/lib/sqlalchemy/orm/strategy_options.py
index 9cc9cd157..b123ecc5d 100644
--- a/lib/sqlalchemy/orm/strategy_options.py
+++ b/lib/sqlalchemy/orm/strategy_options.py
@@ -312,6 +312,7 @@ class Load(HasCacheKey, Generative, MapperOption):
existing = path.entity_path[prop].get(
self.context, "path_with_polymorphic"
)
+
if not ext_info.is_aliased_class:
ac = orm_util.with_polymorphic(
ext_info.mapper.base_mapper,
diff --git a/lib/sqlalchemy/orm/util.py b/lib/sqlalchemy/orm/util.py
index ccadeeaac..3a82de781 100644
--- a/lib/sqlalchemy/orm/util.py
+++ b/lib/sqlalchemy/orm/util.py
@@ -606,7 +606,7 @@ class AliasedInsp(sql_base.HasCacheKey, InspectionAttr):
selectable,
base_alias=self,
adapt_on_names=adapt_on_names,
- use_mapper_path=_use_mapper_path,
+ use_mapper_path=True,
)
setattr(self.entity, poly.class_.__name__, ent)