Xiang Li
Implementation of a proxy ODBC32 dll.

diff --git a/Makefile.in b/Makefile.in
index 10c4863..a219ffe 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -50,6 +50,7 @@
 	dlls/msnet32 \
 	dlls/msvideo \
 	dlls/ntdll \
+	dlls/odbc32 \
 	dlls/ole32 \
 	dlls/oleaut32 \
 	dlls/olecli \
@@ -163,6 +164,7 @@
 	dlls/msnet32/msnet32.o \
 	dlls/msvideo/msvideo.o \
 	dlls/ntdll/ntdll.o \
+	dlls/odbc32/odbc32.o \
 	dlls/ole32/ole32.o \
 	dlls/oleaut32/oleaut32.o \
 	dlls/olecli/olecli.o \
diff --git a/configure b/configure
index d6d8f14..884a0ac 100755
--- a/configure
+++ b/configure
@@ -5858,6 +5858,7 @@
 dlls/msnet32/Makefile
 dlls/msvideo/Makefile
 dlls/ntdll/Makefile
+dlls/odbc32/Makefile
 dlls/ole32/Makefile
 dlls/oleaut32/Makefile
 dlls/olecli/Makefile
@@ -6064,6 +6065,7 @@
 dlls/msnet32/Makefile
 dlls/msvideo/Makefile
 dlls/ntdll/Makefile
+dlls/odbc32/Makefile
 dlls/ole32/Makefile
 dlls/oleaut32/Makefile
 dlls/olecli/Makefile
diff --git a/configure.in b/configure.in
index 8ae78ea..d6e82f5 100644
--- a/configure.in
+++ b/configure.in
@@ -883,6 +883,7 @@
 dlls/msnet32/Makefile
 dlls/msvideo/Makefile
 dlls/ntdll/Makefile
+dlls/odbc32/Makefile
 dlls/ole32/Makefile
 dlls/oleaut32/Makefile
 dlls/olecli/Makefile
diff --git a/dlls/Makefile.in b/dlls/Makefile.in
index 4a865a9..991fca1 100644
--- a/dlls/Makefile.in
+++ b/dlls/Makefile.in
@@ -19,6 +19,7 @@
 	msnet32 \
 	msvideo \
 	ntdll \
+	odbc32 \
 	ole32 \
 	oleaut32 \
 	olecli \
diff --git a/dlls/odbc32/.cvsignore b/dlls/odbc32/.cvsignore
new file mode 100644
index 0000000..4d7688f
--- /dev/null
+++ b/dlls/odbc32/.cvsignore
@@ -0,0 +1,2 @@
+Makefile
+odbc32.spec.c
diff --git a/dlls/odbc32/Makefile.in b/dlls/odbc32/Makefile.in
new file mode 100644
index 0000000..4232def
--- /dev/null
+++ b/dlls/odbc32/Makefile.in
@@ -0,0 +1,18 @@
+DEFS      = @DLLFLAGS@ -D__WINE__
+TOPSRCDIR = @top_srcdir@
+TOPOBJDIR = ../..
+SRCDIR    = @srcdir@
+VPATH     = @srcdir@
+MODULE    = odbc32
+
+SPEC_SRCS = odbc32.spec
+
+C_SRCS = \
+	proxyodbc.c 
+
+all: $(MODULE).o
+
+@MAKE_RULES@
+
+### Dependencies:
+
diff --git a/dlls/odbc32/odbc32.spec b/dlls/odbc32/odbc32.spec
new file mode 100644
index 0000000..846b549
--- /dev/null
+++ b/dlls/odbc32/odbc32.spec
@@ -0,0 +1,179 @@
+name	odbc32
+type	win32
+init    MAIN_OdbcInit
+
+001 stdcall SQLAllocConnect(long ptr) SQLAllocConnect
+002 stdcall SQLAllocEnv(ptr)  SQLAllocEnv
+003 stdcall SQLAllocStmt(long ptr) SQLAllocStmt
+004 stdcall SQLBindCol(long long long ptr long ptr) SQLBindCol
+005 stdcall SQLCancel(long) SQLCancel
+006 stdcall SQLColAttributes(long long long ptr long ptr ptr) SQLColAttributes
+007 stdcall SQLConnect(long str long str long str long) SQLConnect
+008 stdcall SQLDescribeCol(long long str long ptr ptr ptr ptr ptr) SQLDescribeCol
+009 stdcall SQLDisconnect(long) SQLDisconnect
+010 stdcall SQLError(long long long str ptr str long ptr) SQLError
+011 stdcall SQLExecDirect(long str long) SQLExecDirect
+012 stdcall SQLExecute(long) SQLExecute
+013 stdcall SQLFetch(long) SQLFetch
+014 stdcall SQLFreeConnect(long) SQLFreeConnect
+015 stdcall SQLFreeEnv(long) SQLFreeEnv
+016 stdcall SQLFreeStmt(long long ) SQLFreeStmt
+017 stdcall SQLGetCursorName(long str long ptr) SQLGetCursorName
+018 stdcall SQLNumResultCols(long ptr) SQLNumResultCols
+019 stdcall SQLPrepare(long str long) SQLPrepare
+020 stdcall SQLRowCount(long ptr) SQLRowCount
+021 stdcall SQLSetCursorName(long str long) SQLSetCursorName
+022 stdcall SQLSetParam(long long long long long long ptr ptr) SQLSetParam
+023 stdcall SQLTransact(long long long) SQLTransact
+024 stdcall SQLAllocHandle(long long ptr) SQLAllocHandle
+025 stdcall SQLBindParam(long long long long long long ptr ptr) SQLBindParam
+026 stdcall SQLCloseCursor(long) SQLCloseCursor
+027 stdcall SQLColAttribute(long long long ptr long ptr ptr) SQLColAttribute
+028 stdcall SQLCopyDesc(long long) SQLCopyDesc
+029 stdcall SQLEndTran(long long long) SQLEndTran
+030 stdcall SQLFetchScroll(long long long) SQLFetchScroll
+031 stdcall SQLFreeHandle(long long) SQLFreeHandle
+032 stdcall SQLGetConnectAttr(long long ptr ptr) SQLGetConnectAttr
+033 stdcall SQLGetDescField(long long long ptr long ptr) SQLGetDescField
+034 stdcall SQLGetDescRec(long long str long ptr ptr ptr ptr ptr ptr ptr) SQLGetDescRec
+035 stdcall SQLGetDiagField(long long long long ptr long ptr) SQLGetDiagField
+036 stdcall SQLGetDiagRec(long long long str ptr str long ptr) SQLGetDiagRec
+037 stdcall SQLGetEnvAttr(long long ptr long ptr) SQLGetEnvAttr
+038 stdcall SQLGetStmtAttr(long long ptr long ptr) SQLGetStmtAttr
+039 stdcall SQLSetConnectAttr(long long ptr long) SQLSetConnectAttr
+040 stdcall SQLColumns(long str long str long str long str long) SQLColumns
+041 stdcall SQLDriverConnect(long long str long str long str long) SQLDriverConnect
+042 stdcall SQLGetConnectOption(long long ptr) SQLGetConnectOption
+043 stdcall SQLGetData(long long long ptr long ptr) SQLGetData
+044 stdcall SQLGetFunctions(long long ptr) SQLGetFunctions
+045 stdcall SQLGetInfo(long long ptr long ptr) SQLGetInfo
+046 stdcall SQLGetStmtOption(long long ptr) SQLGetStmtOption
+047 stdcall SQLGetTypeInfo(long long) SQLGetTypeInfo
+048 stdcall SQLParamData(long ptr) SQLParamData
+049 stdcall SQLPutData(long ptr long) SQLPutData
+050 stdcall SQLSetConnectOption(long long long) SQLSetConnectOption
+051 stdcall SQLSetStmtOption(long long long) SQLSetStmtOption
+052 stdcall SQLSpecialColumns(long long str long str long str long long long) SQLSpecialColumns
+053 stdcall SQLStatistics(long str long str long str long long long) SQLStatistics
+054 stdcall SQLTables(long str long str long str long str long) SQLTables
+055 stdcall SQLBrowseConnect(long str long str long ptr) SQLBrowseConnect
+056 stdcall SQLColumnPrivileges(long str long str long str long str long) SQLColumnPrivileges
+057 stdcall SQLDataSources(long long str long ptr str long ptr) SQLDataSources
+058 stdcall SQLDescribeParam(long long ptr ptr ptr ptr) SQLDescribeParam
+059 stdcall SQLExtendedFetch(long long long ptr ptr) SQLExtendedFetch
+060 stdcall SQLForeignKeys(long str long str long str long str long str long str long) SQLForeignKeys
+061 stdcall SQLMoreResults(long str long str long ptr) SQLMoreResults
+062 stdcall SQLNativeSql(long str long str long str long) SQLNativeSql
+063 stdcall SQLNumParams(long ptr) SQLNumParams
+064 stdcall SQLParamOptions(long str long str long str long) SQLParamOptions
+065 stdcall SQLPrimaryKeys(long str long str long str long) SQLPrimaryKeys
+066 stdcall SQLProcedureColumns(long str long str long str long str long) SQLProcedureColumns
+067 stdcall SQLProcedures(long str long str long str long) SQLProcedures
+068 stdcall SQLSetPos(long long long long) SQLSetPos
+069 stdcall SQLSetScrollOptions(long long long long) SQLSetScrollOptions
+070 stdcall SQLTablePrivileges(long str long str long str long) SQLTablePrivileges
+071 stdcall SQLDrivers(long long str long ptr str long ptr) SQLDrivers
+072 stdcall SQLBindParameter(long long long long long long long ptr long ptr) SQLBindParameter
+073 stdcall SQLSetDescField(long long long ptr long) SQLSetDescField
+074 stdcall SQLSetDescRec(long long long long long long long ptr ptr ptr) SQLSetDescRec
+075 stdcall SQLSetEnvAttr(long long ptr long) SQLSetEnvAttr
+076 stdcall SQLSetStmtAttr(long long ptr long) SQLSetStmtAttr
+077 stdcall SQLAllocHandleStd(long long ptr) SQLAllocHandleStd
+078 stdcall SQLBulkOperations(long long) SQLBulkOperations
+079 stub    CloseODBCPerfData
+080 stub    CollectODBCPerfData
+081 stub    CursorLibLockDbc
+082 stub    CursorLibLockDesc
+083 stub    CursorLibLockStmt
+084 stub    ODBCGetTryWaitValue
+085 stub    CursorLibTransact
+086 stub    ODBSetTryWaitValue
+087 stub    LockHandle
+088 stub    ODBCInternalConnectW
+089 stub    ODBCSharedPerfMon
+090 stub    ODBCSharedVSFlag
+091 stub    OpenODBCPerfData
+092 stub    PostComponentError
+093 stub    PostODBCComponentError
+094 stub    PostODBCError
+095 stub    SearchStatusCode
+096 stub    VFreeErrors
+097 stub    VRetrieveDriverErrorsRowCol
+098 stub    ValidateErrorQueue
+099 stub    SQLColAttributesW
+100 stub    SQLConnectW
+101 stub    SQLDescribeColW
+102 stub    SQLErrorW
+103 stub    SQLExecDirectW
+104 stub    SQLGetCursorNameW
+105 stub    SQLPrepareW
+106 stub    SQLSetCursorNameW
+107 stub    SQLColAttributeW
+108 stub    SQLGetConnectAttrW
+109 stub    SQLGetDescFieldW
+110 stub    SQLGetDescRecW
+111 stub    SQLGetDiagFieldW
+112 stub    SQLGetDiagRecW
+113 stub    SQLGetStmtAttrW
+114 stub    SQLSetConnectAttrW
+115 stub    SQLColumnsW
+116 stub    SQLDriverConnectW
+117 stub    SQLGetConnectOptionW
+118 stub    SQLGetInfoW
+119 stub    SQLGetTypeInfoW
+120 stub    SQLSetConnectOptionW
+121 stub    SQLSpecialColumnsA
+122 stub    SQLStatisticsW
+123 stub    SQLTablesW
+124 stub    SQLBrowseConnectW
+125 stub    SQLDataSourcesW
+126 stub    SQLColumnPrivilegesW
+127 stub    SQLForeignKeysW
+128 stub    SQLNativeSqlW
+129 stub    SQLPrimaryKeysW
+130 stub    SQLProcedureColumnsW
+131 stub    SQLProceduresW
+132 stub    SQLTablePrivilegesW
+133 stub    SQLDriversW
+134 stub    SQLSetDescFieldW
+135 stub    SQLSetStmtAttrW
+136 stub    SQLColAttributesW
+137 stub    SQLConnectA
+138 stub    SQLDescribeColA
+139 stub    SQLErrorA
+140 stub    SQLExecDirectA
+141 stub    SQLGetCursorNameA
+142 stub    SQLPrepareA
+143 stub    SQLSetCursorNameA
+144 stub    SQLColAttributeA
+145 stub    SQLGetConnectAttrA
+146 stub    SQLGetDescFieldA
+147 stub    SQLGetDescRecA
+148 stub    SQLGetDiagFieldA
+149 stub    SQLGetDiagRecA
+150 stub    SQLGetStmtAttrA
+151 stub    SQLSetConnectAttrA
+152 stub    SQLColumnsA
+153 stub    SQLDriverConnectA
+154 stub    SQLGetConnectOptionA
+155 stub    SQLGetInfoA
+156 stub    SQLGetTypeInfoA
+157 stub    SQLSetConnectOptionA
+158 stub    SQLSpecialColumnsA
+159 stub    SQLStatisticsA
+160 stub    SQLTablesA
+161 stub    SQLBrowseConnectA
+162 stub    SQLColumnPrivilegesA
+163 stub    SQLDataSourcesA
+164 stub    SQLForeignKeysA
+165 stub    SQLNativeSqlA
+166 stub    SQLPrimaryKeysA
+167 stub    SQLProcedureColumnsA
+168 stub    SQLProceduresA
+169 stub    SQLTablePrivilegesA
+170 stub    SQLDriversA
+171 stub    SQLSetDescFieldA
+172 stub    SQLSetStmtAttrA
+173 stub    ODBCSharedTraceFlag
+174 stub    ODBCQualifyFileDSNW
+  
diff --git a/dlls/odbc32/proxyodbc.c b/dlls/odbc32/proxyodbc.c
new file mode 100644
index 0000000..3e8ba4e
--- /dev/null
+++ b/dlls/odbc32/proxyodbc.c
@@ -0,0 +1,1825 @@
+/*
+ * Win32 ODBC functions
+ * 
+ * Proxy ODBC driver manager.  This manager delegates all ODBC calls to a real ODBC driver manager which is either:
+ *  	1) its name is defined in the environment variable LIB_ODBC_DRIVER_MANAGER
+ *	2) if LIB_ODBC_DRIVER_MANAGER is not defined, a default library libodbc.so will be used.
+ *
+ * Xiang Li, Corel Corporation, Nov. 12, 1999
+ *
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <dlfcn.h>
+#include <string.h>
+
+#include "winbase.h"
+#include "debugtools.h"
+
+#ifndef _WINDOWS
+#define _WINDOWS
+#endif
+
+typedef char* 		GUID;  //This definition is in sqltypes.h, but if _WINDOWS is defined, this is skipped.
+
+#include "sql.h"
+#include "sqltypes.h"
+#include "sqlext.h"
+
+#include "proxyodbc.h"
+
+/*#define SQLRETURNTYPE SQLRETURN  SQL_API*/
+#define SQLRETURNTYPE SQLRETURN WINAPI
+
+DEFAULT_DEBUG_CHANNEL(odbc);
+
+static DM_FUNC  template_func[] =
+{
+    /* 00 */ { SQL_API_SQLALLOCCONNECT,      "SQLAllocConnect", SQLAllocConnect },
+    /* 01 */ { SQL_API_SQLALLOCENV,          "SQLAllocEnv", SQLAllocEnv  },
+    /* 02 */ { SQL_API_SQLALLOCHANDLE,       "SQLAllocHandle", SQLAllocHandle },
+    /* 03 */ { SQL_API_SQLALLOCSTMT,         "SQLAllocStmt", SQLAllocStmt },
+    /* 04 */ { SQL_API_SQLALLOCHANDLESTD,    "SQLAllocHandleStd", SQLAllocHandleStd },
+    /* 05 */ { SQL_API_SQLBINDCOL,           "SQLBindCol", SQLBindCol },
+    /* 06 */ { SQL_API_SQLBINDPARAM,         "SQLBindParam", SQLBindParam },
+    /* 07 */ { SQL_API_SQLBINDPARAMETER,     "SQLBindParameter", SQLBindParameter },
+    /* 08 */ { SQL_API_SQLBROWSECONNECT,     "SQLBrowseConnect", SQLBrowseConnect },
+    /* 09 */ { SQL_API_SQLBULKOPERATIONS,    "SQLBulkOperations", SQLBulkOperations },
+    /* 10 */ { SQL_API_SQLCANCEL,            "SQLCancel", SQLCancel },
+    /* 11 */ { SQL_API_SQLCLOSECURSOR,       "SQLCloseCursor", SQLCloseCursor },
+    /* 12 */ { SQL_API_SQLCOLATTRIBUTE,      "SQLColAttribute", SQLColAttribute },
+    /* 13 */ { SQL_API_SQLCOLATTRIBUTES,     "SQLColAttributes", SQLColAttributes },
+    /* 14 */ { SQL_API_SQLCOLUMNPRIVILEGES,  "SQLColumnPrivileges", SQLColumnPrivileges },
+    /* 15 */ { SQL_API_SQLCOLUMNS,           "SQLColumns", SQLColumns },
+    /* 16 */ { SQL_API_SQLCONNECT,           "SQLConnect", SQLConnect },
+    /* 17 */ { SQL_API_SQLCOPYDESC,          "SQLCopyDesc", SQLCopyDesc },
+    /* 18 */ { SQL_API_SQLDATASOURCES,       "SQLDataSources", SQLDataSources },
+    /* 19 */ { SQL_API_SQLDESCRIBECOL,       "SQLDescribeCol", SQLDescribeCol },
+    /* 20 */ { SQL_API_SQLDESCRIBEPARAM,     "SQLDescribeParam", SQLDescribeParam },
+    /* 21 */ { SQL_API_SQLDISCONNECT,        "SQLDisconnect", SQLDisconnect },
+    /* 22 */ { SQL_API_SQLDRIVERCONNECT,     "SQLDriverConnect", SQLDriverConnect },
+    /* 23 */ { SQL_API_SQLDRIVERS,           "SQLDrivers", SQLDrivers },
+    /* 24 */ { SQL_API_SQLENDTRAN,           "SQLEndTran", SQLEndTran },
+    /* 25 */ { SQL_API_SQLERROR,             "SQLError", SQLError },
+    /* 26 */ { SQL_API_SQLEXECDIRECT,        "SQLExecDirect", SQLExecDirect },
+    /* 27 */ { SQL_API_SQLEXECUTE,           "SQLExecute", SQLExecute },
+    /* 28 */ { SQL_API_SQLEXTENDEDFETCH,     "SQLExtendedFetch", SQLExtendedFetch },
+    /* 29 */ { SQL_API_SQLFETCH,             "SQLFetch", SQLFetch },
+    /* 30 */ { SQL_API_SQLFETCHSCROLL,       "SQLFetchScroll", SQLFetchScroll },
+    /* 31 */ { SQL_API_SQLFOREIGNKEYS,       "SQLForeignKeys", SQLForeignKeys },
+    /* 32 */ { SQL_API_SQLFREEENV,           "SQLFreeEnv", SQLFreeEnv },
+    /* 33 */ { SQL_API_SQLFREEHANDLE,        "SQLFreeHandle", SQLFreeHandle },
+    /* 34 */ { SQL_API_SQLFREESTMT,          "SQLFreeStmt", SQLFreeStmt },
+    /* 35 */ { SQL_API_SQLFREECONNECT,       "SQLFreeConnect", SQLFreeConnect },
+    /* 36 */ { SQL_API_SQLGETCONNECTATTR,    "SQLGetConnectAttr", SQLGetConnectAttr },
+    /* 37 */ { SQL_API_SQLGETCONNECTOPTION,  "SQLGetConnectOption", SQLGetConnectOption },
+    /* 38 */ { SQL_API_SQLGETCURSORNAME,     "SQLGetCursorName", SQLGetCursorName },
+    /* 39 */ { SQL_API_SQLGETDATA,           "SQLGetData", SQLGetData },
+    /* 40 */ { SQL_API_SQLGETDESCFIELD,      "SQLGetDescField", SQLGetDescField },
+    /* 41 */ { SQL_API_SQLGETDESCREC,        "SQLGetDescRec", SQLGetDescRec },
+    /* 42 */ { SQL_API_SQLGETDIAGFIELD,      "SQLGetDiagField", SQLGetDiagField },
+    /* 43 */ { SQL_API_SQLGETENVATTR,        "SQLGetEnvAttr", SQLGetEnvAttr },
+    /* 44 */ { SQL_API_SQLGETFUNCTIONS,      "SQLGetFunctions", SQLGetFunctions },
+    /* 45 */ { SQL_API_SQLGETINFO,           "SQLGetInfo", SQLGetInfo },
+    /* 46 */ { SQL_API_SQLGETSTMTATTR,       "SQLGetStmtAttr", SQLGetStmtAttr },
+    /* 47 */ { SQL_API_SQLGETSTMTOPTION,     "SQLGetStmtOption", SQLGetStmtOption },
+    /* 48 */ { SQL_API_SQLGETTYPEINFO,       "SQLGetTypeInfo", SQLGetTypeInfo },
+    /* 49 */ { SQL_API_SQLMORERESULTS,       "SQLMoreResults", SQLMoreResults },
+    /* 50 */ { SQL_API_SQLNATIVESQL,         "SQLNativeSql", SQLNativeSql },
+    /* 51 */ { SQL_API_SQLNUMPARAMS,         "SQLNumParams", SQLNumParams },
+    /* 52 */ { SQL_API_SQLNUMRESULTCOLS,     "SQLNumResultCols", SQLNumResultCols },
+    /* 53 */ { SQL_API_SQLPARAMDATA,         "SQLParamData", SQLParamData },
+    /* 54 */ { SQL_API_SQLPARAMOPTIONS,      "SQLParamOptions", SQLParamOptions },
+    /* 55 */ { SQL_API_SQLPREPARE,           "SQLPrepare", SQLPrepare },
+    /* 56 */ { SQL_API_SQLPRIMARYKEYS,       "SQLPrimaryKeys", SQLPrimaryKeys },
+    /* 57 */ { SQL_API_SQLPROCEDURECOLUMNS,  "SQLProcedureColumns", SQLProcedureColumns },
+    /* 58 */ { SQL_API_SQLPROCEDURES,        "SQLProcedures", SQLProcedures },
+    /* 59 */ { SQL_API_SQLPUTDATA,           "SQLPutData", SQLPutData },
+    /* 60 */ { SQL_API_SQLROWCOUNT,          "SQLRowCount", SQLRowCount },
+    /* 61 */ { SQL_API_SQLSETCONNECTATTR,    "SQLSetConnectAttr", SQLSetConnectAttr },
+    /* 62 */ { SQL_API_SQLSETCONNECTOPTION,  "SQLSetConnectOption", SQLSetConnectOption },
+    /* 63 */ { SQL_API_SQLSETCURSORNAME,     "SQLSetCursorName", SQLSetCursorName },
+    /* 64 */ { SQL_API_SQLSETDESCFIELD,      "SQLSetDescField", SQLSetDescField },
+    /* 65 */ { SQL_API_SQLSETDESCREC,        "SQLSetDescRec", SQLSetDescRec },
+    /* 66 */ { SQL_API_SQLSETENVATTR,        "SQLSetEnvAttr", SQLSetEnvAttr },
+    /* 67 */ { SQL_API_SQLSETPARAM,          "SQLSetParam", SQLSetParam },
+    /* 68 */ { SQL_API_SQLSETPOS,            "SQLSetPos", SQLSetPos },
+    /* 69 */ { SQL_API_SQLSETSCROLLOPTIONS,  "SQLSetScrollOptions", SQLSetScrollOptions },
+    /* 70 */ { SQL_API_SQLSETSTMTATTR,       "SQLSetStmtAttr", SQLSetStmtAttr },
+    /* 71 */ { SQL_API_SQLSETSTMTOPTION,     "SQLSetStmtOption", SQLSetStmtOption },
+    /* 72 */ { SQL_API_SQLSPECIALCOLUMNS,    "SQLSpecialColumns", SQLSpecialColumns },
+    /* 73 */ { SQL_API_SQLSTATISTICS,        "SQLStatistics", SQLStatistics },
+    /* 74 */ { SQL_API_SQLTABLEPRIVILEGES,   "SQLTablePrivileges", SQLTablePrivileges },
+    /* 75 */ { SQL_API_SQLTABLES,            "SQLTables", SQLTables },
+    /* 76 */ { SQL_API_SQLTRANSACT,          "SQLTransact", SQLTransact },
+    /* 77 */ { SQL_API_SQLGETDIAGREC,        "SQLGetDiagRec", SQLGetDiagRec },
+};
+
+static PROXYHANDLE gProxyHandle = {NULL, FALSE, FALSE, FALSE, ERROR_LIBRARY_NOT_FOUND}; 
+
+SQLRETURNTYPE  SQLDummyFunc()
+{
+    TRACE("SQLDummyFunc: \n");
+    return SQL_SUCCESS;
+}
+
+/***********************************************************************
+ * MAIN_OdbcInit [Internal] Initializes the internal 'ODBC32.DLL'.
+ *
+ * PARAMS
+ *     hinstDLL    [I] handle to the 'dlls' instance
+ *     fdwReason   [I]
+ *     lpvReserved [I] reserverd, must be NULL
+ *
+ * RETURNS
+ *     Success: TRUE
+ *     Failure: FALSE
+ */
+
+BOOL WINAPI
+MAIN_OdbcInit(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
+{
+    int i;
+    TRACE("Initializing proxy ODBC: %x,%lx,%p\n", hinstDLL, fdwReason, lpvReserved);
+
+    if (fdwReason == DLL_PROCESS_ATTACH)
+    {
+       TRACE("Loading ODBC...\n");
+       if (ODBC_LoadDriverManager())
+          ODBC_LoadDMFunctions();
+    }
+    else if (fdwReason == DLL_PROCESS_DETACH)
+    {
+      TRACE("Unloading ODBC...\n");
+      if (gProxyHandle.bFunctionReady)
+      {
+         for ( i = 0; i < NUM_SQLFUNC; i ++ )
+         {
+            gProxyHandle.functions[i].func = SQLDummyFunc;
+         }
+      }
+
+      if (gProxyHandle.dmHandle)
+      {
+         dlclose(gProxyHandle.dmHandle);
+         gProxyHandle.dmHandle = NULL;
+      }
+    }
+
+    return TRUE;
+}
+
+
+/***********************************************************************
+ * ODBC_LoadDriverManager [Internal] Load ODBC library.
+ *
+ * PARAMS
+ *
+ * RETURNS
+ *     Success: TRUE
+ *     Failure: FALSE
+ */
+
+BOOL ODBC_LoadDriverManager()
+{
+   char *s = getenv("LIB_ODBC_DRIVER_MANAGER");
+
+   TRACE("\n");
+
+   gProxyHandle.bFunctionReady = FALSE;
+
+   if (s != NULL && strlen(s) > 0)
+          strcpy(gProxyHandle.dmLibName, s);
+   else
+          strcpy(gProxyHandle.dmLibName, "libodbc.so");
+
+   gProxyHandle.dmHandle = dlopen(gProxyHandle.dmLibName, RTLD_LAZY);
+
+   if (gProxyHandle.dmHandle == NULL)           /* fail to load unixODBC driver manager */
+   {
+           WARN("failed to open library %s\n", gProxyHandle.dmLibName);
+           gProxyHandle.dmLibName[0] = '\0';
+           gProxyHandle.nErrorType = ERROR_LIBRARY_NOT_FOUND;
+           return FALSE;
+   }
+   else
+   {
+      gProxyHandle.nErrorType = ERROR_FREE;
+      return TRUE;
+   }
+}
+
+
+/***********************************************************************
+ * ODBC_LoadDMFunctions [Internal] Populate function table.
+ *
+ * PARAMS
+ *
+ * RETURNS
+ *     Success: TRUE
+ *     Failure: FALSE
+ */
+
+BOOL ODBC_LoadDMFunctions()
+{
+    int i;
+
+    if (gProxyHandle.dmHandle == NULL)
+        return FALSE;
+
+    for ( i = 0; i < NUM_SQLFUNC; i ++ )
+    {
+        gProxyHandle.functions[i] = template_func[i];
+        gProxyHandle.functions[i].func = dlsym(gProxyHandle.dmHandle,
+                gProxyHandle.functions[i].name);
+
+        if (dlerror())
+        {
+            ERR("Failed to load function %s",gProxyHandle.functions[i].name);
+            gProxyHandle.functions[i].func = SQLDummyFunc;
+        }
+    }
+
+    gProxyHandle.bFunctionReady = TRUE;
+
+    return TRUE;
+}
+
+
+/*************************************************************************
+ *				SQLAllocConnect           [ODBC32.001]
+ */
+SQLRETURNTYPE  SQLAllocConnect(SQLHENV EnvironmentHandle, SQLHDBC *ConnectionHandle)
+{
+        TRACE("\n");
+
+        if (!gProxyHandle.bFunctionReady || gProxyHandle.dmHandle == NULL)
+        {
+           *ConnectionHandle = SQL_NULL_HDBC;
+           return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLALLOCCONNECT].func)
+            (EnvironmentHandle, ConnectionHandle);
+}
+
+
+/*************************************************************************
+ *				SQLAllocEnv           [ODBC32.002]
+ */
+SQLRETURNTYPE   SQLAllocEnv(SQLHENV *EnvironmentHandle)
+{
+        TRACE("\n");
+
+        if (!gProxyHandle.bFunctionReady || gProxyHandle.dmHandle == NULL)
+        {
+           *EnvironmentHandle = SQL_NULL_HENV;
+           return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLALLOCENV].func) (EnvironmentHandle);
+}
+
+
+/*************************************************************************
+ *				SQLAllocHandle           [ODBC32.024]
+ */
+SQLRETURNTYPE  SQLAllocHandle(SQLSMALLINT HandleType, SQLHANDLE InputHandle, SQLHANDLE *OutputHandle)
+{
+       TRACE(".\n");
+
+        if (!gProxyHandle.bFunctionReady || gProxyHandle.dmHandle == NULL)
+        {
+            if (gProxyHandle.nErrorType == ERROR_LIBRARY_NOT_FOUND)
+                WARN("ProxyODBC: Can not load ODBC driver manager library.\n");
+
+            if (HandleType == SQL_HANDLE_ENV)
+                *OutputHandle = SQL_NULL_HENV;
+            else if (HandleType == SQL_HANDLE_DBC)
+                *OutputHandle = SQL_NULL_HDBC;
+            else if (HandleType == SQL_HANDLE_STMT)
+                *OutputHandle = SQL_NULL_HSTMT;
+            else if (HandleType == SQL_HANDLE_DESC)
+                *OutputHandle = SQL_NULL_HDESC;
+
+            return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLALLOCHANDLE].func)
+                   (HandleType, InputHandle, OutputHandle);
+}
+
+
+/*************************************************************************
+ *				SQLAllocStmt           [ODBC32.003]
+ */
+SQLRETURNTYPE  SQLAllocStmt(SQLHDBC ConnectionHandle, SQLHSTMT *StatementHandle)
+{
+
+        TRACE("\n");
+
+        if (!gProxyHandle.bFunctionReady || gProxyHandle.dmHandle == NULL)
+        {
+           *StatementHandle = SQL_NULL_HSTMT;
+           return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLALLOCSTMT].func)
+            (ConnectionHandle, StatementHandle);
+}
+
+
+/*************************************************************************
+ *				SQLAllocHandleStd           [ODBC32.077]
+ */
+SQLRETURNTYPE SQLAllocHandleStd( SQLSMALLINT HandleType,
+                                                         SQLHANDLE InputHandle, SQLHANDLE *OutputHandle)
+{
+        TRACE("ProxyODBC: SQLAllocHandelStd.\n");
+
+        if (!gProxyHandle.bFunctionReady || gProxyHandle.dmHandle == NULL)
+        {
+            if (gProxyHandle.nErrorType == ERROR_LIBRARY_NOT_FOUND)
+                WARN("ProxyODBC: Can not load ODBC driver manager library.\n");
+
+            if (HandleType == SQL_HANDLE_ENV)
+                *OutputHandle = SQL_NULL_HENV;
+            else if (HandleType == SQL_HANDLE_DBC)
+                *OutputHandle = SQL_NULL_HDBC;
+            else if (HandleType == SQL_HANDLE_STMT)
+                *OutputHandle = SQL_NULL_HSTMT;
+            else if (HandleType == SQL_HANDLE_DESC)
+                *OutputHandle = SQL_NULL_HDESC;
+
+            return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLALLOCHANDLESTD].func)
+                   (HandleType, InputHandle, OutputHandle);
+}
+
+
+/*************************************************************************
+ *				SQLBindCol           [ODBC32.004]
+ */
+SQLRETURNTYPE  SQLBindCol(SQLHSTMT StatementHandle,
+                     SQLUSMALLINT ColumnNumber, SQLSMALLINT TargetType,
+                     SQLPOINTER TargetValue, SQLINTEGER BufferLength,
+                     SQLINTEGER *StrLen_or_Ind)
+{
+        TRACE("\n");
+
+        if (!gProxyHandle.bFunctionReady || gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLBINDCOL].func)
+            (StatementHandle, ColumnNumber, TargetType,
+            TargetValue, BufferLength, StrLen_or_Ind);
+}
+
+
+/*************************************************************************
+ *				SQLBindParam           [ODBC32.025]
+ */
+SQLRETURNTYPE  SQLBindParam(SQLHSTMT StatementHandle,
+             SQLUSMALLINT ParameterNumber, SQLSMALLINT ValueType,
+             SQLSMALLINT ParameterType, SQLUINTEGER LengthPrecision,
+             SQLSMALLINT ParameterScale, SQLPOINTER ParameterValue,
+             SQLINTEGER *StrLen_or_Ind)
+{
+        TRACE("\n");
+
+        if (!gProxyHandle.bFunctionReady || gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLBINDPARAM].func)
+                   (StatementHandle, ParameterNumber, ValueType,
+                    ParameterScale, ParameterValue, StrLen_or_Ind);
+}
+
+
+/*************************************************************************
+ *				SQLCancel           [ODBC32.005]
+ */
+SQLRETURNTYPE SQLCancel(SQLHSTMT StatementHandle)
+{
+        TRACE("\n");
+
+        if (!gProxyHandle.bFunctionReady || gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLCANCEL].func) (StatementHandle);
+}
+
+
+/*************************************************************************
+ *				SQLCloseCursor           [ODBC32.026]
+ */
+SQLRETURNTYPE   SQLCloseCursor(SQLHSTMT StatementHandle)
+{
+        TRACE("\n");
+
+        if (!gProxyHandle.bFunctionReady || gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLCLOSECURSOR].func) (StatementHandle);
+}
+
+
+/*************************************************************************
+ *				SQLColAttribute           [ODBC32.027]
+ */
+SQLRETURNTYPE  SQLColAttribute (SQLHSTMT StatementHandle,
+             SQLUSMALLINT ColumnNumber, SQLUSMALLINT FieldIdentifier,
+             SQLPOINTER CharacterAttribute, SQLSMALLINT BufferLength,
+             SQLSMALLINT *StringLength, SQLPOINTER NumericAttribute)
+{
+        TRACE("\n");
+
+        if (!gProxyHandle.bFunctionReady || gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLCOLATTRIBUTE].func)
+            (StatementHandle, ColumnNumber, FieldIdentifier,
+            CharacterAttribute, BufferLength, StringLength, NumericAttribute);
+}
+
+
+/*************************************************************************
+ *				SQLColumns           [ODBC32.040]
+ */
+SQLRETURNTYPE  SQLColumns(SQLHSTMT StatementHandle,
+             SQLCHAR *CatalogName, SQLSMALLINT NameLength1,
+             SQLCHAR *SchemaName, SQLSMALLINT NameLength2,
+             SQLCHAR *TableName, SQLSMALLINT NameLength3,
+             SQLCHAR *ColumnName, SQLSMALLINT NameLength4)
+{
+        TRACE("\n");
+
+        if (!gProxyHandle.bFunctionReady || gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLCOLUMNS].func)
+            (StatementHandle, CatalogName, NameLength1,
+            SchemaName, NameLength2, TableName, NameLength3, ColumnName, NameLength4);
+}
+
+
+/*************************************************************************
+ *				SQLConnect           [ODBC32.007]
+ */
+SQLRETURNTYPE  SQLConnect(SQLHDBC ConnectionHandle,
+             SQLCHAR *ServerName, SQLSMALLINT NameLength1,
+             SQLCHAR *UserName, SQLSMALLINT NameLength2,
+             SQLCHAR *Authentication, SQLSMALLINT NameLength3)
+{
+        TRACE("\n");
+
+        if (!gProxyHandle.bFunctionReady || gProxyHandle.dmHandle == NULL)
+        {
+                  return SQL_ERROR;
+        }
+
+        strcpy(gProxyHandle.ServerName, ServerName);
+        strcpy(gProxyHandle.UserName, UserName);
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLCONNECT].func)
+            (ConnectionHandle, ServerName, NameLength1,
+            UserName, NameLength2, Authentication, NameLength3);
+}
+
+
+/*************************************************************************
+ *				SQLCopyDesc           [ODBC32.028]
+ */
+SQLRETURNTYPE  SQLCopyDesc(SQLHDESC SourceDescHandle, SQLHDESC TargetDescHandle)
+{
+        TRACE("\n");
+
+        if (!gProxyHandle.bFunctionReady || gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLCOPYDESC].func)
+            (SourceDescHandle, TargetDescHandle);
+}
+
+
+/*************************************************************************
+ *				SQLDataSources           [ODBC32.057]
+ */
+SQLRETURNTYPE  SQLDataSources(SQLHENV EnvironmentHandle,
+             SQLUSMALLINT Direction, SQLCHAR *ServerName,
+             SQLSMALLINT BufferLength1, SQLSMALLINT *NameLength1,
+             SQLCHAR *Description, SQLSMALLINT BufferLength2,
+             SQLSMALLINT *NameLength2)
+{
+        SQLRETURN ret;
+
+        TRACE("EnvironmentHandle = %p\n", (LPVOID)EnvironmentHandle);
+
+        if (!gProxyHandle.bFunctionReady || gProxyHandle.dmHandle == NULL)
+        {
+            ERR("Error: empty dm handle (gProxyHandle.dmHandle == NULL)\n");
+            return SQL_ERROR;
+        }
+
+        ret = (gProxyHandle.functions[SQLAPI_INDEX_SQLDATASOURCES].func)
+            (EnvironmentHandle, Direction, ServerName,
+            BufferLength1, NameLength1, Description, BufferLength2, NameLength2);
+
+        if (TRACE_ON(odbc))
+        {
+           TRACE("returns: %d \t", ret);
+           if (*NameLength1 > 0)
+             TRACE("DataSource = %s,", ServerName);
+           if (*NameLength2 > 0)
+             TRACE(" Description = %s\n", Description);
+        }
+
+        return ret;
+}
+
+
+/*************************************************************************
+ *				SQLDescribeCol           [ODBC32.008]
+ */
+SQLRETURNTYPE  SQLDescribeCol(SQLHSTMT StatementHandle,
+             SQLUSMALLINT ColumnNumber, SQLCHAR *ColumnName,
+             SQLSMALLINT BufferLength, SQLSMALLINT *NameLength,
+             SQLSMALLINT *DataType, SQLUINTEGER *ColumnSize,
+             SQLSMALLINT *DecimalDigits, SQLSMALLINT *Nullable)
+{
+        TRACE("\n");
+
+        if (!gProxyHandle.bFunctionReady || gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLDESCRIBECOL].func)
+            (StatementHandle, ColumnNumber, ColumnName,
+            BufferLength, NameLength, DataType, ColumnSize, DecimalDigits, Nullable);
+}
+
+
+/*************************************************************************
+ *				SQLDisconnect           [ODBC32.009]
+ */
+SQLRETURNTYPE SQLDisconnect(SQLHDBC ConnectionHandle)
+{
+        TRACE("\n");
+
+        if (!gProxyHandle.bFunctionReady || gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        gProxyHandle.ServerName[0] = '\0';
+        gProxyHandle.UserName[0]   = '\0';
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLDISCONNECT].func) (ConnectionHandle);
+}
+
+
+/*************************************************************************
+ *				SQLEndTran           [ODBC32.029]
+ */
+SQLRETURNTYPE  SQLEndTran(SQLSMALLINT HandleType, SQLHANDLE Handle, SQLSMALLINT CompletionType)
+{
+        TRACE("\n");
+
+        if (!gProxyHandle.bFunctionReady || gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLENDTRAN].func) (HandleType, Handle, CompletionType);
+}
+
+
+/*************************************************************************
+ *				SQLError           [ODBC32.010]
+ */
+SQLRETURNTYPE  SQLError(SQLHENV EnvironmentHandle,
+             SQLHDBC ConnectionHandle, SQLHSTMT StatementHandle,
+             SQLCHAR *Sqlstate, SQLINTEGER *NativeError,
+             SQLCHAR *MessageText, SQLSMALLINT BufferLength,
+             SQLSMALLINT *TextLength)
+{
+        TRACE("\n");
+
+        if (!gProxyHandle.bFunctionReady || gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLERROR].func)
+            (EnvironmentHandle, ConnectionHandle, StatementHandle,
+            Sqlstate, NativeError, MessageText, BufferLength, TextLength);
+}
+
+
+/*************************************************************************
+ *				SQLExecDirect           [ODBC32.011]
+ */
+SQLRETURNTYPE  SQLExecDirect(SQLHSTMT StatementHandle, SQLCHAR *StatementText, SQLINTEGER TextLength)
+{
+        TRACE("\n");
+
+        if (!gProxyHandle.bFunctionReady || gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLEXECDIRECT].func)
+            (StatementHandle, StatementText, TextLength);
+}
+
+
+/*************************************************************************
+ *				SQLExecute           [ODBC32.012]
+ */
+SQLRETURNTYPE SQLExecute(SQLHSTMT StatementHandle)
+{
+        TRACE("\n");
+
+        if (!gProxyHandle.bFunctionReady || gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLEXECUTE].func) (StatementHandle);
+}
+
+
+/*************************************************************************
+ *				SQLFetch           [ODBC32.013]
+ */
+SQLRETURNTYPE SQLFetch(SQLHSTMT StatementHandle)
+{
+        TRACE("\n");
+
+        if (!gProxyHandle.bFunctionReady || gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLFETCH].func) (StatementHandle);
+}
+
+
+/*************************************************************************
+ *				SQLFetchScroll          [ODBC32.030]
+ */
+SQLRETURNTYPE SQLFetchScroll(SQLHSTMT StatementHandle, SQLSMALLINT FetchOrientation, SQLINTEGER FetchOffset)
+{
+        TRACE("\n");
+
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLFETCHSCROLL].func)
+            (StatementHandle, FetchOrientation, FetchOffset);
+}
+
+
+/*************************************************************************
+ *				SQLFreeConnect           [ODBC32.014]
+ */
+SQLRETURNTYPE SQLFreeConnect(SQLHDBC ConnectionHandle)
+{
+        TRACE("\n");
+
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLFREECONNECT].func) (ConnectionHandle);
+}
+
+
+/*************************************************************************
+ *				SQLFreeEnv           [ODBC32.015]
+ */
+SQLRETURNTYPE SQLFreeEnv(SQLHENV EnvironmentHandle)
+{
+        SQLRETURN ret;
+
+        TRACE("\n");
+
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        ret = (gProxyHandle.functions[SQLAPI_INDEX_SQLFREEENV].func) (EnvironmentHandle);
+        /*
+        if (gProxyHandle.dmHandle)
+        {
+           dlclose(gProxyHandle.dmHandle);
+           gProxyHandle.dmHandle = NULL;
+        }
+        */
+
+        return ret;
+}
+
+
+/*************************************************************************
+ *				SQLFreeHandle           [ODBC32.031]
+ */
+SQLRETURNTYPE SQLFreeHandle(SQLSMALLINT HandleType, SQLHANDLE Handle)
+{
+        SQLRETURN ret;
+
+       TRACE("\n");
+
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        ret = (gProxyHandle.functions[SQLAPI_INDEX_SQLFREEHANDLE].func)
+            (HandleType, Handle);
+
+        if (HandleType == SQL_HANDLE_ENV)   /* it is time to close the loaded library */
+        {
+            if (gProxyHandle.dmHandle)
+            {
+               dlclose(gProxyHandle.dmHandle);
+               gProxyHandle.dmHandle = NULL;
+            }
+        }
+
+        return ret;
+}
+
+
+/*************************************************************************
+ *				SQLFreeStmt           [ODBC32.016]
+ */
+SQLRETURNTYPE SQLFreeStmt(SQLHSTMT StatementHandle, SQLUSMALLINT Option)
+{
+
+        TRACE("\n");
+
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLFREESTMT].func)
+            (StatementHandle, Option);
+}
+
+
+/*************************************************************************
+ *				SQLGetConnectAttr           [ODBC32.032]
+ */
+SQLRETURNTYPE  SQLGetConnectAttr(SQLHDBC ConnectionHandle,
+             SQLINTEGER Attribute, SQLPOINTER Value,
+             SQLINTEGER BufferLength, SQLINTEGER *StringLength)
+{
+        TRACE("\n");
+
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLGETCONNECTATTR].func)
+            (ConnectionHandle, Attribute, Value,
+            BufferLength, StringLength);
+}
+
+
+/*************************************************************************
+ *				SQLGetConnectOption       [ODBC32.042]
+ */
+SQLRETURNTYPE  SQLGetConnectOption(SQLHDBC ConnectionHandle, SQLUSMALLINT Option, SQLPOINTER Value)
+{
+        TRACE("\n");
+
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLGETCONNECTOPTION].func)
+            (ConnectionHandle, Option, Value);
+}
+
+
+/*************************************************************************
+ *				SQLGetCursorName           [ODBC32.017]
+ */
+SQLRETURNTYPE  SQLGetCursorName(SQLHSTMT StatementHandle,
+             SQLCHAR *CursorName, SQLSMALLINT BufferLength,
+             SQLSMALLINT *NameLength)
+{
+        TRACE("\n");
+
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLGETCURSORNAME].func)
+            (StatementHandle, CursorName, BufferLength, NameLength);
+}
+
+
+/*************************************************************************
+ *				SQLGetData           [ODBC32.043]
+ */
+SQLRETURNTYPE  SQLGetData(SQLHSTMT StatementHandle,
+             SQLUSMALLINT ColumnNumber, SQLSMALLINT TargetType,
+             SQLPOINTER TargetValue, SQLINTEGER BufferLength,
+             SQLINTEGER *StrLen_or_Ind)
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLGETDATA].func)
+            (StatementHandle, ColumnNumber, TargetType,
+            TargetValue, BufferLength, StrLen_or_Ind);
+}
+
+
+/*************************************************************************
+ *				SQLGetDescField           [ODBC32.033]
+ */
+SQLRETURNTYPE  SQLGetDescField(SQLHDESC DescriptorHandle,
+             SQLSMALLINT RecNumber, SQLSMALLINT FieldIdentifier,
+             SQLPOINTER Value, SQLINTEGER BufferLength,
+             SQLINTEGER *StringLength)
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLGETDESCFIELD].func)
+            (DescriptorHandle, RecNumber, FieldIdentifier,
+            Value, BufferLength, StringLength);
+}
+
+
+/*************************************************************************
+ *				SQLGetDescRec           [ODBC32.034]
+ */
+SQLRETURNTYPE  SQLGetDescRec(SQLHDESC DescriptorHandle,
+             SQLSMALLINT RecNumber, SQLCHAR *Name,
+             SQLSMALLINT BufferLength, SQLSMALLINT *StringLength,
+             SQLSMALLINT *Type, SQLSMALLINT *SubType,
+             SQLINTEGER *Length, SQLSMALLINT *Precision,
+             SQLSMALLINT *Scale, SQLSMALLINT *Nullable)
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLGETDESCREC].func)
+            (DescriptorHandle, RecNumber, Name, BufferLength,
+            StringLength, Type, SubType, Length, Precision, Scale, Nullable);
+}
+
+
+/*************************************************************************
+ *				SQLGetDiagField           [ODBC32.035]
+ */
+SQLRETURNTYPE  SQLGetDiagField(SQLSMALLINT HandleType, SQLHANDLE Handle,
+             SQLSMALLINT RecNumber, SQLSMALLINT DiagIdentifier,
+             SQLPOINTER DiagInfo, SQLSMALLINT BufferLength,
+             SQLSMALLINT *StringLength)
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLGETDIAGFIELD].func)
+            (HandleType, Handle, RecNumber, DiagIdentifier,
+            DiagInfo, BufferLength, StringLength);
+}
+
+
+/*************************************************************************
+ *				SQLGetDiagRec           [ODBC32.036]
+ */
+SQLRETURNTYPE  SQLGetDiagRec(SQLSMALLINT HandleType, SQLHANDLE Handle,
+             SQLSMALLINT RecNumber, SQLCHAR *Sqlstate,
+             SQLINTEGER *NativeError, SQLCHAR *MessageText,
+             SQLSMALLINT BufferLength, SQLSMALLINT *TextLength)
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLGETDIAGREC].func)
+            (HandleType, Handle, RecNumber, Sqlstate, NativeError,
+            MessageText, BufferLength, TextLength);
+}
+
+
+/*************************************************************************
+ *				SQLGetEnvAttr           [ODBC32.037]
+ */
+SQLRETURNTYPE  SQLGetEnvAttr(SQLHENV EnvironmentHandle,
+             SQLINTEGER Attribute, SQLPOINTER Value,
+             SQLINTEGER BufferLength, SQLINTEGER *StringLength)
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLGETENVATTR].func)
+            (EnvironmentHandle, Attribute, Value, BufferLength, StringLength);
+}
+
+
+/*************************************************************************
+ *				SQLGetFunctions           [ODBC32.044]
+ */
+SQLRETURNTYPE  SQLGetFunctions(SQLHDBC ConnectionHandle, SQLUSMALLINT FunctionId, SQLUSMALLINT *Supported)
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLGETFUNCTIONS].func)
+            (ConnectionHandle, FunctionId, Supported);
+}
+
+
+/*************************************************************************
+ *				SQLGetInfo           [ODBC32.045]
+ */
+SQLRETURNTYPE  SQLGetInfo(SQLHDBC ConnectionHandle,
+             SQLUSMALLINT InfoType, SQLPOINTER InfoValue,
+             SQLSMALLINT BufferLength, SQLSMALLINT *StringLength)
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLGETINFO].func)
+            (ConnectionHandle, InfoType, InfoValue, BufferLength, StringLength);
+}
+
+
+/*************************************************************************
+ *				SQLiGetStmtAttr           [ODBC32.038]
+ */
+SQLRETURNTYPE  SQLGetStmtAttr(SQLHSTMT StatementHandle,
+             SQLINTEGER Attribute, SQLPOINTER Value,
+             SQLINTEGER BufferLength, SQLINTEGER *StringLength)
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLGETSTMTATTR].func)
+            (StatementHandle, Attribute, Value, BufferLength, StringLength);
+}
+
+
+/*************************************************************************
+ *				SQLGetStmtOption           [ODBC32.046]
+ */
+SQLRETURNTYPE  SQLGetStmtOption(SQLHSTMT StatementHandle, SQLUSMALLINT Option, SQLPOINTER Value)
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLGETSTMTOPTION].func)
+                (StatementHandle, Option, Value);
+}
+
+
+/*************************************************************************
+ *				SQLgetTypeInfo           [ODBC32.047]
+ */
+SQLRETURNTYPE  SQLGetTypeInfo(SQLHSTMT StatementHandle, SQLSMALLINT DataType)
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLGETTYPEINFO].func)
+            (StatementHandle, DataType);
+}
+
+
+/*************************************************************************
+ *				SQLNumResultCols           [ODBC32.018]
+ */
+SQLRETURNTYPE  SQLNumResultCols(SQLHSTMT StatementHandle, SQLSMALLINT *ColumnCount)
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLNUMRESULTCOLS].func)
+            (StatementHandle, ColumnCount);
+}
+
+
+/*************************************************************************
+ *				SQLParamData           [ODBC32.048]
+ */
+SQLRETURNTYPE  SQLParamData(SQLHSTMT StatementHandle, SQLPOINTER *Value)
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLPARAMDATA].func)
+            (StatementHandle, Value);
+}
+
+
+/*************************************************************************
+ *				SQLPrepare           [ODBC32.019]
+ */
+SQLRETURNTYPE  SQLPrepare(SQLHSTMT StatementHandle, SQLCHAR *StatementText, SQLINTEGER TextLength)
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLPREPARE].func)
+            (StatementHandle, StatementText, TextLength);
+}
+
+
+/*************************************************************************
+ *				SQLPutData           [ODBC32.049]
+ */
+SQLRETURNTYPE  SQLPutData(SQLHSTMT StatementHandle, SQLPOINTER Data, SQLINTEGER StrLen_or_Ind)
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLPUTDATA].func)
+            (StatementHandle, Data, StrLen_or_Ind);
+}
+
+
+/*************************************************************************
+ *				SQLRowCount           [ODBC32.020]
+ */
+SQLRETURNTYPE SQLRowCount(SQLHSTMT StatementHandle, SQLINTEGER *RowCount)
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLROWCOUNT].func)
+            (StatementHandle, RowCount);
+}
+
+
+/*************************************************************************
+ *				SQLSetConnectAttr           [ODBC32.039]
+ */
+SQLRETURNTYPE  SQLSetConnectAttr(SQLHDBC ConnectionHandle, SQLINTEGER Attribute,
+        SQLPOINTER Value, SQLINTEGER StringLength)
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLSETCONNECTATTR].func)
+            (ConnectionHandle, Attribute, Value, StringLength);
+}
+
+
+/*************************************************************************
+ *				SQLSetConnectOption           [ODBC32.050]
+ */
+SQLRETURNTYPE  SQLSetConnectOption(SQLHDBC ConnectionHandle, SQLUSMALLINT Option, SQLUINTEGER Value)
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLSETCONNECTOPTION].func)
+            (ConnectionHandle, Option, Value);
+}
+
+
+/*************************************************************************
+ *				SQLSetCursorName           [ODBC32.021]
+ */
+SQLRETURNTYPE  SQLSetCursorName(SQLHSTMT StatementHandle, SQLCHAR *CursorName, SQLSMALLINT NameLength)
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLSETCURSORNAME].func)
+            (StatementHandle, CursorName, NameLength);
+}
+
+
+/*************************************************************************
+ *				SQLSetDescField           [ODBC32.073]
+ */
+SQLRETURNTYPE  SQLSetDescField(SQLHDESC DescriptorHandle,
+             SQLSMALLINT RecNumber, SQLSMALLINT FieldIdentifier,
+             SQLPOINTER Value, SQLINTEGER BufferLength)
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLSETDESCFIELD].func)
+            (DescriptorHandle, RecNumber, FieldIdentifier, Value, BufferLength);
+}
+
+
+/*************************************************************************
+ *				SQLSetDescRec           [ODBC32.074]
+ */
+SQLRETURNTYPE  SQLSetDescRec(SQLHDESC DescriptorHandle,
+             SQLSMALLINT RecNumber, SQLSMALLINT Type,
+             SQLSMALLINT SubType, SQLINTEGER Length,
+             SQLSMALLINT Precision, SQLSMALLINT Scale,
+             SQLPOINTER Data, SQLINTEGER *StringLength,
+             SQLINTEGER *Indicator)
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLSETDESCREC].func)
+            (DescriptorHandle, RecNumber, Type, SubType, Length,
+            Precision, Scale, Data, StringLength, Indicator);
+}
+
+
+/*************************************************************************
+ *				SQLSetEnvAttr           [ODBC32.075]
+ */
+SQLRETURNTYPE  SQLSetEnvAttr(SQLHENV EnvironmentHandle,
+             SQLINTEGER Attribute, SQLPOINTER Value,
+             SQLINTEGER StringLength)
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLSETENVATTR].func)
+            (EnvironmentHandle, Attribute, Value, StringLength);
+}
+
+
+/*************************************************************************
+ *				SQLSetParam           [ODBC32.022]
+ */
+SQLRETURNTYPE  SQLSetParam(SQLHSTMT StatementHandle,
+             SQLUSMALLINT ParameterNumber, SQLSMALLINT ValueType,
+             SQLSMALLINT ParameterType, SQLUINTEGER LengthPrecision,
+             SQLSMALLINT ParameterScale, SQLPOINTER ParameterValue,
+             SQLINTEGER *StrLen_or_Ind)
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLSETPARAM].func)
+            (StatementHandle, ParameterNumber, ValueType, ParameterType, LengthPrecision,
+             ParameterScale, ParameterValue, StrLen_or_Ind);
+}
+
+
+/*************************************************************************
+ *				SQLSetStmtAttr           [ODBC32.076]
+ */
+SQLRETURNTYPE  SQLSetStmtAttr(SQLHSTMT StatementHandle,
+                 SQLINTEGER Attribute, SQLPOINTER Value,
+                 SQLINTEGER StringLength)
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLSETSTMTATTR].func)
+            (StatementHandle, Attribute, Value, StringLength);
+}
+
+
+/*************************************************************************
+ *				SQLSetStmtOption           [ODBC32.051]
+ */
+SQLRETURNTYPE  SQLSetStmtOption(SQLHSTMT StatementHandle, SQLUSMALLINT Option, SQLUINTEGER Value)
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLSETSTMTOPTION].func)
+            (StatementHandle, Option, Value);
+}
+
+
+/*************************************************************************
+ *				SQLSpecialColumns           [ODBC32.052]
+ */
+SQLRETURNTYPE  SQLSpecialColumns(SQLHSTMT StatementHandle,
+             SQLUSMALLINT IdentifierType, SQLCHAR *CatalogName,
+             SQLSMALLINT NameLength1, SQLCHAR *SchemaName,
+             SQLSMALLINT NameLength2, SQLCHAR *TableName,
+             SQLSMALLINT NameLength3, SQLUSMALLINT Scope,
+             SQLUSMALLINT Nullable)
+{
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLSPECIALCOLUMNS].func)
+            (StatementHandle, IdentifierType, CatalogName, NameLength1, SchemaName,
+             NameLength2, TableName, NameLength3, Scope, Nullable);
+}
+
+
+/*************************************************************************
+ *				SQLStatisitics           [ODBC32.053]
+ */
+SQLRETURNTYPE  SQLStatistics(SQLHSTMT StatementHandle,
+             SQLCHAR *CatalogName, SQLSMALLINT NameLength1,
+             SQLCHAR *SchemaName, SQLSMALLINT NameLength2,
+             SQLCHAR *TableName, SQLSMALLINT NameLength3,
+             SQLUSMALLINT Unique, SQLUSMALLINT Reserved)
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLSTATISTICS].func)
+            (StatementHandle, CatalogName, NameLength1, SchemaName, NameLength2,
+             TableName, NameLength3, Unique, Reserved);
+}
+
+
+/*************************************************************************
+ *				SQLTables           [ODBC32.054]
+ */
+SQLRETURNTYPE  SQLTables(SQLHSTMT StatementHandle,
+             SQLCHAR *CatalogName, SQLSMALLINT NameLength1,
+             SQLCHAR *SchemaName, SQLSMALLINT NameLength2,
+             SQLCHAR *TableName, SQLSMALLINT NameLength3,
+             SQLCHAR *TableType, SQLSMALLINT NameLength4)
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLTABLES].func)
+                (StatementHandle, CatalogName, NameLength1,
+                SchemaName, NameLength2, TableName, NameLength3, TableType, NameLength4);
+}
+
+
+/*************************************************************************
+ *				SQLTransact           [ODBC32.023]
+ */
+SQLRETURNTYPE  SQLTransact(SQLHENV EnvironmentHandle, SQLHDBC ConnectionHandle,
+        SQLUSMALLINT CompletionType)
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLTRANSACT].func)
+            (EnvironmentHandle, ConnectionHandle, CompletionType);
+}
+
+
+/*************************************************************************
+ *				SQLBrowseConnect           [ODBC32.055]
+ */
+SQLRETURNTYPE  SQLBrowseConnect(
+    SQLHDBC            hdbc,
+    SQLCHAR               *szConnStrIn,
+    SQLSMALLINT        cbConnStrIn,
+    SQLCHAR               *szConnStrOut,
+    SQLSMALLINT        cbConnStrOutMax,
+    SQLSMALLINT       *pcbConnStrOut)
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLBROWSECONNECT].func)
+                (hdbc, szConnStrIn, cbConnStrIn, szConnStrOut, cbConnStrOutMax, pcbConnStrOut);
+}
+
+
+/*************************************************************************
+ *				SQLBulkOperations           [ODBC32.078]
+ */
+SQLRETURNTYPE   SQLBulkOperations(
+        SQLHSTMT                        StatementHandle,
+        SQLSMALLINT                     Operation)
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLBULKOPERATIONS].func)
+                   (StatementHandle, Operation);
+}
+
+
+/*************************************************************************
+ *				SQLColAttributes           [ODBC32.006]
+ */
+SQLRETURNTYPE  SQLColAttributes(
+    SQLHSTMT           hstmt,
+    SQLUSMALLINT       icol,
+    SQLUSMALLINT       fDescType,
+    SQLPOINTER         rgbDesc,
+    SQLSMALLINT        cbDescMax,
+    SQLSMALLINT           *pcbDesc,
+    SQLINTEGER            *pfDesc)
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLCOLATTRIBUTES].func)
+                   (hstmt, icol, fDescType, rgbDesc, cbDescMax, pcbDesc, pfDesc);
+}
+
+
+/*************************************************************************
+ *				SQLColumnPrivileges           [ODBC32.056]
+ */
+SQLRETURNTYPE  SQLColumnPrivileges(
+    SQLHSTMT           hstmt,
+    SQLCHAR               *szCatalogName,
+    SQLSMALLINT        cbCatalogName,
+    SQLCHAR               *szSchemaName,
+    SQLSMALLINT        cbSchemaName,
+    SQLCHAR               *szTableName,
+    SQLSMALLINT        cbTableName,
+    SQLCHAR               *szColumnName,
+    SQLSMALLINT        cbColumnName)
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLCOLUMNPRIVILEGES].func)
+                   (hstmt, szCatalogName, cbCatalogName, szSchemaName, cbSchemaName,
+                    szTableName, cbTableName, szColumnName, cbColumnName);
+}
+
+
+/*************************************************************************
+ *				SQLDescribeParam          [ODBC32.058]
+ */
+SQLRETURNTYPE  SQLDescribeParam(
+    SQLHSTMT           hstmt,
+    SQLUSMALLINT       ipar,
+    SQLSMALLINT           *pfSqlType,
+    SQLUINTEGER           *pcbParamDef,
+    SQLSMALLINT           *pibScale,
+    SQLSMALLINT           *pfNullable)
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLDESCRIBEPARAM].func)
+                   (hstmt, ipar, pfSqlType, pcbParamDef, pibScale, pfNullable);
+}
+
+
+/*************************************************************************
+ *				SQLExtendedFetch           [ODBC32.059]
+ */
+SQLRETURNTYPE  SQLExtendedFetch(
+    SQLHSTMT           hstmt,
+    SQLUSMALLINT       fFetchType,
+    SQLINTEGER         irow,
+    SQLUINTEGER           *pcrow,
+    SQLUSMALLINT          *rgfRowStatus)
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLEXTENDEDFETCH].func)
+                   (hstmt, fFetchType, irow, pcrow, rgfRowStatus);
+}
+
+
+/*************************************************************************
+ *				SQLForeignKeys           [ODBC32.060]
+ */
+SQLRETURNTYPE  SQLForeignKeys(
+    SQLHSTMT           hstmt,
+    SQLCHAR               *szPkCatalogName,
+    SQLSMALLINT        cbPkCatalogName,
+    SQLCHAR               *szPkSchemaName,
+    SQLSMALLINT        cbPkSchemaName,
+    SQLCHAR               *szPkTableName,
+    SQLSMALLINT        cbPkTableName,
+    SQLCHAR               *szFkCatalogName,
+    SQLSMALLINT        cbFkCatalogName,
+    SQLCHAR               *szFkSchemaName,
+    SQLSMALLINT        cbFkSchemaName,
+    SQLCHAR               *szFkTableName,
+    SQLSMALLINT        cbFkTableName)
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLFOREIGNKEYS].func)
+                   (hstmt, szPkCatalogName, cbPkCatalogName, szPkSchemaName, cbPkSchemaName,
+                    szPkTableName, cbPkTableName, szFkCatalogName, cbFkCatalogName, szFkSchemaName,
+                        cbFkSchemaName, szFkTableName, cbFkTableName);
+}
+
+
+/*************************************************************************
+ *				SQLMoreResults           [ODBC32.061]
+ */
+SQLRETURNTYPE  SQLMoreResults(SQLHSTMT hstmt)
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLMORERESULTS].func) (hstmt);
+}
+
+
+/*************************************************************************
+ *				SQLNativeSql           [ODBC32.062]
+ */
+SQLRETURNTYPE  SQLNativeSql(
+    SQLHDBC            hdbc,
+    SQLCHAR               *szSqlStrIn,
+    SQLINTEGER         cbSqlStrIn,
+    SQLCHAR               *szSqlStr,
+    SQLINTEGER         cbSqlStrMax,
+    SQLINTEGER            *pcbSqlStr)
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLNATIVESQL].func)
+                   (hdbc, szSqlStrIn, cbSqlStrIn, szSqlStr, cbSqlStrMax, pcbSqlStr);
+}
+
+
+/*************************************************************************
+ *				SQLNumParams           [ODBC32.063]
+ */
+SQLRETURNTYPE  SQLNumParams(
+    SQLHSTMT           hstmt,
+    SQLSMALLINT           *pcpar)
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLNUMPARAMS].func) (hstmt, pcpar);
+}
+
+
+/*************************************************************************
+ *				SQLParamOptions           [ODBC32.064]
+ */
+SQLRETURNTYPE  SQLParamOptions(
+    SQLHSTMT           hstmt,
+    SQLUINTEGER        crow,
+    SQLUINTEGER           *pirow)
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLPARAMOPTIONS].func) (hstmt, crow, pirow);
+}
+
+
+/*************************************************************************
+ *				SQLPrimaryKeys           [ODBC32.065]
+ */
+SQLRETURNTYPE  SQLPrimaryKeys(
+    SQLHSTMT           hstmt,
+    SQLCHAR               *szCatalogName,
+    SQLSMALLINT        cbCatalogName,
+    SQLCHAR               *szSchemaName,
+    SQLSMALLINT        cbSchemaName,
+    SQLCHAR               *szTableName,
+    SQLSMALLINT        cbTableName)
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLPRIMARYKEYS].func)
+                   (hstmt, szCatalogName, cbCatalogName, szSchemaName, cbSchemaName,
+                    szTableName, cbTableName);
+}
+
+
+/*************************************************************************
+ *				SQLProcedureColumns           [ODBC32.066]
+ */
+SQLRETURNTYPE  SQLProcedureColumns(
+    SQLHSTMT           hstmt,
+    SQLCHAR               *szCatalogName,
+    SQLSMALLINT        cbCatalogName,
+    SQLCHAR               *szSchemaName,
+    SQLSMALLINT        cbSchemaName,
+    SQLCHAR               *szProcName,
+    SQLSMALLINT        cbProcName,
+    SQLCHAR               *szColumnName,
+    SQLSMALLINT        cbColumnName)
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLPROCEDURECOLUMNS].func)
+                   (hstmt, szCatalogName, cbCatalogName, szSchemaName, cbSchemaName,
+                    szProcName, cbProcName, szColumnName, cbColumnName);
+}
+
+
+/*************************************************************************
+ *				SQLProcedures           [ODBC32.067]
+ */
+SQLRETURNTYPE  SQLProcedures(
+    SQLHSTMT           hstmt,
+    SQLCHAR               *szCatalogName,
+    SQLSMALLINT        cbCatalogName,
+    SQLCHAR               *szSchemaName,
+    SQLSMALLINT        cbSchemaName,
+    SQLCHAR               *szProcName,
+    SQLSMALLINT        cbProcName)
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLPROCEDURES].func)
+                   (hstmt, szCatalogName, cbCatalogName, szSchemaName, cbSchemaName,
+                    szProcName, cbProcName);
+}
+
+
+/*************************************************************************
+ *				SQLSetPos           [ODBC32.068]
+ */
+SQLRETURNTYPE  SQLSetPos(
+    SQLHSTMT           hstmt,
+    SQLUSMALLINT       irow,
+    SQLUSMALLINT       fOption,
+    SQLUSMALLINT       fLock)
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLSETPOS].func)
+                   (hstmt, irow, fOption, fLock);
+}
+
+
+/*************************************************************************
+ *				SQLTablePrivileges           [ODBC32.070]
+ */
+SQLRETURNTYPE  SQLTablePrivileges(
+    SQLHSTMT           hstmt,
+    SQLCHAR               *szCatalogName,
+    SQLSMALLINT        cbCatalogName,
+    SQLCHAR               *szSchemaName,
+    SQLSMALLINT        cbSchemaName,
+    SQLCHAR               *szTableName,
+    SQLSMALLINT        cbTableName)
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLTABLEPRIVILEGES].func)
+                   (hstmt, szCatalogName, cbCatalogName, szSchemaName, cbSchemaName,
+                    szTableName, cbTableName);
+}
+
+
+/*************************************************************************
+ *				SQLDrivers           [ODBC32.071]
+ */
+SQLRETURNTYPE  SQLDrivers(
+    SQLHENV            henv,
+    SQLUSMALLINT       fDirection,
+    SQLCHAR               *szDriverDesc,
+    SQLSMALLINT        cbDriverDescMax,
+    SQLSMALLINT           *pcbDriverDesc,
+    SQLCHAR               *szDriverAttributes,
+    SQLSMALLINT        cbDriverAttrMax,
+    SQLSMALLINT           *pcbDriverAttr)
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLDRIVERS].func)
+                (henv, fDirection, szDriverDesc, cbDriverDescMax, pcbDriverDesc,
+                 szDriverAttributes, cbDriverAttrMax, pcbDriverAttr);
+}
+
+
+/*************************************************************************
+ *				SQLBindParameter           [ODBC32.072]
+ */
+SQLRETURNTYPE  SQLBindParameter(
+    SQLHSTMT           hstmt,
+    SQLUSMALLINT       ipar,
+    SQLSMALLINT        fParamType,
+    SQLSMALLINT        fCType,
+    SQLSMALLINT        fSqlType,
+    SQLUINTEGER        cbColDef,
+    SQLSMALLINT        ibScale,
+    SQLPOINTER         rgbValue,
+    SQLINTEGER         cbValueMax,
+    SQLINTEGER            *pcbValue)
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLBINDPARAMETER].func)
+                (hstmt, ipar, fParamType, fCType, fSqlType, cbColDef, ibScale,
+                 rgbValue, cbValueMax, pcbValue);
+}
+
+
+/*************************************************************************
+ *				SQLDriverConnect           [ODBC32.041]
+ */
+SQLRETURNTYPE SQLDriverConnect(
+    SQLHDBC            hdbc,
+    SQLHWND            hwnd,
+    SQLCHAR            *conn_str_in,
+    SQLSMALLINT        len_conn_str_in,
+    SQLCHAR            *conn_str_out,
+    SQLSMALLINT        conn_str_out_max,
+    SQLSMALLINT        *ptr_conn_str_out,
+    SQLUSMALLINT       driver_completion )
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLDRIVERCONNECT].func)
+                 (hdbc, hwnd, conn_str_in, len_conn_str_in, conn_str_out,
+                  conn_str_out_max, ptr_conn_str_out, driver_completion);
+}
+
+
+/*************************************************************************
+ *				SQLSetScrollOptions           [ODBC32.069]
+ */
+SQLRETURNTYPE SQLSetScrollOptions(
+    SQLHSTMT           statement_handle,
+    SQLUSMALLINT       f_concurrency,
+    SQLINTEGER         crow_keyset,
+    SQLUSMALLINT       crow_rowset )
+{
+        TRACE("\n");
+        if (gProxyHandle.dmHandle == NULL)
+        {
+                return SQL_ERROR;
+        }
+
+        return (gProxyHandle.functions[SQLAPI_INDEX_SQLSETSCROLLOPTIONS].func)
+                   (statement_handle, f_concurrency, crow_keyset, crow_rowset);
+}
+
+
diff --git a/dlls/odbc32/proxyodbc.h b/dlls/odbc32/proxyodbc.h
new file mode 100644
index 0000000..559ec29
--- /dev/null
+++ b/dlls/odbc32/proxyodbc.h
@@ -0,0 +1,116 @@
+#ifndef _PROXYMANAGER_H
+#define _PROXYMANAGER_H
+
+#define NUM_SQLFUNC 78
+#define ERROR_FREE 0
+#define ERROR_SQLERROR  1
+#define ERROR_LIBRARY_NOT_FOUND 2
+#define ERROR_FUNCTIONS_NOT_LOADED  3
+
+#define ODBCVER 0x0351
+
+typedef struct dm_func                          /* driver manager functions */
+{
+    int            ordinal;
+    char           *name;
+    void           *d_func;
+    SQLRETURN      (*func)();
+} DM_FUNC;
+
+typedef struct proxyhandle
+{
+	void *dmHandle;				/* driver manager handle */
+	BOOL isWindowsDriver;       /* is driver a Windows version*/
+	BOOL bCallbackReady;        /* procs taken from Windows driver placed in driver manager as callbacks */
+	BOOL bFunctionReady;
+	int  nErrorType;
+	DM_FUNC functions[NUM_SQLFUNC];			/* entry point for driver manager functions */
+	char driverLibName[200];	/* ODBC driver SO name */
+	char dmLibName[200];		/* driver manager library name */
+	char ServerName[200];       /* keep server name */
+	char UserName[50];          /* keep username */	
+} PROXYHANDLE;
+
+BOOL ODBC_LoadDriverManager();
+BOOL ODBC_LoadDMFunctions();
+
+#define    /* 00 */ SQLAPI_INDEX_SQLALLOCCONNECT       0
+#define    /* 01 */ SQLAPI_INDEX_SQLALLOCENV           1
+#define    /* 02 */ SQLAPI_INDEX_SQLALLOCHANDLE        2
+#define    /* 03 */ SQLAPI_INDEX_SQLALLOCSTMT          3
+#define    /* 04 */ SQLAPI_INDEX_SQLALLOCHANDLESTD     4
+#define    /* 05 */ SQLAPI_INDEX_SQLBINDCOL            5
+#define    /* 06 */ SQLAPI_INDEX_SQLBINDPARAM          6
+#define    /* 07 */ SQLAPI_INDEX_SQLBINDPARAMETER      7
+#define    /* 08 */ SQLAPI_INDEX_SQLBROWSECONNECT      8
+#define    /* 09 */ SQLAPI_INDEX_SQLBULKOPERATIONS     9
+#define    /* 10 */ SQLAPI_INDEX_SQLCANCEL            10
+#define    /* 11 */ SQLAPI_INDEX_SQLCLOSECURSOR       11
+#define    /* 12 */ SQLAPI_INDEX_SQLCOLATTRIBUTE      12
+#define    /* 13 */ SQLAPI_INDEX_SQLCOLATTRIBUTES     13
+#define    /* 14 */ SQLAPI_INDEX_SQLCOLUMNPRIVILEGES  14
+#define    /* 15 */ SQLAPI_INDEX_SQLCOLUMNS           15
+#define    /* 16 */ SQLAPI_INDEX_SQLCONNECT           16
+#define    /* 17 */ SQLAPI_INDEX_SQLCOPYDESC          17
+#define    /* 18 */ SQLAPI_INDEX_SQLDATASOURCES       18
+#define    /* 19 */ SQLAPI_INDEX_SQLDESCRIBECOL       19
+#define    /* 20 */ SQLAPI_INDEX_SQLDESCRIBEPARAM     20
+#define    /* 21 */ SQLAPI_INDEX_SQLDISCONNECT        21
+#define    /* 22 */ SQLAPI_INDEX_SQLDRIVERCONNECT     22
+#define    /* 23 */ SQLAPI_INDEX_SQLDRIVERS           23
+#define    /* 24 */ SQLAPI_INDEX_SQLENDTRAN           24
+#define    /* 25 */ SQLAPI_INDEX_SQLERROR             25
+#define    /* 26 */ SQLAPI_INDEX_SQLEXECDIRECT        26
+#define    /* 27 */ SQLAPI_INDEX_SQLEXECUTE           27
+#define    /* 28 */ SQLAPI_INDEX_SQLEXTENDEDFETCH     28
+#define    /* 29 */ SQLAPI_INDEX_SQLFETCH             29
+#define    /* 30 */ SQLAPI_INDEX_SQLFETCHSCROLL       30
+#define    /* 31 */ SQLAPI_INDEX_SQLFOREIGNKEYS       31
+#define    /* 32 */ SQLAPI_INDEX_SQLFREEENV           32
+#define    /* 33 */ SQLAPI_INDEX_SQLFREEHANDLE        33
+#define    /* 34 */ SQLAPI_INDEX_SQLFREESTMT          34
+#define    /* 35 */ SQLAPI_INDEX_SQLFREECONNECT       35
+#define    /* 36 */ SQLAPI_INDEX_SQLGETCONNECTATTR    36
+#define    /* 37 */ SQLAPI_INDEX_SQLGETCONNECTOPTION  37
+#define    /* 38 */ SQLAPI_INDEX_SQLGETCURSORNAME     38
+#define    /* 39 */ SQLAPI_INDEX_SQLGETDATA           39
+#define    /* 40 */ SQLAPI_INDEX_SQLGETDESCFIELD      40
+#define    /* 41 */ SQLAPI_INDEX_SQLGETDESCREC        41
+#define    /* 42 */ SQLAPI_INDEX_SQLGETDIAGFIELD      42
+#define    /* 43 */ SQLAPI_INDEX_SQLGETENVATTR        43
+#define    /* 44 */ SQLAPI_INDEX_SQLGETFUNCTIONS      44
+#define    /* 45 */ SQLAPI_INDEX_SQLGETINFO           45
+#define    /* 46 */ SQLAPI_INDEX_SQLGETSTMTATTR       46
+#define    /* 47 */ SQLAPI_INDEX_SQLGETSTMTOPTION     47
+#define    /* 48 */ SQLAPI_INDEX_SQLGETTYPEINFO       48
+#define    /* 49 */ SQLAPI_INDEX_SQLMORERESULTS       49
+#define    /* 50 */ SQLAPI_INDEX_SQLNATIVESQL         50
+#define    /* 51 */ SQLAPI_INDEX_SQLNUMPARAMS         51
+#define    /* 52 */ SQLAPI_INDEX_SQLNUMRESULTCOLS     52
+#define    /* 53 */ SQLAPI_INDEX_SQLPARAMDATA         53
+#define    /* 54 */ SQLAPI_INDEX_SQLPARAMOPTIONS      54
+#define    /* 55 */ SQLAPI_INDEX_SQLPREPARE           55
+#define    /* 56 */ SQLAPI_INDEX_SQLPRIMARYKEYS       56
+#define    /* 57 */ SQLAPI_INDEX_SQLPROCEDURECOLUMNS  57
+#define    /* 58 */ SQLAPI_INDEX_SQLPROCEDURES        58
+#define    /* 59 */ SQLAPI_INDEX_SQLPUTDATA           59
+#define    /* 60 */ SQLAPI_INDEX_SQLROWCOUNT          60
+#define    /* 61 */ SQLAPI_INDEX_SQLSETCONNECTATTR    61
+#define    /* 62 */ SQLAPI_INDEX_SQLSETCONNECTOPTION  62
+#define    /* 63 */ SQLAPI_INDEX_SQLSETCURSORNAME     63
+#define    /* 64 */ SQLAPI_INDEX_SQLSETDESCFIELD      64
+#define    /* 65 */ SQLAPI_INDEX_SQLSETDESCREC        65
+#define    /* 66 */ SQLAPI_INDEX_SQLSETENVATTR        66
+#define    /* 67 */ SQLAPI_INDEX_SQLSETPARAM          67
+#define    /* 68 */ SQLAPI_INDEX_SQLSETPOS            68
+#define    /* 69 */ SQLAPI_INDEX_SQLSETSCROLLOPTIONS  69
+#define    /* 70 */ SQLAPI_INDEX_SQLSETSTMTATTR       70
+#define    /* 71 */ SQLAPI_INDEX_SQLSETSTMTOPTION     71
+#define    /* 72 */ SQLAPI_INDEX_SQLSPECIALCOLUMNS    72
+#define    /* 73 */ SQLAPI_INDEX_SQLSTATISTICS        73
+#define    /* 74 */ SQLAPI_INDEX_SQLTABLEPRIVILEGES   74
+#define    /* 75 */ SQLAPI_INDEX_SQLTABLES            75
+#define    /* 76 */ SQLAPI_INDEX_SQLTRANSACT          76
+#define    /* 77 */ SQLAPI_INDEX_SQLGETDIAGREC        77
+
+#endif
diff --git a/include/debugdefs.h b/include/debugdefs.h
index 50250a8..dd649e4 100644
--- a/include/debugdefs.h
+++ b/include/debugdefs.h
@@ -102,73 +102,74 @@
 const int dbch_nativefont = 91;
 const int dbch_nonclient = 92;
 const int dbch_ntdll = 93;
-const int dbch_ole = 94;
-const int dbch_pager = 95;
-const int dbch_palette = 96;
-const int dbch_pidl = 97;
-const int dbch_print = 98;
-const int dbch_process = 99;
-const int dbch_profile = 100;
-const int dbch_progress = 101;
-const int dbch_prop = 102;
-const int dbch_propsheet = 103;
-const int dbch_psapi = 104;
-const int dbch_psdrv = 105;
-const int dbch_ras = 106;
-const int dbch_rebar = 107;
-const int dbch_reg = 108;
-const int dbch_region = 109;
-const int dbch_relay = 110;
-const int dbch_resource = 111;
-const int dbch_scroll = 112;
-const int dbch_security = 113;
-const int dbch_segment = 114;
-const int dbch_seh = 115;
-const int dbch_selector = 116;
-const int dbch_sendmsg = 117;
-const int dbch_server = 118;
-const int dbch_shell = 119;
-const int dbch_snoop = 120;
-const int dbch_sound = 121;
-const int dbch_static = 122;
-const int dbch_statusbar = 123;
-const int dbch_storage = 124;
-const int dbch_stress = 125;
-const int dbch_string = 126;
-const int dbch_syscolor = 127;
-const int dbch_system = 128;
-const int dbch_tab = 129;
-const int dbch_tape = 130;
-const int dbch_tapi = 131;
-const int dbch_task = 132;
-const int dbch_text = 133;
-const int dbch_thread = 134;
-const int dbch_thunk = 135;
-const int dbch_timer = 136;
-const int dbch_toolbar = 137;
-const int dbch_toolhelp = 138;
-const int dbch_tooltips = 139;
-const int dbch_trackbar = 140;
-const int dbch_treeview = 141;
-const int dbch_ttydrv = 142;
-const int dbch_tweak = 143;
-const int dbch_typelib = 144;
-const int dbch_updown = 145;
-const int dbch_ver = 146;
-const int dbch_virtual = 147;
-const int dbch_vxd = 148;
-const int dbch_wave = 149;
-const int dbch_win = 150;
-const int dbch_win16drv = 151;
-const int dbch_win32 = 152;
-const int dbch_wing = 153;
-const int dbch_winsock = 154;
-const int dbch_winspool = 155;
-const int dbch_wnet = 156;
-const int dbch_x11 = 157;
-const int dbch_x11drv = 158;
+const int dbch_odbc = 94;
+const int dbch_ole = 95;
+const int dbch_pager = 96;
+const int dbch_palette = 97;
+const int dbch_pidl = 98;
+const int dbch_print = 99;
+const int dbch_process = 100;
+const int dbch_profile = 101;
+const int dbch_progress = 102;
+const int dbch_prop = 103;
+const int dbch_propsheet = 104;
+const int dbch_psapi = 105;
+const int dbch_psdrv = 106;
+const int dbch_ras = 107;
+const int dbch_rebar = 108;
+const int dbch_reg = 109;
+const int dbch_region = 110;
+const int dbch_relay = 111;
+const int dbch_resource = 112;
+const int dbch_scroll = 113;
+const int dbch_security = 114;
+const int dbch_segment = 115;
+const int dbch_seh = 116;
+const int dbch_selector = 117;
+const int dbch_sendmsg = 118;
+const int dbch_server = 119;
+const int dbch_shell = 120;
+const int dbch_snoop = 121;
+const int dbch_sound = 122;
+const int dbch_static = 123;
+const int dbch_statusbar = 124;
+const int dbch_storage = 125;
+const int dbch_stress = 126;
+const int dbch_string = 127;
+const int dbch_syscolor = 128;
+const int dbch_system = 129;
+const int dbch_tab = 130;
+const int dbch_tape = 131;
+const int dbch_tapi = 132;
+const int dbch_task = 133;
+const int dbch_text = 134;
+const int dbch_thread = 135;
+const int dbch_thunk = 136;
+const int dbch_timer = 137;
+const int dbch_toolbar = 138;
+const int dbch_toolhelp = 139;
+const int dbch_tooltips = 140;
+const int dbch_trackbar = 141;
+const int dbch_treeview = 142;
+const int dbch_ttydrv = 143;
+const int dbch_tweak = 144;
+const int dbch_typelib = 145;
+const int dbch_updown = 146;
+const int dbch_ver = 147;
+const int dbch_virtual = 148;
+const int dbch_vxd = 149;
+const int dbch_wave = 150;
+const int dbch_win = 151;
+const int dbch_win16drv = 152;
+const int dbch_win32 = 153;
+const int dbch_wing = 154;
+const int dbch_winsock = 155;
+const int dbch_winspool = 156;
+const int dbch_wnet = 157;
+const int dbch_x11 = 158;
+const int dbch_x11drv = 159;
 
-#define DEBUG_CHANNEL_COUNT 159
+#define DEBUG_CHANNEL_COUNT 160
 
 char __debug_msg_enabled[DEBUG_CHANNEL_COUNT][DEBUG_CLASS_COUNT] = {
 {1, 1, 0, 0},
@@ -329,6 +330,7 @@
 {1, 1, 0, 0},
 {1, 1, 0, 0},
 {1, 1, 0, 0},
+{1, 1, 0, 0},
 {1, 1, 0, 0}
 };
 
@@ -427,6 +429,7 @@
 "nativefont",
 "nonclient",
 "ntdll",
+"odbc",
 "ole",
 "pager",
 "palette",
diff --git a/include/sql.h b/include/sql.h
new file mode 100644
index 0000000..0466200
--- /dev/null
+++ b/include/sql.h
@@ -0,0 +1,730 @@
+/*
+ * ODBC definitions
+ *
+ */ 
+#ifndef __SQL_H
+#define __SQL_H
+
+#ifndef ODBCVER
+#define ODBCVER 0x0351
+#endif
+
+#include "sqltypes.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define SQL_NULL_DATA             (-1)
+#define SQL_DATA_AT_EXEC          (-2)
+#define SQL_SUCCESS                0
+#define SQL_SUCCESS_WITH_INFO      1
+#if (ODBCVER >= 0x0300)
+#define SQL_NO_DATA              100
+#endif
+#define SQL_ERROR                 (-1)
+#define SQL_INVALID_HANDLE        (-2)
+#define SQL_STILL_EXECUTING        2
+#define SQL_NEED_DATA             99
+#define SQL_SUCCEEDED(rc) (((rc)&(~1))==0)
+
+#define SQL_NTS                   (-3)
+#define SQL_NTSL                  (-3L)
+
+#define SQL_MAX_MESSAGE_LENGTH   512
+
+#if (ODBCVER >= 0x0300)
+#define SQL_DATE_LEN           10
+#define SQL_TIME_LEN            8
+#define SQL_TIMESTAMP_LEN      19
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_HANDLE_ENV             1
+#define SQL_HANDLE_DBC             2
+#define SQL_HANDLE_STMT            3
+#define SQL_HANDLE_DESC            4
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_ATTR_OUTPUT_NTS    10001
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_ATTR_AUTO_IPD      10001
+#define SQL_ATTR_METADATA_ID   10014
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_ATTR_APP_ROW_DESC       10010
+#define SQL_ATTR_APP_PARAM_DESC     10011
+#define SQL_ATTR_IMP_ROW_DESC       10012
+#define SQL_ATTR_IMP_PARAM_DESC     10013
+#define SQL_ATTR_CURSOR_SCROLLABLE  (-1)
+#define SQL_ATTR_CURSOR_SENSITIVITY (-2)
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_NONSCROLLABLE			0
+#define SQL_SCROLLABLE				1
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_DESC_COUNT                  1001
+#define SQL_DESC_TYPE                   1002
+#define SQL_DESC_LENGTH                 1003
+#define SQL_DESC_OCTET_LENGTH_PTR       1004
+#define SQL_DESC_PRECISION              1005
+#define SQL_DESC_SCALE                  1006
+#define SQL_DESC_DATETIME_INTERVAL_CODE 1007
+#define SQL_DESC_NULLABLE               1008
+#define SQL_DESC_INDICATOR_PTR          1009
+#define SQL_DESC_DATA_PTR               1010
+#define SQL_DESC_NAME                   1011
+#define SQL_DESC_UNNAMED                1012
+#define SQL_DESC_OCTET_LENGTH           1013
+#define SQL_DESC_ALLOC_TYPE             1099
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_DIAG_RETURNCODE        1
+#define SQL_DIAG_NUMBER            2
+#define SQL_DIAG_ROW_COUNT         3
+#define SQL_DIAG_SQLSTATE          4
+#define SQL_DIAG_NATIVE            5
+#define SQL_DIAG_MESSAGE_TEXT      6
+#define SQL_DIAG_DYNAMIC_FUNCTION  7
+#define SQL_DIAG_CLASS_ORIGIN      8
+#define SQL_DIAG_SUBCLASS_ORIGIN   9
+#define SQL_DIAG_CONNECTION_NAME  10
+#define SQL_DIAG_SERVER_NAME      11
+#define SQL_DIAG_DYNAMIC_FUNCTION_CODE 12
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_DIAG_ALTER_DOMAIN			3
+#define SQL_DIAG_ALTER_TABLE            4
+#define SQL_DIAG_CALL					7
+#define SQL_DIAG_CREATE_ASSERTION		6
+#define SQL_DIAG_CREATE_CHARACTER_SET	8
+#define SQL_DIAG_CREATE_COLLATION		10
+#define SQL_DIAG_CREATE_DOMAIN			23
+#define SQL_DIAG_CREATE_INDEX          (-1)
+#define SQL_DIAG_CREATE_SCHEMA			64
+#define SQL_DIAG_CREATE_TABLE          77
+#define SQL_DIAG_CREATE_TRANSLATION		79
+#define SQL_DIAG_CREATE_VIEW           84
+#define SQL_DIAG_DELETE_WHERE          19
+#define	SQL_DIAG_DROP_ASSERTION			24
+#define	SQL_DIAG_DROP_CHARACTER_SET		25
+#define	SQL_DIAG_DROP_COLLATION			26
+#define	SQL_DIAG_DROP_DOMAIN			27
+#define SQL_DIAG_DROP_INDEX            (-2)
+#define SQL_DIAG_DROP_SCHEMA			31
+#define SQL_DIAG_DROP_TABLE            32
+#define SQL_DIAG_DROP_TRANSLATION      33
+#define SQL_DIAG_DROP_VIEW             36
+#define SQL_DIAG_DYNAMIC_DELETE_CURSOR 38
+#define SQL_DIAG_DYNAMIC_UPDATE_CURSOR 81
+#define SQL_DIAG_GRANT                 48
+#define SQL_DIAG_INSERT                50
+#define SQL_DIAG_REVOKE                59
+#define SQL_DIAG_SELECT_CURSOR         85
+#define SQL_DIAG_UNKNOWN_STATEMENT      0
+#define SQL_DIAG_UPDATE_WHERE          82
+#endif
+
+#define	SQL_UNKNOWN_TYPE	0
+#define SQL_CHAR            1
+#define SQL_NUMERIC         2
+#define SQL_DECIMAL         3
+#define SQL_INTEGER         4
+#define SQL_SMALLINT        5
+#define SQL_FLOAT           6
+#define SQL_REAL            7
+#define SQL_DOUBLE          8
+#if (ODBCVER >= 0x0300)
+#define SQL_DATETIME        9
+#endif
+#define SQL_VARCHAR        12
+
+#if (ODBCVER >= 0x0300)
+#define SQL_TYPE_DATE      91
+#define SQL_TYPE_TIME      92
+#define SQL_TYPE_TIMESTAMP 93
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_UNSPECIFIED     0
+#define SQL_INSENSITIVE     1
+#define SQL_SENSITIVE       2
+#endif
+
+#define SQL_ALL_TYPES       0
+
+#if (ODBCVER >= 0x0300)
+#define SQL_DEFAULT        99
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_ARD_TYPE      (-99)
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_CODE_DATE       1
+#define SQL_CODE_TIME       2
+#define SQL_CODE_TIMESTAMP  3
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_FALSE           0
+#define SQL_TRUE            1
+#endif
+
+#define SQL_NO_NULLS        0
+#define SQL_NULLABLE        1
+
+#define SQL_NULLABLE_UNKNOWN  2
+
+#if (ODBCVER >= 0x0300)
+#define SQL_PRED_NONE     0
+#define SQL_PRED_CHAR     1
+#define SQL_PRED_BASIC    2
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_NAMED           0
+#define SQL_UNNAMED         1
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_DESC_ALLOC_AUTO 1
+#define SQL_DESC_ALLOC_USER 2
+#endif
+
+#define SQL_CLOSE           0
+#define SQL_DROP            1
+#define SQL_UNBIND          2
+#define SQL_RESET_PARAMS    3
+#define SQL_FETCH_NEXT      1
+#define SQL_FETCH_FIRST     2
+#define SQL_FETCH_LAST      3
+#define SQL_FETCH_PRIOR     4
+#define SQL_FETCH_ABSOLUTE  5
+#define SQL_FETCH_RELATIVE  6
+
+#define SQL_COMMIT          0
+#define SQL_ROLLBACK        1
+
+#define SQL_NULL_HENV       0
+#define SQL_NULL_HDBC       0
+#define SQL_NULL_HSTMT      0
+#if (ODBCVER >= 0x0300)
+#define SQL_NULL_HDESC      0
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_NULL_HANDLE     0L
+#endif
+
+#define SQL_SCOPE_CURROW    0
+#define SQL_SCOPE_TRANSACTION 1
+#define SQL_SCOPE_SESSION   2
+
+#define SQL_PC_UNKNOWN      0
+#if (ODBCVER >= 0x0300)
+#define SQL_PC_NON_PSEUDO   1
+#endif
+#define SQL_PC_PSEUDO       2
+
+#if (ODBCVER >= 0x0300)
+#define SQL_ROW_IDENTIFIER  1
+#endif
+
+#define SQL_INDEX_UNIQUE    0
+#define SQL_INDEX_ALL       1
+
+#define SQL_INDEX_CLUSTERED 1
+#define SQL_INDEX_HASHED    2
+#define SQL_INDEX_OTHER     3
+
+#define SQL_API_SQLALLOCCONNECT         1
+#define SQL_API_SQLALLOCENV             2
+#if (ODBCVER >= 0x0300)
+#define SQL_API_SQLALLOCHANDLE       1001
+#endif
+#define SQL_API_SQLALLOCSTMT            3
+#define SQL_API_SQLBINDCOL              4
+#if (ODBCVER >= 0x0300)
+#define SQL_API_SQLBINDPARAM         1002
+#endif
+#define SQL_API_SQLCANCEL               5
+#if (ODBCVER >= 0x0300)
+#define SQL_API_SQLCLOSECURSOR       1003
+#define SQL_API_SQLCOLATTRIBUTE         6
+#endif
+#define SQL_API_SQLCOLUMNS             40
+#define SQL_API_SQLCONNECT              7
+#if (ODBCVER >= 0x0300)
+#define SQL_API_SQLCOPYDESC          1004
+#endif
+#define SQL_API_SQLDATASOURCES         57
+#define SQL_API_SQLDESCRIBECOL          8
+#define SQL_API_SQLDISCONNECT           9
+#if (ODBCVER >= 0x0300)
+#define SQL_API_SQLENDTRAN           1005
+#endif
+#define SQL_API_SQLERROR               10
+#define SQL_API_SQLEXECDIRECT          11
+#define SQL_API_SQLEXECUTE             12
+#define SQL_API_SQLFETCH               13
+#if (ODBCVER >= 0x0300)
+#define SQL_API_SQLFETCHSCROLL       1021
+#endif
+#define SQL_API_SQLFREECONNECT         14
+#define SQL_API_SQLFREEENV             15
+#if (ODBCVER >= 0x0300)
+#define SQL_API_SQLFREEHANDLE        1006
+#endif
+#define SQL_API_SQLFREESTMT            16
+#if (ODBCVER >= 0x0300)
+#define SQL_API_SQLGETCONNECTATTR    1007
+#endif
+#define SQL_API_SQLGETCONNECTOPTION    42
+#define SQL_API_SQLGETCURSORNAME       17
+#define SQL_API_SQLGETDATA             43
+#if (ODBCVER >= 0x0300)
+#define SQL_API_SQLGETDESCFIELD      1008
+#define SQL_API_SQLGETDESCREC        1009
+#define SQL_API_SQLGETDIAGFIELD      1010
+#define SQL_API_SQLGETDIAGREC        1011
+#define SQL_API_SQLGETENVATTR        1012
+#endif
+#define SQL_API_SQLGETFUNCTIONS        44
+#define SQL_API_SQLGETINFO             45
+#if (ODBCVER >= 0x0300)
+#define SQL_API_SQLGETSTMTATTR       1014
+#endif
+#define SQL_API_SQLGETSTMTOPTION       46
+#define SQL_API_SQLGETTYPEINFO         47
+#define SQL_API_SQLNUMRESULTCOLS       18
+#define SQL_API_SQLPARAMDATA           48
+#define SQL_API_SQLPREPARE             19
+#define SQL_API_SQLPUTDATA             49
+#define SQL_API_SQLROWCOUNT            20
+#if (ODBCVER >= 0x0300)
+#define SQL_API_SQLSETCONNECTATTR    1016
+#endif
+#define SQL_API_SQLSETCONNECTOPTION    50
+#define SQL_API_SQLSETCURSORNAME       21
+#if (ODBCVER >= 0x0300)
+#define SQL_API_SQLSETDESCFIELD      1017
+#define SQL_API_SQLSETDESCREC        1018
+#define SQL_API_SQLSETENVATTR        1019
+#endif
+#define SQL_API_SQLSETPARAM            22
+#if (ODBCVER >= 0x0300)
+#define SQL_API_SQLSETSTMTATTR       1020
+#endif
+#define SQL_API_SQLSETSTMTOPTION       51
+#define SQL_API_SQLSPECIALCOLUMNS      52
+#define SQL_API_SQLSTATISTICS          53
+#define SQL_API_SQLTABLES              54
+#define SQL_API_SQLTRANSACT            23
+
+#if (ODBCVER >= 0x0300)
+#define SQL_MAX_DRIVER_CONNECTIONS           0
+#define SQL_MAXIMUM_DRIVER_CONNECTIONS		SQL_MAX_DRIVER_CONNECTIONS
+#define SQL_MAX_CONCURRENT_ACTIVITIES        1
+#define SQL_MAXIMUM_CONCURRENT_ACTIVITIES	SQL_MAX_CONCURRENT_ACTIVITIES
+#endif
+#define SQL_DATA_SOURCE_NAME                 2
+#define SQL_FETCH_DIRECTION                  8
+#define SQL_SERVER_NAME                     13
+#define SQL_SEARCH_PATTERN_ESCAPE           14
+#define SQL_DBMS_NAME                       17
+#define SQL_DBMS_VER                        18
+#define SQL_ACCESSIBLE_TABLES               19
+#define SQL_ACCESSIBLE_PROCEDURES        	20
+#define SQL_CURSOR_COMMIT_BEHAVIOR          23
+#define SQL_DATA_SOURCE_READ_ONLY           25
+#define SQL_DEFAULT_TXN_ISOLATION           26
+#define SQL_IDENTIFIER_CASE                 28
+#define SQL_IDENTIFIER_QUOTE_CHAR           29
+#define SQL_MAX_COLUMN_NAME_LEN             30
+#define SQL_MAXIMUM_COLUMN_NAME_LENGTH		SQL_MAX_COLUMN_NAME_LEN
+#define SQL_MAX_CURSOR_NAME_LEN             31
+#define SQL_MAXIMUM_CURSOR_NAME_LENGTH		SQL_MAX_CURSOR_NAME_LEN
+#define SQL_MAX_SCHEMA_NAME_LEN             32
+#define SQL_MAXIMUM_SCHEMA_NAME_LENGTH		SQL_MAX_SCHEMA_NAME_LEN
+#define SQL_MAX_CATALOG_NAME_LEN            34
+#define SQL_MAXIMUM_CATALOG_NAME_LENGTH		SQL_MAX_CATALOG_NAME_LEN
+#define SQL_MAX_TABLE_NAME_LEN              35
+#define SQL_SCROLL_CONCURRENCY              43
+#define SQL_TXN_CAPABLE                     46
+#define SQL_TRANSACTION_CAPABLE				SQL_TXN_CAPABLE
+#define SQL_USER_NAME                       47
+#define SQL_TXN_ISOLATION_OPTION            72
+#define SQL_TRANSACTION_ISOLATION_OPTION	SQL_TXN_ISOLATION_OPTION
+#define SQL_INTEGRITY                       73
+#define SQL_GETDATA_EXTENSIONS              81
+#define SQL_NULL_COLLATION                  85
+#define SQL_ALTER_TABLE                     86
+#define SQL_ORDER_BY_COLUMNS_IN_SELECT      90
+#define SQL_SPECIAL_CHARACTERS              94
+#define SQL_MAX_COLUMNS_IN_GROUP_BY         97
+#define SQL_MAXIMUM_COLUMNS_IN_GROUP_BY		SQL_MAX_COLUMNS_IN_GROUP_BY
+#define SQL_MAX_COLUMNS_IN_INDEX            98
+#define SQL_MAXIMUM_COLUMNS_IN_INDEX		SQL_MAX_COLUMNS_IN_INDEX
+#define SQL_MAX_COLUMNS_IN_ORDER_BY         99
+#define SQL_MAXIMUM_COLUMNS_IN_ORDER_BY		SQL_MAX_COLUMNS_IN_ORDER_BY
+#define SQL_MAX_COLUMNS_IN_SELECT          100
+#define SQL_MAXIMUM_COLUMNS_IN_SELECT	   SQL_MAX_COLUMNS_IN_SELECT
+#define SQL_MAX_COLUMNS_IN_TABLE           101
+#define SQL_MAX_INDEX_SIZE                 102
+#define SQL_MAXIMUM_INDEX_SIZE			   SQL_MAX_INDEX_SIZE
+#define SQL_MAX_ROW_SIZE                   104
+#define SQL_MAXIMUM_ROW_SIZE			   SQL_MAX_ROW_SIZE
+#define SQL_MAX_STATEMENT_LEN              105
+#define SQL_MAXIMUM_STATEMENT_LENGTH	   SQL_MAX_STATEMENT_LEN
+#define SQL_MAX_TABLES_IN_SELECT           106
+#define SQL_MAXIMUM_TABLES_IN_SELECT	   SQL_MAX_TABLES_IN_SELECT
+#define SQL_MAX_USER_NAME_LEN              107
+#define SQL_MAXIMUM_USER_NAME_LENGTH	   SQL_MAX_USER_NAME_LEN
+#if (ODBCVER >= 0x0300)
+#define SQL_OJ_CAPABILITIES                115
+#define SQL_OUTER_JOIN_CAPABILITIES		   SQL_OJ_CAPABILITIES
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_XOPEN_CLI_YEAR               10000
+#define SQL_CURSOR_SENSITIVITY           10001
+#define SQL_DESCRIBE_PARAMETER           10002
+#define SQL_CATALOG_NAME                 10003
+#define SQL_COLLATION_SEQ                10004
+#define SQL_MAX_IDENTIFIER_LEN           10005
+#define SQL_MAXIMUM_IDENTIFIER_LENGTH	 SQL_MAX_IDENTIFIER_LEN
+#endif
+
+#if (ODBCVER >= 0x0200)
+#define SQL_AT_ADD_COLUMN                   	0x00000001L
+#define SQL_AT_DROP_COLUMN                  	0x00000002L
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_AT_ADD_CONSTRAINT               	0x00000008L
+
+#endif  /* ODBCVER >= 0x0300 */
+
+
+#if (ODBCVER >= 0x0300)
+#define SQL_AM_NONE                         0
+#define SQL_AM_CONNECTION                   1
+#define SQL_AM_STATEMENT                    2
+#endif
+
+#define SQL_CB_DELETE                       0
+#define SQL_CB_CLOSE                        1
+#define SQL_CB_PRESERVE                     2
+
+#define SQL_FD_FETCH_NEXT                   0x00000001L
+#define SQL_FD_FETCH_FIRST                  0x00000002L
+#define SQL_FD_FETCH_LAST                   0x00000004L
+#define SQL_FD_FETCH_PRIOR                  0x00000008L
+#define SQL_FD_FETCH_ABSOLUTE               0x00000010L
+#define SQL_FD_FETCH_RELATIVE               0x00000020L
+
+#define SQL_GD_ANY_COLUMN                   0x00000001L
+#define SQL_GD_ANY_ORDER                    0x00000002L
+
+#define SQL_IC_UPPER                        1
+#define SQL_IC_LOWER                        2
+#define SQL_IC_SENSITIVE                    3
+#define SQL_IC_MIXED                        4
+
+#if (ODBCVER >= 0x0201)
+#define SQL_OJ_LEFT                         0x00000001L
+#define SQL_OJ_RIGHT                        0x00000002L
+#define SQL_OJ_FULL                         0x00000004L
+#define SQL_OJ_NESTED                       0x00000008L
+#define SQL_OJ_NOT_ORDERED                  0x00000010L
+#define SQL_OJ_INNER                        0x00000020L
+#define SQL_OJ_ALL_COMPARISON_OPS           0x00000040L
+#endif
+
+#define SQL_SCCO_READ_ONLY                  0x00000001L
+#define SQL_SCCO_LOCK                       0x00000002L
+#define SQL_SCCO_OPT_ROWVER                 0x00000004L
+#define SQL_SCCO_OPT_VALUES                 0x00000008L
+
+#define SQL_TC_NONE                         0
+#define SQL_TC_DML                          1
+#define SQL_TC_ALL                          2
+#define SQL_TC_DDL_COMMIT                   3
+#define SQL_TC_DDL_IGNORE                   4
+
+#define SQL_TXN_READ_UNCOMMITTED            0x00000001L
+#define SQL_TRANSACTION_READ_UNCOMMITTED	SQL_TXN_READ_UNCOMMITTED
+#define SQL_TXN_READ_COMMITTED              0x00000002L
+#define SQL_TRANSACTION_READ_COMMITTED		SQL_TXN_READ_COMMITTED
+#define SQL_TXN_REPEATABLE_READ             0x00000004L
+#define SQL_TRANSACTION_REPEATABLE_READ		SQL_TXN_REPEATABLE_READ
+#define SQL_TXN_SERIALIZABLE                0x00000008L
+#define SQL_TRANSACTION_SERIALIZABLE		SQL_TXN_SERIALIZABLE
+
+#define SQL_NC_HIGH                         0
+#define SQL_NC_LOW                          1
+
+SQLRETURN WINAPI   SQLAllocConnect(SQLHENV EnvironmentHandle,
+           SQLHDBC *ConnectionHandle);
+
+SQLRETURN WINAPI   SQLAllocEnv(SQLHENV *EnvironmentHandle);
+
+#if (ODBCVER >= 0x0300)
+SQLRETURN WINAPI   SQLAllocHandle(SQLSMALLINT HandleType,
+           SQLHANDLE InputHandle, SQLHANDLE *OutputHandle);
+#endif
+
+SQLRETURN WINAPI   SQLAllocStmt(SQLHDBC ConnectionHandle,
+           SQLHSTMT *StatementHandle);
+
+SQLRETURN WINAPI   SQLBindCol(SQLHSTMT StatementHandle,
+		   SQLUSMALLINT ColumnNumber, SQLSMALLINT TargetType,
+		   SQLPOINTER TargetValue, SQLINTEGER BufferLength,
+	   	   SQLINTEGER *StrLen_or_Ind);
+
+#if (ODBCVER >= 0x0300)
+SQLRETURN WINAPI   SQLBindParam(SQLHSTMT StatementHandle,
+           SQLUSMALLINT ParameterNumber, SQLSMALLINT ValueType,
+           SQLSMALLINT ParameterType, SQLUINTEGER LengthPrecision,
+           SQLSMALLINT ParameterScale, SQLPOINTER ParameterValue,
+           SQLINTEGER *StrLen_or_Ind);
+#endif
+
+SQLRETURN WINAPI   SQLCancel(SQLHSTMT StatementHandle);
+
+#if (ODBCVER >= 0x0300)
+SQLRETURN WINAPI   SQLCloseCursor(SQLHSTMT StatementHandle);
+
+SQLRETURN WINAPI   SQLColAttribute (SQLHSTMT StatementHandle,
+           SQLUSMALLINT ColumnNumber, SQLUSMALLINT FieldIdentifier,
+           SQLPOINTER CharacterAttribute, SQLSMALLINT BufferLength,
+           SQLSMALLINT *StringLength, SQLPOINTER NumericAttribute);
+#endif
+
+
+SQLRETURN WINAPI   SQLColumns(SQLHSTMT StatementHandle,
+           SQLCHAR *CatalogName, SQLSMALLINT NameLength1,
+           SQLCHAR *SchemaName, SQLSMALLINT NameLength2,
+           SQLCHAR *TableName, SQLSMALLINT NameLength3,
+           SQLCHAR *ColumnName, SQLSMALLINT NameLength4);
+
+
+SQLRETURN WINAPI   SQLConnect(SQLHDBC ConnectionHandle,
+           SQLCHAR *ServerName, SQLSMALLINT NameLength1,
+           SQLCHAR *UserName, SQLSMALLINT NameLength2,
+           SQLCHAR *Authentication, SQLSMALLINT NameLength3);
+
+#if (ODBCVER >= 0x0300)
+SQLRETURN WINAPI   SQLCopyDesc(SQLHDESC SourceDescHandle,
+           SQLHDESC TargetDescHandle);
+#endif
+
+SQLRETURN WINAPI   SQLDataSources(SQLHENV EnvironmentHandle,
+           SQLUSMALLINT Direction, SQLCHAR *ServerName,
+           SQLSMALLINT BufferLength1, SQLSMALLINT *NameLength1,
+           SQLCHAR *Description, SQLSMALLINT BufferLength2,
+           SQLSMALLINT *NameLength2);
+
+SQLRETURN WINAPI   SQLDescribeCol(SQLHSTMT StatementHandle,
+           SQLUSMALLINT ColumnNumber, SQLCHAR *ColumnName,
+           SQLSMALLINT BufferLength, SQLSMALLINT *NameLength,
+           SQLSMALLINT *DataType, SQLUINTEGER *ColumnSize,
+           SQLSMALLINT *DecimalDigits, SQLSMALLINT *Nullable);
+
+SQLRETURN WINAPI   SQLDisconnect(SQLHDBC ConnectionHandle);
+
+#if (ODBCVER >= 0x0300)
+SQLRETURN WINAPI   SQLEndTran(SQLSMALLINT HandleType, SQLHANDLE Handle,
+           SQLSMALLINT CompletionType);
+#endif
+
+SQLRETURN WINAPI   SQLError(SQLHENV EnvironmentHandle,
+           SQLHDBC ConnectionHandle, SQLHSTMT StatementHandle,
+           SQLCHAR *Sqlstate, SQLINTEGER *NativeError,
+           SQLCHAR *MessageText, SQLSMALLINT BufferLength,
+           SQLSMALLINT *TextLength);
+
+SQLRETURN WINAPI   SQLExecDirect(SQLHSTMT StatementHandle,
+           SQLCHAR *StatementText, SQLINTEGER TextLength);
+
+SQLRETURN WINAPI   SQLExecute(SQLHSTMT StatementHandle);
+
+SQLRETURN WINAPI   SQLFetch(SQLHSTMT StatementHandle);
+
+#if (ODBCVER >= 0x0300)
+SQLRETURN WINAPI   SQLFetchScroll(SQLHSTMT StatementHandle,
+           SQLSMALLINT FetchOrientation, SQLINTEGER FetchOffset);
+#endif
+
+SQLRETURN WINAPI   SQLFreeConnect(SQLHDBC ConnectionHandle);
+
+SQLRETURN WINAPI   SQLFreeEnv(SQLHENV EnvironmentHandle);
+
+#if (ODBCVER >= 0x0300)
+SQLRETURN WINAPI   SQLFreeHandle(SQLSMALLINT HandleType, SQLHANDLE Handle);
+#endif
+
+SQLRETURN WINAPI   SQLFreeStmt(SQLHSTMT StatementHandle,
+           SQLUSMALLINT Option);
+
+#if (ODBCVER >= 0x0300)
+SQLRETURN WINAPI   SQLGetConnectAttr(SQLHDBC ConnectionHandle,
+           SQLINTEGER Attribute, SQLPOINTER Value,
+           SQLINTEGER BufferLength, SQLINTEGER *StringLength);
+#endif
+
+SQLRETURN WINAPI   SQLGetConnectOption(SQLHDBC ConnectionHandle,
+           SQLUSMALLINT Option, SQLPOINTER Value);
+
+SQLRETURN WINAPI   SQLGetCursorName(SQLHSTMT StatementHandle,
+           SQLCHAR *CursorName, SQLSMALLINT BufferLength,
+           SQLSMALLINT *NameLength);
+
+SQLRETURN WINAPI   SQLGetData(SQLHSTMT StatementHandle,
+           SQLUSMALLINT ColumnNumber, SQLSMALLINT TargetType,
+           SQLPOINTER TargetValue, SQLINTEGER BufferLength,
+           SQLINTEGER *StrLen_or_Ind);
+
+#if (ODBCVER >= 0x0300)
+SQLRETURN WINAPI   SQLGetDescField(SQLHDESC DescriptorHandle,
+           SQLSMALLINT RecNumber, SQLSMALLINT FieldIdentifier,
+           SQLPOINTER Value, SQLINTEGER BufferLength,
+           SQLINTEGER *StringLength);
+
+SQLRETURN WINAPI   SQLGetDescRec(SQLHDESC DescriptorHandle,
+           SQLSMALLINT RecNumber, SQLCHAR *Name,
+           SQLSMALLINT BufferLength, SQLSMALLINT *StringLength,
+           SQLSMALLINT *Type, SQLSMALLINT *SubType,
+           SQLINTEGER *Length, SQLSMALLINT *Precision,
+           SQLSMALLINT *Scale, SQLSMALLINT *Nullable);
+
+SQLRETURN WINAPI   SQLGetDiagField(SQLSMALLINT HandleType, SQLHANDLE Handle,
+           SQLSMALLINT RecNumber, SQLSMALLINT DiagIdentifier,
+           SQLPOINTER DiagInfo, SQLSMALLINT BufferLength,
+           SQLSMALLINT *StringLength);
+
+SQLRETURN WINAPI   SQLGetDiagRec(SQLSMALLINT HandleType, SQLHANDLE Handle,
+           SQLSMALLINT RecNumber, SQLCHAR *Sqlstate,
+           SQLINTEGER *NativeError, SQLCHAR *MessageText,
+           SQLSMALLINT BufferLength, SQLSMALLINT *TextLength);
+
+SQLRETURN WINAPI   SQLGetEnvAttr(SQLHENV EnvironmentHandle,
+           SQLINTEGER Attribute, SQLPOINTER Value,
+           SQLINTEGER BufferLength, SQLINTEGER *StringLength);
+#endif 
+
+SQLRETURN WINAPI   SQLGetFunctions(SQLHDBC ConnectionHandle,
+           SQLUSMALLINT FunctionId, SQLUSMALLINT *Supported);
+
+SQLRETURN WINAPI   SQLGetInfo(SQLHDBC ConnectionHandle,
+           SQLUSMALLINT InfoType, SQLPOINTER InfoValue,
+           SQLSMALLINT BufferLength, SQLSMALLINT *StringLength);
+
+#if (ODBCVER >= 0x0300)
+SQLRETURN WINAPI   SQLGetStmtAttr(SQLHSTMT StatementHandle,
+           SQLINTEGER Attribute, SQLPOINTER Value,
+           SQLINTEGER BufferLength, SQLINTEGER *StringLength);
+#endif
+
+SQLRETURN WINAPI   SQLGetStmtOption(SQLHSTMT StatementHandle,
+           SQLUSMALLINT Option, SQLPOINTER Value);
+
+SQLRETURN WINAPI   SQLGetTypeInfo(SQLHSTMT StatementHandle,
+           SQLSMALLINT DataType);
+
+SQLRETURN WINAPI   SQLNumResultCols(SQLHSTMT StatementHandle,
+           SQLSMALLINT *ColumnCount);
+
+SQLRETURN WINAPI   SQLParamData(SQLHSTMT StatementHandle,
+           SQLPOINTER *Value);
+
+SQLRETURN WINAPI   SQLPrepare(SQLHSTMT StatementHandle,
+           SQLCHAR *StatementText, SQLINTEGER TextLength);
+
+SQLRETURN WINAPI   SQLPutData(SQLHSTMT StatementHandle,
+           SQLPOINTER Data, SQLINTEGER StrLen_or_Ind);
+
+SQLRETURN WINAPI   SQLRowCount(SQLHSTMT StatementHandle,
+	   SQLINTEGER *RowCount);
+
+#if (ODBCVER >= 0x0300)
+SQLRETURN WINAPI   SQLSetConnectAttr(SQLHDBC ConnectionHandle,
+           SQLINTEGER Attribute, SQLPOINTER Value,
+           SQLINTEGER StringLength);
+#endif
+
+SQLRETURN WINAPI   SQLSetConnectOption(SQLHDBC ConnectionHandle,
+           SQLUSMALLINT Option, SQLUINTEGER Value);
+
+SQLRETURN WINAPI   SQLSetCursorName(SQLHSTMT StatementHandle,
+           SQLCHAR *CursorName, SQLSMALLINT NameLength);
+
+#if (ODBCVER >= 0x0300)
+SQLRETURN WINAPI   SQLSetDescField(SQLHDESC DescriptorHandle,
+           SQLSMALLINT RecNumber, SQLSMALLINT FieldIdentifier,
+           SQLPOINTER Value, SQLINTEGER BufferLength);
+
+SQLRETURN WINAPI   SQLSetDescRec(SQLHDESC DescriptorHandle,
+           SQLSMALLINT RecNumber, SQLSMALLINT Type,
+           SQLSMALLINT SubType, SQLINTEGER Length,
+           SQLSMALLINT Precision, SQLSMALLINT Scale,
+           SQLPOINTER Data, SQLINTEGER *StringLength,
+           SQLINTEGER *Indicator);
+
+SQLRETURN WINAPI   SQLSetEnvAttr(SQLHENV EnvironmentHandle,
+           SQLINTEGER Attribute, SQLPOINTER Value,
+           SQLINTEGER StringLength);
+#endif
+
+SQLRETURN WINAPI   SQLSetParam(SQLHSTMT StatementHandle,
+           SQLUSMALLINT ParameterNumber, SQLSMALLINT ValueType,
+           SQLSMALLINT ParameterType, SQLUINTEGER LengthPrecision,
+           SQLSMALLINT ParameterScale, SQLPOINTER ParameterValue,
+           SQLINTEGER *StrLen_or_Ind);
+
+#if (ODBCVER >= 0x0300)
+SQLRETURN WINAPI   SQLSetStmtAttr(SQLHSTMT StatementHandle,
+           SQLINTEGER Attribute, SQLPOINTER Value,
+           SQLINTEGER StringLength);
+#endif
+
+SQLRETURN WINAPI   SQLSetStmtOption(SQLHSTMT StatementHandle,
+           SQLUSMALLINT Option, SQLUINTEGER Value);
+
+SQLRETURN WINAPI   SQLSpecialColumns(SQLHSTMT StatementHandle,
+           SQLUSMALLINT IdentifierType, SQLCHAR *CatalogName,
+           SQLSMALLINT NameLength1, SQLCHAR *SchemaName,
+           SQLSMALLINT NameLength2, SQLCHAR *TableName,
+           SQLSMALLINT NameLength3, SQLUSMALLINT Scope,
+           SQLUSMALLINT Nullable);
+
+SQLRETURN WINAPI   SQLStatistics(SQLHSTMT StatementHandle,
+           SQLCHAR *CatalogName, SQLSMALLINT NameLength1,
+           SQLCHAR *SchemaName, SQLSMALLINT NameLength2,
+           SQLCHAR *TableName, SQLSMALLINT NameLength3,
+           SQLUSMALLINT Unique, SQLUSMALLINT Reserved);
+
+SQLRETURN WINAPI   SQLTables(SQLHSTMT StatementHandle,
+           SQLCHAR *CatalogName, SQLSMALLINT NameLength1,
+           SQLCHAR *SchemaName, SQLSMALLINT NameLength2,
+           SQLCHAR *TableName, SQLSMALLINT NameLength3,
+           SQLCHAR *TableType, SQLSMALLINT NameLength4);
+
+SQLRETURN WINAPI   SQLTransact(SQLHENV EnvironmentHandle,
+           SQLHDBC ConnectionHandle, SQLUSMALLINT CompletionType);
+
+#ifdef __cplusplus
+}
+#endif
+#endif	
diff --git a/include/sqlext.h b/include/sqlext.h
new file mode 100644
index 0000000..940dd81
--- /dev/null
+++ b/include/sqlext.h
@@ -0,0 +1,1656 @@
+/*
+ * MS SQL Extension definitions
+ */
+#ifndef __SQLEXT_H
+#define __SQLEXT_H
+
+#include "sql.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define SQL_SPEC_MAJOR     3
+#define SQL_SPEC_MINOR	   51
+#define SQL_SPEC_STRING   "03.51"
+
+#define SQL_SQLSTATE_SIZE	5
+#define SQL_MAX_DSN_LENGTH	32
+
+#define SQL_MAX_OPTION_STRING_LENGTH    256
+
+#if (ODBCVER < 0x0300)
+#define SQL_NO_DATA_FOUND	100
+#else
+#define SQL_NO_DATA_FOUND	SQL_NO_DATA
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define	SQL_HANDLE_SENV		5
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_ATTR_ODBC_VERSION				200
+#define SQL_ATTR_CONNECTION_POOLING			201
+#define SQL_ATTR_CP_MATCH					202
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_CP_OFF							0UL
+#define SQL_CP_ONE_PER_DRIVER				1UL
+#define SQL_CP_ONE_PER_HENV					2UL
+#define SQL_CP_DEFAULT						SQL_CP_OFF
+
+#define SQL_CP_STRICT_MATCH					0UL
+#define SQL_CP_RELAXED_MATCH				1UL
+#define SQL_CP_MATCH_DEFAULT				SQL_CP_STRICT_MATCH		
+
+#define SQL_OV_ODBC2						2UL
+#define	SQL_OV_ODBC3						3UL
+#endif
+
+#define SQL_ACCESS_MODE                 101
+#define SQL_AUTOCOMMIT                  102
+#define SQL_LOGIN_TIMEOUT               103
+#define SQL_OPT_TRACE                   104
+#define SQL_OPT_TRACEFILE               105
+#define SQL_TRANSLATE_DLL               106
+#define SQL_TRANSLATE_OPTION            107
+#define SQL_TXN_ISOLATION               108
+#define SQL_CURRENT_QUALIFIER           109
+#define SQL_ODBC_CURSORS                110
+#define SQL_QUIET_MODE                  111
+#define SQL_PACKET_SIZE                 112
+
+#if (ODBCVER >= 0x0300)
+#define SQL_ATTR_ACCESS_MODE		SQL_ACCESS_MODE
+#define SQL_ATTR_AUTOCOMMIT			SQL_AUTOCOMMIT
+#define SQL_ATTR_CONNECTION_TIMEOUT	113
+#define SQL_ATTR_CURRENT_CATALOG	SQL_CURRENT_QUALIFIER
+#define SQL_ATTR_DISCONNECT_BEHAVIOR	114
+#define SQL_ATTR_ENLIST_IN_DTC		1207
+#define SQL_ATTR_ENLIST_IN_XA		1208
+#define SQL_ATTR_LOGIN_TIMEOUT		SQL_LOGIN_TIMEOUT
+#define SQL_ATTR_ODBC_CURSORS		SQL_ODBC_CURSORS
+#define SQL_ATTR_PACKET_SIZE		SQL_PACKET_SIZE
+#define SQL_ATTR_QUIET_MODE			SQL_QUIET_MODE
+#define SQL_ATTR_TRACE				SQL_OPT_TRACE
+#define SQL_ATTR_TRACEFILE			SQL_OPT_TRACEFILE
+#define SQL_ATTR_TRANSLATE_LIB		SQL_TRANSLATE_DLL
+#define SQL_ATTR_TRANSLATE_OPTION	SQL_TRANSLATE_OPTION
+#define SQL_ATTR_TXN_ISOLATION		SQL_TXN_ISOLATION
+#endif
+
+#define SQL_ATTR_CONNECTION_DEAD	1209
+
+#if (ODBCVER >= 0x0351)
+#define SQL_ATTR_ANSI_APP			115
+#endif
+
+#if (ODBCVER < 0x0300)
+#define SQL_CONNECT_OPT_DRVR_START      1000
+#endif
+
+#if (ODBCVER < 0x0300)
+#define SQL_CONN_OPT_MAX                SQL_PACKET_SIZE
+#define SQL_CONN_OPT_MIN                SQL_ACCESS_MODE
+#endif
+
+#define SQL_MODE_READ_WRITE             0UL
+#define SQL_MODE_READ_ONLY              1UL
+#define SQL_MODE_DEFAULT                SQL_MODE_READ_WRITE
+
+#define SQL_AUTOCOMMIT_OFF              0UL
+#define SQL_AUTOCOMMIT_ON               1UL
+#define SQL_AUTOCOMMIT_DEFAULT          SQL_AUTOCOMMIT_ON
+
+#define SQL_LOGIN_TIMEOUT_DEFAULT       15UL
+
+#define SQL_OPT_TRACE_OFF               0UL
+#define SQL_OPT_TRACE_ON                1UL
+#define SQL_OPT_TRACE_DEFAULT           SQL_OPT_TRACE_OFF
+#define SQL_OPT_TRACE_FILE_DEFAULT      "\\SQL.LOG"
+
+#define SQL_CUR_USE_IF_NEEDED           0UL
+#define SQL_CUR_USE_ODBC                1UL
+#define SQL_CUR_USE_DRIVER              2UL
+#define SQL_CUR_DEFAULT                 SQL_CUR_USE_DRIVER
+
+#if (ODBCVER >= 0x0300)
+#define SQL_DB_RETURN_TO_POOL			0UL
+#define SQL_DB_DISCONNECT				1UL
+#define SQL_DB_DEFAULT					SQL_DB_RETURN_TO_POOL
+
+#define SQL_DTC_DONE					0L
+#endif 
+
+#define SQL_CD_TRUE					1L
+#define SQL_CD_FALSE					0L
+
+#if (ODBCVER >= 0x0351)
+#define SQL_AA_TRUE					1L
+#define SQL_AA_FALSE					0L
+#endif
+
+#define SQL_QUERY_TIMEOUT		0
+#define SQL_MAX_ROWS			1
+#define SQL_NOSCAN			2
+#define SQL_MAX_LENGTH			3
+#define SQL_ASYNC_ENABLE		4
+#define SQL_BIND_TYPE			5
+#define SQL_CURSOR_TYPE			6
+#define SQL_CONCURRENCY			7
+#define SQL_KEYSET_SIZE			8
+#define SQL_ROWSET_SIZE			9
+#define SQL_SIMULATE_CURSOR		10
+#define SQL_RETRIEVE_DATA		11
+#define SQL_USE_BOOKMARKS		12
+#define SQL_GET_BOOKMARK		13
+#define SQL_ROW_NUMBER			14
+
+#if (ODBCVER >= 0x0300)
+#define SQL_ATTR_ASYNC_ENABLE				4
+#define SQL_ATTR_CONCURRENCY				SQL_CONCURRENCY
+#define SQL_ATTR_CURSOR_TYPE				SQL_CURSOR_TYPE
+#define	SQL_ATTR_ENABLE_AUTO_IPD			15
+#define SQL_ATTR_FETCH_BOOKMARK_PTR			16
+#define SQL_ATTR_KEYSET_SIZE				SQL_KEYSET_SIZE
+#define SQL_ATTR_MAX_LENGTH				SQL_MAX_LENGTH
+#define SQL_ATTR_MAX_ROWS				SQL_MAX_ROWS
+#define SQL_ATTR_NOSCAN					SQL_NOSCAN
+#define SQL_ATTR_PARAM_BIND_OFFSET_PTR			17
+#define	SQL_ATTR_PARAM_BIND_TYPE			18
+#define SQL_ATTR_PARAM_OPERATION_PTR			19
+#define SQL_ATTR_PARAM_STATUS_PTR			20
+#define	SQL_ATTR_PARAMS_PROCESSED_PTR			21
+#define SQL_ATTR_RETRIEVE_DATA				SQL_RETRIEVE_DATA
+#define SQL_ATTR_ROW_BIND_OFFSET_PTR			23
+#define	SQL_ATTR_ROW_BIND_TYPE				SQL_BIND_TYPE
+#define SQL_ATTR_ROW_NUMBER				SQL_ROW_NUMBER
+#define SQL_ATTR_ROW_OPERATION_PTR			24
+#define	SQL_ATTR_ROW_STATUS_PTR				25
+#define	SQL_ATTR_ROWS_FETCHED_PTR			26
+#define SQL_ATTR_ROW_ARRAY_SIZE				27	
+#define SQL_ATTR_SIMULATE_CURSOR			SQL_SIMULATE_CURSOR
+#define SQL_ATTR_USE_BOOKMARKS				SQL_USE_BOOKMARKS	
+
+#endif
+
+#if (ODBCVER < 0x0300)
+#define SQL_STMT_OPT_MAX                SQL_ROW_NUMBER
+#define SQL_STMT_OPT_MIN	SQL_QUERY_TIMEOUT
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define	SQL_COL_PRED_CHAR		SQL_LIKE_ONLY
+#define	SQL_COL_PRED_BASIC		SQL_ALL_EXCEPT_LIKE
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_IS_POINTER							(-4)
+#define SQL_IS_UINTEGER							(-5)
+#define SQL_IS_INTEGER							(-6)
+#define SQL_IS_USMALLINT						(-7)
+#define SQL_IS_SMALLINT							(-8)
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_PARAM_BIND_BY_COLUMN			0UL
+#define SQL_PARAM_BIND_TYPE_DEFAULT			SQL_PARAM_BIND_BY_COLUMN
+#endif
+
+#define SQL_QUERY_TIMEOUT_DEFAULT       0UL
+
+#define SQL_MAX_ROWS_DEFAULT            0UL
+
+#define SQL_NOSCAN_OFF                  0UL
+#define SQL_NOSCAN_ON                   1UL
+#define SQL_NOSCAN_DEFAULT              SQL_NOSCAN_OFF
+
+#define SQL_MAX_LENGTH_DEFAULT          0UL
+
+#define SQL_ASYNC_ENABLE_OFF			0UL
+#define SQL_ASYNC_ENABLE_ON				1UL
+#define SQL_ASYNC_ENABLE_DEFAULT        SQL_ASYNC_ENABLE_OFF
+
+#define SQL_BIND_BY_COLUMN              0UL
+#define SQL_BIND_TYPE_DEFAULT           SQL_BIND_BY_COLUMN
+
+#define SQL_CONCUR_READ_ONLY            1
+#define SQL_CONCUR_LOCK                 2
+#define SQL_CONCUR_ROWVER               3
+#define SQL_CONCUR_VALUES               4
+#define SQL_CONCUR_DEFAULT              SQL_CONCUR_READ_ONLY
+
+#define SQL_CURSOR_FORWARD_ONLY         0UL
+#define SQL_CURSOR_KEYSET_DRIVEN        1UL
+#define SQL_CURSOR_DYNAMIC              2UL
+#define SQL_CURSOR_STATIC               3UL
+#define SQL_CURSOR_TYPE_DEFAULT         SQL_CURSOR_FORWARD_ONLY
+
+#define SQL_ROWSET_SIZE_DEFAULT         1UL
+
+#define SQL_KEYSET_SIZE_DEFAULT         0UL
+
+#define SQL_SC_NON_UNIQUE               0UL
+#define SQL_SC_TRY_UNIQUE               1UL
+#define SQL_SC_UNIQUE                   2UL
+
+#define SQL_RD_OFF                      0UL
+#define SQL_RD_ON                       1UL
+#define SQL_RD_DEFAULT                  SQL_RD_ON
+
+#define SQL_UB_OFF                      0UL
+#define	SQL_UB_ON			01UL
+#define SQL_UB_DEFAULT                  SQL_UB_OFF
+
+#if (ODBCVER >= 0x0300)
+#define SQL_UB_FIXED					SQL_UB_ON
+#define SQL_UB_VARIABLE					2UL
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_DESC_ARRAY_SIZE					20
+#define SQL_DESC_ARRAY_STATUS_PTR				21
+#define SQL_DESC_AUTO_UNIQUE_VALUE				SQL_COLUMN_AUTO_INCREMENT
+#define SQL_DESC_BASE_COLUMN_NAME				22
+#define SQL_DESC_BASE_TABLE_NAME				23
+#define SQL_DESC_BIND_OFFSET_PTR				24
+#define SQL_DESC_BIND_TYPE					25
+#define SQL_DESC_CASE_SENSITIVE					SQL_COLUMN_CASE_SENSITIVE
+#define SQL_DESC_CATALOG_NAME					SQL_COLUMN_QUALIFIER_NAME
+#define SQL_DESC_CONCISE_TYPE					SQL_COLUMN_TYPE
+#define SQL_DESC_DATETIME_INTERVAL_PRECISION			26
+#define SQL_DESC_DISPLAY_SIZE					SQL_COLUMN_DISPLAY_SIZE
+#define SQL_DESC_FIXED_PREC_SCALE				SQL_COLUMN_MONEY
+#define SQL_DESC_LABEL						SQL_COLUMN_LABEL
+#define SQL_DESC_LITERAL_PREFIX					27
+#define SQL_DESC_LITERAL_SUFFIX					28
+#define SQL_DESC_LOCAL_TYPE_NAME				29
+#define	SQL_DESC_MAXIMUM_SCALE					30
+#define SQL_DESC_MINIMUM_SCALE					31
+#define SQL_DESC_NUM_PREC_RADIX					32
+#define SQL_DESC_PARAMETER_TYPE					33
+#define SQL_DESC_ROWS_PROCESSED_PTR				34
+#if (ODBCVER >= 0x0350)
+#define SQL_DESC_ROWVER						35
+#endif
+#define SQL_DESC_SCHEMA_NAME					SQL_COLUMN_OWNER_NAME
+#define SQL_DESC_SEARCHABLE					SQL_COLUMN_SEARCHABLE
+#define SQL_DESC_TYPE_NAME					SQL_COLUMN_TYPE_NAME
+#define SQL_DESC_TABLE_NAME					SQL_COLUMN_TABLE_NAME
+#define SQL_DESC_UNSIGNED					SQL_COLUMN_UNSIGNED
+#define SQL_DESC_UPDATABLE					SQL_COLUMN_UPDATABLE
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_DIAG_CURSOR_ROW_COUNT			(-1249)
+#define SQL_DIAG_ROW_NUMBER				(-1248)
+#define SQL_DIAG_COLUMN_NUMBER				(-1247)	
+#endif
+
+#define SQL_DATE                                9
+#if (ODBCVER >= 0x0300)
+#define SQL_INTERVAL				10
+#endif 
+#define SQL_TIME                                10
+#define SQL_TIMESTAMP                           11
+#define SQL_LONGVARCHAR                         (-1)
+#define SQL_BINARY                              (-2)
+#define SQL_VARBINARY                           (-3)
+#define SQL_LONGVARBINARY                       (-4)
+#define SQL_BIGINT                              (-5)
+#define SQL_TINYINT                             (-6)
+#define SQL_BIT                                 (-7)
+#if (ODBCVER >= 0x0350)
+#define SQL_GUID				(-11)
+#endif 
+
+#if (ODBCVER >= 0x0300)
+#define SQL_CODE_YEAR				1
+#define SQL_CODE_MONTH				2
+#define SQL_CODE_DAY				3
+#define SQL_CODE_HOUR				4
+#define SQL_CODE_MINUTE				5
+#define SQL_CODE_SECOND				6
+#define SQL_CODE_YEAR_TO_MONTH			7
+#define SQL_CODE_DAY_TO_HOUR			8
+#define SQL_CODE_DAY_TO_MINUTE			9
+#define SQL_CODE_DAY_TO_SECOND			10
+#define SQL_CODE_HOUR_TO_MINUTE			11
+#define SQL_CODE_HOUR_TO_SECOND			12
+#define SQL_CODE_MINUTE_TO_SECOND		13
+
+#define SQL_INTERVAL_YEAR			(100 + SQL_CODE_YEAR)
+#define SQL_INTERVAL_MONTH			(100 + SQL_CODE_MONTH)
+#define SQL_INTERVAL_DAY			(100 + SQL_CODE_DAY)
+#define SQL_INTERVAL_HOUR			(100 + SQL_CODE_HOUR)
+#define SQL_INTERVAL_MINUTE			(100 + SQL_CODE_MINUTE)
+#define SQL_INTERVAL_SECOND                	(100 + SQL_CODE_SECOND)
+#define SQL_INTERVAL_YEAR_TO_MONTH		(100 + SQL_CODE_YEAR_TO_MONTH)
+#define SQL_INTERVAL_DAY_TO_HOUR		(100 + SQL_CODE_DAY_TO_HOUR)
+#define SQL_INTERVAL_DAY_TO_MINUTE		(100 + SQL_CODE_DAY_TO_MINUTE)
+#define SQL_INTERVAL_DAY_TO_SECOND		(100 + SQL_CODE_DAY_TO_SECOND)
+#define SQL_INTERVAL_HOUR_TO_MINUTE		(100 + SQL_CODE_HOUR_TO_MINUTE)
+#define SQL_INTERVAL_HOUR_TO_SECOND		(100 + SQL_CODE_HOUR_TO_SECOND)
+#define SQL_INTERVAL_MINUTE_TO_SECOND		(100 + SQL_CODE_MINUTE_TO_SECOND)
+
+#else
+#define SQL_INTERVAL_YEAR                       (-80)
+#define SQL_INTERVAL_MONTH                      (-81)
+#define SQL_INTERVAL_YEAR_TO_MONTH              (-82)
+#define SQL_INTERVAL_DAY                        (-83)
+#define SQL_INTERVAL_HOUR                       (-84)
+#define SQL_INTERVAL_MINUTE                     (-85)
+#define SQL_INTERVAL_SECOND                     (-86)
+#define SQL_INTERVAL_DAY_TO_HOUR                (-87)
+#define SQL_INTERVAL_DAY_TO_MINUTE              (-88)
+#define SQL_INTERVAL_DAY_TO_SECOND              (-89)
+#define SQL_INTERVAL_HOUR_TO_MINUTE             (-90)
+#define SQL_INTERVAL_HOUR_TO_SECOND             (-91)
+#define SQL_INTERVAL_MINUTE_TO_SECOND           (-92)
+#endif
+
+
+#if (ODBCVER <= 0x0300)
+#define SQL_UNICODE                             (-95)
+#define SQL_UNICODE_VARCHAR                     (-96)
+#define SQL_UNICODE_LONGVARCHAR                 (-97)
+#define SQL_UNICODE_CHAR                        SQL_UNICODE
+#else
+
+#define	SQL_UNICODE			SQL_WCHAR
+#define	SQL_UNICODE_VARCHAR		SQL_WVARCHAR
+#define SQL_UNICODE_LONGVARCHAR	SQL_WLONGVARCHAR
+#define SQL_UNICODE_CHAR		SQL_WCHAR
+#endif
+
+#if (ODBCVER < 0x0300)
+#define SQL_TYPE_DRIVER_START                   SQL_INTERVAL_YEAR
+#define SQL_TYPE_DRIVER_END                     SQL_UNICODE_LONGVARCHAR
+#endif
+
+#define SQL_C_CHAR    SQL_CHAR
+#define SQL_C_LONG    SQL_INTEGER
+#define SQL_C_SHORT   SQL_SMALLINT
+#define SQL_C_FLOAT   SQL_REAL
+#define SQL_C_DOUBLE  SQL_DOUBLE
+#if (ODBCVER >= 0x0300)
+#define	SQL_C_NUMERIC		SQL_NUMERIC
+#endif
+#define SQL_C_DEFAULT 99
+
+#define SQL_SIGNED_OFFSET       (-20)
+#define SQL_UNSIGNED_OFFSET     (-22)
+
+#define SQL_C_DATE       SQL_DATE
+#define SQL_C_TIME       SQL_TIME
+#define SQL_C_TIMESTAMP  SQL_TIMESTAMP
+#if (ODBCVER >= 0x0300)
+#define SQL_C_TYPE_DATE				SQL_TYPE_DATE
+#define SQL_C_TYPE_TIME				SQL_TYPE_TIME
+#define SQL_C_TYPE_TIMESTAMP			SQL_TYPE_TIMESTAMP
+#define SQL_C_INTERVAL_YEAR			SQL_INTERVAL_YEAR
+#define SQL_C_INTERVAL_MONTH			SQL_INTERVAL_MONTH
+#define SQL_C_INTERVAL_DAY			SQL_INTERVAL_DAY
+#define SQL_C_INTERVAL_HOUR			SQL_INTERVAL_HOUR
+#define SQL_C_INTERVAL_MINUTE			SQL_INTERVAL_MINUTE
+#define SQL_C_INTERVAL_SECOND			SQL_INTERVAL_SECOND
+#define SQL_C_INTERVAL_YEAR_TO_MONTH		SQL_INTERVAL_YEAR_TO_MONTH
+#define SQL_C_INTERVAL_DAY_TO_HOUR		SQL_INTERVAL_DAY_TO_HOUR
+#define SQL_C_INTERVAL_DAY_TO_MINUTE		SQL_INTERVAL_DAY_TO_MINUTE
+#define SQL_C_INTERVAL_DAY_TO_SECOND		SQL_INTERVAL_DAY_TO_SECOND
+#define SQL_C_INTERVAL_HOUR_TO_MINUTE		SQL_INTERVAL_HOUR_TO_MINUTE
+#define SQL_C_INTERVAL_HOUR_TO_SECOND		SQL_INTERVAL_HOUR_TO_SECOND
+#define SQL_C_INTERVAL_MINUTE_TO_SECOND		SQL_INTERVAL_MINUTE_TO_SECOND
+#endif
+#define SQL_C_BINARY     SQL_BINARY
+#define SQL_C_BIT        SQL_BIT
+#if (ODBCVER >= 0x0300)
+#define SQL_C_SBIGINT	(SQL_BIGINT+SQL_SIGNED_OFFSET)
+#define SQL_C_UBIGINT	(SQL_BIGINT+SQL_UNSIGNED_OFFSET)
+#endif
+#define SQL_C_TINYINT    SQL_TINYINT
+#define SQL_C_SLONG      (SQL_C_LONG+SQL_SIGNED_OFFSET)
+#define SQL_C_SSHORT     (SQL_C_SHORT+SQL_SIGNED_OFFSET)
+#define SQL_C_STINYINT   (SQL_TINYINT+SQL_SIGNED_OFFSET)
+#define SQL_C_ULONG      (SQL_C_LONG+SQL_UNSIGNED_OFFSET)
+#define SQL_C_USHORT     (SQL_C_SHORT+SQL_UNSIGNED_OFFSET)
+#define SQL_C_UTINYINT   (SQL_TINYINT+SQL_UNSIGNED_OFFSET)
+#define SQL_C_BOOKMARK   SQL_C_ULONG                      
+
+#if (ODBCVER >= 0x0350)
+#define SQL_C_GUID	SQL_GUID
+#endif
+
+#define SQL_TYPE_NULL                   0
+#if (ODBCVER < 0x0300)
+#define SQL_TYPE_MIN                    SQL_BIT
+#define SQL_TYPE_MAX                    SQL_VARCHAR
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_C_VARBOOKMARK		SQL_C_BINARY
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_NO_ROW_NUMBER					(-1)
+#define SQL_NO_COLUMN_NUMBER					(-1)
+#define SQL_ROW_NUMBER_UNKNOWN					(-2)
+#define SQL_COLUMN_NUMBER_UNKNOWN				(-2)
+#endif
+
+#define SQL_DEFAULT_PARAM            (-5)
+#define SQL_IGNORE                   (-6)
+#if (ODBCVER >= 0x0300)
+#define SQL_COLUMN_IGNORE		SQL_IGNORE
+#endif
+#define SQL_LEN_DATA_AT_EXEC_OFFSET  (-100)
+#define SQL_LEN_DATA_AT_EXEC(length) (-(length)+SQL_LEN_DATA_AT_EXEC_OFFSET)
+
+#define SQL_LEN_BINARY_ATTR_OFFSET	 (-100)
+#define SQL_LEN_BINARY_ATTR(length)	 (-(length)+SQL_LEN_BINARY_ATTR_OFFSET)
+
+#define SQL_PARAM_TYPE_DEFAULT           SQL_PARAM_INPUT_OUTPUT
+#define SQL_SETPARAM_VALUE_MAX           (-1L)
+
+#define SQL_COLUMN_COUNT                0
+#define SQL_COLUMN_NAME                 1
+#define SQL_COLUMN_TYPE                 2
+#define SQL_COLUMN_LENGTH               3
+#define SQL_COLUMN_PRECISION            4
+#define SQL_COLUMN_SCALE                5
+#define SQL_COLUMN_DISPLAY_SIZE         6
+#define SQL_COLUMN_NULLABLE             7
+#define SQL_COLUMN_UNSIGNED             8
+#define SQL_COLUMN_MONEY                9
+#define SQL_COLUMN_UPDATABLE            10
+#define SQL_COLUMN_AUTO_INCREMENT       11
+#define SQL_COLUMN_CASE_SENSITIVE       12
+#define SQL_COLUMN_SEARCHABLE           13
+#define SQL_COLUMN_TYPE_NAME            14
+#define SQL_COLUMN_TABLE_NAME           15
+#define SQL_COLUMN_OWNER_NAME           16
+#define SQL_COLUMN_QUALIFIER_NAME       17
+#define SQL_COLUMN_LABEL                18
+#define SQL_COLATT_OPT_MAX              SQL_COLUMN_LABEL
+#if (ODBCVER < 0x0300)
+#define SQL_COLUMN_DRIVER_START         1000
+#endif
+
+#define SQL_COLATT_OPT_MIN              SQL_COLUMN_COUNT
+
+#define SQL_ATTR_READONLY               0
+#define SQL_ATTR_WRITE                  1
+#define SQL_ATTR_READWRITE_UNKNOWN      2
+
+#define SQL_UNSEARCHABLE                0
+#define SQL_LIKE_ONLY                   1
+#define SQL_ALL_EXCEPT_LIKE             2
+#define SQL_SEARCHABLE                  3
+#define SQL_PRED_SEARCHABLE				SQL_SEARCHABLE
+
+
+#define SQL_NO_TOTAL                    (-4)
+
+#if (ODBCVER >= 0x0300)
+#define SQL_API_SQLALLOCHANDLESTD	73
+#define SQL_API_SQLBULKOPERATIONS	24
+#endif
+#define SQL_API_SQLBINDPARAMETER    72
+#define SQL_API_SQLBROWSECONNECT    55
+#define SQL_API_SQLCOLATTRIBUTES    6
+#define SQL_API_SQLCOLUMNPRIVILEGES 56
+#define SQL_API_SQLDESCRIBEPARAM    58
+#define	SQL_API_SQLDRIVERCONNECT	41
+#define SQL_API_SQLDRIVERS          71
+#define SQL_API_SQLEXTENDEDFETCH    59
+#define SQL_API_SQLFOREIGNKEYS      60
+#define SQL_API_SQLMORERESULTS      61
+#define SQL_API_SQLNATIVESQL        62
+#define SQL_API_SQLNUMPARAMS        63
+#define SQL_API_SQLPARAMOPTIONS     64
+#define SQL_API_SQLPRIMARYKEYS      65
+#define SQL_API_SQLPROCEDURECOLUMNS 66
+#define SQL_API_SQLPROCEDURES       67
+#define SQL_API_SQLSETPOS           68
+#define SQL_API_SQLSETSCROLLOPTIONS 69
+#define SQL_API_SQLTABLEPRIVILEGES  70
+
+#if (ODBCVER < 0x0300)
+#define SQL_EXT_API_LAST            SQL_API_SQLBINDPARAMETER
+#define SQL_NUM_FUNCTIONS           23
+#define SQL_EXT_API_START           40
+#define SQL_NUM_EXTENSIONS (SQL_EXT_API_LAST-SQL_EXT_API_START+1)
+#endif
+
+#define SQL_API_ALL_FUNCTIONS       0
+
+#define SQL_API_LOADBYORDINAL       199
+
+#if (ODBCVER >= 0x0300)
+#define SQL_API_ODBC3_ALL_FUNCTIONS		999
+#define	SQL_API_ODBC3_ALL_FUNCTIONS_SIZE	250
+
+
+#define SQL_FUNC_EXISTS(pfExists, uwAPI) ((*(((UWORD*) (pfExists)) + ((uwAPI) >> 4)) & (1 << ((uwAPI) & 0x000F)) ) ? SQL_TRUE : SQL_FALSE )
+
+#endif
+
+#define SQL_INFO_FIRST                       0		
+#define SQL_ACTIVE_CONNECTIONS               0
+#define SQL_ACTIVE_STATEMENTS                1
+#define SQL_DRIVER_HDBC                      3
+#define SQL_DRIVER_HENV                      4
+#define SQL_DRIVER_HSTMT                     5
+#define SQL_DRIVER_NAME                      6
+#define SQL_DRIVER_VER                       7
+#define SQL_ODBC_API_CONFORMANCE             9
+#define SQL_ODBC_VER                        10
+#define SQL_ROW_UPDATES                     11
+#define SQL_ODBC_SAG_CLI_CONFORMANCE        12
+#define SQL_ODBC_SQL_CONFORMANCE            15
+#define SQL_PROCEDURES                      21
+#define SQL_CONCAT_NULL_BEHAVIOR            22
+#define SQL_CURSOR_ROLLBACK_BEHAVIOR        24
+#define SQL_EXPRESSIONS_IN_ORDERBY          27
+#define SQL_MAX_OWNER_NAME_LEN              32
+#define SQL_MAX_PROCEDURE_NAME_LEN          33
+#define SQL_MAX_QUALIFIER_NAME_LEN          34
+#define SQL_MULT_RESULT_SETS                36
+#define SQL_MULTIPLE_ACTIVE_TXN             37
+#define SQL_OUTER_JOINS                     38
+#define SQL_OWNER_TERM                      39
+#define SQL_PROCEDURE_TERM                  40
+#define SQL_QUALIFIER_NAME_SEPARATOR        41
+#define SQL_QUALIFIER_TERM                  42
+#define SQL_SCROLL_OPTIONS                  44
+#define SQL_TABLE_TERM                      45
+#define SQL_CONVERT_FUNCTIONS               48
+#define SQL_NUMERIC_FUNCTIONS               49
+#define SQL_STRING_FUNCTIONS                50
+#define SQL_SYSTEM_FUNCTIONS                51
+#define SQL_TIMEDATE_FUNCTIONS              52
+#define SQL_CONVERT_BIGINT                  53
+#define SQL_CONVERT_BINARY                  54
+#define SQL_CONVERT_BIT                     55
+#define SQL_CONVERT_CHAR                    56
+#define SQL_CONVERT_DATE                    57
+#define SQL_CONVERT_DECIMAL                 58
+#define SQL_CONVERT_DOUBLE                  59
+#define SQL_CONVERT_FLOAT                   60
+#define SQL_CONVERT_INTEGER                 61
+#define SQL_CONVERT_LONGVARCHAR             62
+#define SQL_CONVERT_NUMERIC                 63
+#define SQL_CONVERT_REAL                    64
+#define SQL_CONVERT_SMALLINT                65
+#define SQL_CONVERT_TIME                    66
+#define SQL_CONVERT_TIMESTAMP               67
+#define SQL_CONVERT_TINYINT                 68
+#define SQL_CONVERT_VARBINARY               69
+#define SQL_CONVERT_VARCHAR                 70
+#define SQL_CONVERT_LONGVARBINARY           71
+#define SQL_ODBC_SQL_OPT_IEF                73
+#define SQL_CORRELATION_NAME                74
+#define SQL_NON_NULLABLE_COLUMNS            75
+#define SQL_DRIVER_HLIB                     76
+#define SQL_DRIVER_ODBC_VER                 77
+#define SQL_LOCK_TYPES                      78
+#define SQL_POS_OPERATIONS                  79
+#define SQL_POSITIONED_STATEMENTS           80
+#define SQL_BOOKMARK_PERSISTENCE            82
+#define SQL_STATIC_SENSITIVITY              83
+#define SQL_FILE_USAGE                      84
+#define SQL_COLUMN_ALIAS                    87
+#define SQL_GROUP_BY                        88
+#define SQL_KEYWORDS                        89
+#define SQL_OWNER_USAGE                     91
+#define SQL_QUALIFIER_USAGE                 92
+#define SQL_QUOTED_IDENTIFIER_CASE          93
+#define SQL_SUBQUERIES                      95
+#define SQL_UNION                           96
+#define SQL_MAX_ROW_SIZE_INCLUDES_LONG      103
+#define SQL_MAX_CHAR_LITERAL_LEN            108
+#define SQL_TIMEDATE_ADD_INTERVALS          109
+#define SQL_TIMEDATE_DIFF_INTERVALS         110
+#define SQL_NEED_LONG_DATA_LEN              111
+#define SQL_MAX_BINARY_LITERAL_LEN          112
+#define SQL_LIKE_ESCAPE_CLAUSE              113
+#define SQL_QUALIFIER_LOCATION              114
+
+#if (ODBCVER >= 0x0201 && ODBCVER < 0x0300)
+#define SQL_OJ_CAPABILITIES         65003
+#endif
+
+#if (ODBCVER < 0x0300)
+#define SQL_INFO_LAST							SQL_QUALIFIER_LOCATION
+#define SQL_INFO_DRIVER_START						1000
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_ACTIVE_ENVIRONMENTS						116
+#define	SQL_ALTER_DOMAIN						117
+
+#define	SQL_SQL_CONFORMANCE						118
+#define SQL_DATETIME_LITERALS						119
+
+#define	SQL_ASYNC_MODE							10021
+#define SQL_BATCH_ROW_COUNT						120
+#define SQL_BATCH_SUPPORT						121
+#define SQL_CATALOG_LOCATION						SQL_QUALIFIER_LOCATION
+#define SQL_CATALOG_NAME_SEPARATOR					SQL_QUALIFIER_NAME_SEPARATOR
+#define SQL_CATALOG_TERM						SQL_QUALIFIER_TERM
+#define SQL_CATALOG_USAGE						SQL_QUALIFIER_USAGE
+#define	SQL_CONVERT_WCHAR						122
+#define SQL_CONVERT_INTERVAL_DAY_TIME					123
+#define SQL_CONVERT_INTERVAL_YEAR_MONTH					124
+#define	SQL_CONVERT_WLONGVARCHAR					125
+#define	SQL_CONVERT_WVARCHAR						126
+#define	SQL_CREATE_ASSERTION						127
+#define	SQL_CREATE_CHARACTER_SET					128
+#define	SQL_CREATE_COLLATION						129
+#define	SQL_CREATE_DOMAIN						130
+#define	SQL_CREATE_SCHEMA						131
+#define	SQL_CREATE_TABLE						132
+#define	SQL_CREATE_TRANSLATION						133
+#define	SQL_CREATE_VIEW							134
+#define SQL_DRIVER_HDESC						135
+#define	SQL_DROP_ASSERTION						136
+#define	SQL_DROP_CHARACTER_SET						137
+#define	SQL_DROP_COLLATION						138
+#define	SQL_DROP_DOMAIN							139
+#define	SQL_DROP_SCHEMA							140
+#define	SQL_DROP_TABLE							141
+#define	SQL_DROP_TRANSLATION						142
+#define	SQL_DROP_VIEW							143
+#define SQL_DYNAMIC_CURSOR_ATTRIBUTES1			144
+#define SQL_DYNAMIC_CURSOR_ATTRIBUTES2			145
+#define SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1		146		
+#define SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2		147
+#define SQL_INDEX_KEYWORDS				148
+#define SQL_INFO_SCHEMA_VIEWS				149
+#define SQL_KEYSET_CURSOR_ATTRIBUTES1			150
+#define SQL_KEYSET_CURSOR_ATTRIBUTES2			151
+#define	SQL_MAX_ASYNC_CONCURRENT_STATEMENTS		10022
+#define SQL_ODBC_INTERFACE_CONFORMANCE			152
+#define SQL_PARAM_ARRAY_ROW_COUNTS     			153
+#define SQL_PARAM_ARRAY_SELECTS     			154
+#define SQL_SCHEMA_TERM					SQL_OWNER_TERM
+#define SQL_SCHEMA_USAGE				SQL_OWNER_USAGE
+#define SQL_SQL92_DATETIME_FUNCTIONS			155
+#define SQL_SQL92_FOREIGN_KEY_DELETE_RULE		156		
+#define SQL_SQL92_FOREIGN_KEY_UPDATE_RULE		157		
+#define SQL_SQL92_GRANT					158
+#define SQL_SQL92_NUMERIC_VALUE_FUNCTIONS		159
+#define SQL_SQL92_PREDICATES				160
+#define SQL_SQL92_RELATIONAL_JOIN_OPERATORS		161
+#define SQL_SQL92_REVOKE				162
+#define SQL_SQL92_ROW_VALUE_CONSTRUCTOR			163
+#define SQL_SQL92_STRING_FUNCTIONS			164
+#define SQL_SQL92_VALUE_EXPRESSIONS			165
+#define SQL_STANDARD_CLI_CONFORMANCE			166
+#define SQL_STATIC_CURSOR_ATTRIBUTES1			167	
+#define SQL_STATIC_CURSOR_ATTRIBUTES2			168
+
+#define SQL_AGGREGATE_FUNCTIONS				169
+#define SQL_DDL_INDEX					170
+#define SQL_DM_VER					171
+#define SQL_INSERT_STATEMENT				172
+#define SQL_UNION_STATEMENT				SQL_UNION
+#endif
+
+#define	SQL_DTC_TRANSITION_COST				1750
+
+#if (ODBCVER >= 0x0300)
+
+#define	SQL_AT_ADD_COLUMN_SINGLE				0x00000020L	
+#define	SQL_AT_ADD_COLUMN_DEFAULT				0x00000040L
+#define	SQL_AT_ADD_COLUMN_COLLATION				0x00000080L
+#define	SQL_AT_SET_COLUMN_DEFAULT				0x00000100L
+#define	SQL_AT_DROP_COLUMN_DEFAULT				0x00000200L
+#define	SQL_AT_DROP_COLUMN_CASCADE				0x00000400L
+#define	SQL_AT_DROP_COLUMN_RESTRICT				0x00000800L
+#define SQL_AT_ADD_TABLE_CONSTRAINT				0x00001000L		
+#define SQL_AT_DROP_TABLE_CONSTRAINT_CASCADE			0x00002000L		
+#define SQL_AT_DROP_TABLE_CONSTRAINT_RESTRICT			0x00004000L		
+#define SQL_AT_CONSTRAINT_NAME_DEFINITION			0x00008000L
+#define SQL_AT_CONSTRAINT_INITIALLY_DEFERRED			0x00010000L
+#define SQL_AT_CONSTRAINT_INITIALLY_IMMEDIATE			0x00020000L
+#define SQL_AT_CONSTRAINT_DEFERRABLE				0x00040000L
+#define SQL_AT_CONSTRAINT_NON_DEFERRABLE			0x00080000L
+#endif
+
+#define SQL_CVT_CHAR                        0x00000001L
+#define SQL_CVT_NUMERIC                     0x00000002L
+#define SQL_CVT_DECIMAL                     0x00000004L
+#define SQL_CVT_INTEGER                     0x00000008L
+#define SQL_CVT_SMALLINT                    0x00000010L
+#define SQL_CVT_FLOAT                       0x00000020L
+#define SQL_CVT_REAL                        0x00000040L
+#define SQL_CVT_DOUBLE                      0x00000080L
+#define SQL_CVT_VARCHAR                     0x00000100L
+#define SQL_CVT_LONGVARCHAR                 0x00000200L
+#define SQL_CVT_BINARY                      0x00000400L
+#define SQL_CVT_VARBINARY                   0x00000800L
+#define SQL_CVT_BIT                         0x00001000L
+#define SQL_CVT_TINYINT                     0x00002000L
+#define SQL_CVT_BIGINT                      0x00004000L
+#define SQL_CVT_DATE                        0x00008000L
+#define SQL_CVT_TIME                        0x00010000L
+#define SQL_CVT_TIMESTAMP                   0x00020000L
+#define SQL_CVT_LONGVARBINARY               0x00040000L
+#if (ODBCVER >= 0x0300)
+#define SQL_CVT_INTERVAL_YEAR_MONTH	0x00080000L
+#define SQL_CVT_INTERVAL_DAY_TIME	0x00100000L
+#define	SQL_CVT_WCHAR			0x00200000L
+#define	SQL_CVT_WLONGVARCHAR		0x00400000L
+#define	SQL_CVT_WVARCHAR		0x00800000L
+
+#endif
+
+
+#define SQL_FN_CVT_CONVERT		0x00000001L
+#if (ODBCVER >= 0x0300)
+#define SQL_FN_CVT_CAST			0x00000002L
+#endif
+
+#define SQL_FN_STR_CONCAT                   0x00000001L
+#define SQL_FN_STR_INSERT                   0x00000002L
+#define SQL_FN_STR_LEFT                     0x00000004L
+#define SQL_FN_STR_LTRIM                    0x00000008L
+#define SQL_FN_STR_LENGTH                   0x00000010L
+#define SQL_FN_STR_LOCATE                   0x00000020L
+#define SQL_FN_STR_LCASE                    0x00000040L
+#define SQL_FN_STR_REPEAT                   0x00000080L
+#define SQL_FN_STR_REPLACE                  0x00000100L
+#define SQL_FN_STR_RIGHT                    0x00000200L
+#define SQL_FN_STR_RTRIM                    0x00000400L
+#define SQL_FN_STR_SUBSTRING                0x00000800L
+#define SQL_FN_STR_UCASE                    0x00001000L
+#define SQL_FN_STR_ASCII                    0x00002000L
+#define SQL_FN_STR_CHAR                     0x00004000L
+#define SQL_FN_STR_DIFFERENCE               0x00008000L
+#define SQL_FN_STR_LOCATE_2                 0x00010000L
+#define SQL_FN_STR_SOUNDEX                  0x00020000L
+#define SQL_FN_STR_SPACE                    0x00040000L
+#if (ODBCVER >= 0x0300)
+#define SQL_FN_STR_BIT_LENGTH			0x00080000L
+#define SQL_FN_STR_CHAR_LENGTH			0x00100000L
+#define SQL_FN_STR_CHARACTER_LENGTH		0x00200000L
+#define SQL_FN_STR_OCTET_LENGTH			0x00400000L
+#define SQL_FN_STR_POSITION			0x00800000L
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_SSF_CONVERT					0x00000001L	
+#define SQL_SSF_LOWER					0x00000002L
+#define SQL_SSF_UPPER					0x00000004L
+#define SQL_SSF_SUBSTRING				0x00000008L
+#define SQL_SSF_TRANSLATE				0x00000010L
+#define SQL_SSF_TRIM_BOTH				0x00000020L
+#define SQL_SSF_TRIM_LEADING				0x00000040L
+#define SQL_SSF_TRIM_TRAILING				0x00000080L
+#endif
+
+#define SQL_FN_NUM_ABS                      0x00000001L
+#define SQL_FN_NUM_ACOS                     0x00000002L
+#define SQL_FN_NUM_ASIN                     0x00000004L
+#define SQL_FN_NUM_ATAN                     0x00000008L
+#define SQL_FN_NUM_ATAN2                    0x00000010L
+#define SQL_FN_NUM_CEILING                  0x00000020L
+#define SQL_FN_NUM_COS                      0x00000040L
+#define SQL_FN_NUM_COT                      0x00000080L
+#define SQL_FN_NUM_EXP                      0x00000100L
+#define SQL_FN_NUM_FLOOR                    0x00000200L
+#define SQL_FN_NUM_LOG                      0x00000400L
+#define SQL_FN_NUM_MOD                      0x00000800L
+#define SQL_FN_NUM_SIGN                     0x00001000L
+#define SQL_FN_NUM_SIN                      0x00002000L
+#define SQL_FN_NUM_SQRT                     0x00004000L
+#define SQL_FN_NUM_TAN                      0x00008000L
+#define SQL_FN_NUM_PI                       0x00010000L
+#define SQL_FN_NUM_RAND                     0x00020000L
+#define SQL_FN_NUM_DEGREES                  0x00040000L
+#define SQL_FN_NUM_LOG10                    0x00080000L
+#define SQL_FN_NUM_POWER                    0x00100000L
+#define SQL_FN_NUM_RADIANS                  0x00200000L
+#define SQL_FN_NUM_ROUND                    0x00400000L
+#define SQL_FN_NUM_TRUNCATE                 0x00800000L
+
+#if (ODBCVER >= 0x0300)
+#define SQL_SNVF_BIT_LENGTH				0x00000001L
+#define SQL_SNVF_CHAR_LENGTH				0x00000002L
+#define SQL_SNVF_CHARACTER_LENGTH			0x00000004L
+#define SQL_SNVF_EXTRACT				0x00000008L
+#define SQL_SNVF_OCTET_LENGTH				0x00000010L
+#define SQL_SNVF_POSITION				0x00000020L
+#endif 
+
+#define SQL_FN_TD_NOW                       0x00000001L
+#define SQL_FN_TD_CURDATE                   0x00000002L
+#define SQL_FN_TD_DAYOFMONTH                0x00000004L
+#define SQL_FN_TD_DAYOFWEEK                 0x00000008L
+#define SQL_FN_TD_DAYOFYEAR                 0x00000010L
+#define SQL_FN_TD_MONTH                     0x00000020L
+#define SQL_FN_TD_QUARTER                   0x00000040L
+#define SQL_FN_TD_WEEK                      0x00000080L
+#define SQL_FN_TD_YEAR                      0x00000100L
+#define SQL_FN_TD_CURTIME                   0x00000200L
+#define SQL_FN_TD_HOUR                      0x00000400L
+#define SQL_FN_TD_MINUTE                    0x00000800L
+#define SQL_FN_TD_SECOND                    0x00001000L
+#define SQL_FN_TD_TIMESTAMPADD              0x00002000L
+#define SQL_FN_TD_TIMESTAMPDIFF             0x00004000L
+#define SQL_FN_TD_DAYNAME                   0x00008000L
+#define SQL_FN_TD_MONTHNAME                 0x00010000L
+#if (ODBCVER >= 0x0300)
+#define SQL_FN_TD_CURRENT_DATE				0x00020000L
+#define SQL_FN_TD_CURRENT_TIME				0x00040000L
+#define SQL_FN_TD_CURRENT_TIMESTAMP			0x00080000L
+#define SQL_FN_TD_EXTRACT				0x00100000L
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_SDF_CURRENT_DATE				0x00000001L
+#define SQL_SDF_CURRENT_TIME				0x00000002L
+#define SQL_SDF_CURRENT_TIMESTAMP			0x00000004L
+#endif 
+
+#define SQL_FN_SYS_USERNAME                 0x00000001L
+#define SQL_FN_SYS_DBNAME                   0x00000002L
+#define SQL_FN_SYS_IFNULL                   0x00000004L
+
+#define SQL_FN_TSI_FRAC_SECOND              0x00000001L
+#define SQL_FN_TSI_SECOND                   0x00000002L
+#define SQL_FN_TSI_MINUTE                   0x00000004L
+#define SQL_FN_TSI_HOUR                     0x00000008L
+#define SQL_FN_TSI_DAY                      0x00000010L
+#define SQL_FN_TSI_WEEK                     0x00000020L
+#define SQL_FN_TSI_MONTH                    0x00000040L
+#define SQL_FN_TSI_QUARTER                  0x00000080L
+#define SQL_FN_TSI_YEAR                     0x00000100L
+
+#if (ODBCVER >= 0x0300)
+#define SQL_CA1_NEXT					0x00000001L
+#define SQL_CA1_ABSOLUTE				0x00000002L
+#define SQL_CA1_RELATIVE				0x00000004L
+#define SQL_CA1_BOOKMARK				0x00000008L
+
+#define SQL_CA1_LOCK_NO_CHANGE				0x00000040L
+#define SQL_CA1_LOCK_EXCLUSIVE				0x00000080L
+#define SQL_CA1_LOCK_UNLOCK				0x00000100L
+
+#define SQL_CA1_POS_POSITION				0x00000200L
+#define SQL_CA1_POS_UPDATE				0x00000400L
+#define SQL_CA1_POS_DELETE				0x00000800L
+#define SQL_CA1_POS_REFRESH				0x00001000L
+
+#define SQL_CA1_POSITIONED_UPDATE			0x00002000L
+#define SQL_CA1_POSITIONED_DELETE			0x00004000L
+#define SQL_CA1_SELECT_FOR_UPDATE			0x00008000L
+
+#define SQL_CA1_BULK_ADD			0x00010000L
+#define SQL_CA1_BULK_UPDATE_BY_BOOKMARK		0x00020000L
+#define SQL_CA1_BULK_DELETE_BY_BOOKMARK		0x00040000L
+#define SQL_CA1_BULK_FETCH_BY_BOOKMARK		0x00080000L
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_CA2_READ_ONLY_CONCURRENCY		0x00000001L
+#define SQL_CA2_LOCK_CONCURRENCY		0x00000002L
+#define SQL_CA2_OPT_ROWVER_CONCURRENCY		0x00000004L
+#define SQL_CA2_OPT_VALUES_CONCURRENCY		0x00000008L
+
+#define SQL_CA2_SENSITIVITY_ADDITIONS		0x00000010L
+#define SQL_CA2_SENSITIVITY_DELETIONS		0x00000020L
+#define SQL_CA2_SENSITIVITY_UPDATES		0x00000040L
+
+#define SQL_CA2_MAX_ROWS_SELECT			0x00000080L
+#define SQL_CA2_MAX_ROWS_INSERT			0x00000100L
+#define SQL_CA2_MAX_ROWS_DELETE			0x00000200L
+#define SQL_CA2_MAX_ROWS_UPDATE			0x00000400L
+#define SQL_CA2_MAX_ROWS_CATALOG		0x00000800L
+#define SQL_CA2_MAX_ROWS_AFFECTS_ALL		(SQL_CA2_MAX_ROWS_SELECT | SQL_CA2_MAX_ROWS_INSERT | SQL_CA2_MAX_ROWS_DELETE | SQL_CA2_MAX_ROWS_UPDATE | SQL_CA2_MAX_ROWS_CATALOG)
+
+#define SQL_CA2_CRC_EXACT			0x00001000L
+#define SQL_CA2_CRC_APPROXIMATE			0x00002000L
+
+#define SQL_CA2_SIMULATE_NON_UNIQUE		0x00004000L
+#define SQL_CA2_SIMULATE_TRY_UNIQUE		0x00008000L
+#define SQL_CA2_SIMULATE_UNIQUE			0x00010000L
+#endif
+
+#define SQL_OAC_NONE                        0x0000
+#define SQL_OAC_LEVEL1                      0x0001
+#define SQL_OAC_LEVEL2                      0x0002
+
+#define SQL_OSCC_NOT_COMPLIANT              0x0000
+#define SQL_OSCC_COMPLIANT                  0x0001
+
+#define SQL_OSC_MINIMUM                     0x0000
+#define SQL_OSC_CORE                        0x0001
+#define SQL_OSC_EXTENDED                    0x0002
+
+#define SQL_CB_NULL                         0x0000
+#define SQL_CB_NON_NULL                     0x0001
+
+#define SQL_SO_FORWARD_ONLY                 0x00000001L
+#define SQL_SO_KEYSET_DRIVEN                0x00000002L
+#define SQL_SO_DYNAMIC                      0x00000004L
+#define SQL_SO_MIXED                        0x00000008L
+#define SQL_SO_STATIC                       0x00000010L
+
+#define SQL_FD_FETCH_BOOKMARK               0x00000080L
+
+#define SQL_CN_NONE                         0x0000
+#define SQL_CN_DIFFERENT                    0x0001
+#define SQL_CN_ANY                          0x0002
+
+#define SQL_NNC_NULL                        0x0000
+#define SQL_NNC_NON_NULL                    0x0001
+
+#define SQL_NC_START                        0x0002
+#define SQL_NC_END                          0x0004
+
+#define SQL_FILE_NOT_SUPPORTED              0x0000
+#define SQL_FILE_TABLE                      0x0001
+#define SQL_FILE_QUALIFIER                  0x0002
+#define SQL_FILE_CATALOG		SQL_FILE_QUALIFIER
+
+#define SQL_GD_BLOCK                        0x00000004L
+#define SQL_GD_BOUND                        0x00000008L
+
+#define SQL_PS_POSITIONED_DELETE            0x00000001L
+#define SQL_PS_POSITIONED_UPDATE            0x00000002L
+#define SQL_PS_SELECT_FOR_UPDATE            0x00000004L
+
+#define SQL_GB_NOT_SUPPORTED                0x0000
+#define SQL_GB_GROUP_BY_EQUALS_SELECT       0x0001
+#define SQL_GB_GROUP_BY_CONTAINS_SELECT     0x0002
+#define SQL_GB_NO_RELATION                  0x0003
+#if (ODBCVER >= 0x0300)
+#define	SQL_GB_COLLATE			0x0004
+
+#endif
+
+#define SQL_OU_DML_STATEMENTS               0x00000001L
+#define SQL_OU_PROCEDURE_INVOCATION         0x00000002L
+#define SQL_OU_TABLE_DEFINITION             0x00000004L
+#define SQL_OU_INDEX_DEFINITION             0x00000008L
+#define SQL_OU_PRIVILEGE_DEFINITION         0x00000010L
+
+#if (ODBCVER >= 0x0300)
+#define SQL_SU_DML_STATEMENTS			SQL_OU_DML_STATEMENTS
+#define SQL_SU_PROCEDURE_INVOCATION		SQL_OU_PROCEDURE_INVOCATION
+#define SQL_SU_TABLE_DEFINITION			SQL_OU_TABLE_DEFINITION
+#define SQL_SU_INDEX_DEFINITION			SQL_OU_INDEX_DEFINITION
+#define SQL_SU_PRIVILEGE_DEFINITION		SQL_OU_PRIVILEGE_DEFINITION
+#endif
+
+#define SQL_QU_DML_STATEMENTS               0x00000001L
+#define SQL_QU_PROCEDURE_INVOCATION         0x00000002L
+#define SQL_QU_TABLE_DEFINITION             0x00000004L
+#define SQL_QU_INDEX_DEFINITION             0x00000008L
+#define SQL_QU_PRIVILEGE_DEFINITION         0x00000010L
+
+#if (ODBCVER >= 0x0300)
+#define SQL_CU_DML_STATEMENTS			SQL_QU_DML_STATEMENTS
+#define SQL_CU_PROCEDURE_INVOCATION		SQL_QU_PROCEDURE_INVOCATION
+#define SQL_CU_TABLE_DEFINITION			SQL_QU_TABLE_DEFINITION
+#define SQL_CU_INDEX_DEFINITION			SQL_QU_INDEX_DEFINITION
+#define SQL_CU_PRIVILEGE_DEFINITION		SQL_QU_PRIVILEGE_DEFINITION
+#endif
+
+#define SQL_SQ_COMPARISON                   0x00000001L
+#define SQL_SQ_EXISTS                       0x00000002L
+#define SQL_SQ_IN                           0x00000004L
+#define SQL_SQ_QUANTIFIED                   0x00000008L
+#define SQL_SQ_CORRELATED_SUBQUERIES        0x00000010L
+
+#define SQL_U_UNION                         0x00000001L
+#define SQL_U_UNION_ALL                     0x00000002L
+
+#define SQL_BP_CLOSE                        0x00000001L
+#define SQL_BP_DELETE                       0x00000002L
+#define SQL_BP_DROP                         0x00000004L
+#define SQL_BP_TRANSACTION                  0x00000008L
+#define SQL_BP_UPDATE                       0x00000010L
+#define SQL_BP_OTHER_HSTMT                  0x00000020L
+#define SQL_BP_SCROLL                       0x00000040L
+
+#define SQL_SS_ADDITIONS                    0x00000001L
+#define SQL_SS_DELETIONS                    0x00000002L
+#define SQL_SS_UPDATES                      0x00000004L
+
+#define	SQL_CV_CREATE_VIEW					0x00000001L
+#define	SQL_CV_CHECK_OPTION					0x00000002L
+#define	SQL_CV_CASCADED						0x00000004L
+#define	SQL_CV_LOCAL						0x00000008L
+
+#define SQL_LCK_NO_CHANGE                   0x00000001L
+#define SQL_LCK_EXCLUSIVE                   0x00000002L
+#define SQL_LCK_UNLOCK                      0x00000004L
+
+#define SQL_POS_POSITION                    0x00000001L
+#define SQL_POS_REFRESH                     0x00000002L
+#define SQL_POS_UPDATE                      0x00000004L
+#define SQL_POS_DELETE                      0x00000008L
+#define SQL_POS_ADD                         0x00000010L
+
+#define SQL_QL_START                        0x0001
+#define SQL_QL_END                          0x0002
+
+#if (ODBCVER >= 0x0300)
+#define SQL_AF_AVG						0x00000001L
+#define SQL_AF_COUNT					0x00000002L
+#define SQL_AF_MAX						0x00000004L
+#define SQL_AF_MIN						0x00000008L
+#define SQL_AF_SUM						0x00000010L
+#define SQL_AF_DISTINCT					0x00000020L
+#define SQL_AF_ALL						0x00000040L	
+
+#define	SQL_SC_SQL92_ENTRY				0x00000001L
+#define	SQL_SC_FIPS127_2_TRANSITIONAL	0x00000002L
+#define	SQL_SC_SQL92_INTERMEDIATE		0x00000004L
+#define	SQL_SC_SQL92_FULL				0x00000008L
+
+#define SQL_DL_SQL92_DATE						0x00000001L
+#define SQL_DL_SQL92_TIME						0x00000002L
+#define SQL_DL_SQL92_TIMESTAMP					0x00000004L
+#define SQL_DL_SQL92_INTERVAL_YEAR				0x00000008L
+#define SQL_DL_SQL92_INTERVAL_MONTH				0x00000010L
+#define SQL_DL_SQL92_INTERVAL_DAY				0x00000020L
+#define SQL_DL_SQL92_INTERVAL_HOUR				0x00000040L
+#define	SQL_DL_SQL92_INTERVAL_MINUTE			0x00000080L
+#define SQL_DL_SQL92_INTERVAL_SECOND			0x00000100L
+#define SQL_DL_SQL92_INTERVAL_YEAR_TO_MONTH		0x00000200L
+#define SQL_DL_SQL92_INTERVAL_DAY_TO_HOUR		0x00000400L
+#define SQL_DL_SQL92_INTERVAL_DAY_TO_MINUTE		0x00000800L
+#define SQL_DL_SQL92_INTERVAL_DAY_TO_SECOND		0x00001000L
+#define SQL_DL_SQL92_INTERVAL_HOUR_TO_MINUTE	0x00002000L
+#define SQL_DL_SQL92_INTERVAL_HOUR_TO_SECOND	0x00004000L
+#define SQL_DL_SQL92_INTERVAL_MINUTE_TO_SECOND	0x00008000L
+
+#define SQL_CL_START						SQL_QL_START
+#define SQL_CL_END							SQL_QL_END
+
+#define SQL_BRC_PROCEDURES			0x0000001
+#define	SQL_BRC_EXPLICIT			0x0000002
+#define	SQL_BRC_ROLLED_UP			0x0000004
+
+#define SQL_BS_SELECT_EXPLICIT				0x00000001L
+#define SQL_BS_ROW_COUNT_EXPLICIT			0x00000002L
+#define SQL_BS_SELECT_PROC					0x00000004L
+#define SQL_BS_ROW_COUNT_PROC				0x00000008L
+
+#define SQL_PARC_BATCH		1
+#define SQL_PARC_NO_BATCH	2
+
+#define SQL_PAS_BATCH				1
+#define SQL_PAS_NO_BATCH			2		
+#define SQL_PAS_NO_SELECT			3
+
+#define SQL_IK_NONE							0x00000000L
+#define SQL_IK_ASC							0x00000001L
+#define SQL_IK_DESC							0x00000002L
+#define SQL_IK_ALL							(SQL_IK_ASC | SQL_IK_DESC)
+
+#define SQL_ISV_ASSERTIONS					0x00000001L
+#define SQL_ISV_CHARACTER_SETS				0x00000002L
+#define SQL_ISV_CHECK_CONSTRAINTS			0x00000004L
+#define SQL_ISV_COLLATIONS					0x00000008L
+#define SQL_ISV_COLUMN_DOMAIN_USAGE			0x00000010L
+#define SQL_ISV_COLUMN_PRIVILEGES			0x00000020L
+#define SQL_ISV_COLUMNS						0x00000040L
+#define SQL_ISV_CONSTRAINT_COLUMN_USAGE		0x00000080L
+#define SQL_ISV_CONSTRAINT_TABLE_USAGE		0x00000100L
+#define SQL_ISV_DOMAIN_CONSTRAINTS			0x00000200L
+#define SQL_ISV_DOMAINS						0x00000400L
+#define SQL_ISV_KEY_COLUMN_USAGE			0x00000800L
+#define SQL_ISV_REFERENTIAL_CONSTRAINTS		0x00001000L
+#define SQL_ISV_SCHEMATA					0x00002000L
+#define SQL_ISV_SQL_LANGUAGES				0x00004000L
+#define	SQL_ISV_TABLE_CONSTRAINTS			0x00008000L
+#define SQL_ISV_TABLE_PRIVILEGES			0x00010000L
+#define SQL_ISV_TABLES						0x00020000L
+#define SQL_ISV_TRANSLATIONS				0x00040000L
+#define SQL_ISV_USAGE_PRIVILEGES			0x00080000L
+#define SQL_ISV_VIEW_COLUMN_USAGE			0x00100000L
+#define SQL_ISV_VIEW_TABLE_USAGE			0x00200000L
+#define SQL_ISV_VIEWS						0x00400000L
+
+#define	SQL_AM_NONE			0
+#define	SQL_AM_CONNECTION	1
+#define	SQL_AM_STATEMENT	2
+
+#define SQL_AD_CONSTRAINT_NAME_DEFINITION			0x00000001L	
+#define	SQL_AD_ADD_DOMAIN_CONSTRAINT	 			0x00000002L
+#define	SQL_AD_DROP_DOMAIN_CONSTRAINT	 			0x00000004L
+#define	SQL_AD_ADD_DOMAIN_DEFAULT   	 			0x00000008L
+#define	SQL_AD_DROP_DOMAIN_DEFAULT   	 			0x00000010L
+#define SQL_AD_ADD_CONSTRAINT_INITIALLY_DEFERRED	0x00000020L
+#define SQL_AD_ADD_CONSTRAINT_INITIALLY_IMMEDIATE	0x00000040L
+#define SQL_AD_ADD_CONSTRAINT_DEFERRABLE			0x00000080L
+#define SQL_AD_ADD_CONSTRAINT_NON_DEFERRABLE		0x00000100L
+
+#define	SQL_CS_CREATE_SCHEMA				0x00000001L
+#define	SQL_CS_AUTHORIZATION				0x00000002L
+#define	SQL_CS_DEFAULT_CHARACTER_SET		0x00000004L
+
+#define	SQL_CTR_CREATE_TRANSLATION			0x00000001L
+
+#define	SQL_CA_CREATE_ASSERTION					0x00000001L
+#define	SQL_CA_CONSTRAINT_INITIALLY_DEFERRED	0x00000010L
+#define	SQL_CA_CONSTRAINT_INITIALLY_IMMEDIATE	0x00000020L
+#define	SQL_CA_CONSTRAINT_DEFERRABLE			0x00000040L
+#define	SQL_CA_CONSTRAINT_NON_DEFERRABLE		0x00000080L
+
+#define	SQL_CCS_CREATE_CHARACTER_SET		0x00000001L
+#define	SQL_CCS_COLLATE_CLAUSE				0x00000002L
+#define	SQL_CCS_LIMITED_COLLATION			0x00000004L
+
+#define	SQL_CCOL_CREATE_COLLATION			0x00000001L
+
+#define	SQL_CDO_CREATE_DOMAIN					0x00000001L
+#define	SQL_CDO_DEFAULT							0x00000002L
+#define	SQL_CDO_CONSTRAINT						0x00000004L
+#define	SQL_CDO_COLLATION						0x00000008L
+#define SQL_CDO_CONSTRAINT_NAME_DEFINITION		0x00000010L
+#define SQL_CDO_CONSTRAINT_INITIALLY_DEFERRED	0x00000020L
+#define SQL_CDO_CONSTRAINT_INITIALLY_IMMEDIATE	0x00000040L
+#define SQL_CDO_CONSTRAINT_DEFERRABLE			0x00000080L
+#define SQL_CDO_CONSTRAINT_NON_DEFERRABLE		0x00000100L
+
+#define	SQL_CT_CREATE_TABLE						0x00000001L
+#define	SQL_CT_COMMIT_PRESERVE					0x00000002L
+#define	SQL_CT_COMMIT_DELETE					0x00000004L
+#define	SQL_CT_GLOBAL_TEMPORARY					0x00000008L
+#define	SQL_CT_LOCAL_TEMPORARY					0x00000010L
+#define	SQL_CT_CONSTRAINT_INITIALLY_DEFERRED	0x00000020L
+#define	SQL_CT_CONSTRAINT_INITIALLY_IMMEDIATE	0x00000040L
+#define	SQL_CT_CONSTRAINT_DEFERRABLE			0x00000080L
+#define	SQL_CT_CONSTRAINT_NON_DEFERRABLE		0x00000100L
+#define SQL_CT_COLUMN_CONSTRAINT				0x00000200L
+#define SQL_CT_COLUMN_DEFAULT					0x00000400L
+#define SQL_CT_COLUMN_COLLATION					0x00000800L
+#define SQL_CT_TABLE_CONSTRAINT					0x00001000L
+#define SQL_CT_CONSTRAINT_NAME_DEFINITION		0x00002000L
+
+#define SQL_DI_CREATE_INDEX						0x00000001L
+#define SQL_DI_DROP_INDEX						0x00000002L
+
+#define	SQL_DC_DROP_COLLATION					0x00000001L
+
+#define	SQL_DD_DROP_DOMAIN						0x00000001L
+#define	SQL_DD_RESTRICT							0x00000002L
+#define	SQL_DD_CASCADE							0x00000004L
+
+#define	SQL_DS_DROP_SCHEMA						0x00000001L
+#define SQL_DS_RESTRICT							0x00000002L
+#define	SQL_DS_CASCADE							0x00000004L
+
+#define	SQL_DCS_DROP_CHARACTER_SET				0x00000001L
+
+#define	SQL_DA_DROP_ASSERTION					0x00000001L
+
+#define	SQL_DT_DROP_TABLE						0x00000001L
+#define	SQL_DT_RESTRICT							0x00000002L
+#define	SQL_DT_CASCADE							0x00000004L
+
+#define	SQL_DTR_DROP_TRANSLATION				0x00000001L
+
+#define	SQL_DV_DROP_VIEW						0x00000001L
+#define	SQL_DV_RESTRICT							0x00000002L
+#define	SQL_DV_CASCADE							0x00000004L
+
+#define	SQL_IS_INSERT_LITERALS					0x00000001L
+#define SQL_IS_INSERT_SEARCHED					0x00000002L
+#define SQL_IS_SELECT_INTO						0x00000004L
+
+#define SQL_OIC_CORE							1UL
+#define SQL_OIC_LEVEL1							2UL
+#define SQL_OIC_LEVEL2							3UL
+
+#define SQL_SFKD_CASCADE						0x00000001L
+#define SQL_SFKD_NO_ACTION						0x00000002L
+#define SQL_SFKD_SET_DEFAULT					0x00000004L
+#define SQL_SFKD_SET_NULL						0x00000008L
+
+#define SQL_SFKU_CASCADE						0x00000001L
+#define SQL_SFKU_NO_ACTION						0x00000002L
+#define SQL_SFKU_SET_DEFAULT					0x00000004L
+#define SQL_SFKU_SET_NULL						0x00000008L
+
+#define SQL_SG_USAGE_ON_DOMAIN					0x00000001L
+#define SQL_SG_USAGE_ON_CHARACTER_SET			0x00000002L
+#define SQL_SG_USAGE_ON_COLLATION				0x00000004L
+#define SQL_SG_USAGE_ON_TRANSLATION				0x00000008L
+#define SQL_SG_WITH_GRANT_OPTION				0x00000010L
+#define SQL_SG_DELETE_TABLE						0x00000020L
+#define SQL_SG_INSERT_TABLE						0x00000040L
+#define SQL_SG_INSERT_COLUMN					0x00000080L
+#define SQL_SG_REFERENCES_TABLE					0x00000100L
+#define SQL_SG_REFERENCES_COLUMN				0x00000200L
+#define SQL_SG_SELECT_TABLE						0x00000400L
+#define SQL_SG_UPDATE_TABLE						0x00000800L
+#define SQL_SG_UPDATE_COLUMN					0x00001000L	
+
+#define SQL_SP_EXISTS							0x00000001L
+#define SQL_SP_ISNOTNULL						0x00000002L
+#define SQL_SP_ISNULL							0x00000004L
+#define SQL_SP_MATCH_FULL						0x00000008L
+#define SQL_SP_MATCH_PARTIAL					0x00000010L
+#define SQL_SP_MATCH_UNIQUE_FULL				0x00000020L
+#define SQL_SP_MATCH_UNIQUE_PARTIAL				0x00000040L
+#define SQL_SP_OVERLAPS							0x00000080L
+#define SQL_SP_UNIQUE							0x00000100L
+#define SQL_SP_LIKE								0x00000200L
+#define SQL_SP_IN								0x00000400L
+#define SQL_SP_BETWEEN							0x00000800L
+#define SQL_SP_COMPARISON						0x00001000L
+#define SQL_SP_QUANTIFIED_COMPARISON			0x00002000L
+
+#define SQL_SRJO_CORRESPONDING_CLAUSE			0x00000001L
+#define SQL_SRJO_CROSS_JOIN						0x00000002L
+#define SQL_SRJO_EXCEPT_JOIN					0x00000004L
+#define SQL_SRJO_FULL_OUTER_JOIN				0x00000008L
+#define SQL_SRJO_INNER_JOIN						0x00000010L
+#define SQL_SRJO_INTERSECT_JOIN					0x00000020L
+#define SQL_SRJO_LEFT_OUTER_JOIN				0x00000040L
+#define SQL_SRJO_NATURAL_JOIN					0x00000080L
+#define SQL_SRJO_RIGHT_OUTER_JOIN				0x00000100L
+#define SQL_SRJO_UNION_JOIN						0x00000200L
+
+#define SQL_SR_USAGE_ON_DOMAIN					0x00000001L
+#define SQL_SR_USAGE_ON_CHARACTER_SET			0x00000002L
+#define SQL_SR_USAGE_ON_COLLATION				0x00000004L
+#define SQL_SR_USAGE_ON_TRANSLATION				0x00000008L
+#define SQL_SR_GRANT_OPTION_FOR					0x00000010L
+#define SQL_SR_CASCADE							0x00000020L
+#define SQL_SR_RESTRICT							0x00000040L
+#define SQL_SR_DELETE_TABLE						0x00000080L
+#define SQL_SR_INSERT_TABLE						0x00000100L
+#define SQL_SR_INSERT_COLUMN					0x00000200L
+#define SQL_SR_REFERENCES_TABLE					0x00000400L
+#define SQL_SR_REFERENCES_COLUMN				0x00000800L
+#define SQL_SR_SELECT_TABLE						0x00001000L
+#define SQL_SR_UPDATE_TABLE						0x00002000L
+#define SQL_SR_UPDATE_COLUMN					0x00004000L
+
+#define SQL_SRVC_VALUE_EXPRESSION				0x00000001L
+#define SQL_SRVC_NULL							0x00000002L
+#define SQL_SRVC_DEFAULT						0x00000004L
+#define SQL_SRVC_ROW_SUBQUERY					0x00000008L
+
+#define SQL_SVE_CASE							0x00000001L
+#define SQL_SVE_CAST							0x00000002L
+#define SQL_SVE_COALESCE						0x00000004L
+#define SQL_SVE_NULLIF							0x00000008L
+
+#define SQL_SCC_XOPEN_CLI_VERSION1				0x00000001L
+#define SQL_SCC_ISO92_CLI						0x00000002L
+
+#define SQL_US_UNION							SQL_U_UNION
+#define SQL_US_UNION_ALL						SQL_U_UNION_ALL
+
+#endif
+
+#define SQL_DTC_ENLIST_EXPENSIVE				0x00000001L
+#define SQL_DTC_UNENLIST_EXPENSIVE				0x00000002L
+
+#if (ODBCVER >= 0x0300)
+#define SQL_FETCH_FIRST_USER				31
+#define SQL_FETCH_FIRST_SYSTEM				32
+#endif 
+
+#define SQL_ENTIRE_ROWSET            0
+
+#define SQL_POSITION                 0
+#define SQL_REFRESH                  1
+#define SQL_UPDATE                   2
+#define SQL_DELETE                   3
+
+#define SQL_ADD                      4
+#define	SQL_SETPOS_MAX_OPTION_VALUE			SQL_ADD
+#if (ODBCVER >= 0x0300)
+#define SQL_UPDATE_BY_BOOKMARK		 5
+#define SQL_DELETE_BY_BOOKMARK		 6
+#define	SQL_FETCH_BY_BOOKMARK		 7
+
+#endif
+
+#define SQL_LOCK_NO_CHANGE           0
+#define SQL_LOCK_EXCLUSIVE           1
+#define SQL_LOCK_UNLOCK              2
+
+#define	SQL_SETPOS_MAX_LOCK_VALUE		SQL_LOCK_UNLOCK
+
+#define SQL_POSITION_TO(hstmt,irow) SQLSetPos(hstmt,irow,SQL_POSITION,SQL_LOCK_NO_CHANGE)
+#define SQL_LOCK_RECORD(hstmt,irow,fLock) SQLSetPos(hstmt,irow,SQL_POSITION,fLock)
+#define SQL_REFRESH_RECORD(hstmt,irow,fLock) SQLSetPos(hstmt,irow,SQL_REFRESH,fLock)
+#define SQL_UPDATE_RECORD(hstmt,irow) SQLSetPos(hstmt,irow,SQL_UPDATE,SQL_LOCK_NO_CHANGE)
+#define SQL_DELETE_RECORD(hstmt,irow) SQLSetPos(hstmt,irow,SQL_DELETE,SQL_LOCK_NO_CHANGE)
+#define SQL_ADD_RECORD(hstmt,irow) SQLSetPos(hstmt,irow,SQL_ADD,SQL_LOCK_NO_CHANGE)
+
+#define SQL_BEST_ROWID                  1
+#define SQL_ROWVER                      2
+
+#define SQL_PC_NOT_PSEUDO               1
+
+#define SQL_QUICK                       0
+#define SQL_ENSURE                      1
+
+#define SQL_TABLE_STAT                  0
+
+#if (ODBCVER >= 0x0300)
+#define SQL_ALL_CATALOGS				"%"
+#define SQL_ALL_SCHEMAS					"%"
+#define SQL_ALL_TABLE_TYPES				"%"
+#endif  /* ODBCVER >= 0x0300 */
+
+#define SQL_DRIVER_NOPROMPT             0
+#define SQL_DRIVER_COMPLETE             1
+#define SQL_DRIVER_PROMPT               2
+#define SQL_DRIVER_COMPLETE_REQUIRED    3
+
+SQLRETURN WINAPI  SQLDriverConnect(
+    SQLHDBC            hdbc,
+    SQLHWND            hwnd,
+    SQLCHAR 		  *szConnStrIn,
+    SQLSMALLINT        cbConnStrIn,
+    SQLCHAR           *szConnStrOut,
+    SQLSMALLINT        cbConnStrOutMax,
+    SQLSMALLINT 	  *pcbConnStrOut,
+    SQLUSMALLINT       fDriverCompletion);
+
+#define SQL_FETCH_BOOKMARK               8
+
+#define SQL_ROW_SUCCESS                  0
+#define SQL_ROW_DELETED                  1
+#define SQL_ROW_UPDATED                  2
+#define SQL_ROW_NOROW                    3
+#define SQL_ROW_ADDED                    4
+#define SQL_ROW_ERROR                    5
+#if (ODBCVER >= 0x0300)
+#define SQL_ROW_SUCCESS_WITH_INFO		 6
+#define SQL_ROW_PROCEED					 0
+#define SQL_ROW_IGNORE					 1
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_PARAM_SUCCESS				0
+#define SQL_PARAM_SUCCESS_WITH_INFO		6
+#define SQL_PARAM_ERROR					5
+#define SQL_PARAM_UNUSED				7
+#define SQL_PARAM_DIAG_UNAVAILABLE		1
+
+#define SQL_PARAM_PROCEED				0
+#define SQL_PARAM_IGNORE				1
+#endif
+
+#define SQL_CASCADE                      0
+#define SQL_RESTRICT                     1
+#define SQL_SET_NULL                     2
+#if (ODBCVER >= 0x0250)
+#define SQL_NO_ACTION			 3
+#define SQL_SET_DEFAULT			 4
+#endif
+
+#if (ODBCVER >= 0x0300)
+
+#define SQL_INITIALLY_DEFERRED			5
+#define SQL_INITIALLY_IMMEDIATE			6
+#define SQL_NOT_DEFERRABLE			7
+
+#endif
+
+#define SQL_PARAM_TYPE_UNKNOWN           0
+#define SQL_PARAM_INPUT                  1
+#define SQL_PARAM_INPUT_OUTPUT           2
+#define SQL_RESULT_COL                   3
+#define SQL_PARAM_OUTPUT                 4
+#define SQL_RETURN_VALUE                 5
+
+#define SQL_PT_UNKNOWN                   0
+#define SQL_PT_PROCEDURE                 1
+#define SQL_PT_FUNCTION                  2
+
+#define SQL_ODBC_KEYWORDS "ABSOLUTE,ACTION,ADA,ADD,ALL,ALLOCATE,ALTER,AND,ANY,ARE,AS,"
+
+SQLRETURN WINAPI  SQLBrowseConnect(
+    SQLHDBC            hdbc,
+    SQLCHAR 		  *szConnStrIn,
+    SQLSMALLINT        cbConnStrIn,
+    SQLCHAR 		  *szConnStrOut,
+    SQLSMALLINT        cbConnStrOutMax,
+    SQLSMALLINT       *pcbConnStrOut);
+
+#if (ODBCVER >= 0x0300)
+SQLRETURN WINAPI	SQLBulkOperations(
+	SQLHSTMT			StatementHandle,
+	SQLSMALLINT			Operation);
+#endif
+
+SQLRETURN WINAPI  SQLColAttributes(
+    SQLHSTMT           hstmt,
+    SQLUSMALLINT       icol,
+    SQLUSMALLINT       fDescType,
+    SQLPOINTER         rgbDesc,
+    SQLSMALLINT        cbDescMax,
+    SQLSMALLINT 	  *pcbDesc,
+    SQLINTEGER 		  *pfDesc);
+
+SQLRETURN WINAPI  SQLColumnPrivileges(
+    SQLHSTMT           hstmt,
+    SQLCHAR 		  *szCatalogName,
+    SQLSMALLINT        cbCatalogName,
+    SQLCHAR 		  *szSchemaName,
+    SQLSMALLINT        cbSchemaName,
+    SQLCHAR 		  *szTableName,
+    SQLSMALLINT        cbTableName,
+    SQLCHAR 		  *szColumnName,
+    SQLSMALLINT        cbColumnName);
+
+SQLRETURN WINAPI  SQLDescribeParam(
+    SQLHSTMT           hstmt,
+    SQLUSMALLINT       ipar,
+    SQLSMALLINT 	  *pfSqlType,
+    SQLUINTEGER 	  *pcbParamDef,
+    SQLSMALLINT 	  *pibScale,
+    SQLSMALLINT 	  *pfNullable);
+
+SQLRETURN WINAPI  SQLExtendedFetch(
+    SQLHSTMT           hstmt,
+    SQLUSMALLINT       fFetchType,
+    SQLINTEGER         irow,
+    SQLUINTEGER 	  *pcrow,
+    SQLUSMALLINT 	  *rgfRowStatus);
+
+SQLRETURN WINAPI  SQLForeignKeys(
+    SQLHSTMT           hstmt,
+    SQLCHAR 		  *szPkCatalogName,
+    SQLSMALLINT        cbPkCatalogName,
+    SQLCHAR 		  *szPkSchemaName,
+    SQLSMALLINT        cbPkSchemaName,
+    SQLCHAR 		  *szPkTableName,
+    SQLSMALLINT        cbPkTableName,
+    SQLCHAR 		  *szFkCatalogName,
+    SQLSMALLINT        cbFkCatalogName,
+    SQLCHAR 		  *szFkSchemaName,
+    SQLSMALLINT        cbFkSchemaName,
+    SQLCHAR 		  *szFkTableName,
+    SQLSMALLINT        cbFkTableName);
+
+SQLRETURN WINAPI  SQLMoreResults(
+    SQLHSTMT           hstmt);
+
+SQLRETURN WINAPI  SQLNativeSql(
+    SQLHDBC            hdbc,
+    SQLCHAR 		  *szSqlStrIn,
+    SQLINTEGER         cbSqlStrIn,
+    SQLCHAR 		  *szSqlStr,
+    SQLINTEGER         cbSqlStrMax,
+    SQLINTEGER 		  *pcbSqlStr);
+
+SQLRETURN WINAPI  SQLNumParams(
+    SQLHSTMT           hstmt,
+    SQLSMALLINT 	  *pcpar);
+
+SQLRETURN WINAPI  SQLParamOptions(
+    SQLHSTMT           hstmt,
+    SQLUINTEGER        crow,
+    SQLUINTEGER 	  *pirow);
+
+SQLRETURN WINAPI  SQLPrimaryKeys(
+    SQLHSTMT           hstmt,
+    SQLCHAR 		  *szCatalogName,
+    SQLSMALLINT        cbCatalogName,
+    SQLCHAR 		  *szSchemaName,
+    SQLSMALLINT        cbSchemaName,
+    SQLCHAR 		  *szTableName,
+    SQLSMALLINT        cbTableName);
+
+SQLRETURN WINAPI  SQLProcedureColumns(
+    SQLHSTMT           hstmt,
+    SQLCHAR 		  *szCatalogName,
+    SQLSMALLINT        cbCatalogName,
+    SQLCHAR 		  *szSchemaName,
+    SQLSMALLINT        cbSchemaName,
+    SQLCHAR 		  *szProcName,
+    SQLSMALLINT        cbProcName,
+    SQLCHAR 		  *szColumnName,
+    SQLSMALLINT        cbColumnName);
+
+SQLRETURN WINAPI  SQLProcedures(
+    SQLHSTMT           hstmt,
+    SQLCHAR 		  *szCatalogName,
+    SQLSMALLINT        cbCatalogName,
+    SQLCHAR 		  *szSchemaName,
+    SQLSMALLINT        cbSchemaName,
+    SQLCHAR 		  *szProcName,
+    SQLSMALLINT        cbProcName);
+
+SQLRETURN WINAPI  SQLSetPos(
+    SQLHSTMT           hstmt,
+    SQLUSMALLINT       irow,
+    SQLUSMALLINT       fOption,
+    SQLUSMALLINT       fLock);
+
+SQLRETURN WINAPI  SQLTablePrivileges(
+    SQLHSTMT           hstmt,
+    SQLCHAR 		  *szCatalogName,
+    SQLSMALLINT        cbCatalogName,
+    SQLCHAR 		  *szSchemaName,
+    SQLSMALLINT        cbSchemaName,
+    SQLCHAR 		  *szTableName,
+    SQLSMALLINT        cbTableName);
+
+SQLRETURN WINAPI  SQLDrivers(
+    SQLHENV            henv,
+    SQLUSMALLINT       fDirection,
+    SQLCHAR 		  *szDriverDesc,
+    SQLSMALLINT        cbDriverDescMax,
+    SQLSMALLINT 	  *pcbDriverDesc,
+    SQLCHAR 		  *szDriverAttributes,
+    SQLSMALLINT        cbDrvrAttrMax,
+    SQLSMALLINT 	  *pcbDrvrAttr);
+
+SQLRETURN WINAPI  SQLBindParameter(
+    SQLHSTMT           hstmt,
+    SQLUSMALLINT       ipar,
+    SQLSMALLINT        fParamType,
+    SQLSMALLINT        fCType,
+    SQLSMALLINT        fSqlType,
+    SQLUINTEGER        cbColDef,
+    SQLSMALLINT        ibScale,
+    SQLPOINTER         rgbValue,
+    SQLINTEGER         cbValueMax,
+    SQLINTEGER 		  *pcbValue);
+
+#ifdef ODBC_STD
+#define SQLAllocHandle  SQLAllocHandleStd
+#define SQLAllocEnv(phenv)  SQLAllocHandleStd(SQL_HANDLE_ENV, SQL_NULL_HANDLE, phenv)
+
+#define SQL_YEAR						SQL_CODE_YEAR
+#define SQL_MONTH						SQL_CODE_MONTH
+#define SQL_DAY							SQL_CODE_DAY
+#define SQL_HOUR						SQL_CODE_HOUR
+#define SQL_MINUTE						SQL_CODE_MINUTE
+#define SQL_SECOND						SQL_CODE_SECOND	
+#define SQL_YEAR_TO_MONTH				SQL_CODE_YEAR_TO_MONTH
+#define SQL_DAY_TO_HOUR					SQL_CODE_DAY_TO_HOUR
+#define SQL_DAY_TO_MINUTE				SQL_CODE_DAY_TO_MINUTE
+#define SQL_DAY_TO_SECOND				SQL_CODE_DAY_TO_SECOND
+#define SQL_HOUR_TO_MINUTE				SQL_CODE_HOUR_TO_MINUTE	
+#define SQL_HOUR_TO_SECOND				SQL_CODE_HOUR_TO_SECOND
+#define SQL_MINUTE_TO_SECOND			SQL_CODE_MINUTE_TO_SECOND
+#endif
+
+#if (ODBCVER >= 0x0300)
+SQLRETURN WINAPI  SQLAllocHandleStd(
+	SQLSMALLINT		fHandleType,
+	SQLHANDLE		hInput,
+	SQLHANDLE	   *phOutput);
+#endif
+
+#define SQL_DATABASE_NAME               16
+#define SQL_FD_FETCH_PREV               SQL_FD_FETCH_PRIOR
+#define SQL_FETCH_PREV                  SQL_FETCH_PRIOR
+#define SQL_CONCUR_TIMESTAMP            SQL_CONCUR_ROWVER
+#define SQL_SCCO_OPT_TIMESTAMP          SQL_SCCO_OPT_ROWVER
+#define SQL_CC_DELETE                   SQL_CB_DELETE
+#define SQL_CR_DELETE                   SQL_CB_DELETE
+#define SQL_CC_CLOSE                    SQL_CB_CLOSE
+#define SQL_CR_CLOSE                    SQL_CB_CLOSE
+#define SQL_CC_PRESERVE                 SQL_CB_PRESERVE
+#define SQL_CR_PRESERVE                 SQL_CB_PRESERVE
+#define SQL_SCROLL_FORWARD_ONLY         0L 
+#define SQL_SCROLL_KEYSET_DRIVEN        (-1L)
+#define SQL_SCROLL_DYNAMIC              (-2L)
+#define SQL_SCROLL_STATIC               (-3L)
+
+SQLRETURN WINAPI  SQLSetScrollOptions(
+    SQLHSTMT           hstmt,
+    SQLUSMALLINT       fConcurrency,
+    SQLINTEGER         crowKeyset,
+    SQLUSMALLINT       crowRowset);
+
+#define		TRACE_VERSION	1000
+
+RETCODE	 TraceOpenLogFile(LPWSTR,LPWSTR,DWORD);
+RETCODE	 TraceCloseLogFile();
+VOID	 TraceReturn(RETCODE,RETCODE);
+DWORD	 TraceVersion();
+
+/*#define TRACE_ON		0x00000001L*/
+#define TRACE_VS_EVENT_ON	0x00000002L	
+
+RETCODE	TraceVSControl(DWORD);			
+
+#define ODBC_VS_FLAG_UNICODE_ARG	0x00000001L
+#define	ODBC_VS_FLAG_UNICODE_COR	0x00000002L
+#define ODBC_VS_FLAG_RETCODE		0x00000004L
+#define ODBC_VS_FLAG_STOP		0x00000008L
+
+typedef struct tagODBC_VS_ARGS {
+	const GUID	*pguidEvent;
+	DWORD	dwFlags;
+	union {
+		WCHAR	*wszArg;	
+		CHAR	*szArg;
+	}u1;
+	union {
+		WCHAR	*wszCorrelation;
+		CHAR	*szCorrelation;
+	}u2;				
+	RETCODE	RetCode;
+} ODBC_VS_ARGS, *PODBC_VS_ARGS;
+
+VOID	FireVSDebugEvent(PODBC_VS_ARGS);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/include/sqltypes.h b/include/sqltypes.h
new file mode 100644
index 0000000..5a3761f
--- /dev/null
+++ b/include/sqltypes.h
@@ -0,0 +1,237 @@
+/*
+ * sqltypes.h
+ */
+#ifndef __SQLTYPES_H
+#define __SQLTYPES_H
+
+#ifndef ODBCVER
+#define ODBCVER	0x0351
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef _WINDOWS
+#define FAR
+#define CALLBACK
+#define SQL_API
+#define	BOOL				int
+typedef void*				HWND;
+typedef char*				GUID;
+#define GUID_DEFINED
+typedef char				CHAR;
+typedef void				VOID;
+typedef unsigned short		WORD;
+typedef unsigned long		DWORD;
+typedef unsigned char		BYTE;
+typedef unsigned short 		WCHAR;
+typedef WCHAR* 		        LPWSTR;
+typedef const char*         LPCSTR;
+typedef char*               LPSTR;
+typedef DWORD*           	LPDWORD;
+#endif
+
+typedef unsigned char   SQLCHAR;
+
+#if (ODBCVER >= 0x0300)
+typedef unsigned char   SQLDATE;
+typedef unsigned char   SQLDECIMAL;
+typedef double          SQLDOUBLE;
+typedef double          SQLFLOAT;
+#endif
+
+typedef long            SQLINTEGER;
+
+#if (ODBCVER >= 0x0300)
+typedef unsigned char   SQLNUMERIC;
+#endif
+
+typedef void *          SQLPOINTER;
+
+#if (ODBCVER >= 0x0300)
+typedef float           SQLREAL;
+#endif
+
+typedef signed short int   SQLSMALLINT;
+typedef unsigned short  SQLUSMALLINT;
+
+#if (ODBCVER >= 0x0300)
+typedef unsigned char   SQLTIME;
+typedef unsigned char   SQLTIMESTAMP;
+typedef unsigned char   SQLVARCHAR;
+#endif
+
+typedef SQLSMALLINT     SQLRETURN;
+
+/* typedef void * 			SQLHANDLE; */
+
+typedef SQLINTEGER		SQLHANDLE;
+#if (ODBCVER >= 0x0300)
+
+typedef SQLHANDLE               SQLHENV;
+typedef SQLHANDLE               SQLHDBC;
+typedef SQLHANDLE               SQLHSTMT;
+typedef SQLHANDLE               SQLHDESC;
+
+#else
+typedef SQLINTEGER              SQLHENV;
+typedef SQLINTEGER              SQLHDBC;
+typedef SQLINTEGER              SQLHSTMT;
+#endif
+
+typedef signed char             SCHAR;
+typedef SCHAR                   SQLSCHAR;
+typedef long int                SDWORD;
+typedef signed short int        SWORD;
+typedef unsigned long int       UDWORD;
+typedef unsigned short int      UWORD;
+typedef UDWORD                  SQLUINTEGER;
+typedef signed long             SLONG;
+typedef signed short            SSHORT;
+typedef double                  SDOUBLE;
+typedef double            		LDOUBLE;
+typedef float                   SFLOAT;
+typedef void*              		PTR;
+typedef signed short            RETCODE;
+typedef void*                   SQLHWND;
+
+typedef SQLHANDLE          		HENV;
+typedef SQLHANDLE          		HDBC;
+typedef SQLHANDLE          		HSTMT;
+
+#ifndef	__SQLDATE
+#define	__SQLDATE
+typedef struct tagDATE_STRUCT
+{
+        SQLSMALLINT    year;
+        SQLUSMALLINT   month;
+        SQLUSMALLINT   day;
+} DATE_STRUCT;
+
+#if (ODBCVER >= 0x0300)
+typedef DATE_STRUCT	SQL_DATE_STRUCT;
+#endif
+
+typedef struct tagTIME_STRUCT
+{
+        SQLUSMALLINT   hour;
+        SQLUSMALLINT   minute;
+        SQLUSMALLINT   second;
+} TIME_STRUCT;
+
+#if (ODBCVER >= 0x0300)
+typedef TIME_STRUCT	SQL_TIME_STRUCT;
+#endif
+
+typedef struct tagTIMESTAMP_STRUCT
+{
+        SQLSMALLINT    year;
+        SQLUSMALLINT   month;
+        SQLUSMALLINT   day;
+        SQLUSMALLINT   hour;
+        SQLUSMALLINT   minute;
+        SQLUSMALLINT   second;
+        SQLUINTEGER    fraction;
+} TIMESTAMP_STRUCT;
+
+#if (ODBCVER >= 0x0300)
+typedef TIMESTAMP_STRUCT	SQL_TIMESTAMP_STRUCT;
+#endif
+
+
+#if (ODBCVER >= 0x0300)
+typedef enum
+{
+	SQL_IS_YEAR						= 1,
+	SQL_IS_MONTH					= 2,
+	SQL_IS_DAY						= 3,
+	SQL_IS_HOUR						= 4,
+	SQL_IS_MINUTE					= 5,
+	SQL_IS_SECOND					= 6,
+	SQL_IS_YEAR_TO_MONTH			= 7,
+	SQL_IS_DAY_TO_HOUR				= 8,
+	SQL_IS_DAY_TO_MINUTE			= 9,
+	SQL_IS_DAY_TO_SECOND			= 10,
+	SQL_IS_HOUR_TO_MINUTE			= 11,
+	SQL_IS_HOUR_TO_SECOND			= 12,
+	SQL_IS_MINUTE_TO_SECOND			= 13
+} SQLINTERVAL;
+
+#endif
+
+#if (ODBCVER >= 0x0300)
+typedef struct tagSQL_YEAR_MONTH
+{
+		SQLUINTEGER		year;
+		SQLUINTEGER		month;
+} SQL_YEAR_MONTH_STRUCT;
+
+typedef struct tagSQL_DAY_SECOND
+{
+		SQLUINTEGER		day;
+		SQLUINTEGER		hour;
+		SQLUINTEGER		minute;
+		SQLUINTEGER		second;
+		SQLUINTEGER		fraction;
+} SQL_DAY_SECOND_STRUCT;
+
+typedef struct tagSQL_INTERVAL_STRUCT
+{
+	SQLINTERVAL		interval_type;
+	SQLSMALLINT		interval_sign;
+	union {
+		SQL_YEAR_MONTH_STRUCT		year_month;
+		SQL_DAY_SECOND_STRUCT		day_second;
+	} intval;
+
+} SQL_INTERVAL_STRUCT;
+
+#endif
+
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define ODBCINT64	long
+#ifdef ODBCINT64
+typedef ODBCINT64	SQLBIGINT;
+typedef unsigned ODBCINT64	SQLUBIGINT;
+#endif
+#endif
+
+#if (ODBCVER >= 0x0300)
+#define SQL_MAX_NUMERIC_LEN		16
+typedef struct tagSQL_NUMERIC_STRUCT
+{
+	SQLCHAR		precision;
+	SQLSCHAR	scale;
+	SQLCHAR		sign;	/* 1=pos 0=neg */
+	SQLCHAR		val[SQL_MAX_NUMERIC_LEN];
+} SQL_NUMERIC_STRUCT;
+#endif
+
+#if (ODBCVER >= 0x0350)
+#ifdef GUID_DEFINED
+typedef GUID	SQLGUID;
+#else
+typedef struct  tagSQLGUID
+{
+    DWORD Data1;
+    WORD Data2;
+    WORD Data3;
+    BYTE Data4[ 8 ];
+} SQLGUID;
+#endif
+#endif
+
+
+typedef unsigned long int       BOOKMARK;
+
+#define SQL_WCHAR             (-8)
+#define SQL_C_WCHAR            SQL_WCHAR
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/loader/loadorder.c b/loader/loadorder.c
index ea47c59..70575be 100644
--- a/loader/loadorder.c
+++ b/loader/loadorder.c
@@ -58,6 +58,7 @@
         {"icmp",                        "builtin"},
 	/* we have to use libglide2x.so instead of glide2x.dll ... */
 	{"glide2x",			"so,native"},
+	{"odbc32",			"builtin"},
 	{NULL,NULL},
 };
 
diff --git a/relay32/builtin32.c b/relay32/builtin32.c
index 7944c2e..7a99671 100644
--- a/relay32/builtin32.c
+++ b/relay32/builtin32.c
@@ -77,6 +77,7 @@
 extern const BUILTIN32_DESCRIPTOR MSNET32_Descriptor;
 extern const BUILTIN32_DESCRIPTOR MSVFW32_Descriptor;
 extern const BUILTIN32_DESCRIPTOR NTDLL_Descriptor;
+extern const BUILTIN32_DESCRIPTOR ODBC32_Descriptor;
 extern const BUILTIN32_DESCRIPTOR OLE32_Descriptor;
 extern const BUILTIN32_DESCRIPTOR OLEAUT32_Descriptor;
 extern const BUILTIN32_DESCRIPTOR OLECLI32_Descriptor;
@@ -134,6 +135,7 @@
     { &MSNET32_Descriptor,  0, 0, NULL },
     { &MSVFW32_Descriptor,  0, 0, NULL },
     { &NTDLL_Descriptor,    0, 0, NULL },
+    { &ODBC32_Descriptor,   0, 0, NULL },
     { &OLE32_Descriptor,    0, 0, NULL },
     { &OLEAUT32_Descriptor, 0, 0, NULL },
     { &OLECLI32_Descriptor, 0, 0, NULL },