00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef _dblib_h_
00021 #define _dblib_h_
00022
00023 #ifdef __cplusplus
00024 extern "C"
00025 {
00026 #if 0
00027 }
00028 #endif
00029 #endif
00030
00031 static const char rcsid_dblib_h[] = "$Id: dblib.h,v 1.21.2.1 2004/12/01 03:52:47 jklowden Exp $";
00032 static const void *const no_unused_dblib_h_warn[] = { rcsid_dblib_h, no_unused_dblib_h_warn };
00033
00034 enum {
00035 _DB_RES_INIT = 0
00036 , _DB_RES_RESULTSET_EMPTY = 1
00037 , _DB_RES_RESULTSET_ROWS = 2
00038 , _DB_RES_NEXT_RESULT = 3
00039 , _DB_RES_NO_MORE_RESULTS = 4
00040 };
00041
00042 struct tds_dblib_loginrec
00043 {
00044 TDSLOGIN *tds_login;
00045 };
00046
00047 typedef struct tag_DBPROC_ROWBUF
00048 {
00049 int buffering_on;
00050 int first_in_buf;
00051 int next_row;
00052 int newest;
00053 int oldest;
00054 int elcount;
00055 int element_size;
00056 int rows_in_buf;
00057 void *rows;
00058 } DBPROC_ROWBUF;
00059
00060 typedef struct
00061 {
00062 int host_column;
00063 int datatype;
00064 int prefix_len;
00065 DBINT column_len;
00066 BYTE *terminator;
00067 int term_len;
00068 int tab_colnum;
00069 int column_error;
00070 BCPCOLDATA *bcp_column_data;
00071 } BCP_HOSTCOLINFO;
00072
00073 typedef struct
00074 {
00075 TDS_CHAR *hostfile;
00076 TDS_CHAR *errorfile;
00077 FILE *bcp_errfileptr;
00078 TDS_INT host_colcount;
00079 BCP_HOSTCOLINFO **host_columns;
00080 TDS_INT firstrow;
00081 TDS_INT lastrow;
00082 TDS_INT maxerrs;
00083 TDS_INT batch;
00084 } BCP_HOSTFILEINFO;
00085
00086 typedef struct
00087 {
00088 char *hint;
00089 TDS_CHAR *tablename;
00090 TDS_CHAR *insert_stmt;
00091 TDS_INT direction;
00092 TDS_INT queryout;
00093 TDS_INT identity_insert_on;
00094 TDS_INT xfer_init;
00095 TDS_INT var_cols;
00096 TDS_INT bind_count;
00097 TDSRESULTINFO *bindinfo;
00098 } DB_BCPINFO;
00099
00100
00101 typedef struct _DBREMOTE_PROC_PARAM
00102 {
00103 struct _DBREMOTE_PROC_PARAM *next;
00104
00105 char *name;
00106 BYTE status;
00107 int type;
00108 DBINT maxlen;
00109 DBINT datalen;
00110 BYTE *value;
00111 } DBREMOTE_PROC_PARAM;
00112
00113 typedef struct _DBREMOTE_PROC
00114 {
00115 struct _DBREMOTE_PROC *next;
00116
00117 char *name;
00118 DBSMALLINT options;
00119 DBREMOTE_PROC_PARAM *param_list;
00120 } DBREMOTE_PROC;
00121
00122 struct tds_dblib_dbprocess
00123 {
00124 TDSSOCKET *tds_socket;
00125
00126 TDS_INT row_type;
00127 DBPROC_ROWBUF row_buf;
00128
00129 int noautofree;
00130 int more_results;
00131 int dbresults_state;
00132 int dbresults_retcode;
00133 BYTE *user_data;
00134 unsigned char *dbbuf;
00135 int dbbufsz;
00136 int command_state;
00137 TDS_INT text_size;
00138 TDS_INT text_sent;
00139 DBTYPEINFO typeinfo;
00140 unsigned char avail_flag;
00141 DBOPTION *dbopts;
00142 DBSTRING *dboptcmd;
00143 BCP_HOSTFILEINFO *hostfileinfo;
00144 DB_BCPINFO *bcpinfo;
00145 DBREMOTE_PROC *rpc;
00146 DBUSMALLINT envchange_rcv;
00147 char dbcurdb[DBMAXNAME + 1];
00148 char servcharset[DBMAXNAME + 1];
00149 FILE *ftos;
00150 DB_DBCHKINTR_FUNC dbchkintr;
00151 DB_DBHNDLINTR_FUNC dbhndlintr;
00152
00154 int msdblib;
00155 };
00156
00157 #define DBLIB_INFO_MSG_TYPE 0
00158 #define DBLIB_ERROR_MSG_TYPE 1
00159
00160
00161
00162
00163 int _dblib_handle_info_message(TDSCONTEXT * ctxptr, TDSSOCKET * tdsptr, TDSMESSAGE* msgptr);
00164 int _dblib_handle_err_message(TDSCONTEXT * ctxptr, TDSSOCKET * tdsptr, TDSMESSAGE* msgptr);
00165 int _dblib_client_msg(DBPROCESS * dbproc, int dberr, int severity, const char *dberrstr);
00166 void _dblib_setTDS_version(TDSLOGIN * tds_login, DBINT version);
00167
00168 DBINT _convert_char(int srctype, BYTE * src, int destype, BYTE * dest, DBINT destlen);
00169 DBINT _convert_intn(int srctype, BYTE * src, int destype, BYTE * dest, DBINT destlen);
00170
00171 RETCODE _bcp_clear_storage(DBPROCESS * dbproc);
00172 RETCODE _bcp_get_term_var(BYTE * dataptr, BYTE * term, int term_len);
00173 RETCODE _bcp_get_prog_data(DBPROCESS * dbproc);
00174 int _bcp_readfmt_colinfo(DBPROCESS * dbproc, char *buf, BCP_HOSTCOLINFO * ci);
00175 RETCODE _bcp_read_hostfile(DBPROCESS * dbproc, FILE * hostfile, FILE * errfile, int *row_error);
00176
00177 extern MHANDLEFUNC _dblib_msg_handler;
00178 extern EHANDLEFUNC _dblib_err_handler;
00179
00180 #ifdef __cplusplus
00181 #if 0
00182 {
00183 #endif
00184 }
00185 #endif
00186
00187 #endif