From: Mike Bayer Date: Tue, 26 May 2009 22:45:56 +0000 (+0000) Subject: - Fixed bug introduced in 0.5.4 whereby Composite types X-Git-Tag: rel_0_5_5~27 X-Git-Url: http://git.ipfire.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=fe3902771f51dea078bbee986e984c399aae2468;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - Fixed bug introduced in 0.5.4 whereby Composite types fail when default-holding columns are flushed. --- diff --git a/CHANGES b/CHANGES index cced2b719c..4f47bfe09f 100644 --- 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 ======= diff --git a/lib/sqlalchemy/__init__.py b/lib/sqlalchemy/__init__.py index a94af097a5..e8c28cac24 100644 --- a/lib/sqlalchemy/__init__.py +++ b/lib/sqlalchemy/__init__.py @@ -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 diff --git a/lib/sqlalchemy/orm/properties.py b/lib/sqlalchemy/orm/properties.py index 5605cdcd1e..2fa2cbd864 100644 --- a/lib/sqlalchemy/orm/properties.py +++ b/lib/sqlalchemy/orm/properties.py @@ -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__()) diff --git a/test/orm/mapper.py b/test/orm/mapper.py index 3f427654f5..13e02a38a0 100644 --- a/test/orm/mapper.py +++ b/test/orm/mapper.py @@ -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):