Change MSSQL Cleanup and Queries (windows.plugin) (#20892)
thiagoftsm committed
Sep 9, 2025 at 11:20 UTC
6704c1e4a553951609a181a0ef1d459e0cd558c0
1 file changed
+30
-13
src/collectors/windows.plugin/perflib-mssql.c
+30
-13
@@ -311,9 +311,7 @@ static void netdata_MSSQL_error(uint32_t type, SQLHANDLE handle, enum netdata_ms
311
312
static inline void netdata_MSSQL_release_results(SQLHSTMT *stmt)
313
{
314
- SQLFreeStmt(stmt, SQL_CLOSE);
315
- SQLFreeStmt(stmt, SQL_UNBIND);
316
- SQLFreeStmt(stmt, SQL_RESET_PARAMS);
314
+ SQLCloseCursor(stmt);
315
}
316
317
static ULONGLONG netdata_MSSQL_fill_long_value(SQLHSTMT *stmt, const char *mask, const char *dbname, char *instance)
@@ -880,7 +878,7 @@ enddblist:
878
netdata_MSSQL_release_results(mi->conn->databaseListSTMT);
879
}
880
883
-static bool netdata_MSSQL_initialize_conection(struct netdata_mssql_conn *nmc)
881
+static bool netdata_MSSQL_initialize_connection(struct netdata_mssql_conn *nmc)
882
{
883
SQLRETURN ret;
884
if (nmc->netdataSQLEnv == NULL) {
@@ -929,39 +927,58 @@ static bool netdata_MSSQL_initialize_conection(struct netdata_mssql_conn *nmc)
927
}
928
929
if (retConn) {
930
+ SQLSetConnectAttr(nmc->netdataSQLHDBc, SQL_ATTR_AUTOCOMMIT, (SQLPOINTER)SQL_AUTOCOMMIT_ON, 0);
931
+
932
ret = SQLAllocHandle(SQL_HANDLE_STMT, nmc->netdataSQLHDBc, &nmc->checkPermSTMT);
933
- if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO)
933
+ if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) {
934
retConn = FALSE;
935
+ goto endMSSQLInitializationConnection;
936
+ }
937
938
ret = SQLAllocHandle(SQL_HANDLE_STMT, nmc->netdataSQLHDBc, &nmc->databaseListSTMT);
937
- if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO)
939
+ if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) {
940
retConn = FALSE;
941
+ goto endMSSQLInitializationConnection;
942
+ }
943
944
ret = SQLAllocHandle(SQL_HANDLE_STMT, nmc->netdataSQLHDBc, &nmc->dataFileSizeSTMT);
941
- if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO)
945
+ if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) {
946
retConn = FALSE;
947
+ goto endMSSQLInitializationConnection;
948
+ }
949
950
ret = SQLAllocHandle(SQL_HANDLE_STMT, nmc->netdataSQLHDBc, &nmc->dbTransactionSTMT);
945
- if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO)
951
+ if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) {
952
retConn = FALSE;
953
+ goto endMSSQLInitializationConnection;
954
+ }
955
956
ret = SQLAllocHandle(SQL_HANDLE_STMT, nmc->netdataSQLHDBc, &nmc->dbInstanceTransactionSTMT);
949
- if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO)
957
+ if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) {
958
retConn = FALSE;
959
+ goto endMSSQLInitializationConnection;
960
+ }
961
962
ret = SQLAllocHandle(SQL_HANDLE_STMT, nmc->netdataSQLHDBc, &nmc->dbLocksSTMT);
953
- if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO)
963
+ if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) {
964
retConn = FALSE;
965
+ goto endMSSQLInitializationConnection;
966
+ }
967
968
ret = SQLAllocHandle(SQL_HANDLE_STMT, nmc->netdataSQLHDBc, &nmc->dbWaitsSTMT);
957
- if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO)
969
+ if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) {
970
retConn = FALSE;
971
+ goto endMSSQLInitializationConnection;
972
+ }
973
974
ret = SQLAllocHandle(SQL_HANDLE_STMT, nmc->netdataSQLHDBc, &nmc->dbSQLState);
961
- if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO)
975
+ if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) {
976
retConn = FALSE;
977
+ goto endMSSQLInitializationConnection;
978
+ }
979
}
980
981
+endMSSQLInitializationConnection:
982
return retConn;
983
}
984
@@ -1225,7 +1242,7 @@ void dict_mssql_insert_cb(const DICTIONARY_ITEM *item __maybe_unused, void *valu
1242
mi->conn = netdata_mssql_get_conn_option(instance);
1243
1244
if (mi->conn && mi->conn->connectionString) {
1228
- mi->conn->is_connected = netdata_MSSQL_initialize_conection(mi->conn);
1245
+ mi->conn->is_connected = netdata_MSSQL_initialize_connection(mi->conn);
1246
if (mi->conn->is_connected)
1247
*create_thread = true;
1248
}