From e624492e408b49cf2e8904ad135900d2dfe77413 Mon Sep 17 00:00:00 2001 From: Patrick van Kleef Date: Mon, 1 Sep 2008 15:36:56 +0000 Subject: [PATCH] MFH: - Fixed code to use ODBC 3.52 datatypes for 64bit systems (bug #43666) --- ext/odbc/php_odbc.c | 143 ++++++++++++++++++----------------- ext/odbc/php_odbc.h | 2 +- ext/odbc/php_odbc_includes.h | 36 +++++---- 3 files changed, 93 insertions(+), 88 deletions(-) diff --git a/ext/odbc/php_odbc.c b/ext/odbc/php_odbc.c index 720c7f81ce..dbd848cbc2 100644 --- a/ext/odbc/php_odbc.c +++ b/ext/odbc/php_odbc.c @@ -64,7 +64,7 @@ void odbc_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent); static int le_result, le_conn, le_pconn; -#define SAFE_SQL_NTS(n) ((SWORD) ((n)?(SQL_NTS):0)) +#define SAFE_SQL_NTS(n) ((SQLSMALLINT) ((n)?(SQL_NTS):0)) /* {{{ odbc_functions[] */ @@ -180,7 +180,7 @@ static void _free_odbc_result(zend_rsrc_list_entry *rsrc TSRMLS_DC) if (res->stmt) { #if defined(HAVE_SOLID) || defined(HAVE_SOLID_30) || defined(HAVE_SOLID_35) SQLTransact(res->conn_ptr->henv, res->conn_ptr->hdbc, - (UWORD)SQL_COMMIT); + (SQLUSMALLINT) SQL_COMMIT); #endif rc = SQLFreeStmt(res->stmt,SQL_DROP); /* We don't want the connection to be closed after the last statment has been closed @@ -565,9 +565,9 @@ PHP_MINFO_FUNCTION(odbc) void odbc_sql_error(ODBC_SQL_ERROR_PARAMS) { char state[6]; - SDWORD error; /* Not used */ + SQLINTEGER error; /* Not used */ char errormsg[SQL_MAX_MESSAGE_LENGTH]; - SWORD errormsgsize; /* Not used */ + SQLSMALLINT errormsgsize; /* Not used */ RETCODE rc; ODBC_SQL_ENV_T henv; ODBC_SQL_CONN_T conn; @@ -641,8 +641,8 @@ int odbc_bindcols(odbc_result *result TSRMLS_DC) { RETCODE rc; int i; - SWORD colnamelen; /* Not used */ - SDWORD displaysize; + SQLSMALLINT colnamelen; /* Not used */ + SQLLEN displaysize; result->values = (odbc_result_value *) safe_emalloc(sizeof(odbc_result_value), result->numcols, 0); @@ -650,9 +650,9 @@ int odbc_bindcols(odbc_result *result TSRMLS_DC) result->binmode = ODBCG(defaultbinmode); for(i = 0; i < result->numcols; i++) { - rc = SQLColAttributes(result->stmt, (UWORD)(i+1), SQL_COLUMN_NAME, + rc = SQLColAttributes(result->stmt, (SQLUSMALLINT)(i+1), SQL_COLUMN_NAME, result->values[i].name, sizeof(result->values[i].name), &colnamelen, 0); - rc = SQLColAttributes(result->stmt, (UWORD)(i+1), SQL_COLUMN_TYPE, + rc = SQLColAttributes(result->stmt, (SQLUSMALLINT)(i+1), SQL_COLUMN_TYPE, NULL, 0, NULL, &result->values[i].coltype); /* Don't bind LONG / BINARY columns, so that fetch behaviour can @@ -670,17 +670,17 @@ int odbc_bindcols(odbc_result *result TSRMLS_DC) #ifdef HAVE_ADABAS case SQL_TIMESTAMP: result->values[i].value = (char *)emalloc(27); - SQLBindCol(result->stmt, (UWORD)(i+1), SQL_C_CHAR, result->values[i].value, + SQLBindCol(result->stmt, (SQLUSMALLINT)(i+1), SQL_C_CHAR, result->values[i].value, 27, &result->values[i].vallen); break; #endif /* HAVE_ADABAS */ default: - rc = SQLColAttributes(result->stmt, (UWORD)(i+1), SQL_COLUMN_DISPLAY_SIZE, + rc = SQLColAttributes(result->stmt, (SQLUSMALLINT)(i+1), SQL_COLUMN_DISPLAY_SIZE, NULL, 0, NULL, &displaysize); displaysize = displaysize <= result->longreadlen ? displaysize : result->longreadlen; result->values[i].value = (char *)emalloc(displaysize + 1); - rc = SQLBindCol(result->stmt, (UWORD)(i+1), SQL_C_CHAR, result->values[i].value, + rc = SQLBindCol(result->stmt, (SQLUSMALLINT)(i+1), SQL_C_CHAR, result->values[i].value, displaysize + 1, &result->values[i].vallen); break; } @@ -702,7 +702,7 @@ void odbc_transact(INTERNAL_FUNCTION_PARAMETERS, int type) ZEND_FETCH_RESOURCE2(conn, odbc_connection *, pv_conn, -1, "ODBC-Link", le_conn, le_pconn); - rc = SQLTransact(conn->henv, conn->hdbc, (UWORD)((type)?SQL_COMMIT:SQL_ROLLBACK)); + rc = SQLTransact(conn->henv, conn->hdbc, (SQLUSMALLINT)((type)?SQL_COMMIT:SQL_ROLLBACK)); if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) { odbc_sql_error(conn, SQL_NULL_HSTMT, "SQLTransact"); RETURN_FALSE; @@ -727,7 +727,7 @@ static int _close_pconn_with_id(zend_rsrc_list_entry *le, int *id TSRMLS_DC) void odbc_column_lengths(INTERNAL_FUNCTION_PARAMETERS, int type) { odbc_result *result; -#if defined(HAVE_SOLID) || defined(HAVE_SOLID_30) || defined(HAVE_OPENLINK) +#if defined(HAVE_SOLID) || defined(HAVE_SOLID_30) /* this seems to be necessary for Solid2.3 ( tested by * tammy@synchronis.com) and Solid 3.0 (tested by eric@terra.telemediair.nl) * Solid does not seem to declare a SQLINTEGER, but it does declare a @@ -736,7 +736,7 @@ void odbc_column_lengths(INTERNAL_FUNCTION_PARAMETERS, int type) */ SDWORD len; #else - SQLINTEGER len; + SQLLEN len; #endif zval **pv_res, **pv_num; @@ -763,7 +763,7 @@ void odbc_column_lengths(INTERNAL_FUNCTION_PARAMETERS, int type) RETURN_FALSE; } - SQLColAttributes(result->stmt, (UWORD)Z_LVAL_PP(pv_num), + SQLColAttributes(result->stmt, (SQLUSMALLINT)Z_LVAL_PP(pv_num), (SQLUSMALLINT) (type?SQL_COLUMN_SCALE:SQL_COLUMN_PRECISION), NULL, 0, NULL, &len); @@ -841,7 +841,7 @@ PHP_FUNCTION(odbc_prepare) odbc_connection *conn; RETCODE rc; #ifdef HAVE_SQL_EXTENDED_FETCH - UDWORD scrollopts; + SQLUINTEGER scrollopts; #endif if (zend_get_parameters_ex(2, &pv_conn, &pv_query) == FAILURE) { @@ -932,15 +932,15 @@ PHP_FUNCTION(odbc_execute) { zval **pv_res, **pv_param_arr, **tmp; typedef struct params_t { - SDWORD vallen; + SQLLEN vallen; int fp; } params_t; params_t *params = NULL; char *filename; unsigned char otype; - SWORD sqltype, ctype, scale; - SWORD nullable; - UDWORD precision; + SQLSMALLINT sqltype, ctype, scale; + SQLSMALLINT nullable; + SQLULEN precision; odbc_result *result; int numArgs, i, ne; RETCODE rc; @@ -997,7 +997,7 @@ PHP_FUNCTION(odbc_execute) RETURN_FALSE; } - SQLDescribeParam(result->stmt, (UWORD)i, &sqltype, &precision, + SQLDescribeParam(result->stmt, (SQLUSMALLINT)i, &sqltype, &precision, &scale, &nullable); params[i-1].vallen = Z_STRLEN_PP(tmp); params[i-1].fp = -1; @@ -1044,7 +1044,7 @@ PHP_FUNCTION(odbc_execute) params[i-1].vallen = SQL_LEN_DATA_AT_EXEC(0); - rc = SQLBindParameter(result->stmt, (UWORD)i, SQL_PARAM_INPUT, + rc = SQLBindParameter(result->stmt, (SQLUSMALLINT)i, SQL_PARAM_INPUT, ctype, sqltype, precision, scale, (void *)params[i-1].fp, 0, ¶ms[i-1].vallen); @@ -1056,7 +1056,7 @@ PHP_FUNCTION(odbc_execute) params[i-1].vallen = SQL_NULL_DATA; } - rc = SQLBindParameter(result->stmt, (UWORD)i, SQL_PARAM_INPUT, + rc = SQLBindParameter(result->stmt, (SQLUSMALLINT)i, SQL_PARAM_INPUT, ctype, sqltype, precision, scale, Z_STRVAL_PP(tmp), 0, ¶ms[i-1].vallen); @@ -1131,7 +1131,8 @@ PHP_FUNCTION(odbc_execute) PHP_FUNCTION(odbc_cursor) { zval **pv_res; - SWORD len, max_len; + SQLUSMALLINT max_len; + SQLSMALLINT len; char *cursorname; odbc_result *result; RETCODE rc; @@ -1150,12 +1151,12 @@ PHP_FUNCTION(odbc_cursor) if (max_len > 0) { cursorname = emalloc(max_len + 1); - rc = SQLGetCursorName(result->stmt,cursorname,(SWORD)max_len,&len); + rc = SQLGetCursorName(result->stmt,cursorname,(SQLSMALLINT)max_len,&len); if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) { char state[6]; /* Not used */ - SDWORD error; /* Not used */ - char errormsg[255]; - SWORD errormsgsize; /* Not used */ + SQLINTEGER error; /* Not used */ + char errormsg[SQL_MAX_MESSAGE_LENGTH]; + SQLSMALLINT errormsgsize; /* Not used */ SQLError( result->conn_ptr->henv, result->conn_ptr->hdbc, result->stmt, state, &error, errormsg, @@ -1257,7 +1258,7 @@ PHP_FUNCTION(odbc_exec) odbc_connection *conn; RETCODE rc; #ifdef HAVE_SQL_EXTENDED_FETCH - UDWORD scrollopts; + SQLUINTEGER scrollopts; #endif numArgs = ZEND_NUM_ARGS(); @@ -1351,12 +1352,12 @@ static void php_odbc_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int result_type) int i; odbc_result *result; RETCODE rc; - SWORD sql_c_type; + SQLSMALLINT sql_c_type; char *buf = NULL; #ifdef HAVE_SQL_EXTENDED_FETCH - UDWORD crow; - UWORD RowStatus[1]; - SDWORD rownum = -1; + SQLULEN crow; + SQLUSMALLINT RowStatus[1]; + SQLLEN rownum = -1; zval **pv_res, **pv_row, *tmp; switch(ZEND_NUM_ARGS()) { @@ -1435,7 +1436,7 @@ static void php_odbc_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int result_type) break; } if (buf == NULL) buf = emalloc(result->longreadlen + 1); - rc = SQLGetData(result->stmt, (UWORD)(i + 1), sql_c_type, + rc = SQLGetData(result->stmt, (SQLUSMALLINT)(i + 1), sql_c_type, buf, result->longreadlen + 1, &result->values[i].vallen); if (rc == SQL_ERROR) { @@ -1509,14 +1510,14 @@ PHP_FUNCTION(odbc_fetch_into) int numArgs, i; odbc_result *result; RETCODE rc; - SWORD sql_c_type; + SQLSMALLINT sql_c_type; char *buf = NULL; zval **pv_res, **pv_res_arr, *tmp; #ifdef HAVE_SQL_EXTENDED_FETCH zval **pv_row; - UDWORD crow; - UWORD RowStatus[1]; - SDWORD rownum = -1; + SQLULEN crow; + SQLUSMALLINT RowStatus[1]; + SQLLEN rownum = -1; #endif /* HAVE_SQL_EXTENDED_FETCH */ numArgs = ZEND_NUM_ARGS(); @@ -1595,7 +1596,7 @@ PHP_FUNCTION(odbc_fetch_into) } if (buf == NULL) buf = emalloc(result->longreadlen + 1); - rc = SQLGetData(result->stmt, (UWORD)(i + 1),sql_c_type, + rc = SQLGetData(result->stmt, (SQLUSMALLINT)(i + 1),sql_c_type, buf, result->longreadlen + 1, &result->values[i].vallen); if (rc == SQL_ERROR) { @@ -1666,13 +1667,13 @@ PHP_FUNCTION(solid_fetch_prev) PHP_FUNCTION(odbc_fetch_row) { int numArgs; - SDWORD rownum = 1; + SQLLEN rownum = 1; odbc_result *result; RETCODE rc; zval **pv_res, **pv_row; #ifdef HAVE_SQL_EXTENDED_FETCH - UDWORD crow; - UWORD RowStatus[1]; + SQLULEN crow; + SQLUSMALLINT RowStatus[1]; #endif numArgs = ZEND_NUM_ARGS(); @@ -1728,15 +1729,15 @@ PHP_FUNCTION(odbc_result) { char *field; int field_ind; - SWORD sql_c_type = SQL_C_CHAR; + SQLSMALLINT sql_c_type = SQL_C_CHAR; odbc_result *result; int i = 0; RETCODE rc; - SDWORD fieldsize; + SQLLEN fieldsize; zval **pv_res, **pv_field; #ifdef HAVE_SQL_EXTENDED_FETCH - UDWORD crow; - UWORD RowStatus[1]; + SQLULEN crow; + SQLUSMALLINT RowStatus[1]; #endif field_ind = -1; @@ -1814,8 +1815,8 @@ PHP_FUNCTION(odbc_result) else fieldsize = result->longreadlen; } else { - SQLColAttributes(result->stmt, (UWORD)(field_ind + 1), - (UWORD)((sql_c_type == SQL_C_BINARY) ? SQL_COLUMN_LENGTH : + SQLColAttributes(result->stmt, (SQLUSMALLINT)(field_ind + 1), + (SQLUSMALLINT)((sql_c_type == SQL_C_BINARY) ? SQL_COLUMN_LENGTH : SQL_COLUMN_DISPLAY_SIZE), NULL, 0, NULL, &fieldsize); } @@ -1826,7 +1827,7 @@ PHP_FUNCTION(odbc_result) /* SQLGetData will truncate CHAR data to fieldsize - 1 bytes and append \0. * For binary data it is truncated to fieldsize bytes. */ - rc = SQLGetData(result->stmt, (UWORD)(field_ind + 1), sql_c_type, + rc = SQLGetData(result->stmt, (SQLUSMALLINT)(field_ind + 1), sql_c_type, field, fieldsize, &result->values[field_ind].vallen); if (rc == SQL_ERROR) { @@ -1869,7 +1870,7 @@ PHP_FUNCTION(odbc_result) /* Call SQLGetData() until SQL_SUCCESS is returned */ while(1) { - rc = SQLGetData(result->stmt, (UWORD)(field_ind + 1),sql_c_type, + rc = SQLGetData(result->stmt, (SQLUSMALLINT)(field_ind + 1),sql_c_type, field, fieldsize, &result->values[field_ind].vallen); if (rc == SQL_ERROR) { @@ -1904,10 +1905,10 @@ PHP_FUNCTION(odbc_result_all) odbc_result *result; RETCODE rc; zval **pv_res, **pv_format; - SWORD sql_c_type; + SQLSMALLINT sql_c_type; #ifdef HAVE_SQL_EXTENDED_FETCH - UDWORD crow; - UWORD RowStatus[1]; + SQLULEN crow; + SQLUSMALLINT RowStatus[1]; #endif numArgs = ZEND_NUM_ARGS(); @@ -1973,7 +1974,7 @@ PHP_FUNCTION(odbc_result_all) if (buf == NULL) buf = emalloc(result->longreadlen); - rc = SQLGetData(result->stmt, (UWORD)(i + 1),sql_c_type, + rc = SQLGetData(result->stmt, (SQLUSMALLINT)(i + 1),sql_c_type, buf, result->longreadlen, &result->values[i].vallen); php_printf(""); @@ -2139,7 +2140,7 @@ int odbc_sqlconnect(odbc_connection **conn, char *db, char *uid, char *pwd, int } /* Possible fix for bug #10250 * Needs testing on UnixODBC < 2.0.5 though. */ -#if defined(HAVE_EMPRESS) || defined(HAVE_UNIXODBC) || defined(PHP_WIN32) +#if defined(HAVE_EMPRESS) || defined(HAVE_UNIXODBC) || defined(PHP_WIN32) || defined (HAVE_IODBC) /* * Uncomment the line above, and comment line below to fully test * #ifdef HAVE_EMPRESS */ { @@ -2315,7 +2316,7 @@ try_and_get_another_connection: if(ODBCG(check_persistent)){ RETCODE ret; UCHAR d_name[32]; - SWORD len; + SQLSMALLINT len; ret = SQLGetInfo(db_conn->hdbc, SQL_DATA_SOURCE_READ_ONLY, @@ -2431,7 +2432,7 @@ PHP_FUNCTION(odbc_close) PHP_FUNCTION(odbc_num_rows) { odbc_result *result; - SDWORD rows; + SQLLEN rows; zval **pv_res; if (zend_get_parameters_ex(1, &pv_res) == FAILURE) { @@ -2547,7 +2548,7 @@ PHP_FUNCTION(odbc_field_type) { odbc_result *result; char tmp[32]; - SWORD tmplen; + SQLSMALLINT tmplen; zval **pv_res, **pv_num; if (zend_get_parameters_ex(2, &pv_res, &pv_num) == FAILURE) { @@ -2573,7 +2574,7 @@ PHP_FUNCTION(odbc_field_type) RETURN_FALSE; } - SQLColAttributes(result->stmt, (UWORD)Z_LVAL_PP(pv_num), + SQLColAttributes(result->stmt, (SQLUSMALLINT)Z_LVAL_PP(pv_num), SQL_COLUMN_TYPE_NAME, tmp, 31, &tmplen, NULL); RETURN_STRING(tmp,1) } @@ -2667,7 +2668,7 @@ PHP_FUNCTION(odbc_autocommit) } RETVAL_TRUE; } else { - SDWORD status; + SQLINTEGER status; rc = SQLGetConnectOption(conn->hdbc, SQL_AUTOCOMMIT, (PTR)&status); if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) { @@ -2898,7 +2899,7 @@ PHP_FUNCTION(odbc_columns) odbc_result *result = NULL; odbc_connection *conn; char *cat = NULL, *schema = NULL, *table = NULL, *column = NULL; - SWORD cat_len=0, schema_len=0, table_len=0, column_len=0; + SQLSMALLINT cat_len=0, schema_len=0, table_len=0, column_len=0; RETCODE rc; int argc; @@ -3157,7 +3158,7 @@ PHP_FUNCTION(odbc_gettypeinfo) odbc_connection *conn; RETCODE rc; int argc; - SWORD data_type = SQL_ALL_TYPES; + SQLSMALLINT data_type = SQL_ALL_TYPES; argc = ZEND_NUM_ARGS(); if (argc == 1) { @@ -3169,7 +3170,7 @@ PHP_FUNCTION(odbc_gettypeinfo) WRONG_PARAM_COUNT; } convert_to_long_ex(pv_data_type); - data_type = (SWORD) Z_LVAL_PP(pv_data_type); + data_type = (SQLSMALLINT) Z_LVAL_PP(pv_data_type); } else { WRONG_PARAM_COUNT; } @@ -3453,8 +3454,8 @@ PHP_FUNCTION(odbc_specialcolumns) odbc_result *result = NULL; odbc_connection *conn; char *cat = NULL, *schema = NULL, *name = NULL; - UWORD type; - UWORD scope, nullable; + SQLUSMALLINT type; + SQLUSMALLINT scope, nullable; RETCODE rc; int argc; @@ -3465,7 +3466,7 @@ PHP_FUNCTION(odbc_specialcolumns) WRONG_PARAM_COUNT; } convert_to_long_ex(pv_type); - type = (UWORD) Z_LVAL_PP(pv_type); + type = (SQLUSMALLINT) Z_LVAL_PP(pv_type); convert_to_string_ex(pv_cat); cat = Z_STRVAL_PP(pv_cat); convert_to_string_ex(pv_schema); @@ -3473,9 +3474,9 @@ PHP_FUNCTION(odbc_specialcolumns) convert_to_string_ex(pv_name); name = Z_STRVAL_PP(pv_name); convert_to_long_ex(pv_scope); - scope = (UWORD) Z_LVAL_PP(pv_scope); + scope = (SQLUSMALLINT) Z_LVAL_PP(pv_scope); convert_to_long_ex(pv_nullable); - nullable = (UWORD) Z_LVAL_PP(pv_nullable); + nullable = (SQLUSMALLINT) Z_LVAL_PP(pv_nullable); } else { WRONG_PARAM_COUNT; } @@ -3537,7 +3538,7 @@ PHP_FUNCTION(odbc_statistics) odbc_result *result = NULL; odbc_connection *conn; char *cat = NULL, *schema = NULL, *name = NULL; - UWORD unique, reserved; + SQLUSMALLINT unique, reserved; RETCODE rc; int argc; @@ -3554,9 +3555,9 @@ PHP_FUNCTION(odbc_statistics) convert_to_string_ex(pv_name); name = Z_STRVAL_PP(pv_name); convert_to_long_ex(pv_unique); - unique = (UWORD) Z_LVAL_PP(pv_unique); + unique = (SQLUSMALLINT) Z_LVAL_PP(pv_unique); convert_to_long_ex(pv_reserved); - reserved = (UWORD) Z_LVAL_PP(pv_reserved); + reserved = (SQLUSMALLINT) Z_LVAL_PP(pv_reserved); } else { WRONG_PARAM_COUNT; } diff --git a/ext/odbc/php_odbc.h b/ext/odbc/php_odbc.h index a877ed4712..f482af3f33 100644 --- a/ext/odbc/php_odbc.h +++ b/ext/odbc/php_odbc.h @@ -33,7 +33,7 @@ extern zend_module_entry odbc_module_entry; #define odbc_module_ptr &odbc_module_entry -#if defined(HAVE_DBMAKER) || defined(PHP_WIN32) || defined(HAVE_IBMDB2) || defined(HAVE_UNIXODBC) || defined(HAVE_BIRDSTEP) +#if defined(HAVE_DBMAKER) || defined(PHP_WIN32) || defined(HAVE_IBMDB2) || defined(HAVE_UNIXODBC) || defined(HAVE_BIRDSTEP) || defined(HAVE_IODBC) # define PHP_ODBC_HAVE_FETCH_HASH 1 #endif diff --git a/ext/odbc/php_odbc_includes.h b/ext/odbc/php_odbc_includes.h index 60bd8c48fb..9add418cf1 100644 --- a/ext/odbc/php_odbc_includes.h +++ b/ext/odbc/php_odbc_includes.h @@ -90,19 +90,19 @@ PHP_FUNCTION(solid_fetch_prev); #elif defined(HAVE_IODBC) /* iODBC library */ +#ifdef CHAR +#undef CHAR +#endif + +#ifdef SQLCHAR +#undef SQLCHAR +#endif + #define ODBC_TYPE "iODBC" -#include -#include +#include +#include +#include #define HAVE_SQL_EXTENDED_FETCH 1 -#define SQL_FD_FETCH_ABSOLUTE 0x00000010L -#define SQL_CURSOR_DYNAMIC 2UL -#define SQL_NO_TOTAL (-4) -#define SQL_SO_DYNAMIC 0x00000004L -#define SQL_LEN_DATA_AT_EXEC_OFFSET (-100) -#define SQL_LEN_DATA_AT_EXEC(length) (-(length)+SQL_LEN_DATA_AT_EXEC_OFFSET) -#ifndef SQL_SUCCEEDED -#define SQL_SUCCEEDED(rc) (((rc)&(~1))==0) -#endif #elif defined(HAVE_UNIXODBC) /* unixODBC library */ @@ -148,8 +148,12 @@ PHP_FUNCTION(solid_fetch_prev); #include #include #define HAVE_SQL_EXTENDED_FETCH 1 +#ifndef SQLSMALLINT #define SQLSMALLINT SWORD +#endif +#ifndef SQLUSMALLINT #define SQLUSMALLINT UWORD +#endif #elif defined(HAVE_BIRDSTEP) /* Raima Birdstep */ @@ -204,7 +208,7 @@ PHP_FUNCTION(solid_fetch_prev); /* Common defines */ -#if defined( HAVE_IBMDB2 ) || defined( HAVE_UNIXODBC ) +#if defined( HAVE_IBMDB2 ) || defined( HAVE_UNIXODBC ) || defined (HAVE_IODBC) #define ODBC_SQL_ENV_T SQLHANDLE #define ODBC_SQL_CONN_T SQLHANDLE #define ODBC_SQL_STMT_T SQLHANDLE @@ -230,15 +234,15 @@ typedef struct odbc_connection { typedef struct odbc_result_value { char name[32]; char *value; - SDWORD vallen; - SDWORD coltype; + SQLLEN vallen; + SQLLEN coltype; } odbc_result_value; typedef struct odbc_result { ODBC_SQL_STMT_T stmt; odbc_result_value *values; - SWORD numcols; - SWORD numparams; + SQLSMALLINT numcols; + SQLSMALLINT numparams; # if HAVE_SQL_EXTENDED_FETCH int fetch_abs; # endif -- 2.50.1