List:Commits« Previous MessageNext Message »
From:ahristov Date:March 5 2007 5:56pm
Subject:PHP mysqlnd svn commit: r89 - trunk/ext/mysqli/mysqlnd
View as plain text  
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/mysqlndahristov5 Mar