From: Date: August 20 2007 7:09pm Subject: PHP mysqlnd svn commit: r931 - trunk/tests/ext/mysqli List-Archive: http://lists.mysql.com/commits/32766 Message-Id: <200708201709.l7KH9jJn024672@bk-internal.mysql.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Author: uwendel Date: 2007-08-20 19:09:44 +0200 (Mon, 20 Aug 2007) New Revision: 931 Modified: trunk/tests/ext/mysqli/mysqli_fetch_field.phpt Log: Fails badly. Checking this version in to discuss it with Andrey. Modified: trunk/tests/ext/mysqli/mysqli_fetch_field.phpt =================================================================== --- trunk/tests/ext/mysqli/mysqli_fetch_field.phpt 2007-08-20 14:23:13 UTC (rev 930) +++ trunk/tests/ext/mysqli/mysqli_fetch_field.phpt 2007-08-20 17:09:44 UTC (rev 931) @@ -51,7 +51,109 @@ var_dump(mysqli_fetch_assoc($res)); var_dump(mysqli_fetch_field($res)); mysqli_free_result($res); + + function mysqli_field_datatypes($link, $sql_type, $php_value, $php_type, $datatypes) { + if (!mysqli_query($link, "DROP TABLE IF EXISTS test")) { + printf("[009 + 01] %s, [%d] %s\n", $sql_type, + mysqli_errno($link), mysqli_error($link)); + return false; + } + + $sql = sprintf("CREATE TABLE test(id %s)", $sql_type); + if (!mysqli_query($link, $sql)) { + printf("[009 + 02] %s, [%d] %s\n", $sql_type, + mysqli_errno($link), mysqli_error($link)); + return false; + } + + $sql = sprintf("INSERT INTO test(id) VALUES ('%s')", $php_value); + if (!mysqli_query($link, $sql)) { + printf("[009 + 03] %s, [%d] %s\n", $sql_type, + mysqli_errno($link), mysqli_error($link)); + return false; + } + + if (!$res = mysqli_query($link, 'SELECT id FROM test')) { + printf("[009 + 04] %s, [%d] %s\n", $sql_type, + mysqli_errno($link), mysqli_error($link)); + return false; + } + + if (!is_object($field = mysqli_fetch_field($res))) { + printf("[009 + 05] %s, expecting object got %s, [%d] %s\n", $sql_type, + gettype($field), + mysqli_errno($link), mysqli_error($link)); + return false; + } + + if ($field->type != $php_type) { + $code_name = 'unknown'; + foreach ($datatypes as $k => $v) + if ($k == $field->type) { + $code_name = $v[0]; + break; + } + printf("[009 + 6] %s, expecting type code %d got code %s/%s\n", + $sql_type, $php_type, $code_name, $field->type); + return false; + } + + return true; + } + + $datatypes = array( + MYSQLI_TYPE_TINY => array('TINYINT', 5), + MYSQLI_TYPE_SHORT => array('SMALLINT', 10), + // MYSQLI_TYPE_LONG => array('BIGINT', 100), + MYSQLI_TYPE_FLOAT => array('FLOAT', '1.3'), + MYSQLI_TYPE_DOUBLE => array('DOUBLE', '1.4'), + MYSQLI_TYPE_TIMESTAMP => array('TIMESTAMP', '2007-08-20 18:34:00'), + MYSQLI_TYPE_LONGLONG => array('BIGINT', 100), + MYSQLI_TYPE_INT24 => array('MEDIUMINT', 10), + MYSQLI_TYPE_DATE => array('DATE', '2007-08-20'), + MYSQLI_TYPE_TIME => array('TIME', '18:41:38'), + MYSQLI_TYPE_DATETIME => array('DATETIME', '2007-08-20 18:42:01'), + MYSQLI_TYPE_YEAR => array('YEAR', '2007'), + MYSQLI_TYPE_ENUM => array('ENUM("everything", "is", "just", "wonderful")', 'is'), + MYSQLI_TYPE_SET => array('SET("I", "smash", "the")', 'I,smash,the'), + MYSQLI_TYPE_TINY_BLOB => array("TINYBLOB", "I got a tiny blog"), + MYSQLI_TYPE_MEDIUM_BLOB => array("MEDIUMBLOB", "No blob for masses"), + MYSQLI_TYPE_LONG_BLOB => array("LONGBLOB", "Small is beautiful?"), + MYSQLI_TYPE_BLOB => array("BLOB", 'silly'), + MYSQLI_TYPE_VAR_STRING => array("VARCHAR(32768)", 'varchar'), + // MYSQLI_TYPE_STRING => array('CHAR(100)', 'char'), + MYSQLI_TYPE_CHAR => array('CHAR(1)', 'a'), +/* + "MYSQLI_TYPE_NULL" => true, + "MYSQLI_TYPE_NEWDATE" => true, + "MYSQLI_TYPE_INTERVAL" => true, + "MYSQLI_TYPE_GEOMETRY" => true, + */ + ); + + if ($IS_MYSQLND) { + $version = 50007 + 1; + } else { + $version = mysqli_get_client_version(); + } + + if ($version > 50002) { + $datatypes = array_merge($datatypes, array( + "MYSQLI_TYPE_NEWDECIMAL" => array('DECIMAL', '1.1'), + "MYSQLI_TYPE_BIT" => array('BIT', 0), + )); + } else { + $datatypes = array_merge($datatypes, array( + MYSQLI_TYPE_DECIMAL => array('DECIMAL', '1.1'), + )); + } + + sort($datatypes); + foreach ($datatypes as $php_type => $datatype) + mysqli_field_datatypes($link, $datatype[0], $datatype[1], $php_type, $datatypes); + mysqli_close($link); + print "done!"; ?> --EXPECTF-- @@ -110,7 +212,7 @@ ["_default_test"]=> string(1) "2" } -object(stdClass)#3 (11) { +object(stdClass)#%d (11) { ["name"]=> string(13) "_default_test" ["orgname"]=> @@ -191,7 +293,7 @@ [u"_default_test"]=> unicode(1) "2" } -object(stdClass)#3 (11) { +object(stdClass)#%d (11) { [u"name"]=> unicode(13) "_default_test" [u"orgname"]=>