List:Commits« Previous MessageNext Message »
From:uwendel Date:August 20 2007 9:17am
Subject:PHP mysqlnd svn commit: r922 - trunk/tests/ext/mysqli
View as plain text  
Author: uwendel
Date: 2007-08-20 11:17:34 +0200 (Mon, 20 Aug 2007)
New Revision: 922

Added:
   trunk/tests/ext/mysqli/mysqli_change_user_insert_id.phpt
   trunk/tests/ext/mysqli/mysqli_change_user_locks_temporary.phpt
   trunk/tests/ext/mysqli/mysqli_change_user_rollback.phpt
   trunk/tests/ext/mysqli/mysqli_change_user_set_names.phpt
Modified:
   trunk/tests/ext/mysqli/mysqli_change_user_oo.phpt
Log:
Adding more tests for mysqli_change_user(). LAST_INSERT_ID()/mysqli_insert_id() seems to
be buggy with libmysql. *_set_names need to me made unicode ready later on.


Added: trunk/tests/ext/mysqli/mysqli_change_user_insert_id.phpt
===================================================================
--- trunk/tests/ext/mysqli/mysqli_change_user_insert_id.phpt	2007-08-17 11:58:40 UTC (rev
921)
+++ trunk/tests/ext/mysqli/mysqli_change_user_insert_id.phpt	2007-08-20 09:17:34 UTC (rev
922)
@@ -0,0 +1,56 @@
+--TEST--
+mysqli_change_user() - LAST_INSERT_ID()
+--SKIPIF--
+<?php
+require_once('skipif.inc');
+require_once('skipifemb.inc');
+require_once('skipifconnectfailure.inc');
+?>
+--FILE--
+<?php
+	require_once('connect.inc');
+
+	if (!$link = mysqli_connect($host, $user, $passwd, $db, $port, $socket))
+		printf("[001] [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error());
+
+	if (!mysqli_query($link, 'DROP TABLE IF EXISTS test'))
+		printf("[002] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+
+	if (!mysqli_query($link, 'CREATE TABLE test(id INT AUTO_INCREMENT PRIMARY KEY, label
CHAR(10))'))
+		printf("[003] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+
+	if (!mysqli_query($link, 'INSERT INTO test(id, label) VALUES (100, "z")'))
+		printf("[004] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+
+	if (($insert_id = mysqli_insert_id($link)) !== 100)
+		printf("[005] Expecting 100, got %d, [%d] %s\n",
+			$insert_id,
+			mysqli_errno($link), mysqli_error($link));
+
+	// LAST_INSERT_ID should be reset
+	mysqli_change_user($link, $user, $passwd, $db);
+
+	if (($insert_id = mysqli_insert_id($link)) !== 0)
+		printf("[006] Expecting 0, got %d, [%d] %s\n",
+			$insert_id,
+			mysqli_errno($link), mysqli_error($link));
+
+	if (!$res = mysqli_query($link, 'SELECT LAST_INSERT_ID() as _insert_id'))
+		printf("[007] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+
+	if (!$row = mysqli_fetch_assoc($res))
+		printf("[008] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+	mysqli_free_result($res);
+
+	if ($row['_insert_id'] != $insert_id)
+		printf("LAST_INSERT_ID() [%d] and mysqli_insert_id [%d] differ!\n",
+			$row['_insert_id'], $insert_id);
+
+	if ($row['_insert_id'] != 0)
+		printf("Expecting 0 got %d\n", $row['_insert_id']);
+
+	mysqli_close($link);
+	print "done!";
+?>
+--EXPECTF--
+done!
\ No newline at end of file

Added: trunk/tests/ext/mysqli/mysqli_change_user_locks_temporary.phpt
===================================================================
--- trunk/tests/ext/mysqli/mysqli_change_user_locks_temporary.phpt	2007-08-17 11:58:40 UTC
(rev 921)
+++ trunk/tests/ext/mysqli/mysqli_change_user_locks_temporary.phpt	2007-08-20 09:17:34 UTC
(rev 922)
@@ -0,0 +1,102 @@
+--TEST--
+mysqli_change_user() - table locks, GET_LOCK(), temporary tables
+--SKIPIF--
+<?php
+require_once('skipif.inc');
+require_once('skipifemb.inc');
+require_once('skipifconnectfailure.inc');
+?>
+--FILE--
+<?php
+	require_once('connect.inc');
+	require_once('table.inc');
+
+	if (!$link2 = mysqli_connect($host, $user, $passwd, $db, $port, $socket))
+		printf("[001] Cannot create second connection handle, [%d] %s\n",
+			mysqli_connect_errno(), mysqli_connect_error());
+
+	if (!mysqli_query($link, 'LOCK TABLE test WRITE'))
+		printf("[002] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+
+	/*
+	if ($res = mysqli_query($link2, 'SELECT COUNT(*) AS _num FROM test')) {
+		printf("[003] Reading from test should not be possible due to a lock, [%d] %s\n",
+			mysqli_errno($link2), mysqli_error($link2));
+		mysqli_free_result($res);
+	}
+	*/
+
+	// LOCKS should be removed
+	mysqli_change_user($link, $user, $passwd, $db);
+
+	if (!$res = mysqli_query($link2, 'SELECT COUNT(*) AS _num FROM test'))
+		printf("[003] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+
+	if (!$row = mysqli_fetch_assoc($res))
+		printf("[004] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+
+	if ($row['_num'] < 1)
+		printf("[005] There should be some rows in the table test\n");
+
+	mysqli_free_result($res);
+	mysqli_close($link2);
+
+	if (!mysqli_query($link, 'DROP TABLE test'))
+		printf("[006] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+
+	if (!mysqli_query($link, 'CREATE TEMPORARY TABLE test(id INT)'))
+		printf("[007] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+
+	if (!mysqli_query($link, 'INSERT INTO test(id) VALUES (1), (2), (3)'))
+		printf("[008] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+
+	if (!$res = mysqli_query($link, 'SELECT COUNT(*) AS _num FROM test'))
+		printf("[009] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+
+	if (!$row = mysqli_fetch_assoc($res))
+		printf("[010] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+
+	if ($row['_num'] != 3)
+		printf("[011] There should be three rows in the table test\n");
+
+	mysqli_free_result($res);
+
+	// Temporary tables should be dropped
+	mysqli_change_user($link, $user, $passwd, $db);
+
+	if ($res = mysqli_query($link, 'SELECT COUNT(*) AS _num FROM test')) {
+		printf("[012] There should be no table test any more, [%d] %s\n",
+			mysqli_errno($link), mysqli_error($link));
+		mysqli_free_result($res);
+	}
+
+	if (!$res = mysqli_query($link, 'SELECT GET_LOCK("phptest", 2) AS _ok'))
+		printf("[013] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+
+	if (!$row = mysqli_fetch_assoc($res))
+		printf("[014] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+
+	if ($row['_ok'] != 1)
+		printf("[015] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+
+	mysqli_free_result($res);
+
+	// GET_LOCK("phptest") should be released
+	mysqli_change_user($link, $user, $passwd, $db);
+
+	if (!$res = mysqli_query($link, 'SELECT IS_FREE_LOCK("phptest") AS _ok'))
+		printf("[016] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+
+	if (!$row = mysqli_fetch_assoc($res))
+		printf("[017] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+
+	if ($row['_ok'] != 1)
+		printf("[018] Lock 'phptest' should have been released, [%d] %s\n",
+			mysqli_errno($link), mysqli_error($link));
+
+	mysqli_free_result($res);
+	mysqli_close($link);
+	print "done!";
+?>
+--EXPECTF--
+done!
\ No newline at end of file

Modified: trunk/tests/ext/mysqli/mysqli_change_user_oo.phpt
===================================================================
--- trunk/tests/ext/mysqli/mysqli_change_user_oo.phpt	2007-08-17 11:58:40 UTC (rev 921)
+++ trunk/tests/ext/mysqli/mysqli_change_user_oo.phpt	2007-08-20 09:17:34 UTC (rev 922)
@@ -8,7 +8,7 @@
 
 require_once('table.inc');
 if (!$IS_MYSQLND && (mysqli_get_server_version($link) < 50118 &&
mysqli_get_server_version($link) > 50100)) {
-	die("skip Your MySQL Server version has a known but that will cause a crash");
+	die("skip Your MySQL Server version has a known bug that will cause a crash");
 }
 ?>
 --FILE--

Added: trunk/tests/ext/mysqli/mysqli_change_user_rollback.phpt
===================================================================
--- trunk/tests/ext/mysqli/mysqli_change_user_rollback.phpt	2007-08-17 11:58:40 UTC (rev
921)
+++ trunk/tests/ext/mysqli/mysqli_change_user_rollback.phpt	2007-08-20 09:17:34 UTC (rev
922)
@@ -0,0 +1,70 @@
+--TEST--
+mysqli_change_user() - ROLLBACK
+--SKIPIF--
+<?php
+require_once('skipif.inc');
+require_once('skipifemb.inc');
+require_once('skipifconnectfailure.inc');
+require_once('connect.inc');
+$link = mysqli_connect($host, $user, $passwd, $db, $port, $socket);
+$result = mysqli_query($link, "SHOW VARIABLES LIKE 'have_innodb'");
+$row = mysqli_fetch_row($result);
+mysqli_free_result($result);
+mysqli_close($link);
+
+if ($row[1] == 'NO') {
+	printf ("skip ROLLBACK requires transactional engine InnoDB");
+}
+?>
+--FILE--
+<?php
+	require_once('connect.inc');
+	require_once('table.inc');
+
+	if (!mysqli_query($link, 'ALTER TABLE test ENGINE=InnoDB'))
+		printf("[001] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+
+	mysqli_autocommit($link, false);
+
+	if (!$res = mysqli_query($link, 'SELECT COUNT(*) AS _num FROM test'))
+		printf("[002] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+
+	if (!$row = mysqli_fetch_assoc($res))
+		printf("[003] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+	mysqli_free_result($res);
+
+	$num = $row['_num'];
+	assert($num > 0);
+
+	if (!$res = mysqli_query($link, 'DELETE FROM test'))
+		printf("[004] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+
+	if (!$res = mysqli_query($link, 'SELECT COUNT(*) AS _num FROM test'))
+		printf("[005] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+
+	if (!$row = mysqli_fetch_assoc($res))
+		printf("[006] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+	mysqli_free_result($res);
+
+	if (0 != $row['_num'])
+		printf("[007] Rows should have been deleted in this transaction\n");
+
+	// DELETE should be rolled back
+	mysqli_change_user($link, $user, $passwd, $db);
+
+	if (!$res = mysqli_query($link, 'SELECT COUNT(*) AS _num FROM test'))
+		printf("[008] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+
+	if (!$row = mysqli_fetch_assoc($res))
+		printf("[009] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+
+	if ($row['_num'] != $num)
+		printf("[010] Expecting %d rows in the table test, found %d rows\n",
+			$num, $row['_num']);
+
+	mysqli_free_result($res);
+	mysqli_close($link);
+	print "done!";
+?>
+--EXPECTF--
+done!
\ No newline at end of file

Added: trunk/tests/ext/mysqli/mysqli_change_user_set_names.phpt
===================================================================
--- trunk/tests/ext/mysqli/mysqli_change_user_set_names.phpt	2007-08-17 11:58:40 UTC (rev
921)
+++ trunk/tests/ext/mysqli/mysqli_change_user_set_names.phpt	2007-08-20 09:17:34 UTC (rev
922)
@@ -0,0 +1,160 @@
+--TEST--
+mysqli_change_user() - SET NAMES
+--SKIPIF--
+<?php
+require_once('skipif.inc');
+require_once('skipifemb.inc');
+require_once('skipifconnectfailure.inc');
+
+if (ini_get('unicode.semantics'))
+	die("skip Test for non-unicode mode only");
+
+if (!$link = mysqli_connect($host, $user, $passwd, $db, $port, $socket))
+	die(sprintf("skip [%d] %s", mysqli_connect_errno(), mysqli_connect_error()));
+
+if (!$res = mysqli_query($link, 'SELECT version() AS server_version'))
+	die(sprintf("skip [%d] %s\n", mysqli_errno($link), mysqli_error($link)));
+
+$tmp = mysqli_fetch_assoc($res);
+mysqli_free_result($res);
+$version = explode('.', $tmp['server_version']);
+if (empty($version))
+	die(sprintf("skip Cannot determine server version, need MySQL Server 4.1+ for the
test!"));
+
+if ($version[0] <= 4 && $version[1] < 1)
+	die(sprintf("ski Need MySQL Server 4.1+ for the test!"));
+?>
+--FILE--
+<?php
+	require_once('connect.inc');
+
+	if (!$link = mysqli_connect($host, $user, $passwd, $db, $port, $socket))
+		printf("[001] [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error());
+
+	if (!$res = mysqli_query($link, 'SHOW CHARACTER SET LIKE "latin%"'))
+		printf("[002] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+
+	$charsets = array();
+	while ($row = mysqli_fetch_assoc($res))
+		$charsets[$row['Charset']] = $row['Default collation'];
+
+	mysqli_free_result($res);
+	if (!mysqli_query($link, 'SET NAMES DEFAULT'))
+		printf("[003] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+
+	if (!$res = mysqli_query($link, 'SELECT
+		@@character_set_client AS charset_client,
+		@@character_set_connection AS charset_connection,
+		@@character_set_results AS charset_results,
+		@@collation_connection AS collation_connection,
+		@@collation_database AS collation_database,
+		@@collation_server AS collation_server'))
+		printf("[004] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+
+	if (!$defaults = mysqli_fetch_assoc($res))
+		printf("[005] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+	mysqli_free_result($res);
+
+	$not_changed = $defaults;
+	foreach ($charsets as $charset => $collation) {
+
+		if (isset($not_changed['charset_client']) &&
+				$charset != $not_changed['charset_client'] &&
+				mysqli_query($link, sprintf('SET @@character_set_client = "%s"', $charset)))
+			unset($not_changed['charset_client']);
+
+		if (isset($not_changed['charset_connection']) &&
+				$charset != $not_changed['charset_connection'] &&
+				mysqli_query($link, sprintf('SET @@character_connection = "%s"', $charset)))
+			unset($not_changed['charset_connection']);
+
+		if (isset($not_changed['charset_results']) &&
+				$charset != $not_changed['charset_results'] &&
+				mysqli_query($link, sprintf('SET @@character_set_results = "%s"', $charset)))
+			unset($not_changed['charset_results']);
+
+		if (isset($not_changed['collation_connection']) &&
+				$collation != $not_changed['collation_connection'] &&
+				mysqli_query($link, sprintf('SET @@collation_connection = "%s"', $collation)))
+			unset($not_changed['collation_connection']);
+
+		if (isset($not_changed['collation_database']) &&
+				$collation != $not_changed['collation_database'] &&
+				mysqli_query($link, sprintf('SET @@collation_database = "%s"', $collation)))
+			unset($not_changed['collation_database']);
+
+		if (isset($not_changed['collation_server']) &&
+				$collation != $not_changed['collation_server'] &&
+				mysqli_query($link, sprintf('SET @@collation_server = "%s"', $collation)))
+			unset($not_changed['collation_server']);
+
+		if (empty($not_changed))
+			break;
+	}
+
+	if (!$res = mysqli_query($link, 'SELECT
+		@@character_set_client AS charset_client,
+		@@character_set_connection AS charset_connection,
+		@@character_set_results AS charset_results,
+		@@collation_connection AS collation_connection,
+		@@collation_database AS collation_database,
+		@@collation_server AS collation_server'))
+		printf("[006] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+
+	if (!$modified = mysqli_fetch_assoc($res))
+		printf("[007] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+	mysqli_free_result($res);
+
+	if ($modified == $defaults)
+		printf("[008] Not all settings have been changed\n");
+
+	// LAST_INSERT_ID should be reset
+	mysqli_change_user($link, $user, $passwd, $db);
+
+	if (!$res = mysqli_query($link, 'SELECT
+		@@character_set_client AS charset_client,
+		@@character_set_connection AS charset_connection,
+		@@character_set_results AS charset_results,
+		@@collation_connection AS collation_connection,
+		@@collation_database AS collation_database,
+		@@collation_server AS collation_server'))
+		printf("[009] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+
+	if (!$new = mysqli_fetch_assoc($res))
+		printf("[010] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+	mysqli_free_result($res);
+
+	if ($new == $modified) {
+		printf("[011] Charsets/collations have not been reset.\n");
+		printf("Got:\n");
+		var_dump($new);
+		printf("Expected:\n");
+		var_dump($defaults);
+	}
+
+	if ($new != $defaults) {
+		printf("[012] Charsets/collations have not been reset to their defaults.\n");
+		printf("Got:\n");
+		var_dump($new);
+		printf("Expected:\n");
+		var_dump($defaults);
+	}
+
+	if (!is_object($charset = mysqli_get_charset($link)))
+		printf("[013] Expecting object/std_class, got %s/%s\n", gettype($charset), $charset);
+
+	if ($charset->charset != $defaults['charset_connection'])
+		printf("[014] Expecting connection charset to be %s got %s\n",
+			$defaults['charset_connection'],
+			$charset->charset);
+
+	if ($charset->collation != $defaults['collation_connection'])
+		printf("[015] Expecting collation to be %s got %s\n",
+			$defaults['collation_connection'],
+			$charset->collation);
+
+	mysqli_close($link);
+	print "done!";
+?>
+--EXPECTF--
+done!
\ No newline at end of file

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