mirror of
https://github.com/sqlalchemy/sqlalchemy.git
synced 2026-06-04 23:06:24 -04:00
- _cursor_execute() will close the cursor on error; oracle doesn't allow double close
- ensure no iterator changed size issues in testing.engines
This commit is contained in:
@@ -240,20 +240,20 @@ class DefaultDialect(interfaces.Dialect):
|
||||
parameters = {}
|
||||
|
||||
def check_unicode(test):
|
||||
cursor = connection.connection.cursor()
|
||||
statement = cast_to(expression.select([test]).compile(dialect=self))
|
||||
try:
|
||||
try:
|
||||
statement = cast_to(expression.select([test]).compile(dialect=self))
|
||||
connection._cursor_execute(cursor, statement, parameters)
|
||||
row = cursor.fetchone()
|
||||
|
||||
return isinstance(row[0], util.text_type)
|
||||
except exc.DBAPIError as de:
|
||||
util.warn("Exception attempting to "
|
||||
"detect unicode returns: %r" % de)
|
||||
return False
|
||||
finally:
|
||||
cursor = connection.connection.cursor()
|
||||
connection._cursor_execute(cursor, statement, parameters)
|
||||
row = cursor.fetchone()
|
||||
cursor.close()
|
||||
except exc.DBAPIError as de:
|
||||
# note that _cursor_execute() will have closed the cursor
|
||||
# if an exception is thrown.
|
||||
util.warn("Exception attempting to "
|
||||
"detect unicode returns: %r" % de)
|
||||
return False
|
||||
else:
|
||||
return isinstance(row[0], util.text_type)
|
||||
|
||||
tests = [
|
||||
# detect plain VARCHAR
|
||||
|
||||
@@ -61,7 +61,7 @@ class ConnectionKiller(object):
|
||||
# is collecting in finalize_fairy, deadlock.
|
||||
# not sure if this should be if pypy/jython only.
|
||||
# note that firebird/fdb definitely needs this though
|
||||
for conn, rec in self.conns:
|
||||
for conn, rec in list(self.conns):
|
||||
self._safe(conn.rollback)
|
||||
|
||||
def _stop_test_ctx(self):
|
||||
@@ -81,7 +81,7 @@ class ConnectionKiller(object):
|
||||
|
||||
def _stop_test_ctx_aggressive(self):
|
||||
self.close_all()
|
||||
for conn, rec in self.conns:
|
||||
for conn, rec in list(self.conns):
|
||||
self._safe(conn.close)
|
||||
rec.connection = None
|
||||
|
||||
|
||||
Reference in New Issue
Block a user