Date: 11/11/98
- Next message: Thies C. Arntzen: "[PHP-DEV] plex for NT... (3.1 issue)"
- Previous message: Ben Laurie: "[PHP-DEV] Re: Strange auth bug"
- Next in thread: rasmus: "[PHP-DEV] CVS update: php3/functions"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
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 <email protected> For help: php-dev-help <email protected>
- Next message: Thies C. Arntzen: "[PHP-DEV] plex for NT... (3.1 issue)"
- Previous message: Ben Laurie: "[PHP-DEV] Re: Strange auth bug"
- Next in thread: rasmus: "[PHP-DEV] CVS update: php3/functions"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]

