annotate CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/include/fakesql.h @ 69:33d812a61356

planemo upload commit 2e9511a184a1ca667c7be0c6321a36dc4e3d116d
author jpayne
date Tue, 18 Mar 2025 17:55:14 -0400
parents
children
rev   line source
jpayne@69 1 /*
jpayne@69 2 * fakesql.h --
jpayne@69 3 *
jpayne@69 4 * Include file that defines the subset of SQL/CLI that TDBC
jpayne@69 5 * uses, so that tdbc::odbc can build without an explicit ODBC
jpayne@69 6 * dependency. It comprises only data type, constant and
jpayne@69 7 * function declarations.
jpayne@69 8 *
jpayne@69 9 * The programmers of this file believe that it contains material not
jpayne@69 10 * subject to copyright under the doctrines of scenes a faire and
jpayne@69 11 * of merger of idea and expression. Accordingly, this file is in the
jpayne@69 12 * public domain.
jpayne@69 13 *
jpayne@69 14 *-----------------------------------------------------------------------------
jpayne@69 15 */
jpayne@69 16
jpayne@69 17 #ifndef FAKESQL_H_INCLUDED
jpayne@69 18 #define FAKESQL_H_INCLUDED
jpayne@69 19
jpayne@69 20 #include <stddef.h>
jpayne@69 21
jpayne@69 22 #ifndef MODULE_SCOPE
jpayne@69 23 #define MODULE_SCOPE extern
jpayne@69 24 #endif
jpayne@69 25
jpayne@69 26 /* Limits */
jpayne@69 27
jpayne@69 28 #define SQL_MAX_DSN_LENGTH 32
jpayne@69 29 #define SQL_MAX_MESSAGE_LENGTH 512
jpayne@69 30
jpayne@69 31 /* Fundamental data types */
jpayne@69 32
jpayne@69 33 #ifndef _WIN32
jpayne@69 34 typedef int BOOL;
jpayne@69 35 typedef unsigned int DWORD;
jpayne@69 36 typedef void* HANDLE;
jpayne@69 37 typedef HANDLE HWND;
jpayne@69 38 typedef unsigned short WCHAR;
jpayne@69 39 typedef char* LPSTR;
jpayne@69 40 typedef WCHAR* LPWSTR;
jpayne@69 41 typedef const char* LPCSTR;
jpayne@69 42 typedef const WCHAR* LPCWSTR;
jpayne@69 43 typedef unsigned short WORD;
jpayne@69 44 #endif
jpayne@69 45 typedef void* PVOID;
jpayne@69 46 typedef short RETCODE;
jpayne@69 47 typedef long SDWORD;
jpayne@69 48 typedef short SWORD;
jpayne@69 49 typedef unsigned short USHORT;
jpayne@69 50 typedef USHORT UWORD;
jpayne@69 51
jpayne@69 52 /* ODBC data types */
jpayne@69 53
jpayne@69 54 typedef Tcl_WideInt SQLBIGINT;
jpayne@69 55 typedef unsigned char SQLCHAR;
jpayne@69 56 typedef double SQLDOUBLE;
jpayne@69 57 typedef void* SQLHANDLE;
jpayne@69 58 typedef SDWORD SQLINTEGER;
jpayne@69 59 typedef PVOID SQLPOINTER;
jpayne@69 60 typedef SWORD SQLSMALLINT;
jpayne@69 61 typedef Tcl_WideUInt SQLUBIGINT;
jpayne@69 62 typedef unsigned char SQLUCHAR;
jpayne@69 63 typedef unsigned int SQLUINTEGER;
jpayne@69 64 typedef UWORD SQLUSMALLINT;
jpayne@69 65 typedef WCHAR SQLWCHAR;
jpayne@69 66
jpayne@69 67 typedef SQLSMALLINT SQLRETURN;
jpayne@69 68
jpayne@69 69 /* TODO - Check how the SQLLEN and SQLULEN types are handled on
jpayne@69 70 * 64-bit Unix. */
jpayne@69 71
jpayne@69 72 #if defined(_WIN64)
jpayne@69 73 typedef Tcl_WideInt SQLLEN;
jpayne@69 74 typedef Tcl_WideUInt SQLULEN;
jpayne@69 75 #else
jpayne@69 76 typedef SQLINTEGER SQLLEN;
jpayne@69 77 typedef SQLUINTEGER SQLULEN;
jpayne@69 78 #endif
jpayne@69 79
jpayne@69 80 /* Handle types */
jpayne@69 81
jpayne@69 82 typedef SQLHANDLE SQLHENV;
jpayne@69 83 typedef SQLHANDLE SQLHDBC;
jpayne@69 84 typedef SQLHANDLE SQLHSTMT;
jpayne@69 85 typedef HWND SQLHWND;
jpayne@69 86
jpayne@69 87 #define SQL_HANDLE_DBC 2
jpayne@69 88 #define SQL_HANDLE_ENV 1
jpayne@69 89 #define SQL_HANDLE_STMT 3
jpayne@69 90
jpayne@69 91 /* Null handles */
jpayne@69 92
jpayne@69 93 #define SQL_NULL_HANDLE ((SQLHANDLE) 0)
jpayne@69 94 #define SQL_NULL_HENV ((SQLHENV) 0)
jpayne@69 95 #define SQL_NULL_HDBC ((SQLHDBC) 0)
jpayne@69 96 #define SQL_NULL_HSTMT ((SQLHSTMT) 0)
jpayne@69 97
jpayne@69 98 /* SQL data types */
jpayne@69 99
jpayne@69 100 enum _SQL_DATATYPE {
jpayne@69 101 SQL_BIGINT = -5,
jpayne@69 102 SQL_BINARY = -2,
jpayne@69 103 SQL_BIT = -7,
jpayne@69 104 SQL_CHAR = 1,
jpayne@69 105 SQL_DATE = 9,
jpayne@69 106 SQL_DECIMAL = 3,
jpayne@69 107 SQL_DOUBLE = 8,
jpayne@69 108 SQL_FLOAT = 6,
jpayne@69 109 SQL_INTEGER = 4,
jpayne@69 110 SQL_LONGVARBINARY = -4,
jpayne@69 111 SQL_LONGVARCHAR = -1,
jpayne@69 112 SQL_NUMERIC = 2,
jpayne@69 113 SQL_REAL = 7,
jpayne@69 114 SQL_SMALLINT = 5,
jpayne@69 115 SQL_TIME = 10,
jpayne@69 116 SQL_TIMESTAMP = 11,
jpayne@69 117 SQL_TINYINT = -6,
jpayne@69 118 SQL_VARBINARY = -3,
jpayne@69 119 SQL_VARCHAR = 12,
jpayne@69 120 SQL_WCHAR = -8,
jpayne@69 121 SQL_WVARCHAR = -9,
jpayne@69 122 SQL_WLONGVARCHAR = -10,
jpayne@69 123 };
jpayne@69 124
jpayne@69 125 /* C data types */
jpayne@69 126
jpayne@69 127 #define SQL_SIGNED_OFFSET (-20)
jpayne@69 128
jpayne@69 129 #define SQL_C_BINARY SQL_BINARY
jpayne@69 130 #define SQL_C_CHAR SQL_CHAR
jpayne@69 131 #define SQL_C_DOUBLE SQL_DOUBLE
jpayne@69 132 #define SQL_C_LONG SQL_INTEGER
jpayne@69 133 #define SQL_C_SBIGINT SQL_BIGINT + SQL_SIGNED_OFFSET
jpayne@69 134 #define SQL_C_SLONG SQL_INTEGER + SQL_SIGNED_OFFSET
jpayne@69 135 #define SQL_C_WCHAR SQL_WCHAR
jpayne@69 136
jpayne@69 137 /* Parameter transmission diretions */
jpayne@69 138
jpayne@69 139 #define SQL_PARAM_INPUT 1
jpayne@69 140
jpayne@69 141 /* Status returns */
jpayne@69 142
jpayne@69 143 #define SQL_ERROR (-1)
jpayne@69 144 #define SQL_NO_DATA 100
jpayne@69 145 #define SQL_NO_TOTAL (-4)
jpayne@69 146 #define SQL_SUCCESS 0
jpayne@69 147 #define SQL_SUCCESS_WITH_INFO 1
jpayne@69 148 #define SQL_SUCCEEDED(rc) (((rc)&(~1))==0)
jpayne@69 149
jpayne@69 150 /* Diagnostic fields */
jpayne@69 151
jpayne@69 152 enum _SQL_DIAG {
jpayne@69 153 SQL_DIAG_NUMBER = 2,
jpayne@69 154 SQL_DIAG_SQLSTATE = 4
jpayne@69 155 };
jpayne@69 156
jpayne@69 157 /* Transaction isolation levels */
jpayne@69 158
jpayne@69 159 #define SQL_TXN_READ_COMMITTED 2
jpayne@69 160 #define SQL_TXN_READ_UNCOMMITTED 1
jpayne@69 161 #define SQL_TXN_REPEATABLE_READ 4
jpayne@69 162 #define SQL_TXN_SERIALIZABLE 8
jpayne@69 163
jpayne@69 164 /* Access modes */
jpayne@69 165
jpayne@69 166 #define SQL_MODE_READ_ONLY 1UL
jpayne@69 167 #define SQL_MODE_READ_WRITE 0UL
jpayne@69 168
jpayne@69 169 /* ODBC properties */
jpayne@69 170
jpayne@69 171 #define SQL_ACCESS_MODE 101
jpayne@69 172 #define SQL_AUTOCOMMIT 102
jpayne@69 173 #define SQL_TXN_ISOLATION 108
jpayne@69 174
jpayne@69 175 /* ODBC attributes */
jpayne@69 176
jpayne@69 177 #define SQL_ATTR_ACCESS_MODE SQL_ACCESS_MODE
jpayne@69 178 #define SQL_ATTR_CONNECTION_TIMEOUT 113
jpayne@69 179 #define SQL_ATTR_ODBC_VERSION 200
jpayne@69 180 #define SQL_ATTR_TXN_ISOLATION SQL_TXN_ISOLATION
jpayne@69 181 #define SQL_ATTR_AUTOCOMMIT SQL_AUTOCOMMIT
jpayne@69 182
jpayne@69 183 /* Nullable? */
jpayne@69 184
jpayne@69 185 #define SQL_NULLABLE_UNKNOWN 2
jpayne@69 186
jpayne@69 187 /* Placeholder for length of missing data */
jpayne@69 188
jpayne@69 189 #define SQL_NULL_DATA (-1)
jpayne@69 190
jpayne@69 191 /* ODBC versions */
jpayne@69 192
jpayne@69 193 #define SQL_OV_ODBC3 3UL
jpayne@69 194 #define SQL_ODBC_VER 10
jpayne@69 195
jpayne@69 196 /* SQLDriverConnect flags */
jpayne@69 197
jpayne@69 198 #define SQL_DRIVER_COMPLETE_REQUIRED 3
jpayne@69 199 #define SQL_DRIVER_NOPROMPT 0
jpayne@69 200
jpayne@69 201 /* SQLGetTypeInfo flags */
jpayne@69 202
jpayne@69 203 #define SQL_ALL_TYPES 0
jpayne@69 204
jpayne@69 205 /* Transaction actions */
jpayne@69 206
jpayne@69 207 #define SQL_COMMIT 0
jpayne@69 208 #define SQL_ROLLBACK 1
jpayne@69 209
jpayne@69 210 /* Data source fetch flags */
jpayne@69 211
jpayne@69 212 #define SQL_FETCH_FIRST 2
jpayne@69 213 #define SQL_FETCH_FIRST_SYSTEM 32
jpayne@69 214 #define SQL_FETCH_FIRST_USER 31
jpayne@69 215 #define SQL_FETCH_NEXT 1
jpayne@69 216
jpayne@69 217 /* ODBCINST actions */
jpayne@69 218
jpayne@69 219 #define ODBC_ADD_DSN 1
jpayne@69 220 #define ODBC_CONFIG_DSN 2
jpayne@69 221 #define ODBC_REMOVE_DSN 3
jpayne@69 222 #define ODBC_ADD_SYS_DSN 4
jpayne@69 223 #define ODBC_CONFIG_SYS_DSN 5
jpayne@69 224 #define ODBC_REMOVE_SYS_DSN 6
jpayne@69 225
jpayne@69 226 /* ODBCINST errors */
jpayne@69 227
jpayne@69 228 #define ODBC_ERROR_GENERAL_ERR 1
jpayne@69 229 #define ODBC_ERROR_INVALID_BUFF_LEN 2
jpayne@69 230 #define ODBC_ERROR_INVALID_HWND 3
jpayne@69 231 #define ODBC_ERROR_INVALID_STR 4
jpayne@69 232 #define ODBC_ERROR_INVALID_REQUEST_TYPE 5
jpayne@69 233 #define ODBC_ERROR_COMPONENT_NOT_FOUND 6
jpayne@69 234 #define ODBC_ERROR_INVALID_NAME 7
jpayne@69 235 #define ODBC_ERROR_INVALID_KEYWORD_VALUE 8
jpayne@69 236 #define ODBC_ERROR_INVALID_DSN 9
jpayne@69 237 #define ODBC_ERROR_INVALID_INF 10
jpayne@69 238 #define ODBC_ERROR_REQUEST_FAILED 11
jpayne@69 239 #define ODBC_ERROR_INVALID_PATH 12
jpayne@69 240 #define ODBC_ERROR_LOAD_LIB_FAILED 13
jpayne@69 241 #define ODBC_ERROR_INVALID_PARAM_SEQUENCE 14
jpayne@69 242 #define ODBC_ERROR_INVALID_LOG_FILE 15
jpayne@69 243 #define ODBC_ERROR_USER_CANCELED 16
jpayne@69 244 #define ODBC_ERROR_USAGE_UPDATE_FAILED 17
jpayne@69 245 #define ODBC_ERROR_CREATE_DSN_FAILED 18
jpayne@69 246 #define ODBC_ERROR_WRITING_SYSINFO_FAILED 19
jpayne@69 247 #define ODBC_ERROR_REMOVE_DSN_FAILED 20
jpayne@69 248 #define ODBC_ERROR_OUT_OF_MEM 21
jpayne@69 249 #define ODBC_ERROR_OUTPUT_STRING_TRUNCATED 22
jpayne@69 250
jpayne@69 251 /* ODBC client library entry points */
jpayne@69 252
jpayne@69 253 #ifdef _WIN32
jpayne@69 254 #define SQL_API __stdcall
jpayne@69 255 #define INSTAPI __stdcall
jpayne@69 256 #else
jpayne@69 257 #define SQL_API /* nothing */
jpayne@69 258 #define INSTAPI /* nothing */
jpayne@69 259 #endif
jpayne@69 260
jpayne@69 261 #include "odbcStubs.h"
jpayne@69 262 MODULE_SCOPE const odbcStubDefs* odbcStubs;
jpayne@69 263
jpayne@69 264 /*
jpayne@69 265 * Additional entry points in ODBCINST - all of these are optional
jpayne@69 266 * and resolved with Tcl_FindSymbol, not directly in Tcl_LoadLibrary.
jpayne@69 267 */
jpayne@69 268
jpayne@69 269 MODULE_SCOPE BOOL (INSTAPI* SQLConfigDataSourceW)(HWND, WORD, LPCWSTR,
jpayne@69 270 LPCWSTR);
jpayne@69 271 MODULE_SCOPE BOOL (INSTAPI* SQLConfigDataSource)(HWND, WORD, LPCSTR, LPCSTR);
jpayne@69 272 MODULE_SCOPE BOOL (INSTAPI* SQLInstallerErrorW)(WORD, DWORD*, LPWSTR, WORD,
jpayne@69 273 WORD*);
jpayne@69 274 MODULE_SCOPE BOOL (INSTAPI* SQLInstallerError)(WORD, DWORD*, LPSTR, WORD,
jpayne@69 275 WORD*);
jpayne@69 276
jpayne@69 277 /*
jpayne@69 278 * Function that initialises the stubs
jpayne@69 279 */
jpayne@69 280
jpayne@69 281 MODULE_SCOPE Tcl_LoadHandle OdbcInitStubs(Tcl_Interp*, Tcl_LoadHandle*);
jpayne@69 282
jpayne@69 283 #endif