From 86718882e06ef8d4999716059d9b8c7041e5f4dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Canna=C3=B2?= Date: Tue, 6 Dec 2016 23:57:59 +0000 Subject: [PATCH] Added 6 new status variables , #818 and #821 Added status variables: * Com_backend_change_user * Com_backend_init_db * Com_backend_set_names * Com_frontend_init_db * Com_frontend_set_names * Com_frontend_use_db --- include/MySQL_HostGroups_Manager.h | 6 +++++ lib/MySQL_HostGroups_Manager.cpp | 6 +++++ lib/MySQL_Session.cpp | 6 +++++ lib/MySQL_Thread.cpp | 36 ++++++++++++++++++++++++++++++ 4 files changed, 54 insertions(+) diff --git a/include/MySQL_HostGroups_Manager.h b/include/MySQL_HostGroups_Manager.h index 86b71d394..10b1e0314 100644 --- a/include/MySQL_HostGroups_Manager.h +++ b/include/MySQL_HostGroups_Manager.h @@ -165,6 +165,12 @@ class MySQL_HostGroups_Manager { unsigned long long autocommit_cnt_filtered; unsigned long long commit_cnt_filtered; unsigned long long rollback_cnt_filtered; + unsigned long long backend_change_user; + unsigned long long backend_init_db; + unsigned long long backend_set_names; + unsigned long long frontend_init_db; + unsigned long long frontend_set_names; + unsigned long long frontend_use_db; } status; wqueue queue; MySQL_HostGroups_Manager(); diff --git a/lib/MySQL_HostGroups_Manager.cpp b/lib/MySQL_HostGroups_Manager.cpp index ddd77e181..195a1de51 100644 --- a/lib/MySQL_HostGroups_Manager.cpp +++ b/lib/MySQL_HostGroups_Manager.cpp @@ -359,6 +359,12 @@ MySQL_HostGroups_Manager::MySQL_HostGroups_Manager() { status.autocommit_cnt_filtered=0; status.commit_cnt_filtered=0; status.rollback_cnt_filtered=0; + status.backend_change_user=0; + status.backend_init_db=0; + status.backend_set_names=0; + status.frontend_init_db=0; + status.frontend_set_names=0; + status.frontend_use_db=0; #ifdef MHM_PTHREAD_MUTEX pthread_mutex_init(&lock, NULL); #else diff --git a/lib/MySQL_Session.cpp b/lib/MySQL_Session.cpp index 09af99dff..dfe05ad4f 100644 --- a/lib/MySQL_Session.cpp +++ b/lib/MySQL_Session.cpp @@ -687,6 +687,7 @@ bool MySQL_Session::handler_special_queries(PtrSize_t *pkt) { status=WAITING_CLIENT_DATA; l_free(pkt->size,pkt->ptr); free(unstripped); + __sync_fetch_and_add(&MyHGM->status.frontend_set_names, 1); return true; } if ( (pkt->size == 18) && (strncasecmp((char *)"SHOW WARNINGS",(char *)pkt->ptr+5,13)==0) ) { @@ -1346,6 +1347,7 @@ bool MySQL_Session::handler_again___status_CHANGING_SCHEMA(int *_rc) { } int rc=myconn->async_select_db(myds->revents); if (rc==0) { + __sync_fetch_and_add(&MyHGM->status.backend_init_db, 1); myds->myconn->userinfo->set(client_myds->myconn->userinfo); st=previous_status.top(); previous_status.pop(); @@ -1563,6 +1565,7 @@ bool MySQL_Session::handler_again___status_CHANGING_USER_SERVER(int *_rc) { myconn->local_stmts=new MySQL_STMTs_local(false); int rc=myconn->async_change_user(myds->revents); if (rc==0) { + __sync_fetch_and_add(&MyHGM->status.backend_change_user, 1); myds->myconn->userinfo->set(client_myds->myconn->userinfo); st=previous_status.top(); previous_status.pop(); @@ -1618,6 +1621,7 @@ bool MySQL_Session::handler_again___status_CHANGING_CHARSET(int *_rc) { } int rc=myconn->async_set_names(myds->revents, client_myds->myconn->options.charset); if (rc==0) { + __sync_fetch_and_add(&MyHGM->status.backend_set_names, 1); st=previous_status.top(); previous_status.pop(); NEXT_IMMEDIATE_NEW(st); @@ -3182,6 +3186,7 @@ void MySQL_Session::handler___status_WAITING_CLIENT_DATA___STATE_SLEEP___MYSQL_C void MySQL_Session::handler___status_WAITING_CLIENT_DATA___STATE_SLEEP___MYSQL_COM_INIT_DB(PtrSize_t *pkt) { proxy_debug(PROXY_DEBUG_MYSQL_COM, 5, "Got COM_INIT_DB packet\n"); if (admin==false) { + __sync_fetch_and_add(&MyHGM->status.frontend_init_db, 1); client_myds->myconn->userinfo->set_schemaname((char *)pkt->ptr+sizeof(mysql_hdr)+1,pkt->size-sizeof(mysql_hdr)-1); l_free(pkt->size,pkt->ptr); client_myds->setDSS_STATE_QUERY_SENT_NET(); @@ -3207,6 +3212,7 @@ void MySQL_Session::handler___status_WAITING_CLIENT_DATA___STATE_SLEEP___MYSQL_C void MySQL_Session::handler___status_WAITING_CLIENT_DATA___STATE_SLEEP___MYSQL_COM_QUERY_USE_DB(PtrSize_t *pkt) { proxy_debug(PROXY_DEBUG_MYSQL_COM, 5, "Got COM_QUERY with USE dbname\n"); if (admin==false) { + __sync_fetch_and_add(&MyHGM->status.frontend_use_db, 1); client_myds->myconn->userinfo->set_schemaname((char *)pkt->ptr+sizeof(mysql_hdr)+5,pkt->size-sizeof(mysql_hdr)-5); l_free(pkt->size,pkt->ptr); client_myds->setDSS_STATE_QUERY_SENT_NET(); diff --git a/lib/MySQL_Thread.cpp b/lib/MySQL_Thread.cpp index e86bf6da1..1c06bc73f 100644 --- a/lib/MySQL_Thread.cpp +++ b/lib/MySQL_Thread.cpp @@ -3181,6 +3181,42 @@ SQLite3_result * MySQL_Threads_Handler::SQL3_GlobalStatus() { pta[1]=buf; result->add_row(pta); } + { // Queries backend CHANGE_USER + pta[0]=(char *)"Com_backend_change_user"; + sprintf(buf,"%llu",MyHGM->status.backend_change_user); + pta[1]=buf; + result->add_row(pta); + } + { // Queries backend INIT DB + pta[0]=(char *)"Com_backend_init_db"; + sprintf(buf,"%llu",MyHGM->status.backend_init_db); + pta[1]=buf; + result->add_row(pta); + } + { // Queries backend SET NAMES + pta[0]=(char *)"Com_backend_set_names"; + sprintf(buf,"%llu",MyHGM->status.backend_set_names); + pta[1]=buf; + result->add_row(pta); + } + { // Queries frontend INIT DB + pta[0]=(char *)"Com_frontend_init_db"; + sprintf(buf,"%llu",MyHGM->status.frontend_init_db); + pta[1]=buf; + result->add_row(pta); + } + { // Queries frontend SET NAMES + pta[0]=(char *)"Com_frontend_set_names"; + sprintf(buf,"%llu",MyHGM->status.frontend_set_names); + pta[1]=buf; + result->add_row(pta); + } + { // Queries frontend USE DB + pta[0]=(char *)"Com_frontend_use_db"; + sprintf(buf,"%llu",MyHGM->status.frontend_use_db); + pta[1]=buf; + result->add_row(pta); + } { // stmt prepare pta[0]=(char *)"Com_stmt_prepare"; sprintf(buf,"%llu",get_total_stmt_prepare());