Merge branch 'PHP-7.2'

* PHP-7.2:
  Fixed bug #73725 Unable to retrieve value of varchar(max) type
This commit is contained in:
Anatol Belski 2018-01-22 17:05:03 +01:00
commit 23287a0a81
2 changed files with 62 additions and 0 deletions

View File

@ -1023,6 +1023,13 @@ int odbc_bindcols(odbc_result *result)
break;
}
#endif
/* Workaround for drivers that report VARCHAR(MAX) columns as SQL_VARCHAR (bug #73725) */
if (SQL_VARCHAR == result->values[i].coltype && displaysize == 0) {
result->values[i].coltype = SQL_LONGVARCHAR;
result->values[i].value = NULL;
break;
}
/* Workaround for Oracle ODBC Driver bug (#50162) when fetching TIMESTAMP column */
if (result->values[i].coltype == SQL_TIMESTAMP) {
displaysize += 3;

View File

@ -0,0 +1,55 @@
--TEST--
Bug #73725 Unable to retrieve value of varchar(max) type
--SKIPIF--
<?php include 'skipif.inc'; ?>
--FILE--
<?php
include dirname(__FILE__) . "/config.inc";
$conn = odbc_connect($dsn, $user, $pass);
odbc_do($conn, "CREATE TABLE bug73725(i int, txt varchar(max), k int)");
odbc_do($conn, "INSERT INTO bug73725 VALUES(101,'Any text', 33)");
odbc_do($conn, "INSERT INTO bug73725 VALUES(102,'Müsliriegel', 34)");
$rc = odbc_do($conn, "SELECT i, txt, k FROM bug73725");
$r = odbc_fetch_array($rc);
var_dump($r);
$r = odbc_fetch_array($rc);
var_dump($r);
?>
==DONE==
--EXPECT--
array(3) {
["i"]=>
string(3) "101"
["txt"]=>
string(8) "Any text"
["k"]=>
string(2) "33"
}
array(3) {
["i"]=>
string(3) "102"
["txt"]=>
string(12) "Müsliriegel"
["k"]=>
string(2) "34"
}
==DONE==
--CLEAN--
<?php
include 'config.inc';
$conn = odbc_connect($dsn, $user, $pass);
odbc_exec($conn, 'DROP TABLE bug73725');
odbc_close($conn);
?>