]> 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:15:19 +0000 (21:15 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Wed, 5 Nov 2008 21:15:19 +0000 (21:15 +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 d43ec9c1772847975f604497a1ded3fc19ae50a8..a2121429864710ab4cba3481f76f4d18cbfe4310 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -48,6 +48,9 @@ CHANGES
     - Repaired support for "passive-deletes" on a many-to-one
       relation() with "delete" cascade. [ticket:1183]
 
+    - Fixed bug in composite types which prevented a primary-key
+      composite type from being mutated [ticket:1213].
+      
     - Added more granularity to internal attribute access, such that
       cascade and flush operations will not initialize unloaded
       attributes and collections, leaving them intact for a
index c2bb734810ec5e381308858cf996a2f055e2e4df..42597cda1b654c78550c170d2f60bd4fb1745330 100644 (file)
@@ -1289,10 +1289,10 @@ class Mapper(object):
                                     params[col.key] = prop.get_col_value(col, history.added[0])
                                 if col in pks:
                                     if history.deleted:
-                                        params[col._label] = history.deleted[0]
+                                        params[col._label] = prop.get_col_value(col, history.deleted[0])
                                     else:
                                         # row switch logic can reach us here
-                                        params[col._label] = history.added[0]
+                                        params[col._label] = prop.get_col_value(col, history.added[0])
                                 hasdata = True
                             elif col in pks:
                                 params[col._label] = mapper._get_state_attr_by_column(state, col)
index 8978059de4977dd20a2cd848b030d8ef8930b4c4..7c6984919ce9eea4a5efb753552f628a9e85291f 100644 (file)
@@ -1637,7 +1637,14 @@ class CompositeTypesTest(_base.MappedTest):
 
         g2 = sess.query(Graph).get(Version(1, 1))
         eq_(g.version, g2.version)
+
+        # test pk mutation
+        g2.version = Version(2, 1)
+        sess.flush()
+        g3 = sess.query(Graph).get(Version(2, 1))
+        eq_(g2.version, g3.version)
         
+        # test pk with one column NULL
         # TODO: can't seem to get NULL in for a PK value
         # in either mysql or postgres, autoincrement=False etc.
         # notwithstanding