Author: Calvin Buckley (NattyNarwhal)
Committer: GitHub (web-flow)
Pusher: NattyNarwhal
Date: 2025-08-12T18:05:43-03:00
Commit: https://github.com/php/php-src/commit/60047025db8451ba4a37ded3be4dc9c4afbfbeaa
Raw diff: https://github.com/php/php-src/commit/60047025db8451ba4a37ded3be4dc9c4afbfbeaa.diff
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 <[email protected]>
Changed paths:
M NEWS
M UPGRADING
M ext/odbc/config.m4
M ext/odbc/config.w32
M ext/odbc/odbc.stub.php
M ext/odbc/odbc_arginfo.h
M ext/odbc/php_odbc.c
M ext/odbc/php_odbc_includes.h
Diff:
diff --git a/NEWS b/NEWS
index e12cbaedacb44..1756b8a1ba032 100644
--- a/NEWS
+++ b/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)
diff --git a/UPGRADING b/UPGRADING
index c0cc16399675c..e586933fd9338 100644
--- a/UPGRADING
+++ b/UPGRADING
@@ -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
diff --git a/ext/odbc/config.m4 b/ext/odbc/config.m4
index 9baa8dbd8e646..4a1a4bb213319 100644
--- a/ext/odbc/config.m4
+++ b/ext/odbc/config.m4
@@ -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],, [
diff --git a/ext/odbc/config.w32 b/ext/odbc/config.w32
index 1030db44465be..e19013c0fc41c 100644
--- a/ext/odbc/config.w32
+++ b/ext/odbc/config.w32
@@ -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"
diff --git a/ext/odbc/odbc.stub.php b/ext/odbc/odbc.stub.php
index 8a54e913e88ed..9c942cca1bcfb 100644
--- a/ext/odbc/odbc.stub.php
+++ b/ext/odbc/odbc.stub.php
@@ -233,8 +233,6 @@ class Result
* @cvalue SQL_TIMESTAMP
*/
const SQL_TIMESTAMP = UNKNOWN;
-
-#if (defined(ODBCVER) && (ODBCVER >= 0x0300))
/**
* @var int
* @cvalue SQL_TYPE_DATE
@@ -327,8 +325,6 @@ class Result
*/
const SQL_QUICK = UNKNOWN;
-#endif
-
function odbc_close_all(): void {}
function odbc_binmode(Odbc\Result $statement, int $mode): true {}
diff --git a/ext/odbc/odbc_arginfo.h b/ext/odbc/odbc_arginfo.h
index ddb6b35ab1af2..da588a452a744 100644
--- a/ext/odbc/odbc_arginfo.h
+++ b/ext/odbc/odbc_arginfo.h
@@ -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);
diff --git a/ext/odbc/php_odbc.c b/ext/odbc/php_odbc.c
index 55334fa15b1ce..80e2ac9359d17 100644
--- a/ext/odbc/php_odbc.c
+++ b/ext/odbc/php_odbc.c
@@ -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);
diff --git a/ext/odbc/php_odbc_includes.h b/ext/odbc/php_odbc_includes.h
index e0c6330d74498..31da0f25ca837 100644
--- a/ext/odbc/php_odbc_includes.h
+++ b/ext/odbc/php_odbc_includes.h
@@ -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)