diff --git a/lib/ProxySQL_Admin.cpp b/lib/ProxySQL_Admin.cpp index f5524535a..15d794ed0 100644 --- a/lib/ProxySQL_Admin.cpp +++ b/lib/ProxySQL_Admin.cpp @@ -5224,37 +5224,38 @@ void ProxySQL_Admin::vacuum_stats(bool is_admin) { if (variables.vacuum_stats==false) { return; } - if (is_admin) { - admindb->execute("DELETE FROM stats.stats_mysql_commands_counters"); - admindb->execute("DELETE FROM stats.stats_mysql_free_connections"); - admindb->execute("DELETE FROM stats.stats_mysql_connection_pool"); - admindb->execute("DELETE FROM stats.stats_mysql_connection_pool_reset"); - admindb->execute("DELETE FROM stats.stats_mysql_prepared_statements_info"); - admindb->execute("DELETE FROM stats.stats_mysql_processlist"); - admindb->execute("DELETE FROM stats.stats_mysql_query_digest"); - admindb->execute("DELETE FROM stats.stats_mysql_query_digest_reset"); - admindb->execute("DELETE FROM stats.stats_mysql_query_rules"); - admindb->execute("DELETE FROM stats.stats_mysql_users"); - admindb->execute("DELETE FROM stats.stats_proxysql_servers_checksums"); - admindb->execute("DELETE FROM stats.stats_proxysql_servers_metrics"); - admindb->execute("DELETE FROM stats.stats_proxysql_servers_status"); - admindb->execute("VACUUM stats"); + const vector tablenames = { + "stats_mysql_commands_counters", + "stats_mysql_free_connections", + "stats_mysql_connection_pool", + "stats_mysql_connection_pool_reset", + "stats_mysql_prepared_statements_info", + "stats_mysql_processlist", + "stats_mysql_query_digest", + "stats_mysql_query_digest_reset", + "stats_mysql_query_rules", + "stats_mysql_users", + "stats_proxysql_servers_checksums", + "stats_proxysql_servers_metrics", + "stats_proxysql_servers_status", + }; + string s; + SQLite3DB *tmpdb = NULL; + if (is_admin == true) { + tmpdb = admindb; } else { - statsdb->execute("DELETE FROM stats_mysql_commands_counters"); - statsdb->execute("DELETE FROM stats_mysql_free_connections"); - statsdb->execute("DELETE FROM stats_mysql_connection_pool"); - statsdb->execute("DELETE FROM stats_mysql_connection_pool_reset"); - statsdb->execute("DELETE FROM stats_mysql_prepared_statements_info"); - statsdb->execute("DELETE FROM stats_mysql_processlist"); - statsdb->execute("DELETE FROM stats_mysql_query_digest"); - statsdb->execute("DELETE FROM stats_mysql_query_digest_reset"); - statsdb->execute("DELETE FROM stats_mysql_query_rules"); - statsdb->execute("DELETE FROM stats_mysql_users"); - statsdb->execute("DELETE FROM stats_proxysql_servers_checksums"); - statsdb->execute("DELETE FROM stats_proxysql_servers_metrics"); - statsdb->execute("DELETE FROM stats_proxysql_servers_status"); - statsdb->execute("VACUUM"); - } + tmpdb = statsdb; + } + for (auto it = tablenames.begin(); it != tablenames.end(); it++) { + s = "DELETE FROM "; + if (is_admin == true) s+= "stats."; + s += *it; + tmpdb->execute(s.c_str()); + } + s = "VACUUM"; + if (is_admin == true) + s+= " stats"; + tmpdb->execute(s.c_str()); }