From: Mike Bayer Date: Sun, 15 Jul 2007 04:24:41 +0000 (+0000) Subject: - fixed unicode conversion in Oracle TEXT type X-Git-Tag: rel_0_3_9~10 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e40a6183a0ee301a3c79d4833816894b3349ee0e;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - fixed unicode conversion in Oracle TEXT type --- diff --git a/CHANGES b/CHANGES index 20445557f6..6caab88289 100644 --- a/CHANGES +++ b/CHANGES @@ -108,6 +108,7 @@ - mod operator '%' produces MOD [ticket:624] - converts cx_oracle datetime objects to Python datetime.datetime when Python 2.3 used [ticket:542] + - fixed unicode conversion in Oracle TEXT type - postgres - fixed escaping of the modulo operator [ticket:624] - added support for reflection of domains [ticket:570] diff --git a/lib/sqlalchemy/databases/oracle.py b/lib/sqlalchemy/databases/oracle.py index 35b72af6c0..9d7d6a112b 100644 --- a/lib/sqlalchemy/databases/oracle.py +++ b/lib/sqlalchemy/databases/oracle.py @@ -89,7 +89,8 @@ class OracleText(sqltypes.TEXT): if value is None: return None else: - return value.read() + return super(OracleText, self).convert_result_value(value.read(), dialect) + class OracleRaw(sqltypes.Binary): def get_col_spec(self): diff --git a/test/sql/testtypes.py b/test/sql/testtypes.py index cf5ce1f1ac..898592cd35 100644 --- a/test/sql/testtypes.py +++ b/test/sql/testtypes.py @@ -67,7 +67,8 @@ class AdaptTest(PersistTest): col = Column('', MyDecoratedType) 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 @@ -207,6 +208,7 @@ class UnicodeTest(AssertMixin): finally: db.engine.dialect.convert_unicode = prev_unicode + @testbase.unsupported('oracle') def testlength(self): """checks the database correctly understands the length of a unicode string""" teststr = u'aaa\x1234' @@ -362,7 +364,7 @@ class IntervalTest(AssertMixin): global interval_table, metadata metadata = MetaData(testbase.db) interval_table = Table("intervaltable", metadata, - Column("id", Integer, primary_key=True), + Column("id", Integer, Sequence('interval_id_seq', optional=True), primary_key=True), Column("interval", Interval), ) metadata.create_all()