Main Page   Modules   Compound List   File List   Compound Members   File Members   Related Pages  

dblib.h

00001 /* FreeTDS - Library of routines accessing Sybase and Microsoft databases
00002  * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004  Brian Bruns
00003  *
00004  * This library is free software; you can redistribute it and/or
00005  * modify it under the terms of the GNU Library General Public
00006  * License as published by the Free Software Foundation; either
00007  * version 2 of the License, or (at your option) any later version.
00008  *
00009  * This library is distributed in the hope that it will be useful,
00010  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012  * Library General Public License for more details.
00013  *
00014  * You should have received a copy of the GNU Library General Public
00015  * License along with this library; if not, write to the
00016  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
00017  * Boston, MA 02111-1307, USA.
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;       /* (boolean) is row buffering turned on?     */
00050         int first_in_buf;       /* result set row number of first row in buf */
00051         int next_row;           /* result set row number of next row         */
00052         int newest;             /* index of most recent item in queue        */
00053         int oldest;             /* index of least recent item in queue       */
00054         int elcount;            /* max element count that buffer can hold    */
00055         int element_size;       /* size in bytes of each element in queue    */
00056         int rows_in_buf;        /* # of rows currently in buffer             */
00057         void *rows;             /* pointer to the row storage                */
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 /* linked list of rpc parameters */
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;       /* boolean.  Are we expecting results? */
00131         int dbresults_state;
00132         int dbresults_retcode;
00133         BYTE *user_data;        /* see dbsetuserdata() and dbgetuserdata() */
00134         unsigned char *dbbuf;   /* is dynamic!                   */
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 ** internal prototypes
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

Generated on Thu Dec 9 08:05:25 2004 for FreeTDS API by doxygen1.3