FreeTDS API
Loading...
Searching...
No Matches
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)
28extern "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 */
69typedef CS_RETCODE(*CS_CSLIBMSG_FUNC) (CS_CONTEXT *, CS_CLIENTMSG *);
70typedef CS_RETCODE(*CS_CLIENTMSG_FUNC) (CS_CONTEXT *, CS_CONNECTION *, CS_CLIENTMSG *);
71typedef CS_RETCODE(*CS_SERVERMSG_FUNC) (CS_CONTEXT *, CS_CONNECTION *, CS_SERVERMSG *);
72typedef 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
83typedef 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 */
178enum
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 */
278enum
279{
280 CS_ADD = 1,
281 CS_SUB,
282 CS_MULT,
283 CS_DIV
284};
285
286enum
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() */
407enum 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 */
432enum
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};
445
446/* callbacks */
447#define CS_COMPLETION_CB 1
448#define CS_SERVERMSG_CB 2
449#define CS_CLIENTMSG_CB 3
450#define CS_NOTIF_CB 4
451#define CS_ENCRYPT_CB 5
452#define CS_CHALLENGE_CB 6
453#define CS_DS_LOOKUP_CB 7
454#define CS_SECSESSION_CB 8
455#define CS_SIGNAL_CB 100
456#define CS_MESSAGE_CB 9119
457/* FreeTDS extension */
458#define CS_INTERRUPT_CB 9400
459
460/* string types */
461#define CS_NULLTERM -9
462#define CS_WILDCARD -99
463#define CS_NO_LIMIT -9999
464#define CS_UNUSED -99999
465
466/* other */
467#define CS_GET 33
468#define CS_SET 34
469#define CS_CLEAR 35
470#define CS_INIT 36
471#define CS_STATUS 37
472#define CS_MSGLIMIT 38
473#define CS_SUPPORTED 40
474
475#define CS_CMD_DONE 4046
476#define CS_CMD_SUCCEED 4047
477#define CS_CMD_FAIL 4048
478
479/* commands */
480#define CS_LANG_CMD 148
481#define CS_RPC_CMD 149
482#define CS_SEND_DATA_CMD 151
483#define CS_SEND_BULK_CMD 153
484
485#ifdef CS_NO_LARGE_IDENTIFIERS
486#define CS_VERSION_100 112
487#define CS_VERSION_110 1100
488#define CS_VERSION_120 1100
489#define CS_VERSION_125 12500
490#define CS_VERSION_150 15000
491#else
492#define CS_VERSION_100 113
493#define CS_VERSION_110 1101
494#define CS_VERSION_120 CS_VERSION_110
495#define CS_VERSION_125 12501
496#define CS_VERSION_150 15001
497#define CS_VERSION_155 15501
498#define CS_VERSION_157 15701
499#define CS_VERSION_160 16001
500#endif
501
502#define BLK_VERSION_100 CS_VERSION_100
503#define BLK_VERSION_110 CS_VERSION_110
504#define BLK_VERSION_120 CS_VERSION_120
505#define BLK_VERSION_125 CS_VERSION_125
506#define BLK_VERSION_150 CS_VERSION_150
507#ifndef CS_NO_LARGE_IDENTIFIERS
508#define BLK_VERSION_155 CS_VERSION_155
509#define BLK_VERSION_157 CS_VERSION_157
510#define BLK_VERSION_160 CS_VERSION_160
511#endif
512
513#define CS_FORCE_EXIT 300
514#define CS_FORCE_CLOSE 301
515
516#define CS_SYNC_IO 8111
517#define CS_ASYNC_IO 8112
518#define CS_DEFER_IO 8113
519
520#define CS_CANCEL_CURRENT 6000
521#define CS_CANCEL_ALL 6001
522#define CS_CANCEL_ATTN 6002
523
524#define CS_ROW_COUNT 800
525#define CS_CMD_NUMBER 801
526#define CS_NUM_COMPUTES 802
527#define CS_NUMDATA 803
528#define CS_NUMORDERCOLS 805
529#define CS_MSGTYPE 806
530#define CS_BROWSE_INFO 807
531#define CS_TRANS_STATE 808
532
533#define CS_TRAN_UNDEFINED 0
534#define CS_TRAN_IN_PROGRESS 1
535#define CS_TRAN_COMPLETED 2
536#define CS_TRAN_FAIL 3
537#define CS_TRAN_STMT_FAIL 4
538
539#define CS_COMP_OP 5350
540#define CS_COMP_ID 5351
541#define CS_COMP_COLID 5352
542#define CS_COMP_BYLIST 5353
543#define CS_BYLIST_LEN 5354
544
545#define CS_NO_COUNT -1
546
547#define CS_OP_SUM 5370
548#define CS_OP_AVG 5371
549#define CS_OP_COUNT 5372
550#define CS_OP_MIN 5373
551#define CS_OP_MAX 5374
552
553#define CS_CAP_REQUEST 1
554#define CS_CAP_RESPONSE 2
555
556#define CS_PREPARE 717
557#define CS_EXECUTE 718
558#define CS_DESCRIBE_INPUT 720
559#define CS_DESCRIBE_OUTPUT 721
560
561#define CS_DEALLOC 711
562
563#define CS_LC_ALL 7
564#define CS_SYB_LANG 8
565#define CS_SYB_CHARSET 9
566#define CS_SYB_SORTORDER 10
567#define CS_SYB_COLLATE CS_SYB_SORTORDER
568#define CS_SYB_LANG_CHARSET 11
569
570#define CS_BLK_IN 1
571#define CS_BLK_OUT 2
572
573#define CS_BLK_BATCH 1
574#define CS_BLK_ALL 2
575#define CS_BLK_CANCEL 3
576
577/* to do support these */
578
579#define CS_BLK_ARRAY_MAXLEN 0x1000
580#define CS_DEF_PREC 18
581
582/* Error Severities */
583#define CS_SV_INFORM TDS_STATIC_CAST(CS_INT, 0)
584#define CS_SV_API_FAIL TDS_STATIC_CAST(CS_INT, 1)
585#define CS_SV_RETRY_FAIL TDS_STATIC_CAST(CS_INT, 2)
586#define CS_SV_RESOURCE_FAIL TDS_STATIC_CAST(CS_INT, 3)
587#define CS_SV_CONFIG_FAIL TDS_STATIC_CAST(CS_INT, 4)
588#define CS_SV_COMM_FAIL TDS_STATIC_CAST(CS_INT, 5)
589#define CS_SV_INTERNAL_FAIL TDS_STATIC_CAST(CS_INT, 6)
590#define CS_SV_FATAL TDS_STATIC_CAST(CS_INT, 7)
591
592/* result_types */
593#define CS_ROW_RESULT 4040
594#define CS_CURSOR_RESULT 4041
595#define CS_PARAM_RESULT 4042
596#define CS_STATUS_RESULT 4043
597#define CS_MSG_RESULT 4044
598#define CS_COMPUTE_RESULT 4045
599#define CS_ROWFMT_RESULT 4049
600#define CS_COMPUTEFMT_RESULT 4050
601#define CS_DESCRIBE_RESULT 4051
602
603/* bind types */
604#define CS_ILLEGAL_TYPE TDS_STATIC_CAST(CS_INT, -1)
605#define CS_CHAR_TYPE TDS_STATIC_CAST(CS_INT, 0)
606#define CS_BINARY_TYPE TDS_STATIC_CAST(CS_INT, 1)
607#define CS_LONGCHAR_TYPE TDS_STATIC_CAST(CS_INT, 2)
608#define CS_LONGBINARY_TYPE TDS_STATIC_CAST(CS_INT, 3)
609#define CS_TEXT_TYPE TDS_STATIC_CAST(CS_INT, 4)
610#define CS_IMAGE_TYPE TDS_STATIC_CAST(CS_INT, 5)
611#define CS_TINYINT_TYPE TDS_STATIC_CAST(CS_INT, 6)
612#define CS_SMALLINT_TYPE TDS_STATIC_CAST(CS_INT, 7)
613#define CS_INT_TYPE TDS_STATIC_CAST(CS_INT, 8)
614#define CS_REAL_TYPE TDS_STATIC_CAST(CS_INT, 9)
615#define CS_FLOAT_TYPE TDS_STATIC_CAST(CS_INT, 10)
616#define CS_BIT_TYPE TDS_STATIC_CAST(CS_INT, 11)
617#define CS_DATETIME_TYPE TDS_STATIC_CAST(CS_INT, 12)
618#define CS_DATETIME4_TYPE TDS_STATIC_CAST(CS_INT, 13)
619#define CS_MONEY_TYPE TDS_STATIC_CAST(CS_INT, 14)
620#define CS_MONEY4_TYPE TDS_STATIC_CAST(CS_INT, 15)
621#define CS_NUMERIC_TYPE TDS_STATIC_CAST(CS_INT, 16)
622#define CS_DECIMAL_TYPE TDS_STATIC_CAST(CS_INT, 17)
623#define CS_VARCHAR_TYPE TDS_STATIC_CAST(CS_INT, 18)
624#define CS_VARBINARY_TYPE TDS_STATIC_CAST(CS_INT, 19)
625#define CS_LONG_TYPE TDS_STATIC_CAST(CS_INT, 20)
626#define CS_SENSITIVITY_TYPE TDS_STATIC_CAST(CS_INT, 21)
627#define CS_BOUNDARY_TYPE TDS_STATIC_CAST(CS_INT, 22)
628#define CS_VOID_TYPE TDS_STATIC_CAST(CS_INT, 23)
629#define CS_USHORT_TYPE TDS_STATIC_CAST(CS_INT, 24)
630#define CS_UNICHAR_TYPE TDS_STATIC_CAST(CS_INT, 25)
631#define CS_BLOB_TYPE TDS_STATIC_CAST(CS_INT, 26)
632#define CS_DATE_TYPE TDS_STATIC_CAST(CS_INT, 27)
633#define CS_TIME_TYPE TDS_STATIC_CAST(CS_INT, 28)
634#define CS_UNITEXT_TYPE TDS_STATIC_CAST(CS_INT, 29)
635#define CS_BIGINT_TYPE TDS_STATIC_CAST(CS_INT, 30)
636#define CS_USMALLINT_TYPE TDS_STATIC_CAST(CS_INT, 31)
637#define CS_UINT_TYPE TDS_STATIC_CAST(CS_INT, 32)
638#define CS_UBIGINT_TYPE TDS_STATIC_CAST(CS_INT, 33)
639#define CS_XML_TYPE TDS_STATIC_CAST(CS_INT, 34)
640#define CS_BIGDATETIME_TYPE TDS_STATIC_CAST(CS_INT, 35)
641#define CS_BIGTIME_TYPE TDS_STATIC_CAST(CS_INT, 36)
642#define CS_TEXTLOCATOR_TYPE TDS_STATIC_CAST(CS_INT, 37)
643#define CS_IMAGELOCATOR_TYPE TDS_STATIC_CAST(CS_INT, 38)
644#define CS_UNITEXTLOCATOR_TYPE TDS_STATIC_CAST(CS_INT, 39)
645#define CS_UNIQUE_TYPE TDS_STATIC_CAST(CS_INT, 40)
646
647#define CS_MIN_SYBTYPE CS_CHAR_TYPE
648#define CS_MAX_SYBTYPE CS_UNIQUE_TYPE
649
650#define CS_USER_TYPE TDS_STATIC_CAST(CS_INT, 100)
651/* cs_dt_info type values */
652enum
653{
654 CS_MONTH = 7340,
655#define CS_MONTH CS_MONTH
656 CS_SHORTMONTH,
657#define CS_SHORTMONTH CS_SHORTMONTH
658 CS_DAYNAME,
659#define CS_DAYNAME CS_DAYNAME
660 CS_DATEORDER,
661#define CS_DATEORDER CS_DATEORDER
662 CS_12HOUR,
663#define CS_12HOUR CS_12HOUR
664 CS_DT_CONVFMT
665#define CS_DT_CONVFMT CS_DT_CONVFMT
666};
667
668/* DT_CONVFMT types */
669enum
670{
671 CS_DATES_SHORT = 0,
672#define CS_DATES_SHORT CS_DATES_SHORT
673 CS_DATES_MDY1,
674#define CS_DATES_MDY1 CS_DATES_MDY1
675 CS_DATES_YMD1,
676#define CS_DATES_YMD1 CS_DATES_YMD1
677 CS_DATES_DMY1,
678#define CS_DATES_DMY1 CS_DATES_DMY1
679 CS_DATES_DMY2,
680#define CS_DATES_DMY2 CS_DATES_DMY2
681 CS_DATES_DMY3,
682#define CS_DATES_DMY3 CS_DATES_DMY3
683 CS_DATES_DMY4,
684#define CS_DATES_DMY4 CS_DATES_DMY4
685 CS_DATES_MDY2,
686#define CS_DATES_MDY2 CS_DATES_MDY2
687 CS_DATES_HMS,
688#define CS_DATES_HMS CS_DATES_HMS
689 CS_DATES_LONG,
690#define CS_DATES_LONG CS_DATES_LONG
691 CS_DATES_MDY3,
692#define CS_DATES_MDY3 CS_DATES_MDY3
693 CS_DATES_YMD2,
694#define CS_DATES_YMD2 CS_DATES_YMD2
695 CS_DATES_YMD3,
696#define CS_DATES_YMD3 CS_DATES_YMD3
697 CS_DATES_YDM1,
698#define CS_DATES_YDM1 CS_DATES_YDM1
699 CS_DATES_MYD1,
700#define CS_DATES_MYD1 CS_DATES_MYD1
701 CS_DATES_DYM1,
702#define CS_DATES_DYM1 CS_DATES_DYM1
703 CS_DATES_MDY1_YYYY = 101,
704#define CS_DATES_MDY1_YYYY CS_DATES_MDY1_YYYY
705 CS_DATES_YMD1_YYYY,
706#define CS_DATES_YMD1_YYYY CS_DATES_YMD1_YYYY
707 CS_DATES_DMY1_YYYY,
708#define CS_DATES_DMY1_YYYY CS_DATES_DMY1_YYYY
709 CS_DATES_DMY2_YYYY,
710#define CS_DATES_DMY2_YYYY CS_DATES_DMY2_YYYY
711 CS_DATES_DMY3_YYYY,
712#define CS_DATES_DMY3_YYYY CS_DATES_DMY3_YYYY
713 CS_DATES_DMY4_YYYY,
714#define CS_DATES_DMY4_YYYY CS_DATES_DMY4_YYYY
715 CS_DATES_MDY2_YYYY,
716#define CS_DATES_MDY2_YYYY CS_DATES_MDY2_YYYY
717 CS_DATES_MDY3_YYYY = 110,
718#define CS_DATES_MDY3_YYYY CS_DATES_MDY3_YYYY
719 CS_DATES_YMD2_YYYY,
720#define CS_DATES_YMD2_YYYY CS_DATES_YMD2_YYYY
721 CS_DATES_YMD3_YYYY
722#define CS_DATES_YMD3_YYYY CS_DATES_YMD3_YYYY
723};
724
725typedef CS_RETCODE(*CS_CONV_FUNC) (CS_CONTEXT * context, CS_DATAFMT * srcfmt, CS_VOID * src, CS_DATAFMT * detsfmt, CS_VOID * dest,
726 CS_INT * destlen);
727
728typedef struct _cs_objname
729{
730 CS_BOOL thinkexists;
731 CS_INT object_type;
732#ifdef CS_NO_LARGE_IDENTIFIERS
733 CS_CHAR last_name[CS_MAX_NAME];
734 CS_INT lnlen;
735 CS_CHAR first_name[CS_MAX_NAME];
736#else
737 CS_CHAR last_name[CS_MAX_CHAR];
738 CS_INT lnlen;
739 CS_CHAR first_name[CS_MAX_CHAR];
740#endif
741 CS_INT fnlen;
742 CS_VOID *scope;
743 CS_INT scopelen;
744 CS_VOID *thread;
745 CS_INT threadlen;
746} CS_OBJNAME;
747
748typedef struct _cs_objdata
749{
750 CS_BOOL actuallyexists;
751 CS_CONNECTION *connection;
752 CS_COMMAND *command;
753 CS_VOID *buffer;
754 CS_INT buflen;
755} CS_OBJDATA;
756
757/* Eventually, these should be in terms of TDS values */
758enum
759{
760 CS_OPT_MONDAY = 1,
761 CS_OPT_TUESDAY,
762 CS_OPT_WEDNESDAY,
763 CS_OPT_THURSDAY,
764 CS_OPT_FRIDAY,
765 CS_OPT_SATURDAY,
766 CS_OPT_SUNDAY
767};
768enum
769{
770 CS_OPT_FMTMDY = 1,
771 CS_OPT_FMTDMY,
772 CS_OPT_FMTYMD,
773 CS_OPT_FMTYDM,
774 CS_OPT_FMTMYD,
775 CS_OPT_FMTDYM
776};
777enum
778{
779 CS_OPT_LEVEL0 = 0,
780 CS_OPT_LEVEL1,
781 CS_OPT_LEVEL2,
782 CS_OPT_LEVEL3
783};
784
785#define CS_FALSE 0
786#define CS_TRUE 1
787
788#define SRV_PROC CS_VOID
789
790/* constants required for ct_diag (not jet implemented) */
791#define CS_CLIENTMSG_TYPE 4700
792#define CS_SERVERMSG_TYPE 4701
793#define CS_ALLMSG_TYPE 4702
794
795/* CS_INTERRUPT_CB return values */
796#define CS_INT_CONTINUE 1
797#define CS_INT_CANCEL 2
798#define CS_INT_TIMEOUT 3
799
800CS_RETCODE cs_convert(CS_CONTEXT * ctx, CS_DATAFMT * srcfmt, CS_VOID * srcdata, CS_DATAFMT * destfmt, CS_VOID * destdata,
801 CS_INT * resultlen);
802CS_RETCODE cs_ctx_alloc(CS_INT version, CS_CONTEXT ** ctx);
803CS_RETCODE cs_ctx_global(CS_INT version, CS_CONTEXT ** ctx);
804CS_RETCODE cs_ctx_drop(CS_CONTEXT * ctx);
805CS_RETCODE cs_config(CS_CONTEXT * ctx, CS_INT action, CS_INT property, CS_VOID * buffer, CS_INT buflen, CS_INT * outlen);
806CS_RETCODE cs_strbuild(CS_CONTEXT * ctx, CS_CHAR * buffer, CS_INT buflen, CS_INT * resultlen, CS_CHAR * text, CS_INT textlen,
807 CS_CHAR * formats, CS_INT formatlen, ...);
808#undef cs_dt_crack
809CS_RETCODE cs_dt_crack(CS_CONTEXT * ctx, CS_INT datetype, CS_VOID * dateval, CS_DATEREC * daterec);
810CS_RETCODE cs_dt_crack_v2(CS_CONTEXT * ctx, CS_INT datetype, CS_VOID * dateval, CS_DATEREC * daterec);
811#define cs_dt_crack cs_dt_crack_v2
812CS_RETCODE cs_loc_alloc(CS_CONTEXT * ctx, CS_LOCALE ** locptr);
813CS_RETCODE cs_loc_drop(CS_CONTEXT * ctx, CS_LOCALE * locale);
814CS_RETCODE cs_locale(CS_CONTEXT * ctx, CS_INT action, CS_LOCALE * locale, CS_INT type, CS_VOID * buffer, CS_INT buflen,
815 CS_INT * outlen);
816CS_RETCODE cs_dt_info(CS_CONTEXT * ctx, CS_INT action, CS_LOCALE * locale, CS_INT type, CS_INT item, CS_VOID * buffer,
817 CS_INT buflen, CS_INT * outlen);
818
819CS_RETCODE cs_calc(CS_CONTEXT * ctx, CS_INT op, CS_INT datatype, CS_VOID * var1, CS_VOID * var2, CS_VOID * dest);
820CS_RETCODE cs_cmp(CS_CONTEXT * ctx, CS_INT datatype, CS_VOID * var1, CS_VOID * var2, CS_INT * result);
821CS_RETCODE cs_conv_mult(CS_CONTEXT * ctx, CS_LOCALE * srcloc, CS_LOCALE * destloc, CS_INT * conv_multiplier);
822CS_RETCODE cs_diag(CS_CONTEXT * ctx, CS_INT operation, CS_INT type, CS_INT idx, CS_VOID * buffer);
823CS_RETCODE cs_manage_convert(CS_CONTEXT * ctx, CS_INT action, CS_INT srctype, CS_CHAR * srcname, CS_INT srcnamelen, CS_INT desttype,
824 CS_CHAR * destname, CS_INT destnamelen, CS_INT * conv_multiplier, CS_CONV_FUNC * func);
825CS_RETCODE cs_objects(CS_CONTEXT * ctx, CS_INT action, CS_OBJNAME * objname, CS_OBJDATA * objdata);
826CS_RETCODE cs_set_convert(CS_CONTEXT * ctx, CS_INT action, CS_INT srctype, CS_INT desttype, CS_CONV_FUNC * func);
827CS_RETCODE cs_setnull(CS_CONTEXT * ctx, CS_DATAFMT * datafmt, CS_VOID * buffer, CS_INT buflen);
828CS_RETCODE cs_strcmp(CS_CONTEXT * ctx, CS_LOCALE * locale, CS_INT type, CS_CHAR * str1, CS_INT len1, CS_CHAR * str2, CS_INT len2,
829 CS_INT * result);
830CS_RETCODE cs_time(CS_CONTEXT * ctx, CS_LOCALE * locale, CS_VOID * buffer, CS_INT buflen, CS_INT * outlen, CS_DATEREC * daterec);
831CS_RETCODE cs_will_convert(CS_CONTEXT * ctx, CS_INT srctype, CS_INT desttype, CS_BOOL * result);
832
833const char * cs_prretcode(int retcode);
834
835#ifdef __cplusplus
836#if 0
837{
838#endif
839}
840#endif
841
842#endif
Definition cspublic.h:729
Definition cspublic.h:749
Definition cstypes.h:119
Definition cstypes.h:168
Definition cstypes.h:186
Definition cstypes.h:200
Definition ctlib.h:135
Definition ctlib.h:188
Definition ctlib.h:284
Definition ctlib.h:311
Definition ctlib.h:320