Annotation of embedaddon/php/ext/mysqli/tests/mysqli_get_client_stats.phpt, revision 1.1
1.1 ! misho 1: --TEST--
! 2: mysqli_get_client_stats()
! 3: --SKIPIF--
! 4: <?PHP
! 5: require_once('skipif.inc');
! 6: require_once('skipifemb.inc');
! 7: require_once('skipifconnectfailure.inc');
! 8: if (!function_exists('mysqli_get_client_stats')) {
! 9: die("skip only available with mysqlnd");
! 10: }
! 11: ?>
! 12: --INI--
! 13: mysqlnd.collect_statistics=1
! 14: mysqlnd.collect_memory_statistics=1
! 15: --FILE--
! 16: <?php
! 17: /*
! 18: TODO
! 19: no_index_used - difficult to simulate because server/engine dependent
! 20: bad_index_used - difficult to simulate because server/engine dependent
! 21: flushed_normal_sets
! 22: flushed_ps_sets
! 23: explicit_close
! 24: implicit_close
! 25: disconnect_close
! 26: in_middle_of_command_close
! 27: explicit_free_result
! 28: implicit_free_result
! 29: explicit_stmt_close
! 30: implicit_stmt_close
! 31: */
! 32:
! 33: function mysqli_get_client_stats_assert_eq($field, $current, $expected, &$test_counter, $desc = "") {
! 34:
! 35: $test_counter++;
! 36: if (is_array($current) && is_array($expected)) {
! 37: if ($current[$field] !== $expected[$field]) {
! 38: printf("[%03d] %s Expecting %s = %s/%s, got %s/%s\n",
! 39: $test_counter, $desc,
! 40: $field, $expected[$field], gettype($expected[$field]),
! 41: $current[$field], gettype($current[$field]));
! 42: }
! 43: } else if (is_array($current)) {
! 44: if ($current[$field] !== $expected) {
! 45: printf("[%03d] %s Expecting %s = %s/%s, got %s/%s\n",
! 46: $test_counter, $desc,
! 47: $field, $expected, gettype($expected),
! 48: $current[$field], gettype($current[$field]));
! 49: }
! 50: } else {
! 51: if ($current !== $expected) {
! 52: printf("[%03d] %s Expecting %s = %s/%s, got %s/%s\n",
! 53: $test_counter, $desc,
! 54: $field, $expected, gettype($expected),
! 55: $current, gettype($current));
! 56: }
! 57: }
! 58:
! 59: }
! 60:
! 61: function mysqli_get_client_stats_assert_gt($field, $current, $expected, &$test_counter, $desc = "") {
! 62:
! 63: $test_counter++;
! 64: if (is_array($current) && is_array($expected)) {
! 65: if ($current[$field] <= $expected[$field]) {
! 66: printf("[%03d] %s Expecting %s > %s/%s, got %s/%s\n",
! 67: $test_counter, $desc,
! 68: $field, $expected[$field], gettype($expected[$field]),
! 69: $current[$field], gettype($current[$field]));
! 70: }
! 71: } else {
! 72: if ($current <= $expected) {
! 73: printf("[%03d] %s Expecting %s > %s/%s, got %s/%s\n",
! 74: $test_counter, $desc, $field,
! 75: $expected, gettype($expected),
! 76: $current, gettype($current));
! 77: }
! 78: }
! 79:
! 80: }
! 81:
! 82:
! 83: $tmp = $link = null;
! 84: if (!is_null($tmp = @mysqli_get_client_stats($link)))
! 85: printf("[001] Expecting NULL, got %s/%s\n", gettype($tmp), $tmp);
! 86:
! 87: require_once("connect.inc");
! 88:
! 89: if (!is_array($info = mysqli_get_client_stats()) || empty($info))
! 90: printf("[002] Expecting array/any_non_empty, got %s/%s\n", gettype($info), $info);
! 91:
! 92: var_dump($info);
! 93:
! 94: if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) {
! 95: printf("[003] Cannot connect to the server using host=%s, user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n",
! 96: $host, $user, $db, $port, $socket);
! 97: exit(1);
! 98: }
! 99:
! 100: if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info))
! 101: printf("[004] Expecting array/any_non_empty, got %s/%s\n", gettype($new_info), $new_info);
! 102:
! 103: if (count($info) != count($new_info)) {
! 104: printf("[005] Expecting the same number of entries in the arrays\n");
! 105: var_dump($info);
! 106: var_dump($new_info);
! 107: }
! 108:
! 109: $test_counter = 6;
! 110:
! 111: mysqli_get_client_stats_assert_gt('bytes_sent', $new_info, $info, $test_counter);
! 112: mysqli_get_client_stats_assert_gt('bytes_received', $new_info, $info, $test_counter);
! 113: mysqli_get_client_stats_assert_gt('packets_sent', $new_info, $info, $test_counter);
! 114: mysqli_get_client_stats_assert_gt('packets_received', $new_info, $info, $test_counter);
! 115: mysqli_get_client_stats_assert_gt('protocol_overhead_in', $new_info, $info, $test_counter);
! 116: mysqli_get_client_stats_assert_gt('protocol_overhead_out', $new_info, $info, $test_counter);
! 117:
! 118: // we assume the above as tested and in the following we check only those
! 119: mysqli_get_client_stats_assert_eq('result_set_queries', $new_info, $info, $test_counter);
! 120:
! 121: /* we need to skip this test in unicode - we send set names utf8 during mysql_connect */
! 122: if (!(version_compare(PHP_VERSION, '5.9.9', '>') == 1))
! 123: mysqli_get_client_stats_assert_eq('non_result_set_queries', $new_info, $info, $test_counter);
! 124: mysqli_get_client_stats_assert_eq('buffered_sets', $new_info, $info, $test_counter);
! 125: mysqli_get_client_stats_assert_eq('unbuffered_sets', $new_info, $info, $test_counter);
! 126: mysqli_get_client_stats_assert_eq('ps_buffered_sets', $new_info, $info, $test_counter);
! 127: mysqli_get_client_stats_assert_eq('ps_unbuffered_sets', $new_info, $info, $test_counter);
! 128:
! 129: mysqli_get_client_stats_assert_eq('rows_skipped_ps', $new_info, $info, $test_counter);
! 130: mysqli_get_client_stats_assert_eq('copy_on_write_saved', $new_info, $info, $test_counter);
! 131: mysqli_get_client_stats_assert_eq('copy_on_write_performed', $new_info, $info, $test_counter);
! 132: mysqli_get_client_stats_assert_eq('command_buffer_too_small', $new_info, $info, $test_counter);
! 133: // This is not a mistake that I use %unicode|string%(1) "1" here! Andrey did not go for int to avoid any
! 134: // issues for very large numbers and 32 vs. 64bit systems
! 135: mysqli_get_client_stats_assert_eq('connect_success', $new_info, "1", $test_counter);
! 136: mysqli_get_client_stats_assert_eq('connect_failure', $new_info, $info, $test_counter);
! 137: mysqli_get_client_stats_assert_eq('connection_reused', $new_info, $info, $test_counter);
! 138:
! 139: // No data fetched so far
! 140: mysqli_get_client_stats_assert_eq('bytes_received_real_data_normal', $new_info, "0", $test_counter);
! 141: mysqli_get_client_stats_assert_eq('bytes_received_real_data_ps', $new_info, "0", $test_counter);
! 142:
! 143: require('table.inc');
! 144: if (!is_array($info = mysqli_get_client_stats()) || empty($info))
! 145: printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
! 146: ++$test_counter, gettype($info), $info);
! 147:
! 148: // fetch stats
! 149: $expected = $info;
! 150:
! 151: // buffered normal
! 152: print "Testing buffered normal...\n";
! 153: if (!$res = mysqli_query($link, 'SELECT COUNT(*) AS _num FROM test', MYSQLI_STORE_RESULT))
! 154: printf("[%03d] SELECT COUNT() FROM test failed, [%d] %s\n",
! 155: ++$test_counter, mysqli_errno($link), mysqli_error($link));
! 156:
! 157: $expected['rows_fetched_from_server_normal'] = (string)($expected['rows_fetched_from_server_normal'] + 1);
! 158: $expected['buffered_sets'] = (string)($expected['buffered_sets'] + 1);
! 159: $expected['result_set_queries'] = (string)($expected['result_set_queries'] + 1);
! 160: $expected['rows_buffered_from_client_normal'] = (string)($expected['rows_buffered_from_client_normal'] + 1);
! 161:
! 162: if (!is_array($info = mysqli_get_client_stats()) || empty($info))
! 163: printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
! 164: ++$test_counter, gettype($info), $info);
! 165:
! 166: mysqli_get_client_stats_assert_gt('bytes_sent', $info, $expected, $test_counter);
! 167: mysqli_get_client_stats_assert_gt('bytes_received', $info, $expected, $test_counter);
! 168:
! 169: // real_data_* get incremeneted after mysqli_*fetch*()
! 170: mysqli_get_client_stats_assert_eq('bytes_received_real_data_normal', $info, "0", $test_counter);
! 171: mysqli_get_client_stats_assert_eq('bytes_received_real_data_ps', $info, "0", $test_counter);
! 172:
! 173: mysqli_get_client_stats_assert_eq('rows_fetched_from_server_normal', $info, $expected, $test_counter);
! 174: mysqli_get_client_stats_assert_eq('rows_fetched_from_client_normal_buffered', $info, $expected, $test_counter);
! 175: mysqli_get_client_stats_assert_eq('buffered_sets', $info, $expected, $test_counter);
! 176: mysqli_get_client_stats_assert_eq('result_set_queries', $info, $expected, $test_counter);
! 177: mysqli_get_client_stats_assert_eq('rows_buffered_from_client_normal', $info, $expected, $test_counter);
! 178:
! 179: /* no change to rows_fetched_from_client_normal_buffered! */
! 180: if (!$row = mysqli_fetch_assoc($res))
! 181: printf("[%03d] fetch_assoc - SELECT COUNT() FROM test failed, [%d] %s\n",
! 182: ++$test_counter, mysqli_errno($link), mysqli_error($link));
! 183:
! 184: $expected['rows_fetched_from_client_normal_buffered'] = (string)($expected['rows_fetched_from_client_normal_buffered'] + 1);
! 185:
! 186: if (!is_array($info = mysqli_get_client_stats()) || empty($info))
! 187: printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
! 188: ++$test_counter, gettype($info), $info);
! 189:
! 190: // fetch will increment
! 191: mysqli_get_client_stats_assert_gt('bytes_received_real_data_normal', $info, $expected, $test_counter);
! 192: $expected['bytes_received_real_data_normal'] = $info['bytes_received_real_data_normal'];
! 193: mysqli_get_client_stats_assert_eq('bytes_received_real_data_ps', $info, "0", $test_counter);
! 194:
! 195: mysqli_get_client_stats_assert_eq('rows_fetched_from_server_normal', $info, $expected, $test_counter);
! 196: mysqli_get_client_stats_assert_eq('rows_fetched_from_client_normal_buffered', $info, $expected, $test_counter);
! 197: mysqli_get_client_stats_assert_eq('rows_buffered_from_client_normal', $info, $expected, $test_counter);
! 198:
! 199: $num_rows = $row['_num'];
! 200: mysqli_free_result($res);
! 201:
! 202: print "Testing buffered normal... - SELECT id, label FROM test\n";
! 203: if (!$res = mysqli_query($link, 'SELECT id, label FROM test', MYSQLI_STORE_RESULT))
! 204: printf("[%03d] SELECT id, label FROM test failed, [%d] %s\n",
! 205: ++$test_counter, mysqli_errno($link), mysqli_error($link));
! 206:
! 207:
! 208: assert(mysqli_num_rows($res) == $num_rows);
! 209:
! 210: if (!is_array($info = mysqli_get_client_stats()) || empty($info))
! 211: printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
! 212: ++$test_counter, gettype($info), $info);
! 213:
! 214:
! 215: $expected['rows_fetched_from_server_normal'] = (string)($expected['rows_fetched_from_server_normal'] + $num_rows);
! 216: $expected['rows_buffered_from_client_normal'] = (string)($expected['rows_buffered_from_client_normal'] + $num_rows);
! 217: $expected['buffered_sets'] = (string)($expected['buffered_sets'] + 1);
! 218: $expected['result_set_queries'] = (string)($expected['result_set_queries'] + 1);
! 219:
! 220: mysqli_get_client_stats_assert_eq('bytes_received_real_data_normal', $info, $expected, $test_counter);
! 221:
! 222: mysqli_get_client_stats_assert_eq('rows_fetched_from_server_normal', $info, $expected, $test_counter);
! 223: mysqli_get_client_stats_assert_eq('rows_fetched_from_client_normal_buffered', $info, $expected, $test_counter);
! 224: mysqli_get_client_stats_assert_eq('buffered_sets', $info, $expected, $test_counter);
! 225: mysqli_get_client_stats_assert_eq('result_set_queries', $info, $expected, $test_counter);
! 226: mysqli_get_client_stats_assert_eq('rows_buffered_from_client_normal', $info, $expected, $test_counter);
! 227: mysqli_get_client_stats_assert_eq('rows_buffered_from_client_normal', $info, $expected, $test_counter);
! 228:
! 229: /* fetching none, but stats should not be affected - current implementation */
! 230: mysqli_free_result($res);
! 231:
! 232: if (!is_array($info = mysqli_get_client_stats()) || empty($info))
! 233: printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
! 234: ++$test_counter, gettype($info), $info);
! 235:
! 236:
! 237: mysqli_get_client_stats_assert_eq('bytes_received_real_data_normal', $info, $expected, $test_counter);
! 238: mysqli_get_client_stats_assert_eq('rows_fetched_from_server_normal', $info, $expected, $test_counter);
! 239: mysqli_get_client_stats_assert_eq('rows_fetched_from_client_normal_buffered', $info, $expected, $test_counter);
! 240:
! 241: print "Testing unbuffered normal...\n";
! 242: if (!$res = mysqli_query($link, 'SELECT id, label FROM test', MYSQLI_USE_RESULT))
! 243: printf("[%03d] SELECT id, label FROM test failed, [%d] %s\n",
! 244: ++$test_counter, mysqli_errno($link), mysqli_error($link));
! 245:
! 246: if (!is_array($info = mysqli_get_client_stats()) || empty($info))
! 247: printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
! 248: ++$test_counter, gettype($info), $info);
! 249:
! 250: mysqli_get_client_stats_assert_eq('rows_fetched_from_server_normal', $info, $expected, $test_counter);
! 251: mysqli_get_client_stats_assert_eq('rows_fetched_from_client_normal_unbuffered', $info, $expected, $test_counter);
! 252: mysqli_get_client_stats_assert_eq('bytes_received_real_data_normal', $info, $expected, $test_counter);
! 253:
! 254: while ($row = mysqli_fetch_assoc($res))
! 255: ;
! 256: mysqli_free_result($res);
! 257:
! 258: $expected['rows_fetched_from_server_normal'] = (string)($expected['rows_fetched_from_server_normal'] + $num_rows);
! 259: $expected['rows_fetched_from_client_normal_unbuffered'] = (string)($expected['rows_fetched_from_client_normal_unbuffered'] + $num_rows);
! 260: $expected['unbuffered_sets'] = (string)($expected['unbuffered_sets'] + 1);
! 261: $expected['result_set_queries'] = (string)($expected['result_set_queries'] + 1);
! 262:
! 263: if (!is_array($info = mysqli_get_client_stats()) || empty($info))
! 264: printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
! 265: ++$test_counter, gettype($info), $info);
! 266:
! 267: mysqli_get_client_stats_assert_gt('bytes_received_real_data_normal', $info, $expected, $test_counter);
! 268: $expected['bytes_received_real_data_normal'] = $info['bytes_received_real_data_normal'];
! 269:
! 270: mysqli_get_client_stats_assert_eq('rows_fetched_from_server_normal', $info, $expected, $test_counter);
! 271: mysqli_get_client_stats_assert_eq('rows_fetched_from_client_normal_unbuffered', $info, $expected, $test_counter);
! 272: mysqli_get_client_stats_assert_eq('unbuffered_sets', $info, $expected, $test_counter);
! 273: mysqli_get_client_stats_assert_eq('result_set_queries', $info, $expected, $test_counter);
! 274:
! 275: print "Testing unbuffered normal... - SELECT id, label FROM test, not all fetched\n";
! 276: if (!$res = mysqli_query($link, 'SELECT id, label FROM test', MYSQLI_USE_RESULT))
! 277: printf("[%03d] SELECT id, label FROM test failed, [%d] %s\n",
! 278: ++$test_counter, mysqli_errno($link), mysqli_error($link));
! 279:
! 280: for ($i = 0; $i < $num_rows - 1; $i++)
! 281: $row = mysqli_fetch_assoc($res);
! 282:
! 283: $expected['rows_fetched_from_server_normal'] = (string)($expected['rows_fetched_from_server_normal'] + $num_rows - 1);
! 284: $expected['rows_fetched_from_client_normal_unbuffered'] = (string)($expected['rows_fetched_from_client_normal_unbuffered'] + $num_rows - 1);
! 285: $expected['unbuffered_sets'] = (string)($expected['unbuffered_sets'] + 1);
! 286: $expected['result_set_queries'] = (string)($expected['result_set_queries'] + 1);
! 287:
! 288: if (!is_array($info = mysqli_get_client_stats()) || empty($info))
! 289: printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
! 290: ++$test_counter, gettype($info), $info);
! 291:
! 292: mysqli_get_client_stats_assert_gt('bytes_received_real_data_normal', $info, $expected, $test_counter);
! 293: $expected['bytes_received_real_data_normal'] = $info['bytes_received_real_data_normal'];
! 294:
! 295: mysqli_get_client_stats_assert_eq('rows_fetched_from_server_normal', $info, $expected, $test_counter);
! 296: mysqli_get_client_stats_assert_eq('rows_fetched_from_client_normal_unbuffered', $info, $expected, $test_counter);
! 297: mysqli_get_client_stats_assert_eq('unbuffered_sets', $info, $expected, $test_counter);
! 298: mysqli_get_client_stats_assert_eq('result_set_queries', $info, $expected, $test_counter);
! 299:
! 300: print "Testing if implicit fetching and cleaning happens...\n";
! 301: mysqli_free_result($res);
! 302:
! 303: /* last row has been implicitly cleaned from the wire by freeing the result set */
! 304: $expected['rows_fetched_from_server_normal'] = (string)($expected['rows_fetched_from_server_normal'] + 1);
! 305: $expected['rows_fetched_from_client_normal_unbuffered'] = (string)($expected['rows_fetched_from_client_normal_unbuffered'] + 1);
! 306: $expected['rows_skipped_normal'] = (string)($info['rows_skipped_normal'] + 1);
! 307: $expected['flushed_normal_sets'] = (string)($expected['flushed_normal_sets'] + 1);
! 308:
! 309: if (!is_array($info = mysqli_get_client_stats()) || empty($info))
! 310: printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
! 311: ++$test_counter, gettype($info), $info);
! 312:
! 313: mysqli_get_client_stats_assert_eq('bytes_received_real_data_normal', $info, $expected, $test_counter);
! 314:
! 315: mysqli_get_client_stats_assert_eq('rows_fetched_from_server_normal', $info, $expected, $test_counter);
! 316: mysqli_get_client_stats_assert_eq('rows_fetched_from_client_normal_unbuffered', $info, $expected, $test_counter);
! 317: mysqli_get_client_stats_assert_eq('rows_skipped_normal', $info, $expected, $test_counter);
! 318: mysqli_get_client_stats_assert_eq('flushed_normal_sets', $info, $expected, $test_counter);
! 319:
! 320: print "Testing buffered Prepared Statements...\n";
! 321: if (!$stmt = mysqli_stmt_init($link))
! 322: printf("[%03d] stmt_init() failed, [%d] %s\n",
! 323: ++$test_counter, mysqli_errno($link), mysqli_error($link));
! 324:
! 325: if (!mysqli_stmt_prepare($stmt, 'SELECT id, label FROM test') ||
! 326: !mysqli_stmt_execute($stmt))
! 327: printf("[%03d] prepare/execute failed, [%d] %s\n",
! 328: ++$test_counter, mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
! 329:
! 330: /* by default PS is unbuffered - no change */
! 331: mysqli_get_client_stats_assert_eq('rows_fetched_from_server_ps', $info, $expected, $test_counter);
! 332: mysqli_get_client_stats_assert_eq('rows_fetched_from_client_ps_buffered', $info, $expected, $test_counter);
! 333:
! 334: if (!mysqli_stmt_store_result($stmt))
! 335: printf("[%03d] store_result failed, [%d] %s\n",
! 336: ++$test_counter, mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
! 337: mysqli_stmt_free_result($stmt);
! 338:
! 339: mysqli_get_client_stats_assert_eq('bytes_received_real_data_ps', $info, "0", $test_counter);
! 340: mysqli_get_client_stats_assert_eq('bytes_received_real_data_normal', $info, $expected, $test_counter);
! 341:
! 342: $expected['rows_fetched_from_server_ps'] = (string)($expected['rows_fetched_from_server_ps'] + $num_rows);
! 343: $expected['result_set_queries'] = (string)($expected['result_set_queries'] + 1);
! 344: $expected['ps_buffered_sets'] = (string)($expected['ps_buffered_sets'] + 1);
! 345: $expected['rows_buffered_from_client_ps'] = (string)($expected['rows_buffered_from_client_ps'] + $num_rows);
! 346:
! 347:
! 348: if (!is_array($info = mysqli_get_client_stats()) || empty($info))
! 349: printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
! 350: ++$test_counter, gettype($info), $info);
! 351:
! 352: mysqli_get_client_stats_assert_eq('rows_fetched_from_server_ps', $info, $expected, $test_counter);
! 353: mysqli_get_client_stats_assert_eq('rows_fetched_from_client_ps_buffered', $info, $expected, $test_counter);
! 354: mysqli_get_client_stats_assert_eq('result_set_queries', $info, $expected, $test_counter);
! 355: mysqli_get_client_stats_assert_eq('ps_buffered_sets', $info, $expected, $test_counter);
! 356: mysqli_get_client_stats_assert_eq('rows_buffered_from_client_ps', $info, $expected, $test_counter);
! 357:
! 358: mysqli_get_client_stats_assert_eq('bytes_received_real_data_ps', $info, "0", $test_counter);
! 359:
! 360: print "Testing buffered Prepared Statements... - fetching all\n";
! 361:
! 362: if (!mysqli_stmt_prepare($stmt, 'SELECT id, label FROM test') ||
! 363: !mysqli_stmt_execute($stmt))
! 364: printf("[%03d] prepare/execute failed, [%d] %s\n",
! 365: ++$test_counter, mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
! 366:
! 367: $id = $label = null;
! 368: if (!mysqli_stmt_bind_result($stmt, $id, $label))
! 369: printf("[%03d] bind_result failed, [%d] %s\n",
! 370: ++$test_counter, mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
! 371:
! 372: if (!mysqli_stmt_store_result($stmt))
! 373: printf("[%03d] store_result failed, [%d] %s\n",
! 374: ++$test_counter, mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
! 375:
! 376: while (mysqli_stmt_fetch($stmt))
! 377: ;
! 378:
! 379: $expected['rows_fetched_from_server_ps'] = (string)($expected['rows_fetched_from_server_ps'] + $num_rows);
! 380: $expected['rows_fetched_from_client_ps_buffered'] = (string)($expected['rows_fetched_from_client_ps_buffered'] + $num_rows);
! 381: $expected['result_set_queries'] = (string)($expected['result_set_queries'] + 1);
! 382: $expected['ps_buffered_sets'] = (string)($expected['ps_buffered_sets'] + 1);
! 383: $expected['rows_buffered_from_client_ps'] = (string)($expected['rows_buffered_from_client_ps'] + $num_rows);
! 384:
! 385: if (!is_array($info = mysqli_get_client_stats()) || empty($info))
! 386: printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
! 387: ++$test_counter, gettype($info), $info);
! 388:
! 389:
! 390: mysqli_get_client_stats_assert_gt('bytes_received_real_data_ps', $info, $expected, $test_counter);
! 391: $expected['bytes_received_real_data_ps'] = $info['bytes_received_real_data_ps'];
! 392:
! 393: mysqli_get_client_stats_assert_eq('rows_fetched_from_server_ps', $info, $expected, $test_counter);
! 394: mysqli_get_client_stats_assert_eq('rows_fetched_from_client_ps_buffered', $info, $expected, $test_counter);
! 395: mysqli_get_client_stats_assert_eq('result_set_queries', $info, $expected, $test_counter);
! 396: mysqli_get_client_stats_assert_eq('ps_buffered_sets', $info, $expected, $test_counter);
! 397: mysqli_get_client_stats_assert_eq('rows_buffered_from_client_ps', $info, $expected, $test_counter);
! 398:
! 399: mysqli_stmt_free_result($stmt);
! 400:
! 401: print "Testing buffered Prepared Statements... - fetching all but one\n";
! 402:
! 403: if (!mysqli_stmt_prepare($stmt, 'SELECT id, label FROM test') ||
! 404: !mysqli_stmt_execute($stmt))
! 405: printf("[%03d] prepare/execute failed, [%d] %s\n",
! 406: ++$test_counter, mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
! 407:
! 408: $id = $label = null;
! 409: if (!mysqli_stmt_bind_result($stmt, $id, $label))
! 410: printf("[%03d] bind_result failed, [%d] %s\n",
! 411: ++$test_counter, mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
! 412:
! 413: if (!mysqli_stmt_store_result($stmt))
! 414: printf("[%03d] store_result failed, [%d] %s\n",
! 415: ++$test_counter, mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
! 416:
! 417: for ($i = 0; $i < $num_rows - 1; $i++)
! 418: mysqli_stmt_fetch($stmt);
! 419:
! 420: $expected['rows_fetched_from_server_ps'] = (string)($expected['rows_fetched_from_server_ps'] + $num_rows);
! 421: $expected['rows_fetched_from_client_ps_buffered'] = (string)($expected['rows_fetched_from_client_ps_buffered'] + $num_rows - 1);
! 422: $expected['result_set_queries'] = (string)($expected['result_set_queries'] + 1);
! 423: $expected['ps_buffered_sets'] = (string)($expected['ps_buffered_sets'] + 1);
! 424: $expected['rows_buffered_from_client_ps'] = (string)($expected['rows_buffered_from_client_ps'] + $num_rows);
! 425:
! 426: if (!is_array($info = mysqli_get_client_stats()) || empty($info))
! 427: printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
! 428: ++$test_counter, gettype($info), $info);
! 429:
! 430: mysqli_get_client_stats_assert_gt('bytes_received_real_data_ps', $info, $expected, $test_counter);
! 431: $expected['bytes_received_real_data_ps'] = $info['bytes_received_real_data_ps'];
! 432:
! 433: mysqli_get_client_stats_assert_eq('rows_fetched_from_server_ps', $info, $expected, $test_counter);
! 434: mysqli_get_client_stats_assert_eq('rows_fetched_from_client_ps_buffered', $info, $expected, $test_counter);
! 435: mysqli_get_client_stats_assert_eq('result_set_queries', $info, $expected, $test_counter);
! 436: mysqli_get_client_stats_assert_eq('ps_buffered_sets', $info, $expected, $test_counter);
! 437: mysqli_get_client_stats_assert_eq('rows_buffered_from_client_ps', $info, $expected, $test_counter);
! 438:
! 439: $expected['rows_skipped_ps'] = $info['rows_skipped_ps'];
! 440: mysqli_stmt_free_result($stmt);
! 441:
! 442: if (!is_array($info = mysqli_get_client_stats()) || empty($info))
! 443: printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
! 444: ++$test_counter, gettype($info), $info);
! 445:
! 446: /* buffered result set - no skipping possible! */
! 447: mysqli_get_client_stats_assert_eq('rows_skipped_ps', $info, $expected, $test_counter);
! 448:
! 449: print "Testing unbuffered Prepared Statements... - fetching all\n";
! 450:
! 451: if (!mysqli_stmt_prepare($stmt, 'SELECT id, label FROM test') ||
! 452: !mysqli_stmt_execute($stmt))
! 453: printf("[%03d] prepare/execute failed, [%d] %s\n",
! 454: ++$test_counter, mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
! 455:
! 456: $id = $label = null;
! 457: if (!mysqli_stmt_bind_result($stmt, $id, $label))
! 458: printf("[%03d] bind_result failed, [%d] %s\n",
! 459: ++$test_counter, mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
! 460:
! 461: $i = 0;
! 462: while (mysqli_stmt_fetch($stmt))
! 463: $i++;
! 464: assert($num_rows = $i);
! 465:
! 466: $expected['rows_fetched_from_server_ps'] = (string)($expected['rows_fetched_from_server_ps'] + $num_rows);
! 467: $expected['rows_fetched_from_client_ps_unbuffered'] = (string)($expected['rows_fetched_from_client_ps_unbuffered'] + $num_rows);
! 468: $expected['result_set_queries'] = (string)($expected['result_set_queries'] + 1);
! 469: $expected['ps_unbuffered_sets'] = (string)($expected['ps_unbuffered_sets'] + 1);
! 470:
! 471: if (!is_array($info = mysqli_get_client_stats()) || empty($info))
! 472: printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
! 473: ++$test_counter, gettype($info), $info);
! 474:
! 475: mysqli_get_client_stats_assert_gt('bytes_received_real_data_ps', $info, $expected, $test_counter);
! 476: $expected['bytes_received_real_data_ps'] = $info['bytes_received_real_data_ps'];
! 477:
! 478: mysqli_get_client_stats_assert_eq('rows_fetched_from_server_ps', $info, $expected, $test_counter);
! 479: mysqli_get_client_stats_assert_eq('rows_fetched_from_client_ps_unbuffered', $info, $expected, $test_counter);
! 480: mysqli_get_client_stats_assert_eq('result_set_queries', $info, $expected, $test_counter);
! 481: mysqli_get_client_stats_assert_eq('ps_unbuffered_sets', $info, $expected, $test_counter);
! 482: mysqli_get_client_stats_assert_eq('rows_buffered_from_client_ps', $info, $expected, $test_counter);
! 483:
! 484: mysqli_stmt_free_result($stmt);
! 485:
! 486: print "Testing unbuffered Prepared Statements... - fetching all but one\n";
! 487:
! 488: if (!mysqli_stmt_prepare($stmt, 'SELECT id, label FROM test') ||
! 489: !mysqli_stmt_execute($stmt))
! 490: printf("[%03d] prepare/execute failed, [%d] %s\n",
! 491: ++$test_counter, mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
! 492:
! 493: $id = $label = null;
! 494: if (!mysqli_stmt_bind_result($stmt, $id, $label))
! 495: printf("[%03d] bind_result failed, [%d] %s\n",
! 496: ++$test_counter, mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
! 497:
! 498: for ($i = 0; $i < $num_rows - 1; $i++)
! 499: mysqli_stmt_fetch($stmt);
! 500:
! 501: $expected['rows_fetched_from_server_ps'] = (string)($expected['rows_fetched_from_server_ps'] + $num_rows - 1);
! 502: $expected['rows_fetched_from_client_ps_unbuffered'] = (string)($expected['rows_fetched_from_client_ps_unbuffered'] + $num_rows - 1);
! 503: $expected['result_set_queries'] = (string)($expected['result_set_queries'] + 1);
! 504: $expected['ps_unbuffered_sets'] = (string)($expected['ps_unbuffered_sets'] + 1);
! 505:
! 506: if (!is_array($info = mysqli_get_client_stats()) || empty($info))
! 507: printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
! 508: ++$test_counter, gettype($info), $info);
! 509:
! 510: mysqli_get_client_stats_assert_gt('bytes_received_real_data_ps', $info, $expected, $test_counter);
! 511: $expected['bytes_received_real_data_ps'] = $info['bytes_received_real_data_ps'];
! 512:
! 513: mysqli_get_client_stats_assert_eq('rows_fetched_from_server_ps', $info, $expected, $test_counter);
! 514: mysqli_get_client_stats_assert_eq('rows_fetched_from_client_ps_unbuffered', $info, $expected, $test_counter);
! 515: mysqli_get_client_stats_assert_eq('result_set_queries', $info, $expected, $test_counter);
! 516: mysqli_get_client_stats_assert_eq('ps_unbuffered_sets', $info, $expected, $test_counter);
! 517: mysqli_get_client_stats_assert_eq('rows_buffered_from_client_ps', $info, $expected, $test_counter);
! 518:
! 519: mysqli_stmt_free_result($stmt);
! 520: $expected['rows_skipped_ps'] = (string)($expected['rows_skipped_ps'] + 1);
! 521: $expected['flushed_ps_sets'] = (string)($expected['flushed_ps_sets'] + 1);
! 522: $expected['rows_fetched_from_server_ps'] = (string)($expected['rows_fetched_from_server_ps'] + 1);
! 523:
! 524: if (!is_array($info = mysqli_get_client_stats()) || empty($info))
! 525: printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
! 526: ++$test_counter, gettype($info), $info);
! 527:
! 528: mysqli_get_client_stats_assert_eq('bytes_received_real_data_ps', $info, $expected, $test_counter);
! 529:
! 530: mysqli_get_client_stats_assert_eq('rows_skipped_ps', $info, $expected, $test_counter);
! 531: mysqli_get_client_stats_assert_eq('flushed_ps_sets', $info, $expected, $test_counter);
! 532: mysqli_get_client_stats_assert_eq('rows_fetched_from_server_ps', $info, $expected, $test_counter);
! 533:
! 534: /*
! 535: print "Checking for normal buffered side effects...\n";
! 536: foreach ($info as $k => $v)
! 537: if ($info[$k] != $expected[$k])
! 538: printf("$k - $v != %s\n", $expected[$k]);
! 539: */
! 540: print "... done with fetch statistics\n";
! 541:
! 542: if (!is_array($info = mysqli_get_client_stats()) || empty($info))
! 543: printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
! 544: ++$test_counter, gettype($info), $info);
! 545:
! 546: mysqli_get_client_stats_assert_eq('bytes_received_real_data_normal', $info, $expected, $test_counter);
! 547: mysqli_get_client_stats_assert_eq('bytes_received_real_data_ps', $info, $expected, $test_counter);
! 548:
! 549: //
! 550: // result_set_queries statistics
! 551: //
! 552:
! 553: if (!is_array($info = mysqli_get_client_stats()) || empty($info))
! 554: printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
! 555: ++$test_counter, gettype($info), $info);
! 556:
! 557: if (!$res = mysqli_query($link, "SELECT id, label FROM test"))
! 558: printf("[%03d] SELECT failed, [%d] %s\n", ++$test_counter,
! 559: mysqli_errno($link), mysqli_error($link));
! 560:
! 561: $rows = 0;
! 562: while ($row = mysqli_fetch_assoc($res))
! 563: $rows++;
! 564:
! 565: if (0 == $rows)
! 566: printf("[%03d] Expecting at least one result, [%d] %s\n", ++$test_counter,
! 567: mysqli_errno($link), mysqli_error($link));
! 568:
! 569: mysqli_free_result($res);
! 570:
! 571: if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info))
! 572: printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
! 573: ++$test_counter, gettype($new_info), $new_info);
! 574:
! 575: mysqli_get_client_stats_assert_eq('result_set_queries', $new_info, (string)($info['result_set_queries'] + 1), $test_counter);
! 576: $info = $new_info;
! 577:
! 578: mysqli_get_client_stats_assert_gt('bytes_received_real_data_normal', $info, $expected, $test_counter);
! 579: $expected['bytes_received_real_data_normal'] = $info['bytes_received_real_data_normal'];
! 580:
! 581: //
! 582: // non_result_set_queries - DDL
! 583: //
! 584:
! 585: // CREATE TABLE, DROP TABLE
! 586: if (!mysqli_query($link, "DROP TABLE IF EXISTS non_result_set_queries_test"))
! 587: printf("[%03d] DROP TABLE failed, [%d] %s\n", ++$test_counter,
! 588: mysqli_errno($link), mysqli_error($link));
! 589:
! 590: if (!mysqli_query($link, "CREATE TABLE non_result_set_queries_test(id INT) ENGINE = " . $engine)) {
! 591: printf("[%03d] CREATE TABLE failed, [%d] %s\n", ++$test_counter,
! 592: mysqli_errno($link), mysqli_error($link));
! 593: } else {
! 594: if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info))
! 595: printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
! 596: ++$test_counter, gettype($new_info), $new_info);
! 597: mysqli_get_client_stats_assert_eq('non_result_set_queries', $new_info, (string)($info['non_result_set_queries'] + 2), $test_counter, 'CREATE/DROP TABLE');
! 598: }
! 599: $info = $new_info;
! 600:
! 601: // ALERT TABLE
! 602: if (!mysqli_query($link, "ALTER TABLE non_result_set_queries_test ADD label CHAR(1)")) {
! 603: printf("[%03d] ALTER TABLE failed, [%d] %s\n", ++$test_counter,
! 604: mysqli_errno($link), mysqli_error($link));
! 605: } else {
! 606: if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info))
! 607: printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
! 608: ++$test_counter, gettype($new_info), $new_info);
! 609: mysqli_get_client_stats_assert_eq('non_result_set_queries', $new_info, (string)($info['non_result_set_queries'] + 1), $test_counter, 'ALTER TABLE');
! 610: }
! 611: $info = $new_info;
! 612:
! 613: // CREATE INDEX, DROP INDEX
! 614: if (!mysqli_query($link, "CREATE INDEX idx_1 ON non_result_set_queries_test(id)")) {
! 615: printf("[%03d] CREATE INDEX failed, [%d] %s\n", ++$test_counter,
! 616: mysqli_errno($link), mysqli_error($link));
! 617: } else {
! 618:
! 619: if (!mysqli_query($link, "DROP INDEX idx_1 ON non_result_set_queries_test"))
! 620: printf("[%03d] DROP INDEX failed, [%d] %s\n", ++$test_counter,
! 621: mysqli_errno($link), mysqli_error($link));
! 622:
! 623: if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info))
! 624: printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
! 625: ++$test_counter, gettype($new_info), $new_info);
! 626: mysqli_get_client_stats_assert_eq('non_result_set_queries', $new_info, (string)($info['non_result_set_queries'] + 2), $test_counter, 'DROP INDEX');
! 627: }
! 628: $info = $new_info;
! 629:
! 630: // RENAME TABLE
! 631: if (!mysqli_query($link, "DROP TABLE IF EXISTS client_stats_test"))
! 632: printf("[%03d] Cleanup, DROP TABLE client_stats_test failed, [%d] %s\n", ++$test_counter,
! 633: mysqli_errno($link), mysqli_error($link));
! 634:
! 635: if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info))
! 636: printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
! 637: ++$test_counter, gettype($new_info), $new_info);
! 638: $info = $new_info;
! 639:
! 640: if (!mysqli_query($link, "RENAME TABLE non_result_set_queries_test TO client_stats_test")) {
! 641: printf("[%03d] RENAME TABLE failed, [%d] %s\n", ++$test_counter,
! 642: mysqli_errno($link), mysqli_error($link));
! 643:
! 644: } else {
! 645: if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info))
! 646: printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
! 647: ++$test_counter, gettype($new_info), $new_info);
! 648: mysqli_get_client_stats_assert_eq('non_result_set_queries', $new_info, (string)($info['non_result_set_queries'] + 1), $test_counter, 'RENAME TABLE');
! 649:
! 650: }
! 651: $info = $new_info;
! 652:
! 653: if (!mysqli_query($link, "DROP TABLE IF EXISTS non_result_set_queries_test"))
! 654: printf("[%03d] Cleanup, DROP TABLE failed, [%d] %s\n", ++$test_counter,
! 655: mysqli_errno($link), mysqli_error($link));
! 656:
! 657: if (!mysqli_query($link, "DROP TABLE IF EXISTS client_stats_test"))
! 658: printf("[%03d] Cleanup, DROP TABLE failed, [%d] %s\n", ++$test_counter,
! 659: mysqli_errno($link), mysqli_error($link));
! 660:
! 661: // Let's see if we have privileges for CREATE DATABASE
! 662: mysqli_query($link, "DROP DATABASE IF EXISTS mysqli_get_client_stats");
! 663: if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info))
! 664: printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
! 665: ++$test_counter, gettype($new_info), $new_info);
! 666: $info = $new_info;
! 667:
! 668:
! 669: // CREATE, ALTER, RENAME, DROP DATABASE
! 670: if (mysqli_query($link, "CREATE DATABASE mysqli_get_client_stats")) {
! 671:
! 672: if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info))
! 673: printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
! 674: ++$test_counter, gettype($new_info), $new_info);
! 675: mysqli_get_client_stats_assert_eq('non_result_set_queries', $new_info, (string)($info['non_result_set_queries'] + 1), $test_counter, 'CREATE DATABASE');
! 676: $info = $new_info;
! 677:
! 678: if (!mysqli_query($link, "ALTER DATABASE DEFAULT CHARACTER SET latin1"))
! 679: printf("[%03d] ALTER DATABASE failed, [%d] %s\n", ++$test_counter,
! 680: mysqli_errno($link), mysqli_error($link));
! 681:
! 682: if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info))
! 683: printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
! 684: ++$test_counter, gettype($new_info), $new_info);
! 685: mysqli_get_client_stats_assert_eq('non_result_set_queries', $new_info, (string)($info['non_result_set_queries'] + 1), $test_counter, 'CREATE DATABASE');
! 686: $info = $new_info;
! 687:
! 688: if (mysqli_get_server_version($link) > 51700) {
! 689: if (!mysqli_query($link, "RENAME DATABASE mysqli_get_client_stats TO mysqli_get_client_stats_"))
! 690: printf("[%03d] RENAME DATABASE failed, [%d] %s\n", ++$test_counter,
! 691: mysqli_errno($link), mysqli_error($link));
! 692:
! 693: if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info))
! 694: printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
! 695: ++$test_counter, gettype($new_info), $new_info);
! 696: mysqli_get_client_stats_assert_eq('non_result_set_queries', $new_info, (string)($info['non_result_set_queries'] + 1), $test_counter, 'CREATE DATABASE');
! 697: $info = $new_info;
! 698: } else {
! 699: if (!mysqli_query($link, "CREATE DATABASE mysqli_get_client_stats_"))
! 700: printf("[%03d] CREATE DATABASE failed, [%d] %s\n", ++$test_counter,
! 701: mysqli_errno($link), mysqli_error($link));
! 702: if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info))
! 703: printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
! 704: ++$test_counter, gettype($new_info), $new_info);
! 705: $info = $new_info;
! 706: }
! 707:
! 708: if (!mysqli_query($link, "DROP DATABASE mysqli_get_client_stats_"))
! 709: printf("[%03d] DROP DATABASE failed, [%d] %s\n", ++$test_counter,
! 710: mysqli_errno($link), mysqli_error($link));
! 711:
! 712: if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info))
! 713: printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
! 714: ++$test_counter, gettype($new_info), $new_info);
! 715: mysqli_get_client_stats_assert_eq('non_result_set_queries', $new_info, (string)($info['non_result_set_queries'] + 1), $test_counter, 'DROP DATABASE');
! 716: $info = $new_info;
! 717: }
! 718:
! 719: // CREATE SERVER, ALTER SERVER, DROP SERVER
! 720: // We don't really try to use federated, we just want to see if the syntax works
! 721: mysqli_query($link, "DROP SERVER IF EXISTS myself");
! 722:
! 723: if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info))
! 724: printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
! 725: ++$test_counter, gettype($new_info), $new_info);
! 726: $info = $new_info;
! 727:
! 728: $sql = sprintf("CREATE SERVER myself FOREIGN DATA WRAPPER mysql OPTIONS (user '%s', password '%s', database '%s')",
! 729: $user, $passwd, $db);
! 730: if (mysqli_query($link, $sql)) {
! 731: // server knows about it
! 732:
! 733: if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info))
! 734: printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
! 735: ++$test_counter, gettype($new_info), $new_info);
! 736:
! 737: mysqli_get_client_stats_assert_eq('non_result_set_queries', $new_info, (string)($info['non_result_set_queries'] + 1), $test_counter, 'CREATE SERVER');
! 738: $info = $new_info;
! 739:
! 740: if (!mysqli_query($link, sprintf("ALTER SERVER myself OPTIONS(user '%s_')", $user)))
! 741: printf("[%03d] ALTER SERVER failed, [%d] %s\n", ++$test_counter,
! 742: mysqli_errno($link), mysqli_error($link));
! 743:
! 744: if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info))
! 745: printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
! 746: ++$test_counter, gettype($new_info), $new_info);
! 747: mysqli_get_client_stats_assert_eq('non_result_set_queries', $new_info, (string)($info['non_result_set_queries'] + 1), $test_counter, 'ALTER SERVER');
! 748: $info = $new_info;
! 749:
! 750: if (!mysqli_query($link, "DROP SERVER myself"))
! 751: printf("[%03d] DROP SERVER failed, [%d] %s\n", ++$test_counter,
! 752: mysqli_errno($link), mysqli_error($link));
! 753:
! 754: if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info))
! 755: printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
! 756: ++$test_counter, gettype($new_info), $new_info);
! 757: mysqli_get_client_stats_assert_eq('non_result_set_queries', $new_info, (string)($info['non_result_set_queries'] + 1), $test_counter, 'DROP SERVER');
! 758: $info = $new_info;
! 759: }
! 760:
! 761: mysqli_get_client_stats_assert_eq('bytes_received_real_data_normal', $info, $expected, $test_counter);
! 762: mysqli_get_client_stats_assert_eq('bytes_received_real_data_ps', $info, $expected, $test_counter);
! 763:
! 764: /*
! 765: We don't test the NDB ones.
! 766: 13.1. Data Definition Statements
! 767: 13.1.3. ALTER LOGFILE GROUP Syntax
! 768: 13.1.4. ALTER TABLESPACE Syntax
! 769: 13.1.9. CREATE LOGFILE GROUP Syntax
! 770: 13.1.10. CREATE TABLESPACE Syntax
! 771: 13.1.15. DROP LOGFILE GROUP Syntax
! 772: 13.1.16. DROP TABLESPACE Syntax
! 773: */
! 774:
! 775: //
! 776: // DML
! 777: //
! 778: if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info))
! 779: printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
! 780: ++$test_counter, gettype($new_info), $new_info);
! 781: $info = $new_info;
! 782:
! 783: if (!mysqli_query($link, "INSERT INTO test(id) VALUES (100)"))
! 784: printf("[%03d] INSERT failed, [%d] %s\n", ++$test_counter,
! 785: mysqli_errno($link), mysqli_error($link));
! 786:
! 787: if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info))
! 788: printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
! 789: ++$test_counter, gettype($new_info), $new_info);
! 790: mysqli_get_client_stats_assert_eq('non_result_set_queries', $new_info, (string)($info['non_result_set_queries'] + 1), $test_counter, 'INSERT');
! 791: $info = $new_info;
! 792:
! 793: if (!mysqli_query($link, "UPDATE test SET label ='z' WHERE id = 100"))
! 794: printf("[%03d] UPDATE failed, [%d] %s\n", ++$test_counter,
! 795: mysqli_errno($link), mysqli_error($link));
! 796:
! 797: if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info))
! 798: printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
! 799: ++$test_counter, gettype($new_info), $new_info);
! 800: mysqli_get_client_stats_assert_eq('non_result_set_queries', $new_info, (string)($info['non_result_set_queries'] + 1), $test_counter, 'UPDATE');
! 801: $info = $new_info;
! 802:
! 803: if (!mysqli_query($link, "REPLACE INTO test(id, label) VALUES (100, 'b')"))
! 804: printf("[%03d] INSERT failed, [%d] %s\n", ++$test_counter,
! 805: mysqli_errno($link), mysqli_error($link));
! 806:
! 807: if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info))
! 808: printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
! 809: ++$test_counter, gettype($new_info), $new_info);
! 810: mysqli_get_client_stats_assert_eq('non_result_set_queries', $new_info, (string)($info['non_result_set_queries'] + 1), $test_counter, 'REPLACE');
! 811: $info = $new_info;
! 812:
! 813: // NOTE: this will NOT update dbl_ddls counter
! 814: if (!$res = mysqli_query($link, "SELECT id, label FROM test WHERE id = 100"))
! 815: printf("[%03d] SELECT@dml failed, [%d] %s\n", ++$test_counter,
! 816: mysqli_errno($link), mysqli_error($link));
! 817: mysqli_free_result($res);
! 818:
! 819: if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info))
! 820: printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
! 821: ++$test_counter, gettype($new_info), $new_info);
! 822: mysqli_get_client_stats_assert_eq('non_result_set_queries', $new_info, $info, $test_counter, 'SELECT@dml');
! 823: $info = $new_info;
! 824:
! 825: if (!mysqli_query($link, "DELETE FROM test WHERE id = 100"))
! 826: printf("[%03d] DELETE failed, [%d] %s\n", ++$test_counter,
! 827: mysqli_errno($link), mysqli_error($link));
! 828:
! 829: if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info))
! 830: printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
! 831: ++$test_counter, gettype($new_info), $new_info);
! 832: mysqli_get_client_stats_assert_eq('non_result_set_queries', $new_info, (string)($info['non_result_set_queries'] + 1), $test_counter, 'DELETE');
! 833: $info = $new_info;
! 834:
! 835: if (!$res = mysqli_query($link, "TRUNCATE TABLE test"))
! 836: printf("[%03d] TRUNCATE failed, [%d] %s\n", ++$test_counter,
! 837: mysqli_errno($link), mysqli_error($link));
! 838:
! 839: if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info))
! 840: printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
! 841: ++$test_counter, gettype($new_info), $new_info);
! 842: mysqli_get_client_stats_assert_eq('non_result_set_queries', $new_info, (string)($info['non_result_set_queries'] + 1), $test_counter, 'TRUNCATE');
! 843: $info = $new_info;
! 844:
! 845:
! 846: $file = tempnam(sys_get_temp_dir(), 'mysqli_test');
! 847: if ($fp = fopen($file, 'w')) {
! 848: @fwrite($fp, '1;"a"');
! 849: fclose($fp);
! 850: chmod($file, 0644);
! 851: $sql = sprintf('LOAD DATA LOCAL INFILE "%s" INTO TABLE test', mysqli_real_escape_string($link, $file));
! 852: if (mysqli_query($link, $sql)) {
! 853: if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info))
! 854: printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
! 855: ++$test_counter, gettype($new_info), $new_info);
! 856: mysqli_get_client_stats_assert_eq('non_result_set_queries', $new_info, (string)($info['non_result_set_queries'] + 1), $test_counter, 'LOAD DATA LOCAL');
! 857: $info = $new_info;
! 858: }
! 859: unlink($file);
! 860: }
! 861:
! 862: mysqli_get_client_stats_assert_eq('bytes_received_real_data_normal', $info, $expected, $test_counter);
! 863: mysqli_get_client_stats_assert_eq('bytes_received_real_data_ps', $info, $expected, $test_counter);
! 864:
! 865: /*
! 866: We skip those:
! 867: 13.2. Data Manipulation Statements
! 868: 13.2.2. DO Syntax
! 869: 13.2.3. HANDLER Syntax
! 870: 13.2.5. LOAD DATA INFILE Syntax
! 871: */
! 872: mysqli_query($link, "DELETE FROM test");
! 873: if (!mysqli_query($link, "INSERT INTO test(id, label) VALUES (1, 'a'), (2, 'b')"))
! 874: printf("[%03d] Cannot insert new records, [%d] %s\n", ++$test_counter,
! 875: mysqli_errno($link), mysqli_error($link));
! 876:
! 877: if (!$res = mysqli_real_query($link, "SELECT id, label FROM test ORDER BY id"))
! 878: printf("[%03d] Cannot SELECT with mysqli_real_query(), [%d] %s\n", ++$test_counter,
! 879: mysqli_errno($link), mysqli_error($link));
! 880:
! 881: if (!is_object($res = mysqli_use_result($link)))
! 882: printf("[%03d] mysqli_use_result() failed, [%d] %s\n", ++$test_counter,
! 883: mysqli_errno($link), mysqli_error($link));
! 884:
! 885: while ($row = mysqli_fetch_assoc($res))
! 886: ;
! 887: mysqli_free_result($res);
! 888: if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info))
! 889: printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
! 890: ++$test_counter, gettype($new_info), $new_info);
! 891: mysqli_get_client_stats_assert_eq('unbuffered_sets', $new_info, (string)($info['unbuffered_sets'] + 1), $test_counter, 'mysqli_use_result()');
! 892: $info = $new_info;
! 893:
! 894: if (!$res = mysqli_real_query($link, "SELECT id, label FROM test ORDER BY id"))
! 895: printf("[%03d] Cannot SELECT with mysqli_real_query() II, [%d] %s\n", ++$test_counter,
! 896: mysqli_errno($link), mysqli_error($link));
! 897:
! 898: if (!is_object($res = mysqli_store_result($link)))
! 899: printf("[%03d] mysqli_use_result() failed, [%d] %s\n", ++$test_counter,
! 900: mysqli_errno($link), mysqli_error($link));
! 901:
! 902: while ($row = mysqli_fetch_assoc($res))
! 903: ;
! 904: mysqli_free_result($res);
! 905: if (!is_array($new_info = mysqli_get_client_stats()) || empty($new_info))
! 906: printf("[%03d] Expecting array/any_non_empty, got %s/%s\n",
! 907: ++$test_counter, gettype($new_info), $new_info);
! 908: mysqli_get_client_stats_assert_eq('buffered_sets', $new_info, (string)($info['buffered_sets'] + 1), $test_counter, 'mysqli_use_result()');
! 909: $info = $new_info;
! 910:
! 911: mysqli_close($link);
! 912:
! 913: mysqli_get_client_stats_assert_gt('bytes_received_real_data_normal', $info, $expected, $test_counter);
! 914: $expected['bytes_received_real_data_normal'] = $info['bytes_received_real_data_normal'];
! 915: mysqli_get_client_stats_assert_eq('bytes_received_real_data_ps', $info, $expected, $test_counter);
! 916:
! 917: /*
! 918: no_index_used
! 919: bad_index_used
! 920: flushed_normal_sets
! 921: flushed_ps_sets
! 922: explicit_close
! 923: implicit_close
! 924: disconnect_close
! 925: in_middle_of_command_close
! 926: explicit_free_result
! 927: implicit_free_result
! 928: explicit_stmt_close
! 929: implicit_stmt_close
! 930: */
! 931:
! 932: print "done!";
! 933: ?>
! 934: --CLEAN--
! 935: <?php
! 936: require_once("connect.inc");
! 937: if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
! 938: printf("[c001] [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error());
! 939:
! 940: if (!mysqli_query($link, "DROP TABLE IF EXISTS test"))
! 941: printf("[c002] Cannot drop table, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
! 942:
! 943: if (!mysqli_query($link, "DROP TABLE IF EXISTS non_result_set_queries_test"))
! 944: printf("[c003] Cannot drop table, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
! 945:
! 946: if (!mysqli_query($link, "DROP TABLE IF EXISTS client_stats_test"))
! 947: printf("[c004] Cannot drop table, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
! 948:
! 949: if (!mysqli_query($link, "DROP DATABASE IF EXISTS mysqli_get_client_stats_"))
! 950: printf("[c005] Cannot drop table, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
! 951:
! 952: if (!mysqli_query($link, "DROP DATABASE IF EXISTS mysqli_get_client_stats"))
! 953: printf("[c006] Cannot drop table, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
! 954:
! 955: if (!mysqli_query($link, "DROP SERVER IF EXISTS myself"))
! 956: printf("[c007] Cannot drop table, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
! 957:
! 958: mysqli_close($link);
! 959: ?>
! 960: --EXPECTF--
! 961: array(160) {
! 962: [%u|b%"bytes_sent"]=>
! 963: %unicode|string%(1) "0"
! 964: [%u|b%"bytes_received"]=>
! 965: %unicode|string%(1) "0"
! 966: [%u|b%"packets_sent"]=>
! 967: %unicode|string%(1) "0"
! 968: [%u|b%"packets_received"]=>
! 969: %unicode|string%(1) "0"
! 970: [%u|b%"protocol_overhead_in"]=>
! 971: %unicode|string%(1) "0"
! 972: [%u|b%"protocol_overhead_out"]=>
! 973: %unicode|string%(1) "0"
! 974: [%u|b%"bytes_received_ok_packet"]=>
! 975: %unicode|string%(1) "0"
! 976: [%u|b%"bytes_received_eof_packet"]=>
! 977: %unicode|string%(1) "0"
! 978: [%u|b%"bytes_received_rset_header_packet"]=>
! 979: %unicode|string%(1) "0"
! 980: [%u|b%"bytes_received_rset_field_meta_packet"]=>
! 981: %unicode|string%(1) "0"
! 982: [%u|b%"bytes_received_rset_row_packet"]=>
! 983: %unicode|string%(1) "0"
! 984: [%u|b%"bytes_received_prepare_response_packet"]=>
! 985: %unicode|string%(1) "0"
! 986: [%u|b%"bytes_received_change_user_packet"]=>
! 987: %unicode|string%(1) "0"
! 988: [%u|b%"packets_sent_command"]=>
! 989: %unicode|string%(1) "0"
! 990: [%u|b%"packets_received_ok"]=>
! 991: %unicode|string%(1) "0"
! 992: [%u|b%"packets_received_eof"]=>
! 993: %unicode|string%(1) "0"
! 994: [%u|b%"packets_received_rset_header"]=>
! 995: %unicode|string%(1) "0"
! 996: [%u|b%"packets_received_rset_field_meta"]=>
! 997: %unicode|string%(1) "0"
! 998: [%u|b%"packets_received_rset_row"]=>
! 999: %unicode|string%(1) "0"
! 1000: [%u|b%"packets_received_prepare_response"]=>
! 1001: %unicode|string%(1) "0"
! 1002: [%u|b%"packets_received_change_user"]=>
! 1003: %unicode|string%(1) "0"
! 1004: [%u|b%"result_set_queries"]=>
! 1005: %unicode|string%(1) "0"
! 1006: [%u|b%"non_result_set_queries"]=>
! 1007: %unicode|string%(1) "0"
! 1008: [%u|b%"no_index_used"]=>
! 1009: %unicode|string%(1) "0"
! 1010: [%u|b%"bad_index_used"]=>
! 1011: %unicode|string%(1) "0"
! 1012: [%u|b%"slow_queries"]=>
! 1013: %unicode|string%(1) "0"
! 1014: [%u|b%"buffered_sets"]=>
! 1015: %unicode|string%(1) "0"
! 1016: [%u|b%"unbuffered_sets"]=>
! 1017: %unicode|string%(1) "0"
! 1018: [%u|b%"ps_buffered_sets"]=>
! 1019: %unicode|string%(1) "0"
! 1020: [%u|b%"ps_unbuffered_sets"]=>
! 1021: %unicode|string%(1) "0"
! 1022: [%u|b%"flushed_normal_sets"]=>
! 1023: %unicode|string%(1) "0"
! 1024: [%u|b%"flushed_ps_sets"]=>
! 1025: %unicode|string%(1) "0"
! 1026: [%u|b%"ps_prepared_never_executed"]=>
! 1027: %unicode|string%(1) "0"
! 1028: [%u|b%"ps_prepared_once_executed"]=>
! 1029: %unicode|string%(1) "0"
! 1030: [%u|b%"rows_fetched_from_server_normal"]=>
! 1031: %unicode|string%(1) "0"
! 1032: [%u|b%"rows_fetched_from_server_ps"]=>
! 1033: %unicode|string%(1) "0"
! 1034: [%u|b%"rows_buffered_from_client_normal"]=>
! 1035: %unicode|string%(1) "0"
! 1036: [%u|b%"rows_buffered_from_client_ps"]=>
! 1037: %unicode|string%(1) "0"
! 1038: [%u|b%"rows_fetched_from_client_normal_buffered"]=>
! 1039: %unicode|string%(1) "0"
! 1040: [%u|b%"rows_fetched_from_client_normal_unbuffered"]=>
! 1041: %unicode|string%(1) "0"
! 1042: [%u|b%"rows_fetched_from_client_ps_buffered"]=>
! 1043: %unicode|string%(1) "0"
! 1044: [%u|b%"rows_fetched_from_client_ps_unbuffered"]=>
! 1045: %unicode|string%(1) "0"
! 1046: [%u|b%"rows_fetched_from_client_ps_cursor"]=>
! 1047: %unicode|string%(1) "0"
! 1048: [%u|b%"rows_affected_normal"]=>
! 1049: %unicode|string%(1) "0"
! 1050: [%u|b%"rows_affected_ps"]=>
! 1051: %unicode|string%(1) "0"
! 1052: [%u|b%"rows_skipped_normal"]=>
! 1053: %unicode|string%(1) "0"
! 1054: [%u|b%"rows_skipped_ps"]=>
! 1055: %unicode|string%(1) "0"
! 1056: [%u|b%"copy_on_write_saved"]=>
! 1057: %unicode|string%(1) "0"
! 1058: [%u|b%"copy_on_write_performed"]=>
! 1059: %unicode|string%(1) "0"
! 1060: [%u|b%"command_buffer_too_small"]=>
! 1061: %unicode|string%(1) "0"
! 1062: [%u|b%"connect_success"]=>
! 1063: %unicode|string%(1) "0"
! 1064: [%u|b%"connect_failure"]=>
! 1065: %unicode|string%(1) "0"
! 1066: [%u|b%"connection_reused"]=>
! 1067: %unicode|string%(1) "0"
! 1068: [%u|b%"reconnect"]=>
! 1069: %unicode|string%(1) "0"
! 1070: [%u|b%"pconnect_success"]=>
! 1071: %unicode|string%(1) "0"
! 1072: [%u|b%"active_connections"]=>
! 1073: %unicode|string%(1) "0"
! 1074: [%u|b%"active_persistent_connections"]=>
! 1075: %unicode|string%(1) "0"
! 1076: [%u|b%"explicit_close"]=>
! 1077: %unicode|string%(1) "0"
! 1078: [%u|b%"implicit_close"]=>
! 1079: %unicode|string%(1) "0"
! 1080: [%u|b%"disconnect_close"]=>
! 1081: %unicode|string%(1) "0"
! 1082: [%u|b%"in_middle_of_command_close"]=>
! 1083: %unicode|string%(1) "0"
! 1084: [%u|b%"explicit_free_result"]=>
! 1085: %unicode|string%(1) "0"
! 1086: [%u|b%"implicit_free_result"]=>
! 1087: %unicode|string%(1) "0"
! 1088: [%u|b%"explicit_stmt_close"]=>
! 1089: %unicode|string%(1) "0"
! 1090: [%u|b%"implicit_stmt_close"]=>
! 1091: %unicode|string%(1) "0"
! 1092: [%u|b%"mem_emalloc_count"]=>
! 1093: %unicode|string%(1) "0"
! 1094: [%u|b%"mem_emalloc_amount"]=>
! 1095: %unicode|string%(1) "0"
! 1096: [%u|b%"mem_ecalloc_count"]=>
! 1097: %unicode|string%(1) "0"
! 1098: [%u|b%"mem_ecalloc_amount"]=>
! 1099: %unicode|string%(1) "0"
! 1100: [%u|b%"mem_erealloc_count"]=>
! 1101: %unicode|string%(1) "0"
! 1102: [%u|b%"mem_erealloc_amount"]=>
! 1103: %unicode|string%(1) "0"
! 1104: [%u|b%"mem_efree_count"]=>
! 1105: %unicode|string%(1) "0"
! 1106: [%u|b%"mem_efree_amount"]=>
! 1107: %unicode|string%(1) "0"
! 1108: [%u|b%"mem_malloc_count"]=>
! 1109: %unicode|string%(1) "0"
! 1110: [%u|b%"mem_malloc_amount"]=>
! 1111: %unicode|string%(1) "0"
! 1112: [%u|b%"mem_calloc_count"]=>
! 1113: %unicode|string%(%d) "%d"
! 1114: [%u|b%"mem_calloc_amount"]=>
! 1115: %unicode|string%(%d) "%d"
! 1116: [%u|b%"mem_realloc_count"]=>
! 1117: %unicode|string%(1) "0"
! 1118: [%u|b%"mem_realloc_amount"]=>
! 1119: %unicode|string%(1) "0"
! 1120: [%u|b%"mem_free_count"]=>
! 1121: %unicode|string%(1) "0"
! 1122: [%u|b%"mem_free_amount"]=>
! 1123: %unicode|string%(1) "0"
! 1124: [%u|b%"mem_estrndup_count"]=>
! 1125: %unicode|string%(1) "0"
! 1126: [%u|b%"mem_strndup_count"]=>
! 1127: %unicode|string%(1) "0"
! 1128: [%u|b%"mem_estndup_count"]=>
! 1129: %unicode|string%(1) "0"
! 1130: [%u|b%"mem_strdup_count"]=>
! 1131: %unicode|string%(1) "0"
! 1132: [%u|b%"proto_text_fetched_null"]=>
! 1133: %unicode|string%(1) "0"
! 1134: [%u|b%"proto_text_fetched_bit"]=>
! 1135: %unicode|string%(1) "0"
! 1136: [%u|b%"proto_text_fetched_tinyint"]=>
! 1137: %unicode|string%(1) "0"
! 1138: [%u|b%"proto_text_fetched_short"]=>
! 1139: %unicode|string%(1) "0"
! 1140: [%u|b%"proto_text_fetched_int24"]=>
! 1141: %unicode|string%(1) "0"
! 1142: [%u|b%"proto_text_fetched_int"]=>
! 1143: %unicode|string%(1) "0"
! 1144: [%u|b%"proto_text_fetched_bigint"]=>
! 1145: %unicode|string%(1) "0"
! 1146: [%u|b%"proto_text_fetched_decimal"]=>
! 1147: %unicode|string%(1) "0"
! 1148: [%u|b%"proto_text_fetched_float"]=>
! 1149: %unicode|string%(1) "0"
! 1150: [%u|b%"proto_text_fetched_double"]=>
! 1151: %unicode|string%(1) "0"
! 1152: [%u|b%"proto_text_fetched_date"]=>
! 1153: %unicode|string%(1) "0"
! 1154: [%u|b%"proto_text_fetched_year"]=>
! 1155: %unicode|string%(1) "0"
! 1156: [%u|b%"proto_text_fetched_time"]=>
! 1157: %unicode|string%(1) "0"
! 1158: [%u|b%"proto_text_fetched_datetime"]=>
! 1159: %unicode|string%(1) "0"
! 1160: [%u|b%"proto_text_fetched_timestamp"]=>
! 1161: %unicode|string%(1) "0"
! 1162: [%u|b%"proto_text_fetched_string"]=>
! 1163: %unicode|string%(1) "0"
! 1164: [%u|b%"proto_text_fetched_blob"]=>
! 1165: %unicode|string%(1) "0"
! 1166: [%u|b%"proto_text_fetched_enum"]=>
! 1167: %unicode|string%(1) "0"
! 1168: [%u|b%"proto_text_fetched_set"]=>
! 1169: %unicode|string%(1) "0"
! 1170: [%u|b%"proto_text_fetched_geometry"]=>
! 1171: %unicode|string%(1) "0"
! 1172: [%u|b%"proto_text_fetched_other"]=>
! 1173: %unicode|string%(1) "0"
! 1174: [%u|b%"proto_binary_fetched_null"]=>
! 1175: %unicode|string%(1) "0"
! 1176: [%u|b%"proto_binary_fetched_bit"]=>
! 1177: %unicode|string%(1) "0"
! 1178: [%u|b%"proto_binary_fetched_tinyint"]=>
! 1179: %unicode|string%(1) "0"
! 1180: [%u|b%"proto_binary_fetched_short"]=>
! 1181: %unicode|string%(1) "0"
! 1182: [%u|b%"proto_binary_fetched_int24"]=>
! 1183: %unicode|string%(1) "0"
! 1184: [%u|b%"proto_binary_fetched_int"]=>
! 1185: %unicode|string%(1) "0"
! 1186: [%u|b%"proto_binary_fetched_bigint"]=>
! 1187: %unicode|string%(1) "0"
! 1188: [%u|b%"proto_binary_fetched_decimal"]=>
! 1189: %unicode|string%(1) "0"
! 1190: [%u|b%"proto_binary_fetched_float"]=>
! 1191: %unicode|string%(1) "0"
! 1192: [%u|b%"proto_binary_fetched_double"]=>
! 1193: %unicode|string%(1) "0"
! 1194: [%u|b%"proto_binary_fetched_date"]=>
! 1195: %unicode|string%(1) "0"
! 1196: [%u|b%"proto_binary_fetched_year"]=>
! 1197: %unicode|string%(1) "0"
! 1198: [%u|b%"proto_binary_fetched_time"]=>
! 1199: %unicode|string%(1) "0"
! 1200: [%u|b%"proto_binary_fetched_datetime"]=>
! 1201: %unicode|string%(1) "0"
! 1202: [%u|b%"proto_binary_fetched_timestamp"]=>
! 1203: %unicode|string%(1) "0"
! 1204: [%u|b%"proto_binary_fetched_string"]=>
! 1205: %unicode|string%(1) "0"
! 1206: [%u|b%"proto_binary_fetched_blob"]=>
! 1207: %unicode|string%(1) "0"
! 1208: [%u|b%"proto_binary_fetched_enum"]=>
! 1209: %unicode|string%(1) "0"
! 1210: [%u|b%"proto_binary_fetched_set"]=>
! 1211: %unicode|string%(1) "0"
! 1212: [%u|b%"proto_binary_fetched_geometry"]=>
! 1213: %unicode|string%(1) "0"
! 1214: [%u|b%"proto_binary_fetched_other"]=>
! 1215: %unicode|string%(1) "0"
! 1216: [%u|b%"init_command_executed_count"]=>
! 1217: %unicode|string%(1) "0"
! 1218: [%u|b%"init_command_failed_count"]=>
! 1219: %unicode|string%(1) "0"
! 1220: [%u|b%"com_quit"]=>
! 1221: %unicode|string%(1) "0"
! 1222: [%u|b%"com_init_db"]=>
! 1223: %unicode|string%(1) "0"
! 1224: [%u|b%"com_query"]=>
! 1225: %unicode|string%(1) "0"
! 1226: [%u|b%"com_field_list"]=>
! 1227: %unicode|string%(1) "0"
! 1228: [%u|b%"com_create_db"]=>
! 1229: %unicode|string%(1) "0"
! 1230: [%u|b%"com_drop_db"]=>
! 1231: %unicode|string%(1) "0"
! 1232: [%u|b%"com_refresh"]=>
! 1233: %unicode|string%(1) "0"
! 1234: [%u|b%"com_shutdown"]=>
! 1235: %unicode|string%(1) "0"
! 1236: [%u|b%"com_statistics"]=>
! 1237: %unicode|string%(1) "0"
! 1238: [%u|b%"com_process_info"]=>
! 1239: %unicode|string%(1) "0"
! 1240: [%u|b%"com_connect"]=>
! 1241: %unicode|string%(1) "0"
! 1242: [%u|b%"com_process_kill"]=>
! 1243: %unicode|string%(1) "0"
! 1244: [%u|b%"com_debug"]=>
! 1245: %unicode|string%(1) "0"
! 1246: [%u|b%"com_ping"]=>
! 1247: %unicode|string%(1) "0"
! 1248: [%u|b%"com_time"]=>
! 1249: %unicode|string%(1) "0"
! 1250: [%u|b%"com_delayed_insert"]=>
! 1251: %unicode|string%(1) "0"
! 1252: [%u|b%"com_change_user"]=>
! 1253: %unicode|string%(1) "0"
! 1254: [%u|b%"com_binlog_dump"]=>
! 1255: %unicode|string%(1) "0"
! 1256: [%u|b%"com_table_dump"]=>
! 1257: %unicode|string%(1) "0"
! 1258: [%u|b%"com_connect_out"]=>
! 1259: %unicode|string%(1) "0"
! 1260: [%u|b%"com_register_slave"]=>
! 1261: %unicode|string%(1) "0"
! 1262: [%u|b%"com_stmt_prepare"]=>
! 1263: %unicode|string%(1) "0"
! 1264: [%u|b%"com_stmt_execute"]=>
! 1265: %unicode|string%(1) "0"
! 1266: [%u|b%"com_stmt_send_long_data"]=>
! 1267: %unicode|string%(1) "0"
! 1268: [%u|b%"com_stmt_close"]=>
! 1269: %unicode|string%(1) "0"
! 1270: [%u|b%"com_stmt_reset"]=>
! 1271: %unicode|string%(1) "0"
! 1272: [%u|b%"com_stmt_set_option"]=>
! 1273: %unicode|string%(1) "0"
! 1274: [%u|b%"com_stmt_fetch"]=>
! 1275: %unicode|string%(1) "0"
! 1276: [%u|b%"com_deamon"]=>
! 1277: %unicode|string%(1) "0"
! 1278: [%u|b%"bytes_received_real_data_normal"]=>
! 1279: %unicode|string%(1) "0"
! 1280: [%u|b%"bytes_received_real_data_ps"]=>
! 1281: %unicode|string%(1) "0"
! 1282: }
! 1283: Testing buffered normal...
! 1284: Testing buffered normal... - SELECT id, label FROM test
! 1285: Testing unbuffered normal...
! 1286: Testing unbuffered normal... - SELECT id, label FROM test, not all fetched
! 1287: Testing if implicit fetching and cleaning happens...
! 1288: Testing buffered Prepared Statements...
! 1289: Testing buffered Prepared Statements... - fetching all
! 1290: Testing buffered Prepared Statements... - fetching all but one
! 1291: Testing unbuffered Prepared Statements... - fetching all
! 1292: Testing unbuffered Prepared Statements... - fetching all but one
! 1293: ... done with fetch statistics
! 1294: done!
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>