Hi, After some discussion[1] on the FreeTDS list, the attached patch[2] should fix this.
[1] http://lists.ibiblio.org/pipermail/freetds/2013q3/028493.html [2] https://gist.github.com/msabramo/6501240 -- James Andrewartha Network & Projects Engineer Christ Church Grammar School Claremont, Western Australia Ph. (08) 9442 1757 Mob. 0424 160 877
diff --git a/mssqldbmodule.c b/mssqldbmodule.c index 151bc2c..7081715 100644 --- a/mssqldbmodule.c +++ b/mssqldbmodule.c @@ -1934,12 +1934,12 @@ PyObject *get_result(_mssql_connection *conn) { // find a result set that has at least one column conn->last_dbresults = SUCCEED; - while (conn->last_dbresults == SUCCEED && - (conn->num_columns = dbnumcols(conn->dbproc)) <= 0) { + do { Py_BEGIN_ALLOW_THREADS conn->last_dbresults = dbresults(conn->dbproc); Py_END_ALLOW_THREADS - } + } while (conn->last_dbresults == SUCCEED && + (conn->num_columns = dbnumcols(conn->dbproc)) <= 0); check_cancel_and_raise(conn->last_dbresults, conn);