]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- Fixed bug in composite types which prevented a primary-key
authorMike Bayer <mike_mp@zzzcomputing.com>
Wed, 5 Nov 2008 21:16:09 +0000 (21:16 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Wed, 5 Nov 2008 21:16:09 +0000 (21:16 +0000)
composite type from being mutated [ticket:1213].

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

diff --git a/CHANGES b/CHANGES
index 6081f9171e7e6e7b9b73a9e569e1f2410a4005b5..148b8e1278e1d138286fc2f9be411d667a3d1f26 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -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
 =====
index c35dbd5a357c3d340c3bdafac9cd87d7b1f20f63..56fa5a80db398c0f5d1c7a00685c9ec83e0d6d0b 100644 (file)
@@ -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)
index bd70535a6534518303490a89bd0feedf263992cc..3070db54ddded564bf187a3640e1ee2295907697 100644 (file)
@@ -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):