diff options
author | Costa Tsaousis <costa@tsaousis.gr> | 2018-10-26 02:53:22 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-26 02:53:22 +0300 |
commit | cdf57a00e1f1d8600bc0b90bf8f446ac475aef35 (patch) | |
tree | b59b302335e9622b1f499d2a50ea3fd1479f4a1e | |
parent | 7395d64aed0416b3c470f6b1cbf61e21bf77a508 (diff) |
fix query min-max, again... (#4495)
-rw-r--r-- | web/api/queries/query.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/web/api/queries/query.c b/web/api/queries/query.c index b157d2a962..87e8de09ed 100644 --- a/web/api/queries/query.c +++ b/web/api/queries/query.c @@ -408,7 +408,7 @@ static inline void do_dimension( RRDR_VALUE_FLAGS group_value_flags = RRDR_VALUE_NOTHING; - calculated_number min = NAN, max = NAN; + calculated_number min = r->min, max = r->max; size_t db_points_read = 0; for( ; points_added < points_wanted ; now += dt, slot++ ) { if(unlikely(slot >= entries)) slot = 0; @@ -466,12 +466,18 @@ static inline void do_dimension( calculated_number value = r->internal.grouping_flush(r, rrdr_value_options_ptr); r->v[rrdr_line * r->d + dim_id_in_rrdr] = value; - if(likely(points_added)) { + if(likely(points_added || dim_id_in_rrdr)) { + // find the min/max across all dimensions + if(unlikely(value < min)) min = value; if(unlikely(value > max)) max = value; + } - else + else { + // runs only when dim_id_in_rrdr == 0 && points_added == 0 + // so, on the first point added for the query. min = max = value; + } points_added++; values_in_group = 0; |