From 3ac7ec476e5a52892a48f1932a5452ed9263c758 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Tue, 25 Jan 2011 22:37:18 -0500 Subject: [PATCH] - fix oracle tests - fix some obnoxious type adaption issues resulting from the "adapt must copy" change --- lib/sqlalchemy/types.py | 8 ++++++-- test/orm/test_versioning.py | 2 +- test/sql/test_types.py | 7 +++++++ 3 files changed, 14 insertions(+), 3 deletions(-) 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") -- 2.47.2