List:Commits« Previous MessageNext Message »
From:uwendel Date:August 20 2007 7:09pm
Subject:PHP mysqlnd svn commit: r931 - trunk/tests/ext/mysqli
View as plain text  
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"]=>

Thread
PHP mysqlnd svn commit: r931 - trunk/tests/ext/mysqliuwendel20 Aug