diff options
Diffstat (limited to 'lib/sqlalchemy/orm/strategies.py')
-rw-r--r-- | lib/sqlalchemy/orm/strategies.py | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/lib/sqlalchemy/orm/strategies.py b/lib/sqlalchemy/orm/strategies.py index 62602ff37..1c4571aed 100644 --- a/lib/sqlalchemy/orm/strategies.py +++ b/lib/sqlalchemy/orm/strategies.py @@ -806,6 +806,12 @@ class SubqueryLoader(AbstractRelationshipLoader): ] def create_row_processor(self, context, path, mapper, row, adapter): + if not self.parent.class_manager[self.key].impl.supports_population: + raise sa_exc.InvalidRequestError( + "'%s' does not support object " + "population - eager loading cannot be applied." % + self) + path = path + (self.key,) path = interfaces._reduce_path(path) @@ -876,6 +882,7 @@ class EagerLoader(AbstractRelationshipLoader): **kwargs): """Add a left outer join to the statement thats being constructed.""" + if not context.query._enable_eagerloads: return @@ -1069,7 +1076,14 @@ class EagerLoader(AbstractRelationshipLoader): return False def create_row_processor(self, context, path, mapper, row, adapter): + if not self.parent.class_manager[self.key].impl.supports_population: + raise sa_exc.InvalidRequestError( + "'%s' does not support object " + "population - eager loading cannot be applied." % + self) + path = path + (self.key,) + eager_adapter = self._create_eager_adapter( context, |