#42414 [Fbk->Opn]: odbc_columns() function incompatible with Oracle ODBC driver

From: Date: Fri, 24 Aug 2007 13:38:17 +0000
Subject: #42414 [Fbk->Opn]: odbc_columns() function incompatible with Oracle ODBC driver
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-116632@lists.php.net to get a copy of this message
 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)

« previous php.bugs (#116632) next »