From f39d8cac49b0c6b7728d28450eecf731e7ad729f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Canna=C3=B2?= Date: Wed, 18 Sep 2024 09:13:25 +0000 Subject: [PATCH 1/2] Port of commit 58fa5ee5ec176a2a5631a09f1 --- lib/ProxySQL_Admin_Stats.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/lib/ProxySQL_Admin_Stats.cpp b/lib/ProxySQL_Admin_Stats.cpp index 23e01d644..c2e8b6d19 100644 --- a/lib/ProxySQL_Admin_Stats.cpp +++ b/lib/ProxySQL_Admin_Stats.cpp @@ -1517,11 +1517,9 @@ int ProxySQL_Admin::stats___save_mysql_query_digest_to_sqlite( while (resultset ? i != resultset->rows_count : it != digest_umap->end()) { 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; + char digest_hex_str[20]; // 2+sizeof(unsigned long long)*2+2 if (!resultset) { - std::ostringstream digest_stream; - digest_stream << "0x" << std::hex << qds->digest; - digest_hex_str = digest_stream.str(); + sprintf(digest_hex_str, "0x%16llX", (long long unsigned int)qds->digest); } int idx=row_idx%32; if (row_idxfields[0] : qds->schemaname, -1, SQLITE_TRANSIENT); ASSERT_SQLITE_OK(rc, statsdb); rc=(*proxy_sqlite3_bind_text)(statement32, (idx*14)+3, resultset ? row->fields[1] : qds->username, -1, SQLITE_TRANSIENT); ASSERT_SQLITE_OK(rc, statsdb); rc=(*proxy_sqlite3_bind_text)(statement32, (idx*14)+4, resultset ? row->fields[2] : qds->client_address, -1, SQLITE_TRANSIENT); ASSERT_SQLITE_OK(rc, statsdb); - rc=(*proxy_sqlite3_bind_text)(statement32, (idx*14)+5, resultset ? row->fields[3] : digest_hex_str.c_str(), -1, SQLITE_TRANSIENT); ASSERT_SQLITE_OK(rc, statsdb); + rc=(*proxy_sqlite3_bind_text)(statement32, (idx*14)+5, resultset ? row->fields[3] : digest_hex_str, -1, SQLITE_TRANSIENT); ASSERT_SQLITE_OK(rc, statsdb); rc=(*proxy_sqlite3_bind_text)(statement32, (idx*14)+6, resultset ? row->fields[4] : qds->get_digest_text(digest_text_umap), -1, SQLITE_TRANSIENT); ASSERT_SQLITE_OK(rc, statsdb); rc=(*proxy_sqlite3_bind_int64)(statement32, (idx*14)+7, resultset ? atoll(row->fields[5]) : qds->count_star); ASSERT_SQLITE_OK(rc, statsdb); { @@ -1555,7 +1553,7 @@ int ProxySQL_Admin::stats___save_mysql_query_digest_to_sqlite( rc=(*proxy_sqlite3_bind_text)(statement1, 2, resultset ? row->fields[0] : qds->schemaname, -1, SQLITE_TRANSIENT); ASSERT_SQLITE_OK(rc, statsdb); rc=(*proxy_sqlite3_bind_text)(statement1, 3, resultset ? row->fields[1] : qds->username, -1, SQLITE_TRANSIENT); ASSERT_SQLITE_OK(rc, statsdb); rc=(*proxy_sqlite3_bind_text)(statement1, 4, resultset ? row->fields[2] : qds->client_address, -1, SQLITE_TRANSIENT); ASSERT_SQLITE_OK(rc, statsdb); - rc=(*proxy_sqlite3_bind_text)(statement1, 5, resultset ? row->fields[3] : digest_hex_str.c_str(), -1, SQLITE_TRANSIENT); ASSERT_SQLITE_OK(rc, statsdb); + rc=(*proxy_sqlite3_bind_text)(statement1, 5, resultset ? row->fields[3] : digest_hex_str, -1, SQLITE_TRANSIENT); ASSERT_SQLITE_OK(rc, statsdb); rc=(*proxy_sqlite3_bind_text)(statement1, 6, resultset ? row->fields[4] : qds->get_digest_text(digest_text_umap), -1, SQLITE_TRANSIENT); ASSERT_SQLITE_OK(rc, statsdb); rc=(*proxy_sqlite3_bind_int64)(statement1, 7, resultset ? atoll(row->fields[5]) : qds->count_star); ASSERT_SQLITE_OK(rc, statsdb); { From 4c1d1ec81a7804c974a3b8e0d84fe9033dd8f8e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Canna=C3=B2?= Date: Wed, 18 Sep 2024 09:51:14 +0000 Subject: [PATCH 2/2] Fix bug in issue 4646 --- lib/ProxySQL_Admin_Stats.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ProxySQL_Admin_Stats.cpp b/lib/ProxySQL_Admin_Stats.cpp index c2e8b6d19..2f66dc533 100644 --- a/lib/ProxySQL_Admin_Stats.cpp +++ b/lib/ProxySQL_Admin_Stats.cpp @@ -1519,7 +1519,7 @@ int ProxySQL_Admin::stats___save_mysql_query_digest_to_sqlite( SQLite3_row *row = resultset ? resultset->rows[i] : NULL; char digest_hex_str[20]; // 2+sizeof(unsigned long long)*2+2 if (!resultset) { - sprintf(digest_hex_str, "0x%16llX", (long long unsigned int)qds->digest); + sprintf(digest_hex_str, "0x%016llX", (long long unsigned int)qds->digest); } int idx=row_idx%32; if (row_idx