]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- extra merge test
authorMike Bayer <mike_mp@zzzcomputing.com>
Fri, 2 Nov 2007 18:05:06 +0000 (18:05 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Fri, 2 Nov 2007 18:05:06 +0000 (18:05 +0000)
- merge with dont_load also propagates _state.modified

lib/sqlalchemy/orm/properties.py
lib/sqlalchemy/orm/session.py
test/orm/merge.py

index 1e6be1f7df942813f93c0b38e56f6a63eddf02ed..f2a60315c142223a1c09c4706d19d5d50c53d42c 100644 (file)
@@ -292,7 +292,6 @@ class PropertyLoader(StrategizedProperty):
             for current in list(childlist):
                 obj = session.merge(current, entity_name=self.mapper.entity_name, dont_load=dont_load, _recursive=_recursive)
                 if obj is not None:
-                    #dest_list.append_without_event(obj)
                     dest_list.append_with_event(obj)
         else:
             current = list(childlist)[0]
index 30e97eba7c66f64606c2548e3e9f497233faaf92..0b57447788f96c1d8fe2da46935792887e14a01f 100644 (file)
@@ -879,6 +879,8 @@ class Session(object):
                         raise exceptions.AssertionError("Instance %s has an instance key but is not persisted" % mapperutil.instance_str(object))
             for prop in mapper.iterate_properties:
                 prop.merge(self, object, merged, dont_load, _recursive)
+            if dont_load:
+                merged._state.modified = object._state.modified
             if key is None:
                 self.save(merged, entity_name=mapper.entity_name)
             return merged
index 7f45c56a2dafdea99baca227708f845989e1063c..fd3e0f446c1a03e7753b5e3bb4f84f147bf7ea76 100644 (file)
@@ -117,6 +117,17 @@ class MergeTest(AssertMixin):
         # no changes; therefore flush should do nothing
         self.assert_sql_count(testbase.db, go, 0)
 
+        # pre merge change
+        u.user_name='fred3'
+        sess4 = create_session()
+        u = sess4.merge(u, dont_load=True)
+        # post merge change
+        u.addresses[1].email_address='afafds'
+        def go():
+            sess4.flush()
+        # changes still flush
+        self.assert_sql_count(testbase.db, go, 2)
+
     def test_saved_cascade_2(self):
         """tests a more involved merge"""
         mapper(Order, orders, properties={