:version: 0.7.10
:released:
+ .. change::
+ :tags: oracle, bug
+ :tickets: 2620
+
+ The Oracle LONG type, while an unbounded text type, does not appear
+ to use the cx_Oracle.LOB type when result rows are returned,
+ so the dialect has been repaired to exclude LONG from
+ having cx_Oracle.LOB filtering applied.
+
.. change::
:tags: oracle, bug
:tickets: 2611
.. changelog::
:version: 0.8.0b2
+ .. change::
+ :tags: oracle, bug
+ :tickets: 2620
+
+ The Oracle LONG type, while an unbounded text type, does not appear
+ to use the cx_Oracle.LOB type when result rows are returned,
+ so the dialect has been repaired to exclude LONG from
+ having cx_Oracle.LOB filtering applied. Also in 0.7.10.
+
.. change::
:tags: oracle, bug
:tickets: 2611
return dbapi.CLOB
+class _OracleLong(oracle.LONG):
+ # a raw LONG is a text type, but does *not*
+ # get the LobMixin with cx_oracle.
+
+ def get_dbapi_type(self, dbapi):
+ return dbapi.LONG_STRING
+
class _OracleString(_NativeUnicodeMixin, sqltypes.String):
pass
sqltypes.UnicodeText: _OracleUnicodeText,
sqltypes.CHAR: _OracleChar,
+ # a raw LONG is a text type, but does *not*
+ # get the LobMixin with cx_oracle.
+ oracle.LONG: _OracleLong,
+
# this is only needed for OUT parameters.
# it would be nice if we could not use it otherwise.
sqltypes.Integer: _OracleInteger,
finally:
t1.drop()
+ @testing.provide_metadata
+ def test_long_type(self):
+ metadata = self.metadata
+
+ t = Table('t', metadata,
+ Column('data', oracle.LONG)
+ )
+ metadata.create_all(testing.db)
+ testing.db.execute(t.insert(), data='xyz')
+ eq_(
+ testing.db.scalar(select([t.c.data])),
+ "xyz"
+ )
+
+
def test_longstring(self):
metadata = MetaData(testing.db)