From: Mike Bayer Date: Wed, 26 Jan 2011 03:37:18 +0000 (-0500) Subject: - fix oracle tests X-Git-Tag: rel_0_7b1~52 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3ac7ec476e5a52892a48f1932a5452ed9263c758;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - fix oracle tests - fix some obnoxious type adaption issues resulting from the "adapt must copy" change --- diff --git a/lib/sqlalchemy/types.py b/lib/sqlalchemy/types.py index 1dcf379a95..f9320cf3eb 100644 --- a/lib/sqlalchemy/types.py +++ b/lib/sqlalchemy/types.py @@ -427,7 +427,7 @@ class TypeDecorator(TypeEngine): """ adapted = dialect.type_descriptor(self) - if adapted is not self: + if type(adapted) is not type(self): return adapted elif isinstance(self.impl, TypeDecorator): return self.impl.type_engine(dialect) @@ -1785,7 +1785,11 @@ class Interval(_DateAffinity, TypeDecorator): if self.native and hasattr(cls, '_adapt_from_generic_interval'): return cls._adapt_from_generic_interval(self, **kw) else: - return cls(**kw) + return self.__class__( + native=self.native, + second_precision=self.second_precision, + day_precision=self.day_precision, + **kw) def bind_processor(self, dialect): impl_processor = self.impl.bind_processor(dialect) diff --git a/test/orm/test_versioning.py b/test/orm/test_versioning.py index a42b8e8fe2..128927d727 100644 --- a/test/orm/test_versioning.py +++ b/test/orm/test_versioning.py @@ -465,7 +465,7 @@ class InheritanceTwoVersionIdsTest(_base.MappedTest): @classmethod def define_tables(cls, metadata): Table('base', metadata, - Column('id', Integer, primary_key=True), + Column('id', Integer, primary_key=True, test_needs_autoincrement=True), Column('version_id', Integer, nullable=True), Column('data', String(50)) ) diff --git a/test/sql/test_types.py b/test/sql/test_types.py index 1665e35c88..e65f684c3a 100644 --- a/test/sql/test_types.py +++ b/test/sql/test_types.py @@ -1506,6 +1506,13 @@ class IntervalTest(TestBase, AssertsExecutionResults): def teardown_class(cls): metadata.drop_all() + def test_non_native_adapt(self): + interval = Interval(native=False) + adapted = interval.dialect_impl(testing.db.dialect) + assert type(adapted) is Interval + assert adapted.native is False + eq_(str(adapted), "DATETIME") + @testing.fails_on("+pg8000", "Not yet known how to pass values of the INTERVAL type") @testing.fails_on("postgresql+zxjdbc", "Not yet known how to pass values of the INTERVAL type") @testing.fails_on("oracle+zxjdbc", "Not yet known how to pass values of the INTERVAL type")