]> granicus.if.org Git - php/commitdiff
MFH: - Fixed code to use ODBC 3.52 datatypes for 64bit systems (bug #43666)
authorPatrick van Kleef <iodbc@php.net>
Mon, 1 Sep 2008 15:36:56 +0000 (15:36 +0000)
committerPatrick van Kleef <iodbc@php.net>
Mon, 1 Sep 2008 15:36:56 +0000 (15:36 +0000)
ext/odbc/php_odbc.c
ext/odbc/php_odbc.h
ext/odbc/php_odbc_includes.h

index 720c7f81ce943f26357aa745928f3e06a365c458..dbd848cbc212027b5b198fe1e5638ff7530d849e 100644 (file)
@@ -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,
                                                                          &params[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,
                                                                          &params[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("<td>");
@@ -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;
        }
index a877ed4712c73e3931b5e341bf019e2a87e0bd2b..f482af3f3383f01629790e3a17cea67690324bbe 100644 (file)
@@ -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
 
index 60bd8c48fbef5cce1ada68c3af9ca10b8aaa7ffc..9add418cf17c06bf24868c3ee316503718c923e4 100644 (file)
@@ -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 <isql.h>
-#include <isqlext.h>
+#include <sql.h>
+#include <sqlext.h>
+#include <iodbcext.h>
 #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 <isqlext.h>
 #include <udbcext.h>
 #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