From 52e8dcda6d8600f8c6b32fcd0b69920bad43c45b Mon Sep 17 00:00:00 2001 From: Scott Torborg Date: Sat, 10 Nov 2012 15:01:30 -0800 Subject: [PATCH] added test of synchronize_session='fetch' on rows which are not already in the session, and patch to fix failure --- lib/sqlalchemy/orm/persistence.py | 1 + test/orm/test_update_delete.py | 9 +++++++++ 2 files changed, 10 insertions(+) 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 -- 2.47.3