1--TEST-- 2mysqli_change_user() - table locks, GET_LOCK(), temporary tables 3--EXTENSIONS-- 4mysqli 5--SKIPIF-- 6<?php 7require_once 'skipifconnectfailure.inc'; 8?> 9--FILE-- 10<?php 11 require_once 'connect.inc'; 12 require_once 'table.inc'; 13 14 if (!$link2 = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) 15 printf("[001] Cannot create second connection handle, [%d] %s\n", 16 mysqli_connect_errno(), mysqli_connect_error()); 17 18 if (!mysqli_query($link, 'LOCK TABLE test WRITE')) 19 printf("[002] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); 20 21 /* 22 Do not verify that we have aquired a lock, as this would block the test 23 if ($res = mysqli_query($link2, 'SELECT COUNT(*) AS _num FROM test')) { 24 printf("[003] Reading from test should not be possible due to a lock, [%d] %s\n", 25 mysqli_errno($link2), mysqli_error($link2)); 26 mysqli_free_result($res); 27 } 28 */ 29 30 // LOCKS should be removed 31 mysqli_change_user($link, $user, $passwd, $db); 32 33 if (!$res = mysqli_query($link2, 'SELECT COUNT(*) AS _num FROM test')) 34 printf("[003] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); 35 36 if (!$row = mysqli_fetch_assoc($res)) 37 printf("[004] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); 38 39 if ($row['_num'] < 1) 40 printf("[005] There should be some rows in the table test\n"); 41 42 mysqli_free_result($res); 43 mysqli_close($link2); 44 45 if (!mysqli_query($link, 'DROP TABLE test')) 46 printf("[006] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); 47 48 if (!mysqli_query($link, 'CREATE TEMPORARY TABLE test(id INT)')) 49 printf("[007] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); 50 51 if (!mysqli_query($link, 'INSERT INTO test(id) VALUES (1), (2), (3)')) 52 printf("[008] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); 53 54 if (!$res = mysqli_query($link, 'SELECT COUNT(*) AS _num FROM test')) 55 printf("[009] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); 56 57 if (!$row = mysqli_fetch_assoc($res)) 58 printf("[010] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); 59 60 if ($row['_num'] != 3) 61 printf("[011] There should be three rows in the table test\n"); 62 63 mysqli_free_result($res); 64 65 // Temporary tables should be dropped 66 mysqli_change_user($link, $user, $passwd, $db); 67 68 if ($res = mysqli_query($link, 'SELECT COUNT(*) AS _num FROM test')) { 69 printf("[012] There should be no table test any more, [%d] %s\n", 70 mysqli_errno($link), mysqli_error($link)); 71 mysqli_free_result($res); 72 } 73 74 if (!$res = mysqli_query($link, 'SELECT GET_LOCK("phptest", 2) AS _ok')) 75 printf("[013] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); 76 77 if (!$row = mysqli_fetch_assoc($res)) 78 printf("[014] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); 79 80 if ($row['_ok'] != 1) 81 printf("[015] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); 82 83 mysqli_free_result($res); 84 85 // GET_LOCK("phptest") should be released 86 mysqli_change_user($link, $user, $passwd, $db); 87 88 if (!$res = mysqli_query($link, 'SELECT IS_FREE_LOCK("phptest") AS _ok')) 89 printf("[016] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); 90 91 if (!$row = mysqli_fetch_assoc($res)) 92 printf("[017] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); 93 94 if ($row['_ok'] != 1) 95 printf("[018] Lock 'phptest' should have been released, [%d] %s\n", 96 mysqli_errno($link), mysqli_error($link)); 97 98 mysqli_free_result($res); 99 mysqli_close($link); 100 print "done!"; 101?> 102--CLEAN-- 103<?php 104 require_once 'clean_table.inc'; 105?> 106--EXPECT-- 107done! 108