allow manual version_id_col bump

Issue #1857 resolved
Mike Bayer repo owner created an issue
diff -r ca9029ca9830573c4a5618e5dc01347576d50eb4 lib/sqlalchemy/orm/mapper.py
--- a/lib/sqlalchemy/orm/mapper.py      Thu Jul 22 01:46:41 2010 -0400
+++ b/lib/sqlalchemy/orm/mapper.py      Sat Jul 24 09:37:37 2010 -0400
@@ -1690,7 +1690,7 @@
                     for col in mapper._cols_by_table[table](table):
                         if col is mapper.version_id_col:
                             params[col._label](col._label) = \
-                                mapper._get_state_attr_by_column(
+                                mapper._get_committed_state_attr_by_column(
                                             row_switch or state, 
                                             row_switch and row_switch.dict 
                                                         or state_dict,
diff -r ca9029ca9830573c4a5618e5dc01347576d50eb4 test/orm/test_versioning.py
--- a/test/orm/test_versioning.py       Thu Jul 22 01:46:41 2010 -0400
+++ b/test/orm/test_versioning.py       Sat Jul 24 09:37:37 2010 -0400
@@ -108,6 +108,22 @@
             s1.commit()

     @testing.emits_warning(r'.*does not support updated rowcount')
+    @testing.resolve_artifact_names
+    def test_bump_version(self):
+        mapper(Foo, version_table, 
+                version_id_col=version_table.c.version_id)
+
+        s1 = sessionmaker()()
+        f1 = Foo(value='f1')
+        s1.add(f1)
+        s1.commit()
+        eq_(f1.version_id, 1)
+        f1.version_id = 2
+        s1.commit()
+        eq_(f1.version_id, 2)
+        
+        
+    @testing.emits_warning(r'.*does not support updated rowcount')
     @engines.close_open_connections
     @testing.resolve_artifact_names
     def test_versioncheck(self):

Comments (2)

  1. Log in to comment