Author: ahristov
Date: 2007-03-05 17:56:10 +0100 (Mon, 05 Mar 2007)
New Revision: 89
Modified:
trunk/ext/mysqli/mysqlnd/mysqlnd.c
trunk/ext/mysqli/mysqlnd/mysqlnd.h
trunk/ext/mysqli/mysqlnd/mysqlnd_statistics.c
Log:
Add statistics for bad or no index being used
Modified: trunk/ext/mysqli/mysqlnd/mysqlnd.c
===================================================================
--- trunk/ext/mysqli/mysqlnd/mysqlnd.c 2007-03-05 15:36:48 UTC (rev 88)
+++ trunk/ext/mysqli/mysqlnd/mysqlnd.c 2007-03-05 16:56:10 UTC (rev 89)
@@ -653,7 +653,7 @@
" is not supported. Server is %-.32s", greet_packet.server_version);
SET_CLIENT_ERROR(conn->error_info, CR_NOT_IMPLEMENTED, UNKNOWN_SQLSTATE,
"Connecting to 3.22, 3.23 & 4.0 servers is not supported");
- goto err;
+ goto err;
}
conn->thread_id = greet_packet.thread_id;
@@ -779,7 +779,7 @@
enum_func_status
mysqlnd_read_result_metadata(MYSQLND *conn, MYSQLND_RES *result TSRMLS_DC)
{
- int i = 0;
+ int i = 0;
php_mysql_packet_res_field field_packet;
/*
@@ -910,6 +910,7 @@
default:{ /* Result set */
php_mysql_packet_eof fields_eof;
MYSQLND_RES *result;
+ uint stat = -1;
MYSQLND_INC_CONN_STATISTIC(&conn->stats, STAT_RSET_QUERY);
memset(&conn->upsert_status, 0, sizeof(conn->upsert_status));
@@ -976,6 +977,15 @@
conn->upsert_status.warning_count = fields_eof.warning_count;
conn->upsert_status.server_status = fields_eof.server_status;
}
+
+ if (fields_eof.server_status & MYSQLND_SERVER_QUERY_NO_GOOD_INDEX_USED) {
+ stat = STAT_BAD_INDEX_USED;
+ } else if (fields_eof.server_status & MYSQLND_SERVER_QUERY_NO_INDEX_USED) {
+ stat = STAT_NO_INDEX_USED;
+ }
+ if (stat != -1) {
+ MYSQLND_INC_CONN_STATISTIC(&conn->stats, stat);
+ }
PACKET_FREE_ALLOCA(fields_eof);
break;
@@ -1104,10 +1114,10 @@
{
enum_func_status ret;
zval *row = (zval *) param;
- unsigned int i,
+ unsigned int i,
field_count = result->field_count;
php_mysql_packet_row *row_packet = result->row_packet;
- unsigned long *lengths = result->lengths;
+ unsigned long *lengths = result->lengths;
if (result->eof_reached) {
/* No more rows obviously */
@@ -1156,9 +1166,9 @@
/* zend_hash_quick_update needs length + trailing zero */
/* QQ: Error handling ? */
zend_hash_quick_update(row_ht,
- result->fields[i].name, result->fields[i].name_length + 1,
- result->zend_hash_keys[i],
- (void *) &data, sizeof(zval *), NULL);
+ result->fields[i].name, result->fields[i].name_length + 1,
+ result->zend_hash_keys[i],
+ (void *) &data, sizeof(zval *), NULL);
}
if (result->fields[i].max_length < len) {
result->fields[i].max_length = len;
@@ -1213,7 +1223,7 @@
result = conn->current_result;
conn->current_result = NULL;
- result->type = MYSQLND_RES_NORMAL;
+ result->type = MYSQLND_RES_NORMAL;
result->m.fetch_row = mysqlnd_fetch_row_unbuffered;
result->m.fetch_lengths = mysqlnd_fetch_lengths_unbuffered;
result->m.fetch_row_old_way = _mysqlnd_fetch_row;
@@ -1309,7 +1319,7 @@
result = conn->current_result;
conn->current_result = NULL;
- result->type = MYSQLND_RES_NORMAL;
+ result->type = MYSQLND_RES_NORMAL;
result->m.fetch_row = mysqlnd_fetch_row_buffered;
result->m.fetch_lengths = mysqlnd_fetch_lengths_buffered;
result->m.fetch_row_old_way = _mysqlnd_fetch_row;
@@ -1448,7 +1458,7 @@
return FAIL;
}
result->data_cursor = result->data + row;
-
+
return PASS;
}
/* }}} */
@@ -1713,7 +1723,7 @@
switch (conn->state) {
case CONN_READY:
ret = mysqlnd_simple_command(conn, COM_QUIT, NULL, 0, PROT_LAST,
- conn->tmp_int? TRUE : FALSE TSRMLS_CC);
+ conn->tmp_int? TRUE : FALSE TSRMLS_CC);
/* Do nothing */
break;
case CONN_NEXT_RESULT_PENDING:
@@ -2206,7 +2216,7 @@
ulong i=0;
/* mysqlnd_fetch_all works with buffered resultsets only */
- if (result->conn || !result->row_count || !result->data_cursor ||
+ if (result->conn || !result->row_count || !result->data_cursor ||
result->data_cursor >= result->data + result->row_count) {
RETURN_NULL();
}
@@ -2216,7 +2226,7 @@
while (result->data_cursor && (result->data_cursor - result->data) <
result->row_count) {
MAKE_STD_ZVAL(row);
mysqlnd_fetch_into(result, flags, row);
- add_index_zval(return_value, i++, row);
+ add_index_zval(return_value, i++, row);
}
}
/* }}} */
Modified: trunk/ext/mysqli/mysqlnd/mysqlnd.h
===================================================================
--- trunk/ext/mysqli/mysqlnd/mysqlnd.h 2007-03-05 15:36:48 UTC (rev 88)
+++ trunk/ext/mysqli/mysqlnd/mysqlnd.h 2007-03-05 16:56:10 UTC (rev 89)
@@ -307,6 +307,8 @@
STAT_PROTOCOL_OVERHEAD_OUT,
STAT_RSET_QUERY,
STAT_NON_RSET_QUERY,
+ STAT_NO_INDEX_USED,
+ STAT_BAD_INDEX_USED,
STAT_BUFFERED_SETS,
STAT_UNBUFFERED_SETS,
STAT_PS_BUFFERED_SETS,
Modified: trunk/ext/mysqli/mysqlnd/mysqlnd_statistics.c
===================================================================
--- trunk/ext/mysqli/mysqlnd/mysqlnd_statistics.c 2007-03-05 15:36:48 UTC (rev 88)
+++ trunk/ext/mysqli/mysqlnd/mysqlnd_statistics.c 2007-03-05 16:56:10 UTC (rev 89)
@@ -47,6 +47,8 @@
{ STR_W_LEN("protocol_overhead_out") },
{ STR_W_LEN("result_set_queries") },
{ STR_W_LEN("non_result_set_queries") },
+ { STR_W_LEN("no_index_used") },
+ { STR_W_LEN("bad_index_used") },
{ STR_W_LEN("buffered_sets") },
{ STR_W_LEN("unbuffered_sets") },
{ STR_W_LEN("ps_buffered_sets") },
| Thread |
|---|
| • PHP mysqlnd svn commit: r89 - trunk/ext/mysqli/mysqlnd | ahristov | 5 Mar |