36 #include <freetds/odbc.h>
37 #include <freetds/iconv.h>
40 #define SET_INFO(type, prefix, suffix) do { \
41 drec->sql_desc_literal_prefix = prefix; \
42 drec->sql_desc_literal_suffix = suffix; \
43 drec->sql_desc_type_name = type; \
46 #define SET_INFO2(type, prefix, suffix, len) do { \
47 drec->sql_desc_length = (len); \
48 SET_INFO(type, prefix, suffix); \
62 SET_INFO2(
"time",
"'",
"'", 8 + decimals);
74 SET_INFO2(
"datetimeoffset",
"'",
"'", 26 + decimals);
81 SET_INFO2(
"datetime2",
"'",
"'", 19 + decimals);
174 unsigned char bytes_per_char =
ODBC_CLAMP(col->
char_conv->to.charset.max_bytes_per_char, 2, 3);
212 #if (ODBCVER >= 0x0300)
239 #if (ODBCVER >= 0x0300)
245 SET_INFO2(
"unsigned bigint",
"",
"", 20);
258 SET_INFO2(
"unsigned smallint",
"",
"", 5);
381 #if (ODBCVER >= 0x0300)
390 SET_INFO2(
"uniqueidentifier",
"'",
"'", 36);
437 # define TDS_DEFINE_FUNCS(name) \
438 const TDS_FUNCS tds_ ## name ## _funcs = { \
439 TDS_COMMON_FUNCS(name), \
440 data_ ## name ## _set_type_info, \
void odbc_set_sql_type_info(TDSCOLUMN *col, struct _drecord *drec, SQLINTEGER odbc_ver)
#define SQL_SS_TIMESTAMPOFFSET
struct tagSS_TIME2_STRUCT SQL_SS_TIME2_STRUCT
#define SQL_SS_LENGTH_UNLIMITED
struct tagSS_TIMESTAMPOFFSET_STRUCT SQL_SS_TIMESTAMPOFFSET_STRUCT
#define SYBMSDATETIMEOFFSET
#define tds_get_conversion_type
#define ODBC_CLAMP(x, a, b)
static void data_invalid_set_type_info(TDSCOLUMN *col, struct _drecord *drec, SQLINTEGER odbc_ver)
static void data_sybbigtime_set_type_info(TDSCOLUMN *col, struct _drecord *drec, SQLINTEGER odbc_ver)
static void data_clrudt_set_type_info(TDSCOLUMN *col, struct _drecord *drec, SQLINTEGER odbc_ver)
static void data_mstabletype_set_type_info(TDSCOLUMN *col, struct _drecord *drec, SQLINTEGER odbc_ver)
static void data_variant_set_type_info(TDSCOLUMN *col, struct _drecord *drec, SQLINTEGER odbc_ver)
#define SET_INFO(type, prefix, suffix)
#define SET_INFO2(type, prefix, suffix, len)
#define TDS_DEFINE_FUNCS(name)
static void data_generic_set_type_info(TDSCOLUMN *col, struct _drecord *drec, SQLINTEGER odbc_ver)
static void data_msdatetime_set_type_info(TDSCOLUMN *col, struct _drecord *drec, SQLINTEGER odbc_ver)
static void data_numeric_set_type_info(TDSCOLUMN *col, struct _drecord *drec, SQLINTEGER odbc_ver)
#define SQL_TYPE_TIMESTAMP
#define SQL_CODE_TIMESTAMP
#define SQL_LONGVARBINARY
struct tagDATE_STRUCT DATE_STRUCT
struct tagTIMESTAMP_STRUCT TIMESTAMP_STRUCT
SQLINTEGER sql_desc_num_prec_radix
SQLINTEGER sql_desc_display_size
SQLINTEGER sql_desc_octet_length
SQLSMALLINT sql_desc_unsigned
SQLUINTEGER sql_desc_length
SQLSMALLINT sql_desc_scale
SQLSMALLINT sql_desc_precision
SQLSMALLINT sql_desc_datetime_interval_code
SQLSMALLINT sql_desc_type
SQLSMALLINT sql_desc_concise_type
Metadata about columns in regular and compute rows.
TDS_INT column_size
maximun size of data.
const TDSCOLUMNFUNCS * funcs
TDS_TINYINT column_prec
precision for decimal/numeric
TDS_SERVER_TYPE column_type
This type can be different from wire type because conversion (e.g.
TDSICONV * char_conv
refers to previously allocated iconv information
TDS_TINYINT column_scale
scale for decimal/numeric
struct tds_column::@124 on_server
static const char * type_name(CS_INT value)