src/dblib/dblib.c File Reference

Main implementation file for db-lib. More...

#include <time.h>
#include <stdarg.h>
#include <assert.h>
#include <stdio.h>
#include "tds.h"
#include "tdsthread.h"
#include "sybfront.h"
#include "sybdb.h"
#include "syberror.h"
#include "dblib.h"
#include "tdsconvert.h"
#include "replacements.h"
#include "buffering.h"

Classes

struct  _dblib_error_message
struct  dblib_context

Defines

#define _DB_GETCOLINFO(fail)
#define SYBDBLIB   1

Typedefs

typedef struct
_dblib_error_message 
DBLIB_ERROR_MESSAGE
typedef struct
dblib_context 
DBLIBCONTEXT

Functions

static int _db_get_server_type (int bindtype)
int _dblib_client_msg (DBPROCESS *dbproc, int dberr, int severity, const char *dberrstr)
 

For internal use only.


static int _dbnullable (DBPROCESS *dbproc, int column)
static char * _dbprdate (char *timestr)
static int _get_printable_size (TDSCOLUMN *colinfo)
static void _set_null_value (BYTE *varaddr, int datatype, int maxlen)
static void copy_data_to_host_var (DBPROCESS *, int, const BYTE *, DBINT, int, BYTE *, DBINT, int, DBSMALLINT *)
BYTE * dbadata (DBPROCESS *dbproc, int computeid, int column)
DBINT dbadlen (DBPROCESS *dbproc, int computeid, int column)
RETCODE dbaltbind (DBPROCESS *dbproc, int computeid, int column, int vartype, DBINT varlen, BYTE *varaddr)
int dbaltcolid (DBPROCESS *dbproc, int computeid, int column)
DBINT dbaltlen (DBPROCESS *dbproc, int computeid, int column)
int dbaltop (DBPROCESS *dbproc, int computeid, int column)
int dbalttype (DBPROCESS *dbproc, int computeid, int column)
DBINT dbaltutype (DBPROCESS *dbproc, int computeid, int column)
RETCODE dbanullbind (DBPROCESS *dbproc, int computeid, int column, DBINT *indicator)
RETCODE dbbind (DBPROCESS *dbproc, int column, int vartype, DBINT varlen, BYTE *varaddr)
BYTE * dbbylist (DBPROCESS *dbproc, int computeid, int *size)
RETCODE dbcancel (DBPROCESS *dbproc)
RETCODE dbcanquery (DBPROCESS *dbproc)
char * dbchange (DBPROCESS *dbproc)
void dbclose (DBPROCESS *dbproc)
void dbclrbuf (DBPROCESS *dbproc, DBINT n)
RETCODE dbclropt (DBPROCESS *dbproc, int option, char *param)
RETCODE dbcmd (DBPROCESS *dbproc, const char *cmdstring)
RETCODE dbcmdrow (DBPROCESS *dbproc)
 

For internal use only.


DBINT dbcolinfo (DBPROCESS *dbproc, CI_TYPE type, DBINT column, DBINT computeid, DBCOL *pdbcol)
DBINT dbcollen (DBPROCESS *dbproc, int column)
char * dbcolname (DBPROCESS *dbproc, int column)
char * dbcolsource (DBPROCESS *dbproc, int column)
int dbcoltype (DBPROCESS *dbproc, int column)
DBTYPEINFO * dbcoltypeinfo (DBPROCESS *dbproc, int column)
int dbcolutype (DBPROCESS *dbproc, int column)
DBINT dbconvert (DBPROCESS *dbproc, int srctype, const BYTE *src, DBINT srclen, int desttype, BYTE *dest, DBINT destlen)
DBINT dbconvert_ps (DBPROCESS *dbproc, int srctype, BYTE *src, DBINT srclen, int desttype, BYTE *dest, DBINT destlen, DBTYPEINFO *typeinfo)
DBINT dbcount (DBPROCESS *dbproc)
 

For internal use only.


int dbcurcmd (DBPROCESS *dbproc)
 

For internal use only.


DBINT dbcurrow (DBPROCESS *dbproc)
 

For internal use only.


BYTE * dbdata (DBPROCESS *dbproc, int column)
RETCODE dbdatecmp (DBPROCESS *dbproc, DBDATETIME *d1, DBDATETIME *d2)
RETCODE dbdatecrack (DBPROCESS *dbproc, DBDATEREC *di, DBDATETIME *datetime)
DBINT dbdatlen (DBPROCESS *dbproc, int column)
DBBOOL dbdead (DBPROCESS *dbproc)
 

For internal use only.


EHANDLEFUNC dberrhandle (EHANDLEFUNC handler)
void dbexit ()
RETCODE dbfcmd (DBPROCESS *dbproc, const char *fmt,...)
DBINT dbfirstrow (DBPROCESS *dbproc)
 

For internal use only.


void dbfreebuf (DBPROCESS *dbproc)
char * dbgetchar (DBPROCESS *dbproc, int pos)
int dbgetmaxprocs (void)
int dbgetpacket (DBPROCESS *dbproc)
RETCODE dbgetrow (DBPROCESS *dbproc, DBINT row)
BYTE * dbgetuserdata (DBPROCESS *dbproc)
DBBOOL dbhasretstat (DBPROCESS *dbproc)
int dbiordesc (DBPROCESS *dbproc)
 

For internal use only.


int dbiowdesc (DBPROCESS *dbproc)
 

For internal use only.


DBBOOL dbisavail (DBPROCESS *dbproc)
DBBOOL dbisopt (DBPROCESS *dbproc, int option, char *param)
DBINT dblastrow (DBPROCESS *dbproc)
 

For internal use only.


RETCODE dbmny4add (DBPROCESS *dbproc, DBMONEY4 *m1, DBMONEY4 *m2, DBMONEY4 *sum)
int dbmny4cmp (DBPROCESS *dbproc, DBMONEY4 *m1, DBMONEY4 *m2)
RETCODE dbmny4copy (DBPROCESS *dbproc, DBMONEY4 *src, DBMONEY4 *dest)
RETCODE dbmny4divide (DBPROCESS *dbproc, DBMONEY4 *m1, DBMONEY4 *m2, DBMONEY4 *quotient)
RETCODE dbmny4minus (DBPROCESS *dbproc, DBMONEY4 *src, DBMONEY4 *dest)
RETCODE dbmny4mul (DBPROCESS *dbproc, DBMONEY4 *m1, DBMONEY4 *m2, DBMONEY4 *prod)
RETCODE dbmny4sub (DBPROCESS *dbproc, DBMONEY4 *m1, DBMONEY4 *m2, DBMONEY4 *diff)
RETCODE dbmny4zero (DBPROCESS *dbproc, DBMONEY4 *dest)
RETCODE dbmnyadd (DBPROCESS *dbproc, DBMONEY *m1, DBMONEY *m2, DBMONEY *sum)
int dbmnycmp (DBPROCESS *dbproc, DBMONEY *m1, DBMONEY *m2)
RETCODE dbmnycopy (DBPROCESS *dbproc, DBMONEY *src, DBMONEY *dest)
RETCODE dbmnydec (DBPROCESS *dbproc, DBMONEY *amount)
RETCODE dbmnydivide (DBPROCESS *dbproc, DBMONEY *m1, DBMONEY *m2, DBMONEY *quotient)
RETCODE dbmnydown (DBPROCESS *dbproc, DBMONEY *amount, int divisor, int *remainder)
RETCODE dbmnyinc (DBPROCESS *dbproc, DBMONEY *amount)
RETCODE dbmnyinit (DBPROCESS *dbproc, DBMONEY *amount, int trim, DBBOOL *negative)
RETCODE dbmnymaxneg (DBPROCESS *dbproc, DBMONEY *amount)
RETCODE dbmnymaxpos (DBPROCESS *dbproc, DBMONEY *amount)
RETCODE dbmnyminus (DBPROCESS *dbproc, DBMONEY *src, DBMONEY *dest)
RETCODE dbmnymul (DBPROCESS *dbproc, DBMONEY *m1, DBMONEY *m2, DBMONEY *prod)
RETCODE dbmnyndigit (DBPROCESS *dbproc, DBMONEY *mnyptr, DBCHAR *digit, DBBOOL *zero)
RETCODE dbmnyscale (DBPROCESS *dbproc, DBMONEY *amount, int multiplier, int addend)
RETCODE dbmnysub (DBPROCESS *dbproc, DBMONEY *m1, DBMONEY *m2, DBMONEY *difference)
RETCODE dbmnyzero (DBPROCESS *dbproc, DBMONEY *dest)
const char * dbmonthname (DBPROCESS *dbproc, char *language, int monthnum, DBBOOL shortform)
RETCODE dbmorecmds (DBPROCESS *dbproc)
RETCODE dbmoretext (DBPROCESS *dbproc, DBINT size, BYTE *text)
MHANDLEFUNC dbmsghandle (MHANDLEFUNC handler)
char * dbname (DBPROCESS *dbproc)
RETCODE dbnextrow (DBPROCESS *dbproc)
RETCODE dbnullbind (DBPROCESS *dbproc, int column, DBINT *indicator)
int dbnumalts (DBPROCESS *dbproc, int computeid)
int dbnumcols (DBPROCESS *dbproc)
int dbnumcompute (DBPROCESS *dbproc)
int dbnumrets (DBPROCESS *dbproc)
int dbperror (DBPROCESS *dbproc, DBINT msgno, int errnum)
 

For internal use only.


RETCODE dbpoll (DBPROCESS *dbproc, long milliseconds, DBPROCESS **ready_dbproc, int *return_reason)
void dbprhead (DBPROCESS *dbproc)
RETCODE dbprrow (DBPROCESS *dbproc)
const char * dbprtype (int token)
STATUS dbreadtext (DBPROCESS *dbproc, void *buf, DBINT bufsize)
void dbrecftos (char *filename)
RETCODE dbregexec (DBPROCESS *dbproc, DBUSMALLINT options)
RETCODE dbreginit (DBPROCESS *dbproc, DBCHAR *procedure_name, DBSMALLINT namelen)
RETCODE dbreglist (DBPROCESS *dbproc)
RETCODE dbregparam (DBPROCESS *dbproc, char *param_name, int type, DBINT datalen, BYTE *data)
RETCODE dbresults (DBPROCESS *dbproc)
BYTE * dbretdata (DBPROCESS *dbproc, int retnum)
int dbretlen (DBPROCESS *dbproc, int retnum)
char * dbretname (DBPROCESS *dbproc, int retnum)
DBINT dbretstatus (DBPROCESS *dbproc)
int dbrettype (DBPROCESS *dbproc, int retnum)
RETCODE dbrows (DBPROCESS *dbproc)
 

For internal use only.


STATUS dbrowtype (DBPROCESS *dbproc)
 

For internal use only.


void dbrpwclr (LOGINREC *login)
RETCODE dbrpwset (LOGINREC *login, char *srvname, char *password, int pwlen)
RETCODE dbsafestr (DBPROCESS *dbproc, const char *src, DBINT srclen, char *dest, DBINT destlen, int quotetype)
char * dbservcharset (DBPROCESS *dbproc)
void dbsetavail (DBPROCESS *dbproc)
 

For internal use only.


RETCODE dbsetdefcharset (char *charset)
RETCODE dbsetdeflang (char *language)
void dbsetifile (char *filename)
void dbsetinterrupt (DBPROCESS *dbproc, DB_DBCHKINTR_FUNC chkintr, DB_DBHNDLINTR_FUNC hndlintr)
RETCODE dbsetlogintime (int seconds)
RETCODE dbsetmaxprocs (int maxprocs)
RETCODE dbsetopt (DBPROCESS *dbproc, int option, const char *char_param, int int_param)
RETCODE dbsetrow (DBPROCESS *dbproc, DBINT row)
RETCODE dbsettime (int seconds)
void dbsetuserdata (DBPROCESS *dbproc, BYTE *ptr)
RETCODE dbsetversion (DBINT version)
int dbspid (DBPROCESS *dbproc)
RETCODE dbspr1row (DBPROCESS *dbproc, char *buffer, DBINT buf_len)
DBINT dbspr1rowlen (DBPROCESS *dbproc)
RETCODE dbsprhead (DBPROCESS *dbproc, char *buffer, DBINT buf_len)
RETCODE dbsprline (DBPROCESS *dbproc, char *buffer, DBINT buf_len, DBCHAR line_char)
RETCODE dbsqlexec (DBPROCESS *dbproc)
RETCODE dbsqlok (DBPROCESS *dbproc)
RETCODE dbsqlsend (DBPROCESS *dbproc)
int dbstrbuild (DBPROCESS *dbproc, char *charbuf, int bufsize, char *text, char *formats,...)
RETCODE dbstrcpy (DBPROCESS *dbproc, int start, int numbytes, char *dest)
int dbstrlen (DBPROCESS *dbproc)
DBINT dbtablecolinfo (DBPROCESS *dbproc, DBINT column, DBCOL *pdbcol)
int dbtds (DBPROCESS *dbproc)
 

For internal use only.


DBBINARY * dbtxptr (DBPROCESS *dbproc, int column)
DBBINARY * dbtxtimestamp (DBPROCESS *dbproc, int column)
RETCODE dbuse (DBPROCESS *dbproc, char *name)
DBINT dbvarylen (DBPROCESS *dbproc, int column)
const char * dbversion ()
DBBOOL dbwillconvert (int srctype, int desttype)
RETCODE dbwritetext (DBPROCESS *dbproc, char *objname, DBBINARY *textptr, DBTINYINT textptrlen, DBBINARY *timestamp, DBBOOL log, DBINT size, BYTE *text)
static void free_linked_dbopt (DBOPTION *dbopt)
static DBOPTION * init_dboptions (void)
static TDS_MUTEX_DECLARE (dblib_mutex)
static char * tds_prdatatype (TDS_SERVER_TYPE datatype_token)
 TDS_RCSID (var,"$Id: dblib.c,v 1.244.2.1 2006/01/31 08:45:20 freddy77 Exp $")
DBPROCESS * tdsdbopen (LOGINREC *login, char *server, int msdblib)
 

For internal use only.



Variables

EHANDLEFUNC _dblib_err_handler = NULL
MHANDLEFUNC _dblib_msg_handler = NULL
static const
DBLIB_ERROR_MESSAGE 
dblib_error_messages []
static int errno = 0
static DBLIBCONTEXT g_dblib_ctx
static int g_dblib_version


Detailed Description

Main implementation file for db-lib.


Define Documentation

#define _DB_GETCOLINFO ( fail   ) 

Value:

if (!dbproc || !dbproc->tds_socket || !(resinfo=dbproc->tds_socket->res_info)) \
                return (fail); \
\
        if (column < 1 || column > resinfo->num_cols) \
                return (fail); \
        colinfo = resinfo->columns[column - 1];


Function Documentation

DBINT dbcolinfo ( DBPROCESS *  dbproc,
CI_TYPE  type,
DBINT  column,
DBINT  computeid,
DBCOL *  pdbcol 
)

Get a bunch of column attributes with a single call (Microsoft-compatibility feature).

Parameters:
dbproc contains all information needed by db-lib to manage communications with the server.
type must be CI_REGULAR or CI_ALTERNATE (CI_CURSOR is defined by the vendor, but is not yet implemented).
column Nth in the result set, starting from 1.
computeid (ignored)
pdbcol address of structure to be populated by this function.
Returns:
SUCCEED or FAIL.
See also:
dbcolbrowse(), dbqual(), dbtabbrowse(), dbtabcount(), dbtabname(), dbtabsource(), dbtsnewlen(), dbtsnewval(), dbtsput().
Todo:
Support cursor rows.


Generated on Tue Sep 4 07:57:16 2007 for FreeTDS API by  doxygen 1.5.3