summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2011-01-25 22:37:18 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2011-01-25 22:37:18 -0500
commit3ac7ec476e5a52892a48f1932a5452ed9263c758 (patch)
tree7d354ba32544d5ff94dff96cfbcb4089a1d7ee9c
parent86e6c2bafb03e9620f6289c709d0076e6291f624 (diff)
downloadsqlalchemy-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.py8
-rw-r--r--test/orm/test_versioning.py2
-rw-r--r--test/sql/test_types.py7
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")