NCBI C++ ToolKit
dblib.h
Go to the documentation of this file.

Go to the SVN repository for this file.

1 /* FreeTDS - Library of routines accessing Sybase and Microsoft databases
2  * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 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 _dblib_h_
21 #define _dblib_h_
22 
23 #include <freetds/pushvis.h>
24 
25 #ifdef __cplusplus
26 extern "C"
27 {
28 #if 0
29 }
30 #endif
31 #endif
32 
33 typedef enum
34 {
42 
43 struct tds_dblib_loginrec
44 {
47 };
48 
49 struct dblib_buffer_row;
50 
51 typedef struct
52 {
53  int received; /* how many rows have been received for this result set */
54  int head; /* queue insertion point */
55  int tail; /* oldest item in queue */
56  int current; /* dbnextrow() reads this row */
57  int capacity; /* how many elements the queue can hold */
58  struct dblib_buffer_row *rows; /* pointer to the row storage */
60 
61 typedef struct
62 {
63  int host_column;
64  TDS_SERVER_TYPE datatype;
65  int prefix_len;
66  DBINT column_len;
68  int term_len;
69  int tab_colnum;
70  int column_error;
72 
73 typedef struct
74 {
75  TDS_CHAR *hostfile;
76  TDS_CHAR *errorfile;
77  FILE *bcp_errfileptr;
78  TDS_INT host_colcount;
79  BCP_HOSTCOLINFO **host_columns;
80  TDS_INT firstrow;
81  TDS_INT lastrow;
82  TDS_INT maxerrs;
83  TDS_INT batch;
85 
86 /* linked list of rpc parameters */
87 
88 typedef struct DBREMOTE_PROC_PARAM
89 {
91 
92  char *name;
99 
100 typedef struct DBREMOTE_PROC
101 {
103 
104  char *name;
108 
109 typedef struct dboption
110 {
111  const char *text;
112  DBSTRING *param;
113  DBBOOL factive;
115 
116 typedef struct
117 {
118  const BYTE *bindval;
119  unsigned int len;
120 } NULLREP;
121 
122 struct tds_dblib_dbprocess
123 {
125 
128 
129  int noautofree;
130  int more_results; /* boolean. Are we expecting results? */
132  int dbresults_retcode;
133  BYTE *user_data; /* see dbsetuserdata() and dbgetuserdata() */
134  unsigned char *dbbuf; /* is dynamic! */
135  int dbbufsz;
136  int command_state;
140  unsigned char avail_flag;
141  DBOPTION *dbopts;
147  char dbcurdb[DBMAXNAME + 1];
148  char servcharset[DBMAXNAME + 1];
149  FILE *ftos;
152 
153  /** boolean use ms behaviour */
154  int msdblib;
155 
156  int ntimeouts;
157 
158  /** default null values **/
160 };
161 
162 enum {
163 #if MSDBLIB
164  dblib_msdblib = 1
165 #else
166  dblib_msdblib = 0
167 #endif
168 };
169 
170 /*
171  * internal prototypes
172  */
173 RETCODE dbgetnull(DBPROCESS *dbproc, int bindtype, int varlen, BYTE* varaddr);
174 void copy_data_to_host_var(DBPROCESS * dbproc, TDS_SERVER_TYPE srctype, const BYTE * src, DBINT srclen,
175  BYTE * dest, DBINT destlen,
176  int bindtype, DBINT *indicator);
177 
178 int dbperror (DBPROCESS *dbproc, DBINT msgno, long errnum, ...);
179 int _dblib_handle_info_message(const TDSCONTEXT * ctxptr, TDSSOCKET * tdsptr, TDSMESSAGE* msgptr);
180 int _dblib_handle_err_message(const TDSCONTEXT * ctxptr, TDSSOCKET * tdsptr, TDSMESSAGE* msgptr);
181 int _dblib_check_and_handle_interrupt(void * vdbproc);
182 
185 
186 DBINT _convert_char(int srctype, BYTE * src, int destype, BYTE * dest, DBINT destlen);
187 DBINT _convert_intn(int srctype, BYTE * src, int destype, BYTE * dest, DBINT destlen);
188 
191 
194 
195 #define CHECK_PARAMETER(x, msg, ret) if (!(x)) { dbperror(dbproc, (msg), 0); return ret; }
196 #define CHECK_NULP(x, func, param_num, ret) if (!(x)) { dbperror(dbproc, SYBENULP, 0, func, (int) param_num); return ret; }
197 #define CHECK_PARAMETER_NOPROC(x, msg) if (!(x)) { dbperror(NULL, (msg), 0); return FAIL; }
198 #define DBPERROR_RETURN(x, msg) if (x) { dbperror(dbproc, (msg), 0); return FAIL; }
199 #define DBPERROR_RETURN3(x, msg, a, b, c) if (x) { dbperror(dbproc, (msg), 0, a, b, c); return FAIL; }
200 #define CHECK_CONN(ret) do { CHECK_PARAMETER(dbproc, SYBENULL, (ret)); \
201  if (IS_TDSDEAD(dbproc->tds_socket)) { dbperror(dbproc, SYBEDDNE, 0); return (ret); } } while(0)
202 
203 
204 #ifdef __cplusplus
205 #if 0
206 {
207 #endif
208 }
209 #endif
210 
211 #include <freetds/popvis.h>
212 
213 #endif
static DBPROCESS * dbproc
Definition: done_handling.c:29
struct tag_DBPROC_ROWBUF DBPROC_ROWBUF
EHANDLEFUNC _dblib_err_handler
Definition: dblib.c:165
@ dblib_msdblib
Definition: dblib.h:164
int dbperror(DBPROCESS *dbproc, DBINT msgno, long errnum,...)
Definition: dblib.c:8039
void _dblib_convert_err(DBPROCESS *dbproc, TDS_INT len)
Definition: dbutil.c:241
void copy_data_to_host_var(DBPROCESS *dbproc, TDS_SERVER_TYPE srctype, const BYTE *src, DBINT srclen, BYTE *dest, DBINT destlen, int bindtype, DBINT *indicator)
Definition: dblib.c:7339
struct _DBREMOTE_PROC DBREMOTE_PROC
struct _DBREMOTE_PROC_PARAM DBREMOTE_PROC_PARAM
struct dboption DBOPTION
DBINT _convert_char(int srctype, BYTE *src, int destype, BYTE *dest, DBINT destlen)
@ _DB_RES_SUCCEED
Definition: dblib.h:39
@ _DB_RES_NO_MORE_RESULTS
Definition: dblib.h:38
@ _DB_RES_NEXT_RESULT
Definition: dblib.h:37
@ _DB_RES_INIT
Definition: dblib.h:34
@ _DB_RES_RESULTSET_EMPTY
Definition: dblib.h:35
@ _DB_RES_RESULTSET_ROWS
Definition: dblib.h:36
void _dblib_setTDS_version(TDSLOGIN *tds_login, DBINT version)
Definition: dbutil.c:225
RETCODE _bcp_get_prog_data(DBPROCESS *dbproc)
MHANDLEFUNC _dblib_msg_handler
Definition: dblib.c:164
DBINT _convert_intn(int srctype, BYTE *src, int destype, BYTE *dest, DBINT destlen)
int _dblib_handle_err_message(const TDSCONTEXT *ctxptr, TDSSOCKET *tdsptr, TDSMESSAGE *msgptr)
Definition: dbutil.c:127
int _dblib_handle_info_message(const TDSCONTEXT *ctxptr, TDSSOCKET *tdsptr, TDSMESSAGE *msgptr)
Definition: dbutil.c:70
RETCODE dbgetnull(DBPROCESS *dbproc, int bindtype, int varlen, BYTE *varaddr)
Definition: dblib.c:543
RETCODE _bcp_clear_storage(DBPROCESS *dbproc)
struct _null_representation NULLREP
TDS_SERVER_TYPE
Definition: proto.h:161
tds_sysdep_int32_type TDS_INT
Definition: tds.h:149
char TDS_CHAR
Definition: tds.h:144
unsigned char DBBOOL
Definition: sybdb.h:250
int STATUS
Definition: sybdb.h:148
Uint2 DBUSMALLINT
Definition: sybdb.h:260
#define DBMAXNAME
Definition: sybdb.h:67
#define MAXBINDTYPES
Definition: sybdb.h:573
int RETCODE
Definition: sybdb.h:121
unsigned char BYTE
Definition: sybdb.h:334
int(* DB_DBCHKINTR_FUNC)(void *dbproc)
Definition: sybdb.h:134
Int2 DBSMALLINT
Definition: sybdb.h:254
int(* EHANDLEFUNC)(DBPROCESS *dbproc, int severity, int dberr, int oserr, char *dberrstr, char *oserrstr)
Definition: sybdb.h:532
int(* DB_DBHNDLINTR_FUNC)(void *dbproc)
Definition: sybdb.h:135
int(* MHANDLEFUNC)(DBPROCESS *dbproc, DBINT msgno, int msgstate, int severity, char *msgtext, char *srvname, char *proc, int line)
Definition: sybdb.h:534
Int4 DBINT
Definition: sybdb.h:255
DB_RESULT_STATE
Definition: dblib.h:34
int _dblib_check_and_handle_interrupt(void *vdbproc)
check interrupts for libtds.
Definition: dbutil.c:192
int len
static int version
Definition: mdb_load.c:29
static char terminator
Definition: njn_ioutil.cpp:56
int tail
Definition: dblib.h:55
int head
Definition: dblib.h:54
int current
Definition: dblib.h:56
int received
Definition: dblib.h:53
int capacity
Definition: dblib.h:57
struct dblib_buffer_row * rows
Definition: dblib.h:58
TDS_SERVER_TYPE type
Definition: dblib.h:94
struct DBREMOTE_PROC_PARAM * next
Definition: dblib.h:90
BYTE * value
Definition: dblib.h:97
struct DBREMOTE_PROC * next
Definition: dblib.h:102
DBREMOTE_PROC_PARAM * param_list
Definition: dblib.h:106
char * name
Definition: dblib.h:104
DBSMALLINT options
Definition: dblib.h:105
Definition: dblib.h:117
const BYTE * bindval
Definition: dblib.h:118
unsigned int len
Definition: dblib.h:119
const char * text
Definition: dblib.h:109
DBSTRING * param
Definition: dblib.h:110
DBBOOL factive
Definition: dblib.h:111
NULLREP nullreps[MAXBINDTYPES]
default null values
Definition: dblib.h:157
TDSBCPINFO * bcpinfo
Definition: dblib.h:142
char dbcurdb[DBMAXNAME+1]
Definition: dblib.h:145
TDS_INT text_size
Definition: dblib.h:135
STATUS row_type
Definition: dblib.h:124
DBSTRING * dboptcmd
Definition: dblib.h:140
DBPROC_ROWBUF row_buf
Definition: dblib.h:125
BCP_HOSTFILEINFO * hostfileinfo
Definition: dblib.h:141
DBTYPEINFO typeinfo
Definition: dblib.h:137
DB_DBCHKINTR_FUNC chkintr
Definition: dblib.h:148
TDSSOCKET * tds_socket
Definition: dblib.h:122
DB_DBHNDLINTR_FUNC hndlintr
Definition: dblib.h:149
char servcharset[DBMAXNAME+1]
Definition: dblib.h:146
int dbresults_retcode
Definition: dblib.h:130
unsigned char * dbbuf
Definition: dblib.h:132
DBREMOTE_PROC * rpc
Definition: dblib.h:143
DB_RESULT_STATE dbresults_state
Definition: dblib.h:129
DBUSMALLINT envchange_rcv
Definition: dblib.h:144
TDS_INT text_sent
Definition: dblib.h:136
BYTE * user_data
Definition: dblib.h:131
int msdblib
boolean use ms behaviour
Definition: dblib.h:152
unsigned char avail_flag
Definition: dblib.h:138
DBOPTION * dbopts
Definition: dblib.h:139
TDSLOGIN * tds_login
Definition: dblib.h:44
bool network_auth
Definition: dblib.h:46
Definition: tds.h:584
Information for a server connection.
Definition: tds.h:1211
Modified on Sat Jun 08 14:24:09 2024 by modify_doxy.py rev. 669887