cvs: php-src(PHP_5_3) /ext/mysqlnd mysqlnd_debug.c mysqlnd_enum_n_def.h mysqlnd_ps.c mysqlnd_statistics.c mysqlnd_statistics.h mysqlnd_wireprotocol.c

From: Date: Fri, 12 Sep 2008 15:08:41 +0000
Subject: cvs: php-src(PHP_5_3) /ext/mysqlnd mysqlnd_debug.c mysqlnd_enum_n_def.h mysqlnd_ps.c mysqlnd_statistics.c mysqlnd_statistics.h mysqlnd_wireprotocol.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-53090@lists.php.net to get a copy of this message
andrey Fri Sep 12 15:08:41 2008 UTC Modified files: (Branch: PHP_5_3) /php-src/ext/mysqlnd mysqlnd_debug.c mysqlnd_enum_n_def.h mysqlnd_ps.c mysqlnd_statistics.c mysqlnd_statistics.h mysqlnd_wireprotocol.c Log: MFH: - More statistics - Fixed endless loop - mysqlnd_stmt_next_result() returned FAIL but as it is defined to be 1 (and PASS is 0), checking for mysqlnd_stmt_more_result() was successful although we were expecting a FAIL.

http://cvs.php.net/viewvc.cgi/php-src/ext/mysqlnd/mysqlnd_debug.c?r1=1.1.2.10&r2=1.1.2.11&diff_format=u Index: php-src/ext/mysqlnd/mysqlnd_debug.c diff -u php-src/ext/mysqlnd/mysqlnd_debug.c:1.1.2.10 php-src/ext/mysqlnd/mysqlnd_debug.c:1.1.2.11 --- php-src/ext/mysqlnd/mysqlnd_debug.c:1.1.2.10 Thu Jul 24 19:52:23 2008 +++ php-src/ext/mysqlnd/mysqlnd_debug.c Fri Sep 12 15:08:41 2008 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: mysqlnd_debug.c,v 1.1.2.10 2008/07/24 19:52:23 felipe Exp $ */ +/* $Id: mysqlnd_debug.c,v 1.1.2.11 2008/09/12 15:08:41 andrey Exp $ */ #include "php.h" #include "mysqlnd.h" @@ -683,7 +683,7 @@ DBG_INF_FMT("size=%lu ptr=%p", size, ret); if (MYSQLND_G(collect_memory_statistics)) { - MYSQLND_INC_GLOBAL_STATISTIC2_W_VALUE(STAT_MEM_EMALLOC_COUNT, 1, STAT_MEM_EMALLOC_AMMOUNT, size); + MYSQLND_INC_GLOBAL_STATISTIC_W_VALUE2(STAT_MEM_EMALLOC_COUNT, 1, STAT_MEM_EMALLOC_AMMOUNT, size); } DBG_RETURN(ret); } @@ -710,7 +710,7 @@ if (MYSQLND_G(collect_memory_statistics)) { enum mysqlnd_collected_stats s1 = persistent? STAT_MEM_MALLOC_COUNT:STAT_MEM_EMALLOC_COUNT; enum mysqlnd_collected_stats s2 = persistent? STAT_MEM_MALLOC_AMMOUNT:STAT_MEM_EMALLOC_AMMOUNT; - MYSQLND_INC_GLOBAL_STATISTIC2_W_VALUE(s1, 1, s2, size); + MYSQLND_INC_GLOBAL_STATISTIC_W_VALUE2(s1, 1, s2, size); } DBG_RETURN(ret); @@ -736,7 +736,7 @@ DBG_INF_FMT("after : %lu", zend_memory_usage(FALSE TSRMLS_CC)); DBG_INF_FMT("size=%lu ptr=%p", size, ret); if (MYSQLND_G(collect_memory_statistics)) { - MYSQLND_INC_GLOBAL_STATISTIC2_W_VALUE(STAT_MEM_ECALLOC_COUNT, 1, STAT_MEM_ECALLOC_AMMOUNT, size); + MYSQLND_INC_GLOBAL_STATISTIC_W_VALUE2(STAT_MEM_ECALLOC_COUNT, 1, STAT_MEM_ECALLOC_AMMOUNT, size); } DBG_RETURN(ret); } @@ -763,7 +763,7 @@ if (MYSQLND_G(collect_memory_statistics)) { enum mysqlnd_collected_stats s1 = persistent? STAT_MEM_CALLOC_COUNT:STAT_MEM_ECALLOC_COUNT; enum mysqlnd_collected_stats s2 = persistent? STAT_MEM_CALLOC_AMMOUNT:STAT_MEM_ECALLOC_AMMOUNT; - MYSQLND_INC_GLOBAL_STATISTIC2_W_VALUE(s1, 1, s2, size); + MYSQLND_INC_GLOBAL_STATISTIC_W_VALUE2(s1, 1, s2, size); } DBG_RETURN(ret); @@ -790,7 +790,7 @@ DBG_INF_FMT("after : %lu", zend_memory_usage(FALSE TSRMLS_CC)); DBG_INF_FMT("new_ptr=%p", ret); if (MYSQLND_G(collect_memory_statistics)) { - MYSQLND_INC_GLOBAL_STATISTIC2_W_VALUE(STAT_MEM_EREALLOC_COUNT, 1, STAT_MEM_EREALLOC_AMMOUNT, new_size); + MYSQLND_INC_GLOBAL_STATISTIC_W_VALUE2(STAT_MEM_EREALLOC_COUNT, 1, STAT_MEM_EREALLOC_AMMOUNT, new_size); } DBG_RETURN(ret); } @@ -819,7 +819,7 @@ if (MYSQLND_G(collect_memory_statistics)) { enum mysqlnd_collected_stats s1 = persistent? STAT_MEM_REALLOC_COUNT:STAT_MEM_EREALLOC_COUNT; enum mysqlnd_collected_stats s2 = persistent? STAT_MEM_REALLOC_AMMOUNT:STAT_MEM_EREALLOC_AMMOUNT; - MYSQLND_INC_GLOBAL_STATISTIC2_W_VALUE(s1, 1, s2, new_size); + MYSQLND_INC_GLOBAL_STATISTIC_W_VALUE2(s1, 1, s2, new_size); } DBG_RETURN(ret); } @@ -881,7 +881,7 @@ DBG_INF_FMT("size=%lu ptr=%p", size, ret); if (MYSQLND_G(collect_memory_statistics)) { - MYSQLND_INC_GLOBAL_STATISTIC2_W_VALUE(STAT_MEM_MALLOC_COUNT, 1, STAT_MEM_MALLOC_AMMOUNT, size); + MYSQLND_INC_GLOBAL_STATISTIC_W_VALUE2(STAT_MEM_MALLOC_COUNT, 1, STAT_MEM_MALLOC_AMMOUNT, size); } DBG_RETURN(ret); } @@ -899,7 +899,7 @@ DBG_INF_FMT("size=%lu ptr=%p", size, ret); if (MYSQLND_G(collect_memory_statistics)) { - MYSQLND_INC_GLOBAL_STATISTIC2_W_VALUE(STAT_MEM_CALLOC_COUNT, 1, STAT_MEM_CALLOC_AMMOUNT, size); + MYSQLND_INC_GLOBAL_STATISTIC_W_VALUE2(STAT_MEM_CALLOC_COUNT, 1, STAT_MEM_CALLOC_AMMOUNT, size); } DBG_RETURN(ret); } @@ -920,7 +920,7 @@ DBG_INF_FMT("new_ptr=%p", ret); if (MYSQLND_G(collect_memory_statistics)) { - MYSQLND_INC_GLOBAL_STATISTIC2_W_VALUE(STAT_MEM_REALLOC_COUNT, 1, STAT_MEM_REALLOC_AMMOUNT, new_size); + MYSQLND_INC_GLOBAL_STATISTIC_W_VALUE2(STAT_MEM_REALLOC_COUNT, 1, STAT_MEM_REALLOC_AMMOUNT, new_size); } DBG_RETURN(ret); } http://cvs.php.net/viewvc.cgi/php-src/ext/mysqlnd/mysqlnd_enum_n_def.h?r1=1.2.2.9&r2=1.2.2.10&diff_format=u Index: php-src/ext/mysqlnd/mysqlnd_enum_n_def.h diff -u php-src/ext/mysqlnd/mysqlnd_enum_n_def.h:1.2.2.9 php-src/ext/mysqlnd/mysqlnd_enum_n_def.h:1.2.2.10 --- php-src/ext/mysqlnd/mysqlnd_enum_n_def.h:1.2.2.9 Wed May 7 15:14:26 2008 +++ php-src/ext/mysqlnd/mysqlnd_enum_n_def.h Fri Sep 12 15:08:41 2008 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: mysqlnd_enum_n_def.h,v 1.2.2.9 2008/05/07 15:14:26 andrey Exp $ */ +/* $Id: mysqlnd_enum_n_def.h,v 1.2.2.10 2008/09/12 15:08:41 andrey Exp $ */ #ifndef MYSQLND_ENUM_N_DEF_H #define MYSQLND_ENUM_N_DEF_H @@ -303,6 +303,7 @@ MYSQLND_CLOSE_LAST /* for checking, should always be last */ } enum_connection_close_type; + typedef enum mysqlnd_collected_stats { STAT_BYTES_SENT, @@ -311,6 +312,21 @@ STAT_PACKETS_RECEIVED, STAT_PROTOCOL_OVERHEAD_IN, STAT_PROTOCOL_OVERHEAD_OUT, + STAT_BYTES_RECEIVED_OK, + STAT_BYTES_RECEIVED_EOF, + STAT_BYTES_RECEIVED_RSET_HEADER, + STAT_BYTES_RECEIVED_RSET_FIELD_META, + STAT_BYTES_RECEIVED_RSET_ROW, + STAT_BYTES_RECEIVED_PREPARE_RESPONSE, + STAT_BYTES_RECEIVED_CHANGE_USER, + STAT_PACKETS_SENT_CMD, + STAT_PACKETS_RECEIVED_OK, + STAT_PACKETS_RECEIVED_EOF, + STAT_PACKETS_RECEIVED_RSET_HEADER, + STAT_PACKETS_RECEIVED_RSET_FIELD_META, + STAT_PACKETS_RECEIVED_RSET_ROW, + STAT_PACKETS_RECEIVED_PREPARE_RESPONSE, + STAT_PACKETS_RECEIVED_CHANGE_USER, STAT_RSET_QUERY, STAT_NON_RSET_QUERY, STAT_NO_INDEX_USED, @@ -367,6 +383,48 @@ STAT_MEM_REALLOC_COUNT, STAT_MEM_REALLOC_AMMOUNT, STAT_MEM_FREE_COUNT, + STAT_TEXT_TYPE_FETCHED_NULL, + STAT_TEXT_TYPE_FETCHED_BIT, + STAT_TEXT_TYPE_FETCHED_INT8, + STAT_TEXT_TYPE_FETCHED_INT16, + STAT_TEXT_TYPE_FETCHED_INT24, + STAT_TEXT_TYPE_FETCHED_INT32, + STAT_TEXT_TYPE_FETCHED_INT64, + STAT_TEXT_TYPE_FETCHED_DECIMAL, + STAT_TEXT_TYPE_FETCHED_FLOAT, + STAT_TEXT_TYPE_FETCHED_DOUBLE, + STAT_TEXT_TYPE_FETCHED_DATE, + STAT_TEXT_TYPE_FETCHED_YEAR, + STAT_TEXT_TYPE_FETCHED_TIME, + STAT_TEXT_TYPE_FETCHED_DATETIME, + STAT_TEXT_TYPE_FETCHED_TIMESTAMP, + STAT_TEXT_TYPE_FETCHED_STRING, + STAT_TEXT_TYPE_FETCHED_BLOB, + STAT_TEXT_TYPE_FETCHED_ENUM, + STAT_TEXT_TYPE_FETCHED_SET, + STAT_TEXT_TYPE_FETCHED_GEOMETRY, + STAT_TEXT_TYPE_FETCHED_OTHER, + STAT_BINARY_TYPE_FETCHED_NULL, + STAT_BINARY_TYPE_FETCHED_BIT, + STAT_BINARY_TYPE_FETCHED_INT8, + STAT_BINARY_TYPE_FETCHED_INT16, + STAT_BINARY_TYPE_FETCHED_INT24, + STAT_BINARY_TYPE_FETCHED_INT32, + STAT_BINARY_TYPE_FETCHED_INT64, + STAT_BINARY_TYPE_FETCHED_DECIMAL, + STAT_BINARY_TYPE_FETCHED_FLOAT, + STAT_BINARY_TYPE_FETCHED_DOUBLE, + STAT_BINARY_TYPE_FETCHED_DATE, + STAT_BINARY_TYPE_FETCHED_YEAR, + STAT_BINARY_TYPE_FETCHED_TIME, + STAT_BINARY_TYPE_FETCHED_DATETIME, + STAT_BINARY_TYPE_FETCHED_TIMESTAMP, + STAT_BINARY_TYPE_FETCHED_STRING, + STAT_BINARY_TYPE_FETCHED_BLOB, + STAT_BINARY_TYPE_FETCHED_ENUM, + STAT_BINARY_TYPE_FETCHED_SET, + STAT_BINARY_TYPE_FETCHED_GEOMETRY, + STAT_BINARY_TYPE_FETCHED_OTHER, STAT_LAST /* Should be always the last */ } enum_mysqlnd_collected_stats; http://cvs.php.net/viewvc.cgi/php-src/ext/mysqlnd/mysqlnd_ps.c?r1=1.3.2.16&r2=1.3.2.17&diff_format=u Index: php-src/ext/mysqlnd/mysqlnd_ps.c diff -u php-src/ext/mysqlnd/mysqlnd_ps.c:1.3.2.16 php-src/ext/mysqlnd/mysqlnd_ps.c:1.3.2.17 --- php-src/ext/mysqlnd/mysqlnd_ps.c:1.3.2.16 Wed Jul 23 14:07:38 2008 +++ php-src/ext/mysqlnd/mysqlnd_ps.c Fri Sep 12 15:08:41 2008 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: mysqlnd_ps.c,v 1.3.2.16 2008/07/23 14:07:38 andrey Exp $ */ +/* $Id: mysqlnd_ps.c,v 1.3.2.17 2008/09/12 15:08:41 andrey Exp $ */ #include "php.h" #include "mysqlnd.h" #include "mysqlnd_wireprotocol.h" @@ -2009,7 +2009,7 @@ DBG_INF("skipping result"); stmt->result->m.skip_result(stmt->result TSRMLS_CC); } - } while (mysqlnd_stmt_more_results(stmt) && mysqlnd_stmt_next_result(stmt)); + } while (mysqlnd_stmt_more_results(stmt) && mysqlnd_stmt_next_result(stmt) == PASS); /* After this point we are allowed to free the result set, as we have cleaned the line http://cvs.php.net/viewvc.cgi/php-src/ext/mysqlnd/mysqlnd_statistics.c?r1=1.2.2.6&r2=1.2.2.7&diff_format=u Index: php-src/ext/mysqlnd/mysqlnd_statistics.c diff -u php-src/ext/mysqlnd/mysqlnd_statistics.c:1.2.2.6 php-src/ext/mysqlnd/mysqlnd_statistics.c:1.2.2.7 --- php-src/ext/mysqlnd/mysqlnd_statistics.c:1.2.2.6 Wed May 7 15:14:26 2008 +++ php-src/ext/mysqlnd/mysqlnd_statistics.c Fri Sep 12 15:08:41 2008 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: mysqlnd_statistics.c,v 1.2.2.6 2008/05/07 15:14:26 andrey Exp $ */ +/* $Id: mysqlnd_statistics.c,v 1.2.2.7 2008/09/12 15:08:41 andrey Exp $ */ #include "php.h" #include "mysqlnd.h" #include "mysqlnd_priv.h" @@ -30,6 +30,7 @@ /* {{{ mysqlnd_stats_values_names */ + const MYSQLND_STRING mysqlnd_stats_values_names[STAT_LAST] = { { STR_W_LEN("bytes_sent") }, @@ -38,6 +39,21 @@ { STR_W_LEN("packets_received") }, { STR_W_LEN("protocol_overhead_in") }, { STR_W_LEN("protocol_overhead_out") }, + { STR_W_LEN("bytes_received_ok_packet") }, + { STR_W_LEN("bytes_received_eof_packet") }, + { STR_W_LEN("bytes_received_rset_header_packet") }, + { STR_W_LEN("bytes_received_rset_field_meta_packet") }, + { STR_W_LEN("bytes_received_rset_row_packet") }, + { STR_W_LEN("bytes_received_prepare_response_packet") }, + { STR_W_LEN("bytes_received_change_user_packet") }, + { STR_W_LEN("packets_sent_command") }, + { STR_W_LEN("packets_received_ok") }, + { STR_W_LEN("packets_received_eof") }, + { STR_W_LEN("packets_received_rset_header") }, + { STR_W_LEN("packets_received_rset_field_meta") }, + { STR_W_LEN("packets_received_rset_row") }, + { STR_W_LEN("packets_received_prepare_response") }, + { STR_W_LEN("packets_received_change_user") }, { STR_W_LEN("result_set_queries") }, { STR_W_LEN("non_result_set_queries") }, { STR_W_LEN("no_index_used") }, @@ -93,7 +109,49 @@ { STR_W_LEN("mem_calloc_ammount") }, { STR_W_LEN("mem_realloc_calloc") }, { STR_W_LEN("mem_realloc_ammount") }, - { STR_W_LEN("mem_free_count") } + { STR_W_LEN("mem_free_count") }, + { STR_W_LEN("proto_text_fetched_null") }, + { STR_W_LEN("proto_text_fetched_bit") }, + { STR_W_LEN("proto_text_fetched_tinyint") }, + { STR_W_LEN("proto_text_fetched_short") }, + { STR_W_LEN("proto_text_fetched_int24") }, + { STR_W_LEN("proto_text_fetched_int") }, + { STR_W_LEN("proto_text_fetched_bigint") }, + { STR_W_LEN("proto_text_fetched_decimal") }, + { STR_W_LEN("proto_text_fetched_float") }, + { STR_W_LEN("proto_text_fetched_double") }, + { STR_W_LEN("proto_text_fetched_date") }, + { STR_W_LEN("proto_text_fetched_year") }, + { STR_W_LEN("proto_text_fetched_time") }, + { STR_W_LEN("proto_text_fetched_datetime") }, + { STR_W_LEN("proto_text_fetched_timestamp") }, + { STR_W_LEN("proto_text_fetched_string") }, + { STR_W_LEN("proto_text_fetched_blob") }, + { STR_W_LEN("proto_text_fetched_enum") }, + { STR_W_LEN("proto_text_fetched_set") }, + { STR_W_LEN("proto_text_fetched_geometry") }, + { STR_W_LEN("proto_text_fetched_other") }, + { STR_W_LEN("proto_binary_fetched_null") }, + { STR_W_LEN("proto_binary_fetched_bit") }, + { STR_W_LEN("proto_binary_fetched_tinyint") }, + { STR_W_LEN("proto_binary_fetched_short") }, + { STR_W_LEN("proto_binary_fetched_int24") }, + { STR_W_LEN("proto_binary_fetched_int") }, + { STR_W_LEN("proto_binary_fetched_bigint") }, + { STR_W_LEN("proto_binary_fetched_decimal") }, + { STR_W_LEN("proto_binary_fetched_float") }, + { STR_W_LEN("proto_binary_fetched_double") }, + { STR_W_LEN("proto_binary_fetched_date") }, + { STR_W_LEN("proto_binary_fetched_year") }, + { STR_W_LEN("proto_binary_fetched_time") }, + { STR_W_LEN("proto_binary_fetched_datetime") }, + { STR_W_LEN("proto_binary_fetched_timestamp") }, + { STR_W_LEN("proto_binary_fetched_string") }, + { STR_W_LEN("proto_binary_fetched_blob") }, + { STR_W_LEN("proto_binary_fetched_enum") }, + { STR_W_LEN("proto_binary_fetched_set") }, + { STR_W_LEN("proto_binary_fetched_geometry") }, + { STR_W_LEN("proto_binary_fetched_other") } }; /* }}} */ http://cvs.php.net/viewvc.cgi/php-src/ext/mysqlnd/mysqlnd_statistics.h?r1=1.4.2.7&r2=1.4.2.8&diff_format=u Index: php-src/ext/mysqlnd/mysqlnd_statistics.h diff -u php-src/ext/mysqlnd/mysqlnd_statistics.h:1.4.2.7 php-src/ext/mysqlnd/mysqlnd_statistics.h:1.4.2.8 --- php-src/ext/mysqlnd/mysqlnd_statistics.h:1.4.2.7 Tue Jan 29 11:59:53 2008 +++ php-src/ext/mysqlnd/mysqlnd_statistics.h Fri Sep 12 15:08:41 2008 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: mysqlnd_statistics.h,v 1.4.2.7 2008/01/29 11:59:53 andrey Exp $ */ +/* $Id: mysqlnd_statistics.h,v 1.4.2.8 2008/09/12 15:08:41 andrey Exp $ */ #ifndef MYSQLND_STATISTICS_H #define MYSQLND_STATISTICS_H @@ -38,7 +38,7 @@ #define MYSQLND_INC_GLOBAL_STATISTIC(statistic) \ { \ - if (MYSQLND_G(collect_statistics)) { \ + if (MYSQLND_G(collect_statistics) && statistic != STAT_LAST) { \ DBG_INF_FMT("Global stat increase [%s]", mysqlnd_stats_values_names[statistic]); \ tsrm_mutex_lock(mysqlnd_global_stats->LOCK_access); \ mysqlnd_global_stats->values[(statistic)]++; \ @@ -46,33 +46,36 @@ }\ } -#define MYSQLND_INC_GLOBAL_STATISTIC2_W_VALUE(statistic1, value1, statistic2, value2) \ +#define MYSQLND_DEC_CONN_STATISTIC(conn_stats, statistic) \ { \ - if (MYSQLND_G(collect_statistics)) { \ - DBG_INF_FMT("Global stats increase w value [%s] [%s]", mysqlnd_stats_values_names[statistic1], mysqlnd_stats_values_names[statistic2]); \ + if (MYSQLND_G(collect_statistics) && statistic != STAT_LAST) { \ + DBG_INF_FMT("Global&conn stat decrease [%s]", mysqlnd_stats_values_names[statistic]); \ tsrm_mutex_lock(mysqlnd_global_stats->LOCK_access); \ - mysqlnd_global_stats->values[(statistic1)] += (value1); \ - mysqlnd_global_stats->values[(statistic2)] += (value2); \ + mysqlnd_global_stats->values[(statistic)]--; \ tsrm_mutex_unlock(mysqlnd_global_stats->LOCK_access); \ + if ((conn_stats)) { \ + ((MYSQLND_STATS *) conn_stats)->values[(statistic)]--; \ + } \ }\ } -#define MYSQLND_DEC_CONN_STATISTIC(conn_stats, statistic) \ +#define MYSQLND_INC_GLOBAL_STATISTIC_W_VALUE2(statistic1, value1, statistic2, value2) \ { \ if (MYSQLND_G(collect_statistics)) { \ - DBG_INF_FMT("Global&conn stat decrease [%s]", mysqlnd_stats_values_names[statistic]); \ + DBG_INF_FMT("Global stat increase [%s] [%s]", mysqlnd_stats_values_names[statistic1], mysqlnd_stats_values_names[statistic2]); \ + uint64 v1 = (uint64) (value1); \ + uint64 v2 = (uint64) (value2); \ + \ tsrm_mutex_lock(mysqlnd_global_stats->LOCK_access); \ - mysqlnd_global_stats->values[(statistic)]--; \ + if (statistic1 != STAT_LAST) mysqlnd_global_stats->values[(statistic1)]+= v1; \ + if (statistic2 != STAT_LAST) mysqlnd_global_stats->values[(statistic2)]+= v2; \ tsrm_mutex_unlock(mysqlnd_global_stats->LOCK_access); \ - if ((conn_stats)) { \ - ((MYSQLND_STATS *) conn_stats)->values[(statistic)]--; \ - } \ }\ } #define MYSQLND_INC_CONN_STATISTIC(conn_stats, statistic) \ { \ - if (MYSQLND_G(collect_statistics)) { \ + if (MYSQLND_G(collect_statistics) && statistic != STAT_LAST) { \ DBG_INF_FMT("Global&Conn stat increase [%s]", mysqlnd_stats_values_names[statistic]); \ tsrm_mutex_lock(mysqlnd_global_stats->LOCK_access); \ mysqlnd_global_stats->values[(statistic)]++; \ @@ -85,7 +88,7 @@ #define MYSQLND_INC_CONN_STATISTIC_W_VALUE(conn_stats, statistic, value) \ { \ - if (MYSQLND_G(collect_statistics)) { \ + if (MYSQLND_G(collect_statistics) && statistic != STAT_LAST) { \ uint64 v = (uint64) (value); \ DBG_INF_FMT("Global&Conn stat increase w value [%s]", mysqlnd_stats_values_names[statistic]); \ tsrm_mutex_lock(mysqlnd_global_stats->LOCK_access); \ @@ -97,22 +100,40 @@ }\ } -#define MYSQLND_INC_CONN_STATISTIC_W_VALUE3(conn_stats, statistic1, value1, statistic2, value2, statistic3, value3) \ +#define MYSQLND_INC_CONN_STATISTIC_W_VALUE2(conn_stats, statistic1, value1, statistic2, value2) \ { \ if (MYSQLND_G(collect_statistics)) { \ uint64 v1 = (uint64) (value1); \ uint64 v2 = (uint64) (value2); \ - uint64 v3 = (uint64) (value3); \ \ tsrm_mutex_lock(mysqlnd_global_stats->LOCK_access); \ - mysqlnd_global_stats->values[(statistic1)]+= v1; \ - mysqlnd_global_stats->values[(statistic2)]+= v2; \ - mysqlnd_global_stats->values[(statistic3)]+= v3; \ + if (statistic1 != STAT_LAST) mysqlnd_global_stats->values[(statistic1)]+= v1; \ + if (statistic2 != STAT_LAST) mysqlnd_global_stats->values[(statistic2)]+= v2; \ tsrm_mutex_unlock(mysqlnd_global_stats->LOCK_access); \ if ((conn_stats)) { \ ((MYSQLND_STATS *) conn_stats)->values[(statistic1)]+= v1; \ ((MYSQLND_STATS *) conn_stats)->values[(statistic2)]+= v2; \ - ((MYSQLND_STATS *) conn_stats)->values[(statistic3)]+= v3; \ + } \ + } \ + } + + +#define MYSQLND_INC_CONN_STATISTIC_W_VALUE3(conn_stats, statistic1, value1, statistic2, value2, statistic3, value3) \ + { \ + if (MYSQLND_G(collect_statistics)) { \ + uint64 v1 = (uint64) (value1); \ + uint64 v2 = (uint64) (value2); \ + uint64 v3 = (uint64) (value3); \ + \ + tsrm_mutex_lock(mysqlnd_global_stats->LOCK_access); \ + if (statistic1 != STAT_LAST) mysqlnd_global_stats->values[(statistic1)]+= v1; \ + if (statistic2 != STAT_LAST) mysqlnd_global_stats->values[(statistic2)]+= v2; \ + if (statistic3 != STAT_LAST) mysqlnd_global_stats->values[(statistic3)]+= v3; \ + tsrm_mutex_unlock(mysqlnd_global_stats->LOCK_access); \ + if ((conn_stats)) { \ + if (statistic1 != STAT_LAST) ((MYSQLND_STATS *) conn_stats)->values[(statistic1)]+= v1; \ + if (statistic2 != STAT_LAST) ((MYSQLND_STATS *) conn_stats)->values[(statistic2)]+= v2; \ + if (statistic3 != STAT_LAST) ((MYSQLND_STATS *) conn_stats)->values[(statistic3)]+= v3; \ } \ } \ } @@ -122,26 +143,16 @@ #define MYSQLND_INC_GLOBAL_STATISTIC(statistic) \ { \ - if (MYSQLND_G(collect_statistics)) { \ + if (MYSQLND_G(collect_statistics) && statistic != STAT_LAST) { \ DBG_INF_FMT("Global stat increase [%s]", mysqlnd_stats_values_names[statistic]); \ mysqlnd_global_stats->values[(statistic)]++; \ } \ } -#define MYSQLND_INC_GLOBAL_STATISTIC2_W_VALUE(statistic1, value1, statistic2, value2) \ - { \ - if (MYSQLND_G(collect_statistics)) { \ - DBG_INF_FMT("Global stats increase w value [%s] [%s]", \ - mysqlnd_stats_values_names[statistic1], mysqlnd_stats_values_names[statistic2]); \ - mysqlnd_global_stats->values[(statistic1)] += (value1); \ - mysqlnd_global_stats->values[(statistic2)] += (value2); \ - }\ - } - #define MYSQLND_DEC_CONN_STATISTIC(conn_stats, statistic) \ { \ - if (MYSQLND_G(collect_statistics)) { \ + if (MYSQLND_G(collect_statistics) && statistic != STAT_LAST) { \ DBG_INF_FMT("Global&Conn stat decrease [%s]", mysqlnd_stats_values_names[statistic]); \ mysqlnd_global_stats->values[(statistic)]--; \ if ((conn_stats)) { \ @@ -150,9 +161,21 @@ } \ } -#define MYSQLND_INC_CONN_STATISTIC(conn_stats, statistic) \ +#define MYSQLND_INC_GLOBAL_STATISTIC_W_VALUE2(statistic1, value1, statistic2, value2) \ { \ if (MYSQLND_G(collect_statistics)) { \ + DBG_INF_FMT("Global stat increase [%s] [%s]", mysqlnd_stats_values_names[statistic1], mysqlnd_stats_values_names[statistic2]); \ + uint64 v1 = (uint64) (value1); \ + uint64 v2 = (uint64) (value2); \ + \ + if (statistic1 != STAT_LAST) mysqlnd_global_stats->values[(statistic1)]+= v1; \ + if (statistic2 != STAT_LAST) mysqlnd_global_stats->values[(statistic2)]+= v2; \ + }\ + } + +#define MYSQLND_INC_CONN_STATISTIC(conn_stats, statistic) \ + { \ + if (MYSQLND_G(collect_statistics) && statistic != STAT_LAST) { \ DBG_INF_FMT("Global&Conn stat increase [%s]", mysqlnd_stats_values_names[statistic]); \ mysqlnd_global_stats->values[(statistic)]++; \ if ((conn_stats)) { \ @@ -163,9 +186,9 @@ #define MYSQLND_INC_CONN_STATISTIC_W_VALUE(conn_stats, statistic, value) \ { \ - uint64 v = (uint64) (value); \ - DBG_INF_FMT("Global&Conn stats increase w value [%s]", mysqlnd_stats_values_names[statistic]); \ - if (MYSQLND_G(collect_statistics)) { \ + if (MYSQLND_G(collect_statistics) && statistic != STAT_LAST) { \ + uint64 v = (uint64) (value); \ + DBG_INF_FMT("Global&Conn stats increase w value [%s]", mysqlnd_stats_values_names[statistic]); \ mysqlnd_global_stats->values[(statistic)] += v; \ if ((conn_stats)) { \ ((MYSQLND_STATS *) conn_stats)->values[(statistic)] += v; \ @@ -173,20 +196,35 @@ } \ } -#define MYSQLND_INC_CONN_STATISTIC_W_VALUE3(conn_stats, statistic1, value1, statistic2, value2, statistic3, value3) \ +#define MYSQLND_INC_CONN_STATISTIC_W_VALUE2(conn_stats, statistic1, value1, statistic2, value2) \ { \ if (MYSQLND_G(collect_statistics)) { \ uint64 v1 = (uint64) (value1); \ uint64 v2 = (uint64) (value2); \ - uint64 v3 = (uint64) (value3); \ - \ - mysqlnd_global_stats->values[(statistic1)]+= v1; \ - mysqlnd_global_stats->values[(statistic2)]+= v2; \ - mysqlnd_global_stats->values[(statistic3)]+= v3; \ + \ + if (statistic1 != STAT_LAST) mysqlnd_global_stats->values[(statistic1)]+= v1; \ + if (statistic2 != STAT_LAST) mysqlnd_global_stats->values[(statistic2)]+= v2; \ if ((conn_stats)) { \ ((MYSQLND_STATS *) conn_stats)->values[(statistic1)]+= v1; \ ((MYSQLND_STATS *) conn_stats)->values[(statistic2)]+= v2; \ - ((MYSQLND_STATS *) conn_stats)->values[(statistic3)]+= v3; \ + } \ + } \ + } + +#define MYSQLND_INC_CONN_STATISTIC_W_VALUE3(conn_stats, statistic1, value1, statistic2, value2, statistic3, value3) \ + { \ + if (MYSQLND_G(collect_statistics)) { \ + uint64 v1 = (uint64) (value1); \ + uint64 v2 = (uint64) (value2); \ + uint64 v3 = (uint64) (value3); \ + \ + if (statistic1 != STAT_LAST) mysqlnd_global_stats->values[(statistic1)]+= v1; \ + if (statistic2 != STAT_LAST) mysqlnd_global_stats->values[(statistic2)]+= v2; \ + if (statistic3 != STAT_LAST) mysqlnd_global_stats->values[(statistic3)]+= v3; \ + if ((conn_stats)) { \ + if (statistic1 != STAT_LAST) ((MYSQLND_STATS *) conn_stats)->values[(statistic1)]+= v1; \ + if (statistic2 != STAT_LAST) ((MYSQLND_STATS *) conn_stats)->values[(statistic2)]+= v2; \ + if (statistic3 != STAT_LAST) ((MYSQLND_STATS *) conn_stats)->values[(statistic3)]+= v3; \ } \ } \ } http://cvs.php.net/viewvc.cgi/php-src/ext/mysqlnd/mysqlnd_wireprotocol.c?r1=1.4.2.16&r2=1.4.2.17&diff_format=u Index: php-src/ext/mysqlnd/mysqlnd_wireprotocol.c diff -u php-src/ext/mysqlnd/mysqlnd_wireprotocol.c:1.4.2.16 php-src/ext/mysqlnd/mysqlnd_wireprotocol.c:1.4.2.17 --- php-src/ext/mysqlnd/mysqlnd_wireprotocol.c:1.4.2.16 Tue Jul 22 16:06:08 2008 +++ php-src/ext/mysqlnd/mysqlnd_wireprotocol.c Fri Sep 12 15:08:41 2008 @@ -44,13 +44,13 @@ #define MYSQLND_DUMP_HEADER_N_BODY_FULL2 -#define PACKET_READ_HEADER_AND_BODY(packet, conn, buf, buf_size, packet_type) \ +#define PACKET_READ_HEADER_AND_BODY(packet, conn, buf, buf_size, packet_type_as_text, packet_type) \ { \ if (FAIL == mysqlnd_read_header((conn), &((packet)->header) TSRMLS_CC)) {\ CONN_SET_STATE(conn, CONN_QUIT_SENT); \ SET_CLIENT_ERROR(conn->error_info, CR_SERVER_GONE_ERROR, UNKNOWN_SQLSTATE, mysqlnd_server_gone);\ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", mysqlnd_server_gone); \ - DBG_ERR_FMT("Can't read %s's header", (packet_type)); \ + DBG_ERR_FMT("Can't read %s's header", (packet_type_as_text)); \ DBG_RETURN(FAIL);\ }\ if ((buf_size) < (packet)->header.size) { \ @@ -62,9 +62,13 @@ CONN_SET_STATE(conn, CONN_QUIT_SENT); \ SET_CLIENT_ERROR(conn->error_info, CR_SERVER_GONE_ERROR, UNKNOWN_SQLSTATE, mysqlnd_server_gone);\ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", mysqlnd_server_gone); \ - DBG_ERR_FMT("Empty %s packet body", (packet_type)); \ + DBG_ERR_FMT("Empty %s packet body", (packet_type_as_text)); \ DBG_RETURN(FAIL);\ } \ + MYSQLND_INC_CONN_STATISTIC_W_VALUE2(&conn->stats, packet_type_to_statistic_byte_count[packet_type], \ + MYSQLND_HEADER_SIZE + (packet)->header.size, \ + packet_type_to_statistic_packet_count[packet_type], \ + 1); \ } @@ -76,7 +80,7 @@ /* Used in mysqlnd_debug.c */ char * mysqlnd_read_header_name = "mysqlnd_read_header"; -char * mysqlnd_read_body_name = "mysqlnd_read_body"; +char * mysqlnd_read_body_name = "mysqlnd_read_body"; /* {{{ mysqlnd_command_to_text @@ -94,6 +98,36 @@ /* }}} */ + +static enum_mysqlnd_collected_stats packet_type_to_statistic_byte_count[PROT_LAST] = +{ + STAT_LAST, + STAT_LAST, + STAT_BYTES_RECEIVED_OK, + STAT_BYTES_RECEIVED_EOF, + STAT_LAST, + STAT_BYTES_RECEIVED_RSET_HEADER, + STAT_BYTES_RECEIVED_RSET_FIELD_META, + STAT_BYTES_RECEIVED_RSET_ROW, + STAT_BYTES_RECEIVED_PREPARE_RESPONSE, + STAT_BYTES_RECEIVED_CHANGE_USER, +}; + +static enum_mysqlnd_collected_stats packet_type_to_statistic_packet_count[PROT_LAST] = +{ + STAT_LAST, + STAT_LAST, + STAT_PACKETS_RECEIVED_OK, + STAT_PACKETS_RECEIVED_EOF, + STAT_LAST, + STAT_PACKETS_RECEIVED_RSET_HEADER, + STAT_PACKETS_RECEIVED_RSET_FIELD_META, + STAT_PACKETS_RECEIVED_RSET_ROW, + STAT_PACKETS_RECEIVED_PREPARE_RESPONSE, + STAT_PACKETS_RECEIVED_CHANGE_USER, +}; + + /* {{{ php_mysqlnd_net_field_length Get next field's length */ unsigned long php_mysqlnd_net_field_length(zend_uchar **packet) @@ -313,7 +347,7 @@ while (left > MYSQLND_MAX_PACKET_SIZE) { STORE_HEADER_SIZE(safe_storage, p); int3store(p, MYSQLND_MAX_PACKET_SIZE); - int1store(p + 3, net->packet_no); + int1store(p + 3, net->packet_no); net->packet_no++; ret = php_stream_write(net->stream, (char *)p, MYSQLND_MAX_PACKET_SIZE + MYSQLND_HEADER_SIZE); RESTORE_HEADER_SIZE(p, safe_storage); @@ -326,7 +360,7 @@ /* Even for zero size payload we have to send a packet */ STORE_HEADER_SIZE(safe_storage, p); int3store(p, left); - int1store(p + 3, net->packet_no); + int1store(p + 3, net->packet_no); net->packet_no++; ret = php_stream_write(net->stream, (char *)p, left + MYSQLND_HEADER_SIZE); RESTORE_HEADER_SIZE(p, safe_storage); @@ -335,7 +369,7 @@ DBG_ERR_FMT("Can't %u send bytes", count); conn->state = CONN_QUIT_SENT; SET_CLIENT_ERROR(conn->error_info, CR_SERVER_GONE_ERROR, UNKNOWN_SQLSTATE, mysqlnd_server_gone); - } + } MYSQLND_INC_CONN_STATISTIC_W_VALUE3(&conn->stats, STAT_BYTES_SENT, count + packets_sent * MYSQLND_HEADER_SIZE, @@ -371,12 +405,12 @@ setsockopt(((php_netstream_data_t*)net->stream->abstract)->socket, IPPROTO_TCP, TCP_CORK, &corked, sizeof(corked)); - int1store(safe_storage + MYSQLND_HEADER_SIZE, command); + int1store(safe_storage + MYSQLND_HEADER_SIZE, command); while (left > MYSQLND_MAX_PACKET_SIZE) { size_t body_size = MYSQLND_MAX_PACKET_SIZE; int3store(safe_storage, MYSQLND_MAX_PACKET_SIZE); - int1store(safe_storage + 3, net->packet_no); + int1store(safe_storage + 3, net->packet_no); net->packet_no++; ret = php_stream_write(net->stream, (char *)safe_storage, header_len); @@ -534,7 +568,7 @@ DBG_ENTER("php_mysqlnd_greet_read"); - PACKET_READ_HEADER_AND_BODY(packet, conn, buf, sizeof(buf), "greeting"); + PACKET_READ_HEADER_AND_BODY(packet, conn, buf, sizeof(buf), "greeting", PROT_GREET_PACKET); packet->protocol_version = uint1korr(p); p++; @@ -551,7 +585,7 @@ */ if (packet->error_no == 1040) { memcpy(packet->sqlstate, "08004", MYSQLND_SQLSTATE_LENGTH); - } + } DBG_RETURN(PASS); } @@ -582,7 +616,7 @@ if (p - buf < packet->header.size) { /* scramble_buf is split into two parts */ memcpy(packet->scramble_buf + SCRAMBLE_LENGTH_323, - p, SCRAMBLE_LENGTH - SCRAMBLE_LENGTH_323); + p, SCRAMBLE_LENGTH - SCRAMBLE_LENGTH_323); } else { packet->pre41 = TRUE; } @@ -755,7 +789,7 @@ DBG_ENTER("php_mysqlnd_ok_read"); - PACKET_READ_HEADER_AND_BODY(packet, conn, buf, sizeof(buf), "OK"); + PACKET_READ_HEADER_AND_BODY(packet, conn, buf, sizeof(buf), "OK", PROT_OK_PACKET); /* Should be always 0x0 or 0xFF for error */ packet->field_count = uint1korr(p); @@ -834,7 +868,7 @@ DBG_ENTER("php_mysqlnd_eof_read"); - PACKET_READ_HEADER_AND_BODY(packet, conn, buf, sizeof(buf), "EOF"); + PACKET_READ_HEADER_AND_BODY(packet, conn, buf, sizeof(buf), "EOF", PROT_EOF_PACKET); /* Should be always 0xFE */ packet->field_count = uint1korr(p); @@ -907,6 +941,8 @@ if (error_reporting) { EG(error_reporting) = 0; } + + MYSQLND_INC_CONN_STATISTIC(&conn->stats, STAT_PACKETS_SENT_CMD); #ifdef MYSQLND_DO_WIRE_CHECK_BEFORE_COMMAND php_mysqlnd_consume_uneaten_data(conn, packet->command TSRMLS_CC); @@ -972,7 +1008,7 @@ DBG_ENTER("php_mysqlnd_rset_header_read"); - PACKET_READ_HEADER_AND_BODY(packet, conn, buf, sizeof(buf), "resultset header"); + PACKET_READ_HEADER_AND_BODY(packet, conn, buf, sizeof(buf), "resultset header", PROT_RSET_HEADER_PACKET); /* Don't increment. First byte is 0xFF on error, but otherwise is starting byte @@ -1086,7 +1122,7 @@ DBG_ENTER("php_mysqlnd_rset_field_read"); - PACKET_READ_HEADER_AND_BODY(packet, conn, buf, buf_len, "field"); + PACKET_READ_HEADER_AND_BODY(packet, conn, buf, buf_len, "field", PROT_RSET_FLD_PACKET); if (packet->skip_parsing) { DBG_RETURN(PASS); @@ -1366,10 +1402,46 @@ if (*null_ptr & bit) { DBG_INF("It's null"); ZVAL_NULL(*current_field); + MYSQLND_INC_CONN_STATISTIC(&conn->stats, STAT_BINARY_TYPE_FETCHED_NULL); } else { enum_mysqlnd_field_types type = fields_metadata[i].type; mysqlnd_ps_fetch_functions[type].func(*current_field, &fields_metadata[i], 0, &p, as_unicode TSRMLS_CC); + + if (MYSQLND_G(collect_statistics)) { + enum_mysqlnd_collected_stats statistic; + switch (fields_metadata[i].type) { + case MYSQL_TYPE_DECIMAL: statistic = STAT_BINARY_TYPE_FETCHED_DECIMAL; break; + case MYSQL_TYPE_TINY: statistic = STAT_BINARY_TYPE_FETCHED_INT8; break; + case MYSQL_TYPE_SHORT: statistic = STAT_BINARY_TYPE_FETCHED_INT16; break; + case MYSQL_TYPE_LONG: statistic = STAT_BINARY_TYPE_FETCHED_INT32; break; + case MYSQL_TYPE_FLOAT: statistic = STAT_BINARY_TYPE_FETCHED_FLOAT; break; + case MYSQL_TYPE_DOUBLE: statistic = STAT_BINARY_TYPE_FETCHED_DOUBLE; break; + case MYSQL_TYPE_NULL: statistic = STAT_BINARY_TYPE_FETCHED_NULL; break; + case MYSQL_TYPE_TIMESTAMP: statistic = STAT_BINARY_TYPE_FETCHED_TIMESTAMP; break; + case MYSQL_TYPE_LONGLONG: statistic = STAT_BINARY_TYPE_FETCHED_INT64; break; + case MYSQL_TYPE_INT24: statistic = STAT_BINARY_TYPE_FETCHED_INT24; break; + case MYSQL_TYPE_DATE: statistic = STAT_BINARY_TYPE_FETCHED_DATE; break; + case MYSQL_TYPE_TIME: statistic = STAT_BINARY_TYPE_FETCHED_TIME; break; + case MYSQL_TYPE_DATETIME: statistic = STAT_BINARY_TYPE_FETCHED_DATETIME; break; + case MYSQL_TYPE_YEAR: statistic = STAT_BINARY_TYPE_FETCHED_YEAR; break; + case MYSQL_TYPE_NEWDATE: statistic = STAT_BINARY_TYPE_FETCHED_DATE; break; + case MYSQL_TYPE_VARCHAR: statistic = STAT_BINARY_TYPE_FETCHED_STRING; break; + case MYSQL_TYPE_BIT: statistic = STAT_BINARY_TYPE_FETCHED_BIT; break; + case MYSQL_TYPE_NEWDECIMAL: statistic = STAT_BINARY_TYPE_FETCHED_DECIMAL; break; + case MYSQL_TYPE_ENUM: statistic = STAT_BINARY_TYPE_FETCHED_ENUM; break; + case MYSQL_TYPE_SET: statistic = STAT_BINARY_TYPE_FETCHED_SET; break; + case MYSQL_TYPE_TINY_BLOB: statistic = STAT_BINARY_TYPE_FETCHED_BLOB; break; + case MYSQL_TYPE_MEDIUM_BLOB:statistic = STAT_BINARY_TYPE_FETCHED_BLOB; break; + case MYSQL_TYPE_LONG_BLOB: statistic = STAT_BINARY_TYPE_FETCHED_BLOB; break; + case MYSQL_TYPE_BLOB: statistic = STAT_BINARY_TYPE_FETCHED_BLOB; break; + case MYSQL_TYPE_VAR_STRING: statistic = STAT_BINARY_TYPE_FETCHED_STRING; break; + case MYSQL_TYPE_STRING: statistic = STAT_BINARY_TYPE_FETCHED_STRING; break; + case MYSQL_TYPE_GEOMETRY: statistic = STAT_BINARY_TYPE_FETCHED_GEOMETRY; break; + default: statistic = STAT_BINARY_TYPE_FETCHED_OTHER; break; + } + MYSQLND_INC_CONN_STATISTIC(&conn->stats, statistic); + } } if (!((bit<<=1) & 255)) { bit = 1; /* to the following byte */ @@ -1443,6 +1515,40 @@ struct st_mysqlnd_perm_bind perm_bind = mysqlnd_ps_fetch_functions[fields_metadata[i].type]; #endif + if (MYSQLND_G(collect_statistics)) { + enum_mysqlnd_collected_stats statistic; + switch (fields_metadata[i].type) { + case MYSQL_TYPE_DECIMAL: statistic = STAT_TEXT_TYPE_FETCHED_DECIMAL; break; + case MYSQL_TYPE_TINY: statistic = STAT_TEXT_TYPE_FETCHED_INT8; break; + case MYSQL_TYPE_SHORT: statistic = STAT_TEXT_TYPE_FETCHED_INT16; break; + case MYSQL_TYPE_LONG: statistic = STAT_TEXT_TYPE_FETCHED_INT32; break; + case MYSQL_TYPE_FLOAT: statistic = STAT_TEXT_TYPE_FETCHED_FLOAT; break; + case MYSQL_TYPE_DOUBLE: statistic = STAT_TEXT_TYPE_FETCHED_DOUBLE; break; + case MYSQL_TYPE_NULL: statistic = STAT_TEXT_TYPE_FETCHED_NULL; break; + case MYSQL_TYPE_TIMESTAMP: statistic = STAT_TEXT_TYPE_FETCHED_TIMESTAMP; break; + case MYSQL_TYPE_LONGLONG: statistic = STAT_TEXT_TYPE_FETCHED_INT64; break; + case MYSQL_TYPE_INT24: statistic = STAT_TEXT_TYPE_FETCHED_INT24; break; + case MYSQL_TYPE_DATE: statistic = STAT_TEXT_TYPE_FETCHED_DATE; break; + case MYSQL_TYPE_TIME: statistic = STAT_TEXT_TYPE_FETCHED_TIME; break; + case MYSQL_TYPE_DATETIME: statistic = STAT_TEXT_TYPE_FETCHED_DATETIME; break; + case MYSQL_TYPE_YEAR: statistic = STAT_TEXT_TYPE_FETCHED_YEAR; break; + case MYSQL_TYPE_NEWDATE: statistic = STAT_TEXT_TYPE_FETCHED_DATE; break; + case MYSQL_TYPE_VARCHAR: statistic = STAT_TEXT_TYPE_FETCHED_STRING; break; + case MYSQL_TYPE_BIT: statistic = STAT_TEXT_TYPE_FETCHED_BIT; break; + case MYSQL_TYPE_NEWDECIMAL: statistic = STAT_TEXT_TYPE_FETCHED_DECIMAL; break; + case MYSQL_TYPE_ENUM: statistic = STAT_TEXT_TYPE_FETCHED_ENUM; break; + case MYSQL_TYPE_SET: statistic = STAT_TEXT_TYPE_FETCHED_SET; break; + case MYSQL_TYPE_TINY_BLOB: statistic = STAT_TEXT_TYPE_FETCHED_BLOB; break; + case MYSQL_TYPE_MEDIUM_BLOB:statistic = STAT_TEXT_TYPE_FETCHED_BLOB; break; + case MYSQL_TYPE_LONG_BLOB: statistic = STAT_TEXT_TYPE_FETCHED_BLOB; break; + case MYSQL_TYPE_BLOB: statistic = STAT_TEXT_TYPE_FETCHED_BLOB; break; + case MYSQL_TYPE_VAR_STRING: statistic = STAT_TEXT_TYPE_FETCHED_STRING; break; + case MYSQL_TYPE_STRING: statistic = STAT_TEXT_TYPE_FETCHED_STRING; break; + case MYSQL_TYPE_GEOMETRY: statistic = STAT_TEXT_TYPE_FETCHED_GEOMETRY; break; + default: statistic = STAT_TEXT_TYPE_FETCHED_OTHER; break; + } + MYSQLND_INC_CONN_STATISTIC(&conn->stats, statistic); + } #ifdef MYSQLND_STRING_TO_INT_CONVERSION if (as_int && perm_bind.php_type == IS_LONG && @@ -1574,7 +1680,7 @@ if (Z_TYPE_P(*current_field) == IS_STRING) { ((mysqlnd_zval *) obj)->point_type = MYSQLND_POINTS_INT_BUFFER; } else { - ((mysqlnd_zval *) obj)->point_type = MYSQLND_POINTS_EXT_BUFFER; + ((mysqlnd_zval *) obj)->point_type = MYSQLND_POINTS_EXT_BUFFER; } } #endif @@ -1622,6 +1728,10 @@ if (FAIL == ret) { goto end; } + MYSQLND_INC_CONN_STATISTIC_W_VALUE2(&conn->stats, packet_type_to_statistic_byte_count[PROT_ROW_PACKET], + MYSQLND_HEADER_SIZE + packet->header.size, + packet_type_to_statistic_packet_count[PROT_ROW_PACKET], + 1); /* packet->row_buffer->ptr is of size 'data_size + 1' */ packet->header.size = data_size; @@ -1727,7 +1837,7 @@ DBG_ENTER("php_mysqlnd_stats_read"); - PACKET_READ_HEADER_AND_BODY(packet, conn, buf, sizeof(buf), "statistics"); + PACKET_READ_HEADER_AND_BODY(packet, conn, buf, sizeof(buf), "statistics", PROT_STATS_PACKET); packet->message = mnd_pemalloc(packet->header.size + 1, conn->persistent); memcpy(packet->message, buf, packet->header.size); @@ -1772,7 +1882,7 @@ DBG_ENTER("php_mysqlnd_prepare_read"); - PACKET_READ_HEADER_AND_BODY(packet, conn, buf, sizeof(buf), "prepare"); + PACKET_READ_HEADER_AND_BODY(packet, conn, buf, sizeof(buf), "prepare", PROT_PREPARE_RESP_PACKET); data_size = packet->header.size; packet->error_code = uint1korr(p); @@ -1851,7 +1961,7 @@ DBG_ENTER("php_mysqlnd_chg_user_read"); - PACKET_READ_HEADER_AND_BODY(packet, conn, buf, sizeof(buf), "change user response "); + PACKET_READ_HEADER_AND_BODY(packet, conn, buf, sizeof(buf), "change user response", PROT_CHG_USER_PACKET); /* Don't increment. First byte is 0xFF on error, but otherwise is starting byte
« previous php.cvs (#53090) next »