mysqli_change_user_rollback.phpt 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. --TEST--
  2. mysqli_change_user() - ROLLBACK
  3. --SKIPIF--
  4. <?php
  5. require_once('skipif.inc');
  6. require_once('skipifemb.inc');
  7. require_once('skipifconnectfailure.inc');
  8. require_once('connect.inc');
  9. if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
  10. die(sprintf("skip Cannot connect, [%d] %s", mysqli_connect_errno(), mysqli_connect_error()));
  11. if (!have_innodb($link))
  12. die(sprintf("skip Needs InnoDB support, [%d] %s", $link->errno, $link->error));
  13. ?>
  14. --FILE--
  15. <?php
  16. require_once('connect.inc');
  17. require_once('table.inc');
  18. if (!mysqli_query($link, 'ALTER TABLE test ENGINE=InnoDB'))
  19. printf("[001] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
  20. mysqli_autocommit($link, false);
  21. if (!$res = mysqli_query($link, 'SELECT COUNT(*) AS _num FROM test'))
  22. printf("[002] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
  23. if (!$row = mysqli_fetch_assoc($res))
  24. printf("[003] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
  25. mysqli_free_result($res);
  26. $num = $row['_num'];
  27. assert($num > 0);
  28. if (!$res = mysqli_query($link, 'DELETE FROM test'))
  29. printf("[004] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
  30. if (!$res = mysqli_query($link, 'SELECT COUNT(*) AS _num FROM test'))
  31. printf("[005] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
  32. if (!$row = mysqli_fetch_assoc($res))
  33. printf("[006] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
  34. mysqli_free_result($res);
  35. if (0 != $row['_num'])
  36. printf("[007] Rows should have been deleted in this transaction\n");
  37. // DELETE should be rolled back
  38. mysqli_change_user($link, $user, $passwd, $db);
  39. if (!$res = mysqli_query($link, 'SELECT COUNT(*) AS _num FROM test'))
  40. printf("[008] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
  41. if (!$row = mysqli_fetch_assoc($res))
  42. printf("[009] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
  43. if ($row['_num'] != $num)
  44. printf("[010] Expecting %d rows in the table test, found %d rows\n",
  45. $num, $row['_num']);
  46. mysqli_free_result($res);
  47. mysqli_close($link);
  48. print "done!";
  49. ?>
  50. --CLEAN--
  51. <?php
  52. require_once("clean_table.inc");
  53. ?>
  54. --EXPECT--
  55. done!