]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Merged in millerdev/sqlalchemy (pull request #20)
authorMike Bayer <mike_mp@zzzcomputing.com>
Mon, 17 Sep 2012 01:09:22 +0000 (21:09 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Mon, 17 Sep 2012 01:09:22 +0000 (21:09 -0400)
lib/sqlalchemy/orm/persistence.py
test/orm/test_versioning.py

index b2740f2b2b575c5b802e3b8f96c426076340a86e..a5f833187c1d65c9a2d94b8d46243c370746f6b8 100644 (file)
@@ -466,7 +466,7 @@ def _emit_update_statements(base_mapper, uowtransaction,
         if needs_version_id:
             clause.clauses.append(mapper.version_id_col ==\
                     sql.bindparam(mapper.version_id_col._label,
-                                    type_=col.type))
+                                    type_=mapper.version_id_col.type))
 
         return table.update(clause)
 
index 721bd1286d2bbe16c364a5b3e4e1edbc5bdb023d..8d1f6d0148bec2a519a68f4831be9fde2fc34aa7 100644 (file)
@@ -1,6 +1,7 @@
+import datetime
 import sqlalchemy as sa
 from test.lib import engines, testing
-from sqlalchemy import Integer, String, ForeignKey, literal_column, \
+from sqlalchemy import Integer, String, Date, ForeignKey, literal_column, \
     orm, exc, select
 from test.lib.schema import Table, Column
 from sqlalchemy.orm import mapper, relationship, Session, \
@@ -323,6 +324,40 @@ class VersioningTest(fixtures.MappedTest):
             s1.merge, f2
         )
 
+class ColumnTypeTest(fixtures.MappedTest):
+
+    @classmethod
+    def define_tables(cls, metadata):
+        Table('version_table', metadata,
+              Column('id', Date, primary_key=True),
+              Column('version_id', Integer, nullable=False),
+              Column('value', String(40), nullable=False))
+
+    @classmethod
+    def setup_classes(cls):
+        class Foo(cls.Basic):
+            pass
+
+    def _fixture(self):
+        Foo, version_table = self.classes.Foo, self.tables.version_table
+
+        mapper(Foo, version_table,
+                version_id_col=version_table.c.version_id)
+        s1 = Session()
+        return s1
+
+    @engines.close_open_connections
+    def test_update(self):
+        Foo = self.classes.Foo
+
+        s1 = self._fixture()
+        f1 = Foo(id=datetime.date.today(), value='f1')
+        s1.add(f1)
+        s1.commit()
+
+        f1.value='f1rev2'
+        s1.commit()
+
 class RowSwitchTest(fixtures.MappedTest):
     @classmethod
     def define_tables(cls, metadata):