From d7fda4ae03f0e1c1ab73ced15e7b0472f36d1024 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Fri, 11 Feb 2011 14:41:29 -0500 Subject: - Additional tuning to "many-to-one" relationship loads during a flush(). A change in version 0.6.6 ([ticket:2002]) required that more "unnecessary" m2o loads during a flush could occur. Extra loading modes have been added so that the SQL emitted in this specific use case is trimmed back, while still retrieving the information the flush needs in order to not miss anything. [ticket:2049] --- lib/sqlalchemy/orm/dependency.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'lib/sqlalchemy/orm/dependency.py') diff --git a/lib/sqlalchemy/orm/dependency.py b/lib/sqlalchemy/orm/dependency.py index e3e2f5d56..dde0d94c8 100644 --- a/lib/sqlalchemy/orm/dependency.py +++ b/lib/sqlalchemy/orm/dependency.py @@ -219,7 +219,12 @@ class DependencyProcessor(object): pass def prop_has_changes(self, uowcommit, states, isdelete): - passive = not isdelete or self.passive_deletes + if not isdelete or self.passive_deletes: + passive = attributes.PASSIVE_NO_INITIALIZE + elif self.direction is MANYTOONE: + passive = attributes.PASSIVE_NO_FETCH_RELATED + else: + passive = attributes.PASSIVE_OFF for s in states: # TODO: add a high speed method -- cgit v1.2.1