Import Tcl 8.6.12

This commit is contained in:
Steve Dower
2021-11-08 17:30:58 +00:00
parent 1aadb2455c
commit 674867e7e6
608 changed files with 78089 additions and 60360 deletions

View File

@@ -0,0 +1,282 @@
/*
* fakesql.h --
*
* Include file that defines the subset of SQL/CLI that TDBC
* uses, so that tdbc::odbc can build without an explicit ODBC
* dependency. It comprises only data type, constant and
* function declarations.
*
* The programmers of this file believe that it contains material not
* subject to copyright under the doctrines of scenes a faire and
* of merger of idea and expression. Accordingly, this file is in the
* public domain.
*
*-----------------------------------------------------------------------------
*/
#ifndef FAKESQL_H_INCLUDED
#define FAKESQL_H_INCLUDED
#include <stddef.h>
#ifndef MODULE_SCOPE
#define MODULE_SCOPE extern
#endif
/* Limits */
#define SQL_MAX_DSN_LENGTH 32
#define SQL_MAX_MESSAGE_LENGTH 512
/* Fundamental data types */
#ifndef _WIN32
typedef int BOOL;
typedef unsigned int DWORD;
typedef void* HANDLE;
typedef HANDLE HWND;
typedef unsigned short WCHAR;
typedef char* LPSTR;
typedef WCHAR* LPWSTR;
typedef const char* LPCSTR;
typedef const WCHAR* LPCWSTR;
typedef unsigned short WORD;
#endif
typedef void* PVOID;
typedef short RETCODE;
typedef long SDWORD;
typedef short SWORD;
typedef unsigned short USHORT;
typedef USHORT UWORD;
/* ODBC data types */
typedef Tcl_WideInt SQLBIGINT;
typedef unsigned char SQLCHAR;
typedef double SQLDOUBLE;
typedef void* SQLHANDLE;
typedef SDWORD SQLINTEGER;
typedef PVOID SQLPOINTER;
typedef SWORD SQLSMALLINT;
typedef Tcl_WideUInt SQLUBIGINT;
typedef unsigned char SQLUCHAR;
typedef unsigned int SQLUINTEGER;
typedef UWORD SQLUSMALLINT;
typedef WCHAR SQLWCHAR;
typedef SQLSMALLINT SQLRETURN;
/* TODO - Check how the SQLLEN and SQLULEN types are handled on
* 64-bit Unix. */
#if defined(_WIN64)
typedef Tcl_WideInt SQLLEN;
typedef Tcl_WideUInt SQLULEN;
#else
typedef SQLINTEGER SQLLEN;
typedef SQLUINTEGER SQLULEN;
#endif
/* Handle types */
typedef SQLHANDLE SQLHENV;
typedef SQLHANDLE SQLHDBC;
typedef SQLHANDLE SQLHSTMT;
typedef HWND SQLHWND;
#define SQL_HANDLE_DBC 2
#define SQL_HANDLE_ENV 1
#define SQL_HANDLE_STMT 3
/* Null handles */
#define SQL_NULL_HANDLE ((SQLHANDLE) 0)
#define SQL_NULL_HENV ((SQLHENV) 0)
#define SQL_NULL_HDBC ((SQLHDBC) 0)
#define SQL_NULL_HSTMT ((SQLHSTMT) 0)
/* SQL data types */
enum _SQL_DATATYPE {
SQL_BIGINT = -5,
SQL_BINARY = -2,
SQL_BIT = -7,
SQL_CHAR = 1,
SQL_DATE = 9,
SQL_DECIMAL = 3,
SQL_DOUBLE = 8,
SQL_FLOAT = 6,
SQL_INTEGER = 4,
SQL_LONGVARBINARY = -4,
SQL_LONGVARCHAR = -1,
SQL_NUMERIC = 2,
SQL_REAL = 7,
SQL_SMALLINT = 5,
SQL_TIME = 10,
SQL_TIMESTAMP = 11,
SQL_TINYINT = -6,
SQL_VARBINARY = -3,
SQL_VARCHAR = 12,
SQL_WCHAR = -8,
SQL_WVARCHAR = -9,
SQL_WLONGVARCHAR = -10,
};
/* C data types */
#define SQL_SIGNED_OFFSET (-20)
#define SQL_C_BINARY SQL_BINARY
#define SQL_C_CHAR SQL_CHAR
#define SQL_C_DOUBLE SQL_DOUBLE
#define SQL_C_LONG SQL_INTEGER
#define SQL_C_SBIGINT SQL_BIGINT + SQL_SIGNED_OFFSET
#define SQL_C_SLONG SQL_INTEGER + SQL_SIGNED_OFFSET
#define SQL_C_WCHAR SQL_WCHAR
/* Parameter transmission diretions */
#define SQL_PARAM_INPUT 1
/* Status returns */
#define SQL_ERROR (-1)
#define SQL_NO_DATA 100
#define SQL_NO_TOTAL (-4)
#define SQL_SUCCESS 0
#define SQL_SUCCESS_WITH_INFO 1
#define SQL_SUCCEEDED(rc) (((rc)&(~1))==0)
/* Diagnostic fields */
enum _SQL_DIAG {
SQL_DIAG_SQLSTATE = 4,
};
/* Transaction isolation levels */
#define SQL_TXN_READ_COMMITTED 2
#define SQL_TXN_READ_UNCOMMITTED 1
#define SQL_TXN_REPEATABLE_READ 4
#define SQL_TXN_SERIALIZABLE 8
/* Access modes */
#define SQL_MODE_READ_ONLY 1UL
#define SQL_MODE_READ_WRITE 0UL
/* ODBC properties */
#define SQL_ACCESS_MODE 101
#define SQL_AUTOCOMMIT 102
#define SQL_TXN_ISOLATION 108
/* ODBC attributes */
#define SQL_ATTR_ACCESS_MODE SQL_ACCESS_MODE
#define SQL_ATTR_CONNECTION_TIMEOUT 113
#define SQL_ATTR_ODBC_VERSION 200
#define SQL_ATTR_TXN_ISOLATION SQL_TXN_ISOLATION
#define SQL_ATTR_AUTOCOMMIT SQL_AUTOCOMMIT
/* Nullable? */
#define SQL_NULLABLE_UNKNOWN 2
/* Placeholder for length of missing data */
#define SQL_NULL_DATA (-1)
/* ODBC versions */
#define SQL_OV_ODBC3 3UL
#define SQL_ODBC_VER 10
/* SQLDriverConnect flags */
#define SQL_DRIVER_COMPLETE_REQUIRED 3
#define SQL_DRIVER_NOPROMPT 0
/* SQLGetTypeInfo flags */
#define SQL_ALL_TYPES 0
/* Transaction actions */
#define SQL_COMMIT 0
#define SQL_ROLLBACK 1
/* Data source fetch flags */
#define SQL_FETCH_FIRST 2
#define SQL_FETCH_FIRST_SYSTEM 32
#define SQL_FETCH_FIRST_USER 31
#define SQL_FETCH_NEXT 1
/* ODBCINST actions */
#define ODBC_ADD_DSN 1
#define ODBC_CONFIG_DSN 2
#define ODBC_REMOVE_DSN 3
#define ODBC_ADD_SYS_DSN 4
#define ODBC_CONFIG_SYS_DSN 5
#define ODBC_REMOVE_SYS_DSN 6
/* ODBCINST errors */
#define ODBC_ERROR_GENERAL_ERR 1
#define ODBC_ERROR_INVALID_BUFF_LEN 2
#define ODBC_ERROR_INVALID_HWND 3
#define ODBC_ERROR_INVALID_STR 4
#define ODBC_ERROR_INVALID_REQUEST_TYPE 5
#define ODBC_ERROR_COMPONENT_NOT_FOUND 6
#define ODBC_ERROR_INVALID_NAME 7
#define ODBC_ERROR_INVALID_KEYWORD_VALUE 8
#define ODBC_ERROR_INVALID_DSN 9
#define ODBC_ERROR_INVALID_INF 10
#define ODBC_ERROR_REQUEST_FAILED 11
#define ODBC_ERROR_INVALID_PATH 12
#define ODBC_ERROR_LOAD_LIB_FAILED 13
#define ODBC_ERROR_INVALID_PARAM_SEQUENCE 14
#define ODBC_ERROR_INVALID_LOG_FILE 15
#define ODBC_ERROR_USER_CANCELED 16
#define ODBC_ERROR_USAGE_UPDATE_FAILED 17
#define ODBC_ERROR_CREATE_DSN_FAILED 18
#define ODBC_ERROR_WRITING_SYSINFO_FAILED 19
#define ODBC_ERROR_REMOVE_DSN_FAILED 20
#define ODBC_ERROR_OUT_OF_MEM 21
#define ODBC_ERROR_OUTPUT_STRING_TRUNCATED 22
/* ODBC client library entry points */
#ifdef _WIN32
#define SQL_API __stdcall
#define INSTAPI __stdcall
#else
#define SQL_API /* nothing */
#define INSTAPI /* nothing */
#endif
#include "odbcStubs.h"
MODULE_SCOPE const odbcStubDefs* odbcStubs;
/*
* Additional entry points in ODBCINST - all of these are optional
* and resolved with Tcl_FindSymbol, not directly in Tcl_LoadLibrary.
*/
MODULE_SCOPE BOOL (INSTAPI* SQLConfigDataSourceW)(HWND, WORD, LPCWSTR,
LPCWSTR);
MODULE_SCOPE BOOL (INSTAPI* SQLConfigDataSource)(HWND, WORD, LPCSTR, LPCSTR);
MODULE_SCOPE BOOL (INSTAPI* SQLInstallerErrorW)(WORD, DWORD*, LPWSTR, WORD,
WORD*);
MODULE_SCOPE BOOL (INSTAPI* SQLInstallerError)(WORD, DWORD*, LPSTR, WORD,
WORD*);
/*
* Function that initialises the stubs
*/
MODULE_SCOPE Tcl_LoadHandle OdbcInitStubs(Tcl_Interp*, Tcl_LoadHandle*);
#endif

View File

@@ -0,0 +1,24 @@
/*
* Macros used to cast between pointers and integers (e.g. when storing an int
* in ClientData), on 64-bit architectures they avoid gcc warning about "cast
* to/from pointer from/to integer of different size".
*/
#if !defined(INT2PTR) && !defined(PTR2INT)
# if defined(HAVE_INTPTR_T) || defined(intptr_t)
# define INT2PTR(p) ((void *)(intptr_t)(p))
# define PTR2INT(p) ((int)(intptr_t)(p))
# else
# define INT2PTR(p) ((void *)(p))
# define PTR2INT(p) ((int)(p))
# endif
#endif
#if !defined(UINT2PTR) && !defined(PTR2UINT)
# if defined(HAVE_UINTPTR_T) || defined(uintptr_t)
# define UINT2PTR(p) ((void *)(uintptr_t)(p))
# define PTR2UINT(p) ((unsigned int)(uintptr_t)(p))
# else
# define UINT2PTR(p) ((void *)(p))
# define PTR2UINT(p) ((unsigned int)(p))
# endif
#endif

View File

@@ -0,0 +1,47 @@
# odbcStubDefs.txt --
#
# Definitions of routines in the ODBC DLL that will be resolved
# and imported at run time.
#
# This file contains only function declarations necessary to interoperability
# with the SQL/CLI application programming interface. The programmers believe
# that the material in this file is not subject to copyright, under the
# doctrines of scenes a faire and of the merger of idea and expression.
# Accordingly, this file is in the public domain.
#
#-----------------------------------------------------------------------------
* STUBSTRUCT: odbcStubs
* CONVENTION: SQL_API
SQLRETURN SQLAllocHandle(SQLSMALLINT,SQLHANDLE,SQLHANDLE*);
SQLRETURN SQLBindParameter(SQLHSTMT,SQLUSMALLINT,SQLSMALLINT,SQLSMALLINT,SQLSMALLINT,SQLULEN,SQLSMALLINT,SQLPOINTER,SQLLEN,SQLLEN*);
SQLRETURN SQLCloseCursor(SQLHSTMT);
SQLRETURN SQLColumnsW(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT ,SQLWCHAR*,SQLSMALLINT );
SQLRETURN SQLDataSourcesW(SQLHENV,SQLUSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*);
SQLRETURN SQLDescribeColW(SQLHSTMT,SQLUSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLSMALLINT*,SQLULEN*,SQLSMALLINT*,SQLSMALLINT*);
SQLRETURN SQLDescribeParam(SQLHSTMT,SQLUSMALLINT,SQLSMALLINT*,SQLULEN*,SQLSMALLINT*,SQLSMALLINT*);
SQLRETURN SQLDisconnect(SQLHDBC);
SQLRETURN SQLDriverConnectW(SQLHDBC,SQLHWND,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLUSMALLINT);
SQLRETURN SQLDriversW(SQLHENV,SQLUSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*);
SQLRETURN SQLEndTran(SQLSMALLINT,SQLHANDLE,SQLSMALLINT);
SQLRETURN SQLExecute(SQLHSTMT);
SQLRETURN SQLFetch(SQLHSTMT);
SQLRETURN SQLForeignKeysW(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT);
SQLRETURN SQLFreeHandle(SQLSMALLINT,SQLHANDLE);
SQLRETURN SQLGetConnectAttr(SQLHDBC,SQLINTEGER,SQLPOINTER,SQLINTEGER,SQLINTEGER*);
SQLRETURN SQLGetData(SQLHSTMT,SQLUSMALLINT,SQLSMALLINT,SQLPOINTER,SQLLEN,SQLLEN*);
SQLRETURN SQLGetDiagFieldA(SQLSMALLINT,SQLHANDLE,SQLSMALLINT,SQLSMALLINT,SQLPOINTER,SQLSMALLINT,SQLSMALLINT*);
SQLRETURN SQLGetDiagRecW(SQLSMALLINT,SQLHANDLE,SQLSMALLINT,SQLWCHAR*,SQLINTEGER*,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*);
SQLRETURN SQLGetInfoW(SQLHANDLE,SQLUSMALLINT,SQLPOINTER,SQLSMALLINT,SQLSMALLINT*);
SQLRETURN SQLGetTypeInfo(SQLHSTMT,SQLSMALLINT);
SQLRETURN SQLMoreResults(SQLHSTMT);
SQLRETURN SQLNumParams(SQLHSTMT,SQLSMALLINT*);
SQLRETURN SQLNumResultCols(SQLHSTMT,SQLSMALLINT*);
SQLRETURN SQLPrepareW(SQLHSTMT,SQLWCHAR*,SQLINTEGER);
SQLRETURN SQLPrimaryKeysW(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT);
SQLRETURN SQLRowCount(SQLHSTMT,SQLLEN*);
SQLRETURN SQLSetConnectAttr(SQLHDBC,SQLINTEGER,SQLPOINTER,SQLINTEGER);
SQLRETURN SQLSetConnectOption(SQLHDBC,SQLUSMALLINT,SQLULEN); /* deprecated */
SQLRETURN SQLSetEnvAttr(SQLHENV,SQLINTEGER,SQLPOINTER,SQLINTEGER);
SQLRETURN SQLTablesW(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT);

View File

@@ -0,0 +1,214 @@
/*
* odbcStubInit.c --
*
* Stubs tables for the foreign ODBC libraries so that
* Tcl extensions can use them without the linker's knowing about them.
*
* @CREATED@ 2018-05-12 16:18:48Z by genExtStubs.tcl from odbcStubDefs.txt
*
* Copyright (c) 2010 by Kevin B. Kenny.
*
* Please refer to the file, 'license.terms' for the conditions on
* redistribution of this file and for a DISCLAIMER OF ALL WARRANTIES.
*
*-----------------------------------------------------------------------------
*/
#include <tcl.h>
#ifdef _WIN32
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#endif
#include "fakesql.h"
/*
* Static data used in this file
*/
/*
* Names of the libraries that might contain the ODBC API
*/
static const char *const odbcStubLibNames[] = {
#if defined(__APPLE__)
"libiodbc.2",
#elif defined(__OpenBSD__)
"libiodbc",
#else
"odbc32", "odbc", "libodbc32", "libodbc", "libiodbc",
#endif
NULL
/* @END@ */
};
static const char *const odbcOptLibNames[] = {
#if defined(__APPLE__)
"libiodbcinst.2",
#elif defined(__OpenBSD__)
"libiodbcinst",
#else
"odbccp", "odbccp32", "odbcinst",
"libodbccp", "libodbccp32", "libodbcinst", "libiodbcinst",
#endif
NULL
};
/*
* Names of the functions that we need from ODBC
*/
static const char *const odbcSymbolNames[] = {
/* @SYMNAMES@: DO NOT EDIT THESE NAMES */
"SQLAllocHandle",
"SQLBindParameter",
"SQLCloseCursor",
"SQLColumnsW",
"SQLDataSourcesW",
"SQLDescribeColW",
"SQLDescribeParam",
"SQLDisconnect",
"SQLDriverConnectW",
"SQLDriversW",
"SQLEndTran",
"SQLExecute",
"SQLFetch",
"SQLForeignKeysW",
"SQLFreeHandle",
"SQLGetConnectAttr",
"SQLGetData",
"SQLGetDiagFieldA",
"SQLGetDiagRecW",
"SQLGetInfoW",
"SQLGetTypeInfo",
"SQLMoreResults",
"SQLNumParams",
"SQLNumResultCols",
"SQLPrepareW",
"SQLPrimaryKeysW",
"SQLRowCount",
"SQLSetConnectAttr",
"SQLSetConnectOption",
"SQLSetEnvAttr",
"SQLTablesW",
NULL
/* @END@ */
};
/*
* Table containing pointers to the functions named above.
*/
static odbcStubDefs odbcStubsTable;
const odbcStubDefs* odbcStubs = &odbcStubsTable;
/*
* Pointers to optional functions in ODBCINST
*/
BOOL (INSTAPI* SQLConfigDataSourceW)(HWND, WORD, LPCWSTR, LPCWSTR)
= NULL;
BOOL (INSTAPI* SQLConfigDataSource)(HWND, WORD, LPCSTR, LPCSTR)
= NULL;
BOOL (INSTAPI* SQLInstallerError)(WORD, DWORD*, LPSTR, WORD, WORD*)
= NULL;
/*
*-----------------------------------------------------------------------------
*
* OdbcInitStubs --
*
* Initialize the Stubs table for the ODBC API
*
* Results:
* Returns the handle to the loaded ODBC client library, or NULL
* if the load is unsuccessful. Leaves an error message in the
* interpreter.
*
*-----------------------------------------------------------------------------
*/
MODULE_SCOPE Tcl_LoadHandle
OdbcInitStubs(Tcl_Interp* interp,
/* Tcl interpreter */
Tcl_LoadHandle* handle2Ptr)
/* Pointer to a second load handle
* that represents the ODBCINST library */
{
int i;
int status; /* Status of Tcl library calls */
Tcl_Obj* path; /* Path name of a module to be loaded */
Tcl_Obj* shlibext; /* Extension to use for load modules */
Tcl_LoadHandle handle = NULL;
/* Handle to a load module */
SQLConfigDataSourceW = NULL;
SQLConfigDataSource = NULL;
SQLInstallerError = NULL;
/*
* Determine the shared library extension
*/
status = Tcl_EvalEx(interp, "::info sharedlibextension", -1,
TCL_EVAL_GLOBAL);
if (status != TCL_OK) return NULL;
shlibext = Tcl_GetObjResult(interp);
Tcl_IncrRefCount(shlibext);
/*
* Walk the list of possible library names to find an ODBC client
*/
status = TCL_ERROR;
for (i = 0; status == TCL_ERROR && odbcStubLibNames[i] != NULL; ++i) {
path = Tcl_NewStringObj(odbcStubLibNames[i], -1);
Tcl_AppendObjToObj(path, shlibext);
Tcl_IncrRefCount(path);
Tcl_ResetResult(interp);
/*
* Try to load a client library and resolve the ODBC API within it.
*/
status = Tcl_LoadFile(interp, path, odbcSymbolNames, 0,
(void*)odbcStubs, &handle);
Tcl_DecrRefCount(path);
}
/*
* If a client library is found, then try to load ODBCINST as well.
*/
if (status == TCL_OK) {
int status2 = TCL_ERROR;
for (i = 0; status2 == TCL_ERROR && odbcOptLibNames[i] != NULL; ++i) {
path = Tcl_NewStringObj(odbcOptLibNames[i], -1);
Tcl_AppendObjToObj(path, shlibext);
Tcl_IncrRefCount(path);
status2 = Tcl_LoadFile(interp, path, NULL, 0, NULL, handle2Ptr);
if (status2 == TCL_OK) {
SQLConfigDataSourceW =
(BOOL (INSTAPI*)(HWND, WORD, LPCWSTR, LPCWSTR))
Tcl_FindSymbol(NULL, *handle2Ptr, "SQLConfigDataSourceW");
if (SQLConfigDataSourceW == NULL) {
SQLConfigDataSource =
(BOOL (INSTAPI*)(HWND, WORD, LPCSTR, LPCSTR))
Tcl_FindSymbol(NULL, *handle2Ptr,
"SQLConfigDataSource");
}
SQLInstallerError =
(BOOL (INSTAPI*)(WORD, DWORD*, LPSTR, WORD, WORD*))
Tcl_FindSymbol(NULL, *handle2Ptr, "SQLInstallerError");
} else {
Tcl_ResetResult(interp);
}
Tcl_DecrRefCount(path);
}
}
/*
* Either we've successfully loaded a library (status == TCL_OK),
* or we've run out of library names (in which case status==TCL_ERROR
* and the error message reflects the last unsuccessful load attempt).
*/
Tcl_DecrRefCount(shlibext);
if (status != TCL_OK) {
return NULL;
}
return handle;
}

View File

@@ -0,0 +1,78 @@
/*
*-----------------------------------------------------------------------------
*
* odbcStubs.h --
*
* Stubs for procedures in odbcStubDefs.txt
*
* Generated by genExtStubs.tcl: DO NOT EDIT
* 2018-05-12 16:18:48Z
*
*-----------------------------------------------------------------------------
*/
typedef struct odbcStubDefs {
SQLRETURN (SQL_API*SQLAllocHandlePtr)(SQLSMALLINT,SQLHANDLE,SQLHANDLE*);
SQLRETURN (SQL_API*SQLBindParameterPtr)(SQLHSTMT,SQLUSMALLINT,SQLSMALLINT,SQLSMALLINT,SQLSMALLINT,SQLULEN,SQLSMALLINT,SQLPOINTER,SQLLEN,SQLLEN*);
SQLRETURN (SQL_API*SQLCloseCursorPtr)(SQLHSTMT);
SQLRETURN (SQL_API*SQLColumnsWPtr)(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT ,SQLWCHAR*,SQLSMALLINT );
SQLRETURN (SQL_API*SQLDataSourcesWPtr)(SQLHENV,SQLUSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*);
SQLRETURN (SQL_API*SQLDescribeColWPtr)(SQLHSTMT,SQLUSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLSMALLINT*,SQLULEN*,SQLSMALLINT*,SQLSMALLINT*);
SQLRETURN (SQL_API*SQLDescribeParamPtr)(SQLHSTMT,SQLUSMALLINT,SQLSMALLINT*,SQLULEN*,SQLSMALLINT*,SQLSMALLINT*);
SQLRETURN (SQL_API*SQLDisconnectPtr)(SQLHDBC);
SQLRETURN (SQL_API*SQLDriverConnectWPtr)(SQLHDBC,SQLHWND,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLUSMALLINT);
SQLRETURN (SQL_API*SQLDriversWPtr)(SQLHENV,SQLUSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*);
SQLRETURN (SQL_API*SQLEndTranPtr)(SQLSMALLINT,SQLHANDLE,SQLSMALLINT);
SQLRETURN (SQL_API*SQLExecutePtr)(SQLHSTMT);
SQLRETURN (SQL_API*SQLFetchPtr)(SQLHSTMT);
SQLRETURN (SQL_API*SQLForeignKeysWPtr)(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT);
SQLRETURN (SQL_API*SQLFreeHandlePtr)(SQLSMALLINT,SQLHANDLE);
SQLRETURN (SQL_API*SQLGetConnectAttrPtr)(SQLHDBC,SQLINTEGER,SQLPOINTER,SQLINTEGER,SQLINTEGER*);
SQLRETURN (SQL_API*SQLGetDataPtr)(SQLHSTMT,SQLUSMALLINT,SQLSMALLINT,SQLPOINTER,SQLLEN,SQLLEN*);
SQLRETURN (SQL_API*SQLGetDiagFieldAPtr)(SQLSMALLINT,SQLHANDLE,SQLSMALLINT,SQLSMALLINT,SQLPOINTER,SQLSMALLINT,SQLSMALLINT*);
SQLRETURN (SQL_API*SQLGetDiagRecWPtr)(SQLSMALLINT,SQLHANDLE,SQLSMALLINT,SQLWCHAR*,SQLINTEGER*,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*);
SQLRETURN (SQL_API*SQLGetInfoWPtr)(SQLHANDLE,SQLUSMALLINT,SQLPOINTER,SQLSMALLINT,SQLSMALLINT*);
SQLRETURN (SQL_API*SQLGetTypeInfoPtr)(SQLHSTMT,SQLSMALLINT);
SQLRETURN (SQL_API*SQLMoreResultsPtr)(SQLHSTMT);
SQLRETURN (SQL_API*SQLNumParamsPtr)(SQLHSTMT,SQLSMALLINT*);
SQLRETURN (SQL_API*SQLNumResultColsPtr)(SQLHSTMT,SQLSMALLINT*);
SQLRETURN (SQL_API*SQLPrepareWPtr)(SQLHSTMT,SQLWCHAR*,SQLINTEGER);
SQLRETURN (SQL_API*SQLPrimaryKeysWPtr)(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT);
SQLRETURN (SQL_API*SQLRowCountPtr)(SQLHSTMT,SQLLEN*);
SQLRETURN (SQL_API*SQLSetConnectAttrPtr)(SQLHDBC,SQLINTEGER,SQLPOINTER,SQLINTEGER);
SQLRETURN (SQL_API*SQLSetConnectOptionPtr)(SQLHDBC,SQLUSMALLINT,SQLULEN);
SQLRETURN (SQL_API*SQLSetEnvAttrPtr)(SQLHENV,SQLINTEGER,SQLPOINTER,SQLINTEGER);
SQLRETURN (SQL_API*SQLTablesWPtr)(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT);
} odbcStubDefs;
#define SQLAllocHandle (odbcStubs->SQLAllocHandlePtr)
#define SQLBindParameter (odbcStubs->SQLBindParameterPtr)
#define SQLCloseCursor (odbcStubs->SQLCloseCursorPtr)
#define SQLColumnsW (odbcStubs->SQLColumnsWPtr)
#define SQLDataSourcesW (odbcStubs->SQLDataSourcesWPtr)
#define SQLDescribeColW (odbcStubs->SQLDescribeColWPtr)
#define SQLDescribeParam (odbcStubs->SQLDescribeParamPtr)
#define SQLDisconnect (odbcStubs->SQLDisconnectPtr)
#define SQLDriverConnectW (odbcStubs->SQLDriverConnectWPtr)
#define SQLDriversW (odbcStubs->SQLDriversWPtr)
#define SQLEndTran (odbcStubs->SQLEndTranPtr)
#define SQLExecute (odbcStubs->SQLExecutePtr)
#define SQLFetch (odbcStubs->SQLFetchPtr)
#define SQLForeignKeysW (odbcStubs->SQLForeignKeysWPtr)
#define SQLFreeHandle (odbcStubs->SQLFreeHandlePtr)
#define SQLGetConnectAttr (odbcStubs->SQLGetConnectAttrPtr)
#define SQLGetData (odbcStubs->SQLGetDataPtr)
#define SQLGetDiagFieldA (odbcStubs->SQLGetDiagFieldAPtr)
#define SQLGetDiagRecW (odbcStubs->SQLGetDiagRecWPtr)
#define SQLGetInfoW (odbcStubs->SQLGetInfoWPtr)
#define SQLGetTypeInfo (odbcStubs->SQLGetTypeInfoPtr)
#define SQLMoreResults (odbcStubs->SQLMoreResultsPtr)
#define SQLNumParams (odbcStubs->SQLNumParamsPtr)
#define SQLNumResultCols (odbcStubs->SQLNumResultColsPtr)
#define SQLPrepareW (odbcStubs->SQLPrepareWPtr)
#define SQLPrimaryKeysW (odbcStubs->SQLPrimaryKeysWPtr)
#define SQLRowCount (odbcStubs->SQLRowCountPtr)
#define SQLSetConnectAttr (odbcStubs->SQLSetConnectAttrPtr)
#define SQLSetConnectOption (odbcStubs->SQLSetConnectOptionPtr)
#define SQLSetEnvAttr (odbcStubs->SQLSetEnvAttrPtr)
#define SQLTablesW (odbcStubs->SQLTablesWPtr)
MODULE_SCOPE const odbcStubDefs *odbcStubs;

File diff suppressed because it is too large Load Diff