diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2008-11-05 21:16:09 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2008-11-05 21:16:09 +0000 |
commit | 0638bbc803debc402f68c33171b18598ff24bca9 (patch) | |
tree | 3f69764017299cbd491b0c8cd4836d263f0edb12 | |
parent | 068836ab42f77ac237699d89bc6d3d545a29860a (diff) | |
download | sqlalchemy-0638bbc803debc402f68c33171b18598ff24bca9.tar.gz |
- Fixed bug in composite types which prevented a primary-key
composite type from being mutated [ticket:1213].
-rw-r--r-- | CHANGES | 3 | ||||
-rw-r--r-- | lib/sqlalchemy/orm/mapper.py | 4 | ||||
-rw-r--r-- | test/orm/mapper.py | 5 |
3 files changed, 10 insertions, 2 deletions
@@ -15,6 +15,9 @@ CHANGES reentrant mapper compile() calls, something that occurs when using declarative constructs inside of ForeignKey objects. Ported from 0.5. + + - Fixed bug in composite types which prevented a primary-key + composite type from being mutated [ticket:1213]. 0.4.8 ===== diff --git a/lib/sqlalchemy/orm/mapper.py b/lib/sqlalchemy/orm/mapper.py index c35dbd5a3..56fa5a80d 100644 --- a/lib/sqlalchemy/orm/mapper.py +++ b/lib/sqlalchemy/orm/mapper.py @@ -1110,10 +1110,10 @@ class Mapper(object): params[col.key] = prop.get_col_value(col, added[0]) if col in pks: if deleted: - params[col._label] = deleted[0] + params[col._label] = prop.get_col_value(col, deleted[0]) else: # row switch logic can reach us here - params[col._label] = added[0] + params[col._label] = prop.get_col_value(col, added[0]) hasdata = True elif col in pks: params[col._label] = mapper._get_state_attr_by_column(state, col) diff --git a/test/orm/mapper.py b/test/orm/mapper.py index bd70535a6..3070db54d 100644 --- a/test/orm/mapper.py +++ b/test/orm/mapper.py @@ -1293,6 +1293,11 @@ class CompositeTypesTest(ORMTest): g2 = sess.query(Graph).get(Version(1, 1)) assert g.version == g2.version + # test pk mutation + g2.version = Version(2, 1) + sess.flush() + g3 = sess.query(Graph).get(Version(2, 1)) + assert g2.version == g3.version class NoLoadTest(MapperSuperTest): |