]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
added test of synchronize_session='fetch' on rows which are not already in the sessio...
authorScott Torborg <storborg@mit.edu>
Sat, 10 Nov 2012 23:01:30 +0000 (15:01 -0800)
committerScott Torborg <storborg@mit.edu>
Sat, 10 Nov 2012 23:01:30 +0000 (15:01 -0800)
lib/sqlalchemy/orm/persistence.py
test/orm/test_update_delete.py

index 60eb9b41b2d532d09a5403998e302e634db1f72a..5945addc4c47fad409dfa68d7cee72b23640b0b1 100644 (file)
@@ -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:
index 4da07458e11a418568b3dab883165b22eb31f6b2..eb0767a8afdd0c467988dfa83afebed9d0c2579d 100644 (file)
@@ -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