]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- Fixed an attribute error introduced in 0.5.4 which would rel_0_5_4p1
authorMike Bayer <mike_mp@zzzcomputing.com>
Mon, 18 May 2009 16:21:42 +0000 (16:21 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Mon, 18 May 2009 16:21:42 +0000 (16:21 +0000)
occur when merge() was used with an incomplete object.

CHANGES
lib/sqlalchemy/__init__.py
lib/sqlalchemy/orm/attributes.py
test/orm/merge.py

diff --git a/CHANGES b/CHANGES
index 6074c83d8d98ecfdc1318616de2cc8bdc55207b8..165d2ec07930c8e10180ad49becfa6ef259b6eab 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -4,6 +4,13 @@
 CHANGES
 =======
 
+0.5.4p1
+=======
+
+- orm
+    - Fixed an attribute error introduced in 0.5.4 which would 
+      occur when merge() was used with an incomplete object.
+    
 0.5.4
 =====
 
index b28de9bc8f562366ec585eb25364fd73c01fcbee..5502aa7b840e0813bcc6dc465caa01b76a5eafd1 100644 (file)
@@ -107,6 +107,6 @@ from sqlalchemy.engine import create_engine, engine_from_config
 __all__ = sorted(name for name, obj in locals().items()
                  if not (name.startswith('_') or inspect.ismodule(obj)))
                  
-__version__ = '0.5.4'
+__version__ = '0.5.4p1'
 
 del inspect, sys
index 4fa41ff3b5451539ac2af32e0bdf35aec461f412..4fe562110d90aaf0764d437078d2dd01e119daa7 100644 (file)
@@ -376,7 +376,7 @@ class AttributeImpl(object):
                         return self.set_committed_value(state, dict_, value)
                     else:
                         if self.key not in dict_:
-                            return self.get(state, passive=passive)
+                            return self.get(state, dict_, passive=passive)
                         return dict_[self.key]
 
             # Return a new, empty value
index b0e236ba2bcd4768aa37b1654fbcd64edbf2d214..fd553f2bf79455a12948b4af5e74eebf279afadb 100644 (file)
@@ -220,6 +220,15 @@ class MergeTest(_fixtures.FixtureTest):
             Address(email_address='hoho@bar.com')]))
         eq_(on_load.called, 6)
 
+    @testing.resolve_artifact_names
+    def test_merge_empty_attributes(self):
+        mapper(User, dingalings)
+        u1 = User(id=1)
+        sess = create_session()
+        sess.merge(u1)
+        sess.flush()
+        assert u1.address_id is u1.data is None
+        
     @testing.resolve_artifact_names
     def test_attribute_cascade(self):
         """Merge of a persistent entity with two child persistent entities."""