restored min-max calculation of RRDR (#4489)
Costa Tsaousis committed
Oct 25, 2018 at 16:32 UTC
652654c1acab4c748ad54f7ed0e871921dd046e2
1 file changed
+12
-1
web/api/queries/query.c
+12
-1
@@ -408,6 +408,7 @@ static inline void do_dimension(
408
RRDR_VALUE_FLAGS
409
group_value_flags = RRDR_VALUE_NOTHING;
410
411
+ calculated_number min = NAN, max = NAN;
412
size_t db_points_read = 0;
413
for( ; points_added < points_wanted ; now += dt, slot++ ) {
414
if(unlikely(slot >= entries)) slot = 0;
@@ -462,7 +463,15 @@ static inline void do_dimension(
463
*rrdr_value_options_ptr = group_value_flags;
464
465
// store the value
465
- r->v[rrdr_line * r->d + dim_id_in_rrdr] = r->internal.grouping_flush(r, rrdr_value_options_ptr);
466
+ calculated_number value = r->internal.grouping_flush(r, rrdr_value_options_ptr);
467
+ r->v[rrdr_line * r->d + dim_id_in_rrdr] = value;
468
+
469
+ if(likely(points_added)) {
470
+ if(unlikely(value < min)) min = value;
471
+ if(unlikely(value > max)) max = value;
472
+ }
473
+ else
474
+ min = max = value;
475
476
points_added++;
477
values_in_group = 0;
@@ -474,6 +483,8 @@ static inline void do_dimension(
483
r->internal.db_points_read += db_points_read;
484
r->internal.result_points_generated += points_added;
485
486
+ r->min = min;
487
+ r->max = max;
488
r->before = max_date;
489
r->after = min_date;
490
rrdr_done(r, rrdr_line);