# Oracle does not support TIME columns
# only if cx_oracle contains TIMESTAMP
-class OracleTimestamp(sqltypes.DateTime):
+class OracleTimestamp(sqltypes.TIMESTAMP):
def get_col_spec(self):
return "TIMESTAMP"
def get_dbapi_type(self, dialect):
return dialect.TIMESTAMP
+class OracleString(sqltypes.String):
+ def get_col_spec(self):
+ return "VARCHAR(%(length)s)" % {'length' : self.length}
+
class OracleText(sqltypes.TEXT):
def get_dbapi_type(self, dbapi):
return dbapi.CLOB
else:
return value.read()
-class OracleString(sqltypes.String):
- def get_col_spec(self):
- return "VARCHAR(%(length)s)" % {'length' : self.length}
-
class OracleRaw(sqltypes.Binary):
def get_col_spec(self):
return "RAW(%(length)s)" % {'length' : self.length}
import sqlalchemy.engine.url as url
import sqlalchemy.types
-from sqlalchemy.databases import mssql, oracle
+from sqlalchemy.databases import mssql, oracle, mysql
db = testbase.db
dialect_type = col.type.dialect_impl(dialect)
assert isinstance(dialect_type.impl, oracle.OracleText), repr(dialect_type.impl)
+ def testoracletimestamp(self):
+ dialect = oracle.OracleDialect()
+ t1 = oracle.OracleTimestamp
+ t2 = oracle.OracleTimestamp()
+ t3 = types.TIMESTAMP
+ assert isinstance(dialect.type_descriptor(t1), oracle.OracleTimestamp)
+ assert isinstance(dialect.type_descriptor(t2), oracle.OracleTimestamp)
+ assert isinstance(dialect.type_descriptor(t3), oracle.OracleTimestamp)
+
+ def testmysqlbinary(self):
+ dialect = mysql.MySQLDialect()
+ t1 = mysql.MSVarBinary
+ t2 = mysql.MSVarBinary()
+ assert isinstance(dialect.type_descriptor(t1), mysql.MSVarBinary)
+ assert isinstance(dialect.type_descriptor(t2), mysql.MSVarBinary)
+
+
class OverrideTest(PersistTest):
"""tests user-defined types, including a full type as well as a TypeDecorator"""