diff --git a/MYDDAS/myddas_mysql.c b/MYDDAS/myddas_mysql.c index 5b6274366..9f206a640 100755 --- a/MYDDAS/myddas_mysql.c +++ b/MYDDAS/myddas_mysql.c @@ -114,6 +114,12 @@ c_db_my_query(void) { int length=strlen(sql); #ifdef MYDDAS_STATS + MYDDAS_UTIL_CONNECTION node = myddas_util_search_connection(conn); + + /* Count the number of querys made to the server */ + unsigned long number_querys = myddas_util_get_conn_number_querys_made(node); + myddas_util_set_conn_number_querys_made(node,++number_querys); + /* Measure time spent by the MySQL Server processing the SQL Query */ unsigned long start,end,total_time,last_time; @@ -134,7 +140,6 @@ c_db_my_query(void) { processing the SQL Query */ end = myddas_current_time(); - MYDDAS_UTIL_CONNECTION node = myddas_util_search_connection(conn); last_time = (end-start); total_time = last_time + myddas_util_get_conn_total_time_DBServer(node); @@ -143,7 +148,7 @@ c_db_my_query(void) { #endif /* guardar os tuplos do lado do cliente */ - if (strcmp(mode,"store_result")!=0) //Verdadeiro + if (strcmp(mode,"store_result")!=0) //True res_set = mysql_use_result(conn); else{ @@ -178,6 +183,24 @@ c_db_my_query(void) { unsigned long numberRows = mysql_num_rows(res_set); numberRows = numberRows + myddas_util_get_conn_total_rows(node); myddas_util_set_conn_total_rows(node,numberRows); + + /* Calculate the ammount of data sent by the server */ + unsigned long int total,number_fields = mysql_num_fields(res_set); + MYSQL_ROW row; + unsigned int i; + total=0; + while ((row = mysql_fetch_row(res_set)) != NULL){ + mysql_field_seek(res_set,0); + + for(i=0;i Total of Bytes Transfered by the + // DB Server on all SQL Querys + head = HeadOfTerm(list); + list = TailOfTerm(list); + unsigned long totalBytes = myddas_util_get_conn_total_bytes_transfering_from_DBserver(node); + Yap_unify(head, MkIntegerTerm(totalBytes)); +#ifdef DEBUG + printf ("Bytes Transfered by the DB Server from all querys: %lu\n",totalBytes); +#endif + + //[Index 8] -> Total of Bytes Transfered by the + // DB Server on the last SQL Query + head = HeadOfTerm(list); + list = TailOfTerm(list); + unsigned long lastBytes = myddas_util_get_conn_last_bytes_transfering_from_DBserver(node); + Yap_unify(head, MkIntegerTerm(lastBytes)); +#ifdef DEBUG + printf ("Bytes Transfered by the DB Server on the last query: %lu\n",lastBytes); +#endif + + //[Index 9] -> Number of querys made to the DBserver + head = HeadOfTerm(list); + list = TailOfTerm(list); + unsigned long number_querys = myddas_util_get_conn_number_querys_made(node); + Yap_unify(head, MkIntegerTerm(number_querys)); +#ifdef DEBUG + printf ("Number of Querys made to the server: %lu\n",number_querys); +#endif + return TRUE; } diff --git a/MYDDAS/myddas_structs.h b/MYDDAS/myddas_structs.h index 786770d1d..8c62ab081 100644 --- a/MYDDAS/myddas_structs.h +++ b/MYDDAS/myddas_structs.h @@ -59,8 +59,15 @@ struct list_connection { transfering the data of the last query */ unsigned long lastFromDBServer; + /* Last bytes transfered from the server */ + unsigned long totalBytesTransfered; + /* Total bytes transfered from the server */ + unsigned long lastBytesTransfered; + /* Total Time spent on the db_row function */ unsigned long total_db_row; + + unsigned long total_querys_made; #endif MYDDAS_UTIL_PREDICATE predicates; struct list_connection *next; diff --git a/MYDDAS/myddas_util.c b/MYDDAS/myddas_util.c index f822c9ee4..8499a440d 100755 --- a/MYDDAS/myddas_util.c +++ b/MYDDAS/myddas_util.c @@ -126,6 +126,33 @@ myddas_util_set_conn_total_transfering_from_DBServer(MYDDAS_UTIL_CONNECTION node node->totalFromDBServer = totaltime; } +unsigned long +myddas_util_get_conn_last_bytes_transfering_from_DBserver(MYDDAS_UTIL_CONNECTION node){ + return node->lastBytesTransfered; +} +void +myddas_util_set_conn_last_bytes_transfering_from_DBserver(MYDDAS_UTIL_CONNECTION node, unsigned long bytes){ + node->lastBytesTransfered = bytes; +} + +unsigned long +myddas_util_get_conn_total_bytes_transfering_from_DBserver(MYDDAS_UTIL_CONNECTION node){ + return node->totalBytesTransfered; +} +void +myddas_util_set_conn_total_bytes_transfering_from_DBserver(MYDDAS_UTIL_CONNECTION node, unsigned long bytes){ + node->totalBytesTransfered = bytes; +} + +unsigned long +myddas_util_get_conn_number_querys_made(MYDDAS_UTIL_CONNECTION node){ + return node->total_querys_made; +} +void +myddas_util_set_conn_number_querys_made(MYDDAS_UTIL_CONNECTION node, unsigned long number){ + node->total_querys_made = number; +} + unsigned long myddas_util_get_total_db_row_function(void){ return MYDDAS_GLOBAL_STRUCT->myddas_statistics->total_db_row; @@ -156,7 +183,7 @@ myddas_current_time(void) { microseconds -> s/1000000 */ /* struct timeval tempo; */ -/* if (!gettimeofday(&tempo, NULL)) */ + /* if (!gettimeofday(&tempo, NULL)) */ /* //returns time in microseconds */ /* return (tempo.tv_sec %1000)*1000000+tempo.tv_usec; */ /* //return (tempo.tv_sec %1000)*1000+tempo.tv_usec; */ @@ -512,6 +539,9 @@ myddas_util_initialize_connection(void *conn,void *enviromment, new->totalFromDBServer=0; new->lastFromDBServer=0; new->total_db_row=0; + new->lastBytesTransfered=0; + new->totalBytesTransfered=0; + new->total_querys_made=0; #endif return new; } @@ -569,6 +599,14 @@ myddas_util_delete_predicate_list(MYDDAS_UTIL_PREDICATE preds_list){ } +//DELETE THIS WHEN DB_STATS IS COMPLETED +int +get_myddas_top(){ + if (MYDDAS_GLOBAL_STRUCT == NULL) + return 0; + return (int)MYDDAS_GLOBAL_STRUCT->myddas_top_connections; +} + #endif /*defined MYDDAS_ODBC || defined MYDDAS_MYSQL*/ #endif /*CUT_C*/ diff --git a/MYDDAS/myddas_util.h b/MYDDAS/myddas_util.h index b19d396d2..4faa09acc 100755 --- a/MYDDAS/myddas_util.h +++ b/MYDDAS/myddas_util.h @@ -92,6 +92,20 @@ myddas_util_get_conn_total_transfering_from_DBServer(MYDDAS_UTIL_CONNECTION); void myddas_util_set_conn_total_transfering_from_DBServer(MYDDAS_UTIL_CONNECTION,unsigned long); +unsigned long +myddas_util_get_conn_last_bytes_transfering_from_DBserver(MYDDAS_UTIL_CONNECTION); +void +myddas_util_set_conn_last_bytes_transfering_from_DBserver(MYDDAS_UTIL_CONNECTION,unsigned long); +unsigned long +myddas_util_get_conn_total_bytes_transfering_from_DBserver(MYDDAS_UTIL_CONNECTION); +void +myddas_util_set_conn_total_bytes_transfering_from_DBserver(MYDDAS_UTIL_CONNECTION,unsigned long); + +unsigned long +myddas_util_get_conn_number_querys_made(MYDDAS_UTIL_CONNECTION); +void +myddas_util_set_conn_number_querys_made(MYDDAS_UTIL_CONNECTION, unsigned long); + unsigned long myddas_util_get_total_db_row_function(void); void @@ -110,4 +124,9 @@ myddas_current_time(void); void check_int(void); #endif + +//DELETE THIS WHEN DB_STATS IS COMPLETED +int +get_myddas_top(void); + #endif /*__MYDDAS_UTIL_H__*/