refactor: migrate prepare_v2 SIMPLE cases in PgSQL_Monitor.cpp

Migrated 5 prepare_v2 calls to RAII-based pattern in:
- update_monitor_pgsql_servers(): 2 statements (stmt1, stmt32)
- update_connect_table(): 1 statement (stmt)
- update_ping_table(): 1 statement (stmt)
- update_readonly_table(): 1 statement (stmt)
- maint_monitor_table(): 1 statement (stmt)

Note: Functions shunn_non_resp_srv() and update_srv_latency() were NOT
migrated because they use global thread_local cached statements, which is
a valid use case for the old API.

The RAII pattern ensures automatic cleanup and eliminates manual
sqlite_finalize_statement() calls.
pull/5357/head
Rene Cannao 3 months ago
parent 73555410e9
commit e4704c5a51

@ -210,19 +210,18 @@ void update_monitor_pgsql_servers(SQLite3_result* rs, SQLite3DB* db) {
if (rs != nullptr) {
db->execute("DELETE FROM monitor_internal.pgsql_servers");
sqlite3_stmt* stmt1 = nullptr;
int rc = db->prepare_v2(
"INSERT INTO monitor_internal.pgsql_servers VALUES (?, ?, ?, ?)", &stmt1
auto [rc1, stmt1_unique] = db->prepare_v2(
"INSERT INTO monitor_internal.pgsql_servers VALUES (?, ?, ?, ?)"
);
ASSERT_SQLITE_OK(rc, db);
ASSERT_SQLITE_OK(rc1, db);
sqlite3_stmt* stmt32 = nullptr;
rc = db->prepare_v2(
auto [rc2, stmt32_unique] = db->prepare_v2(
("INSERT INTO monitor_internal.pgsql_servers VALUES " +
generate_multi_rows_query(32, 4)).c_str(),
&stmt32
generate_multi_rows_query(32, 4)).c_str()
);
ASSERT_SQLITE_OK(rc, db);
ASSERT_SQLITE_OK(rc2, db);
sqlite3_stmt* stmt1 = stmt1_unique.get();
sqlite3_stmt* stmt32 = stmt32_unique.get();
// Iterate through rows
int row_idx = 0;
@ -255,9 +254,7 @@ void update_monitor_pgsql_servers(SQLite3_result* rs, SQLite3DB* db) {
row_idx++;
}
// Finalize statements
sqlite_finalize_statement(stmt1);
sqlite_finalize_statement(stmt32);
// RAII auto-finalizes stmt1 and stmt32
}
}
@ -1302,11 +1299,11 @@ bool is_task_finish(pgsql_conn_t& c, task_st_t& st) {
}
void update_connect_table(SQLite3DB* db, state_t& state) {
sqlite3_stmt* stmt = nullptr;
int rc = db->prepare_v2(
"INSERT OR REPLACE INTO pgsql_server_connect_log VALUES (?1 , ?2 , ?3 , ?4 , ?5)", &stmt
auto [rc1, stmt_unique] = db->prepare_v2(
"INSERT OR REPLACE INTO pgsql_server_connect_log VALUES (?1 , ?2 , ?3 , ?4 , ?5)"
);
ASSERT_SQLITE_OK(rc, db);
ASSERT_SQLITE_OK(rc1, db);
sqlite3_stmt* stmt = stmt_unique.get();
uint64_t op_dur_us { state.task.end - state.task.start };
@ -1324,7 +1321,7 @@ void update_connect_table(SQLite3DB* db, state_t& state) {
sqlite_clear_bindings(stmt);
sqlite_reset_statement(stmt);
sqlite_finalize_statement(stmt);
// RAII auto-finalizes stmt
if (state.conn.err) {
const mon_srv_t& srv { state.task.op_st.srv_info };
@ -1347,11 +1344,11 @@ void update_connect_table(SQLite3DB* db, state_t& state) {
}
void update_ping_table(SQLite3DB* db, state_t& state) {
sqlite3_stmt* stmt = nullptr;
int rc = db->prepare_v2(
"INSERT OR REPLACE INTO pgsql_server_ping_log VALUES (?1, ?2, ?3, ?4, ?5)", &stmt
auto [rc1, stmt_unique] = db->prepare_v2(
"INSERT OR REPLACE INTO pgsql_server_ping_log VALUES (?1, ?2, ?3, ?4, ?5)"
);
ASSERT_SQLITE_OK(rc, db);
ASSERT_SQLITE_OK(rc1, db);
sqlite3_stmt* stmt = stmt_unique.get();
uint64_t op_dur_us { state.task.end - state.task.start };
@ -1369,7 +1366,7 @@ void update_ping_table(SQLite3DB* db, state_t& state) {
sqlite_clear_bindings(stmt);
sqlite_reset_statement(stmt);
sqlite_finalize_statement(stmt);
// RAII auto-finalizes stmt
if (state.conn.err) {
const mon_srv_t& srv { state.task.op_st.srv_info };
@ -1396,11 +1393,11 @@ void update_readonly_table(SQLite3DB* db, state_t& state) {
static_cast<readonly_res_t*>(state.task.op_st.op_result.get())
};
sqlite3_stmt* stmt = nullptr;
int rc = db->prepare_v2(
"INSERT OR REPLACE INTO pgsql_server_read_only_log VALUES (?1, ?2, ?3, ?4, ?5, ?6)", &stmt
auto [rc1, stmt_unique] = db->prepare_v2(
"INSERT OR REPLACE INTO pgsql_server_read_only_log VALUES (?1, ?2, ?3, ?4, ?5, ?6)"
);
ASSERT_SQLITE_OK(rc, db);
ASSERT_SQLITE_OK(rc1, db);
sqlite3_stmt* stmt = stmt_unique.get();
uint64_t op_dur_us { state.task.end - state.task.start };
@ -1425,7 +1422,7 @@ void update_readonly_table(SQLite3DB* db, state_t& state) {
sqlite_clear_bindings(stmt);
sqlite_reset_statement(stmt);
sqlite_finalize_statement(stmt);
// RAII auto-finalizes stmt
if (state.conn.err) {
const mon_srv_t& srv { state.task.op_st.srv_info };
@ -1938,9 +1935,9 @@ void* worker_thread(void* args) {
}
void maint_monitor_table(SQLite3DB* db, const char query[], const ping_params_t& params) {
sqlite3_stmt* stmt { nullptr };
int rc = db->prepare_v2(query, &stmt);
ASSERT_SQLITE_OK(rc, db);
auto [rc1, stmt_unique] = db->prepare_v2(query);
ASSERT_SQLITE_OK(rc1, db);
sqlite3_stmt* stmt = stmt_unique.get();
if (pgsql_thread___monitor_history < (params.interval * (params.max_failures + 1)) / 1000) {
if (static_cast<uint64_t>(params.interval) < uint64_t(3600000) * 1000) {
@ -1954,7 +1951,7 @@ void maint_monitor_table(SQLite3DB* db, const char query[], const ping_params_t&
sqlite_clear_bindings(stmt);
sqlite_reset_statement(stmt);
sqlite_finalize_statement(stmt);
// RAII auto-finalizes stmt
}
const char MAINT_PING_LOG_QUERY[] {

Loading…
Cancel
Save