diff --git a/lib/ProxySQL_Admin_Stats.cpp b/lib/ProxySQL_Admin_Stats.cpp index a4534886a..4da3f6c0d 100644 --- a/lib/ProxySQL_Admin_Stats.cpp +++ b/lib/ProxySQL_Admin_Stats.cpp @@ -793,8 +793,6 @@ void ProxySQL_Admin::stats___mysql_processlist() { SQLite3_result * resultset=GloMTH->SQL3_Processlist(variables.mysql_processlist); if (resultset==NULL) return; - sqlite3_stmt *statement1=NULL; - sqlite3_stmt *statement32=NULL; //sqlite3 *mydb3=statsdb->get_db(); char *query1=NULL; char *query32=NULL; @@ -804,12 +802,12 @@ void ProxySQL_Admin::stats___mysql_processlist() { query32s = "INSERT OR IGNORE INTO stats_mysql_processlist VALUES " + generate_multi_rows_query(32,16); query32 = (char *)query32s.c_str(); - //rc=(*proxy_sqlite3_prepare_v2)(mydb3, query1, -1, &statement1, 0); - rc = statsdb->prepare_v2(query1, &statement1); - ASSERT_SQLITE_OK(rc, statsdb); - //rc=(*proxy_sqlite3_prepare_v2)(mydb3, query32, -1, &statement32, 0); - rc = statsdb->prepare_v2(query32, &statement32); - ASSERT_SQLITE_OK(rc, statsdb); + auto [rc1, statement1_unique] = statsdb->prepare_v2(query1); + ASSERT_SQLITE_OK(rc1, statsdb); + auto [rc2, statement32_unique] = statsdb->prepare_v2(query32); + ASSERT_SQLITE_OK(rc2, statsdb); + sqlite3_stmt *statement1 = statement1_unique.get(); + sqlite3_stmt *statement32 = statement32_unique.get(); /* for reference CREATE TABLE stats_mysql_processlist ( @@ -933,8 +931,7 @@ CREATE TABLE stats_mysql_processlist ( } row_idx++; } - (*proxy_sqlite3_finalize)(statement1); - (*proxy_sqlite3_finalize)(statement32); + // RAII auto-finalizes statement1 and statement32 statsdb->execute("COMMIT"); delete resultset; } @@ -958,11 +955,13 @@ void ProxySQL_Admin::stats___pgsql_processlist() { query32 = (char*)query32s.c_str(); //rc=(*proxy_sqlite3_prepare_v2)(mydb3, query1, -1, &statement1, 0); - rc = statsdb->prepare_v2(query1, &statement1); - ASSERT_SQLITE_OK(rc, statsdb); + auto [rc1, statement1_unique] = statsdb->prepare_v2(query1); + ASSERT_SQLITE_OK(rc1, statsdb); + sqlite3_stmt *statement1 = statement1_unique.get(); //rc=(*proxy_sqlite3_prepare_v2)(mydb3, query32, -1, &statement32, 0); - rc = statsdb->prepare_v2(query32, &statement32); - ASSERT_SQLITE_OK(rc, statsdb); + auto [rc2, statement32_unique] = statsdb->prepare_v2(query32); + ASSERT_SQLITE_OK(rc2, statsdb); + sqlite3_stmt *statement32 = statement32_unique.get(); statsdb->execute("BEGIN"); statsdb->execute("DELETE FROM stats_pgsql_processlist"); @@ -1078,8 +1077,7 @@ void ProxySQL_Admin::stats___pgsql_processlist() { } row_idx++; } - (*proxy_sqlite3_finalize)(statement1); - (*proxy_sqlite3_finalize)(statement32); + // RAII auto-finalizes statement1 and statement32 statsdb->execute("COMMIT"); delete resultset; } @@ -1143,8 +1141,6 @@ void ProxySQL_Admin::stats___mysql_free_connections() { SQLite3_result * resultset=MyHGM->SQL3_Free_Connections(); if (resultset==NULL) return; - sqlite3_stmt *statement1=NULL; - sqlite3_stmt *statement32=NULL; //sqlite3 *mydb3=statsdb->get_db(); char *query1=NULL; char *query32=NULL; @@ -1155,11 +1151,13 @@ void ProxySQL_Admin::stats___mysql_free_connections() { query32 = (char *)query32s.c_str(); //rc=(*proxy_sqlite3_prepare_v2)(mydb3, query1, -1, &statement1, 0); - rc = statsdb->prepare_v2(query1, &statement1); - ASSERT_SQLITE_OK(rc, statsdb); + auto [rc1, statement1_unique] = statsdb->prepare_v2(query1); + ASSERT_SQLITE_OK(rc1, statsdb); + sqlite3_stmt *statement1 = statement1_unique.get(); //rc=(*proxy_sqlite3_prepare_v2)(mydb3, query32, -1, &statement32, 0); - rc = statsdb->prepare_v2(query32, &statement32); - ASSERT_SQLITE_OK(rc, statsdb); + auto [rc2, statement32_unique] = statsdb->prepare_v2(query32); + ASSERT_SQLITE_OK(rc2, statsdb); + sqlite3_stmt *statement32 = statement32_unique.get(); statsdb->execute("BEGIN"); statsdb->execute("DELETE FROM stats_mysql_free_connections"); @@ -1257,11 +1255,13 @@ void ProxySQL_Admin::stats___pgsql_free_connections() { query32 = (char*)query32s.c_str(); //rc=(*proxy_sqlite3_prepare_v2)(mydb3, query1, -1, &statement1, 0); - rc = statsdb->prepare_v2(query1, &statement1); - ASSERT_SQLITE_OK(rc, statsdb); + auto [rc1, statement1_unique] = statsdb->prepare_v2(query1); + ASSERT_SQLITE_OK(rc1, statsdb); + sqlite3_stmt *statement1 = statement1_unique.get(); //rc=(*proxy_sqlite3_prepare_v2)(mydb3, query32, -1, &statement32, 0); - rc = statsdb->prepare_v2(query32, &statement32); - ASSERT_SQLITE_OK(rc, statsdb); + auto [rc2, statement32_unique] = statsdb->prepare_v2(query32); + ASSERT_SQLITE_OK(rc2, statsdb); + sqlite3_stmt *statement32 = statement32_unique.get(); statsdb->execute("BEGIN"); statsdb->execute("DELETE FROM stats_pgsql_free_connections"); @@ -1804,8 +1804,6 @@ int ProxySQL_Admin::stats___mysql_query_digests(bool reset, bool copy) { if (resultset==NULL) return 0; statsdb->execute("BEGIN"); int rc; - sqlite3_stmt *statement1=NULL; - sqlite3_stmt *statement32=NULL; //sqlite3 *mydb3=statsdb->get_db(); char *query1=NULL; char *query32=NULL; @@ -1828,11 +1826,13 @@ int ProxySQL_Admin::stats___mysql_query_digests(bool reset, bool copy) { } //rc=(*proxy_sqlite3_prepare_v2)(mydb3, query1, -1, &statement1, 0); - rc = statsdb->prepare_v2(query1, &statement1); - ASSERT_SQLITE_OK(rc, statsdb); + auto [rc1, statement1_unique] = statsdb->prepare_v2(query1); + ASSERT_SQLITE_OK(rc1, statsdb); + sqlite3_stmt *statement1 = statement1_unique.get(); //rc=(*proxy_sqlite3_prepare_v2)(mydb3, query32, -1, &statement32, 0); - rc = statsdb->prepare_v2(query32, &statement32); - ASSERT_SQLITE_OK(rc, statsdb); + auto [rc2, statement32_unique] = statsdb->prepare_v2(query32); + ASSERT_SQLITE_OK(rc2, statsdb); + sqlite3_stmt *statement32 = statement32_unique.get(); int row_idx=0; int max_bulk_row_idx=resultset->rows_count/32; max_bulk_row_idx=max_bulk_row_idx*32; @@ -2039,8 +2039,6 @@ void ProxySQL_Admin::stats___mysql_errors(bool reset) { if (resultset==NULL) return; statsdb->execute("BEGIN"); int rc; - sqlite3_stmt *statement1=NULL; - sqlite3_stmt *statement32=NULL; //sqlite3 *mydb3=statsdb->get_db(); char *query1=NULL; char *query32=NULL; @@ -2061,11 +2059,13 @@ void ProxySQL_Admin::stats___mysql_errors(bool reset) { } //rc=(*proxy_sqlite3_prepare_v2)(mydb3, query1, -1, &statement1, 0); - rc = statsdb->prepare_v2(query1, &statement1); - ASSERT_SQLITE_OK(rc, statsdb); + auto [rc1, statement1_unique] = statsdb->prepare_v2(query1); + ASSERT_SQLITE_OK(rc1, statsdb); + sqlite3_stmt *statement1 = statement1_unique.get(); //rc=(*proxy_sqlite3_prepare_v2)(mydb3, query32, -1, &statement32, 0); - rc = statsdb->prepare_v2(query32, &statement32); - ASSERT_SQLITE_OK(rc, statsdb); + auto [rc2, statement32_unique] = statsdb->prepare_v2(query32); + ASSERT_SQLITE_OK(rc2, statsdb); + sqlite3_stmt *statement32 = statement32_unique.get(); int row_idx=0; int max_bulk_row_idx=resultset->rows_count/32; max_bulk_row_idx=max_bulk_row_idx*32; @@ -2107,8 +2107,7 @@ void ProxySQL_Admin::stats___mysql_errors(bool reset) { } row_idx++; } - (*proxy_sqlite3_finalize)(statement1); - (*proxy_sqlite3_finalize)(statement32); + // RAII auto-finalizes statement1 and statement32 statsdb->execute("COMMIT"); delete resultset; } @@ -2350,8 +2349,6 @@ void ProxySQL_Admin::stats___mysql_prepared_statements_info() { if (resultset==NULL) return; statsdb->execute("BEGIN"); int rc; - sqlite3_stmt *statement1=NULL; - sqlite3_stmt *statement32=NULL; //sqlite3 *mydb3=statsdb->get_db(); char *query1=NULL; char *query32=NULL; @@ -2362,11 +2359,13 @@ void ProxySQL_Admin::stats___mysql_prepared_statements_info() { query32 = (char *)query32s.c_str(); //rc=(*proxy_sqlite3_prepare_v2)(mydb3, query1, -1, &statement1, 0); //rc=(*proxy_sqlite3_prepare_v2)(mydb3, query1, -1, &statement1, 0); - rc = statsdb->prepare_v2(query1, &statement1); - ASSERT_SQLITE_OK(rc, statsdb); + auto [rc1, statement1_unique] = statsdb->prepare_v2(query1); + ASSERT_SQLITE_OK(rc1, statsdb); + sqlite3_stmt *statement1 = statement1_unique.get(); //rc=(*proxy_sqlite3_prepare_v2)(mydb3, query32, -1, &statement32, 0); - rc = statsdb->prepare_v2(query32, &statement32); - ASSERT_SQLITE_OK(rc, statsdb); + auto [rc2, statement32_unique] = statsdb->prepare_v2(query32); + ASSERT_SQLITE_OK(rc2, statsdb); + sqlite3_stmt *statement32 = statement32_unique.get(); int row_idx=0; int max_bulk_row_idx=resultset->rows_count/32; max_bulk_row_idx=max_bulk_row_idx*32; @@ -2404,8 +2403,7 @@ void ProxySQL_Admin::stats___mysql_prepared_statements_info() { } row_idx++; } - (*proxy_sqlite3_finalize)(statement1); - (*proxy_sqlite3_finalize)(statement32); + // RAII auto-finalizes statement1 and statement32 statsdb->execute("COMMIT"); delete resultset; } @@ -2429,11 +2427,13 @@ void ProxySQL_Admin::stats___pgsql_prepared_statements_info() { query32 = (char*)query32s.c_str(); //rc=(*proxy_sqlite3_prepare_v2)(mydb3, query1, -1, &statement1, 0); //rc=(*proxy_sqlite3_prepare_v2)(mydb3, query1, -1, &statement1, 0); - rc = statsdb->prepare_v2(query1, &statement1); - ASSERT_SQLITE_OK(rc, statsdb); + auto [rc1, statement1_unique] = statsdb->prepare_v2(query1); + ASSERT_SQLITE_OK(rc1, statsdb); + sqlite3_stmt *statement1 = statement1_unique.get(); //rc=(*proxy_sqlite3_prepare_v2)(mydb3, query32, -1, &statement32, 0); - rc = statsdb->prepare_v2(query32, &statement32); - ASSERT_SQLITE_OK(rc, statsdb); + auto [rc2, statement32_unique] = statsdb->prepare_v2(query32); + ASSERT_SQLITE_OK(rc2, statsdb); + sqlite3_stmt *statement32 = statement32_unique.get(); int row_idx = 0; int max_bulk_row_idx = resultset->rows_count / 32; max_bulk_row_idx = max_bulk_row_idx * 32; @@ -2469,8 +2469,7 @@ void ProxySQL_Admin::stats___pgsql_prepared_statements_info() { } row_idx++; } - (*proxy_sqlite3_finalize)(statement1); - (*proxy_sqlite3_finalize)(statement32); + // RAII auto-finalizes statement1 and statement32 statsdb->execute("COMMIT"); delete resultset; }