From 73555410e9a8d20e77ad49a61347a7958329c775 Mon Sep 17 00:00:00 2001 From: Rene Cannao Date: Mon, 9 Feb 2026 15:06:46 +0000 Subject: [PATCH] refactor: migrate prepare_v2 SIMPLE case in FlushDigestTableToDisk template Migrated the template function FlushDigestTableToDisk to use RAII-based prepare_v2. This function is instantiated for both MySQL and PostgreSQL, eliminating 8 deprecation warnings (4 instantiations x 2 prepare_v2 calls). The RAII pattern ensures automatic cleanup and eliminates manual (*proxy_sqlite3_finalize) calls. --- lib/ProxySQL_Admin.cpp | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/lib/ProxySQL_Admin.cpp b/lib/ProxySQL_Admin.cpp index 579c3d0d2..dffe362c5 100644 --- a/lib/ProxySQL_Admin.cpp +++ b/lib/ProxySQL_Admin.cpp @@ -953,8 +953,6 @@ int ProxySQL_Admin::FlushDigestTableToDisk(SQLite3DB *_db) { SQLite3DB * sdb = _db; sdb->execute("BEGIN"); int rc; - sqlite3_stmt *statement1=NULL; - sqlite3_stmt *statement32=NULL; char *query1=NULL; char *query32=NULL; std::string query32s = ""; @@ -968,10 +966,12 @@ int ProxySQL_Admin::FlushDigestTableToDisk(SQLite3DB *_db) { } query32 = (char *)query32s.c_str(); - rc = sdb->prepare_v2(query1, &statement1); - ASSERT_SQLITE_OK(rc, sdb); - rc = sdb->prepare_v2(query32, &statement32); - ASSERT_SQLITE_OK(rc, sdb); + auto [rc1, statement1_unique] = sdb->prepare_v2(query1); + ASSERT_SQLITE_OK(rc1, sdb); + auto [rc2, statement32_unique] = sdb->prepare_v2(query32); + ASSERT_SQLITE_OK(rc2, sdb); + sqlite3_stmt *statement1 = statement1_unique.get(); + sqlite3_stmt *statement32 = statement32_unique.get(); int row_idx=0; int max_bulk_row_idx=r/32; max_bulk_row_idx=max_bulk_row_idx*32; @@ -1069,8 +1069,7 @@ int ProxySQL_Admin::FlushDigestTableToDisk(SQLite3DB *_db) { } row_idx++; } - (*proxy_sqlite3_finalize)(statement1); - (*proxy_sqlite3_finalize)(statement32); + // RAII auto-finalizes statement1 and statement32 sdb->execute("COMMIT"); for (std::unordered_map::iterator it=uqd.begin(); it!=uqd.end(); ++it) {