31 #define SQL_DIAG_SS_MSGSTATE    (-1150) 
   32 #define SQL_DIAG_SS_LINE    (-1154) 
   34 #define SQL_SOPT_SS_QUERYNOTIFICATION_TIMEOUT  1233 
   35 #define SQL_SOPT_SS_QUERYNOTIFICATION_MSGTEXT  1234 
   36 #define SQL_SOPT_SS_QUERYNOTIFICATION_OPTIONS  1235 
   38 #ifndef SQL_SS_LENGTH_UNLIMITED 
   39 #define SQL_SS_LENGTH_UNLIMITED 0 
   42 #ifndef SQL_COPT_SS_BASE 
   43 #define SQL_COPT_SS_BASE    1200 
   46 #ifndef SQL_COPT_SS_MARS_ENABLED 
   47 #define SQL_COPT_SS_MARS_ENABLED    (SQL_COPT_SS_BASE+24) 
   50 #ifndef SQL_COPT_SS_OLDPWD 
   51 #define SQL_COPT_SS_OLDPWD  (SQL_COPT_SS_BASE+26) 
   54 #define SQL_INFO_FREETDS_TDS_VERSION    1300 
   55 #define SQL_INFO_FREETDS_SOCKET 1301 
   57 #ifndef SQL_MARS_ENABLED_NO 
   58 #define SQL_MARS_ENABLED_NO 0 
   61 #ifndef SQL_MARS_ENABLED_YES 
   62 #define SQL_MARS_ENABLED_YES    1 
   65 #ifndef SQL_SS_VARIANT 
   66 #define SQL_SS_VARIANT  (-150) 
   70 #define SQL_SS_UDT  (-151) 
   74 #define SQL_SS_XML  (-152) 
   78 #define SQL_SS_TABLE    (-153) 
   82 #define SQL_SS_TIME2    (-154) 
   85 #ifndef SQL_SS_TIMESTAMPOFFSET 
   86 #define SQL_SS_TIMESTAMPOFFSET  (-155) 
   92 #ifndef SQL_C_SS_TIME2 
   93 #define SQL_C_SS_TIME2  (0x4000) 
   96 #ifndef SQL_C_SS_TIMESTAMPOFFSET 
   97 #define SQL_C_SS_TIMESTAMPOFFSET    (0x4001) 
  100 #ifndef SQL_CA_SS_BASE 
  101 #define SQL_CA_SS_BASE 1200 
  104 #ifndef SQL_CA_SS_UDT_CATALOG_NAME 
  105 #define SQL_CA_SS_UDT_CATALOG_NAME  (SQL_CA_SS_BASE+18) 
  108 #ifndef SQL_CA_SS_UDT_SCHEMA_NAME 
  109 #define SQL_CA_SS_UDT_SCHEMA_NAME   (SQL_CA_SS_BASE+19) 
  112 #ifndef SQL_CA_SS_UDT_TYPE_NAME 
  113 #define SQL_CA_SS_UDT_TYPE_NAME (SQL_CA_SS_BASE+20) 
  116 #ifndef SQL_CA_SS_UDT_ASSEMBLY_TYPE_NAME 
  117 #define SQL_CA_SS_UDT_ASSEMBLY_TYPE_NAME    (SQL_CA_SS_BASE+21) 
  120 #ifndef SQL_CA_SS_XML_SCHEMACOLLECTION_CATALOG_NAME 
  121 #define SQL_CA_SS_XML_SCHEMACOLLECTION_CATALOG_NAME (SQL_CA_SS_BASE+22) 
  124 #ifndef SQL_CA_SS_XML_SCHEMACOLLECTION_SCHEMA_NAME 
  125 #define SQL_CA_SS_XML_SCHEMACOLLECTION_SCHEMA_NAME  (SQL_CA_SS_BASE+23) 
  128 #ifndef SQL_CA_SS_XML_SCHEMACOLLECTION_NAME 
  129 #define SQL_CA_SS_XML_SCHEMACOLLECTION_NAME (SQL_CA_SS_BASE+24) 
  136     SQLUINTEGER fraction;
 
  146     SQLUINTEGER fraction;
 
  147     SQLSMALLINT timezone_hour;
 
  148     SQLSMALLINT timezone_minute;
 
  161 #ifndef BCPKEEPIDENTITY 
  162 #define BCPKEEPIDENTITY 8 
  168 #define BCP_DIRECTION_IN 1 
  170 #define SQL_COPT_SS_BCP (SQL_COPT_SS_BASE+19) 
  171 #define SQL_BCP_OFF 0 
  174 #define SQL_COPT_TDSODBC_IMPL_BASE  1500 
  175 #define SQL_COPT_TDSODBC_IMPL_BCP_INITA (SQL_COPT_TDSODBC_IMPL_BASE) 
  176 #define SQL_COPT_TDSODBC_IMPL_BCP_CONTROL   (SQL_COPT_TDSODBC_IMPL_BASE+1) 
  177 #define SQL_COPT_TDSODBC_IMPL_BCP_COLPTR    (SQL_COPT_TDSODBC_IMPL_BASE+2) 
  178 #define SQL_COPT_TDSODBC_IMPL_BCP_SENDROW   (SQL_COPT_TDSODBC_IMPL_BASE+3) 
  179 #define SQL_COPT_TDSODBC_IMPL_BCP_BATCH (SQL_COPT_TDSODBC_IMPL_BASE+4) 
  180 #define SQL_COPT_TDSODBC_IMPL_BCP_DONE  (SQL_COPT_TDSODBC_IMPL_BASE+5) 
  181 #define SQL_COPT_TDSODBC_IMPL_BCP_BIND  (SQL_COPT_TDSODBC_IMPL_BASE+6) 
  182 #define SQL_COPT_TDSODBC_IMPL_BCP_INITW (SQL_COPT_TDSODBC_IMPL_BASE+7) 
  184 #define SQL_VARLEN_DATA -10 
  190     BCP_TYPE_SQLCHAR = 47,      
 
  191 #define BCP_TYPE_SQLCHAR    BCP_TYPE_SQLCHAR 
  192     BCP_TYPE_SQLVARCHAR = 39,   
 
  193 #define BCP_TYPE_SQLVARCHAR BCP_TYPE_SQLVARCHAR 
  194     BCP_TYPE_SQLINTN = 38,      
 
  195 #define BCP_TYPE_SQLINTN    BCP_TYPE_SQLINTN 
  196     BCP_TYPE_SQLINT1 = 48,      
 
  197 #define BCP_TYPE_SQLINT1    BCP_TYPE_SQLINT1 
  198     BCP_TYPE_SQLINT2 = 52,      
 
  199 #define BCP_TYPE_SQLINT2    BCP_TYPE_SQLINT2 
  200     BCP_TYPE_SQLINT4 = 56,      
 
  201 #define BCP_TYPE_SQLINT4    BCP_TYPE_SQLINT4 
  202     BCP_TYPE_SQLINT8 = 127,     
 
  203 #define BCP_TYPE_SQLINT8    BCP_TYPE_SQLINT8 
  204     BCP_TYPE_SQLFLT8 = 62,      
 
  205 #define BCP_TYPE_SQLFLT8    BCP_TYPE_SQLFLT8 
  206     BCP_TYPE_SQLDATETIME = 61,  
 
  207 #define BCP_TYPE_SQLDATETIME    BCP_TYPE_SQLDATETIME 
  208     BCP_TYPE_SQLBIT = 50,       
 
  209 #define BCP_TYPE_SQLBIT BCP_TYPE_SQLBIT 
  210     BCP_TYPE_SQLBITN = 104,     
 
  211 #define BCP_TYPE_SQLBITN    BCP_TYPE_SQLBITN 
  212     BCP_TYPE_SQLTEXT = 35,      
 
  213 #define BCP_TYPE_SQLTEXT    BCP_TYPE_SQLTEXT 
  214     BCP_TYPE_SQLNTEXT = 99,     
 
  215 #define BCP_TYPE_SQLNTEXT   BCP_TYPE_SQLNTEXT 
  216     BCP_TYPE_SQLIMAGE = 34,     
 
  217 #define BCP_TYPE_SQLIMAGE   BCP_TYPE_SQLIMAGE 
  218     BCP_TYPE_SQLMONEY4 = 122,   
 
  219 #define BCP_TYPE_SQLMONEY4  BCP_TYPE_SQLMONEY4 
  220     BCP_TYPE_SQLMONEY = 60,     
 
  221 #define BCP_TYPE_SQLMONEY   BCP_TYPE_SQLMONEY 
  222     BCP_TYPE_SQLDATETIME4 = 58, 
 
  223 #define BCP_TYPE_SQLDATETIME4   BCP_TYPE_SQLDATETIME4 
  224     BCP_TYPE_SQLREAL = 59,      
 
  225     BCP_TYPE_SQLFLT4 = 59,      
 
  226 #define BCP_TYPE_SQLREAL    BCP_TYPE_SQLREAL 
  227 #define BCP_TYPE_SQLFLT4    BCP_TYPE_SQLFLT4 
  228     BCP_TYPE_SQLBINARY = 45,        
 
  229 #define BCP_TYPE_SQLBINARY  BCP_TYPE_SQLBINARY 
  230     BCP_TYPE_SQLVOID = 31,      
 
  231 #define BCP_TYPE_SQLVOID    BCP_TYPE_SQLVOID 
  232     BCP_TYPE_SQLVARBINARY = 37, 
 
  233 #define BCP_TYPE_SQLVARBINARY   BCP_TYPE_SQLVARBINARY 
  234     BCP_TYPE_SQLNUMERIC = 108,  
 
  235 #define BCP_TYPE_SQLNUMERIC BCP_TYPE_SQLNUMERIC 
  236     BCP_TYPE_SQLDECIMAL = 106,  
 
  237 #define BCP_TYPE_SQLDECIMAL BCP_TYPE_SQLDECIMAL 
  238     BCP_TYPE_SQLFLTN = 109,     
 
  239 #define BCP_TYPE_SQLFLTN    BCP_TYPE_SQLFLTN 
  240     BCP_TYPE_SQLMONEYN = 110,   
 
  241 #define BCP_TYPE_SQLMONEYN  BCP_TYPE_SQLMONEYN 
  242     BCP_TYPE_SQLDATETIMN = 111, 
 
  243 #define BCP_TYPE_SQLDATETIMN    BCP_TYPE_SQLDATETIMN 
  244     BCP_TYPE_SQLNVARCHAR = 103, 
 
  245 #define BCP_TYPE_SQLNVARCHAR    BCP_TYPE_SQLNVARCHAR 
  246     BCP_TYPE_SQLUNIQUEID = 36,  
 
  247 #define BCP_TYPE_SQLUNIQUEID    BCP_TYPE_SQLUNIQUEID 
  248     BCP_TYPE_SQLDATETIME2 = 42,    
 
  249 #define BCP_TYPE_SQLDATETIME2   BCP_TYPE_SQLDATETIME2 
  259 #define TDSODBC_INLINE __inline 
  261 #define TDSODBC_INLINE __inline__ 
  264 struct tdsodbc_impl_bcp_init_params
 
  272 static TDSODBC_INLINE RETCODE SQL_API
 
  273 bcp_initA(HDBC hdbc, 
const char *tblname, 
const char *hfile, 
const char *errfile, 
int direction)
 
  275     struct tdsodbc_impl_bcp_init_params params = {tblname, hfile, errfile, direction};
 
  276     return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_INITA, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL;
 
  279 static TDSODBC_INLINE RETCODE SQL_API
 
  280 bcp_initW(HDBC hdbc, 
const SQLWCHAR *tblname, 
const SQLWCHAR *hfile, 
const SQLWCHAR *errfile, 
int direction)
 
  282     struct tdsodbc_impl_bcp_init_params params = {tblname, hfile, errfile, direction};
 
  283     return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_INITW, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL;
 
  286 struct tdsodbc_impl_bcp_control_params
 
  292 static TDSODBC_INLINE RETCODE SQL_API
 
  295     struct tdsodbc_impl_bcp_control_params params = {field, value};
 
  296     return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_CONTROL, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL;
 
  299 struct tdsodbc_impl_bcp_colptr_params
 
  301     const unsigned char * colptr;
 
  305 static TDSODBC_INLINE RETCODE SQL_API
 
  306 bcp_colptr(HDBC hdbc, 
const unsigned char * colptr, 
int table_column)
 
  308     struct tdsodbc_impl_bcp_colptr_params params = {colptr, table_column};
 
  309     return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_COLPTR, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL;
 
  312 static TDSODBC_INLINE RETCODE SQL_API
 
  315     return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_SENDROW, NULL, SQL_IS_POINTER)) ? SUCCEED : FAIL;
 
  318 struct tdsodbc_impl_bcp_batch_params
 
  323 static TDSODBC_INLINE 
int SQL_API
 
  326     struct tdsodbc_impl_bcp_batch_params params = {-1};
 
  327     return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_BATCH, ¶ms, SQL_IS_POINTER)) ? params.rows : -1;
 
  330 struct tdsodbc_impl_bcp_done_params
 
  335 static TDSODBC_INLINE 
int SQL_API
 
  338     struct tdsodbc_impl_bcp_done_params params = {-1};
 
  339     return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_DONE, ¶ms, SQL_IS_POINTER)) ? params.rows : -1;
 
  342 struct tdsodbc_impl_bcp_bind_params
 
  344     const unsigned char * varaddr;
 
  347     const unsigned char * terminator;
 
  353 static TDSODBC_INLINE RETCODE SQL_API
 
  354 bcp_bind(HDBC hdbc, 
const unsigned char * varaddr, 
int prefixlen, 
int varlen,
 
  355     const unsigned char * terminator, 
int termlen, 
int vartype, 
int table_column)
 
  357     struct tdsodbc_impl_bcp_bind_params params = {varaddr, prefixlen, varlen, terminator, termlen, vartype, table_column};
 
  358     return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_BIND, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL;
 
  362 #define bcp_init bcp_initW 
  364 #define bcp_init bcp_initA