CVS update: php31/ext/odbc

From: Date: Sat, 17 Oct 1998 20:45:38 +0000
Subject: CVS update: php31/ext/odbc
Groups: php.dev 
Request: Send a blank email to php-dev+get-1881@lists.php.net to get a copy of this message
Date: Saturday October 17, 1998 @ 16:45 Author: shane Update of /repository/php31/ext/odbc In directory asf:/u2/tmp/cvs-serv29817/ext/odbc Modified Files: unified_odbc.c Log Message: fixes to get 3.1 compiling again under windows. mysql ported from 3.0 then backported to 3.0 Some project file updates porting other extensions from 3.0 in process. fixes to registry functions to support binary Index: php31/ext/odbc/unified_odbc.c diff -c php31/ext/odbc/unified_odbc.c:2.15 php31/ext/odbc/unified_odbc.c:2.16 *** php31/ext/odbc/unified_odbc.c:2.15 Wed Sep 16 15:15:21 1998 --- php31/ext/odbc/unified_odbc.c Sat Oct 17 16:45:37 1998 *************** *** 96,101 **** --- 96,102 ---- {ODBC_FIELD_LEN, PHP3_UODBC_FIELD_LEN, NULL}, {ODBC_FIELD_NAME, PHP3_UODBC_FIELD_NAME, NULL}, {ODBC_FIELD_TYPE, PHP3_UODBC_FIELD_TYPE, NULL}, + {ODBC_FIELD_NUM, PHP3_UODBC_FIELD_NUM, NULL}, {ODBC_FREE_RESULT, PHP3_UODBC_FREE_RESULT, NULL}, {ODBC_NUM_FIELDS, PHP3_UODBC_NUM_FIELDS, NULL}, {ODBC_NUM_ROWS, PHP3_UODBC_NUM_ROWS, NULL}, *************** *** 237,242 **** --- 238,244 ---- SQLAllocEnv(&UODBC_GLOBAL(PHP3_UODBC_MODULE).henv); + #if !PHP_31 cfg_get_string(ODBC_INI_DEFAULTDB, &UODBC_GLOBAL(PHP3_UODBC_MODULE).defDB); cfg_get_string(ODBC_INI_DEFAULTUSER, *************** *** 258,263 **** --- 260,270 ---- == FAILURE) { UODBC_GLOBAL(PHP3_UODBC_MODULE).max_links = -1; } + #else + UODBC_GLOBAL(PHP3_UODBC_MODULE).allow_persistent = -1; + UODBC_GLOBAL(PHP3_UODBC_MODULE).max_persistent = -1; + UODBC_GLOBAL(PHP3_UODBC_MODULE).max_links = -1; + #endif UODBC_GLOBAL(PHP3_UODBC_MODULE).num_persistent = 0; *************** *** 286,291 **** --- 293,302 ---- } #endif + REGISTER_LONG_CONSTANT("ODBC_BINMODE_PASSTHRU", 0, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ODBC_BINMODE_RETURN", 1, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ODBC_BINMODE_CONVERT", 2, CONST_CS | CONST_PERSISTENT); + return SUCCESS; } *************** *** 449,462 **** SWORD errormsgsize; /* Not used */ UODBC_TLS_VARS; ! SQLError(UODBC_GLOBAL(PHP3_UODBC_MODULE).henv, conn, stmt, state, &error, errormsg, ! sizeof(errormsg)-1, &errormsgsize); ! ! if (func) ! php3_error(E_WARNING, "SQL error: %s, SQL state %s in %s", errormsg, ! state, func); ! else ! php3_error(E_WARNING, "SQL error: %s, SQL state %s", errormsg, state); } /* Main User Functions */ --- 460,474 ---- SWORD errormsgsize; /* Not used */ UODBC_TLS_VARS; ! SQLError(UODBC_GLOBAL(PHP3_UODBC_MODULE).henv, conn, stmt, state, ! &error, errormsg, sizeof(errormsg)-1, &errormsgsize); ! if (func) { ! php3_error(E_WARNING, "SQL error: %s, SQL state %s in %s", ! errormsg, state, func); ! } else { ! php3_error(E_WARNING, "SQL error: %s, SQL state %s", ! errormsg, state); ! } } /* Main User Functions */ *************** *** 654,660 **** void PHP3_UODBC_EXECUTE(INTERNAL_FUNCTION_PARAMETERS) { pval *arg1, *arg2, arr, *tmp; ! typedef struct params_t{ SDWORD vallen; int fp; } params_t; --- 666,672 ---- void PHP3_UODBC_EXECUTE(INTERNAL_FUNCTION_PARAMETERS) { pval *arg1, *arg2, arr, *tmp; ! typedef struct params_t { SDWORD vallen; int fp; } params_t; *************** *** 705,711 **** _php3_hash_internal_pointer_reset(arr.value.ht); params = (params_t *)emalloc(sizeof(params_t) * result->numparams); ! for(i = 1; i <= result->numparams; i++){ if (_php3_hash_get_current_data(arr.value.ht, (void **) &tmp) == FAILURE) { php3_error(E_WARNING,"Error getting parameter"); SQLFreeStmt(result->stmt,SQL_RESET_PARAMS); --- 717,723 ---- _php3_hash_internal_pointer_reset(arr.value.ht); params = (params_t *)emalloc(sizeof(params_t) * result->numparams); ! for (i = 1; i <= result->numparams; i++) { if (_php3_hash_get_current_data(arr.value.ht, (void **) &tmp) == FAILURE) { php3_error(E_WARNING,"Error getting parameter"); SQLFreeStmt(result->stmt,SQL_RESET_PARAMS); *************** *** 713,754 **** RETURN_FALSE; } convert_to_string(tmp); ! if (tmp->type != IS_STRING){ php3_error(E_WARNING,"Error converting parameter"); ! SQLFreeStmt(result->stmt,SQL_RESET_PARAMS); _php3_hash_destroy(arr.value.ht); efree(arr.value.ht); efree(params); RETURN_FALSE; } ! SQLDescribeParam(result->stmt,(UWORD)i,&sqltype,&precision,&scale,&nullable); params[i-1].vallen = tmp->value.str.len; params[i-1].fp = -1; ! if (tmp->value.str.val[0] == '\''){ filename = &tmp->value.str.val[1]; filename[tmp->value.str.len - 2] = '\0'; ! if ((params[i-1].fp = open(filename,O_RDONLY)) == -1){ ! php3_error(E_WARNING,"Can´t open file %s",filename); ! SQLFreeStmt(result->stmt,SQL_RESET_PARAMS); ! for(i = 0; i < result->numparams; i++){ ! if (params[i].fp != -1) close(params[i].fp); } _php3_hash_destroy(arr.value.ht); efree(arr.value.ht); efree(params); RETURN_FALSE; ! } params[i-1].vallen = SQL_LEN_DATA_AT_EXEC(0); rc = SQLBindParameter(result->stmt, (UWORD)i, SQL_PARAM_INPUT, ! SQL_C_BINARY, sqltype, precision, scale, ! (void *)params[i-1].fp, 0, &params[i-1].vallen); } else { /*if (IS_SQL_BINARY(sqltype)){ php3_error(E_WARNING,"No Filename for binary parameter"); --- 725,769 ---- RETURN_FALSE; } convert_to_string(tmp); ! if (tmp->type != IS_STRING) { php3_error(E_WARNING,"Error converting parameter"); ! SQLFreeStmt(result->stmt, SQL_RESET_PARAMS); _php3_hash_destroy(arr.value.ht); efree(arr.value.ht); efree(params); RETURN_FALSE; } ! SQLDescribeParam(result->stmt, (UWORD)i, &sqltype, &precision, ! &scale, &nullable); params[i-1].vallen = tmp->value.str.len; params[i-1].fp = -1; ! if (tmp->value.str.val[0] == '\'') { filename = &tmp->value.str.val[1]; filename[tmp->value.str.len - 2] = '\0'; ! if ((params[i-1].fp = open(filename,O_RDONLY)) == -1) { ! php3_error(E_WARNING,"Can't open file %s", filename); ! SQLFreeStmt(result->stmt, SQL_RESET_PARAMS); ! for (i = 0; i < result->numparams; i++) { ! if (params[i].fp != -1) { close(params[i].fp); + } } _php3_hash_destroy(arr.value.ht); efree(arr.value.ht); efree(params); RETURN_FALSE; ! } params[i-1].vallen = SQL_LEN_DATA_AT_EXEC(0); rc = SQLBindParameter(result->stmt, (UWORD)i, SQL_PARAM_INPUT, ! SQL_C_BINARY, sqltype, precision, scale, ! (void *)params[i-1].fp, 0, ! &params[i-1].vallen); } else { /*if (IS_SQL_BINARY(sqltype)){ php3_error(E_WARNING,"No Filename for binary parameter"); *************** *** 760,767 **** } */ rc = SQLBindParameter(result->stmt, (UWORD)i, SQL_PARAM_INPUT, ! SQL_C_CHAR, sqltype, precision, scale, ! tmp->value.str.val, 0, &params[i-1].vallen); } _php3_hash_move_forward(arr.value.ht); } --- 775,783 ---- } */ rc = SQLBindParameter(result->stmt, (UWORD)i, SQL_PARAM_INPUT, ! SQL_C_CHAR, sqltype, precision, scale, ! tmp->value.str.val, 0, ! &params[i-1].vallen); } _php3_hash_move_forward(arr.value.ht); } *************** *** 1646,1652 **** --- 1662,1679 ---- SQLSetConnectOption(db_conn->hdbc, SQL_TRANSLATE_OPTION, SQL_SOLID_XLATOPT_NOCNV); #endif + #if HAVE_OPENLINK + { + char dsnbuf[300]; + short dsnbuflen; + + rc = SQLDriverConnect(db_conn->hdbc, NULL, db, SQL_NTS, + dsnbuf, sizeof(dsnbuf)-1, &dsnbuflen, + SQL_DRIVER_COMPLETE); + } + #else rc = SQLConnect(db_conn->hdbc, db, SQL_NTS, uid, SQL_NTS, pwd, SQL_NTS); + #endif if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) { UODBC_SQL_ERROR(db_conn->hdbc, SQL_NULL_HSTMT, "SQLConnect"); *************** *** 1897,1904 **** RETURN_LONG(len); } ! #if 0 /* XXX not used anywhere -jaakko */ ! void php3_uodbc_field_num(INTERNAL_FUNCTION_PARAMETERS) { int field_ind; char *fname; --- 1924,1930 ---- RETURN_LONG(len); } ! void PHP3_UODBC_FIELD_NUM(INTERNAL_FUNCTION_PARAMETERS) { int field_ind; char *fname; *************** *** 1931,1964 **** RETURN_FALSE; RETURN_LONG(field_ind); } - #endif /* XXX */ void PHP3_UODBC_AUTOCOMMIT(INTERNAL_FUNCTION_PARAMETERS) { UODBC_CONNECTION *curr_conn; RETCODE rc; ! pval *arg1, *arg2; ! if ( getParameters(ht, 2, &arg1, &arg2) == FAILURE) { WRONG_PARAM_COUNT; ! } convert_to_long(arg1); ! convert_to_long(arg2); ! ! if ((curr_conn = UODBC_GET_CONN(list, arg1->value.lval)) == NULL){ ! RETURN_FALSE; } ! rc = SQLSetConnectOption(curr_conn->hdbc, SQL_AUTOCOMMIT, ! (arg2->value.lval) ? ! SQL_AUTOCOMMIT_ON : SQL_AUTOCOMMIT_OFF); ! if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO){ ! UODBC_SQL_ERROR(curr_conn->hdbc, SQL_NULL_HSTMT, "Autocommit"); RETURN_FALSE; } ! RETURN_TRUE; } void PHP3_UODBC_TRANSACT(INTERNAL_FUNCTION_PARAMETERS, int type) --- 1957,2011 ---- RETURN_FALSE; RETURN_LONG(field_ind); } void PHP3_UODBC_AUTOCOMMIT(INTERNAL_FUNCTION_PARAMETERS) { UODBC_CONNECTION *curr_conn; RETCODE rc; ! pval *arg1, *arg2 = NULL; ! int argc; ! argc = ARG_COUNT(ht); ! if (argc == 2) { ! if (getParameters(ht, 2, &arg1, &arg2) == FAILURE) { ! WRONG_PARAM_COUNT; ! } ! } else if (argc == 1) { ! if (getParameters(ht, 1, &arg1) == FAILURE) { ! WRONG_PARAM_COUNT; ! } ! } else { WRONG_PARAM_COUNT; ! } convert_to_long(arg1); ! if (arg2) { ! convert_to_long(arg2); } ! if ((curr_conn = UODBC_GET_CONN(list, arg1->value.lval)) == NULL) { RETURN_FALSE; } ! if (arg2) { ! rc = SQLSetConnectOption(curr_conn->hdbc, SQL_AUTOCOMMIT, ! (arg2->value.lval) ? ! SQL_AUTOCOMMIT_ON : SQL_AUTOCOMMIT_OFF); ! if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO){ ! UODBC_SQL_ERROR(curr_conn->hdbc, SQL_NULL_HSTMT, "Set autocommit"); ! RETURN_FALSE; ! } ! RETVAL_TRUE; ! } else { ! SDWORD status; ! ! rc = SQLGetConnectOption(curr_conn->hdbc, SQL_AUTOCOMMIT, &status); ! if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO){ ! UODBC_SQL_ERROR(curr_conn->hdbc, SQL_NULL_HSTMT, "Test autocommit"); ! RETURN_FALSE; ! } ! RETVAL_LONG((long)status); ! } } void PHP3_UODBC_TRANSACT(INTERNAL_FUNCTION_PARAMETERS, int type) -- PHP Development Mailing List http://www.php.net/ To unsubscribe send an empty message to php-dev-unsubscribe@lists.php.net For help: php-dev-help@lists.php.net

« previous php.dev (#1881) next »