Annotation of embedaddon/php/ext/mysqli/tests/mysqli_change_user_locks_temporary.phpt, revision 1.1.1.1

1.1       misho       1: --TEST--
                      2: mysqli_change_user() - table locks, GET_LOCK(), temporary tables
                      3: --SKIPIF--
                      4: <?php
                      5: require_once('skipif.inc');
                      6: require_once('skipifemb.inc');
                      7: require_once('skipifconnectfailure.inc');
                      8: die("skip - is the server still buggy?");
                      9: ?>
                     10: --FILE--
                     11: <?php
                     12:        require_once('connect.inc');
                     13:        require_once('table.inc');
                     14: 
                     15:        if (!$link2 = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
                     16:                printf("[001] Cannot create second connection handle, [%d] %s\n",
                     17:                        mysqli_connect_errno(), mysqli_connect_error());
                     18: 
                     19:        if (!mysqli_query($link, 'LOCK TABLE test WRITE'))
                     20:                printf("[002] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
                     21: 
                     22:        /*
                     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: --EXPECTF--
                    107: done!

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>