- _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:
Mike Bayer
2014-01-13 21:20:54 -05:00
parent bd74f81bb5
commit 52b25c5319
2 changed files with 14 additions and 14 deletions
+12 -12
View File
@@ -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
+2 -2
View File
@@ -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