Main Page | Modules | Class List | Directories | File List | Class Members | File Members | Related Pages

tds.h File Reference

Main include file for libtds. More...

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

Go to the source code of this file.

Defines

#define CANCEL_PROCESS   2
#define GOTO_1ST_ROW   3
#define is_ascii_type(x)   ( x==XSYBCHAR || x==XSYBVARCHAR || x==SYBTEXT || x==SYBCHAR || x==SYBVARCHAR)
#define is_binary_type(x)   (x==SYBLONGBINARY)
#define is_blob_type(x)   (x==SYBTEXT || x==SYBIMAGE || x==SYBNTEXT)
#define is_char_type(x)   (is_unicode_type(x) || is_ascii_type(x))
#define IS_CLOSE   400
#define is_collate_type(x)   (x==XSYBVARCHAR || x==XSYBCHAR || x==SYBTEXT || x==XSYBNVARCHAR || x==XSYBNCHAR || x==SYBNTEXT)
#define IS_CURROW   200
#define IS_DECLARE   100
#define is_end_token(x)
#define is_fixed_type(x)
#define is_hard_end_token(x)
#define is_msg_token(x)
#define is_nullable_type(x)
#define is_numeric_type(x)   (x==SYBNUMERIC || x==SYBDECIMAL)
#define IS_OPEN   300
#define is_result_token(x)
#define is_similar_type(x, y)   ((is_char_type(x) && is_char_type(y)) || ((is_unicode_type(x) && is_unicode_type(y))))
#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_TDS7_PLUS(x)   ((x)->major_version>=7)
#define IS_TDS80(x)   (x->major_version==8 && x->minor_version==0)
#define IS_TDS8_PLUS(x)   ((x)->major_version>=8)
#define IS_TDS90(x)   (x->major_version==9 && x->minor_version==0)
#define IS_TDSDEAD(x)   (((x) == NULL) || TDS_IS_SOCKET_INVALID((x)->s))
#define is_unicode_type(x)   (x==XSYBNVARCHAR || x==XSYBNCHAR || x==SYBNTEXT)
#define is_variable_type(x)
#define LOGIN   4
#define MAXPRECISION   80
#define PROCESS_RESULTS   1
#define PROCESS_ROWS   0
#define SYB5INT8   SYB5INT8
#define SYBAOPAVG   0x4f
#define SYBAOPAVGU   0x50
#define SYBAOPCHECKSUM_AGG   0x72
#define SYBAOPCNT   0x4b
#define SYBAOPCNT_BIG   0x09
#define SYBAOPCNTU   0x4c
#define SYBAOPMAX   0x52
#define SYBAOPMIN   0x51
#define SYBAOPSTDEV   0x30
#define SYBAOPSTDEVP   0x31
#define SYBAOPSUM   0x4d
#define SYBAOPSUMU   0x4e
#define SYBAOPVAR   0x32
#define SYBAOPVARP   0x33
#define SYBBINARY   SYBBINARY
#define SYBBIT   SYBBIT
#define SYBBITN   SYBBITN
#define SYBBLOB   SYBBLOB
#define SYBBOUNDARY   SYBBOUNDARY
#define SYBCHAR   SYBCHAR
#define SYBDATE   SYBDATE
#define SYBDATEN   SYBDATEN
#define SYBDATETIME   SYBDATETIME
#define SYBDATETIME4   SYBDATETIME4
#define SYBDATETIMN   SYBDATETIMN
#define SYBDECIMAL   SYBDECIMAL
#define SYBFLT8   SYBFLT8
#define SYBFLTN   SYBFLTN
#define SYBIMAGE   SYBIMAGE
#define SYBINT1   SYBINT1
#define SYBINT2   SYBINT2
#define SYBINT4   SYBINT4
#define SYBINT8   SYBINT8
#define SYBINTERVAL   SYBINTERVAL
#define SYBINTN   SYBINTN
#define SYBLONGBINARY   SYBLONGBINARY
#define SYBLONGCHAR   SYBLONGCHAR
#define SYBMONEY   SYBMONEY
#define SYBMONEY4   SYBMONEY4
#define SYBMONEYN   SYBMONEYN
#define SYBNTEXT   SYBNTEXT
#define SYBNUMERIC   SYBNUMERIC
#define SYBNVARCHAR   SYBNVARCHAR
#define SYBREAL   SYBREAL
#define SYBSENSITIVITY   SYBSENSITIVITY
#define SYBSINT1   SYBSINT1
#define SYBTEXT   SYBTEXT
#define SYBTIME   SYBTIME
#define SYBTIMEN   SYBTIMEN
#define SYBUINT1   SYBUINT1
#define SYBUINT2   SYBUINT2
#define SYBUINT4   SYBUINT4
#define SYBUINT8   SYBUINT8
#define SYBUINTN   SYBUINTN
#define SYBUNIQUE   SYBUNIQUE
#define SYBUNITEXT   SYBUNITEXT
#define SYBVARBINARY   SYBVARBINARY
#define SYBVARCHAR   SYBVARCHAR
#define SYBVARIANT   SYBVARIANT
#define SYBVOID   SYBVOID
#define SYBXML   SYBXML
#define TDS5_DYNAMIC_TOKEN   231
#define TDS5_PARAMFMT2_TOKEN   32
#define TDS5_PARAMFMT_TOKEN   236
#define TDS5_PARAMS_TOKEN   215
#define TDS7_COMPUTE_RESULT_TOKEN   136
#define TDS7_RESULT_TOKEN   129
#define TDS_ALIGN_SIZE   sizeof(tds_align_struct)
#define TDS_AUTH_TOKEN   237
#define TDS_BYTE_SWAP16(value)
#define TDS_BYTE_SWAP32(value)
#define TDS_CANCELLED   3
#define TDS_CAPABILITY_TOKEN   226
#define TDS_CMD_DONE   4046
#define TDS_CMD_FAIL   4048
#define TDS_CMD_SUCCEED   4047
#define TDS_CMP_ROW_TOKEN   211
#define TDS_COLFMT_TOKEN   161
#define TDS_COLINFO_TOKEN   165
#define TDS_COLNAME_TOKEN   160
#define TDS_COMPUTE_NAMES_TOKEN   167
#define TDS_COMPUTE_RESULT   4045
#define TDS_COMPUTE_RESULT_TOKEN   168
#define TDS_COMPUTEFMT_RESULT   4050
#define TDS_CONTROL_TOKEN   174
#define TDS_CURCLOSE_TOKEN   128
#define TDS_CURDECLARE_TOKEN   134
#define TDS_CURDELETE_TOKEN   129
#define TDS_CURFETCH_TOKEN   130
#define TDS_CURINFO_TOKEN   131
#define TDS_CUROPEN_TOKEN   132
#define TDS_DBG_ERROR   __FILE__, ((__LINE__ << 4) | 2)
#define TDS_DBG_FUNC   __FILE__, ((__LINE__ << 4) | 7)
#define TDS_DBG_INFO1   __FILE__, ((__LINE__ << 4) | 5)
#define TDS_DBG_INFO2   __FILE__, ((__LINE__ << 4) | 6)
#define TDS_DBG_NETWORK   __FILE__, ((__LINE__ << 4) | 4)
#define TDS_DBG_SEVERE   __FILE__, ((__LINE__ << 4) | 1)
#define TDS_DBG_WARN   __FILE__, ((__LINE__ << 4) | 3)
#define TDS_DBGFLAG_ALLLVL   0xfff
#define TDS_DBGFLAG_ERROR   0x04
#define TDS_DBGFLAG_FUNC   0x80
#define TDS_DBGFLAG_INFO1   0x20
#define TDS_DBGFLAG_INFO2   0x40
#define TDS_DBGFLAG_NETWORK   0x10
#define TDS_DBGFLAG_PID   0x1000
#define TDS_DBGFLAG_SEVERE   0x02
#define TDS_DBGFLAG_SOURCE   0x4000
#define TDS_DBGFLAG_THREAD   0x8000
#define TDS_DBGFLAG_TIME   0x2000
#define TDS_DBGFLAG_WARN   0x08
#define TDS_DBRPC_TOKEN   230
#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_DEF_SERVER   "SYBASE"
#define TDS_DESCRIBE_RESULT   4051
#define TDS_DONE_RESULT   4052
#define TDS_DONE_TOKEN   253
#define TDS_DONEINPROC_RESULT   4054
#define TDS_DONEINPROC_TOKEN   255
#define TDS_DONEPROC_RESULT   4053
#define TDS_DONEPROC_TOKEN   254
#define TDS_DONT_RETURN   42
#define TDS_DYNAMIC2_TOKEN   163
#define TDS_EED_TOKEN   229
#define TDS_ENV_BEGINTRANS   8
#define TDS_ENV_CHARSET   3
#define TDS_ENV_COMMITTRANS   9
#define TDS_ENV_DATABASE   1
#define TDS_ENV_LANG   2
#define TDS_ENV_LCID   5
#define TDS_ENV_PACKSIZE   4
#define TDS_ENV_ROLLBACKTRANS   10
#define TDS_ENV_SQLCOLLATION   7
#define TDS_ENVCHANGE_TOKEN   227
#define TDS_ERROR   3
#define TDS_ERROR_TOKEN   170
#define TDS_FAIL   0
#define TDS_INFO_TOKEN   171
#define TDS_INT_CANCEL   2
#define TDS_INT_CONTINUE   1
#define TDS_INT_TIMEOUT   3
#define TDS_IS_MSSQL(x)   ((x->product_version & 0x80000000u)!=0)
 Check if product is Microsft SQL Server.
#define TDS_IS_SYBASE(x)   (!(x->product_version & 0x80000000u))
 Check if product is Sybase (such as Adaptive Server Enterrprice).
#define TDS_LANGUAGE_TOKEN   33
#define TDS_LOGINACK_TOKEN   173
#define TDS_LOGOUT_TOKEN   113
#define TDS_MAX_CAPABILITY   22
#define TDS_MAX_CONN   4096
#define TDS_MAX_DYNID_LEN   30
#define TDS_MAX_LOGIN_STR_SZ   30
#define TDS_MS_VER(maj, min, x)   (0x80000000u|((maj)<<24)|((min)<<16)|(x))
 Calc a version number for mssql.
#define TDS_MSG_RESULT   4044
#define TDS_NO_COUNT   -1
#define TDS_NO_MORE_RESULTS   2
#define TDS_NULLTERM   -9
#define TDS_OPTIONCMD_TOKEN   166
#define TDS_ORDERBY2_TOKEN   34
#define TDS_ORDERBY_TOKEN   169
#define TDS_OTHERS_RESULT   4055
#define TDS_PARAM_RESULT   4042
#define TDS_PARAM_TOKEN   172
#define TDS_PROCID_TOKEN   124
#define tds_put_tinyint(tds, ti)   tds_put_byte(tds,ti)
 Output a tinyint value.
#define TDS_RESULT_TOKEN   238
#define TDS_RETURNSTATUS_TOKEN   121
#define TDS_ROW_RESULT   4040
#define TDS_ROW_TOKEN   209
#define TDS_ROWFMT2_TOKEN   97
#define TDS_ROWFMT_RESULT   4049
#define TDS_SF_ACCENT_SENSITIVE   (TDS_USMALLINT) 0x020
#define TDS_SF_BIN   (TDS_USMALLINT) 0x100
#define TDS_SF_CASE_INSENSITIVE   (TDS_USMALLINT) 0x010
#define TDS_SF_KATATYPE_INSENSITIVE   (TDS_USMALLINT) 0x040
#define TDS_SF_WIDTH_INSENSITIVE   (TDS_USMALLINT) 0x080
#define TDS_SP_CURSOR   1
#define TDS_SP_CURSORCLOSE   9
#define TDS_SP_CURSOREXECUTE   4
#define TDS_SP_CURSORFETCH   7
#define TDS_SP_CURSOROPEN   2
#define TDS_SP_CURSOROPTION   8
#define TDS_SP_CURSORPREPARE   3
#define TDS_SP_CURSORPREPEXEC   5
#define TDS_SP_CURSORUNPREPARE   6
#define TDS_SP_EXECUTE   12
#define TDS_SP_EXECUTESQL   10
#define TDS_SP_PREPARE   11
#define TDS_SP_PREPEXEC   13
#define TDS_SP_PREPEXECRPC   14
#define TDS_SP_UNPREPARE   15
#define TDS_STATUS_RESULT   4043
#define TDS_STR_APPENDMODE   "dump file append"
#define TDS_STR_BLKSZ   "initial block size"
#define TDS_STR_CHARSET   "charset"
#define TDS_STR_CLCHARSET   "client charset"
#define TDS_STR_CONNTIMEOUT   "connect timeout"
#define TDS_STR_DATEFMT   "date format"
#define TDS_STR_DEBUGFLAGS   "debug flags"
#define TDS_STR_DEBUGLVL   "debug level"
#define TDS_STR_DUMPFILE   "dump file"
#define TDS_STR_EMUL_LE   "emulate little endian"
#define TDS_STR_ENCRYPTION   "encryption"
#define TDS_STR_ENCRYPTION_OFF   "off"
#define TDS_STR_ENCRYPTION_REQUEST   "request"
#define TDS_STR_ENCRYPTION_REQUIRE   "require"
#define TDS_STR_HOST   "host"
#define TDS_STR_HOSTNAME   "hostname"
#define TDS_STR_INSTANCE   "instance"
#define TDS_STR_LANGUAGE   "language"
#define TDS_STR_PORT   "port"
#define TDS_STR_QUERY_TIMEOUT   "query timeout"
#define TDS_STR_SWAPDT   "swap broken dates"
#define TDS_STR_SWAPMNY   "swap broken money"
#define TDS_STR_TEXTSZ   "text size"
#define TDS_STR_TIMEOUT   "timeout"
#define TDS_STR_VERSION   "tds version"
#define TDS_SUCCEED   1
#define TDS_SYB_VER(maj, min, x)   (((maj)<<24)|((min)<<16)|(x)<<8)
 Calc a version number for Sybase.
#define TDS_TABNAME_TOKEN   164
#define TDS_TOKEN_FLAG(flag)   TDS_RETURN_##flag = (1 << (TDS_TOKEN_RES_##flag*2)), TDS_STOPAT_##flag = (2 << (TDS_TOKEN_RES_##flag*2))
#define TDS_UT_TIMESTAMP   80
#define TDS_VECTOR_SIZE(x)   (sizeof(x)/sizeof(x[0]))
#define TDS_ZERO_FREE(x)   do {free((x)); (x) = NULL;} while(0)
#define XSYBBINARY   XSYBBINARY
#define XSYBCHAR   XSYBCHAR
#define XSYBNCHAR   XSYBNCHAR
#define XSYBNVARCHAR   XSYBNVARCHAR
#define XSYBVARBINARY   XSYBVARBINARY
#define XSYBVARCHAR   XSYBVARCHAR

Typedefs

typedef _tds_bcpcoldata BCPCOLDATA
typedef DSTR_STRUCT DSTR
typedef char TDS_CHAR
typedef _tds_compiletime_settings TDS_COMPILETIME_SETTINGS
 A structure to hold all the compile-time settings.
typedef enum _tds_cursor_fetch TDS_CURSOR_FETCH
typedef enum _tds_cursor_operation TDS_CURSOR_OPERATION
typedef _tds_cursor_status TDS_CURSOR_STATUS
typedef tdsdatetime TDS_DATETIME
typedef tdsdatetime4 TDS_DATETIME4
typedef _tds_encoding TDS_ENCODING
 Information relevant to libiconv.
typedef enum tds_encryption_level TDS_ENCRYPTION_LEVEL
typedef tds_sysdep_real64_type TDS_FLOAT
typedef tds_sysdep_int32_type TDS_INT
typedef tds_sysdep_int64_type TDS_INT8
typedef tds_sysdep_intptr_type TDS_INTPTR
typedef tdsmoney TDS_MONEY
typedef tdsmoney4 TDS_MONEY4
typedef tdsnumeric TDS_NUMERIC
typedef tdsoldmoney TDS_OLD_MONEY
typedef tds_option_arg TDS_OPTION_ARG
typedef enum tds_packet_type TDS_PACKET_TYPE
typedef tds_sysdep_real32_type TDS_REAL
typedef tds_sysdep_int16_type TDS_SMALLINT
typedef enum _TDS_STATE TDS_STATE
 values for tds->state
typedef unsigned char TDS_TINYINT
typedef unsigned char TDS_UCHAR
typedef unsigned tds_sysdep_int32_type TDS_UINT
typedef unsigned tds_sysdep_int64_type TDS_UINT8
typedef tdsunique TDS_UNIQUE
typedef unsigned tds_sysdep_int16_type TDS_USMALLINT
typedef tdsvarbinary TDS_VARBINARY
typedef tdsvarchar TDS_VARCHAR
typedef tds_authentication TDSAUTHENTICATION
typedef tds_blob TDSBLOB
 Information about blobs (e.g.
typedef tds_column TDSCOLUMN
 Metadata about columns in regular and compute rows.
typedef tds_result_info TDSCOMPUTEINFO
typedef void(* TDSCONFPARSE )(const char *option, const char *value, void *param)
typedef tds_connection TDSCONNECTION
typedef tds_context TDSCONTEXT
typedef _tds_cursor TDSCURSOR
 Holds informations about a cursor.
typedef tdsdaterec TDSDATEREC
 information on data, used by tds_datecrack
typedef tds_dynamic TDSDYNAMIC
 Holds information for a dynamic (also called prepared) query.
typedef tds_env TDSENV
 Current environment as reported by the server.
typedef tdsiconvinfo TDSICONV
typedef tds_locale TDSLOCALE
typedef tds_login TDSLOGIN
typedef tds_message TDSMESSAGE
typedef tds_multiple TDSMULTIPLE
typedef TDSRESULTINFO TDSPARAMINFO
typedef tds_result_info TDSRESULTINFO
 Hold information for any results.
typedef tds_socket TDSSOCKET
typedef tds_upd_col TDSUPDCOL

Enumerations

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_OPT_ARITHOVERFLOW = 0x01, TDS_OPT_NUMERICTRUNC = 0x02 }
enum  { TDS_SYSNAME_SIZE = 512 }
enum  _tds_cursor_fetch {
  TDS_CURSOR_FETCH_NEXT = 1, TDS_CURSOR_FETCH_PREV, TDS_CURSOR_FETCH_FIRST, TDS_CURSOR_FETCH_LAST,
  TDS_CURSOR_FETCH_ABSOLUTE, TDS_CURSOR_FETCH_RELATIVE
}
enum  _tds_cursor_operation { TDS_CURSOR_POSITION = 0, TDS_CURSOR_UPDATE = 1, TDS_CURSOR_DELETE = 2, TDS_CURSOR_INSERT = 4 }
enum  _TDS_STATE {
  TDS_IDLE, TDS_QUERYING, TDS_PENDING, TDS_READING,
  TDS_DEAD
}
 values for tds->state More...
enum  TDS_CURSOR_STATE { TDS_CURSOR_STATE_UNACTIONED = 0, TDS_CURSOR_STATE_REQUESTED = 1, TDS_CURSOR_STATE_SENT = 2, TDS_CURSOR_STATE_ACTIONED = 3 }
enum  TDS_DBG_LOG_STATE {
  TDS_DBG_LOGIN = (1 << 0), 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_encryption_level { TDS_ENCRYPTION_OFF, TDS_ENCRYPTION_REQUEST, TDS_ENCRYPTION_REQUIRE }
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
}
 Flags returned in TDS_DONE token. More...
enum  TDS_ICONV_ENTRY { client2ucs2, client2server_chardata, iso2server_metadata, initial_char_conv_count }
enum  TDS_MULTIPLE_TYPE { TDS_MULTIPLE_QUERY, TDS_MULTIPLE_EXECUTE, TDS_MULTIPLE_RPC }
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_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_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_packet_type {
  TDS_QUERY = 1, TDS_LOGIN = 2, TDS_RPC = 3, TDS_REPLY = 4,
  TDS_CANCEL = 6, TDS_BULK = 7, TDS_NORMAL = 15, TDS7_LOGIN = 16,
  TDS7_AUTH = 17, TDS8_PRELOGIN = 18
}
enum  TDS_SERVER_TYPE {
  SYBCHAR = 47, SYBVARCHAR = 39, SYBINTN = 38, SYBINT1 = 48,
  SYBINT2 = 52, SYBINT4 = 56, 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, SYBBITN = 104,
  SYBNUMERIC = 108, SYBDECIMAL = 106, SYBFLTN = 109, SYBMONEYN = 110,
  SYBDATETIMN = 111, SYBNVARCHAR = 103, SYBINT8 = 127, XSYBCHAR = 175,
  XSYBVARCHAR = 167, XSYBNVARCHAR = 231, XSYBNCHAR = 239, XSYBVARBINARY = 165,
  XSYBBINARY = 173, SYBUNIQUE = 36, SYBVARIANT = 98, SYBLONGBINARY = 225,
  SYBUINT1 = 64, SYBUINT2 = 65, SYBUINT4 = 66, SYBUINT8 = 67,
  SYBBLOB = 36, SYBBOUNDARY = 104, SYBDATE = 49, SYBDATEN = 123,
  SYB5INT8 = 191, SYBINTERVAL = 46, SYBLONGCHAR = 175, SYBSENSITIVITY = 103,
  SYBSINT1 = 176, SYBTIME = 51, SYBTIMEN = 147, SYBUINTN = 68,
  SYBUNITEXT = 174, SYBXML = 163, SYBXML = 163
}
enum  tds_token_flags {
  TDS_HANDLE_ALL = 0, OTHERS, ROWFMT, COMPUTEFMT,
  PARAMFMT, DONE, ROW, COMPUTE,
  PROC, MSG, TDS_TOKEN_RESULTS = TDS_RETURN_ROWFMT|TDS_RETURN_COMPUTEFMT|TDS_RETURN_DONE|TDS_STOPAT_ROW|TDS_STOPAT_COMPUTE|TDS_RETURN_PROC, TDS_TOKEN_TRAILING = TDS_STOPAT_ROWFMT|TDS_STOPAT_COMPUTEFMT|TDS_STOPAT_ROW|TDS_STOPAT_COMPUTE|TDS_STOPAT_MSG|TDS_STOPAT_OTHERS
}
enum  tds_token_results {
  TDS_TOKEN_RES_OTHERS, TDS_TOKEN_RES_ROWFMT, TDS_TOKEN_RES_COMPUTEFMT, TDS_TOKEN_RES_PARAMFMT,
  TDS_TOKEN_RES_DONE, TDS_TOKEN_RES_ROW, TDS_TOKEN_RES_COMPUTE, TDS_TOKEN_RES_PROC,
  TDS_TOKEN_RES_MSG
}
enum  TDS_USER_TYPE { USER_UNICHAR_TYPE = 34, USER_UNIVARCHAR_TYPE = 35 }
enum  TDSERRNO {
  TDSEICONVIU = 2400, TDSEICONVAVAIL = 2401, TDSEICONVO = 2402, TDSEICONVI = 2403,
  TDSEICONV2BIG = 2404, TDSESYNC = 20001, TDSEFCON = 20002, TDSETIME = 20003,
  TDSEREAD = 20004, TDSEWRIT = 20006, TDSESOCK = 20008, TDSECONN = 20009,
  TDSEPWD = 20014, TDSESEOF = 20017, TDSERPND = 20019, TDSEBTOK = 20020,
  TDSEOOB = 20022, TDSECLOS = 20056, TDSEUSCT = 20058, TDSEUTDS = 20146,
  TDSEEUNR = 20185, TDSECAP = 20203, TDSENEG = 20210, TDSEUMSG = 20212,
  TDSECAPTYP = 20213, TDSECLOSEIN = 20292
}

Functions

int tds5_send_optioncmd (TDSSOCKET *tds, TDS_OPTION_CMD tds_command, TDS_OPTION tds_option, TDS_OPTION_ARG *tds_argument, TDS_INT *tds_argsize)
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.
int tds7_get_instance_port (const char *ip_addr, const char *instance)
 Get port of given instance.
void tds7_srv_charset_changed (TDSSOCKET *tds, int sql_collate, int lcid)
BCPCOLDATA * tds_alloc_bcp_column_data (int column_size)
char * tds_alloc_client_sqlstate (int msgno)
TDSCOMPUTEINFO ** tds_alloc_compute_results (TDSSOCKET *tds, int num_cols, int by_cols)
int tds_alloc_compute_row (TDSCOMPUTEINFO *res_info)
TDSCONNECTION * tds_alloc_connection (TDSLOCALE *locale)
 Allocate space for configure structure and initialize with default values.
TDSCONTEXT * tds_alloc_context (void *parent)
TDSCURSORtds_alloc_cursor (TDSSOCKET *tds, const char *name, TDS_INT namelen, const char *query, TDS_INT querylen)
TDSDYNAMICtds_alloc_dynamic (TDSSOCKET *tds, const char *id)
 Allocate a dynamic statement.
TDSLOCALE * tds_alloc_locale (void)
TDSLOGIN * tds_alloc_login (void)
char * tds_alloc_lookup_sqlstate (TDSSOCKET *tds, int msgno)
void * tds_alloc_param_data (TDSCOLUMN *curparam)
 Allocate data for a parameter.
TDSPARAMINFOtds_alloc_param_result (TDSPARAMINFO *old_param)
 Adds a output parameter to TDSPARAMINFO.
TDSRESULTINFOtds_alloc_results (int num_cols)
int tds_alloc_row (TDSRESULTINFO *res_info)
 Allocate space for row store return NULL on out of memory.
TDSSOCKETtds_alloc_socket (TDSCONTEXT *context, int bufsize)
int tds_close_socket (TDSSOCKET *tds)
void tds_config_verstr (const char *tdsver, TDSCONNECTION *connection)
 Set TDS version from given string.
int tds_connect (TDSSOCKET *tds, TDSCONNECTION *connection)
 Do a connection to socket.
int tds_count_placeholders (const char *query)
 Count the number of placeholders in query.
int tds_cursor_close (TDSSOCKET *tds, TDSCURSOR *cursor)
int tds_cursor_dealloc (TDSSOCKET *tds, TDSCURSOR *cursor)
 Send a deallocation request to server libTDS care for all deallocation stuff (memory and server cursor) Caller should not use cursor pointer anymore.
void tds_cursor_deallocated (TDSSOCKET *tds, TDSCURSOR *cursor)
int tds_cursor_declare (TDSSOCKET *tds, TDSCURSOR *cursor, TDSPARAMINFO *params, int *send)
int tds_cursor_fetch (TDSSOCKET *tds, TDSCURSOR *cursor, TDS_CURSOR_FETCH fetch_type, TDS_INT i_row)
int tds_cursor_open (TDSSOCKET *tds, TDSCURSOR *cursor, TDSPARAMINFO *params, int *send)
int tds_cursor_setname (TDSSOCKET *tds, TDSCURSOR *cursor)
int tds_cursor_setrows (TDSSOCKET *tds, TDSCURSOR *cursor, int *send)
int tds_cursor_update (TDSSOCKET *tds, TDSCURSOR *cursor, TDS_CURSOR_OPERATION op, TDS_INT i_row, TDSPARAMINFO *params)
TDS_INT tds_datecrack (TDS_INT datetype, const void *di, TDSDATEREC *dr)
 Convert from db date format to a structured date format.
void tds_fix_connection (TDSCONNECTION *connection)
 Fix configuration after reading it.
int tds_flush_packet (TDSSOCKET *tds)
 Flush packet to server.
void tds_free_all_results (TDSSOCKET *tds)
void tds_free_bcp_column_data (BCPCOLDATA *coldata)
void tds_free_connection (TDSCONNECTION *connection)
void tds_free_context (TDSCONTEXT *locale)
void tds_free_dynamic (TDSSOCKET *tds, TDSDYNAMIC *dyn)
 Frees dynamic statement and remove from TDS.
void tds_free_input_params (TDSDYNAMIC *dyn)
 Frees all allocated input parameters of a dynamic statement.
void tds_free_locale (TDSLOCALE *locale)
void tds_free_login (TDSLOGIN *login)
void tds_free_msg (TDSMESSAGE *message)
void tds_free_param_result (TDSPARAMINFO *param_info)
 Delete latest parameter.
void tds_free_param_results (TDSPARAMINFO *param_info)
void tds_free_result_info (TDSRESULTINFO *info)
void tds_free_results (TDSRESULTINFO *res_info)
void tds_free_row (TDSRESULTINFO *res_info, unsigned char *row)
void tds_free_socket (TDSSOCKET *tds)
unsigned char tds_get_byte (TDSSOCKET *tds)
int tds_get_char_data (TDSSOCKET *tds, char *dest, size_t wire_size, TDSCOLUMN *curcol)
 Fetch character data the wire.
const TDS_COMPILETIME_SETTINGStds_get_compiletime_settings (void)
 Return a structure capturing the compile-time settings provided to the configure script.
int tds_get_conversion_type (int srctype, int colsize)
 Return type suitable for conversions (convert all nullable types to fixed type).
int tds_get_dynid (TDSSOCKET *tds, char **id)
 Get an id for dynamic query based on TDS information.
char * tds_get_homedir (void)
 Get user home directory.
TDS_INT tds_get_int (TDSSOCKET *tds)
 Get an int32 from the server.
TDS_INT8 tds_get_int8 (TDSSOCKET *tds)
TDSLOCALE * tds_get_locale (void)
 Get locale information.
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.
void * tds_get_parent (TDSSOCKET *tds)
int tds_get_size_by_type (int servertype)
 Return the number of bytes needed by specified type.
TDS_SMALLINT tds_get_smallint (TDSSOCKET *tds)
 Get an int16 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_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
hostent * tds_gethostbyaddr_r (const char *addr, int len, int type, struct hostent *result, char *buffer, int buflen, int *h_errnop)
hostent * tds_gethostbyname_r (const char *servername, struct hostent *result, char *buffer, int buflen, int *h_errnop)
void tds_getmac (int s, unsigned char mac[6])
servent * tds_getservbyname_r (const char *name, const char *proto, struct servent *result, char *buffer, int buflen)
unsigned int tds_gettime_ms (void)
TDSAUTHENTICATION * tds_gss_get_auth (TDSSOCKET *tds)
int tds_iconv_alloc (TDSSOCKET *tds)
 Allocate iconv stuff.
void tds_iconv_close (TDSSOCKET *tds)
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).
void tds_iconv_open (TDSSOCKET *tds, const char *charset)
int tds_init_write_buf (TDSSOCKET *tds)
TDSDYNAMICtds_lookup_dynamic (TDSSOCKET *tds, char *id)
 Find a dynamic given string id.
void tds_lookup_host (const char *servername, char *ip)
 Given a servername lookup the hostname.
char * tds_money_to_string (const TDS_MONEY *money, char *s)
int tds_multiple_done (TDSSOCKET *tds, TDSMULTIPLE *multiple)
int tds_multiple_execute (TDSSOCKET *tds, TDSMULTIPLE *multiple, TDSDYNAMIC *dyn)
int tds_multiple_init (TDSSOCKET *tds, TDSMULTIPLE *multiple, TDS_MULTIPLE_TYPE type)
int tds_multiple_query (TDSSOCKET *tds, TDSMULTIPLE *multiple, const char *query, TDSPARAMINFO *params)
const char * tds_next_placeholder (const char *start)
 Get position of next placeholder.
TDSAUTHENTICATION * tds_ntlm_get_auth (TDSSOCKET *tds)
 Build a NTLMSPP packet to send to server.
TDS_INT tds_numeric_change_prec_scale (TDS_NUMERIC *numeric, unsigned char new_prec, unsigned char new_scale)
TDS_INT tds_numeric_to_string (const TDS_NUMERIC *numeric, char *s)
int tds_open_socket (TDSSOCKET *tds, const char *ip_addr, unsigned int port, int timeout)
unsigned char tds_peek (TDSSOCKET *tds)
int tds_process_cancel (TDSSOCKET *tds)
int tds_process_login_tokens (TDSSOCKET *tds)
 tds_process_login_tokens() is called after sending the login packet to the server.
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 tds_process_tokens (TDSSOCKET *tds, TDS_INT *result_type, int *done_flags, unsigned flag)
 process all streams.
const char * tds_prtype (int token)
int tds_put_buf (TDSSOCKET *tds, const unsigned char *buf, int dsize, int ssize)
int tds_put_byte (TDSSOCKET *tds, unsigned char c)
int tds_put_int (TDSSOCKET *tds, TDS_INT i)
int tds_put_int8 (TDSSOCKET *tds, TDS_INT8 i)
int tds_put_n (TDSSOCKET *tds, const void *buf, int n)
int tds_put_smallint (TDSSOCKET *tds, TDS_SMALLINT si)
int tds_put_string (TDSSOCKET *tds, const char *buf, int len)
 Output a string to wire automatic translate string to unicode if needed.