ID: 42414
User updated by: jhml at gmx dot net
-Summary: odbc_columns() function incompatible with Oracle ODBC
driver
Reported By: jhml at gmx dot net
Status: Open
Bug Type: ODBC related
Operating System: Linux
PHP Version: 5.2.3
New Comment:
Argh. Same problem with odbc_primarykeys(). Will examine the other
functions also and create a new patch...
Previous Comments:
------------------------------------------------------------------------
[2007-08-24 16:27:08] jhml at gmx dot net
Tested with MyODBC as well, no problems!
------------------------------------------------------------------------
[2007-08-24 13:38:16] jhml at gmx dot net
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!
------------------------------------------------------------------------
[2007-08-24 13:15:14] [EMAIL PROTECTED]
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