       SQLRETURN ret;
       Py_BEGIN_ALLOW_THREADS
       ret = SQLSetStmtAttr(cursor->hstmt, SQL_ATTR_NOSCAN, (SQLPOINTER)noscan, 0);
-diff -c -r pyodbc-2.1.12/src/cursor.h pyodbc-2.1.12v/src/cursor.h
+diff -c -N -r pyodbc-2.1.12/src/cursor.h pyodbc-2.1.12v/src/cursor.h
 *** pyodbc-2.1.12/src/cursor.h	2011-10-17 08:45:30.000000000 -0400
 --- pyodbc-2.1.12v/src/cursor.h	2011-12-19 11:52:50.000000000 -0500
 ***************

      if (timeout == -1 && PyErr_Occurred())
          return -1;
      if (timeout < 0)
diff -c -r pyodbc-2.1.12/src/connection.h pyodbc-2.1.12v/src/connection.h
*** pyodbc-2.1.12/src/connection.h	2011-10-17 08:45:30.000000000 -0400
--- pyodbc-2.1.12v/src/connection.h	2011-12-19 13:45:11.000000000 -0500
***************

  };
  
  
diff -c -N -r pyodbc-2.1.12/src/virtuoso.cpp pyodbc-2.1.12v/src/virtuoso.cpp
*** pyodbc-2.1.12/src/virtuoso.cpp	1969-12-31 19:00:00.000000000 -0500
--- pyodbc-2.1.12v/src/virtuoso.cpp	2011-12-19 12:58:09.000000000 -0500
***************
*** 0 ****
--- 1,34 ----
+ #include "pyodbc.h"
+ #include "virtuoso.h"
+ 
+ bool
+ isVirtuoso(HDBC hdbc)
+ {
+     char buf[0x1000];
+     SQLSMALLINT len;
+     SQLRETURN ret;
+ 
+     ret = SQLGetInfo(hdbc, (SQLUSMALLINT)SQL_DBMS_NAME, buf, sizeof(buf), &len);
+     if (!SQL_SUCCEEDED(ret))
+ 	return false;
+     if (!strncasecmp(buf, "OpenLink Virtuoso", sizeof(buf))) {
+ 	return true;
+     }
+ 
+     return false;
+ }
+ 
+ bool
+ isSPASQL(PyObject *pSql)
+ {
+     char *query = PyString_AS_STRING(pSql);
+ 
+     if (!query)
+ 	return false;
+     while (*query && isspace(*query))
+ 	query++;
+ 
+     if (!strncasecmp(query, "SPARQL", 6))
+ 	return true;
+     return false;
+ }
diff -c -N -r pyodbc-2.1.12/src/virtuoso.h pyodbc-2.1.12v/src/virtuoso.h
*** pyodbc-2.1.12/src/virtuoso.h	1969-12-31 19:00:00.000000000 -0500
--- pyodbc-2.1.12v/src/virtuoso.h	2012-05-16 10:20:04.000000000 -0400
***************
*** 0 ****
--- 1,53 ----
+ #ifndef VIRTUOSO_H
+ #define VIRTUOSO_H
+ 
+ #ifdef HAVE_IODBC
+ #include <iodbcext.h>
+ #endif
+ 
+ /*
+  *  Include Virtuoso ODBC extensions for SPASQL result set
+  */
+ #if !defined (SQL_DESC_COL_DV_TYPE)
+ 
+ /*
+  *  ODBC extensions for SQLGetDescField
+  */
+ # define SQL_DESC_COL_DV_TYPE               1057L
+ # define SQL_DESC_COL_DT_DT_TYPE            1058L
+ # define SQL_DESC_COL_LITERAL_ATTR          1059L
+ # define SQL_DESC_COL_BOX_FLAGS             1060L
+ # define SQL_DESC_COL_LITERAL_LANG          1061L
+ # define SQL_DESC_COL_LITERAL_TYPE          1062L
+ 
+ /*
+  *  Virtuoso - ODBC SQL_DESC_COL_DV_TYPE
+  */
+ 
+ # define VIRTUOSO_DV_ANY  242
+ # define VIRTUOSO_DV_DATE  129
+ # define VIRTUOSO_DV_DATETIME  211
+ # define VIRTUOSO_DV_DB_NULL  204
+ # define VIRTUOSO_DV_DOUBLE_FLOAT  191
+ # define VIRTUOSO_DV_IRI_ID  243
+ # define VIRTUOSO_DV_LONG_INT  189
+ # define VIRTUOSO_DV_NUMERIC  219
+ # define VIRTUOSO_DV_RDF  246
+ # define VIRTUOSO_DV_SINGLE_FLOAT  190
+ # define VIRTUOSO_DV_STRING  182
+ # define VIRTUOSO_DV_TIME  210
+ # define VIRTUOSO_DV_TIMESTAMP  128
+ 
+ /*
+  *  Virtuoso - ODBC SQL_DESC_COL_DT_DT_TYPE
+  */
+ # define VIRTUOSO_DT_TYPE_DATETIME          1
+ # define VIRTUOSO_DT_TYPE_DATE              2
+ # define VIRTUOSO_DT_TYPE_TIME              3
+ 
+ #endif /* SQL_DESC_COL_DV_TYPE */
+ 
+ bool isVirtuoso(HDBC);
+ bool isSPASQL(PyObject *);
+ 
+ #endif /* VIRTUOSO_H */
diff -c -N -r pyodbc-2.1.12/tests/mysqltests.py pyodbc-2.1.12v/tests/mysqltests.py
*** pyodbc-2.1.12/tests/mysqltests.py	2011-10-17 08:45:30.000000000 -0400
--- pyodbc-2.1.12v/tests/mysqltests.py	2011-12-19 15:08:39.000000000 -0500
***************
*** 430,436 ****
          self.assertEquals(result, value)
