From: Scott Torborg Date: Sat, 10 Nov 2012 23:01:30 +0000 (-0800) Subject: added test of synchronize_session='fetch' on rows which are not already in the sessio... X-Git-Tag: rel_0_8_0b2~69 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=52e8dcda6d8600f8c6b32fcd0b69920bad43c45b;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git added test of synchronize_session='fetch' on rows which are not already in the session, and patch to fix failure --- diff --git a/lib/sqlalchemy/orm/persistence.py b/lib/sqlalchemy/orm/persistence.py index 60eb9b41b2..5945addc4c 100644 --- a/lib/sqlalchemy/orm/persistence.py +++ b/lib/sqlalchemy/orm/persistence.py @@ -986,6 +986,7 @@ class BulkUpdateFetch(BulkFetch, BulkUpdate): list(primary_key)) for primary_key in self.matched_rows ] + if identity_key in session.identity_map ]) attrib = [_attr_as_key(k) for k in self.values] for state in states: diff --git a/test/orm/test_update_delete.py b/test/orm/test_update_delete.py index 4da07458e1..eb0767a8af 100644 --- a/test/orm/test_update_delete.py +++ b/test/orm/test_update_delete.py @@ -226,6 +226,15 @@ class UpdateDeleteTest(fixtures.MappedTest): eq_([john.age, jack.age, jill.age, jane.age], [25,37,29,27]) eq_(sess.query(User.age).order_by(User.id).all(), zip([25,37,29,27])) + def test_update_without_load(self): + User = self.classes.User + + sess = Session() + + sess.query(User).filter(User.id == 3).\ + update({'age': 44}, synchronize_session='fetch') + eq_(sess.query(User.age).order_by(User.id).all(), zip([25,37,44,27])) + def test_update_changes_resets_dirty(self): User = self.classes.User