summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/sqlalchemy/dialects/oracle/base.py8
-rw-r--r--lib/sqlalchemy/test/testing.py9
-rw-r--r--test/engine/test_reflection.py8
3 files changed, 15 insertions, 10 deletions
diff --git a/lib/sqlalchemy/dialects/oracle/base.py b/lib/sqlalchemy/dialects/oracle/base.py
index 3cfdf828b..a22b01f3d 100644
--- a/lib/sqlalchemy/dialects/oracle/base.py
+++ b/lib/sqlalchemy/dialects/oracle/base.py
@@ -140,6 +140,14 @@ class NUMBER(sqltypes.Numeric, sqltypes.Integer):
asdecimal = bool(scale and scale > 0)
super(NUMBER, self).__init__(precision=precision, scale=scale, asdecimal=asdecimal)
+
+ @property
+ def _type_affinity(self):
+ if bool(self.scale and self.scale > 0):
+ return sqltypes.Numeric
+ else:
+ return sqltypes.Integer
+
class DOUBLE_PRECISION(sqltypes.Numeric):
__visit_name__ = 'DOUBLE_PRECISION'
diff --git a/lib/sqlalchemy/test/testing.py b/lib/sqlalchemy/test/testing.py
index 369aa3a6f..ea1dfa9ea 100644
--- a/lib/sqlalchemy/test/testing.py
+++ b/lib/sqlalchemy/test/testing.py
@@ -657,12 +657,9 @@ class ComparesTables(object):
assert reflected_table.primary_key.columns[c.name] is not None
def assert_types_base(self, c1, c2):
- base_mro = sqltypes.TypeEngine.__mro__
- assert len(
- set(type(c1.type).__mro__).difference(base_mro).intersection(
- set(type(c2.type).__mro__).difference(base_mro)
- )
- ) > 0, "On column %r, type '%s' doesn't correspond to type '%s'" % (c1.name, c1.type, c2.type)
+ assert c1.type._compare_type_affinity(c2.type),\
+ "On column %r, type '%s' doesn't correspond to type '%s'" % \
+ (c1.name, c1.type, c2.type)
class AssertsExecutionResults(object):
def assert_result(self, result, class_, *objects):
diff --git a/test/engine/test_reflection.py b/test/engine/test_reflection.py
index f73d40a41..bc2c896ab 100644
--- a/test/engine/test_reflection.py
+++ b/test/engine/test_reflection.py
@@ -699,11 +699,11 @@ class ReflectionTest(TestBase, ComparesTables):
for c1, c2 in zip(users.c, users_v.c):
eq_(c1.name, c2.name)
- assert c1.type._compare_type_affinity(c2.type)
+ self.assert_types_base(c1, c2)
for c1, c2 in zip(addresses.c, addresses_v.c):
eq_(c1.name, c2.name)
- assert c1.type._compare_type_affinity(c2.type)
+ self.assert_types_base(c1, c2)
finally:
dropViews(meta.bind, None)
@@ -946,10 +946,10 @@ def createTables(meta, schema=None):
Column('test2', sa.Float(5), nullable=False),
Column('test3', sa.Text),
Column('test4', sa.Numeric(10, 2), nullable = False),
- Column('test5', sa.DateTime),
+ Column('test5', sa.Date),
Column('test5-1', sa.TIMESTAMP),
parent_user_id,
- Column('test6', sa.DateTime, nullable=False),
+ Column('test6', sa.Date, nullable=False),
Column('test7', sa.Text),
Column('test8', sa.Binary),
Column('test_passivedefault2', sa.Integer, server_default='5'),