FreeTDS API
Loading...
Searching...
No Matches
ctlib.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 _ctlib_h_
21#define _ctlib_h_
22
23#include <freetds/tds.h>
24#include <freetds/convert.h>
25#include <freetds/utils/string.h>
26
27/*
28 * Internal (not part of the exposed API) prototypes and such.
29 */
30
31#include <freetds/pushvis.h>
32
33#ifdef __cplusplus
34extern "C"
35{
36#if 0
37}
38#endif
39#endif
40
41/*
42 * internal types
43 */
45{
46 short cs_expose_formats;
47};
48
49/* Code changed for error handling */
50/* Code changes starts here - CT_DIAG - 01 */
51
52/* This structure is used in CT_DIAG */
53
55{
56 CS_CLIENTMSG *clientmsg;
57 struct cs_diag_msg_client *next;
58};
59
61{
62 CS_SERVERMSG *servermsg;
63 struct cs_diag_msg_svr *next;
64};
65
66/* Code changes ends here - CT_DIAG - 01 */
67
69{
70 CS_CLIENTMSG *msg;
71 struct cs_diag_msg *next;
72};
73
75{
76 CS_INT date_convert_fmt;
77 CS_INT cs_errhandletype;
78 CS_INT cs_diag_msglimit;
79
80 /* added for storing the maximum messages limit CT_DIAG */
81 /* code changes starts here - CT_DIAG - 02 */
82
83 CS_INT cs_diag_msglimit_client;
84 CS_INT cs_diag_msglimit_server;
85 CS_INT cs_diag_msglimit_total;
86 struct cs_diag_msg_client *clientstore;
87 struct cs_diag_msg_svr *svrstore;
88
89 /* code changes ends here - CT_DIAG - 02 */
90
91 struct cs_diag_msg *msgstore;
92 CS_CSLIBMSG_FUNC _cslibmsg_cb;
93 CS_CLIENTMSG_FUNC _clientmsg_cb;
94 CS_SERVERMSG_FUNC _servermsg_cb;
95 /* code changes start here - CS_CONFIG - 01*/
96 void *userdata;
97 int userdata_len;
98 /* code changes end here - CS_CONFIG - 01*/
99 TDSCONTEXT *tds_ctx;
100 CS_CONFIG config;
103};
104
105/*
106 * internal typedefs
107 */
108typedef struct _ct_colinfo
109{
110 TDS_SMALLINT *indicator;
111}
113
114typedef struct _cs_dynamic CS_DYNAMIC;
115
117{
118 CS_CONTEXT *ctx;
121 CS_CLIENTMSG_FUNC _clientmsg_cb;
122 CS_SERVERMSG_FUNC _servermsg_cb;
123 void *userdata;
124 int userdata_len;
125 CS_LOCALE *locale;
126 CS_COMMAND *cmds;
127 CS_DYNAMIC *dynlist;
128 char *server_addr;
129 bool network_auth;
130};
131
132/*
133 * Formerly CSREMOTE_PROC_PARAM, this structure can be used in other
134 * places, too.
135 */
136
137typedef struct _cs_param
138{
139 struct _cs_param *next;
140 char *name;
141 int status;
142 int datatype;
143 CS_INT maxlen;
144 CS_INT scale;
145 CS_INT precision;
146 CS_INT *datalen;
147 CS_SMALLINT *ind;
148 CS_BYTE *value;
149 int param_by_value;
150 CS_INT datalen_value;
151 CS_SMALLINT indicator_value;
152} CS_PARAM;
153
154/*
155 * Code added for RPC functionality - SUHA
156 * RPC Code changes starts here
157 */
158
160
161typedef struct _csremote_proc
162{
163 char *name;
164 CS_SMALLINT options;
165 CSREMOTE_PROC_PARAM *param_list;
167
168/*
169 * Structure CS_COMMAND changed for RPC functionality -SUHA
170 * Added CSREMOTE_PROC *rpc to CS_COMMAND structure
171 */
172
174
176{
177 struct _cs_dynamic *next;
178 char *id;
179 char *stmt;
180 CS_DYNAMIC_PARAM *param_list;
181 TDSDYNAMIC *tdsdyn;
182};
183
184/* specific FreeTDS commands */
185#define CS_DYNAMIC_CMD 160
186#define CS_CUR_CMD 161
187
188/* values for cs_command.results_state */
189
190#define _CS_RES_NONE -1
191#define _CS_RES_INIT 0
192#define _CS_RES_RESULTSET_EMPTY 1
193#define _CS_RES_RESULTSET_ROWS 2
194#define _CS_RES_STATUS 3
195#define _CS_RES_CMD_DONE 4
196#define _CS_RES_CMD_SUCCEED 5
197#define _CS_RES_END_RESULTS 6
198#define _CS_RES_DESCRIBE_RESULT 7
199
200/* values for cs_command.command_state */
201
202#define _CS_COMMAND_IDLE 0
203#define _CS_COMMAND_BUILDING 1
204#define _CS_COMMAND_READY 2
205#define _CS_COMMAND_SENT 3
206
207/* values for cs_command.cancel_state */
208#define _CS_CANCEL_NOCANCEL 0
209#define _CS_CANCEL_PENDING 1
210
212{
213 struct _cs_command *next;
214 CS_INT command_state;
215 CS_INT results_state;
216 CS_INT cancel_state;
217 CS_INT cursor_state;
218 CS_CONNECTION *con;
219 CS_INT command_type;
220 CS_CHAR *query;
221 short dynamic_cmd;
222 CS_DYNAMIC *dyn;
223 int row_prefetched;
224 int curr_result_type;
225 int bind_count;
226 int get_data_item;
227 int get_data_bytes_returned;
228 CS_IODESC *iodesc;
229 CS_INT send_data_started;
230 CSREMOTE_PROC *rpc;
231 CS_PARAM *input_params;
232 CS_INT client_cursor_id;
233 TDSCURSOR *cursor;
234 void *userdata;
235 int userdata_len;
236};
237
239{
240 TDSBCPINFO bcpinfo;
241};
242
243
244#define _CS_ERRHAND_INLINE 1
245#define _CS_ERRHAND_CB 2
246
248{
249 char *language;
250 char *charset;
251 char *time;
252 char *collate;
253};
254
255/* internal defines for cursor processing */
256
257#define _CS_CURS_TYPE_UNACTIONED 0
258#define _CS_CURS_TYPE_REQUESTED 1
259#define _CS_CURS_TYPE_SENT 2
260
261/*
262 * internal prototypes
263 */
264TDSRET _ct_handle_server_message(const TDSCONTEXT * ctxptr, TDSSOCKET * tdsptr, TDSMESSAGE * msgptr);
265int _ct_handle_client_message(const TDSCONTEXT * ctxptr, TDSSOCKET * tdsptr, TDSMESSAGE * msgptr);
266TDS_SERVER_TYPE _ct_get_server_type(TDSSOCKET *tds, int datatype);
267int _ct_bind_data(CS_CONTEXT *ctx, TDSRESULTINFO * resinfo, TDSRESULTINFO *bindinfo, CS_INT offset);
268int _ct_get_client_type(const TDSCOLUMN *col, bool describe);
269void _ctclient_msg(CS_CONNECTION * con, const char *funcname, int layer, int origin, int severity, int number,
270 const char *fmt, ...);
271CS_INT _ct_diag_clearmsg(CS_CONTEXT * context, CS_INT type);
272void _cs_locale_free(CS_LOCALE *locale);
273CS_LOCALE *_cs_locale_copy(CS_LOCALE *orig);
274int _cs_locale_copy_inplace(CS_LOCALE *new_locale, CS_LOCALE *orig);
275
276int _cs_convert_not_client(CS_CONTEXT *ctx, const TDSCOLUMN *curcol, CONV_RESULT *convert_buffer, unsigned char **p_src);
277
278#ifdef __cplusplus
279#if 0
280{
281#endif
282}
283#endif
284
285#include <freetds/popvis.h>
286
287#endif
Main include file for libtds.
Definition: cstypes.h:97
Definition: cstypes.h:177
Definition: cstypes.h:191
Definition: ctlib.h:45
Definition: ctlib.h:55
Definition: ctlib.h:61
Definition: ctlib.h:69
Definition: ctlib.h:75
int login_timeout
not used unless positive
Definition: ctlib.h:101
int query_timeout
not used unless positive
Definition: ctlib.h:102
Definition: ctlib.h:109
Definition: ctlib.h:117
Definition: ctlib.h:138
Definition: ctlib.h:162
Definition: ctlib.h:176
Definition: ctlib.h:212
Definition: ctlib.h:239
Definition: ctlib.h:248
Definition: convert.h:34
Definition: tds.h:517
Metadata about columns in regular and compute rows.
Definition: tds.h:689
Hold information for any results.
Definition: tds.h:769
Definition: tds.h:876
Holds informations about a cursor.
Definition: tds.h:937
Holds information for a dynamic (also called prepared) query.
Definition: tds.h:977
Definition: tds.h:1029
Information for a server connection.
Definition: tds.h:1163
Definition: tds.h:1661