mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
Remove references to ODBCVER and assume ODBC 3.x (#19453)
* Remove references to ODBCVER and assume ODBC 3.x See https://wiki.php.net/rfc/deprecations_php_8_5#remove_support_for_older_odbc_versions * Avoid calling deprecated ODBC functions `SQLGetConnectOption`, `SQLSetConnectOption` and `SQLSetStmtOption` are deprecated, so if ODBC 3 is available, we use `SQLSetConnectAttr`, `SQLGetConnectAttr`, and `SQLSetStmtAttr` instead. (This is based on GH-17556, but just assumes ODBC 3.x.) * Remove wrappers for SQLColAttribute We don't need to support the old way of doing it. * Just call SQLAllocHandle directly Again, no need for the version specific wrapper * Update NEWS for ODBCVER in beta2 * [skip ci] UPGRADING for ODBCVER changes --------- Co-authored-by: Christoph M. Becker <cmbecker69@gmx.de>
This commit is contained in:
parent
77dace78c3
commit
60047025db
8 changed files with 35 additions and 92 deletions
3
NEWS
3
NEWS
|
@ -2,6 +2,9 @@ PHP NEWS
|
|||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
?? ??? ????, PHP 8.5.0beta2
|
||||
|
||||
- ODBC:
|
||||
. Remove ODBCVER and assume ODBC 3.5. (Calvin Buckley)
|
||||
|
||||
- OpenSSL:
|
||||
. Implement #81724 (openssl_cms_encrypt only allows specific ciphers).
|
||||
(Jakub Zelenka)
|
||||
|
|
|
@ -80,6 +80,10 @@ PHP 8.5 UPGRADE NOTES
|
|||
. Calling the mysqli constructor on an already-constructed object
|
||||
is now no longer possible and throws an Error.
|
||||
|
||||
- ODBC:
|
||||
. ODBC now assumes that at least ODBC 3.5 functionality is available. The
|
||||
ODBCVER definition and build system flags to control it have been removed.
|
||||
|
||||
- Opcache:
|
||||
. The Opcache extension is now always built into the PHP binary and is always
|
||||
loaded. The INI directives opcache.enable and opcache.enable_cli are still
|
||||
|
|
|
@ -106,13 +106,6 @@ dnl
|
|||
dnl configure options
|
||||
dnl
|
||||
|
||||
PHP_ARG_WITH([odbcver],,
|
||||
[AS_HELP_STRING([[--with-odbcver[=HEX]]],
|
||||
[Force support for the passed ODBC version. A hex number is expected,
|
||||
default 0x0350. Use the special value of 0 to prevent an explicit ODBCVER to
|
||||
be defined.])],
|
||||
[0x0350])
|
||||
|
||||
AS_VAR_IF([ODBC_TYPE],, [
|
||||
PHP_ARG_WITH([adabas],
|
||||
[for Adabas support],
|
||||
|
@ -410,12 +403,6 @@ PHP_ARG_WITH([dbmaker],
|
|||
])
|
||||
])
|
||||
|
||||
AH_TEMPLATE([ODBCVER], [The highest supported ODBC version.])
|
||||
AS_VAR_IF([PHP_ODBCVER], [no],
|
||||
[AC_DEFINE([ODBCVER], [0x0350])],
|
||||
[AS_VAR_IF([PHP_ODBCVER], [0],,
|
||||
[AC_DEFINE_UNQUOTED([ODBCVER], [$PHP_ODBCVER])])])
|
||||
|
||||
dnl Extension setup
|
||||
if test -n "$ODBC_TYPE"; then
|
||||
AS_VAR_IF([ODBC_TYPE], [dbmaker],, [
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
// vim:ft=javascript
|
||||
|
||||
ARG_ENABLE("odbc", "ODBC support", "no");
|
||||
ARG_WITH("odbcver", "Force support for the passed ODBC version. A hex number is expected, default 0x0350. Use the special value of 0 to prevent an explicit ODBCVER to be defined.", "0x0350");
|
||||
|
||||
if (PHP_ODBC == "yes") {
|
||||
if (CHECK_LIB("odbc32.lib", "odbc") && CHECK_LIB("odbccp32.lib", "odbc")
|
||||
|
@ -10,11 +9,6 @@ if (PHP_ODBC == "yes") {
|
|||
EXTENSION("odbc", "php_odbc.c odbc_utils.c", PHP_ODBC_SHARED, "/DZEND_ENABLE_STATIC_TSRMLS_CACHE=1");
|
||||
AC_DEFINE("HAVE_UODBC", 1, "Define to 1 if the PHP extension 'odbc' is available.");
|
||||
AC_DEFINE("HAVE_SQLDATASOURCES", 1, "Define to 1 if ODBC library has 'SQLDataSources', as a function or macro.");
|
||||
if ("no" == PHP_ODBCVER) {
|
||||
AC_DEFINE("ODBCVER", "0x0350", "The highest supported ODBC version.", false);
|
||||
} else if ("0" != PHP_ODBCVER) {
|
||||
AC_DEFINE("ODBCVER", PHP_ODBCVER, "The highest supported ODBC version.", false);
|
||||
}
|
||||
} else {
|
||||
WARNING("odbc support can't be enabled, libraries or header are missing (SDK)")
|
||||
PHP_ODBC = "no"
|
||||
|
|
|
@ -233,8 +233,6 @@ namespace {
|
|||
* @cvalue SQL_TIMESTAMP
|
||||
*/
|
||||
const SQL_TIMESTAMP = UNKNOWN;
|
||||
|
||||
#if (defined(ODBCVER) && (ODBCVER >= 0x0300))
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue SQL_TYPE_DATE
|
||||
|
@ -327,8 +325,6 @@ namespace {
|
|||
*/
|
||||
const SQL_QUICK = UNKNOWN;
|
||||
|
||||
#endif
|
||||
|
||||
function odbc_close_all(): void {}
|
||||
|
||||
function odbc_binmode(Odbc\Result $statement, int $mode): true {}
|
||||
|
|
4
ext/odbc/odbc_arginfo.h
generated
4
ext/odbc/odbc_arginfo.h
generated
|
@ -1,5 +1,5 @@
|
|||
/* This is a generated file, edit the .stub.php file instead.
|
||||
* Stub hash: efd913e4fcacb2949dc5392857032ab9c59c818d */
|
||||
* Stub hash: 2a788e343c154d2f29adeab45d5507f73de1b6bf */
|
||||
|
||||
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_odbc_close_all, 0, 0, IS_VOID, 0)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
@ -408,7 +408,6 @@ static void register_odbc_symbols(int module_number)
|
|||
REGISTER_LONG_CONSTANT("SQL_DATE", SQL_DATE, CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("SQL_TIME", SQL_TIME, CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("SQL_TIMESTAMP", SQL_TIMESTAMP, CONST_PERSISTENT);
|
||||
#if (defined(ODBCVER) && (ODBCVER >= 0x0300))
|
||||
REGISTER_LONG_CONSTANT("SQL_TYPE_DATE", SQL_TYPE_DATE, CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("SQL_TYPE_TIME", SQL_TYPE_TIME, CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("SQL_TYPE_TIMESTAMP", SQL_TYPE_TIMESTAMP, CONST_PERSISTENT);
|
||||
|
@ -426,7 +425,6 @@ static void register_odbc_symbols(int module_number)
|
|||
REGISTER_LONG_CONSTANT("SQL_INDEX_ALL", SQL_INDEX_ALL, CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("SQL_ENSURE", SQL_ENSURE, CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("SQL_QUICK", SQL_QUICK, CONST_PERSISTENT);
|
||||
#endif
|
||||
|
||||
|
||||
zend_attribute *attribute_Deprecated_func_odbc_result_all_0 = zend_add_function_attribute(zend_hash_str_find_ptr(CG(function_table), "odbc_result_all", sizeof("odbc_result_all") - 1), ZSTR_KNOWN(ZEND_STR_DEPRECATED_CAPITALIZED), 1);
|
||||
|
|
|
@ -579,10 +579,6 @@ PHP_MINFO_FUNCTION(odbc)
|
|||
snprintf(buf, sizeof(buf), ZEND_LONG_FMT, ODBCG(num_links));
|
||||
php_info_print_table_row(2, "Active Links", buf);
|
||||
php_info_print_table_row(2, "ODBC library", PHP_ODBC_TYPE);
|
||||
#ifdef ODBCVER
|
||||
snprintf(buf, sizeof(buf), "0x%.4x", ODBCVER);
|
||||
php_info_print_table_row(2, "ODBCVER", buf);
|
||||
#endif
|
||||
#ifndef PHP_WIN32
|
||||
php_info_print_table_row(2, "ODBC_CFLAGS", PHP_ODBC_CFLAGS);
|
||||
php_info_print_table_row(2, "ODBC_LFLAGS", PHP_ODBC_LFLAGS);
|
||||
|
@ -680,10 +676,10 @@ void odbc_bindcols(odbc_result *result)
|
|||
bool char_extra_alloc = false;
|
||||
colfieldid = SQL_COLUMN_DISPLAY_SIZE;
|
||||
|
||||
rc = PHP_ODBC_SQLCOLATTRIBUTE(result->stmt, (SQLUSMALLINT)(i+1), PHP_ODBC_SQL_DESC_NAME,
|
||||
rc = SQLColAttribute(result->stmt, (SQLUSMALLINT)(i+1), SQL_DESC_NAME,
|
||||
result->values[i].name, sizeof(result->values[i].name), &colnamelen, 0);
|
||||
result->values[i].coltype = 0;
|
||||
rc = PHP_ODBC_SQLCOLATTRIBUTE(result->stmt, (SQLUSMALLINT)(i+1), SQL_COLUMN_TYPE,
|
||||
rc = SQLColAttribute(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
|
||||
|
@ -695,9 +691,7 @@ void odbc_bindcols(odbc_result *result)
|
|||
case SQL_VARBINARY:
|
||||
case SQL_LONGVARBINARY:
|
||||
case SQL_LONGVARCHAR:
|
||||
#if defined(ODBCVER) && (ODBCVER >= 0x0300)
|
||||
case SQL_WLONGVARCHAR:
|
||||
#endif
|
||||
result->values[i].value = NULL;
|
||||
break;
|
||||
|
||||
|
@ -710,22 +704,17 @@ void odbc_bindcols(odbc_result *result)
|
|||
#endif /* HAVE_ADABAS */
|
||||
case SQL_CHAR:
|
||||
case SQL_VARCHAR:
|
||||
#if defined(ODBCVER) && (ODBCVER >= 0x0300)
|
||||
case SQL_WCHAR:
|
||||
case SQL_WVARCHAR:
|
||||
colfieldid = SQL_DESC_OCTET_LENGTH;
|
||||
#else
|
||||
char_extra_alloc = true;
|
||||
#endif
|
||||
/* TODO: Check this is the intended behaviour */
|
||||
ZEND_FALLTHROUGH;
|
||||
default:
|
||||
rc = PHP_ODBC_SQLCOLATTRIBUTE(result->stmt, (SQLUSMALLINT)(i+1), colfieldid,
|
||||
rc = SQLColAttribute(result->stmt, (SQLUSMALLINT)(i+1), colfieldid,
|
||||
NULL, 0, NULL, &displaysize);
|
||||
if (rc != SQL_SUCCESS) {
|
||||
displaysize = 0;
|
||||
}
|
||||
#if defined(ODBCVER) && (ODBCVER >= 0x0300)
|
||||
if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO && colfieldid == SQL_DESC_OCTET_LENGTH) {
|
||||
SQLINTEGER err;
|
||||
SQLCHAR errtxt[128];
|
||||
|
@ -755,7 +744,6 @@ void odbc_bindcols(odbc_result *result)
|
|||
result->values[i].value = NULL;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
/* Workaround for drivers that report VARCHAR(MAX) columns as SQL_VARCHAR (bug #73725) */
|
||||
if (SQL_VARCHAR == result->values[i].coltype && displaysize == 0) {
|
||||
result->values[i].coltype = SQL_LONGVARCHAR;
|
||||
|
@ -844,7 +832,7 @@ void odbc_column_lengths(INTERNAL_FUNCTION_PARAMETERS, int type)
|
|||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
PHP_ODBC_SQLCOLATTRIBUTE(result->stmt, (SQLUSMALLINT)pv_num, (SQLUSMALLINT) (type?SQL_COLUMN_SCALE:SQL_COLUMN_PRECISION), NULL, 0, NULL, &len);
|
||||
SQLColAttribute(result->stmt, (SQLUSMALLINT)pv_num, (SQLUSMALLINT) (type?SQL_COLUMN_SCALE:SQL_COLUMN_PRECISION), NULL, 0, NULL, &len);
|
||||
|
||||
RETURN_LONG(len);
|
||||
}
|
||||
|
@ -915,7 +903,7 @@ PHP_FUNCTION(odbc_prepare)
|
|||
result->numparams = 0;
|
||||
result->param_info = NULL;
|
||||
|
||||
rc = PHP_ODBC_SQLALLOCSTMT(conn->hdbc, &(result->stmt));
|
||||
rc = SQLAllocHandle(SQL_HANDLE_STMT, conn->hdbc, &(result->stmt));
|
||||
if (rc == SQL_INVALID_HANDLE) {
|
||||
php_error_docref(NULL, E_WARNING, "SQLAllocStmt error 'Invalid Handle'");
|
||||
zval_ptr_dtor(return_value);
|
||||
|
@ -937,7 +925,7 @@ PHP_FUNCTION(odbc_prepare)
|
|||
/* Try to set CURSOR_TYPE to dynamic. Driver will replace this with other
|
||||
type if not possible.
|
||||
*/
|
||||
SQLSetStmtOption(result->stmt, SQL_CURSOR_TYPE, ODBCG(default_cursortype));
|
||||
SQLSetStmtAttr(result->stmt, SQL_ATTR_CURSOR_TYPE, (SQLPOINTER) ODBCG(default_cursortype), 0);
|
||||
}
|
||||
} else {
|
||||
result->fetch_abs = 0;
|
||||
|
@ -1302,7 +1290,7 @@ PHP_FUNCTION(odbc_exec)
|
|||
object_init_ex(return_value, odbc_result_ce);
|
||||
result = Z_ODBC_RESULT_P(return_value);
|
||||
|
||||
rc = PHP_ODBC_SQLALLOCSTMT(conn->hdbc, &(result->stmt));
|
||||
rc = SQLAllocHandle(SQL_HANDLE_STMT, conn->hdbc, &(result->stmt));
|
||||
if (rc == SQL_INVALID_HANDLE) {
|
||||
php_error_docref(NULL, E_WARNING, "SQLAllocStmt error 'Invalid Handle'");
|
||||
zval_ptr_dtor(return_value);
|
||||
|
@ -1324,7 +1312,7 @@ PHP_FUNCTION(odbc_exec)
|
|||
/* Try to set CURSOR_TYPE to dynamic. Driver will replace this with other
|
||||
type if not possible.
|
||||
*/
|
||||
SQLSetStmtOption(result->stmt, SQL_CURSOR_TYPE, ODBCG(default_cursortype));
|
||||
SQLSetStmtAttr(result->stmt, SQL_ATTR_CURSOR_TYPE, (SQLPOINTER) ODBCG(default_cursortype), 0);
|
||||
}
|
||||
} else {
|
||||
result->fetch_abs = 0;
|
||||
|
@ -1444,9 +1432,7 @@ static void php_odbc_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int result_type)
|
|||
}
|
||||
ZEND_FALLTHROUGH;
|
||||
case SQL_LONGVARCHAR:
|
||||
#if defined(ODBCVER) && (ODBCVER >= 0x0300)
|
||||
case SQL_WLONGVARCHAR:
|
||||
#endif
|
||||
if (IS_SQL_LONG(result->values[i].coltype) && result->longreadlen <= 0) {
|
||||
ZVAL_EMPTY_STRING(&tmp);
|
||||
break;
|
||||
|
@ -1614,9 +1600,7 @@ PHP_FUNCTION(odbc_fetch_into)
|
|||
/* TODO: Check this is the intended behaviour */
|
||||
ZEND_FALLTHROUGH;
|
||||
case SQL_LONGVARCHAR:
|
||||
#if defined(ODBCVER) && (ODBCVER >= 0x0300)
|
||||
case SQL_WLONGVARCHAR:
|
||||
#endif
|
||||
if (IS_SQL_LONG(result->values[i].coltype) && result->longreadlen <= 0) {
|
||||
ZVAL_EMPTY_STRING(&tmp);
|
||||
break;
|
||||
|
@ -1838,9 +1822,7 @@ PHP_FUNCTION(odbc_result)
|
|||
ZEND_FALLTHROUGH;
|
||||
|
||||
case SQL_LONGVARCHAR:
|
||||
#if defined(ODBCVER) && (ODBCVER >= 0x0300)
|
||||
case SQL_WLONGVARCHAR:
|
||||
#endif
|
||||
if (IS_SQL_LONG(result->values[field_ind].coltype)) {
|
||||
if (result->longreadlen <= 0) {
|
||||
break;
|
||||
|
@ -1848,7 +1830,7 @@ PHP_FUNCTION(odbc_result)
|
|||
fieldsize = result->longreadlen;
|
||||
}
|
||||
} else {
|
||||
PHP_ODBC_SQLCOLATTRIBUTE(result->stmt, (SQLUSMALLINT)(field_ind + 1),
|
||||
SQLColAttribute(result->stmt, (SQLUSMALLINT)(field_ind + 1),
|
||||
(SQLUSMALLINT)((sql_c_type == SQL_C_BINARY) ? SQL_COLUMN_LENGTH :
|
||||
SQL_COLUMN_DISPLAY_SIZE),
|
||||
NULL, 0, NULL, &fieldsize);
|
||||
|
@ -1884,10 +1866,7 @@ PHP_FUNCTION(odbc_result)
|
|||
/* Reduce fieldlen by 1 if we have char data. One day we might
|
||||
have binary strings... */
|
||||
if ((result->values[field_ind].coltype == SQL_LONGVARCHAR)
|
||||
#if defined(ODBCVER) && (ODBCVER >= 0x0300)
|
||||
|| (result->values[field_ind].coltype == SQL_WLONGVARCHAR)
|
||||
#endif
|
||||
) {
|
||||
|| (result->values[field_ind].coltype == SQL_WLONGVARCHAR)) {
|
||||
fieldsize -= 1;
|
||||
}
|
||||
/* Don't duplicate result, saves one emalloc.
|
||||
|
@ -2023,9 +2002,7 @@ PHP_FUNCTION(odbc_result_all)
|
|||
/* TODO: Check this is the intended behaviour */
|
||||
ZEND_FALLTHROUGH;
|
||||
case SQL_LONGVARCHAR:
|
||||
#if defined(ODBCVER) && (ODBCVER >= 0x0300)
|
||||
case SQL_WLONGVARCHAR:
|
||||
#endif
|
||||
if (IS_SQL_LONG(result->values[i].coltype) &&
|
||||
result->longreadlen <= 0) {
|
||||
php_printf("<td>Not printable</td>");
|
||||
|
@ -2169,7 +2146,7 @@ bool odbc_sqlconnect(zval *zv, char *db, char *uid, char *pwd, int cur_opt, bool
|
|||
}
|
||||
#else
|
||||
if (cur_opt != SQL_CUR_DEFAULT) {
|
||||
rc = SQLSetConnectOption(link->connection->hdbc, SQL_ODBC_CURSORS, cur_opt);
|
||||
rc = SQLSetConnectAttr(link->connection->hdbc, SQL_ATTR_ODBC_CURSORS, (SQLPOINTER) (intptr_t) cur_opt, 0);
|
||||
if (rc != SQL_SUCCESS) { /* && rc != SQL_SUCCESS_WITH_INFO ? */
|
||||
odbc_sql_error(link->connection, SQL_NULL_HSTMT, "SQLSetConnectOption");
|
||||
return false;
|
||||
|
@ -2600,7 +2577,7 @@ PHP_FUNCTION(odbc_field_type)
|
|||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
PHP_ODBC_SQLCOLATTRIBUTE(result->stmt, (SQLUSMALLINT)pv_num, SQL_COLUMN_TYPE_NAME, tmp, 31, &tmplen, NULL);
|
||||
SQLColAttribute(result->stmt, (SQLUSMALLINT)pv_num, SQL_COLUMN_TYPE_NAME, tmp, 31, &tmplen, NULL);
|
||||
RETURN_STRING(tmp);
|
||||
}
|
||||
/* }}} */
|
||||
|
@ -2670,7 +2647,7 @@ PHP_FUNCTION(odbc_autocommit)
|
|||
CHECK_ODBC_CONNECTION(conn);
|
||||
|
||||
if (!pv_onoff_is_null) {
|
||||
rc = SQLSetConnectOption(conn->hdbc, SQL_AUTOCOMMIT, pv_onoff ? SQL_AUTOCOMMIT_ON : SQL_AUTOCOMMIT_OFF);
|
||||
rc = SQLSetConnectAttr(conn->hdbc, SQL_ATTR_AUTOCOMMIT, (SQLPOINTER) (intptr_t) (pv_onoff ? SQL_AUTOCOMMIT_ON : SQL_AUTOCOMMIT_OFF), 0);
|
||||
if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
|
||||
odbc_sql_error(conn, SQL_NULL_HSTMT, "Set autocommit");
|
||||
RETURN_FALSE;
|
||||
|
@ -2679,7 +2656,7 @@ PHP_FUNCTION(odbc_autocommit)
|
|||
} else {
|
||||
SQLINTEGER status;
|
||||
|
||||
rc = SQLGetConnectOption(conn->hdbc, SQL_AUTOCOMMIT, (PTR)&status);
|
||||
rc = SQLGetConnectAttr(conn->hdbc, SQL_ATTR_AUTOCOMMIT, &status, SQL_IS_INTEGER, NULL);
|
||||
if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
|
||||
odbc_sql_error(conn, SQL_NULL_HSTMT, "Get commit status");
|
||||
RETURN_FALSE;
|
||||
|
@ -2781,7 +2758,7 @@ PHP_FUNCTION(odbc_setoption)
|
|||
php_error_docref(NULL, E_WARNING, "Unable to set option for persistent connection");
|
||||
RETURN_FALSE;
|
||||
}
|
||||
rc = SQLSetConnectOption(link->connection->hdbc, (unsigned short) pv_opt, pv_val);
|
||||
rc = SQLSetConnectAttr(link->connection->hdbc, pv_opt, (SQLPOINTER) pv_val, 0);
|
||||
if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
|
||||
odbc_sql_error(link->connection, SQL_NULL_HSTMT, "SetConnectOption");
|
||||
RETURN_FALSE;
|
||||
|
@ -2795,7 +2772,7 @@ PHP_FUNCTION(odbc_setoption)
|
|||
result = Z_ODBC_RESULT_P(pv_handle);
|
||||
CHECK_ODBC_RESULT(result);
|
||||
|
||||
rc = SQLSetStmtOption(result->stmt, (unsigned short) pv_opt, pv_val);
|
||||
rc = SQLSetStmtAttr(result->stmt, pv_opt, (SQLPOINTER) pv_val, 0);
|
||||
|
||||
if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
|
||||
odbc_sql_error(result->conn_ptr, result->stmt, "SetStmtOption");
|
||||
|
@ -2835,7 +2812,7 @@ PHP_FUNCTION(odbc_tables)
|
|||
object_init_ex(return_value, odbc_result_ce);
|
||||
result = Z_ODBC_RESULT_P(return_value);
|
||||
|
||||
rc = PHP_ODBC_SQLALLOCSTMT(conn->hdbc, &(result->stmt));
|
||||
rc = SQLAllocHandle(SQL_HANDLE_STMT, conn->hdbc, &(result->stmt));
|
||||
if (rc == SQL_INVALID_HANDLE) {
|
||||
php_error_docref(NULL, E_WARNING, "SQLAllocStmt error 'Invalid Handle'");
|
||||
zval_ptr_dtor(return_value);
|
||||
|
@ -2900,7 +2877,7 @@ PHP_FUNCTION(odbc_columns)
|
|||
object_init_ex(return_value, odbc_result_ce);
|
||||
result = Z_ODBC_RESULT_P(return_value);
|
||||
|
||||
rc = PHP_ODBC_SQLALLOCSTMT(conn->hdbc, &(result->stmt));
|
||||
rc = SQLAllocHandle(SQL_HANDLE_STMT, conn->hdbc, &(result->stmt));
|
||||
if (rc == SQL_INVALID_HANDLE) {
|
||||
php_error_docref(NULL, E_WARNING, "SQLAllocStmt error 'Invalid Handle'");
|
||||
zval_ptr_dtor(return_value);
|
||||
|
@ -2968,7 +2945,7 @@ PHP_FUNCTION(odbc_columnprivileges)
|
|||
object_init_ex(return_value, odbc_result_ce);
|
||||
result = Z_ODBC_RESULT_P(return_value);
|
||||
|
||||
rc = PHP_ODBC_SQLALLOCSTMT(conn->hdbc, &(result->stmt));
|
||||
rc = SQLAllocHandle(SQL_HANDLE_STMT, conn->hdbc, &(result->stmt));
|
||||
if (rc == SQL_INVALID_HANDLE) {
|
||||
php_error_docref(NULL, E_WARNING, "SQLAllocStmt error 'Invalid Handle'");
|
||||
zval_ptr_dtor(return_value);
|
||||
|
@ -3042,7 +3019,7 @@ PHP_FUNCTION(odbc_foreignkeys)
|
|||
object_init_ex(return_value, odbc_result_ce);
|
||||
result = Z_ODBC_RESULT_P(return_value);
|
||||
|
||||
rc = PHP_ODBC_SQLALLOCSTMT(conn->hdbc, &(result->stmt));
|
||||
rc = SQLAllocHandle(SQL_HANDLE_STMT, conn->hdbc, &(result->stmt));
|
||||
if (rc == SQL_INVALID_HANDLE) {
|
||||
php_error_docref(NULL, E_WARNING, "SQLAllocStmt error 'Invalid Handle'");
|
||||
zval_ptr_dtor(return_value);
|
||||
|
@ -3106,7 +3083,7 @@ PHP_FUNCTION(odbc_gettypeinfo)
|
|||
object_init_ex(return_value, odbc_result_ce);
|
||||
result = Z_ODBC_RESULT_P(return_value);
|
||||
|
||||
rc = PHP_ODBC_SQLALLOCSTMT(conn->hdbc, &(result->stmt));
|
||||
rc = SQLAllocHandle(SQL_HANDLE_STMT, conn->hdbc, &(result->stmt));
|
||||
if (rc == SQL_INVALID_HANDLE) {
|
||||
php_error_docref(NULL, E_WARNING, "SQLAllocStmt error 'Invalid Handle'");
|
||||
zval_ptr_dtor(return_value);
|
||||
|
@ -3161,7 +3138,7 @@ PHP_FUNCTION(odbc_primarykeys)
|
|||
object_init_ex(return_value, odbc_result_ce);
|
||||
result = Z_ODBC_RESULT_P(return_value);
|
||||
|
||||
rc = PHP_ODBC_SQLALLOCSTMT(conn->hdbc, &(result->stmt));
|
||||
rc = SQLAllocHandle(SQL_HANDLE_STMT, conn->hdbc, &(result->stmt));
|
||||
if (rc == SQL_INVALID_HANDLE) {
|
||||
php_error_docref(NULL, E_WARNING, "SQLAllocStmt error 'Invalid Handle'");
|
||||
zval_ptr_dtor(return_value);
|
||||
|
@ -3221,7 +3198,7 @@ PHP_FUNCTION(odbc_procedurecolumns)
|
|||
object_init_ex(return_value, odbc_result_ce);
|
||||
result = Z_ODBC_RESULT_P(return_value);
|
||||
|
||||
rc = PHP_ODBC_SQLALLOCSTMT(conn->hdbc, &(result->stmt));
|
||||
rc = SQLAllocHandle(SQL_HANDLE_STMT, conn->hdbc, &(result->stmt));
|
||||
if (rc == SQL_INVALID_HANDLE) {
|
||||
php_error_docref(NULL, E_WARNING, "SQLAllocStmt error 'Invalid Handle'");
|
||||
zval_ptr_dtor(return_value);
|
||||
|
@ -3282,7 +3259,7 @@ PHP_FUNCTION(odbc_procedures)
|
|||
object_init_ex(return_value, odbc_result_ce);
|
||||
result = Z_ODBC_RESULT_P(return_value);
|
||||
|
||||
rc = PHP_ODBC_SQLALLOCSTMT(conn->hdbc, &(result->stmt));
|
||||
rc = SQLAllocHandle(SQL_HANDLE_STMT, conn->hdbc, &(result->stmt));
|
||||
if (rc == SQL_INVALID_HANDLE) {
|
||||
php_error_docref(NULL, E_WARNING, "SQLAllocStmt error 'Invalid Handle'");
|
||||
zval_ptr_dtor(return_value);
|
||||
|
@ -3348,7 +3325,7 @@ PHP_FUNCTION(odbc_specialcolumns)
|
|||
object_init_ex(return_value, odbc_result_ce);
|
||||
result = Z_ODBC_RESULT_P(return_value);
|
||||
|
||||
rc = PHP_ODBC_SQLALLOCSTMT(conn->hdbc, &(result->stmt));
|
||||
rc = SQLAllocHandle(SQL_HANDLE_STMT, conn->hdbc, &(result->stmt));
|
||||
if (rc == SQL_INVALID_HANDLE) {
|
||||
php_error_docref(NULL, E_WARNING, "SQLAllocStmt error 'Invalid Handle'");
|
||||
zval_ptr_dtor(return_value);
|
||||
|
@ -3414,7 +3391,7 @@ PHP_FUNCTION(odbc_statistics)
|
|||
object_init_ex(return_value, odbc_result_ce);
|
||||
result = Z_ODBC_RESULT_P(return_value);
|
||||
|
||||
rc = PHP_ODBC_SQLALLOCSTMT(conn->hdbc, &(result->stmt));
|
||||
rc = SQLAllocHandle(SQL_HANDLE_STMT, conn->hdbc, &(result->stmt));
|
||||
if (rc == SQL_INVALID_HANDLE) {
|
||||
php_error_docref(NULL, E_WARNING, "SQLAllocStmt error 'Invalid Handle'");
|
||||
zval_ptr_dtor(return_value);
|
||||
|
@ -3475,7 +3452,7 @@ PHP_FUNCTION(odbc_tableprivileges)
|
|||
object_init_ex(return_value, odbc_result_ce);
|
||||
result = Z_ODBC_RESULT_P(return_value);
|
||||
|
||||
rc = PHP_ODBC_SQLALLOCSTMT(conn->hdbc, &(result->stmt));
|
||||
rc = SQLAllocHandle(SQL_HANDLE_STMT, conn->hdbc, &(result->stmt));
|
||||
if (rc == SQL_INVALID_HANDLE) {
|
||||
php_error_docref(NULL, E_WARNING, "SQLAllocStmt error 'Invalid Handle'");
|
||||
zval_ptr_dtor(return_value);
|
||||
|
|
|
@ -102,7 +102,6 @@
|
|||
#endif
|
||||
|
||||
#define ODBC_TYPE "unixODBC"
|
||||
#undef ODBCVER
|
||||
#include <sql.h>
|
||||
#include <sqlext.h>
|
||||
#define HAVE_SQL_EXTENDED_FETCH 1
|
||||
|
@ -132,8 +131,6 @@
|
|||
#elif defined(HAVE_DBMAKER) /* DBMaker */
|
||||
|
||||
#define ODBC_TYPE "DBMaker"
|
||||
#undef ODBCVER
|
||||
#define ODBCVER 0x0300
|
||||
#define HAVE_SQL_EXTENDED_FETCH 1
|
||||
#include <odbc.h>
|
||||
|
||||
|
@ -265,21 +262,8 @@ void odbc_bindcols(odbc_result *result);
|
|||
|
||||
void odbc_sql_error(ODBC_SQL_ERROR_PARAMS);
|
||||
|
||||
#if defined(ODBCVER) && (ODBCVER >= 0x0300)
|
||||
#define IS_SQL_LONG(x) (x == SQL_LONGVARBINARY || x == SQL_LONGVARCHAR || x == SQL_WLONGVARCHAR)
|
||||
|
||||
#define PHP_ODBC_SQLCOLATTRIBUTE SQLColAttribute
|
||||
#define PHP_ODBC_SQLALLOCSTMT(hdbc, phstmt) SQLAllocHandle(SQL_HANDLE_STMT, hdbc, phstmt)
|
||||
|
||||
#define PHP_ODBC_SQL_DESC_NAME SQL_DESC_NAME
|
||||
#else
|
||||
#define IS_SQL_LONG(x) (x == SQL_LONGVARBINARY || x == SQL_LONGVARCHAR)
|
||||
|
||||
#define PHP_ODBC_SQLCOLATTRIBUTE SQLColAttributes
|
||||
#define PHP_ODBC_SQLALLOCSTMT SQLAllocStmt
|
||||
|
||||
#define PHP_ODBC_SQL_DESC_NAME SQL_COLUMN_NAME
|
||||
#endif
|
||||
#define IS_SQL_BINARY(x) (x == SQL_BINARY || x == SQL_VARBINARY || x == SQL_LONGVARBINARY)
|
||||
|
||||
PHP_ODBC_API ZEND_EXTERN_MODULE_GLOBALS(odbc)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue