From: Daniel Miller Date: Wed, 12 Sep 2012 15:59:59 +0000 (-0400) Subject: Added test and fix for version_id_col bug. X-Git-Tag: rel_0_8_0b1~154^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c5d06d6f5dec6ec51cbc90d01725c99920a74f82;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git Added test and fix for version_id_col bug. --- diff --git a/lib/sqlalchemy/orm/persistence.py b/lib/sqlalchemy/orm/persistence.py index a27c167472..60eb9b41b2 100644 --- a/lib/sqlalchemy/orm/persistence.py +++ b/lib/sqlalchemy/orm/persistence.py @@ -464,7 +464,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) diff --git a/test/orm/test_versioning.py b/test/orm/test_versioning.py index 721bd1286d..8d1f6d0148 100644 --- a/test/orm/test_versioning.py +++ b/test/orm/test_versioning.py @@ -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):