@cryptotaxi247 / netdata-1 / commits / 379c4f17c

Fix ML db model load function (#21700)

Update query and data mapping in `db_models_load`

Stelios Fragkakis committed Feb 4, 2026 at 00:06 UTC 379c4f17c181cfbb60cbec3f816d5c464d269bcf
1 file changed +19 -17
src/ml/ml.cc
+19 -17
@@ -168,7 +168,9 @@ const char *db_models_add_model =
168 " @c10, @c11, @c12, @c13, @c14, @c15);";
169
170 const char *db_models_load =
171 - "SELECT * FROM models "
171 + "SELECT after, before, min_dist, max_dist, "
172 + "c00, c01, c02, c03, c04, c05, "
173 + "c10, c11, c12, c13, c14, c15 FROM models "
174 "WHERE dim_id = @dim_id AND after >= @after ORDER BY before ASC;";
175
176 const char *db_models_delete =
@@ -407,29 +409,29 @@ int ml_dimension_load_models(RRDDIM *rd, sqlite3_stmt **active_stmt) {
409 while ((rc = sqlite3_step_monitored(res)) == SQLITE_ROW) {
410 ml_kmeans_t km;
411
410 - km.after = sqlite3_column_int(res, 2);
411 - km.before = sqlite3_column_int(res, 3);
412 + km.after = sqlite3_column_int(res, 0);
413 + km.before = sqlite3_column_int(res, 1);
414
413 - km.min_dist = sqlite3_column_int(res, 4);
414 - km.max_dist = sqlite3_column_int(res, 5);
415 + km.min_dist = sqlite3_column_double(res, 2);
416 + km.max_dist = sqlite3_column_double(res, 3);
417
418 km.cluster_centers.resize(2);
419
420 km.cluster_centers[0].set_size(Cfg.lag_n + 1);
419 - km.cluster_centers[0](0) = sqlite3_column_double(res, 6);
420 - km.cluster_centers[0](1) = sqlite3_column_double(res, 7);
421 - km.cluster_centers[0](2) = sqlite3_column_double(res, 8);
422 - km.cluster_centers[0](3) = sqlite3_column_double(res, 9);
423 - km.cluster_centers[0](4) = sqlite3_column_double(res, 10);
424 - km.cluster_centers[0](5) = sqlite3_column_double(res, 11);
421 + km.cluster_centers[0](0) = sqlite3_column_double(res, 4);
422 + km.cluster_centers[0](1) = sqlite3_column_double(res, 5);
423 + km.cluster_centers[0](2) = sqlite3_column_double(res, 6);
424 + km.cluster_centers[0](3) = sqlite3_column_double(res, 7);
425 + km.cluster_centers[0](4) = sqlite3_column_double(res, 8);
426 + km.cluster_centers[0](5) = sqlite3_column_double(res, 9);
427
428 km.cluster_centers[1].set_size(Cfg.lag_n + 1);
427 - km.cluster_centers[1](0) = sqlite3_column_double(res, 12);
428 - km.cluster_centers[1](1) = sqlite3_column_double(res, 13);
429 - km.cluster_centers[1](2) = sqlite3_column_double(res, 14);
430 - km.cluster_centers[1](3) = sqlite3_column_double(res, 15);
431 - km.cluster_centers[1](4) = sqlite3_column_double(res, 16);
432 - km.cluster_centers[1](5) = sqlite3_column_double(res, 17);
429 + km.cluster_centers[1](0) = sqlite3_column_double(res, 10);
430 + km.cluster_centers[1](1) = sqlite3_column_double(res, 11);
431 + km.cluster_centers[1](2) = sqlite3_column_double(res, 12);
432 + km.cluster_centers[1](3) = sqlite3_column_double(res, 13);
433 + km.cluster_centers[1](4) = sqlite3_column_double(res, 14);
434 + km.cluster_centers[1](5) = sqlite3_column_double(res, 15);
435
436 dim->km_contexts.emplace_back(km);
437 }