]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- Fixed bug introduced in 0.5.4 whereby Composite types
authorMike Bayer <mike_mp@zzzcomputing.com>
Tue, 26 May 2009 22:45:56 +0000 (22:45 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Tue, 26 May 2009 22:45:56 +0000 (22:45 +0000)
fail when default-holding columns are flushed.

CHANGES
lib/sqlalchemy/__init__.py
lib/sqlalchemy/orm/properties.py
test/orm/mapper.py

diff --git a/CHANGES b/CHANGES
index cced2b719cdd040b0fd4eecf6b6c3ddaff3e620f..4f47bfe09f93c54826b74e14f4855574d5b75e10 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -4,6 +4,12 @@
 CHANGES
 =======
 
+0.5.4p3
+=======
+- orm
+    - Fixed bug introduced in 0.5.4 whereby Composite types
+      fail when default-holding columns are flushed.
+    
 0.5.4p2
 =======
 
index a94af097a5f90eedbbde0793736fa1b5f17e4b0b..e8c28cac2413b85ec044708a93f1594c39726d58 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.4p2'
+__version__ = '0.5.4p3'
 
 del inspect, sys
index 5605cdcd1e83fbbf1dc31a4f00a11d32603b068a..2fa2cbd86488deb11adf67cc40378ae19449658a 100644 (file)
@@ -171,7 +171,7 @@ class CompositeProperty(ColumnProperty):
         obj = state.get_impl(self.key).get(state, state.dict)
         if obj is None:
             obj = self.composite_class(*[None for c in self.columns])
-            state.get_impl(self.key).set(state, obj, None)
+            state.get_impl(self.key).set(state, state.dict, obj, None)
 
         if hasattr(obj, '__set_composite_values__'):
             values = list(obj.__composite_values__())
index 3f427654f5c321162537c4be57f8bd4d6a302681..13e02a38a033eb82742e5751a4c04693a044e7e9 100644 (file)
@@ -1915,6 +1915,13 @@ class CompositeTypesTest(_base.MappedTest):
         sess.flush()
 
         assert f1.foob == FBComposite(2, 5, 15, None)
+        
+        
+        f2 = Foobar()
+        sess.add(f2)
+        sess.flush()
+        assert f2.foob == FBComposite(2, None, 15, None)
+        
     
     @testing.resolve_artifact_names
     def test_set_composite_values(self):