@cryptotaxi247 / netdata / commits / 6704c1e4a

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 }