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