CVS update: php31/ext/odbc
| From: | shane | 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, ¶ms[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,
! ¶ms[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, ¶ms[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,
! ¶ms[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