Revert always writing to DB in Query_Processor

pull/4096/head
Javier Sánchez Parra 3 years ago
parent 45522e47a4
commit baa70fc6fd

@ -1077,15 +1077,19 @@ int ProxySQL_Test___GetDigestTable_v2(bool reset, bool copy, bool use_resultset)
int r = 0;
if (!GloQPro) return 0;
std::pair<SQLite3_result *, int> res;
if (reset==true) {
if (reset == true) {
res = GloQPro->get_query_digests_reset_v2(use_resultset);
} else {
res = GloQPro->get_query_digests_v2(use_resultset);
}
if (res.first == NULL) return res.second;
r = res.first->rows_count;
if (res.first == NULL)
return res.second;
int num_rows = GloAdmin->stats___save_mysql_query_digest_to_sqlite(reset, copy, res.first, NULL, NULL);
delete res.first;
return r;
return num_rows;
}
int ProxySQL_Test___GetDigestTable(bool reset, bool use_swap) {
@ -9503,11 +9507,11 @@ int ProxySQL_Admin::stats___save_mysql_query_digest_to_sqlite(
int num_rows = resultset ? resultset->rows_count : digest_umap->size();
int max_bulk_row_idx = num_rows/32;
max_bulk_row_idx=max_bulk_row_idx*32;
auto it = digest_umap->cbegin();
auto it = resultset ? (std::unordered_map<uint64_t, void *>::iterator)NULL : digest_umap->cbegin();
int i = 0;
// If the function do not receives a resultset, it gets the values directly from the digest_umap
while (resultset ? i != resultset->rows_count : it != digest_umap->end()) {
QP_query_digest_stats *qds = (QP_query_digest_stats *)it->second;
QP_query_digest_stats *qds = (QP_query_digest_stats *)(resultset ? NULL : it->second);
SQLite3_row *row = resultset ? resultset->rows[i] : NULL;
string digest_hex_str;
if (!resultset) {

@ -1201,6 +1201,7 @@ std::pair<SQLite3_result *, int> Query_Processor::get_query_digests_v2(const boo
digest_umap.swap(digest_umap_aux);
digest_text_umap.swap(digest_text_umap_aux);
pthread_rwlock_unlock(&digest_rwlock);
int num_rows = 0;
unsigned long long curtime1;
unsigned long long curtime2;
size_t map_size = digest_umap_aux.size();
@ -1258,10 +1259,11 @@ std::pair<SQLite3_result *, int> Query_Processor::get_query_digests_v2(const boo
free(a);
}
}
} else {
num_rows = GloAdmin->stats___save_mysql_query_digest_to_sqlite(
false, false, NULL, &digest_umap_aux, &digest_text_umap_aux
);
}
int num_rows = GloAdmin->stats___save_mysql_query_digest_to_sqlite(
false, false, result, &digest_umap_aux, &digest_text_umap_aux
);
if (map_size >= DIGEST_STATS_FAST_MINSIZE) {
curtime2=monotonic_time();
curtime1 = curtime1/1000;
@ -1373,6 +1375,7 @@ std::pair<SQLite3_result *, int> Query_Processor::get_query_digests_reset_v2(con
digest_umap.swap(digest_umap_aux);
digest_text_umap.swap(digest_text_umap_aux);
pthread_rwlock_unlock(&digest_rwlock);
int num_rows = 0;
unsigned long long curtime1;
unsigned long long curtime2;
size_t map_size = digest_umap_aux.size(); // we need to use the new map
@ -1438,10 +1441,11 @@ std::pair<SQLite3_result *, int> Query_Processor::get_query_digests_reset_v2(con
delete qds;
}
}
} else {
num_rows = GloAdmin->stats___save_mysql_query_digest_to_sqlite(
false, false, result, &digest_umap_aux, &digest_text_umap_aux
);
}
int num_rows = GloAdmin->stats___save_mysql_query_digest_to_sqlite(
false, false, result, &digest_umap_aux, &digest_text_umap_aux
);
digest_umap_aux.clear();
// this part is always single-threaded
for (std::unordered_map<uint64_t, char *>::iterator it=digest_text_umap_aux.begin(); it!=digest_text_umap_aux.end(); ++it) {

Loading…
Cancel
Save