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