duplicate column names are present.
- fixed use_alter flag on ForeignKeyConstraint [ticket:503]
- fixed usage of 2.4-only "reversed" in topological.py [ticket:506]
+- oracle:
+ - got binary working for any size input ! cx_oracle works fine,
+ it was my fault as BINARY was being passed and not BLOB for
+ setinputsizes (also unit tests werent even setting input sizes).
+ - auto_setinputsizes defaults to True for Oracle, fixed cases where
+ it improperly propigated bad types.
- orm:
- the full featureset of the SelectResults extension has been merged
into a new set of methods available off of Query. These methods
return dialect.TIMESTAMP
class OracleText(sqltypes.TEXT):
+ def get_dbapi_type(self, dbapi):
+ return dbapi.CLOB
+
def get_col_spec(self):
return "CLOB"
class OracleBinary(sqltypes.Binary):
def get_dbapi_type(self, dbapi):
- return dbapi.BINARY
+ return dbapi.BLOB
def get_col_spec(self):
return "BLOB"
def convert_bind_param(self, value, dialect):
- if value is None:
- return None
- else:
- # this is RAWTOHEX
- return ''.join(["%.2X" % ord(c) for c in value])
+ return value
def convert_result_value(self, value, dialect):
if value is None:
self.set_input_sizes(proxy(), parameters)
class OracleDialect(ansisql.ANSIDialect):
- def __init__(self, use_ansi=True, auto_setinputsizes=False, module=None, threaded=True, **kwargs):
+ def __init__(self, use_ansi=True, auto_setinputsizes=True, module=None, threaded=True, **kwargs):
self.use_ansi = use_ansi
self.threaded = threaded
if module is None:
for params in plist[0:1]:
for key in params.positional:
typeengine = params.binds[key].type
- inputsizes.append(typeengine.get_dbapi_type(self.dialect.module))
+ dbtype = typeengine.dialect_impl(self.dialect).get_dbapi_type(self.dialect.module)
+ if dbtype is not None:
+ inputsizes.append(dbtype)
cursor.setinputsizes(*inputsizes)
else:
inputsizes = {}
for params in plist[0:1]:
for key in params.keys():
typeengine = params.binds[key].type
- inputsizes[key] = typeengine.get_dbapi_type(self.dialect.module)
+ dbtype = typeengine.dialect_impl(self.dialect).get_dbapi_type(self.dialect.module)
+ if dbtype is not None:
+ inputsizes[key] = dbtype
cursor.setinputsizes(**inputsizes)
def _process_defaults(self, engine, proxy, compiled, parameters):
# also correct for "current_date" compatible as column default, value differences
currenttime = func.current_date(type=Date, engine=db);
if is_oracle:
- ts = db.func.trunc(func.sysdate(), column("'DAY'")).scalar()
+ ts = db.func.trunc(func.sysdate(), literal_column("'DAY'")).scalar()
f = select([func.count(1) + 5], engine=db).scalar()
f2 = select([func.count(1) + 14], engine=db).scalar()
# TODO: engine propigation across nested functions not working
- currenttime = func.trunc(currenttime, column("'DAY'"), engine=db)
+ currenttime = func.trunc(currenttime, literal_column("'DAY'"), engine=db)
def1 = currenttime
- def2 = func.trunc(text("sysdate"), column("'DAY'"))
+ def2 = func.trunc(text("sysdate"), literal_column("'DAY'"))
deftype = Date
elif use_function_defaults:
f = select([func.count(1) + 5], engine=db).scalar()
testobj1 = pickleable.Foo('im foo 1')
testobj2 = pickleable.Foo('im foo 2')
- if db.name == 'oracle':
- stream1 =self.load_stream('binary_data_one.dat', len=2000)
- stream2 =self.load_stream('binary_data_two.dat', len=2000)
- else:
- stream1 =self.load_stream('binary_data_one.dat')
- stream2 =self.load_stream('binary_data_two.dat')
+ stream1 =self.load_stream('binary_data_one.dat')
+ stream2 =self.load_stream('binary_data_two.dat')
binary_table.insert().execute(primary_id=1, misc='binary_data_one.dat', data=stream1, data_slice=stream1[0:100], pickled=testobj1)
binary_table.insert().execute(primary_id=2, misc='binary_data_two.dat', data=stream2, data_slice=stream2[0:99], pickled=testobj2)
binary_table.insert().execute(primary_id=3, misc='binary_data_two.dat', data=None, data_slice=stream2[0:99], pickled=None)
db_uri = 'oracle://scott:tiger@127.0.0.1:1521'
elif DBTYPE == 'oracle8':
db_uri = 'oracle://scott:tiger@127.0.0.1:1521'
- opts = {'use_ansi':False, 'auto_setinputsizes':True}
+ opts = {'use_ansi':False}
elif DBTYPE == 'mssql':
db_uri = 'mssql://scott:tiger@SQUAWK\\SQLEXPRESS/test'
elif DBTYPE == 'firebird':