CVS update: php3/functions

From: Date: Wed, 11 Nov 1998 12:27:14 +0000
Subject: CVS update: php3/functions
Groups: php.dev 
Request: Send a blank email to php-dev+get-2330@lists.php.net to get a copy of this message
Date: Wednesday November 11, 1998 @ 7:27 Author: kara Update of /repository/php3/functions In directory asf:/u2/tmp/cvs-serv7293 Modified Files: php3_unified_odbc.h unified_odbc.c Log Message: odbc should work again, added odbc cursor patch by Dave Walton Index: php3/functions/php3_unified_odbc.h diff -c php3/functions/php3_unified_odbc.h:1.39 php3/functions/php3_unified_odbc.h:1.40 *** php3/functions/php3_unified_odbc.h:1.39 Tue Nov 3 14:06:57 1998 --- php3/functions/php3_unified_odbc.h Wed Nov 11 07:27:13 1998 *************** *** 29,35 **** +----------------------------------------------------------------------+ */ ! /* $Id: php3_unified_odbc.h,v 1.39 1998/11/03 19:06:57 shane Exp $ */ #ifndef _UNIFIED_ODBC_H #define _UNIFIED_ODBC_H --- 29,35 ---- +----------------------------------------------------------------------+ */ ! /* $Id: php3_unified_odbc.h,v 1.40 1998/11/11 12:27:13 kara Exp $ */ #ifndef _UNIFIED_ODBC_H #define _UNIFIED_ODBC_H *************** *** 65,70 **** --- 65,71 ---- # if defined(UODBC_UNIQUE_NAMES) # define UODBC_TYPE solid # define UODBC_FE(name, arg_types) UODBC_NAMED_FE(solid_##name, php3_solid_##name, arg_types) + # define UODBC_FE_ALIAS(php_name, name, arg_types) UODBC_NAMED_FE(solid_##php_name, php3_solid_##name, arg_types) # define UODBC_FUNCTION(name) UODBC_NAMED_FUNCTION(php3_solid_##name) # define UODBC_FNAME(name) php3i_solid_##name # define ODBC_INI_VAR_NAME(name) #name *************** *** 76,81 **** --- 77,101 ---- # define solid_module_ptr &UODBC_MODULE_ENTRY # endif + #elif HAVE_ADABAS + #include <WINDOWS.H> + #include <sql.h> + #include <sqlext.h> + # define HAVE_SQL_EXTENDED_FETCH 1 + # if defined(UODBC_UNIQUE_NAMES) + # define UODBC_TYPE adabas + # define UODBC_FE(name, arg_types) UODBC_NAMED_FE(ada_##name, php3_ada_##name, arg_types) + # define UODBC_FE_ALIAS(php_name, name, arg_types) UODBC_NAMED_FE(ada_##php_name, php3_ada_##name, arg_types) + # define UODBC_FUNCTION(name) UODBC_NAMED_FUNCTION(php3_ada_##name) + # define UODBC_FNAME(name) php3i_ada_##name + # define ODBC_INI_VAR_NAME(name) #name + # define ODBC_INI_VAR(a) ODBC_INI_VAR_NAME(ada.##a) + # define UODBC_VAR_NAME(name) name + # define UODBC_VAR(a) UODBC_VAR_NAME(ada_##a) + # define PHP3_UODBC_VAR(a) UODBC_VAR_NAME(php3_ada_##a) + # define UODBC_MODULE_ENTRY UODBC_VAR(module_entry) + # define ada_module_ptr &UODBC_MODULE_ENTRY + # endif # elif HAVE_IODBC && !(WIN32|WINNT) # include <isql.h> *************** *** 92,97 **** --- 112,118 ---- # if defined(UODBC_UNIQUE_NAMES) # define UODBC_TYPE iodbc # define UODBC_FE(name, arg_types) UODBC_NAMED_FE(iodbc_##name, php3_iodbc_##name, arg_types) + # define UODBC_FE_ALIAS(php_name, name, arg_types) UODBC_NAMED_FE(iodbc_##php_name, php3_iodbc_##name, arg_types) # define UODBC_FUNCTION(name) UODBC_NAMED_FUNCTION(php3_iodbc_##name) # define UODBC_FNAME(name) php3i_iodbc_##name # define ODBC_INI_VAR_NAME(name) #name *************** *** 113,118 **** --- 134,140 ---- # if defined(UODBC_UNIQUE_NAMES) # define UODBC_TYPE opnlnk # define UODBC_FE(name, arg_types) UODBC_NAMED_FE(opnlnk_##name, php3_opnlnk_##name, arg_types) + # define UODBC_FE_ALIAS(php_name, name, arg_types) UODBC_NAMED_FE(opnlnk_##php_name, php3_opnlnk_##name, arg_types) # define UODBC_FUNCTION(name) UODBC_NAMED_FUNCTION(php3_opnlnk_##name) # define UODBC_FNAME(name) php3i_opnlnk_##name # define ODBC_INI_VAR_NAME(name) #name *************** *** 133,138 **** --- 155,161 ---- # if defined(UODBC_UNIQUE_NAMES) # define UODBC_TYPE velocis # define UODBC_FE(name, arg_types) UODBC_NAMED_FE(velocis_##name, php3_velocis_##name, arg_types) + # define UODBC_FE_ALIAS(php_name, name, arg_types) UODBC_NAMED_FE(velocis_##php_name, php3_velocis_##name, arg_types) # define UODBC_FUNCTION(name) UODBC_NAMED_FUNCTION(php3_velocis_##name) # define UODBC_FNAME(name) php3i_velocis_##name # define ODBC_INI_VAR_NAME(name) #name *************** *** 150,155 **** --- 173,179 ---- # if defined(UODBC_UNIQUE_NAMES) # define UODBC_TYPE codbc # define UODBC_FE(name, arg_types) UODBC_NAMED_FE(codbc_##name, php3_codbc_##name, arg_types) + # define UODBC_FE_ALIAS(php_name, name, arg_types) UODBC_NAMED_FE(codbc_##php_name, php3_codbc_##name, arg_types) # define UODBC_FUNCTION(name) UODBC_NAMED_FUNCTION(php3_codbc_##name) # define UODBC_FNAME(name) php3i_codbc_##name # define ODBC_INI_VAR_NAME(name) #name *************** *** 171,176 **** --- 195,201 ---- # if defined(UODBC_UNIQUE_NAMES) # define UODBC_TYPE db2 # define UODBC_FE(name, arg_types) UODBC_NAMED_FE(db2_##name, php3_db2_##name, arg_types) + # define UODBC_FE_ALIAS(php_name, name, arg_types) UODBC_NAMED_FE(db2_##php_name, php3_db2_##name, arg_types) # define UODBC_FUNCTION(name) UODBC_NAMED_FUNCTION(php3_db2_##name) # define UODBC_FNAME(name) php3i_db2_##name # define ODBC_INI_VAR_NAME(name) #name *************** *** 190,195 **** --- 215,221 ---- # if defined(UODBC_UNIQUE_NAMES) # define UODBC_TYPE wodbc # define UODBC_FE(name, arg_types) UODBC_NAMED_FE(wodbc_##name, php3_wodbc_##name, arg_types) + # define UODBC_FE_ALIAS(php_name, name, arg_types) UODBC_NAMED_FE(wodbc_##php_name, php3_wodbc_##name, arg_types) # define UODBC_FUNCTION(name) UODBC_NAMED_FUNCTION(php3_wodbc_##name) # define UODBC_FNAME(name) php3i_wodbc_##name # define ODBC_INI_VAR_NAME(name) #name *************** *** 206,211 **** --- 232,238 ---- #if !defined(UODBC_UNIQUE_NAMES) #define UODBC_TYPE odbc #define UODBC_FE(name, arg_types) UODBC_NAMED_FE(odbc_##name, php3_odbc_##name, arg_types) + #define UODBC_FE_ALIAS(php_name, name, arg_types) UODBC_NAMED_FE(odbc_##php_name, php3_odbc_##name, arg_types) #define UODBC_FUNCTION(name) UODBC_NAMED_FUNCTION(php3_odbc_##name) #define UODBC_FNAME(name) php3i_odbc_##name #define ODBC_INI_VAR_NAME(name) #name *************** *** 217,222 **** --- 244,250 ---- #define uodbc_module_ptr &UODBC_MODULE_ENTRY #else #define UODBC_ALIAS(name, arg_types) UODBC_NAMED_FE(odbc_##name, php3_odbc_##name, arg_types) + #define UODBC_ALIAS_FE(php_name, name, arg_types) UODBC_NAMED_FE(odbc_##php_name, php3_odbc_##name, arg_types) #endif *************** *** 281,287 **** extern void PHP3_UODBC_DO_CONNECT(INTERNAL_FUNCTION_PARAMETERS, int); extern UODBC_FUNCTION(cursor); extern UODBC_FUNCTION(exec); ! extern UODBC_FUNCTION(do); extern UODBC_FUNCTION(execute); extern UODBC_FUNCTION(fetch_into); extern UODBC_FUNCTION(fetch_row); --- 309,315 ---- extern void PHP3_UODBC_DO_CONNECT(INTERNAL_FUNCTION_PARAMETERS, int); extern UODBC_FUNCTION(cursor); extern UODBC_FUNCTION(exec); ! /*extern UODBC_FUNCTION(do);*/ extern UODBC_FUNCTION(execute); extern UODBC_FUNCTION(fetch_into); extern UODBC_FUNCTION(fetch_row); Index: php3/functions/unified_odbc.c diff -c php3/functions/unified_odbc.c:1.87 php3/functions/unified_odbc.c:1.88 *** php3/functions/unified_odbc.c:1.87 Mon Nov 2 12:13:59 1998 --- php3/functions/unified_odbc.c Wed Nov 11 07:27:13 1998 *************** *** 89,95 **** UODBC_FE(connect, NULL), UODBC_FE(pconnect, NULL), UODBC_FE(cursor, NULL), ! UODBC_FE(do, NULL), UODBC_FE(exec, NULL), UODBC_FE(prepare, NULL), UODBC_FE(execute, NULL), --- 89,95 ---- UODBC_FE(connect, NULL), UODBC_FE(pconnect, NULL), UODBC_FE(cursor, NULL), ! UODBC_FE_ALIAS(do, exec, NULL), UODBC_FE(exec, NULL), UODBC_FE(prepare, NULL), UODBC_FE(execute, NULL), *************** *** 116,122 **** UODBC_ALIAS(connect, NULL), UODBC_ALIAS(pconnect, NULL), UODBC_ALIAS(cursor, NULL), ! UODBC_ALIAS(do, NULL), UODBC_ALIAS(exec, NULL), UODBC_ALIAS(prepare, NULL), UODBC_ALIAS(execute, NULL), --- 116,122 ---- UODBC_ALIAS(connect, NULL), UODBC_ALIAS(pconnect, NULL), UODBC_ALIAS(cursor, NULL), ! UODBC_ALIAS_FE(do, exec, NULL), UODBC_ALIAS(exec, NULL), UODBC_ALIAS(prepare, NULL), UODBC_ALIAS(execute, NULL), *************** *** 335,341 **** 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; } --- 335,347 ---- 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); ! /* Define Constants for different cursor options ! these Constants are are defined in <sqlext.h> ! */ ! REGISTER_MAIN_LONG_CONSTANT("SQL_CUR_USE_IF_NEEDED", SQL_CUR_USE_IF_NEEDED, CONST_PERSISTENT | CONST_CS); ! REGISTER_MAIN_LONG_CONSTANT("SQL_CUR_USE_ODBC", SQL_CUR_USE_ODBC, CONST_PERSISTENT | CONST_CS); ! REGISTER_MAIN_LONG_CONSTANT("SQL_CUR_USE_DRIVER", SQL_CUR_USE_DRIVER, CONST_PERSISTENT | CONST_CS); ! REGISTER_MAIN_LONG_CONSTANT("SQL_CUR_DEFAULT", SQL_CUR_DEFAULT, CONST_PERSISTENT | CONST_CS); return SUCCESS; } *************** *** 947,957 **** } } - UODBC_FUNCTION(do) - { - UODBC_FUNCTION(exec); - } - UODBC_FUNCTION(exec) { pval *arg1, *arg2; --- 953,958 ---- *************** *** 1460,1466 **** RETURN_FALSE; } /* chop the trailing \0 by outputing only 4095 bytes */ ! php3_printf(field,(rc == SQL_SUCCESS_WITH_INFO) ? 4095 : result->values[field_ind].vallen); if (rc == SQL_SUCCESS) { /* no more data avail */ --- 1461,1467 ---- RETURN_FALSE; } /* chop the trailing \0 by outputing only 4095 bytes */ ! PHPWRITE(field,(rc == SQL_SUCCESS_WITH_INFO) ? 4095 : result->values[field_ind].vallen); if (rc == SQL_SUCCESS) { /* no more data avail */ *************** *** 1641,1661 **** char *db = NULL; char *uid = NULL; char *pwd = NULL; ! pval *arg1, *arg2, *arg3; UODBC_CONNECTION *db_conn; RETCODE rc; list_entry *index_ptr; char *hashed_details; ! int hashed_len, len, id; UODBC_TLS_VARS; UODBC_GLOBAL(PHP3_UODBC_MODULE).resource_list = list; UODBC_GLOBAL(PHP3_UODBC_MODULE).resource_plist = plist; ! ! if (getParameters(ht, 3, &arg1, &arg2, &arg3) == FAILURE) { ! WRONG_PARAM_COUNT; } ! convert_to_string(arg1); convert_to_string(arg2); convert_to_string(arg3); --- 1642,1690 ---- char *db = NULL; char *uid = NULL; char *pwd = NULL; ! pval *arg1, *arg2, *arg3, *arg4; UODBC_CONNECTION *db_conn; RETCODE rc; list_entry *index_ptr; char *hashed_details; ! int hashed_len, len, id, cur_opt; UODBC_TLS_VARS; UODBC_GLOBAL(PHP3_UODBC_MODULE).resource_list = list; UODBC_GLOBAL(PHP3_UODBC_MODULE).resource_plist = plist; ! ! /* Now an optional 4th parameter specifying the cursor type ! * defaulting to the cursors default ! */ ! switch(ARG_COUNT(ht)) { ! case 3: ! if (getParameters(ht, 3, &arg1, &arg2, &arg3) == FAILURE) { ! WRONG_PARAM_COUNT; ! } ! /* Use Default: Probably a better way to do this */ ! cur_opt = SQL_CUR_DEFAULT; ! break; ! case 4: ! if (getParameters(ht, 4, &arg1, &arg2, &arg3, &arg4) == FAILURE) { ! WRONG_PARAM_COUNT; ! } ! convert_to_long(arg4); ! cur_opt = arg4->value.lval; ! ! /* Confirm the cur_opt range */ ! if (! (cur_opt == SQL_CUR_USE_IF_NEEDED || ! cur_opt == SQL_CUR_USE_ODBC || ! cur_opt == SQL_CUR_USE_DRIVER || ! cur_opt == SQL_CUR_DEFAULT) ) { ! php3_error(E_WARNING, "uODBC: Invalid Cursor type (%d)", cur_opt); ! RETURN_FALSE; ! } ! break; ! default: ! WRONG_PARAM_COUNT; ! break; } ! convert_to_string(arg1); convert_to_string(arg2); convert_to_string(arg3); *************** *** 1664,1670 **** uid = arg2->value.str.val; pwd = arg3->value.str.val; ! if (!UODBC_GLOBAL(PHP3_UODBC_MODULE).allow_persistent) { persistent = 0; } --- 1693,1699 ---- uid = arg2->value.str.val; pwd = arg3->value.str.val; ! if (UODBC_GLOBAL(PHP3_UODBC_MODULE).allow_persistent <= 0) { persistent = 0; } *************** *** 1694,1700 **** RETURN_FALSE; } ! hashed_len = _php3_sprintf(hashed_details, "uodbc_%s_%s_%s", db, uid, pwd); /* FIXME the idea of checking to see if our connection is already persistent is good, but it adds a lot of overhead to non-persistent connections. We --- 1723,1729 ---- RETURN_FALSE; } ! hashed_len = _php3_sprintf(hashed_details, "uodbc_%s_%s_%s_%d", db, uid, pwd, cur_opt); /* FIXME the idea of checking to see if our connection is already persistent is good, but it adds a lot of overhead to non-persistent connections. We *************** *** 1731,1736 **** --- 1760,1778 ---- SQL_DRIVER_COMPLETE); } #else + if(cur_opt != SQL_CUR_DEFAULT){ + rc = SQLSetConnectOption(db_conn->hdbc, SQL_ODBC_CURSORS, cur_opt); + if (rc != SQL_SUCCESS ) { /* && rc != SQL_SUCCESS_WITH_INFO ? */ + UODBC_SQL_ERROR(db_conn->hdbc, SQL_NULL_HSTMT, "SQLSetConnectOption"); + SQLFreeConnect(db_conn->hdbc); + if (persistent) + free(db_conn); + else + efree(db_conn); + RETURN_FALSE; + } + } + rc = SQLConnect(db_conn->hdbc, db, SQL_NTS, uid, SQL_NTS, pwd, SQL_NTS); #endif *************** *** 2058,2064 **** } 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; --- 2100,2106 ---- } else { SDWORD status; ! rc = SQLGetConnectOption(curr_conn->hdbc, SQL_AUTOCOMMIT, (PTR)&status); if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO){ UODBC_SQL_ERROR(curr_conn->hdbc, SQL_NULL_HSTMT, "Test autocommit"); RETURN_FALSE; -- 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 (#2330) next »