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

tds.h File Reference

Main include file for libtds. More...

#include <stdio.h>
#include <stdarg.h>
#include <time.h>
#include "tdsver.h"
#include "tds_sysdep_public.h"

Go to the source code of this file.

Compounds

struct  _tds_bcpcoldata
struct  _tds_compiletime_settings
 A structure to hold all the compile-time settings. More...

struct  _tds_cursor
struct  _tds_cursor_status
struct  _tds_encoding
 Information relevant to libiconv. More...

struct  DSTR_STRUCT
struct  TDS8_COLLATION
 TDS 8.0 collation information. More...

union  tds_align_struct
struct  tds_answer
struct  tds_blob
 Information about blobs (e.g. More...

struct  tds_column
 Metadata about columns in regular and compute rows. More...

struct  tds_connection
struct  tds_context
struct  tds_dynamic
struct  tds_env
struct  tds_locale
struct  tds_login
struct  tds_message
union  tds_option_arg
struct  tds_result_info
 Hold information for any results. More...

struct  tds_socket
struct  tds_upd_col
struct  tdsdaterec
 information on data, used by tds_datecrack More...

struct  tdsdatetime
struct  tdsdatetime4
union  tdsmoney
struct  tdsmoney4
struct  tdsnumeric
struct  tdsoldmoney
struct  tdsunique
struct  tdsvarbinary
struct  tdsvarchar

Defines

#define TDS_SUCCEED   1
#define TDS_FAIL   0
#define TDS_NO_MORE_RESULTS   2
#define TDS_REG_ROW   -1
#define TDS_NO_MORE_ROWS   -2
#define TDS_COMP_ROW   -3
#define TDS_END_ROW   -4
#define TDS_INT_EXIT   0
#define TDS_INT_CONTINUE   1
#define TDS_INT_CANCEL   2
#define TDS_INT_TIMEOUT   3
#define TDS_NO_COUNT   -1
#define TDS_ROW_RESULT   4040
#define TDS_PARAM_RESULT   4042
#define TDS_STATUS_RESULT   4043
#define TDS_MSG_RESULT   4044
#define TDS_COMPUTE_RESULT   4045
#define TDS_CMD_DONE   4046
#define TDS_CMD_SUCCEED   4047
#define TDS_CMD_FAIL   4048
#define TDS_ROWFMT_RESULT   4049
#define TDS_COMPUTEFMT_RESULT   4050
#define TDS_DESCRIBE_RESULT   4051
#define TDS_DONE_RESULT   4052
#define TDS_DONEPROC_RESULT   4053
#define TDS_DONEINPROC_RESULT   4054
#define TDS_ERROR   3
#define TDS_DONT_RETURN   42
#define TDS5_PARAMFMT2_TOKEN   32
#define TDS_LANGUAGE_TOKEN   33
#define TDS_ORDERBY2_TOKEN   34
#define TDS_ROWFMT2_TOKEN   97
#define TDS_LOGOUT_TOKEN   113
#define TDS_RETURNSTATUS_TOKEN   121
#define TDS_PROCID_TOKEN   124
#define TDS7_RESULT_TOKEN   129
#define TDS7_COMPUTE_RESULT_TOKEN   136
#define TDS_COLNAME_TOKEN   160
#define TDS_COLFMT_TOKEN   161
#define TDS_DYNAMIC2_TOKEN   163
#define TDS_TABNAME_TOKEN   164
#define TDS_COLINFO_TOKEN   165
#define TDS_OPTIONCMD_TOKEN   166
#define TDS_COMPUTE_NAMES_TOKEN   167
#define TDS_COMPUTE_RESULT_TOKEN   168
#define TDS_ORDERBY_TOKEN   169
#define TDS_ERROR_TOKEN   170
#define TDS_INFO_TOKEN   171
#define TDS_PARAM_TOKEN   172
#define TDS_LOGINACK_TOKEN   173
#define TDS_CONTROL_TOKEN   174
#define TDS_ROW_TOKEN   209
#define TDS_CMP_ROW_TOKEN   211
#define TDS5_PARAMS_TOKEN   215
#define TDS_CAPABILITY_TOKEN   226
#define TDS_ENVCHANGE_TOKEN   227
#define TDS_EED_TOKEN   229
#define TDS_DBRPC_TOKEN   230
#define TDS5_DYNAMIC_TOKEN   231
#define TDS5_PARAMFMT_TOKEN   236
#define TDS_AUTH_TOKEN   237
#define TDS_RESULT_TOKEN   238
#define TDS_DONE_TOKEN   253
#define TDS_DONEPROC_TOKEN   254
#define TDS_DONEINPROC_TOKEN   255
#define TDS_CURCLOSE_TOKEN   128
#define TDS_CURFETCH_TOKEN   130
#define TDS_CURINFO_TOKEN   131
#define TDS_CUROPEN_TOKEN   132
#define TDS_CURDECLARE_TOKEN   134
#define IS_DECLARE   100
#define IS_CURROW   200
#define IS_OPEN   300
#define IS_CLOSE   400
#define PROCESS_ROWS   0
#define PROCESS_RESULTS   1
#define CANCEL_PROCESS   2
#define GOTO_1ST_ROW   3
#define LOGIN   4
#define TDS_ENV_DATABASE   1
#define TDS_ENV_LANG   2
#define TDS_ENV_CHARSET   3
#define TDS_ENV_PACKSIZE   4
#define TDS_ENV_LCID   5
#define TDS_ENV_SQLCOLLATION   7
#define TDS_NULLTERM   -9
#define TDS_SP_CURSOR   1
#define TDS_SP_CURSOROPEN   2
#define TDS_SP_CURSORPREPARE   3
#define TDS_SP_CURSOREXECUTE   4
#define TDS_SP_CURSORPREPEXEC   5
#define TDS_SP_CURSORUNPREPARE   6
#define TDS_SP_CURSORFETCH   7
#define TDS_SP_CURSOROPTION   8
#define TDS_SP_CURSORCLOSE   9
#define TDS_SP_EXECUTESQL   10
#define TDS_SP_PREPARE   11
#define TDS_SP_EXECUTE   12
#define TDS_SP_PREPEXEC   13
#define TDS_SP_PREPEXECRPC   14
#define TDS_SP_UNPREPARE   15
#define SYBCHAR   SYBCHAR
#define SYBVARCHAR   SYBVARCHAR
#define SYBINTN   SYBINTN
#define SYBINT1   SYBINT1
#define SYBINT2   SYBINT2
#define SYBINT4   SYBINT4
#define SYBINT8   SYBINT8
#define SYBFLT8   SYBFLT8
#define SYBDATETIME   SYBDATETIME
#define SYBBIT   SYBBIT
#define SYBTEXT   SYBTEXT
#define SYBNTEXT   SYBNTEXT
#define SYBIMAGE   SYBIMAGE
#define SYBMONEY4   SYBMONEY4
#define SYBMONEY   SYBMONEY
#define SYBDATETIME4   SYBDATETIME4
#define SYBREAL   SYBREAL
#define SYBBINARY   SYBBINARY
#define SYBVOID   SYBVOID
#define SYBVARBINARY   SYBVARBINARY
#define SYBNVARCHAR   SYBNVARCHAR
#define SYBBITN   SYBBITN
#define SYBNUMERIC   SYBNUMERIC
#define SYBDECIMAL   SYBDECIMAL
#define SYBFLTN   SYBFLTN
#define SYBMONEYN   SYBMONEYN
#define SYBDATETIMN   SYBDATETIMN
#define XSYBCHAR   XSYBCHAR
#define XSYBVARCHAR   XSYBVARCHAR
#define XSYBNVARCHAR   XSYBNVARCHAR
#define XSYBNCHAR   XSYBNCHAR
#define XSYBVARBINARY   XSYBVARBINARY
#define XSYBBINARY   XSYBBINARY
#define SYBLONGBINARY   SYBLONGBINARY
#define SYBSINT1   SYBSINT1
#define SYBUINT2   SYBUINT2
#define SYBUINT4   SYBUINT4
#define SYBUINT8   SYBUINT8
#define SYBUNIQUE   SYBUNIQUE
#define SYBVARIANT   SYBVARIANT
#define SYBAOPCNT   0x4b
#define SYBAOPCNTU   0x4c
#define SYBAOPSUM   0x4d
#define SYBAOPSUMU   0x4e
#define SYBAOPAVG   0x4f
#define SYBAOPAVGU   0x50
#define SYBAOPMIN   0x51
#define SYBAOPMAX   0x52
#define SYBAOPCNT_BIG   0x09
#define SYBAOPSTDEV   0x30
#define SYBAOPSTDEVP   0x31
#define SYBAOPVAR   0x32
#define SYBAOPVARP   0x33
#define SYBAOPCHECKSUM_AGG   0x72
#define TDS_ZERO_FREE(x)   do {free((x)); (x) = NULL;} while(0)
#define TDS_VECTOR_SIZE(x)   (sizeof(x)/sizeof(x[0]))
#define TDS_BYTE_SWAP16(value)
#define TDS_BYTE_SWAP32(value)
#define is_end_token(x)
#define is_hard_end_token(x)
#define is_msg_token(x)
#define is_result_token(x)
#define is_fixed_type(x)
#define is_nullable_type(x)
#define is_blob_type(x)   (x==SYBTEXT || x==SYBIMAGE || x==SYBNTEXT)
#define is_numeric_type(x)   (x==SYBNUMERIC || x==SYBDECIMAL)
#define is_unicode_type(x)   (x==XSYBNVARCHAR || x==XSYBNCHAR || x==SYBNTEXT)
#define is_collate_type(x)   (x==XSYBVARCHAR || x==XSYBCHAR || x==SYBTEXT || x==XSYBNVARCHAR || x==XSYBNCHAR || x==SYBNTEXT)
#define is_ascii_type(x)   ( x==XSYBCHAR || x==XSYBVARCHAR || x==SYBTEXT || x==SYBCHAR || x==SYBVARCHAR)
#define is_binary_type(x)   (x==SYBLONGBINARY)
#define is_char_type(x)   (is_unicode_type(x) || is_ascii_type(x))
#define is_similar_type(x, y)   ((is_char_type(x) && is_char_type(y)) || ((is_unicode_type(x) && is_unicode_type(y))))
#define TDS_MAX_CAPABILITY   22
#define MAXPRECISION   80
#define TDS_MAX_CONN   4096
#define TDS_MAX_DYNID_LEN   30
#define TDS_DEF_SERVER   "SYBASE"
#define TDS_DEF_BLKSZ   512
#define TDS_DEF_CHARSET   "iso_1"
#define TDS_DEF_LANG   "us_english"
#define TDS_DEF_MAJOR   5
#define TDS_DEF_MINOR   0
#define TDS_DEF_PORT   4000
#define TDS_STR_VERSION   "tds version"
#define TDS_STR_BLKSZ   "initial block size"
#define TDS_STR_SWAPDT   "swap broken dates"
#define TDS_STR_SWAPMNY   "swap broken money"
#define TDS_STR_TRYSVR   "try server login"
#define TDS_STR_TRYDOM   "try domain login"
#define TDS_STR_DOMAIN   "nt domain"
#define TDS_STR_XDOMAUTH   "cross domain login"
#define TDS_STR_DUMPFILE   "dump file"
#define TDS_STR_DEBUGLVL   "debug level"
#define TDS_STR_TIMEOUT   "timeout"
#define TDS_STR_CONNTIMEOUT   "connect timeout"
#define TDS_STR_HOSTNAME   "hostname"
#define TDS_STR_HOST   "host"
#define TDS_STR_PORT   "port"
#define TDS_STR_TEXTSZ   "text size"
#define TDS_STR_EMUL_LE   "emulate little endian"
#define TDS_STR_CHARSET   "charset"
#define TDS_STR_CLCHARSET   "client charset"
#define TDS_STR_LANGUAGE   "language"
#define TDS_STR_APPENDMODE   "dump file append"
#define TDS_STR_DATEFMT   "date format"
#define TDS_ALIGN_SIZE   sizeof(tds_align_struct)
#define TDS_MAX_LOGIN_STR_SZ   30
#define TDS_SF_BIN   (TDS_USMALLINT) 0x100
#define TDS_SF_WIDTH_INSENSITIVE   (TDS_USMALLINT) 0x080
#define TDS_SF_KATATYPE_INSENSITIVE   (TDS_USMALLINT) 0x040
#define TDS_SF_ACCENT_SENSITIVE   (TDS_USMALLINT) 0x020
#define TDS_SF_CASE_INSENSITIVE   (TDS_USMALLINT) 0x010
#define TDS_UT_TIMESTAMP   80
#define TDS_DBG_FUNC   7
#define TDS_DBG_INFO2   6
#define TDS_DBG_INFO1   5
#define TDS_DBG_NETWORK   4
#define TDS_DBG_WARN   3
#define TDS_DBG_ERROR   2
#define TDS_DBG_SEVERE   1
#define tds_put_tinyint(tds, ti)   tds_put_byte(tds,ti)
 Output a tinyint value.

#define IS_TDS42(x)   (x->major_version==4 && x->minor_version==2)
#define IS_TDS46(x)   (x->major_version==4 && x->minor_version==6)
#define IS_TDS50(x)   (x->major_version==5 && x->minor_version==0)
#define IS_TDS70(x)   (x->major_version==7 && x->minor_version==0)
#define IS_TDS80(x)   (x->major_version==8 && x->minor_version==0)
#define IS_TDS7_PLUS(x)   ( IS_TDS70(x) || IS_TDS80(x) )
#define IS_TDSDEAD(x)   (((x) == NULL) || TDS_IS_SOCKET_INVALID((x)->s))
#define TDS_IS_SYBASE(x)   (!(x->product_version & 0x80000000u))
 Check if product is Sybase (such as Adaptive Server Enterrprice).

#define TDS_IS_MSSQL(x)   ((x->product_version & 0x80000000u)!=0)
 Check if product is Microsft SQL Server.

#define TDS_MS_VER(maj, min, x)   (0x80000000u|((maj)<<24)|((min)<<16)|(x))
 Calc a version number for mssql.

#define TDS_SYB_VER(maj, min, x)   (((maj)<<24)|((min)<<16)|(x)<<8)
 Calc a version number for Sybase.


Typedefs

typedef tdsiconvinfo TDSICONV
typedef tds_socket TDSSOCKET
typedef _tds_compiletime_settings TDS_COMPILETIME_SETTINGS
 A structure to hold all the compile-time settings.

typedef DSTR_STRUCT * DSTR
typedef char TDS_CHAR
typedef unsigned char TDS_UCHAR
typedef unsigned char TDS_TINYINT
typedef tds_sysdep_int16_type TDS_SMALLINT
typedef unsigned tds_sysdep_int16_type TDS_USMALLINT
typedef tds_sysdep_int32_type TDS_INT
typedef unsigned tds_sysdep_int32_type TDS_UINT
typedef tds_sysdep_real32_type TDS_REAL
typedef tds_sysdep_real64_type TDS_FLOAT
typedef tds_sysdep_int64_type TDS_INT8
typedef unsigned tds_sysdep_int64_type TDS_UINT8
typedef tds_sysdep_intptr_type TDS_INTPTR
typedef tdsnumeric TDS_NUMERIC
typedef tdsoldmoney TDS_OLD_MONEY
typedef tdsmoney TDS_MONEY
typedef tdsmoney4 TDS_MONEY4
typedef tdsdatetime TDS_DATETIME
typedef tdsdatetime4 TDS_DATETIME4
typedef tdsvarbinary TDS_VARBINARY
typedef tdsvarchar TDS_VARCHAR
typedef tdsunique TDS_UNIQUE
typedef tdsdaterec TDSDATEREC
 information on data, used by tds_datecrack

typedef tds_option_arg TDS_OPTION_ARG
typedef tds_login TDSLOGIN
typedef tds_connection TDSCONNECTION
typedef tds_locale TDSLOCALE
typedef tds_blob TDSBLOB
 Information about blobs (e.g.

typedef _tds_encoding TDS_ENCODING
 Information relevant to libiconv.

typedef _tds_bcpcoldata BCPCOLDATA
typedef tds_column TDSCOLUMN
 Metadata about columns in regular and compute rows.

typedef tds_result_info TDSRESULTINFO
 Hold information for any results.

typedef tds_result_info TDSCOMPUTEINFO
typedef TDSRESULTINFO TDSPARAMINFO
typedef tds_message TDSMESSAGE
typedef tds_upd_col TDSUPDCOL
typedef _tds_cursor_status TDS_CURSOR_STATUS
typedef _tds_cursor TDSCURSOR
typedef tds_env TDSENV
typedef tds_dynamic TDSDYNAMIC
typedef tds_context TDSCONTEXT
typedef void(* TDSCONFPARSE )(const char *option, const char *value, void *param)
typedef tds_answer TDSANSWER

Enumerations

enum  tds_end {
  TDS_DONE_FINAL = 0x00, TDS_DONE_MORE_RESULTS = 0x01, TDS_DONE_ERROR = 0x02, TDS_DONE_INXACT = 0x04,
  TDS_DONE_PROC = 0x08, TDS_DONE_COUNT = 0x10, TDS_DONE_CANCELLED = 0x20, TDS_DONE_EVENT = 0x40,
  TDS_DONE_SRVERROR = 0x100, TDS_DONE_NO_TRAN = 0, TDS_DONE_TRAN_SUCCEED = 1, TDS_DONE_TRAN_PROGRESS = 2,
  TDS_DONE_STMT_ABORT = 3, TDS_DONE_TRAN_ABORT = 4
}
enum  {
  TDS_CUR_ISTAT_UNUSED = 0x00, TDS_CUR_ISTAT_DECLARED = 0x01, TDS_CUR_ISTAT_OPEN = 0x02, TDS_CUR_ISTAT_CLOSED = 0x04,
  TDS_CUR_ISTAT_RDONLY = 0x08, TDS_CUR_ISTAT_UPDATABLE = 0x10, TDS_CUR_ISTAT_ROWCNT = 0x20, TDS_CUR_ISTAT_DEALLOC = 0x40
}
enum  TDS_SERVER_TYPE {
  SYBCHAR = 47, SYBVARCHAR = 39, SYBINTN = 38, SYBINT1 = 48,
  SYBINT2 = 52, SYBINT4 = 56, SYBINT8 = 127, SYBFLT8 = 62,
  SYBDATETIME = 61, SYBBIT = 50, SYBTEXT = 35, SYBNTEXT = 99,
  SYBIMAGE = 34, SYBMONEY4 = 122, SYBMONEY = 60, SYBDATETIME4 = 58,
  SYBREAL = 59, SYBBINARY = 45, SYBVOID = 31, SYBVARBINARY = 37,
  SYBNVARCHAR = 103, SYBBITN = 104, SYBNUMERIC = 108, SYBDECIMAL = 106,
  SYBFLTN = 109, SYBMONEYN = 110, SYBDATETIMN = 111, XSYBCHAR = 175,
  XSYBVARCHAR = 167, XSYBNVARCHAR = 231, XSYBNCHAR = 239, XSYBVARBINARY = 165,
  XSYBBINARY = 173, SYBLONGBINARY = 225, SYBSINT1 = 64, SYBUINT2 = 65,
  SYBUINT4 = 66, SYBUINT8 = 67, SYBUNIQUE = 36, SYBVARIANT
}
enum  TDS_USER_TYPE { USER_UNICHAR_TYPE = 34, USER_UNIVARCHAR_TYPE = 35 }
enum  TDS_OPTION_CMD { TDS_OPT_SET = 1, TDS_OPT_DEFAULT = 2, TDS_OPT_LIST = 3, TDS_OPT_INFO = 4 }
 options that can be sent with a TDS_OPTIONCMD token

enum  TDS_OPTION {
  TDS_OPT_DATEFIRST = 1, TDS_OPT_TEXTSIZE = 2, TDS_OPT_STAT_TIME = 3, TDS_OPT_STAT_IO = 4,
  TDS_OPT_ROWCOUNT = 5, TDS_OPT_NATLANG = 6, TDS_OPT_DATEFORMAT = 7, TDS_OPT_ISOLATION = 8,
  TDS_OPT_AUTHON = 9, TDS_OPT_CHARSET = 10, TDS_OPT_SHOWPLAN = 13, TDS_OPT_NOEXEC = 14,
  TDS_OPT_ARITHIGNOREON = 15, TDS_OPT_ARITHABORTON = 17, TDS_OPT_PARSEONLY = 18, TDS_OPT_GETDATA = 20,
  TDS_OPT_NOCOUNT = 21, TDS_OPT_FORCEPLAN = 23, TDS_OPT_FORMATONLY = 24, TDS_OPT_CHAINXACTS = 25,
  TDS_OPT_CURCLOSEONXACT = 26, TDS_OPT_FIPSFLAG = 27, TDS_OPT_RESTREES = 28, TDS_OPT_IDENTITYON = 29,
  TDS_OPT_CURREAD = 30, TDS_OPT_CURWRITE = 31, TDS_OPT_IDENTITYOFF = 32, TDS_OPT_AUTHOFF = 33,
  TDS_OPT_ANSINULL = 34, TDS_OPT_QUOTED_IDENT = 35, TDS_OPT_ARITHIGNOREOFF = 36, TDS_OPT_ARITHABORTOFF = 37,
  TDS_OPT_TRUNCABORT = 38
}
enum  { TDS_OPT_ARITHOVERFLOW = 0x01, TDS_OPT_NUMERICTRUNC = 0x02 }
enum  TDS_OPT_DATEFIRST_CHOICE {
  TDS_OPT_MONDAY = 1, TDS_OPT_TUESDAY = 2, TDS_OPT_WEDNESDAY = 3, TDS_OPT_THURSDAY = 4,
  TDS_OPT_FRIDAY = 5, TDS_OPT_SATURDAY, TDS_OPT_SUNDAY = 7
}
enum  TDS_OPT_DATEFORMAT_CHOICE {
  TDS_OPT_FMTMDY = 1, TDS_OPT_FMTDMY = 2, TDS_OPT_FMTYMD = 3, TDS_OPT_FMTYDM = 4,
  TDS_OPT_FMTMYD = 5, TDS_OPT_FMTDYM = 6
}
enum  TDS_OPT_ISOLATION_CHOICE { TDS_OPT_LEVEL1 = 1, TDS_OPT_LEVEL3 = 3 }
enum  { TDS_SYSNAME_SIZE = 512 }
enum  {
  TDS_QUERYING, TDS_PENDING, TDS_IDLE, TDS_CANCELED,
  TDS_DEAD
}
enum  TDS_DBG_LOG_STATE {
  TDS_DBG_LOGIN = 1, TDS_DBG_API = (1 << 1), TDS_DBG_ASYNC = (1 << 2), TDS_DBG_DIAG = (1 << 3),
  TDS_DBG_error = (1 << 4), TDS_DBG_PACKET = (1 << 5), TDS_DBG_LIBTDS = (1 << 6), TDS_DBG_CONFIG = (1 << 7),
  TDS_DBG_DEFAULT = 0xFE
}
 An attempt at better logging. More...

enum  TDS_CURSOR_STATE { TDS_CURSOR_STATE_UNACTIONED = 0, TDS_CURSOR_STATE_REQUESTED = 1, TDS_CURSOR_STATE_SENT = 2 }
enum  TDS_ICONV_ENTRY { client2ucs2, client2server_chardata, iso2server_metadata, initial_char_conv_count }

Functions

void tds_set_longquery_handler (TDSLOGIN *tds_login, void(*longquery_func)(void *param), void *longquery_param)
int tds_init_write_buf (TDSSOCKET *tds)
void tds_free_result_info (TDSRESULTINFO *info)
void tds_free_socket (TDSSOCKET *tds)
void tds_free_connection (TDSCONNECTION *connection)
void tds_free_all_results (TDSSOCKET *tds)
void tds_free_results (TDSRESULTINFO *res_info)
void tds_free_param_results (TDSPARAMINFO *param_info)
void tds_free_msg (TDSMESSAGE *message)
void tds_free_cursor (TDSSOCKET *tds, TDS_INT cursor_id)
void tds_free_bcp_column_data (BCPCOLDATA *coldata)
int tds_put_n (TDSSOCKET *tds, const void *buf, int n)
int tds_put_string (TDSSOCKET *tds, const char *buf, int len)
 Output a string to wire automatic translate string to unicode if needed.

int tds_put_int (TDSSOCKET *tds, TDS_INT i)
int tds_put_int8 (TDSSOCKET *tds, TDS_INT8 i)
int tds_put_smallint (TDSSOCKET *tds, TDS_SMALLINT si)
int tds_put_byte (TDSSOCKET *tds, unsigned char c)
TDSRESULTINFOtds_alloc_results (int num_cols)
TDSCOMPUTEINFO ** tds_alloc_compute_results (TDS_INT *num_comp_results, TDSCOMPUTEINFO **ci, int num_cols, int by_cols)
TDSCONTEXT * tds_alloc_context (void)
void tds_free_context (TDSCONTEXT *locale)
TDSSOCKET * tds_alloc_socket (TDSCONTEXT *context, int bufsize)
const TDS_COMPILETIME_SETTINGStds_get_compiletime_settings (void)
 Return a structure capturing the compile-time settings provided to the configure script.

int tds_read_conf_section (FILE *in, const char *section, TDSCONFPARSE tds_conf_parse, void *parse_param)
 Read a section of configuration file (INI style file).

int tds_read_conf_file (TDSCONNECTION *connection, const char *server)
 Read configuration info for given server return 0 on error.

TDSCONNECTION * tds_read_config_info (TDSSOCKET *tds, TDSLOGIN *login, TDSLOCALE *locale)
 tds_read_config_info() will fill the tds connection structure based on configuration information gathered in the following order: 1) Program specified in TDSLOGIN structure 2) The environment variables TDSVER, TDSDUMP, TDSPORT, TDSQUERY, TDSHOST 3) A config file with the following search order: a) a readable file specified by environment variable FREETDSCONF b) a readable file in ~/.freetds.conf c) a readable file in $prefix/etc/freetds.conf 3) ~/.interfaces if exists 4) $SYBASE/interfaces if exists 5) TDS_DEF_* default values

void tds_fix_connection (TDSCONNECTION *connection)
 Fix configuration after reading it.

void tds_config_verstr (const char *tdsver, TDSCONNECTION *connection)
 Set TDS version from given string.

void tds_lookup_host (const char *servername, char *ip)
 Given a servername and port name or number, lookup the hostname and service.

int tds_set_interfaces_file_loc (const char *interfloc)
 Set the full name of interface file.

TDSLOCALE * tds_get_locale (void)
 Get locale information.

unsigned char * tds_alloc_row (TDSRESULTINFO *res_info)
 Allocate space for row store return NULL on out of memory.

unsigned char * tds_alloc_compute_row (TDSCOMPUTEINFO *res_info)
BCPCOLDATA * tds_alloc_bcp_column_data (int column_size)
int tds_alloc_get_string (TDSSOCKET *tds, char **string, int len)
 Read a string from wire in a new allocated buffer.

void tds_set_null (unsigned char *current_row, int column)
 set the null bit for the given column in the row buffer

void tds_clr_null (unsigned char *current_row, int column)
 clear the null bit for the given column in the row buffer

int tds_get_null (unsigned char *current_row, int column)
 Return the null bit for the given column in the row buffer.

unsigned char * tds7_crypt_pass (const unsigned char *clear_pass, int len, unsigned char *crypt_pass)
 tds7_crypt_pass() -- 'encrypt' TDS 7.0 style passwords.

TDSDYNAMIC * tds_lookup_dynamic (TDSSOCKET *tds, char *id)
 Find a dynamic given string id.

const char * tds_prtype (int token)
void tds_iconv_open (TDSSOCKET *tds, const char *charset)
void tds_iconv_close (TDSSOCKET *tds)
void tds_srv_charset_changed (TDSSOCKET *tds, const char *charset)
void tds7_srv_charset_changed (TDSSOCKET *tds, int sql_collate, int lcid)
int tds_iconv_alloc (TDSSOCKET *tds)
 Allocate iconv stuff.

void tds_iconv_free (TDSSOCKET *tds)
TDSICONV * tds_iconv_from_collate (TDSSOCKET *tds, int sql_collate, int lcid)
 Get iconv information from a LCID (to support different column encoding under MSSQL2K).

char * tds_timestamp_str (char *str, int maxlen)
hostent * tds_gethostbyname_r (const char *servername, struct hostent *result, char *buffer, int buflen, int *h_errnop)
hostent * tds_gethostbyaddr_r (const char *addr, int len, int type, struct hostent *result, char *buffer, int buflen, int *h_errnop)
servent * tds_getservbyname_r (const char *name, const char *proto, struct servent *result, char *buffer, int buflen)
char * tds_get_homedir (void)
 Get user home directory.

TDSPARAMINFOtds_alloc_param_result (TDSPARAMINFO *old_param)
 Adds a output parameter to TDSPARAMINFO.

void tds_free_input_params (TDSDYNAMIC *dyn)
 Frees all allocated input parameters of a dynamic statement.

void tds_free_all_dynamic (TDSSOCKET *tds)
 Frees all dynamic statements for a given connection.

void tds_free_dynamic (TDSSOCKET *tds, TDSDYNAMIC *dyn)
 Frees dynamic statement and remove from TDS.

TDSSOCKET * tds_realloc_socket (TDSSOCKET *tds, int bufsize)
void tds_free_compute_result (TDSCOMPUTEINFO *comp_info)
void tds_free_compute_results (TDSCOMPUTEINFO **comp_info, TDS_INT num_comp)
unsigned char * tds_alloc_param_row (TDSPARAMINFO *info, TDSCOLUMN *curparam)
 Add another field to row.

char * tds_alloc_client_sqlstate (int msgnum)
char * tds_alloc_lookup_sqlstate (TDSSOCKET *tds, int msgnum)
TDSLOGIN * tds_alloc_login (void)
TDSDYNAMIC * tds_alloc_dynamic (TDSSOCKET *tds, const char *id)
 Allocate a dynamic statement.

void tds_free_login (TDSLOGIN *login)
TDSCONNECTION * tds_alloc_connection (TDSLOCALE *locale)
 Allocate space for configure structure and initialize with default values.

TDSLOCALE * tds_alloc_locale (void)
void tds_free_locale (TDSLOCALE *locale)
TDSCURSOR * tds_alloc_cursor (TDSSOCKET *tds, const char *name, TDS_INT namelen, const char *query, TDS_INT querylen)
int tds7_send_auth (TDSSOCKET *tds, const unsigned char *challenge)
void tds_set_packet (TDSLOGIN *tds_login, int packet_size)
void tds_set_port (TDSLOGIN *tds_login, int port)
void tds_set_passwd (TDSLOGIN *tds_login, const char *password)
void tds_set_bulk (TDSLOGIN *tds_login, TDS_TINYINT enabled)
void tds_set_user (TDSLOGIN *tds_login, const char *username)
void tds_set_app (TDSLOGIN *tds_login, const char *application)
void tds_set_host (TDSLOGIN *tds_login, const char *hostname)
void tds_set_library (TDSLOGIN *tds_login, const char *library)
void tds_set_server (TDSLOGIN *tds_login, const char *server)
void tds_set_client_charset (TDSLOGIN *tds_login, const char *charset)
void tds_set_language (TDSLOGIN *tds_login, const char *language)
void tds_set_version (TDSLOGIN *tds_login, short major_ver, short minor_ver)
void tds_set_capabilities (TDSLOGIN *tds_login, unsigned char *capabilities, int size)
int tds_connect (TDSSOCKET *tds, TDSCONNECTION *connection)
 Do a connection to socket.

int tds_submit_query (TDSSOCKET *tds, const char *query)
 tds_submit_query() sends a language string to the database server for processing.

int tds_submit_query_params (TDSSOCKET *tds, const char *query, TDSPARAMINFO *params)
 tds_submit_query_params() sends a language string to the database server for processing.

int tds_submit_queryf (TDSSOCKET *tds, const char *queryf,...)
int tds_submit_prepare (TDSSOCKET *tds, const char *query, const char *id, TDSDYNAMIC **dyn_out, TDSPARAMINFO *params)
 tds_submit_prepare() creates a temporary stored procedure in the server.

int tds_submit_execdirect (TDSSOCKET *tds, const char *query, TDSPARAMINFO *params)
 Currently works with TDS 5.0 and TDS7+.

int tds_submit_execute (TDSSOCKET *tds, TDSDYNAMIC *dyn)
 tds_submit_execute() sends a previously prepared dynamic statement to the server.

int tds_send_cancel (TDSSOCKET *tds)
 tds_send_cancel() sends an empty packet (8 byte header only) tds_process_cancel should be called directly after this.

const char * tds_next_placeholders (const char *start)
 Get position of next placeholders.

int tds_count_placeholders (const char *query)
 Count the number of placeholders in query.

int tds_get_dynid (TDSSOCKET *tds, char **id)
 Get an id for dynamic query based on TDS information.

int tds_submit_unprepare (TDSSOCKET *tds, TDSDYNAMIC *dyn)
 Send a unprepare request for a prepared query.

int tds_submit_rpc (TDSSOCKET *tds, const char *rpc_name, TDSPARAMINFO *params)
 tds_submit_rpc() call a RPC from server.

int tds_quote_id (TDSSOCKET *tds, char *buffer, const char *id, int idlen)
 Quote an id.

int tds_quote_string (TDSSOCKET *tds, char *buffer, const char *str, int len)
 Quote a string.

const char * tds_skip_quoted (const char *s)
 Skip quoting string (like 'sfsf', "dflkdj" or [dfkjd]).

int tds_cursor_declare (TDSSOCKET *tds, TDS_INT cursor_id, int *send)
int tds_cursor_setrows (TDSSOCKET *tds, TDS_INT cursor_id, int *send)
int tds_cursor_open (TDSSOCKET *tds, TDS_INT cursor_id, int *send)
int tds_cursor_fetch (TDSSOCKET *tds, TDS_INT client_cursor_id)
int tds_cursor_close (TDSSOCKET *tds, TDS_INT cursor_id)
int tds_cursor_dealloc (TDSSOCKET *tds, TDS_INT cursor_id)
int tds_process_cancel (TDSSOCKET *tds)
 tds_process_cancel() processes the incoming token stream until it finds an end token (DONE, DONEPROC, DONEINPROC) with the cancel flag set.

void tds_swap_datatype (int coltype, unsigned char *buf)
int tds_get_token_size (int marker)
 tds_get_token_size() returns the size of a fixed length token used by tds_process_cancel() to determine how to read past a token

int tds_process_login_tokens (TDSSOCKET *tds)
 tds_process_login_tokens() is called after sending the login packet to the server.

void tds_add_row_column_size (TDSRESULTINFO *info, TDSCOLUMN *curcol)
 Add a column size to result info row size and calc offset into row.

int tds_process_simple_query (TDSSOCKET *tds)
 Process results for simple query as "SET TEXTSIZE" or "USE dbname" If the statement returns results, beware they are discarded.

int tds5_send_optioncmd (TDSSOCKET *tds, TDS_OPTION_CMD tds_command, TDS_OPTION tds_option, TDS_OPTION_ARG *tds_argument, TDS_INT *tds_argsize)
int tds_process_result_tokens (TDSSOCKET *tds, TDS_INT *result_type, int *done_flags)
 process TDS result-type message streams.

int tds_process_row_tokens (TDSSOCKET *tds, TDS_INT *rowtype, TDS_INT *computeid)
 process TDS row-type message streams.

int tds_process_row_tokens_ct (TDSSOCKET *tds, TDS_INT *rowtype, TDS_INT *computeid)
int tds_process_trailing_tokens (TDSSOCKET *tds)
 tds_process_trailing_tokens() is called to discard messages that may be left unprocessed at the end of a result "batch".

int tds_client_msg (TDSCONTEXT *tds_ctx, TDSSOCKET *tds, int msgnum, int level, int state, int line, const char *message)
 tds_client_msg() sends a message to the client application from the CLI or TDS layer.

int tds_do_until_done (TDSSOCKET *tds)
 simple flush function.

void tds_set_param_type (TDSSOCKET *tds, TDSCOLUMN *curcol, TDS_SERVER_TYPE type)
 Set type of column initializing all dependency.

void tds_set_column_type (TDSCOLUMN *curcol, int type)
 Set type of column initializing all dependency.

TDS_INT tds_datecrack (TDS_INT datetype, const void *di, TDSDATEREC *dr)
 Convert from db date format to a structured date format.

int tds_get_conversion_type (int srctype, int colsize)
 Return type suitable for conversions (convert all nullable types to fixed type).

int tds_flush_packet (TDSSOCKET *tds)
 Flush packet to server.

int tds_put_buf (TDSSOCKET *tds, const unsigned char *buf, int dsize, int ssize)
unsigned char tds_get_byte (TDSSOCKET *tds)
void tds_unget_byte (TDSSOCKET *tds)
unsigned char tds_peek (TDSSOCKET *tds)
TDS_SMALLINT tds_get_smallint (TDSSOCKET *tds)
 Get an int16 from the server.

TDS_INT tds_get_int (TDSSOCKET *tds)
 Get an int32 from the server.

int tds_get_string (TDSSOCKET *tds, int string_len, char *dest, size_t dest_size)
 Fetch a string from the wire.

int tds_get_char_data (TDSSOCKET *tds, char *dest, size_t wire_size, TDSCOLUMN *curcol)
 Fetch character data the wire.

void * tds_get_n (TDSSOCKET *tds, void *dest, int n)
 Get N bytes from the buffer and return them in the already allocated space given to us.

int tds_get_size_by_type (int servertype)
 Return the number of bytes needed by specified type.

int tds_read_packet (TDSSOCKET *tds)
 Read in one 'packet' from the server.

void tds_set_parent (TDSSOCKET *tds, void *the_parent)
void * tds_get_parent (TDSSOCKET *tds)
void tds_ctx_set_parent (TDSCONTEXT *ctx, void *the_parent)
void * tds_ctx_get_parent (TDSCONTEXT *ctx)
int tds_swap_bytes (unsigned char *buf, int bytes)
int tds_version (TDSSOCKET *tds_socket, char *pversion_string)
 Returns the version of the TDS protocol in effect for the link as a decimal integer.

void tdsdump_off (void)
 Temporarily turn off logging.

void tdsdump_on (void)
 Turn logging back on.

int tdsdump_open (const char *filename)
 This creates and truncates a human readable dump file for the TDS traffic.

int tdsdump_append (void)
void tdsdump_close (void)
 Close the TDS dump log file.

void tdsdump_dump_buf (int debug_lvl, const char *msg, const void *buf, int length)
 Dump the contents of data into the log file in a human readable format.

void tdsdump_log (int dbg_lvl, const char *fmt,...)
 This function write a message to the debug log.

int tds_close_socket (TDSSOCKET *tds)
int tds_vstrbuild (char *buffer, int buflen, int *resultlen, char *text, int textlen, const char *formats, int formatlen, va_list ap)
char * tds_money_to_string (const TDS_MONEY *money, char *s)
TDS_INT tds_numeric_to_string (const TDS_NUMERIC *numeric, char *s)
void tds_getmac (int s, unsigned char mac[6])
void tds_answer_challenge (const char *passwd, const unsigned char *challenge, TDSANSWER *answer)
 Crypt a given password using schema required for NTLMv1 authentication.


Variables

const int tds_numeric_bytes_per_prec []
 The following little table is indexed by precision and will tell us the number of bytes required to store the specified precision.

const char tds_hex_digits []


Detailed Description

Main include file for libtds.


Define Documentation

#define is_end_token  ) 
 

Value:

(x==TDS_DONE_TOKEN    || \
                        x==TDS_DONEPROC_TOKEN    || \
                        x==TDS_DONEINPROC_TOKEN)

#define is_fixed_type  ) 
 

Value:

(x==SYBINT1    || \
                        x==SYBINT2      || \
                        x==SYBINT4      || \
                        x==SYBINT8      || \
                        x==SYBREAL       || \
                        x==SYBFLT8      || \
                        x==SYBDATETIME  || \
                        x==SYBDATETIME4 || \
                        x==SYBBIT       || \
                        x==SYBMONEY     || \
                        x==SYBMONEY4    || \
                        x==SYBUNIQUE)

#define is_hard_end_token  ) 
 

Value:

(x==TDS_DONE_TOKEN    || \
                        x==TDS_DONEPROC_TOKEN)

#define is_msg_token  ) 
 

Value:

(x==TDS_INFO_TOKEN    || \
                        x==TDS_ERROR_TOKEN    || \
                        x==TDS_EED_TOKEN)

#define is_nullable_type  ) 
 

Value:

( \
                        x==SYBBITN      || \
                     x==SYBINTN      || \
                     x==SYBFLTN      || \
                     x==SYBMONEYN    || \
                     x==SYBDATETIMN  || \
                     x==SYBVARCHAR   || \
                     x==SYBBINARY    || \
                     x==SYBVARBINARY || \
                     x==SYBTEXT      || \
                     x==SYBNTEXT     || \
                     x==SYBIMAGE)

#define is_result_token  ) 
 

Value:

(x==TDS_RESULT_TOKEN || \
                        x==TDS_ROWFMT2_TOKEN    || \
                        x==TDS7_RESULT_TOKEN    || \
                        x==TDS_COLFMT_TOKEN     || \
                        x==TDS_COLNAME_TOKEN    || \
                        x==TDS_RETURNSTATUS_TOKEN)

#define TDS_BYTE_SWAP16 value   ) 
 

Value:

(((((unsigned short)value)<<8) & 0xFF00)   | \
          ((((unsigned short)value)>>8) & 0x00FF))

#define TDS_BYTE_SWAP32 value   ) 
 

Value:

(((((unsigned long)value)<<24) & 0xFF000000)  | \
          ((((unsigned long)value)<< 8) & 0x00FF0000)  | \
          ((((unsigned long)value)>> 8) & 0x0000FF00)  | \
          ((((unsigned long)value)>>24) & 0x000000FF))

#define TDS_IS_MSSQL  )     ((x->product_version & 0x80000000u)!=0)
 

Check if product is Microsft SQL Server.

x should be a TDS_SOCKET*.

#define TDS_IS_SYBASE  )     (!(x->product_version & 0x80000000u))
 

Check if product is Sybase (such as Adaptive Server Enterrprice).

x should be a TDS_SOCKET*.

#define TDS_MS_VER maj,
min,
 )     (0x80000000u|((maj)<<24)|((min)<<16)|(x))
 

Calc a version number for mssql.

Use with TDS_MS_VER(7,0,842). For test for a range of version you can use check like if (tds->product_version >= TDS_MS_VER(7,0,0) && tds->product_version < TDS_MS_VER(8,0,0))


Typedef Documentation

typedef struct _tds_compiletime_settings TDS_COMPILETIME_SETTINGS
 

A structure to hold all the compile-time settings.

This structure is returned by tds_get_compiletime_settings

typedef struct _tds_encoding TDS_ENCODING
 

Information relevant to libiconv.

The name is an iconv name, not the same as found in master..syslanguages.

typedef struct tds_blob TDSBLOB
 

Information about blobs (e.g.

text or image). current_row contains this structure.


Enumeration Type Documentation

enum TDS_DBG_LOG_STATE
 

An attempt at better logging.

Using these bitmapped values, various logging features can be turned on and off. It can be especially helpful to turn packet data on/off for security reasons.


Function Documentation

unsigned char* tds7_crypt_pass const unsigned char *  clear_pass,
int  len,
unsigned char *  crypt_pass
 

tds7_crypt_pass() -- 'encrypt' TDS 7.0 style passwords.

the calling function is responsible for ensuring crypt_pass is at least 'len' characters

int tds_connect TDSSOCKET *  tds,
TDSCONNECTION *  connection
 

Do a connection to socket.

Parameters:
tds connection structure. This should be a non-connected connection. If the function fail connection is deleted
connection info for connection
Returns:
TDS_FAIL or TDS_SUCCEED

char* tds_get_homedir void   ) 
 

Get user home directory.

Returns:
home directory or NULL if error. Should be freed with free

TDSLOCALE* tds_get_locale void   ) 
 

Get locale information.

Returns:
allocated structure with all information or NULL if error

int tds_iconv_alloc TDSSOCKET *  tds  ) 
 

Allocate iconv stuff.

Returns:
0 for success

void tds_set_column_type TDSCOLUMN curcol,
int  type
 

Set type of column initializing all dependency.

Parameters:
curcol column to set
type type to set

void tds_set_param_type TDSSOCKET *  tds,
TDSCOLUMN curcol,
TDS_SERVER_TYPE  type
 

Set type of column initializing all dependency.

Parameters:
curcol column to set
type type to set

char* tds_timestamp_str char *  str,
int  maxlen
 

strftime(str, maxlen - 6, "%Y-%m-%d %H:%M:%S", tm); *

int tds_version TDSSOCKET *  tds_socket,
char *  pversion_string
 

Returns the version of the TDS protocol in effect for the link as a decimal integer.

Typical returned values are 42, 50, 70, 80. Also fills pversion_string unless it is null. Typical pversion_string values are "4.2" and "7.0".

void tdsdump_dump_buf int  debug_lvl,
const char *  msg,
const void *  buf,
int  length
 

Dump the contents of data into the log file in a human readable format.

Parameters:
msg message to print before dump
buf buffer to dump
length number of bytes in the buffer

void tdsdump_log int  debug_lvl,
const char *  fmt,
... 
 

This function write a message to the debug log.

Parameters:
debug_lvl level of debugging
fmt printf-like format string

void tdsdump_on void   ) 
 

Turn logging back on.

You must call tdsdump_open() before calling this routine.

int tdsdump_open const char *  filename  ) 
 

This creates and truncates a human readable dump file for the TDS traffic.

The name of the file is specified by the filename parameter. If that is given as NULL or an empty string, any existing log file will be closed.

Returns:
true if the file was opened, false if it couldn't be opened.


Generated on Tue Mar 29 19:52:36 2005 for FreeTDS API by doxygen1.3