src/dblib/dblib.c File Reference

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

#include <stdarg.h>
#include <time.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
 

For internal use only.

More...
struct  dblib_context
 

For internal use only.

More...

Defines

#define SYBDBLIB   1
 
Remarks:
Either SYBDBLIB or MSDBLIB (not both) must be defined.


Typedefs

typedef struct _dblib_error_message DBLIB_ERROR_MESSAGE
typedef struct dblib_context DBLIBCONTEXT

Functions

static int _db_get_server_type (int bindtype)
static int _dbnullable (DBPROCESS *dbproc, int column)
static char * _dbprdate (char *timestr)
static RETCODE _dbresults (DBPROCESS *dbproc)
static int _get_printable_size (TDSCOLUMN *colinfo)
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)
 Get address of compute column data.
DBINT dbadlen (DBPROCESS *dbproc, int computeid, int column)
 Get size of data in a compute column.
RETCODE dbaltbind (DBPROCESS *dbproc, int computeid, int column, int vartype, DBINT varlen, BYTE *varaddr)
 Bind a compute column to a program variable.
int dbaltcolid (DBPROCESS *dbproc, int computeid, int column)
 Get column ID of a compute column.
DBINT dbaltlen (DBPROCESS *dbproc, int computeid, int column)
 Get size of data in compute column.
int dbaltop (DBPROCESS *dbproc, int computeid, int column)
 Get aggregation operator for a compute column.
int dbalttype (DBPROCESS *dbproc, int computeid, int column)
 Get datatype for a compute column.
DBINT dbaltutype (DBPROCESS *dbproc, int computeid, int column)
 Get user-defined datatype of a compute column.
RETCODE dbanullbind (DBPROCESS *dbproc, int computeid, int column, DBINT *indicator)
 Tie a null-indicator to a compute result column.
RETCODE dbbind (DBPROCESS *dbproc, int column, int vartype, DBINT varlen, BYTE *varaddr)
 Tie a host variable to a resultset column.
static int dbbindtype (int datatype)
BYTE * dbbylist (DBPROCESS *dbproc, int computeid, int *size)
 Get bylist for a compute row.
RETCODE dbcancel (DBPROCESS *dbproc)
 Cancel the current command batch.
RETCODE dbcanquery (DBPROCESS *dbproc)
 Cancel the query currently being retrieved, discarding all pending rows.
char * dbchange (DBPROCESS *dbproc)
 See if a command caused the current database to change.
void dbclose (DBPROCESS *dbproc)
 Close a connection to the server and free associated resources.
void dbclrbuf (DBPROCESS *dbproc, DBINT n)
 Clear n rows from the row buffer.
RETCODE dbclropt (DBPROCESS *dbproc, int option, char *param)
 Reset an option.
RETCODE dbcmd (DBPROCESS *dbproc, const char *cmdstring)
 Append SQL to the command buffer.
RETCODE dbcmdrow (DBPROCESS *dbproc)
 

For internal use only.


RETCODE 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).
DBINT dbcollen (DBPROCESS *dbproc, int column)
 Get size of a regular result column.
char * dbcolname (DBPROCESS *dbproc, int column)
 Return name of a regular result column.
char * dbcolsource (DBPROCESS *dbproc, int column)
 Get base database column name for a result set column.
int dbcoltype (DBPROCESS *dbproc, int column)
 Get the datatype of a regular result set column.
DBTYPEINFO * dbcoltypeinfo (DBPROCESS *dbproc, int column)
 Get precision and scale information for a regular result column.
int dbcolutype (DBPROCESS *dbproc, int column)
 Get user-defined datatype of a regular result column.
DBINT dbconvert (DBPROCESS *dbproc, int srctype, const BYTE *src, DBINT srclen, int desttype, BYTE *dest, DBINT destlen)
 Convert one datatype to another.
DBINT dbconvert_ps (DBPROCESS *dbproc, int srctype, BYTE *src, DBINT srclen, int desttype, BYTE *dest, DBINT destlen, DBTYPEINFO *typeinfo)
 cf.
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)
 Get address of data in a regular result column.
RETCODE dbdatecmp (DBPROCESS *dbproc, DBDATETIME *d1, DBDATETIME *d2)
 Compare DBDATETIME values, similar to strcmp(3).
RETCODE dbdatecrack (DBPROCESS *dbproc, DBDATEREC *di, DBDATETIME *datetime)
 Break a DBDATETIME value into useful pieces.
DBINT dbdatlen (DBPROCESS *dbproc, int column)
 Get size of current row's data in a regular result column.
DBBOOL dbdead (DBPROCESS *dbproc)
 

For internal use only.


EHANDLEFUNC dberrhandle (EHANDLEFUNC handler)
 Set an error handler, for messages from db-lib.
void dbexit ()
 Close server connections and free all related structures.
RETCODE dbfcmd (DBPROCESS *dbproc, const char *fmt,...)
 printf-like way to form SQL to send to the server.
DBINT dbfirstrow (DBPROCESS *dbproc)
 

For internal use only.


void dbfreebuf (DBPROCESS *dbproc)
 Erase the command buffer, in case DBNOAUTOFREE was set with dbsetopt().
char * dbgetchar (DBPROCESS *dbproc, int pos)
 Get address of a position in the command buffer.
int dbgetmaxprocs (void)
 get maximum simultaneous connections db-lib will open to the server.
static RETCODE dbgetnull (DBPROCESS *dbproc, int bindtype, int varlen, BYTE *varaddr)
 

For internal use only.

dbbind() says: "Note that if varlen is 0, no padding takes place" dbgetnull() will not pad varaddr unless varlen is positive.


int dbgetpacket (DBPROCESS *dbproc)
 Get TDS packet size for the connection.
RETCODE dbgetrow (DBPROCESS *dbproc, DBINT row)
 Read a row from the row buffer.
int dbgettime (void)
 Get maximum seconds db-lib waits for a server response to query.
BYTE * dbgetuserdata (DBPROCESS *dbproc)
 Get address of user-allocated data from a DBPROCESS.
DBBOOL dbhasretstat (DBPROCESS *dbproc)
 Determine if query generated a return status number.
RETCODE dbinit (void)
 Initialize db-lib.
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)
 Get value of an option.
DBINT dblastrow (DBPROCESS *dbproc)
 

For internal use only.


LOGINREC * dblogin (void)
 Allocate a LOGINREC structure.
void dbloginfree (LOGINREC *login)
 free the LOGINREC
RETCODE dbmny4add (DBPROCESS *dbproc, DBMONEY4 *m1, DBMONEY4 *m2, DBMONEY4 *sum)
 Add two DBMONEY4 values.
int dbmny4cmp (DBPROCESS *dbproc, DBMONEY4 *m1, DBMONEY4 *m2)
 Compare two DBMONEY4 values.
RETCODE dbmny4copy (DBPROCESS *dbproc, DBMONEY4 *src, DBMONEY4 *dest)
 Copy a DBMONEY4 value.
RETCODE dbmny4divide (DBPROCESS *dbproc, DBMONEY4 *m1, DBMONEY4 *m2, DBMONEY4 *quotient)
 Divide two DBMONEY4 values.
RETCODE dbmny4minus (DBPROCESS *dbproc, DBMONEY4 *src, DBMONEY4 *dest)
 Negate a DBMONEY4 value.
RETCODE dbmny4mul (DBPROCESS *dbproc, DBMONEY4 *m1, DBMONEY4 *m2, DBMONEY4 *prod)
 Multiply two DBMONEY4 values.
RETCODE dbmny4sub (DBPROCESS *dbproc, DBMONEY4 *m1, DBMONEY4 *m2, DBMONEY4 *diff)
 Subtract two DBMONEY4 values.
RETCODE dbmny4zero (DBPROCESS *dbproc, DBMONEY4 *dest)
 Zero a DBMONEY4 value.
RETCODE dbmnyadd (DBPROCESS *dbproc, DBMONEY *m1, DBMONEY *m2, DBMONEY *sum)
 Add two DBMONEY values.
int dbmnycmp (DBPROCESS *dbproc, DBMONEY *m1, DBMONEY *m2)
 Compare two DBMONEY values.
RETCODE dbmnycopy (DBPROCESS *dbproc, DBMONEY *src, DBMONEY *dest)
 Copy a DBMONEY value.
RETCODE dbmnydec (DBPROCESS *dbproc, DBMONEY *amount)
 Subtract $0.0001 from a DBMONEY value.
RETCODE dbmnydivide (DBPROCESS *dbproc, DBMONEY *m1, DBMONEY *m2, DBMONEY *quotient)
 Divide two DBMONEY values.
RETCODE dbmnydown (DBPROCESS *dbproc, DBMONEY *amount, int divisor, int *remainder)
 Divide a DBMONEY value by a positive integer.
RETCODE dbmnyinc (DBPROCESS *dbproc, DBMONEY *amount)
 Add $0.0001 to a DBMONEY value.
RETCODE dbmnyinit (DBPROCESS *dbproc, DBMONEY *amount, int trim, DBBOOL *negative)
 Prepare a DBMONEY value for use with dbmnyndigit().
RETCODE dbmnymaxneg (DBPROCESS *dbproc, DBMONEY *amount)
 Get maximum negative DBMONEY value supported.
RETCODE dbmnymaxpos (DBPROCESS *dbproc, DBMONEY *amount)
 Get maximum positive DBMONEY value supported.
RETCODE dbmnyminus (DBPROCESS *dbproc, DBMONEY *src, DBMONEY *dest)
 Negate a DBMONEY value.
RETCODE dbmnymul (DBPROCESS *dbproc, DBMONEY *m1, DBMONEY *m2, DBMONEY *prod)
 Multiply two DBMONEY values.
RETCODE dbmnyndigit (DBPROCESS *dbproc, DBMONEY *mnyptr, DBCHAR *digit, DBBOOL *zero)
 Get the least significant digit of a DBMONEY value, represented as a character.
RETCODE dbmnyscale (DBPROCESS *dbproc, DBMONEY *amount, int multiplier, int addend)
 Multiply a DBMONEY value by a positive integer, and add an amount.
RETCODE dbmnysub (DBPROCESS *dbproc, DBMONEY *m1, DBMONEY *m2, DBMONEY *difference)
 Subtract two DBMONEY values.
RETCODE dbmnyzero (DBPROCESS *dbproc, DBMONEY *dest)
 Set a DBMONEY value to zero.
const char * dbmonthname (DBPROCESS *dbproc, char *language, int monthnum, DBBOOL shortform)
 Get name of a month, in some human language.
RETCODE dbmorecmds (DBPROCESS *dbproc)
 See if more commands are to be processed.
RETCODE dbmoretext (DBPROCESS *dbproc, DBINT size, BYTE *text)
 Send chunk of a text/image value to the server.
MHANDLEFUNC dbmsghandle (MHANDLEFUNC handler)
 Set a message handler, for messages from the server.
char * dbname (DBPROCESS *dbproc)
 Get name of current database.
RETCODE dbnextrow (DBPROCESS *dbproc)
 Read result row into the row buffer and into any bound host variables.
RETCODE dbnullbind (DBPROCESS *dbproc, int column, DBINT *indicator)
 Tie a null-indicator to a regular result column.
int dbnumalts (DBPROCESS *dbproc, int computeid)
 Get count of columns in a compute row.
int dbnumcols (DBPROCESS *dbproc)
 Return number of regular columns in a result set.
int dbnumcompute (DBPROCESS *dbproc)
 Get count of COMPUTE clauses for a result set.
int dbnumrets (DBPROCESS *dbproc)
 Get count of output parameters filled by a stored procedure.
int dbperror (DBPROCESS *dbproc, DBINT msgno, long errnum,...)
 

For internal use only.


RETCODE dbpoll (DBPROCESS *dbproc, long milliseconds, DBPROCESS **ready_dbproc, int *return_reason)
 See if a server response has arrived.
void dbprhead (DBPROCESS *dbproc)
 Print result set headings to stdout.
RETCODE dbprrow (DBPROCESS *dbproc)
 Print a result set to stdout.
const char * dbprtype (int token)
 Print a token value's name to a buffer.
STATUS dbreadtext (DBPROCESS *dbproc, void *buf, DBINT bufsize)
 Fetch part of a text or image value from the server.
void dbrecftos (char *filename)
 Record to a file all SQL commands sent to the server.
RETCODE dbregexec (DBPROCESS *dbproc, DBUSMALLINT options)
 Execute a registered procedure.
RETCODE dbreginit (DBPROCESS *dbproc, DBCHAR *procedure_name, DBSMALLINT namelen)
 Ready execution of a registered procedure.
RETCODE dbreglist (DBPROCESS *dbproc)
 Get names of Open Server registered procedures.
RETCODE dbregparam (DBPROCESS *dbproc, char *param_name, int type, DBINT datalen, BYTE *data)
 Describe parameter of registered procedure .
RETCODE dbresults (DBPROCESS *dbproc)
 Set up query results.
BYTE * dbretdata (DBPROCESS *dbproc, int retnum)
 Get value of an output parameter filled by a stored procedure.
int dbretlen (DBPROCESS *dbproc, int retnum)
 Get size of an output parameter filled by a stored procedure.
char * dbretname (DBPROCESS *dbproc, int retnum)
 Get name of an output parameter filled by a stored procedure.
DBINT dbretstatus (DBPROCESS *dbproc)
 Fetch status value returned by query or remote procedure call.
int dbrettype (DBPROCESS *dbproc, int retnum)
 Get datatype of a stored procedure's return parameter.
RETCODE dbrows (DBPROCESS *dbproc)
 

For internal use only.


STATUS dbrowtype (DBPROCESS *dbproc)
 

For internal use only.


void dbrpwclr (LOGINREC *login)
 Clear remote passwords from the LOGINREC structure.
RETCODE dbrpwset (LOGINREC *login, char *srvname, char *password, int pwlen)
 Add a remote password to the LOGINREC structure.
RETCODE dbsafestr (DBPROCESS *dbproc, const char *src, DBINT srclen, char *dest, DBINT destlen, int quotetype)
 safely quotes character values in SQL text.
char * dbservcharset (DBPROCESS *dbproc)
 Get syscharset name of the server character set.
void dbsetavail (DBPROCESS *dbproc)
 

For internal use only.


RETCODE dbsetdefcharset (char *charset)
 Set the default character set.
RETCODE dbsetdeflang (char *language)
 Set the default character set for an application.
void dbsetifile (char *filename)
 set name and location of the interfaces file FreeTDS should use to look up a servername.
void dbsetinterrupt (DBPROCESS *dbproc, DB_DBCHKINTR_FUNC chkintr, DB_DBHNDLINTR_FUNC hndlintr)
 Set interrupt handler for db-lib to use while blocked against a read from the server.
RETCODE dbsetlbool (LOGINREC *login, int value, int which)
 

For internal use only.


RETCODE dbsetllong (LOGINREC *login, long value, int which)
 

For internal use only.


RETCODE dbsetlname (LOGINREC *login, const char *value, int which)
 

For internal use only.


RETCODE dbsetlogintime (int seconds)
 Set maximum seconds db-lib waits for a server response to a login attempt.
RETCODE dbsetlshort (LOGINREC *login, int value, int which)
 

For internal use only.


RETCODE dbsetlversion (LOGINREC *login, BYTE version)
 Set TDS version for future connections.
RETCODE dbsetmaxprocs (int maxprocs)
 Set maximum simultaneous connections db-lib will open to the server.
RETCODE dbsetnull (DBPROCESS *dbproc, int bindtype, int bindlen, BYTE *bindval)
 Define substitution values to be used when binding null values.
RETCODE dbsetopt (DBPROCESS *dbproc, int option, const char *char_param, int int_param)
 Set db-lib or server option.
RETCODE dbsetrow (DBPROCESS *dbproc, DBINT row)
 Make a buffered row "current" without fetching it into bound variables.
RETCODE dbsettime (int seconds)
 Set maximum seconds db-lib waits for a server response to query.
void dbsetuserdata (DBPROCESS *dbproc, BYTE *ptr)
 Associate client-allocated (and defined) data with a DBPROCESS.
RETCODE dbsetversion (DBINT version)
 Specify a db-lib version level.
int dbspid (DBPROCESS *dbproc)
 Get server process ID for a DBPROCESS.
RETCODE dbspr1row (DBPROCESS *dbproc, char *buffer, DBINT buf_len)
 Print a regular result row to a buffer.
DBINT dbspr1rowlen (DBPROCESS *dbproc)
 Determine size buffer required to hold the results returned by dbsprhead(), dbsprline(), and dbspr1row().
RETCODE dbsprhead (DBPROCESS *dbproc, char *buffer, DBINT buf_len)
 Print result set headings to a buffer.
RETCODE dbsprline (DBPROCESS *dbproc, char *buffer, DBINT buf_len, DBCHAR line_char)
 Get formatted string for underlining dbsprhead() column names.
RETCODE dbsqlexec (DBPROCESS *dbproc)
 send the SQL command to the server and wait for an answer.
RETCODE dbsqlok (DBPROCESS *dbproc)
 Wait for results of a query from the server.
RETCODE dbsqlsend (DBPROCESS *dbproc)
 Transmit the command buffer to the server.
int dbstrbuild (DBPROCESS *dbproc, char *charbuf, int bufsize, char *text, char *formats,...)
 Build a printable string from text containing placeholders for variables.
RETCODE dbstrcpy (DBPROCESS *dbproc, int start, int numbytes, char *dest)
 Get a copy of a chunk of the command buffer.
static RETCODE dbstring_assign (DBSTRING **dbstrp, const char *p)
static RETCODE dbstring_concat (DBSTRING **dbstrp, const char *p)
static void dbstring_free (DBSTRING **dbstrp)
static char * dbstring_get (DBSTRING *dbstr)
static int dbstring_getchar (DBSTRING *dbstr, int i)
static DBINT dbstring_length (DBSTRING *dbstr)
int dbstrlen (DBPROCESS *dbproc)
 Get size of the command buffer, in bytes.
RETCODE dbtablecolinfo (DBPROCESS *dbproc, DBINT column, DBCOL *pdbcol)
 describe table column attributes with a single call (Freetds-only API function modelled on dbcolinfo)
int dbtds (DBPROCESS *dbproc)
 

For internal use only.


DBBINARY * dbtxptr (DBPROCESS *dbproc, int column)
 Get text pointer for a column in the current row.
DBBINARY * dbtxtimestamp (DBPROCESS *dbproc, int column)
 Get text timestamp for a column in the current row.
RETCODE dbuse (DBPROCESS *dbproc, const char *name)
 Change current database.
DBINT dbvarylen (DBPROCESS *dbproc, int column)
 Determine whether a column can vary in size.
const char * dbversion ()
 See which version of db-lib is in use.
DBBOOL dbwillconvert (int srctype, int desttype)
 Test whether or not a datatype can be converted to another datatype.
RETCODE dbwritetext (DBPROCESS *dbproc, char *objname, DBBINARY *textptr, DBTINYINT textptrlen, DBBINARY *timestamp, DBBOOL log, DBINT size, BYTE *text)
 Send text or image data to the server.
static int default_err_handler (DBPROCESS *dbproc, int severity, int dberr, int oserr, char *dberrstr, char *oserrstr)
 

For internal use only.


static DBOPTION * init_dboptions (void)
static const char * prdbresults_state (int retcode)
static const char * prdbretcode (int retcode)
static const char * prresult_type (int result_type)
static const char * prretcode (int retcode)
static TDS_MUTEX_DECLARE (dblib_mutex)
static char * tds_prdatatype (TDS_SERVER_TYPE datatype_token)
 TDS_RCSID (var,"$Id: dblib.c,v 1.320.2.1 2008/05/26 12:49:56 freddy77 Exp $")
DBPROCESS * tdsdbopen (LOGINREC *login, const char *server, int msdblib)
 

For internal use only.



Variables

EHANDLEFUNC _dblib_err_handler = default_err_handler
MHANDLEFUNC _dblib_msg_handler = NULL
static const DBLIB_ERROR_MESSAGE dblib_error_messages []
static NULLREP default_null_representations [MAXBINDTYPES]
static int errno = 0
static DBLIBCONTEXT g_dblib_ctx
static int g_dblib_version
static const DBBINARY null_BINARY = 0
static const DBCHAR null_CHAR = '\0'
static const DBDATETIME null_DATETIME = { 0, 0 }
static const DBFLT8 null_FLT8 = 0
static const DBINT null_INT = 0
static const DBMONEY null_MONEY = { 0, 0 }
static const DBNUMERIC null_NUMERIC = { 0, 0, {0} }
static const DBREAL null_REAL = 0
static const DBDATETIME4 null_SMALLDATETIME = { 0, 0 }
static const DBSMALLINT null_SMALLINT = 0
static const DBMONEY4 null_SMALLMONEY = {0}
static const DBTINYINT null_TINYINT = 0
static const DBVARYCHAR null_VARYCHAR = { 0, {0} }
static const char *const opttext [DBNUMOPTIONS]
const char STD_DATETIME_FMT []


Detailed Description

Main implementation file for db-lib.


Function Documentation

RETCODE 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.

static RETCODE dbgetnull ( DBPROCESS *  dbproc,
int  bindtype,
int  varlen,
BYTE *  varaddr 
) [static]

For internal use only.

dbbind() says: "Note that if varlen is 0, no padding takes place" dbgetnull() will not pad varaddr unless varlen is positive.

Vartype Program Type Padding Terminator ------------------- -------------- -------------- ---------- CHARBIND DBCHAR blanks none STRINGBIND DBCHAR blanks NTBSTRINGBIND DBCHAR none VARYCHARBIND DBVARYCHAR none none BOUNDARYBIND DBCHAR none SENSITIVITYBIND DBCHAR none


Variable Documentation

NULLREP default_null_representations[MAXBINDTYPES] [static]

Initial value:

 {
                  {         NULL, 0 }
                , {         NULL, 0 }
                , { (BYTE*) &null_CHAR, sizeof(null_CHAR) }
                , { (BYTE*) &null_VARYCHAR, sizeof(null_VARYCHAR) }
                , {         &null_BINARY, sizeof(null_BINARY) }
                , {         NULL, 0 }                   
                , {         &null_TINYINT, sizeof(null_TINYINT) }
                , { (BYTE*) &null_SMALLINT, sizeof(null_SMALLINT) }
                , { (BYTE*) &null_INT, sizeof(null_INT) }
                , { (BYTE*) &null_FLT8, sizeof(null_FLT8) }
                , { (BYTE*) &null_REAL, sizeof(null_REAL) }
                , { (BYTE*) &null_DATETIME, sizeof(null_DATETIME) }
                , { (BYTE*) &null_SMALLDATETIME, sizeof(null_SMALLDATETIME) }
                , { (BYTE*) &null_MONEY, sizeof(null_MONEY) }
                , { (BYTE*) &null_SMALLMONEY, sizeof(null_SMALLMONEY) }
                , {         NULL, 0 }               
                , {         &null_BIT, sizeof(null_BIT) }
                , { (BYTE*) &null_NUMERIC, sizeof(null_NUMERIC) }
                , { (BYTE*) &null_NUMERIC, sizeof(null_NUMERIC) }
        
}


Generated on Thu Mar 18 13:31:21 2010 for FreeTDS API by  doxygen 1.5.4