--TEST-- mysqli_get_client_stats() --SKIPIF-- --INI-- mysqlnd.collect_statistics=1 mysqlnd.collect_memory_statistics=1 --FILE-- $v) if ($info[$k] != $expected[$k]) printf("$k - $v != %s\n", $expected[$k]); */ print "... done with fetch statistics\n"; if (!is_array($info = mysqli_get_client_stats()) || empty($info)) printf("[%03d] Expecting array/any_non_empty, got %s/%s\n", ++$test_counter, gettype($info), $info); // // result_set_queries statistics // if (!is_array($info = mysqli_get_client_stats()) || empty($info)) printf("[%03d] Expecting array/any_non_empty, got %s/%s\n", ++$test_counter, gettype($info), $info); if (!$res = mysqli_query($link, "SELECT id, label FROM test")) printf("[%03d] SELECT failed, [%d] %s\n", ++$test_counter, mysqli_errno($link), mysqli_error($link)); $rows = 0; while ($row = mysqli_fetch_assoc($res)) $rows++; if (0 == $rows) printf("[%03d] Expecting at least one result, [%d] %s\n", ++$test_counter, mysqli_errno($link), mysqli_error($link)); mysqli_free_result($res); if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info)) printf("[%03d] Expecting array/any_non_empty, got %s/%s\n", ++$test_counter, gettype($new_info), $new_info); mysqli_get_client_stats_assert_eq('result_set_queries', $new_info, (string)($info['result_set_queries'] + 1), $test_counter); $info = $new_info; // // non_result_set_queries - DDL // // CREATE TABLE, DROP TABLE if (!mysqli_query($link, "DROP TABLE IF EXISTS non_result_set_queries_test")) printf("[%03d] DROP TABLE failed, [%d] %s\n", ++$test_counter, mysqli_errno($link), mysqli_error($link)); if (!mysqli_query($link, "CREATE TABLE non_result_set_queries_test(id INT) ENGINE = " . $engine)) { printf("[%03d] CREATE TABLE failed, [%d] %s\n", ++$test_counter, mysqli_errno($link), mysqli_error($link)); } else { if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info)) printf("[%03d] Expecting array/any_non_empty, got %s/%s\n", ++$test_counter, gettype($new_info), $new_info); mysqli_get_client_stats_assert_eq('non_result_set_queries', $new_info, (string)($info['non_result_set_queries'] + 2), $test_counter, 'CREATE/DROP TABLE'); } $info = $new_info; // ALERT TABLE if (!mysqli_query($link, "ALTER TABLE non_result_set_queries_test ADD label CHAR(1)")) { printf("[%03d] ALTER TABLE failed, [%d] %s\n", ++$test_counter, mysqli_errno($link), mysqli_error($link)); } else { if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info)) printf("[%03d] Expecting array/any_non_empty, got %s/%s\n", ++$test_counter, gettype($new_info), $new_info); mysqli_get_client_stats_assert_eq('non_result_set_queries', $new_info, (string)($info['non_result_set_queries'] + 1), $test_counter, 'ALTER TABLE'); } $info = $new_info; // CREATE INDEX, DROP INDEX if (!mysqli_query($link, "CREATE INDEX idx_1 ON non_result_set_queries_test(id)")) { printf("[%03d] CREATE INDEX failed, [%d] %s\n", ++$test_counter, mysqli_errno($link), mysqli_error($link)); } else { if (!mysqli_query($link, "DROP INDEX idx_1 ON non_result_set_queries_test")) printf("[%03d] DROP INDEX failed, [%d] %s\n", ++$test_counter, mysqli_errno($link), mysqli_error($link)); if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info)) printf("[%03d] Expecting array/any_non_empty, got %s/%s\n", ++$test_counter, gettype($new_info), $new_info); mysqli_get_client_stats_assert_eq('non_result_set_queries', $new_info, (string)($info['non_result_set_queries'] + 2), $test_counter, 'DROP INDEX'); } $info = $new_info; // RENAME TABLE if (!mysqli_query($link, "DROP TABLE IF EXISTS client_stats_test")) printf("[%03d] Cleanup, DROP TABLE client_stats_test failed, [%d] %s\n", ++$test_counter, mysqli_errno($link), mysqli_error($link)); if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info)) printf("[%03d] Expecting array/any_non_empty, got %s/%s\n", ++$test_counter, gettype($new_info), $new_info); $info = $new_info; if (!mysqli_query($link, "RENAME TABLE non_result_set_queries_test TO client_stats_test")) { printf("[%03d] RENAME TABLE failed, [%d] %s\n", ++$test_counter, mysqli_errno($link), mysqli_error($link)); } else { if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info)) printf("[%03d] Expecting array/any_non_empty, got %s/%s\n", ++$test_counter, gettype($new_info), $new_info); mysqli_get_client_stats_assert_eq('non_result_set_queries', $new_info, (string)($info['non_result_set_queries'] + 1), $test_counter, 'RENAME TABLE'); } $info = $new_info; if (!mysqli_query($link, "DROP TABLE IF EXISTS non_result_set_queries_test")) printf("[%03d] Cleanup, DROP TABLE failed, [%d] %s\n", ++$test_counter, mysqli_errno($link), mysqli_error($link)); if (!mysqli_query($link, "DROP TABLE IF EXISTS client_stats_test")) printf("[%03d] Cleanup, DROP TABLE failed, [%d] %s\n", ++$test_counter, mysqli_errno($link), mysqli_error($link)); // Let's see if we have privileges for CREATE DATABASE mysqli_query($link, "DROP DATABASE IF EXISTS mysqli_get_client_stats"); if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info)) printf("[%03d] Expecting array/any_non_empty, got %s/%s\n", ++$test_counter, gettype($new_info), $new_info); $info = $new_info; // CREATE, ALTER, RENAME, DROP DATABASE if (mysqli_query($link, "CREATE DATABASE mysqli_get_client_stats")) { if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info)) printf("[%03d] Expecting array/any_non_empty, got %s/%s\n", ++$test_counter, gettype($new_info), $new_info); mysqli_get_client_stats_assert_eq('non_result_set_queries', $new_info, (string)($info['non_result_set_queries'] + 1), $test_counter, 'CREATE DATABASE'); $info = $new_info; if (!mysqli_query($link, "ALTER DATABASE DEFAULT CHARACTER SET latin1")) printf("[%03d] ALTER DATABASE failed, [%d] %s\n", ++$test_counter, mysqli_errno($link), mysqli_error($link)); if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info)) printf("[%03d] Expecting array/any_non_empty, got %s/%s\n", ++$test_counter, gettype($new_info), $new_info); mysqli_get_client_stats_assert_eq('non_result_set_queries', $new_info, (string)($info['non_result_set_queries'] + 1), $test_counter, 'CREATE DATABASE'); $info = $new_info; if (mysqli_get_server_version($link) > 51700) { if (!mysqli_query($link, "RENAME DATABASE mysqli_get_client_stats TO mysqli_get_client_stats_")) printf("[%03d] RENAME DATABASE failed, [%d] %s\n", ++$test_counter, mysqli_errno($link), mysqli_error($link)); if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info)) printf("[%03d] Expecting array/any_non_empty, got %s/%s\n", ++$test_counter, gettype($new_info), $new_info); mysqli_get_client_stats_assert_eq('non_result_set_queries', $new_info, (string)($info['non_result_set_queries'] + 1), $test_counter, 'CREATE DATABASE'); $info = $new_info; } else { if (!mysqli_query($link, "CREATE DATABASE mysqli_get_client_stats_")) printf("[%03d] CREATE DATABASE failed, [%d] %s\n", ++$test_counter, mysqli_errno($link), mysqli_error($link)); if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info)) printf("[%03d] Expecting array/any_non_empty, got %s/%s\n", ++$test_counter, gettype($new_info), $new_info); $info = $new_info; } if (!mysqli_query($link, "DROP DATABASE mysqli_get_client_stats_")) printf("[%03d] DROP DATABASE failed, [%d] %s\n", ++$test_counter, mysqli_errno($link), mysqli_error($link)); if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info)) printf("[%03d] Expecting array/any_non_empty, got %s/%s\n", ++$test_counter, gettype($new_info), $new_info); mysqli_get_client_stats_assert_eq('non_result_set_queries', $new_info, (string)($info['non_result_set_queries'] + 1), $test_counter, 'DROP DATABASE'); $info = $new_info; } // CREATE SERVER, ALTER SERVER, DROP SERVER // We don't really try to use federated, we just want to see if the syntax works mysqli_query($link, "DROP SERVER IF EXISTS myself"); if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info)) printf("[%03d] Expecting array/any_non_empty, got %s/%s\n", ++$test_counter, gettype($new_info), $new_info); $info = $new_info; $sql = sprintf("CREATE SERVER myself FOREIGN DATA WRAPPER mysql OPTIONS (user '%s', password '%s', database '%s')", $user, $passwd, $db); if (mysqli_query($link, $sql)) { // server knows about it if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info)) printf("[%03d] Expecting array/any_non_empty, got %s/%s\n", ++$test_counter, gettype($new_info), $new_info); mysqli_get_client_stats_assert_eq('non_result_set_queries', $new_info, (string)($info['non_result_set_queries'] + 1), $test_counter, 'CREATE SERVER'); $info = $new_info; if (!mysqli_query($link, sprintf("ALTER SERVER myself OPTIONS(user '%s_')", $user))) printf("[%03d] ALTER SERVER failed, [%d] %s\n", ++$test_counter, mysqli_errno($link), mysqli_error($link)); if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info)) printf("[%03d] Expecting array/any_non_empty, got %s/%s\n", ++$test_counter, gettype($new_info), $new_info); mysqli_get_client_stats_assert_eq('non_result_set_queries', $new_info, (string)($info['non_result_set_queries'] + 1), $test_counter, 'ALTER SERVER'); $info = $new_info; if (!mysqli_query($link, "DROP SERVER myself")) printf("[%03d] DROP SERVER failed, [%d] %s\n", ++$test_counter, mysqli_errno($link), mysqli_error($link)); if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info)) printf("[%03d] Expecting array/any_non_empty, got %s/%s\n", ++$test_counter, gettype($new_info), $new_info); mysqli_get_client_stats_assert_eq('non_result_set_queries', $new_info, (string)($info['non_result_set_queries'] + 1), $test_counter, 'DROP SERVER'); $info = $new_info; } /* We don't test the NDB ones. 13.1. Data Definition Statements 13.1.3. ALTER LOGFILE GROUP Syntax 13.1.4. ALTER TABLESPACE Syntax 13.1.9. CREATE LOGFILE GROUP Syntax 13.1.10. CREATE TABLESPACE Syntax 13.1.15. DROP LOGFILE GROUP Syntax 13.1.16. DROP TABLESPACE Syntax */ // // DML // if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info)) printf("[%03d] Expecting array/any_non_empty, got %s/%s\n", ++$test_counter, gettype($new_info), $new_info); $info = $new_info; if (!mysqli_query($link, "INSERT INTO test(id) VALUES (100)")) printf("[%03d] INSERT failed, [%d] %s\n", ++$test_counter, mysqli_errno($link), mysqli_error($link)); if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info)) printf("[%03d] Expecting array/any_non_empty, got %s/%s\n", ++$test_counter, gettype($new_info), $new_info); mysqli_get_client_stats_assert_eq('non_result_set_queries', $new_info, (string)($info['non_result_set_queries'] + 1), $test_counter, 'INSERT'); $info = $new_info; if (!mysqli_query($link, "UPDATE test SET label ='z' WHERE id = 100")) printf("[%03d] UPDATE failed, [%d] %s\n", ++$test_counter, mysqli_errno($link), mysqli_error($link)); if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info)) printf("[%03d] Expecting array/any_non_empty, got %s/%s\n", ++$test_counter, gettype($new_info), $new_info); mysqli_get_client_stats_assert_eq('non_result_set_queries', $new_info, (string)($info['non_result_set_queries'] + 1), $test_counter, 'UPDATE'); $info = $new_info; if (!mysqli_query($link, "REPLACE INTO test(id, label) VALUES (100, 'b')")) printf("[%03d] INSERT failed, [%d] %s\n", ++$test_counter, mysqli_errno($link), mysqli_error($link)); if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info)) printf("[%03d] Expecting array/any_non_empty, got %s/%s\n", ++$test_counter, gettype($new_info), $new_info); mysqli_get_client_stats_assert_eq('non_result_set_queries', $new_info, (string)($info['non_result_set_queries'] + 1), $test_counter, 'REPLACE'); $info = $new_info; // NOTE: this will NOT update dbl_ddls counter if (!$res = mysqli_query($link, "SELECT id, label FROM test WHERE id = 100")) printf("[%03d] SELECT@dml failed, [%d] %s\n", ++$test_counter, mysqli_errno($link), mysqli_error($link)); mysqli_free_result($res); if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info)) printf("[%03d] Expecting array/any_non_empty, got %s/%s\n", ++$test_counter, gettype($new_info), $new_info); mysqli_get_client_stats_assert_eq('non_result_set_queries', $new_info, $info, $test_counter, 'SELECT@dml'); $info = $new_info; if (!mysqli_query($link, "DELETE FROM test WHERE id = 100")) printf("[%03d] DELETE failed, [%d] %s\n", ++$test_counter, mysqli_errno($link), mysqli_error($link)); if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info)) printf("[%03d] Expecting array/any_non_empty, got %s/%s\n", ++$test_counter, gettype($new_info), $new_info); mysqli_get_client_stats_assert_eq('non_result_set_queries', $new_info, (string)($info['non_result_set_queries'] + 1), $test_counter, 'DELETE'); $info = $new_info; if (!$res = mysqli_query($link, "TRUNCATE TABLE test")) printf("[%03d] TRUNCATE failed, [%d] %s\n", ++$test_counter, mysqli_errno($link), mysqli_error($link)); if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info)) printf("[%03d] Expecting array/any_non_empty, got %s/%s\n", ++$test_counter, gettype($new_info), $new_info); mysqli_get_client_stats_assert_eq('non_result_set_queries', $new_info, (string)($info['non_result_set_queries'] + 1), $test_counter, 'TRUNCATE'); $info = $new_info; $file = tempnam(sys_get_temp_dir(), 'mysqli_test'); if ($fp = fopen($file, 'w')) { @fwrite($fp, '1;"a"'); fclose($fp); chmod($file, 0644); $sql = sprintf('LOAD DATA LOCAL INFILE "%s" INTO TABLE test', mysqli_real_escape_string($link, $file)); if (mysqli_query($link, $sql)) { if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info)) printf("[%03d] Expecting array/any_non_empty, got %s/%s\n", ++$test_counter, gettype($new_info), $new_info); mysqli_get_client_stats_assert_eq('non_result_set_queries', $new_info, (string)($info['non_result_set_queries'] + 1), $test_counter, 'LOAD DATA LOCAL'); $info = $new_info; } unlink($file); } /* We skip those: 13.2. Data Manipulation Statements 13.2.2. DO Syntax 13.2.3. HANDLER Syntax 13.2.5. LOAD DATA INFILE Syntax */ mysqli_query($link, "DELETE FROM test"); if (!mysqli_query($link, "INSERT INTO test(id, label) VALUES (1, 'a'), (2, 'b')")) printf("[%03d] Cannot insert new records, [%d] %s\n", ++$test_counter, mysqli_errno($link), mysqli_error($link)); if (!$res = mysqli_real_query($link, "SELECT id, label FROM test ORDER BY id")) printf("[%03d] Cannot SELECT with mysqli_real_query(), [%d] %s\n", ++$test_counter, mysqli_errno($link), mysqli_error($link)); if (!is_object($res = mysqli_use_result($link))) printf("[%03d] mysqli_use_result() failed, [%d] %s\n", ++$test_counter, mysqli_errno($link), mysqli_error($link)); while ($row = mysqli_fetch_assoc($res)) ; mysqli_free_result($res); if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info)) printf("[%03d] Expecting array/any_non_empty, got %s/%s\n", ++$test_counter, gettype($new_info), $new_info); mysqli_get_client_stats_assert_eq('unbuffered_sets', $new_info, (string)($info['unbuffered_sets'] + 1), $test_counter, 'mysqli_use_result()'); $info = $new_info; if (!$res = mysqli_real_query($link, "SELECT id, label FROM test ORDER BY id")) printf("[%03d] Cannot SELECT with mysqli_real_query() II, [%d] %s\n", ++$test_counter, mysqli_errno($link), mysqli_error($link)); if (!is_object($res = mysqli_store_result($link))) printf("[%03d] mysqli_use_result() failed, [%d] %s\n", ++$test_counter, mysqli_errno($link), mysqli_error($link)); while ($row = mysqli_fetch_assoc($res)) ; mysqli_free_result($res); if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info)) printf("[%03d] Expecting array/any_non_empty, got %s/%s\n", ++$test_counter, gettype($new_info), $new_info); mysqli_get_client_stats_assert_eq('buffered_sets', $new_info, (string)($info['buffered_sets'] + 1), $test_counter, 'mysqli_use_result()'); $info = $new_info; /* no_index_used bad_index_used flushed_normal_sets flushed_ps_sets explicit_close implicit_close disconnect_close in_middle_of_command_close explicit_free_result implicit_free_result explicit_stmt_close implicit_stmt_close */ print "done!"; ?> --EXPECTF-- array(61) { ["bytes_sent"]=> string(1) "0" ["bytes_received"]=> string(1) "0" ["packets_sent"]=> string(1) "0" ["packets_received"]=> string(1) "0" ["protocol_overhead_in"]=> string(1) "0" ["protocol_overhead_out"]=> string(1) "0" ["result_set_queries"]=> string(1) "0" ["non_result_set_queries"]=> string(1) "0" ["no_index_used"]=> string(1) "0" ["bad_index_used"]=> string(1) "0" ["buffered_sets"]=> string(1) "0" ["unbuffered_sets"]=> string(1) "0" ["ps_buffered_sets"]=> string(1) "0" ["ps_unbuffered_sets"]=> string(1) "0" ["flushed_normal_sets"]=> string(1) "0" ["flushed_ps_sets"]=> string(1) "0" ["ps_prepared_never_executed"]=> string(1) "0" ["ps_prepared_once_executed"]=> string(1) "0" ["rows_fetched_from_server_normal"]=> string(1) "0" ["rows_fetched_from_server_ps"]=> string(1) "0" ["rows_buffered_from_client_normal"]=> string(1) "0" ["rows_buffered_from_client_ps"]=> string(1) "0" ["rows_fetched_from_client_normal_buffered"]=> string(1) "0" ["rows_fetched_from_client_normal_unbuffered"]=> string(1) "0" ["rows_fetched_from_client_ps_buffered"]=> string(1) "0" ["rows_fetched_from_client_ps_unbuffered"]=> string(1) "0" ["rows_fetched_from_client_ps_cursor"]=> string(1) "0" ["rows_skipped_normal"]=> string(1) "0" ["rows_skipped_ps"]=> string(1) "0" ["copy_on_write_saved"]=> string(1) "0" ["copy_on_write_performed"]=> string(1) "0" ["command_buffer_too_small"]=> string(1) "0" ["connect_success"]=> string(1) "0" ["connect_failure"]=> string(1) "0" ["connection_reused"]=> string(1) "0" ["reconnect"]=> string(1) "0" ["pconnect_success"]=> string(1) "0" ["active_connections"]=> string(1) "0" ["active_persistent_connections"]=> string(1) "0" ["explicit_close"]=> string(1) "0" ["implicit_close"]=> string(1) "0" ["disconnect_close"]=> string(1) "0" ["in_middle_of_command_close"]=> string(1) "0" ["explicit_free_result"]=> string(1) "0" ["implicit_free_result"]=> string(1) "0" ["explicit_stmt_close"]=> string(1) "0" ["implicit_stmt_close"]=> string(1) "0" ["mem_emalloc_count"]=> string(1) "0" ["mem_emalloc_ammount"]=> string(1) "0" ["mem_ecalloc_count"]=> string(1) "0" ["mem_ecalloc_ammount"]=> string(1) "0" ["mem_erealloc_count"]=> string(1) "0" ["mem_erealloc_ammount"]=> string(1) "0" ["mem_efree_count"]=> string(1) "0" ["mem_malloc_count"]=> string(1) "0" ["mem_malloc_ammount"]=> string(1) "0" ["mem_calloc_count"]=> string(1) "0" ["mem_calloc_ammount"]=> string(1) "0" ["mem_realloc_calloc"]=> string(1) "0" ["mem_realloc_ammount"]=> string(1) "0" ["mem_free_count"]=> string(1) "0" } Testing buffered normal... Testing buffered normal... - SELECT id, label FROM test Testing unbuffered normal... Testing unbuffered normal... - SELECT id, label FROM test, not all fetched Testing if implicit fetching and cleaning happens... Testing buffered Prepared Statements... Testing buffered Prepared Statements... - fetching all Testing buffered Prepared Statements... - fetching all but one Testing unbuffered Prepared Statements... - fetching all Testing unbuffered Prepared Statements... - fetching all but one ... done with fetch statistics done! --UEXPECTF-- array(61) { [u"bytes_sent"]=> unicode(1) "0" [u"bytes_received"]=> unicode(1) "0" [u"packets_sent"]=> unicode(1) "0" [u"packets_received"]=> unicode(1) "0" [u"protocol_overhead_in"]=> unicode(1) "0" [u"protocol_overhead_out"]=> unicode(1) "0" [u"result_set_queries"]=> unicode(1) "0" [u"non_result_set_queries"]=> unicode(1) "0" [u"no_index_used"]=> unicode(1) "0" [u"bad_index_used"]=> unicode(1) "0" [u"buffered_sets"]=> unicode(1) "0" [u"unbuffered_sets"]=> unicode(1) "0" [u"ps_buffered_sets"]=> unicode(1) "0" [u"ps_unbuffered_sets"]=> unicode(1) "0" [u"flushed_normal_sets"]=> unicode(1) "0" [u"flushed_ps_sets"]=> unicode(1) "0" [u"ps_prepared_never_executed"]=> unicode(1) "0" [u"ps_prepared_once_executed"]=> unicode(1) "0" [u"rows_fetched_from_server_normal"]=> unicode(1) "0" [u"rows_fetched_from_server_ps"]=> unicode(1) "0" [u"rows_buffered_from_client_normal"]=> unicode(1) "0" [u"rows_buffered_from_client_ps"]=> unicode(1) "0" [u"rows_fetched_from_client_normal_buffered"]=> unicode(1) "0" [u"rows_fetched_from_client_normal_unbuffered"]=> unicode(1) "0" [u"rows_fetched_from_client_ps_buffered"]=> unicode(1) "0" [u"rows_fetched_from_client_ps_unbuffered"]=> unicode(1) "0" [u"rows_fetched_from_client_ps_cursor"]=> unicode(1) "0" [u"rows_skipped_normal"]=> unicode(1) "0" [u"rows_skipped_ps"]=> unicode(1) "0" [u"copy_on_write_saved"]=> unicode(1) "0" [u"copy_on_write_performed"]=> unicode(1) "0" [u"command_buffer_too_small"]=> unicode(1) "0" [u"connect_success"]=> unicode(1) "0" [u"connect_failure"]=> unicode(1) "0" [u"connection_reused"]=> unicode(1) "0" [u"reconnect"]=> unicode(1) "0" [u"pconnect_success"]=> unicode(1) "0" [u"active_connections"]=> unicode(1) "0" [u"active_persistent_connections"]=> unicode(1) "0" [u"explicit_close"]=> unicode(1) "0" [u"implicit_close"]=> unicode(1) "0" [u"disconnect_close"]=> unicode(1) "0" [u"in_middle_of_command_close"]=> unicode(1) "0" [u"explicit_free_result"]=> unicode(1) "0" [u"implicit_free_result"]=> unicode(1) "0" [u"explicit_stmt_close"]=> unicode(1) "0" [u"implicit_stmt_close"]=> unicode(1) "0" [u"mem_emalloc_count"]=> unicode(1) "0" [u"mem_emalloc_ammount"]=> unicode(1) "0" [u"mem_ecalloc_count"]=> unicode(1) "0" [u"mem_ecalloc_ammount"]=> unicode(1) "0" [u"mem_erealloc_count"]=> unicode(1) "0" [u"mem_erealloc_ammount"]=> unicode(1) "0" [u"mem_efree_count"]=> unicode(1) "0" [u"mem_malloc_count"]=> unicode(1) "0" [u"mem_malloc_ammount"]=> unicode(1) "0" [u"mem_calloc_count"]=> unicode(1) "0" [u"mem_calloc_ammount"]=> unicode(1) "0" [u"mem_realloc_calloc"]=> unicode(1) "0" [u"mem_realloc_ammount"]=> unicode(1) "0" [u"mem_free_count"]=> unicode(1) "0" } Testing buffered normal... Testing buffered normal... - SELECT id, label FROM test Testing unbuffered normal... Testing unbuffered normal... - SELECT id, label FROM test, not all fetched Testing if implicit fetching and cleaning happens... Testing buffered Prepared Statements... Testing buffered Prepared Statements... - fetching all Testing buffered Prepared Statements... - fetching all but one Testing unbuffered Prepared Statements... - fetching all Testing unbuffered Prepared Statements... - fetching all but one ... done with fetch statistics done!