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
}