diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2011-01-25 22:37:18 -0500 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2011-01-25 22:37:18 -0500 |
| commit | 3ac7ec476e5a52892a48f1932a5452ed9263c758 (patch) | |
| tree | 7d354ba32544d5ff94dff96cfbcb4089a1d7ee9c | |
| parent | 86e6c2bafb03e9620f6289c709d0076e6291f624 (diff) | |
| download | sqlalchemy-3ac7ec476e5a52892a48f1932a5452ed9263c758.tar.gz | |
- fix oracle tests
- fix some obnoxious type adaption issues resulting from the "adapt must copy" change
| -rw-r--r-- | lib/sqlalchemy/types.py | 8 | ||||
| -rw-r--r-- | test/orm/test_versioning.py | 2 | ||||
| -rw-r--r-- | 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 1dcf379a9..f9320cf3e 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 a42b8e8fe..128927d72 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 1665e35c8..e65f684c3 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") |
