Edit report at https://bugs.php.net/bug.php?id=63949&edit=1

 ID:                 63949
 Comment by:         cyberitas at gmail dot com
 Reported by:        toebs at pubsqrd dot com
 Summary:            selects on long varchar fields returns empty with
                     PDO ODBC
 Status:             Open
 Type:               Bug
 Package:            PDO related
 Operating System:   Amazon Linux
 PHP Version:        5.4.10
 Block user comment: N
 Private report:     N

 New Comment:

We're also seeing the same sigsegv mentioned in the previous comment with 
pdo+odbc 
with MS-SQL via freetds ODBC.  Selecting from a column defined as varchar(256) 
any 
of the fetch functions lead to a segfault. 


Program received signal SIGSEGV, Segmentation fault.
0x00002aaab393010b in ?? () from /usr/lib64/libodbccr.so.1
(gdb) info stack
#0  0x00002aaab393010b in ?? () from /usr/lib64/libodbccr.so.1
#1  0x00002aaab013648d in SQLGetData () from /usr/lib64/libodbc.so.1
#2  0x00002aaab059d288 in ?? () from /usr/lib64/php/modules/pdo_odbc.so
#3  0x00002aaab038d920 in ?? () from /usr/lib64/php/modules/pdo.so
#4  0x00002aaab038e56e in ?? () from /usr/lib64/php/modules/pdo.so
#5  0x00002aaab038f7fc in ?? () from /usr/lib64/php/modules/pdo.so
#6  0x00000000005e78e9 in ?? ()
#7  0x00000000005bd9ab in execute ()
#8  0x0000000000599f45 in zend_execute_scripts ()
#9  0x000000000054ad48 in php_execute_script ()
#10 0x0000000000622cde in ?? ()
#11 0x00000034b5e1d9c4 in __libc_start_main () from /lib64/libc.so.6
#12 0x0000000000421789 in _start ()


Previous Comments:
------------------------------------------------------------------------
[2013-01-30 00:38:14] paul dot posts at gmail dot com

Apologies, our testing showed that cast to text was not a viable workaround.

------------------------------------------------------------------------
[2013-01-30 00:08:44] paul dot posts at gmail dot com

Also seeing this using pdo+odbc with MSSQL 2012. varchar(max) and varchar(256) 
columns were both causing heap overflow. Casting the columns to a text column 
resulted in returning the correct data as a workaround.

------------------------------------------------------------------------
[2013-01-09 08:41:31] toebs at pubsqrd dot com

Typo in the email address.  Correct email is "to...@pubsqrd.com".

------------------------------------------------------------------------
[2013-01-09 00:27:02] toebs at pubsqrd dot com

Description:
------------
In short, it looks like selects on varchars columns which are long (some 
indeterminate value, 1000 certainly qualifies) fail with PDO via ODBC.

The same query works with the following methods;

1. PDO using mysql
2. unixODBC directly (via isql)
3. vsql (the Vertica native command line client)
4. PHP ODBC

The error given is that column binding has not occurred.  This is odd - note in 
the script I have deliberately used fetchColumn() to avoid the need for column 
binding, in an effort to avoid this error.

This problem was found in 5.3.19 and also in 5.4.9.


Test script:
---------------
create table tobytest
(
  string_short varchar(50),
  string_long varchar(1000)
);

insert into tobytest (string_short, string_long) values ('short', 'long');

<?php

$db_connect = new PDO( "odbc:pubsquared", "dbadmin", "big science" );
$db_connect -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$q = $db_connect->prepare( "select string_long from tobytest" );
$q->execute();

$r = $q->fetchColumn();
print $r;

?>



Expected result:
----------------
[root@ip-1-1-1-1 ~]# php test4.php
long
[root@ip-1-1-1-1 ~]#


Actual result:
--------------
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[SL010]: 
<<Unknown error>>: 0 [unixODBC][Driver Manager]SQLBindCol returned SQL_ERROR on 
a attempt to bind a internal buffer (SQLFetchScroll[0] at 
/builddir/build/BUILD/php-5.4.9/ext/pdo_odbc/odbc_stmt.c:537)' in 
/root/test4.php:8
Stack trace:
#0 /root/test4.php(8): PDOStatement->fetchColumn()
#1 {main}


------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=63949&edit=1

Reply via email to