#42414 [Fbk->Opn]: odbc_columns() function incompatible with Oracle ODBC driver
ID: 42414
User updated by: jhml at gmx dot net
Reported By: jhml at gmx dot net
-Status: Feedback
+Status: Open
Bug Type: ODBC related
Operating System: Linux
PHP Version: 5.2.3
New Comment:
I've tested IBM DB2 (iSeries ODBC driver from IBM), MS SQL
(FreeTDS), Sybase (FreeTDS) and Oracle (native ODBC driver from
Oracle). Moreover, NULL is also already passed when odbc_columns()
is called with only one parameter.
The patch may appear ugly but it's the same style as the Access
workaround. IMHO it would be cleaner to allow passing a PHP-null to
actually become a C-NULL, i.e. not forcing the String cast for null
values, but that would be much more intrusive!
Previous Comments:
------------------------------------------------------------------------
[2007-08-24 13:15:14] jani@php.net
Are you sure it doesn't break the other possible drivers..?
------------------------------------------------------------------------
[2007-08-24 13:13:42] jhml at gmx dot net
Proposed patch:
--- php-5.2.3/ext/odbc/php_odbc.c 2007-03-13
01:04:38.000000000 +0100
+++ php-5.2.3-fix_odbc_columns/ext/odbc/php_odbc.c 2007-08-24
14:57:41.000000000 +0200
@@ -2947,6 +2947,11 @@
*/
if (table && strlen(table) && schema && !strlen(schema))
schema = NULL;
+ /*
+ * Needed to make Oracle happy (Johann Hanne)
+ */
+ if (cat && !strlen(cat)) cat = NULL;
+
rc = SQLColumns(result->stmt,
cat, cat_len,
schema, schema_len,
------------------------------------------------------------------------
[2007-08-24 13:11:23] jhml at gmx dot net
Description:
------------
The Oracle ODBC driver expects NULL as the second parameter to the
SQLColumns() C function, otherwise, it will throw an error. With PHP
5.2.3 it's not possibly to specify NULL, though.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=42414&edit=1
Thread (10 messages)