diff --git a/include/cpp.h b/include/cpp.h index 85f997fb9..041b526cd 100644 --- a/include/cpp.h +++ b/include/cpp.h @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include diff --git a/include/query_processor.h b/include/query_processor.h index 405743338..d0bb1c42d 100644 --- a/include/query_processor.h +++ b/include/query_processor.h @@ -4,7 +4,8 @@ #include "cpp.h" -typedef btree::btree_map BtMap_query_digest; +//typedef btree::btree_map BtMap_query_digest; +typedef std::unordered_map umap_query_digest; enum MYSQL_COM_QUERY_command { MYSQL_COM_QUERY_ALTER_TABLE, @@ -188,7 +189,8 @@ class Query_Processor { enum MYSQL_COM_QUERY_command __query_parser_command_type(void *args); rwlock_t digest_rwlock; - BtMap_query_digest digest_bt_map; + //BtMap_query_digest digest_bt_map; + umap_query_digest digest_umap; protected: rwlock_t rwlock; diff --git a/lib/Query_Processor.cpp b/lib/Query_Processor.cpp index 0f39d257a..d559d9348 100644 --- a/lib/Query_Processor.cpp +++ b/lib/Query_Processor.cpp @@ -581,7 +581,8 @@ SQLite3_result * Query_Processor::get_query_digests() { result->add_column_definition(SQLITE_TEXT,"sum_time"); result->add_column_definition(SQLITE_TEXT,"min_time"); result->add_column_definition(SQLITE_TEXT,"max_time"); - for (btree::btree_map::iterator it=digest_bt_map.begin(); it!=digest_bt_map.end(); ++it) { + //for (btree::btree_map::iterator it=digest_bt_map.begin(); it!=digest_bt_map.end(); ++it) { + for (std::unordered_map::iterator it=digest_umap.begin(); it!=digest_umap.end(); ++it) { QP_query_digest_stats *qds=(QP_query_digest_stats *)it->second; char **pta=qds->get_row(); result->add_row(pta); @@ -605,14 +606,16 @@ SQLite3_result * Query_Processor::get_query_digests_reset() { result->add_column_definition(SQLITE_TEXT,"sum_time"); result->add_column_definition(SQLITE_TEXT,"min_time"); result->add_column_definition(SQLITE_TEXT,"max_time"); - for (btree::btree_map::iterator it=digest_bt_map.begin(); it!=digest_bt_map.end(); ++it) { + //for (btree::btree_map::iterator it=digest_bt_map.begin(); it!=digest_bt_map.end(); ++it) { + for (std::unordered_map::iterator it=digest_umap.begin(); it!=digest_umap.end(); ++it) { QP_query_digest_stats *qds=(QP_query_digest_stats *)it->second; char **pta=qds->get_row(); result->add_row(pta); qds->free_row(pta); delete qds; } - digest_bt_map.erase(digest_bt_map.begin(),digest_bt_map.end()); + //digest_bt_map.erase(digest_bt_map.begin(),digest_bt_map.end()); + digest_umap.erase(digest_umap.begin(),digest_umap.end()); spin_wrunlock(&digest_rwlock); return result; } @@ -897,16 +900,20 @@ void Query_Processor::update_query_digest(void *p, int hid, MySQL_Connection_use QP_query_digest_stats *qds; - btree::btree_map::iterator it; - it=digest_bt_map.find(qp->digest_total); - if (it != digest_bt_map.end()) { + //btree::btree_map::iterator it; + //it=digest_bt_map.find(qp->digest_total); + //if (it != digest_bt_map.end()) { + std::unordered_map::iterator it; + it=digest_umap.find(qp->digest_total); + if (it != digest_umap.end()) { // found qds=(QP_query_digest_stats *)it->second; qds->add_time(t,n); } else { qds=new QP_query_digest_stats(ui->username, ui->schemaname, qp->digest, qp->digest_text, hid); qds->add_time(t,n); - digest_bt_map.insert(std::make_pair(qp->digest_total,(void *)qds)); + //digest_bt_map.insert(std::make_pair(qp->digest_total,(void *)qds)); + digest_umap.insert(std::make_pair(qp->digest_total,(void *)qds)); } spin_wrunlock(&digest_rwlock);