Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2024-05-18 08:29:50

0001 /*
0002  * fakesql.h --
0003  *
0004  *  Include file that defines the subset of SQL/CLI that TDBC
0005  *  uses, so that tdbc::odbc can build without an explicit ODBC
0006  *  dependency. It comprises only data type, constant and
0007  *  function declarations.
0008  *
0009  * The programmers of this file believe that it contains material not
0010  * subject to copyright under the doctrines of scenes a faire and
0011  * of merger of idea and expression. Accordingly, this file is in the
0012  * public domain.
0013  *
0014  *-----------------------------------------------------------------------------
0015  */
0016 
0017 #ifndef FAKESQL_H_INCLUDED
0018 #define FAKESQL_H_INCLUDED
0019 
0020 #include <stddef.h>
0021 
0022 #ifndef MODULE_SCOPE
0023 #define MODULE_SCOPE extern
0024 #endif
0025 
0026 /* Limits */
0027 
0028 #define SQL_MAX_DSN_LENGTH 32
0029 #define SQL_MAX_MESSAGE_LENGTH 512
0030 
0031 /* Fundamental data types */
0032 
0033 #ifndef _WIN32
0034 typedef int BOOL;
0035 typedef unsigned int DWORD;
0036 typedef void* HANDLE;
0037 typedef HANDLE HWND;
0038 typedef unsigned short WCHAR;
0039 typedef char* LPSTR;
0040 typedef WCHAR* LPWSTR;
0041 typedef const char* LPCSTR;
0042 typedef const WCHAR* LPCWSTR;
0043 typedef unsigned short WORD;
0044 #endif
0045 typedef void* PVOID;
0046 typedef short RETCODE;
0047 typedef long SDWORD;
0048 typedef short SWORD;
0049 typedef unsigned short USHORT;
0050 typedef USHORT UWORD;
0051 
0052 /* ODBC data types */
0053 
0054 typedef Tcl_WideInt SQLBIGINT;
0055 typedef unsigned char SQLCHAR;
0056 typedef double SQLDOUBLE;
0057 typedef void* SQLHANDLE;
0058 typedef SDWORD SQLINTEGER;
0059 typedef PVOID SQLPOINTER;
0060 typedef SWORD SQLSMALLINT;
0061 typedef Tcl_WideUInt SQLUBIGINT;
0062 typedef unsigned char SQLUCHAR;
0063 typedef unsigned int SQLUINTEGER;
0064 typedef UWORD SQLUSMALLINT;
0065 typedef WCHAR SQLWCHAR;
0066 
0067 typedef SQLSMALLINT SQLRETURN;
0068 
0069 /* TODO - Check how the SQLLEN and SQLULEN types are handled on
0070  *        64-bit Unix. */
0071 
0072 #if defined(_WIN64)
0073 typedef Tcl_WideInt SQLLEN;
0074 typedef Tcl_WideUInt SQLULEN;
0075 #else
0076 typedef SQLINTEGER SQLLEN;
0077 typedef SQLUINTEGER SQLULEN;
0078 #endif
0079 
0080 /* Handle types */
0081 
0082 typedef SQLHANDLE SQLHENV;
0083 typedef SQLHANDLE SQLHDBC;
0084 typedef SQLHANDLE SQLHSTMT;
0085 typedef HWND SQLHWND;
0086 
0087 #define SQL_HANDLE_DBC 2
0088 #define SQL_HANDLE_ENV 1
0089 #define SQL_HANDLE_STMT 3
0090 
0091 /* Null handles */
0092 
0093 #define SQL_NULL_HANDLE ((SQLHANDLE) 0)
0094 #define SQL_NULL_HENV ((SQLHENV) 0)
0095 #define SQL_NULL_HDBC ((SQLHDBC) 0)
0096 #define SQL_NULL_HSTMT ((SQLHSTMT) 0)
0097 
0098 /* SQL data types */
0099 
0100 enum _SQL_DATATYPE {
0101     SQL_BIGINT = -5,
0102     SQL_BINARY = -2,
0103     SQL_BIT = -7,
0104     SQL_CHAR = 1,
0105     SQL_DATE = 9,
0106     SQL_DECIMAL = 3,
0107     SQL_DOUBLE = 8,
0108     SQL_FLOAT = 6,
0109     SQL_INTEGER = 4,
0110     SQL_LONGVARBINARY = -4,
0111     SQL_LONGVARCHAR = -1,
0112     SQL_NUMERIC = 2,
0113     SQL_REAL = 7,
0114     SQL_SMALLINT = 5,
0115     SQL_TIME = 10,
0116     SQL_TIMESTAMP = 11,
0117     SQL_TINYINT = -6,
0118     SQL_VARBINARY = -3,
0119     SQL_VARCHAR = 12,
0120     SQL_WCHAR = -8,
0121     SQL_WVARCHAR = -9,
0122     SQL_WLONGVARCHAR = -10,
0123 };
0124 
0125 /* C data types */
0126 
0127 #define SQL_SIGNED_OFFSET (-20)
0128 
0129 #define SQL_C_BINARY SQL_BINARY
0130 #define SQL_C_CHAR SQL_CHAR
0131 #define SQL_C_DOUBLE SQL_DOUBLE
0132 #define SQL_C_LONG SQL_INTEGER
0133 #define SQL_C_SBIGINT SQL_BIGINT + SQL_SIGNED_OFFSET
0134 #define SQL_C_SLONG SQL_INTEGER + SQL_SIGNED_OFFSET
0135 #define SQL_C_WCHAR SQL_WCHAR
0136 
0137 /* Parameter transmission diretions */
0138 
0139 #define SQL_PARAM_INPUT 1
0140 
0141 /* Status returns */
0142 
0143 #define    SQL_ERROR (-1)
0144 #define    SQL_NO_DATA 100
0145 #define    SQL_NO_TOTAL (-4)
0146 #define    SQL_SUCCESS 0
0147 #define    SQL_SUCCESS_WITH_INFO 1
0148 #define    SQL_SUCCEEDED(rc) (((rc)&(~1))==0)
0149 
0150 /* Diagnostic fields */
0151 
0152 enum _SQL_DIAG {
0153     SQL_DIAG_SQLSTATE = 4,
0154 };
0155 
0156 /* Transaction isolation levels */
0157 
0158 #define SQL_TXN_READ_COMMITTED 2
0159 #define SQL_TXN_READ_UNCOMMITTED 1
0160 #define SQL_TXN_REPEATABLE_READ 4
0161 #define SQL_TXN_SERIALIZABLE 8
0162 
0163 /* Access modes */
0164 
0165 #define SQL_MODE_READ_ONLY 1UL
0166 #define SQL_MODE_READ_WRITE 0UL
0167 
0168 /* ODBC properties */
0169 
0170 #define SQL_ACCESS_MODE 101
0171 #define SQL_AUTOCOMMIT 102
0172 #define SQL_TXN_ISOLATION 108
0173 
0174 /* ODBC attributes */
0175 
0176 #define SQL_ATTR_ACCESS_MODE SQL_ACCESS_MODE
0177 #define SQL_ATTR_CONNECTION_TIMEOUT 113
0178 #define SQL_ATTR_ODBC_VERSION 200
0179 #define SQL_ATTR_TXN_ISOLATION SQL_TXN_ISOLATION
0180 #define SQL_ATTR_AUTOCOMMIT SQL_AUTOCOMMIT
0181 
0182 /* Nullable? */
0183 
0184 #define SQL_NULLABLE_UNKNOWN 2
0185 
0186 /* Placeholder for length of missing data */
0187 
0188 #define SQL_NULL_DATA (-1)
0189 
0190 /* ODBC versions */
0191 
0192 #define SQL_OV_ODBC3 3UL
0193 #define SQL_ODBC_VER 10
0194 
0195 /* SQLDriverConnect flags */
0196 
0197 #define SQL_DRIVER_COMPLETE_REQUIRED 3
0198 #define SQL_DRIVER_NOPROMPT 0
0199 
0200 /* SQLGetTypeInfo flags */
0201 
0202 #define SQL_ALL_TYPES 0
0203 
0204 /* Transaction actions */
0205 
0206 #define SQL_COMMIT 0
0207 #define SQL_ROLLBACK 1
0208 
0209 /* Data source fetch flags */
0210 
0211 #define SQL_FETCH_FIRST 2
0212 #define SQL_FETCH_FIRST_SYSTEM 32
0213 #define SQL_FETCH_FIRST_USER 31
0214 #define SQL_FETCH_NEXT 1
0215 
0216 /* ODBCINST actions */
0217 
0218 #define  ODBC_ADD_DSN     1
0219 #define  ODBC_CONFIG_DSN  2
0220 #define  ODBC_REMOVE_DSN  3
0221 #define ODBC_ADD_SYS_DSN 4
0222 #define ODBC_CONFIG_SYS_DSN 5
0223 #define ODBC_REMOVE_SYS_DSN 6
0224 
0225 /* ODBCINST errors */
0226 
0227 #define ODBC_ERROR_GENERAL_ERR 1
0228 #define ODBC_ERROR_INVALID_BUFF_LEN 2
0229 #define ODBC_ERROR_INVALID_HWND 3
0230 #define ODBC_ERROR_INVALID_STR 4
0231 #define ODBC_ERROR_INVALID_REQUEST_TYPE 5
0232 #define ODBC_ERROR_COMPONENT_NOT_FOUND 6
0233 #define ODBC_ERROR_INVALID_NAME 7
0234 #define ODBC_ERROR_INVALID_KEYWORD_VALUE 8
0235 #define ODBC_ERROR_INVALID_DSN 9
0236 #define ODBC_ERROR_INVALID_INF 10
0237 #define ODBC_ERROR_REQUEST_FAILED 11
0238 #define ODBC_ERROR_INVALID_PATH 12
0239 #define ODBC_ERROR_LOAD_LIB_FAILED 13
0240 #define ODBC_ERROR_INVALID_PARAM_SEQUENCE 14
0241 #define ODBC_ERROR_INVALID_LOG_FILE 15
0242 #define ODBC_ERROR_USER_CANCELED 16
0243 #define ODBC_ERROR_USAGE_UPDATE_FAILED 17
0244 #define ODBC_ERROR_CREATE_DSN_FAILED 18
0245 #define ODBC_ERROR_WRITING_SYSINFO_FAILED 19
0246 #define ODBC_ERROR_REMOVE_DSN_FAILED 20
0247 #define ODBC_ERROR_OUT_OF_MEM 21
0248 #define ODBC_ERROR_OUTPUT_STRING_TRUNCATED 22
0249 
0250 /* ODBC client library entry points */
0251 
0252 #ifdef _WIN32
0253 #define SQL_API __stdcall
0254 #define INSTAPI __stdcall
0255 #else
0256 #define SQL_API /* nothing */
0257 #define INSTAPI /* nothing */
0258 #endif
0259 
0260 #include "odbcStubs.h"
0261 MODULE_SCOPE const odbcStubDefs* odbcStubs;
0262 
0263 /*
0264  * Additional entry points in ODBCINST - all of these are optional
0265  * and resolved with Tcl_FindSymbol, not directly in Tcl_LoadLibrary.
0266  */
0267 
0268 MODULE_SCOPE BOOL (INSTAPI* SQLConfigDataSourceW)(HWND, WORD, LPCWSTR,
0269                           LPCWSTR);
0270 MODULE_SCOPE BOOL (INSTAPI* SQLConfigDataSource)(HWND, WORD, LPCSTR, LPCSTR);
0271 MODULE_SCOPE BOOL (INSTAPI* SQLInstallerErrorW)(WORD, DWORD*, LPWSTR, WORD,
0272                         WORD*);
0273 MODULE_SCOPE BOOL (INSTAPI* SQLInstallerError)(WORD, DWORD*, LPSTR, WORD,
0274                            WORD*);
0275 
0276 /*
0277  * Function that initialises the stubs
0278  */
0279 
0280 MODULE_SCOPE Tcl_LoadHandle OdbcInitStubs(Tcl_Interp*, Tcl_LoadHandle*);
0281 
0282 #endif