[php-src] master: Remove references to ODBCVER and assume ODBC 3.x (#19453)

From: Date: Tue, 12 Aug 2025 21:05:46 +0000
Subject: [php-src] master: Remove references to ODBCVER and assume ODBC 3.x (#19453)
Groups: php.cvs 
Request: Send a blank email to [email protected] to get a copy of this message
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)


Thread (1 message)

  • Calvin Buckley via GitHub
« previous php.cvs (#135276) next »