FreeTDS API
cspublic.h
1 /* FreeTDS - Library of routines accessing Sybase and Microsoft databases
2  * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Brian Bruns
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Library General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  * Library General Public License for more details.
13  *
14  * You should have received a copy of the GNU Library General Public
15  * License along with this library; if not, write to the
16  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17  * Boston, MA 02111-1307, USA.
18  */
19 
20 #ifndef _cspublic_h_
21 #define _cspublic_h_
22 
23 #include <cstypes.h>
24 
25 #undef TDS_STATIC_CAST
26 #ifdef __cplusplus
27 #define TDS_STATIC_CAST(type, a) static_cast<type>(a)
28 extern "C"
29 {
30 #if 0
31 }
32 #endif
33 #else
34 #define TDS_STATIC_CAST(type, a) ((type)(a))
35 #endif
36 
37 #define CS_PUBLIC
38 #define CS_STATIC static
39 
40 #define CS_SUCCEED 1
41 #define CS_FAIL 0
42 #define CS_MEM_ERROR -1
43 #define CS_PENDING -2
44 #define CS_QUIET -3
45 #define CS_BUSY -4
46 #define CS_INTERRUPT -5
47 #define CS_BLK_HAS_TEXT -6
48 #define CS_CONTINUE -7
49 #define CS_FATAL -8
50 #define CS_RET_HAFAILOVER -9
51 #define CS_UNSUPPORTED -10
52 
53 #define CS_CANCELED -202
54 #define CS_ROW_FAIL -203
55 #define CS_END_DATA -204
56 #define CS_END_RESULTS -205
57 #define CS_END_ITEM -206
58 #define CS_NOMSG -207
59 #define CS_TIMED_OUT -208
60 
61 #define CS_SIZEOF(x) sizeof(x)
62 
63 #define CS_LAYER(x) (((x) >> 24) & 0xFF)
64 #define CS_ORIGIN(x) (((x) >> 16) & 0xFF)
65 #define CS_SEVERITY(x) (((x) >> 8) & 0xFF)
66 #define CS_NUMBER(x) ((x) & 0xFF)
67 
68 /* forward declarations */
69 typedef CS_RETCODE(*CS_CSLIBMSG_FUNC) (CS_CONTEXT *, CS_CLIENTMSG *);
70 typedef CS_RETCODE(*CS_CLIENTMSG_FUNC) (CS_CONTEXT *, CS_CONNECTION *, CS_CLIENTMSG *);
71 typedef CS_RETCODE(*CS_SERVERMSG_FUNC) (CS_CONTEXT *, CS_CONNECTION *, CS_SERVERMSG *);
72 typedef CS_RETCODE(*CS_INTERRUPT_FUNC) (CS_CONNECTION *);
73 
74 
75 #define CS_IODATA TDS_STATIC_CAST(CS_INT, 1600)
76 #define CS_SRC_VALUE -2562
77 
78 
79 
80 /* status bits for CS_SERVERMSG */
81 #define CS_HASEED 0x01
82 
83 typedef struct _cs_blkdesc CS_BLKDESC;
84 
85 /* CS_CAP_REQUEST values */
86 #define CS_REQ_LANG 1
87 #define CS_REQ_RPC 2
88 #define CS_REQ_NOTIF 3
89 #define CS_REQ_MSTMT 4
90 #define CS_REQ_BCP 5
91 #define CS_REQ_CURSOR 6
92 #define CS_REQ_DYN 7
93 #define CS_REQ_MSG 8
94 #define CS_REQ_PARAM 9
95 #define CS_DATA_INT1 10
96 #define CS_DATA_INT2 11
97 #define CS_DATA_INT4 12
98 #define CS_DATA_BIT 13
99 #define CS_DATA_CHAR 14
100 #define CS_DATA_VCHAR 15
101 #define CS_DATA_BIN 16
102 #define CS_DATA_VBIN 17
103 #define CS_DATA_MNY8 18
104 #define CS_DATA_MNY4 19
105 #define CS_DATA_DATE8 20
106 #define CS_DATA_DATE4 21
107 #define CS_DATA_FLT4 22
108 #define CS_DATA_FLT8 23
109 #define CS_DATA_NUM 24
110 #define CS_DATA_TEXT 25
111 #define CS_DATA_IMAGE 26
112 #define CS_DATA_DEC 27
113 #define CS_DATA_LCHAR 28
114 #define CS_DATA_LBIN 29
115 #define CS_DATA_INTN 30
116 #define CS_DATA_DATETIMEN 31
117 #define CS_DATA_MONEYN 32
118 #define CS_CSR_PREV 33
119 #define CS_CSR_FIRST 34
120 #define CS_CSR_LAST 35
121 #define CS_CSR_ABS 36
122 #define CS_CSR_REL 37
123 #define CS_CSR_MULTI 38
124 #define CS_CON_OOB 39
125 #define CS_CON_INBAND 40
126 #define CS_CON_LOGICAL 41
127 #define CS_PROTO_TEXT 42
128 #define CS_PROTO_BULK 43
129 #define CS_REQ_URGNOTIF 44
130 #define CS_DATA_SENSITIVITY 45
131 #define CS_DATA_BOUNDARY 46
132 #define CS_PROTO_DYNAMIC 47
133 #define CS_PROTO_DYNPROC 48
134 #define CS_DATA_FLTN 49
135 #define CS_DATA_BITN 50
136 #define CS_OPTION_GET 51
137 #define CS_DATA_INT8 52
138 #define CS_DATA_VOID 53
139 
140 /* CS_CAP_RESPONSE values */
141 #define CS_RES_NOMSG 1
142 #define CS_RES_NOEED 2
143 #define CS_RES_NOPARAM 3
144 #define CS_DATA_NOINT1 4
145 #define CS_DATA_NOINT2 5
146 #define CS_DATA_NOINT4 6
147 #define CS_DATA_NOBIT 7
148 #define CS_DATA_NOCHAR 8
149 #define CS_DATA_NOVCHAR 9
150 #define CS_DATA_NOBIN 10
151 #define CS_DATA_NOVBIN 11
152 #define CS_DATA_NOMNY8 12
153 #define CS_DATA_NOMNY4 13
154 #define CS_DATA_NODATE8 14
155 #define CS_DATA_NODATE4 15
156 #define CS_DATA_NOFLT4 16
157 #define CS_DATA_NOFLT8 17
158 #define CS_DATA_NONUM 18
159 #define CS_DATA_NOTEXT 19
160 #define CS_DATA_NOIMAGE 20
161 #define CS_DATA_NODEC 21
162 #define CS_DATA_NOLCHAR 22
163 #define CS_DATA_NOLBIN 23
164 #define CS_DATA_NOINTN 24
165 #define CS_DATA_NODATETIMEN 25
166 #define CS_DATA_NOMONEYN 26
167 #define CS_CON_NOOOB 27
168 #define CS_CON_NOINBAND 28
169 #define CS_PROTO_NOTEXT 29
170 #define CS_PROTO_NOBULK 30
171 #define CS_DATA_NOSENSITIVITY 31
172 #define CS_DATA_NOBOUNDARY 32
173 #define CS_RES_NOTDSDEBUG 33
174 #define CS_RES_NOSTRIPBLANKS 34
175 #define CS_DATA_NOINT8 35
176 
177 /* Properties */
178 enum
179 {
180 /*
181  * These defines looks weird but programs can test support for defines,
182  * compiler can check enum and there are no define side effecs
183  */
184  CS_USERNAME = 9100,
185 #define CS_USERNAME CS_USERNAME
186  CS_PASSWORD = 9101,
187 #define CS_PASSWORD CS_PASSWORD
188  CS_APPNAME = 9102,
189 #define CS_APPNAME CS_APPNAME
190  CS_HOSTNAME = 9103,
191 #define CS_HOSTNAME CS_HOSTNAME
192  CS_LOGIN_STATUS = 9104,
193 #define CS_LOGIN_STATUS CS_LOGIN_STATUS
194  CS_TDS_VERSION = 9105,
195 #define CS_TDS_VERSION CS_TDS_VERSION
196  CS_CHARSETCNV = 9106,
197 #define CS_CHARSETCNV CS_CHARSETCNV
198  CS_PACKETSIZE = 9107,
199 #define CS_PACKETSIZE CS_PACKETSIZE
200  CS_USERDATA = 9108,
201 #define CS_USERDATA CS_USERDATA
202  CS_NETIO = 9110,
203 #define CS_NETIO CS_NETIO
204  CS_TEXTLIMIT = 9112,
205 #define CS_TEXTLIMIT CS_TEXTLIMIT
206  CS_HIDDEN_KEYS = 9113,
207 #define CS_HIDDEN_KEYS CS_HIDDEN_KEYS
208  CS_VERSION = 9114,
209 #define CS_VERSION CS_VERSION
210  CS_IFILE = 9115,
211 #define CS_IFILE CS_IFILE
212  CS_LOGIN_TIMEOUT = 9116,
213 #define CS_LOGIN_TIMEOUT CS_LOGIN_TIMEOUT
214  CS_TIMEOUT = 9117,
215 #define CS_TIMEOUT CS_TIMEOUT
216  CS_MAX_CONNECT = 9118,
217 #define CS_MAX_CONNECT CS_MAX_CONNECT
218  CS_EXPOSE_FMTS = 9120,
219 #define CS_EXPOSE_FMTS CS_EXPOSE_FMTS
220  CS_EXTRA_INF = 9121,
221 #define CS_EXTRA_INF CS_EXTRA_INF
222  CS_ANSI_BINDS = 9123,
223 #define CS_ANSI_BINDS CS_ANSI_BINDS
224  CS_BULK_LOGIN = 9124,
225 #define CS_BULK_LOGIN CS_BULK_LOGIN
226  CS_LOC_PROP = 9125,
227 #define CS_LOC_PROP CS_LOC_PROP
228  CS_PARENT_HANDLE = 9130,
229 #define CS_PARENT_HANDLE CS_PARENT_HANDLE
230  CS_EED_CMD = 9131,
231 #define CS_EED_CMD CS_EED_CMD
232  CS_DIAG_TIMEOUT = 9132,
233 #define CS_DIAG_TIMEOUT CS_DIAG_TIMEOUT
234  CS_DISABLE_POLL = 9133,
235 #define CS_DISABLE_POLL CS_DISABLE_POLL
236  CS_SEC_ENCRYPTION = 9135,
237 #define CS_SEC_ENCRYPTION CS_SEC_ENCRYPTION
238  CS_SEC_CHALLENGE = 9136,
239 #define CS_SEC_CHALLENGE CS_SEC_CHALLENGE
240  CS_SEC_NEGOTIATE = 9137,
241 #define CS_SEC_NEGOTIATE CS_SEC_NEGOTIATE
242  CS_ENDPOINT = 9141,
243 #define CS_ENDPOINT CS_ENDPOINT
244  CS_CON_STATUS = 9143,
245 #define CS_CON_STATUS CS_CON_STATUS
246  CS_VER_STRING = 9144,
247 #define CS_VER_STRING CS_VER_STRING
248  CS_SERVERNAME = 9146,
249 #define CS_SERVERNAME CS_SERVERNAME
250  CS_SEC_APPDEFINED = 9149,
251 #define CS_SEC_APPDEFINED CS_SEC_APPDEFINED
252  CS_STICKY_BINDS = 9151,
253 #define CS_STICKY_BINDS CS_STICKY_BINDS
254  CS_SEC_NETWORKAUTH = 9175,
255 #define CS_SEC_NETWORKAUTH CS_SEC_NETWORKAUTH
256  CS_SEC_DELEGATION = 9176,
257 #define CS_SEC_DELEGATION CS_SEC_DELEGATION
258  CS_SEC_MUTUALAUTH = 9177,
259 #define CS_SEC_MUTUALAUTH CS_SEC_MUTUALAUTH
260  CS_SEC_SERVERPRINCIPAL = 9188,
261 #define CS_SEC_SERVERPRINCIPAL CS_SEC_SERVERPRINCIPAL
262  CS_SERVERADDR = 9206,
263 #define CS_SERVERADDR CS_SERVERADDR
264 /* settings from here are FreeTDS extensions */
265  CS_PORT = 9300,
266 #define CS_PORT CS_PORT
267  CS_CLIENTCHARSET = 9301,
268 #define CS_CLIENTCHARSET CS_CLIENTCHARSET
269  CS_DATABASE = 9302,
270 #define CS_DATABASE CS_DATABASE
271  CS_NOTE_EMPTY_DATA = 9303,
272 #define CS_NOTE_EMPTY_DATA CS_NOTE_EMPTY_DATA
273  CS_PRODUCT_NAME = 9304
274 #define CS_PRODUCT_NAME CS_PRODUCT_NAME
275 };
276 
277 /* Arbitrary precision math operators */
278 enum
279 {
280  CS_ADD = 1,
281  CS_SUB,
282  CS_MULT,
283  CS_DIV
284 };
285 
286 enum
287 {
288  CS_TDS_AUTO = 0,
289 #define CS_TDS_AUTO CS_TDS_AUTO
290  CS_TDS_40 = 7360,
291 #define CS_TDS_40 CS_TDS_40
292  CS_TDS_42,
293 #define CS_TDS_42 CS_TDS_42
294  CS_TDS_46,
295 #define CS_TDS_46 CS_TDS_46
296  CS_TDS_495,
297 #define CS_TDS_495 CS_TDS_495
298  CS_TDS_50,
299 #define CS_TDS_50 CS_TDS_50
300  CS_TDS_70,
301  CS_TDS_71,
302 #define CS_TDS_71 CS_TDS_71
303  CS_TDS_72,
304 #define CS_TDS_72 CS_TDS_72
305  CS_TDS_73,
306 #define CS_TDS_73 CS_TDS_73
307  CS_TDS_74,
308 #define CS_TDS_74 CS_TDS_74
309  CS_TDS_80,
310 #define CS_TDS_80 CS_TDS_80
311 };
312 
313 /* bit mask values used by CS_DATAFMT.status */
314 #define CS_HIDDEN (1 << 0)
315 #define CS_KEY (1 << 1)
316 #define CS_VERSION_KEY (1 << 2)
317 #define CS_NODATA (1 << 3)
318 #define CS_UPDATABLE (1 << 4)
319 #define CS_CANBENULL (1 << 5)
320 #define CS_DESCIN (1 << 6)
321 #define CS_DESCOUT (1 << 7)
322 #define CS_INPUTVALUE (1 << 8)
323 #define CS_UPDATECOL (1 << 9)
324 #define CS_RETURN (1 << 10)
325 #define CS_TIMESTAMP (1 << 13)
326 #define CS_NODEFAULT (1 << 14)
327 #define CS_IDENTITY (1 << 15)
328 
329 /*
330  * DBD::Sybase compares indicator to CS_NULLDATA so this is -1
331  * (the documentation states -1)
332  */
333 #define CS_GOODDATA 0
334 #define CS_NULLDATA (-1)
335 
336 /* CS_CON_STATUS read-only property bit mask values */
337 #define CS_CONSTAT_CONNECTED 0x01
338 #define CS_CONSTAT_DEAD 0x02
339 
340 /*
341  * Code added for CURSOR support
342  * types accepted by ct_cursor
343  */
344 #define CS_CURSOR_DECLARE 700
345 #define CS_CURSOR_OPEN 701
346 #define CS_CURSOR_ROWS 703
347 #define CS_CURSOR_UPDATE 704
348 #define CS_CURSOR_DELETE 705
349 #define CS_CURSOR_CLOSE 706
350 #define CS_CURSOR_DEALLOC 707
351 #define CS_CURSOR_OPTION 725
352 
353 #define CS_FOR_UPDATE TDS_STATIC_CAST(CS_INT, 0x1)
354 #define CS_READ_ONLY TDS_STATIC_CAST(CS_INT, 0x2)
355 #define CS_RESTORE_OPEN TDS_STATIC_CAST(CS_INT, 0x8)
356 #define CS_IMPLICIT_CURSOR TDS_STATIC_CAST(CS_INT, 0x40)
357 
358 
359 #define CS_CURSTAT_NONE TDS_STATIC_CAST(CS_INT, 0x0)
360 #define CS_CURSTAT_DECLARED TDS_STATIC_CAST(CS_INT, 0x1)
361 #define CS_CURSTAT_OPEN TDS_STATIC_CAST(CS_INT, 0x2)
362 #define CS_CURSTAT_CLOSED TDS_STATIC_CAST(CS_INT, 0x4)
363 #define CS_CURSTAT_RDONLY TDS_STATIC_CAST(CS_INT, 0x8)
364 #define CS_CURSTAT_UPDATABLE TDS_STATIC_CAST(CS_INT, 0x10)
365 #define CS_CURSTAT_ROWCOUNT TDS_STATIC_CAST(CS_INT, 0x20)
366 #define CS_CURSTAT_DEALLOC TDS_STATIC_CAST(CS_INT, 0x40)
367 
368 #define CS_CUR_STATUS TDS_STATIC_CAST(CS_INT, 9126)
369 #define CS_CUR_ID TDS_STATIC_CAST(CS_INT, 9127)
370 #define CS_CUR_NAME TDS_STATIC_CAST(CS_INT, 9128)
371 #define CS_CUR_ROWCOUNT TDS_STATIC_CAST(CS_INT, 9129)
372 
373 /* options accepted by ct_options() */
374 #define CS_OPT_DATEFIRST 5001
375 #define CS_OPT_TEXTSIZE 5002
376 #define CS_OPT_STATS_TIME 5003
377 #define CS_OPT_STATS_IO 5004
378 #define CS_OPT_ROWCOUNT 5005
379 #define CS_OPT_DATEFORMAT 5007
380 #define CS_OPT_ISOLATION 5008
381 #define CS_OPT_AUTHON 5009
382 #define CS_OPT_SHOWPLAN 5013
383 #define CS_OPT_NOEXEC 5014
384 #define CS_OPT_ARITHIGNORE 5015
385 #define CS_OPT_TRUNCIGNORE 5016
386 #define CS_OPT_ARITHABORT 5017
387 #define CS_OPT_PARSEONLY 5018
388 #define CS_OPT_GETDATA 5020
389 #define CS_OPT_NOCOUNT 5021
390 #define CS_OPT_FORCEPLAN 5023
391 #define CS_OPT_FORMATONLY 5024
392 #define CS_OPT_CHAINXACTS 5025
393 #define CS_OPT_CURCLOSEONXACT 5026
394 #define CS_OPT_FIPSFLAG 5027
395 #define CS_OPT_RESTREES 5028
396 #define CS_OPT_IDENTITYON 5029
397 #define CS_OPT_CURREAD 5030
398 #define CS_OPT_CURWRITE 5031
399 #define CS_OPT_IDENTITYOFF 5032
400 #define CS_OPT_AUTHOFF 5033
401 #define CS_OPT_ANSINULL 5034
402 #define CS_OPT_QUOTED_IDENT 5035
403 #define CS_OPT_ANSIPERM 5036
404 #define CS_OPT_STR_RTRUNC 5037
405 
406 /* options accepted by ct_command() */
407 enum ct_command_options
408 {
409  CS_MORE = 16,
410 #define CS_MORE CS_MORE
411  CS_END = 32,
412 #define CS_END CS_END
413  CS_RECOMPILE = 188,
414 #define CS_RECOMPILE CS_RECOMPILE
415  CS_NO_RECOMPILE,
416 #define CS_NO_RECOMPILE CS_NO_RECOMPILE
417  CS_BULK_INIT,
418 #define CS_BULK_INIT CS_BULK_INIT
419  CS_BULK_CONT,
420 #define CS_BULK_CONT CS_BULK_CONT
421  CS_BULK_DATA,
422 #define CS_BULK_DATA CS_BULK_DATA
423  CS_COLUMN_DATA
424 #define CS_COLUMN_DATA CS_COLUMN_DATA
425 };
426 
427 
428 /*
429  * bind formats, should be mapped to TDS types
430  * can be a combination of bit
431  */
432 enum
433 {
434  CS_FMT_UNUSED = 0,
435 #define CS_FMT_UNUSED CS_FMT_UNUSED
436  CS_FMT_NULLTERM = 1,
437 #define CS_FMT_NULLTERM CS_FMT_NULLTERM
438  CS_FMT_PADNULL = 2,
439 #define CS_FMT_PADBLANK CS_FMT_PADBLANK
440  CS_FMT_PADBLANK = 4,
441 #define CS_FMT_PADNULL CS_FMT_PADNULL
442  CS_FMT_JUSTIFY_RT = 8,
443 #define CS_FMT_JUSTIFY_RT CS_FMT_JUSTIFY_RT
444  CS_FMT_STRIPBLANKS = 16,
445 #define CS_FMT_STRIPBLANKS CS_FMT_STRIPBLANKS
446  CS_FMT_SAFESTR = 32,
447 #define CS_FMT_SAFESTR CS_FMT_SAFESTR
448  CS_FMT_SUBS_ILL_CHAR = 64
449 #define CS_FMT_SUBS_ILL_CHAR CS_FMT_SUBS_ILL_CHAR
450 };
451 
452 /* callbacks */
453 #define CS_COMPLETION_CB 1
454 #define CS_SERVERMSG_CB 2
455 #define CS_CLIENTMSG_CB 3
456 #define CS_NOTIF_CB 4
457 #define CS_ENCRYPT_CB 5
458 #define CS_CHALLENGE_CB 6
459 #define CS_DS_LOOKUP_CB 7
460 #define CS_SECSESSION_CB 8
461 #define CS_SIGNAL_CB 100
462 #define CS_MESSAGE_CB 9119
463 /* FreeTDS extension */
464 #define CS_INTERRUPT_CB 9400
465 
466 /* string types */
467 #define CS_NULLTERM -9
468 #define CS_WILDCARD -99
469 #define CS_NO_LIMIT -9999
470 #define CS_UNUSED -99999
471 
472 /* other */
473 #define CS_GET 33
474 #define CS_SET 34
475 #define CS_CLEAR 35
476 #define CS_INIT 36
477 #define CS_STATUS 37
478 #define CS_MSGLIMIT 38
479 #define CS_SUPPORTED 40
480 
481 #define CS_CMD_DONE 4046
482 #define CS_CMD_SUCCEED 4047
483 #define CS_CMD_FAIL 4048
484 
485 /* commands */
486 #define CS_LANG_CMD 148
487 #define CS_RPC_CMD 149
488 #define CS_SEND_DATA_CMD 151
489 #define CS_SEND_BULK_CMD 153
490 
491 #ifdef CS_NO_LARGE_IDENTIFIERS
492 #define CS_VERSION_100 112
493 #define CS_VERSION_110 1100
494 #define CS_VERSION_120 1100
495 #define CS_VERSION_125 12500
496 #define CS_VERSION_150 15000
497 #else
498 #define CS_VERSION_100 113
499 #define CS_VERSION_110 1101
500 #define CS_VERSION_120 CS_VERSION_110
501 #define CS_VERSION_125 12501
502 #define CS_VERSION_150 15001
503 #define CS_VERSION_155 15501
504 #define CS_VERSION_157 15701
505 #define CS_VERSION_160 16001
506 #endif
507 
508 #define BLK_VERSION_100 CS_VERSION_100
509 #define BLK_VERSION_110 CS_VERSION_110
510 #define BLK_VERSION_120 CS_VERSION_120
511 #define BLK_VERSION_125 CS_VERSION_125
512 #define BLK_VERSION_150 CS_VERSION_150
513 #ifndef CS_NO_LARGE_IDENTIFIERS
514 #define BLK_VERSION_155 CS_VERSION_155
515 #define BLK_VERSION_157 CS_VERSION_157
516 #define BLK_VERSION_160 CS_VERSION_160
517 #endif
518 
519 #define CS_FORCE_EXIT 300
520 #define CS_FORCE_CLOSE 301
521 
522 #define CS_SYNC_IO 8111
523 #define CS_ASYNC_IO 8112
524 #define CS_DEFER_IO 8113
525 
526 #define CS_CANCEL_CURRENT 6000
527 #define CS_CANCEL_ALL 6001
528 #define CS_CANCEL_ATTN 6002
529 
530 #define CS_ROW_COUNT 800
531 #define CS_CMD_NUMBER 801
532 #define CS_NUM_COMPUTES 802
533 #define CS_NUMDATA 803
534 #define CS_NUMORDERCOLS 805
535 #define CS_MSGTYPE 806
536 #define CS_BROWSE_INFO 807
537 #define CS_TRANS_STATE 808
538 
539 #define CS_TRAN_UNDEFINED 0
540 #define CS_TRAN_IN_PROGRESS 1
541 #define CS_TRAN_COMPLETED 2
542 #define CS_TRAN_FAIL 3
543 #define CS_TRAN_STMT_FAIL 4
544 
545 #define CS_COMP_OP 5350
546 #define CS_COMP_ID 5351
547 #define CS_COMP_COLID 5352
548 #define CS_COMP_BYLIST 5353
549 #define CS_BYLIST_LEN 5354
550 
551 #define CS_NO_COUNT -1
552 
553 #define CS_OP_SUM 5370
554 #define CS_OP_AVG 5371
555 #define CS_OP_COUNT 5372
556 #define CS_OP_MIN 5373
557 #define CS_OP_MAX 5374
558 
559 #define CS_CAP_REQUEST 1
560 #define CS_CAP_RESPONSE 2
561 
562 #define CS_PREPARE 717
563 #define CS_EXECUTE 718
564 #define CS_DESCRIBE_INPUT 720
565 #define CS_DESCRIBE_OUTPUT 721
566 
567 #define CS_DEALLOC 711
568 
569 #define CS_LC_ALL 7
570 #define CS_SYB_LANG 8
571 #define CS_SYB_CHARSET 9
572 #define CS_SYB_SORTORDER 10
573 #define CS_SYB_COLLATE CS_SYB_SORTORDER
574 #define CS_SYB_LANG_CHARSET 11
575 
576 #define CS_BLK_IN 1
577 #define CS_BLK_OUT 2
578 
579 #define CS_BLK_BATCH 1
580 #define CS_BLK_ALL 2
581 #define CS_BLK_CANCEL 3
582 
583 /* to do support these */
584 
585 #define CS_BLK_ARRAY_MAXLEN 0x1000
586 #define CS_DEF_PREC 18
587 
588 /* Error Severities */
589 #define CS_SV_INFORM TDS_STATIC_CAST(CS_INT, 0)
590 #define CS_SV_API_FAIL TDS_STATIC_CAST(CS_INT, 1)
591 #define CS_SV_RETRY_FAIL TDS_STATIC_CAST(CS_INT, 2)
592 #define CS_SV_RESOURCE_FAIL TDS_STATIC_CAST(CS_INT, 3)
593 #define CS_SV_CONFIG_FAIL TDS_STATIC_CAST(CS_INT, 4)
594 #define CS_SV_COMM_FAIL TDS_STATIC_CAST(CS_INT, 5)
595 #define CS_SV_INTERNAL_FAIL TDS_STATIC_CAST(CS_INT, 6)
596 #define CS_SV_FATAL TDS_STATIC_CAST(CS_INT, 7)
597 
598 /* result_types */
599 #define CS_ROW_RESULT 4040
600 #define CS_CURSOR_RESULT 4041
601 #define CS_PARAM_RESULT 4042
602 #define CS_STATUS_RESULT 4043
603 #define CS_MSG_RESULT 4044
604 #define CS_COMPUTE_RESULT 4045
605 #define CS_ROWFMT_RESULT 4049
606 #define CS_COMPUTEFMT_RESULT 4050
607 #define CS_DESCRIBE_RESULT 4051
608 
609 /* bind types */
610 #define CS_ILLEGAL_TYPE TDS_STATIC_CAST(CS_INT, -1)
611 #define CS_CHAR_TYPE TDS_STATIC_CAST(CS_INT, 0)
612 #define CS_BINARY_TYPE TDS_STATIC_CAST(CS_INT, 1)
613 #define CS_LONGCHAR_TYPE TDS_STATIC_CAST(CS_INT, 2)
614 #define CS_LONGBINARY_TYPE TDS_STATIC_CAST(CS_INT, 3)
615 #define CS_TEXT_TYPE TDS_STATIC_CAST(CS_INT, 4)
616 #define CS_IMAGE_TYPE TDS_STATIC_CAST(CS_INT, 5)
617 #define CS_TINYINT_TYPE TDS_STATIC_CAST(CS_INT, 6)
618 #define CS_SMALLINT_TYPE TDS_STATIC_CAST(CS_INT, 7)
619 #define CS_INT_TYPE TDS_STATIC_CAST(CS_INT, 8)
620 #define CS_REAL_TYPE TDS_STATIC_CAST(CS_INT, 9)
621 #define CS_FLOAT_TYPE TDS_STATIC_CAST(CS_INT, 10)
622 #define CS_BIT_TYPE TDS_STATIC_CAST(CS_INT, 11)
623 #define CS_DATETIME_TYPE TDS_STATIC_CAST(CS_INT, 12)
624 #define CS_DATETIME4_TYPE TDS_STATIC_CAST(CS_INT, 13)
625 #define CS_MONEY_TYPE TDS_STATIC_CAST(CS_INT, 14)
626 #define CS_MONEY4_TYPE TDS_STATIC_CAST(CS_INT, 15)
627 #define CS_NUMERIC_TYPE TDS_STATIC_CAST(CS_INT, 16)
628 #define CS_DECIMAL_TYPE TDS_STATIC_CAST(CS_INT, 17)
629 #define CS_VARCHAR_TYPE TDS_STATIC_CAST(CS_INT, 18)
630 #define CS_VARBINARY_TYPE TDS_STATIC_CAST(CS_INT, 19)
631 #define CS_LONG_TYPE TDS_STATIC_CAST(CS_INT, 20)
632 #define CS_SENSITIVITY_TYPE TDS_STATIC_CAST(CS_INT, 21)
633 #define CS_BOUNDARY_TYPE TDS_STATIC_CAST(CS_INT, 22)
634 #define CS_VOID_TYPE TDS_STATIC_CAST(CS_INT, 23)
635 #define CS_USHORT_TYPE TDS_STATIC_CAST(CS_INT, 24)
636 #define CS_UNICHAR_TYPE TDS_STATIC_CAST(CS_INT, 25)
637 #define CS_BLOB_TYPE TDS_STATIC_CAST(CS_INT, 26)
638 #define CS_DATE_TYPE TDS_STATIC_CAST(CS_INT, 27)
639 #define CS_TIME_TYPE TDS_STATIC_CAST(CS_INT, 28)
640 #define CS_UNITEXT_TYPE TDS_STATIC_CAST(CS_INT, 29)
641 #define CS_BIGINT_TYPE TDS_STATIC_CAST(CS_INT, 30)
642 #define CS_USMALLINT_TYPE TDS_STATIC_CAST(CS_INT, 31)
643 #define CS_UINT_TYPE TDS_STATIC_CAST(CS_INT, 32)
644 #define CS_UBIGINT_TYPE TDS_STATIC_CAST(CS_INT, 33)
645 #define CS_XML_TYPE TDS_STATIC_CAST(CS_INT, 34)
646 #define CS_BIGDATETIME_TYPE TDS_STATIC_CAST(CS_INT, 35)
647 #define CS_BIGTIME_TYPE TDS_STATIC_CAST(CS_INT, 36)
648 #define CS_TEXTLOCATOR_TYPE TDS_STATIC_CAST(CS_INT, 37)
649 #define CS_IMAGELOCATOR_TYPE TDS_STATIC_CAST(CS_INT, 38)
650 #define CS_UNITEXTLOCATOR_TYPE TDS_STATIC_CAST(CS_INT, 39)
651 #define CS_UNIQUE_TYPE TDS_STATIC_CAST(CS_INT, 40)
652 
653 #define CS_MIN_SYBTYPE CS_CHAR_TYPE
654 #define CS_MAX_SYBTYPE CS_UNIQUE_TYPE
655 
656 #define CS_USER_TYPE TDS_STATIC_CAST(CS_INT, 100)
657 /* cs_dt_info type values */
658 enum
659 {
660  CS_MONTH = 7340,
661 #define CS_MONTH CS_MONTH
662  CS_SHORTMONTH,
663 #define CS_SHORTMONTH CS_SHORTMONTH
664  CS_DAYNAME,
665 #define CS_DAYNAME CS_DAYNAME
666  CS_DATEORDER,
667 #define CS_DATEORDER CS_DATEORDER
668  CS_12HOUR,
669 #define CS_12HOUR CS_12HOUR
670  CS_DT_CONVFMT
671 #define CS_DT_CONVFMT CS_DT_CONVFMT
672 };
673 
674 /* DT_CONVFMT types */
675 enum
676 {
677  CS_DATES_SHORT = 0,
678 #define CS_DATES_SHORT CS_DATES_SHORT
679  CS_DATES_MDY1,
680 #define CS_DATES_MDY1 CS_DATES_MDY1
681  CS_DATES_YMD1,
682 #define CS_DATES_YMD1 CS_DATES_YMD1
683  CS_DATES_DMY1,
684 #define CS_DATES_DMY1 CS_DATES_DMY1
685  CS_DATES_DMY2,
686 #define CS_DATES_DMY2 CS_DATES_DMY2
687  CS_DATES_DMY3,
688 #define CS_DATES_DMY3 CS_DATES_DMY3
689  CS_DATES_DMY4,
690 #define CS_DATES_DMY4 CS_DATES_DMY4
691  CS_DATES_MDY2,
692 #define CS_DATES_MDY2 CS_DATES_MDY2
693  CS_DATES_HMS,
694 #define CS_DATES_HMS CS_DATES_HMS
695  CS_DATES_LONG,
696 #define CS_DATES_LONG CS_DATES_LONG
697  CS_DATES_MDY3,
698 #define CS_DATES_MDY3 CS_DATES_MDY3
699  CS_DATES_YMD2,
700 #define CS_DATES_YMD2 CS_DATES_YMD2
701  CS_DATES_YMD3,
702 #define CS_DATES_YMD3 CS_DATES_YMD3
703  CS_DATES_YDM1,
704 #define CS_DATES_YDM1 CS_DATES_YDM1
705  CS_DATES_MYD1,
706 #define CS_DATES_MYD1 CS_DATES_MYD1
707  CS_DATES_DYM1,
708 #define CS_DATES_DYM1 CS_DATES_DYM1
709  CS_DATES_MDYHMS,
710 #define CS_DATES_MDYHMS CS_DATES_MDYHMS
711  CS_DATES_HMA,
712 #define CS_DATES_HMA CS_DATES_HMA
713  CS_DATES_HM,
714 #define CS_DATES_HM CS_DATES_HM
715  CS_DATES_HMSZA,
716 #define CS_DATES_HMSZA CS_DATES_HMSZA
717  CS_DATES_HMSZ,
718 #define CS_DATES_HMSZ CS_DATES_HMSZ
719  CS_DATES_YMDHMS,
720 #define CS_DATES_YMDHMS CS_DATES_YMDHMS
721  CS_DATES_YMDHMA,
722 #define CS_DATES_YMDHMA CS_DATES_YMDHMA
723  CS_DATES_YMDTHMS,
724 #define CS_DATES_YMDTHMS CS_DATES_YMDTHMS
725  CS_DATES_HMSUSA = 36,
726 #define CS_DATES_HMSUSA CS_DATES_HMSUSA
727  CS_DATES_HMSUS,
728 #define CS_DATES_HMSUS CS_DATES_HMSUS
729  CS_DATES_LONGUSA,
730 #define CS_DATES_LONGUSA CS_DATES_LONGUSA
731  CS_DATES_LONGUS,
732 #define CS_DATES_LONGUS CS_DATES_LONGUS
733  CS_DATES_YMDHMSUS,
734 #define CS_DATES_YMDHMSUS CS_DATES_YMDHMSUS
735  CS_DATES_SHORT_ALT = 100,
736 #define CS_DATES_SHORT_ALT CS_DATES_SHORT_ALT
737  CS_DATES_MDY1_YYYY,
738 #define CS_DATES_MDY1_YYYY CS_DATES_MDY1_YYYY
739  CS_DATES_YMD1_YYYY,
740 #define CS_DATES_YMD1_YYYY CS_DATES_YMD1_YYYY
741  CS_DATES_DMY1_YYYY,
742 #define CS_DATES_DMY1_YYYY CS_DATES_DMY1_YYYY
743  CS_DATES_DMY2_YYYY,
744 #define CS_DATES_DMY2_YYYY CS_DATES_DMY2_YYYY
745  CS_DATES_DMY3_YYYY,
746 #define CS_DATES_DMY3_YYYY CS_DATES_DMY3_YYYY
747  CS_DATES_DMY4_YYYY,
748 #define CS_DATES_DMY4_YYYY CS_DATES_DMY4_YYYY
749  CS_DATES_MDY2_YYYY,
750 #define CS_DATES_MDY2_YYYY CS_DATES_MDY2_YYYY
751  CS_DATES_HMS_ALT,
752 #define CS_DATES_HMS_ALT CS_DATES_HMS_ALT
753  CS_DATES_LONG_ALT,
754 #define CS_DATES_LONG_ALT CS_DATES_LONG_ALT
755  CS_DATES_MDY3_YYYY,
756 #define CS_DATES_MDY3_YYYY CS_DATES_MDY3_YYYY
757  CS_DATES_YMD2_YYYY,
758 #define CS_DATES_YMD2_YYYY CS_DATES_YMD2_YYYY
759  CS_DATES_YMD3_YYYY,
760 #define CS_DATES_YMD3_YYYY CS_DATES_YMD3_YYYY
761  CS_DATES_YDM1_YYYY,
762 #define CS_DATES_YDM1_YYYY CS_DATES_YDM1_YYYY
763  CS_DATES_MYD1_YYYY,
764 #define CS_DATES_MYD1_YYYY CS_DATES_MYD1_YYYY
765  CS_DATES_DYM1_YYYY,
766 #define CS_DATES_DYM1_YYYY CS_DATES_DYM1_YYYY
767  CS_DATES_MDYHMS_ALT,
768 #define CS_DATES_MDYHMS_ALT CS_DATES_MDYHMS_ALT
769  CS_DATES_HMA_ALT,
770 #define CS_DATES_HMA_ALT CS_DATES_HMA_ALT
771  CS_DATES_HM_ALT,
772 #define CS_DATES_HM_ALT CS_DATES_HM_ALT
773  CS_DATES_YMDHMS_YYYY = 121,
774 #define CS_DATES_YMDHMS_YYYY CS_DATES_YMDHMS_YYYY
775  CS_DATES_YMDHMA_YYYY,
776 #define CS_DATES_YMDHMA_YYYY CS_DATES_YMDHMA_YYYY
777  CS_DATES_HMSUSA_YYYY = 136,
778 #define CS_DATES_HMSUSA_YYYY CS_DATES_HMSUSA_YYYY
779  CS_DATES_HMSUS_YYYY,
780 #define CS_DATES_HMSUS_YYYY CS_DATES_HMSUS_YYYY
781  CS_DATES_LONGUSA_YYYY,
782 #define CS_DATES_LONGUSA_YYYY CS_DATES_LONGUSA_YYYY
783  CS_DATES_LONGUS_YYYY,
784 #define CS_DATES_LONGUS_YYYY CS_DATES_LONGUS_YYYY
785  CS_DATES_YMDHMSUS_YYYY
786 #define CS_DATES_YMDHMSUS_YYYY CS_DATES_YMDHMSUS_YYYY
787 };
788 
789 typedef CS_RETCODE(*CS_CONV_FUNC) (CS_CONTEXT * context, CS_DATAFMT * srcfmt, CS_VOID * src, CS_DATAFMT * detsfmt, CS_VOID * dest,
790  CS_INT * destlen);
791 
792 typedef struct _cs_objname
793 {
794  CS_BOOL thinkexists;
795  CS_INT object_type;
796 #ifdef CS_NO_LARGE_IDENTIFIERS
797  CS_CHAR last_name[CS_MAX_NAME];
798  CS_INT lnlen;
799  CS_CHAR first_name[CS_MAX_NAME];
800 #else
801  CS_CHAR last_name[CS_MAX_CHAR];
802  CS_INT lnlen;
803  CS_CHAR first_name[CS_MAX_CHAR];
804 #endif
805  CS_INT fnlen;
806  CS_VOID *scope;
807  CS_INT scopelen;
808  CS_VOID *thread;
809  CS_INT threadlen;
810 } CS_OBJNAME;
811 
812 typedef struct _cs_objdata
813 {
814  CS_BOOL actuallyexists;
815  CS_CONNECTION *connection;
816  CS_COMMAND *command;
817  CS_VOID *buffer;
818  CS_INT buflen;
819 } CS_OBJDATA;
820 
821 /* Eventually, these should be in terms of TDS values */
822 enum
823 {
824  CS_OPT_MONDAY = 1,
825  CS_OPT_TUESDAY,
826  CS_OPT_WEDNESDAY,
827  CS_OPT_THURSDAY,
828  CS_OPT_FRIDAY,
829  CS_OPT_SATURDAY,
830  CS_OPT_SUNDAY
831 };
832 enum
833 {
834  CS_OPT_FMTMDY = 1,
835  CS_OPT_FMTDMY,
836  CS_OPT_FMTYMD,
837  CS_OPT_FMTYDM,
838  CS_OPT_FMTMYD,
839  CS_OPT_FMTDYM
840 };
841 enum
842 {
843  CS_OPT_LEVEL0 = 0,
844  CS_OPT_LEVEL1,
845  CS_OPT_LEVEL2,
846  CS_OPT_LEVEL3
847 };
848 
849 #define CS_FALSE 0
850 #define CS_TRUE 1
851 
852 #define SRV_PROC CS_VOID
853 
854 /* constants required for ct_diag (not jet implemented) */
855 #define CS_CLIENTMSG_TYPE 4700
856 #define CS_SERVERMSG_TYPE 4701
857 #define CS_ALLMSG_TYPE 4702
858 
859 /* CS_INTERRUPT_CB return values */
860 #define CS_INT_CONTINUE 1
861 #define CS_INT_CANCEL 2
862 #define CS_INT_TIMEOUT 3
863 
864 CS_RETCODE cs_convert(CS_CONTEXT * ctx, CS_DATAFMT * srcfmt, CS_VOID * srcdata, CS_DATAFMT * destfmt, CS_VOID * destdata,
865  CS_INT * resultlen);
866 CS_RETCODE cs_ctx_alloc(CS_INT version, CS_CONTEXT ** ctx);
867 CS_RETCODE cs_ctx_global(CS_INT version, CS_CONTEXT ** ctx);
868 CS_RETCODE cs_ctx_drop(CS_CONTEXT * ctx);
869 CS_RETCODE cs_config(CS_CONTEXT * ctx, CS_INT action, CS_INT property, CS_VOID * buffer, CS_INT buflen, CS_INT * outlen);
870 CS_RETCODE cs_strbuild(CS_CONTEXT * ctx, CS_CHAR * buffer, CS_INT buflen, CS_INT * resultlen, CS_CHAR * text, CS_INT textlen,
871  CS_CHAR * formats, CS_INT formatlen, ...);
872 #undef cs_dt_crack
873 CS_RETCODE cs_dt_crack(CS_CONTEXT * ctx, CS_INT datetype, CS_VOID * dateval, CS_DATEREC * daterec);
874 CS_RETCODE cs_dt_crack_v2(CS_CONTEXT * ctx, CS_INT datetype, CS_VOID * dateval, CS_DATEREC * daterec);
875 #define cs_dt_crack cs_dt_crack_v2
876 CS_RETCODE cs_loc_alloc(CS_CONTEXT * ctx, CS_LOCALE ** locptr);
877 CS_RETCODE cs_loc_drop(CS_CONTEXT * ctx, CS_LOCALE * locale);
878 CS_RETCODE cs_locale(CS_CONTEXT * ctx, CS_INT action, CS_LOCALE * locale, CS_INT type, CS_VOID * buffer, CS_INT buflen,
879  CS_INT * outlen);
880 CS_RETCODE cs_dt_info(CS_CONTEXT * ctx, CS_INT action, CS_LOCALE * locale, CS_INT type, CS_INT item, CS_VOID * buffer,
881  CS_INT buflen, CS_INT * outlen);
882 
883 CS_RETCODE cs_calc(CS_CONTEXT * ctx, CS_INT op, CS_INT datatype, CS_VOID * var1, CS_VOID * var2, CS_VOID * dest);
884 CS_RETCODE cs_cmp(CS_CONTEXT * ctx, CS_INT datatype, CS_VOID * var1, CS_VOID * var2, CS_INT * result);
885 CS_RETCODE cs_conv_mult(CS_CONTEXT * ctx, CS_LOCALE * srcloc, CS_LOCALE * destloc, CS_INT * conv_multiplier);
886 CS_RETCODE cs_diag(CS_CONTEXT * ctx, CS_INT operation, CS_INT type, CS_INT idx, CS_VOID * buffer);
887 CS_RETCODE cs_manage_convert(CS_CONTEXT * ctx, CS_INT action, CS_INT srctype, CS_CHAR * srcname, CS_INT srcnamelen, CS_INT desttype,
888  CS_CHAR * destname, CS_INT destnamelen, CS_INT * conv_multiplier, CS_CONV_FUNC * func);
889 CS_RETCODE cs_objects(CS_CONTEXT * ctx, CS_INT action, CS_OBJNAME * objname, CS_OBJDATA * objdata);
890 CS_RETCODE cs_set_convert(CS_CONTEXT * ctx, CS_INT action, CS_INT srctype, CS_INT desttype, CS_CONV_FUNC * func);
891 CS_RETCODE cs_setnull(CS_CONTEXT * ctx, CS_DATAFMT * datafmt, CS_VOID * buffer, CS_INT buflen);
892 CS_RETCODE cs_strcmp(CS_CONTEXT * ctx, CS_LOCALE * locale, CS_INT type, CS_CHAR * str1, CS_INT len1, CS_CHAR * str2, CS_INT len2,
893  CS_INT * result);
894 CS_RETCODE cs_time(CS_CONTEXT * ctx, CS_LOCALE * locale, CS_VOID * buffer, CS_INT buflen, CS_INT * outlen, CS_DATEREC * daterec);
895 CS_RETCODE cs_will_convert(CS_CONTEXT * ctx, CS_INT srctype, CS_INT desttype, CS_BOOL * result);
896 
897 const char * cs_prretcode(int retcode);
898 
899 #ifdef __cplusplus
900 #if 0
901 {
902 #endif
903 }
904 #endif
905 
906 #endif
Definition: cspublic.h:812
Definition: ctlib.h:134
Definition: cstypes.h:118
Definition: ctlib.h:319
Definition: cstypes.h:167
Definition: cspublic.h:792
Definition: ctlib.h:187
Definition: cstypes.h:199
Definition: ctlib.h:310
Definition: ctlib.h:283
Definition: cstypes.h:185