Field name truncation if the field name is bigger than 32 characters

Bug #65950 Field name truncation if the field name is bigger than 32 characters
Submitted: 2013-10-23 11:49 UTC Modified: 2013-10-28 09:44 UTC
From: michael dot y at zend dot com Assigned: yohgaki (profile)
Status: Closed Package: ODBC related
PHP Version: 5.4.21 OS: Linux
Private report: No CVE-ID: None

 [2013-10-23 11:49 UTC] michael dot y at zend dot com

Description:
------------
Field names are truncated to 30 charactes if they are bigger than 32 bytes in MS SQL Server. If i am using odbc php extension that connects to unixodbc + freetds.


Test script:
---------------
<?php

$cnx = odbc_connect("Driver=FreeTDS; Server=10.9.178.47;port=1433;Database=AdventureWorks;CHARSET=UTF-8;TDS_Version=8.0;", "sa", "pass");

$query = "SELECT * FROM dbo.Roman";

$res = odbc_exec($cnx,$query);

while( $row = odbc_fetch_array($res) ) {
        print_r($row);
} 

echo $cnx;
?>

Expected result:
----------------
Roman table there is a field which name is hello_one_two_three_four_five_six_seven_eight_nine_ten_eleven.

Actual result:
--------------
It is truncated to hello_one_two_three_four_five_ .

Patches

php_odbc.patch (last revision 2013-10-23 11:49 UTC by michael dot y at zend dot com)

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports

 [2013-10-25 23:11 UTC] yohgaki@php.net

I think SQL standard is 128, but 256 should work also. (There may be DBMS that has larger limit) Checked php_obdb.c and it look fine with your patch. 

I'll apply your patch.
Thank you.

 [2013-10-26 23:01 UTC] yohgaki@php.net

Patches for branches is ready, but git is closed now.
Assign this to myself.

 [2013-11-28 14:48 UTC] charles dot durrant at thomsonreuters dot com

I had this problem, patch appreciated

 [2013-11-28 15:09 UTC] charles dot durrant at thomsonreuters dot com

Under SQL server Native Client 11.00 on Linux I get truncated to 15 - field names are returned as wide chars so I assume it is getting halved so 256 is a safer buffer size.