@cryptotaxi247 / netdata-1 / commits / 048f7f7e4

remove user-specified zero dimensions with nonzero option

remove dimensions that have been specified by the user if all values are zeros and nonzero option was also set

Stefan Forstenlechner committed Jan 26, 2017 at 13:12 UTC 048f7f7e4ad518adad428302da70fdc5dedde273
1 file changed +5 -4
src/rrd2json.c
+5 -4
@@ -541,7 +541,7 @@ static void rrdr_dump(RRDR *r)
541 }
542 */
543
544 -void rrdr_disable_not_selected_dimensions(RRDR *r, const char *dims)
544 +void rrdr_disable_not_selected_dimensions(RRDR *r, uint32_t options, const char *dims)
545 {
546 char b[strlen(dims) + 1];
547 char *o = b, *tok;
@@ -567,7 +567,8 @@ void rrdr_disable_not_selected_dimensions(RRDR *r, const char *dims)
567 // since the user needs this dimension
568 // make it appear as NONZERO, to return it
569 // even if the dimension has only zeros
570 - r->od[c] |= RRDR_NONZERO;
570 + // unless option non_zero is set
571 + if (!(options & RRDR_OPTION_NONZERO)) r->od[c] |= RRDR_NONZERO;
572 }
573 }
574 }
@@ -1778,7 +1779,7 @@ int rrd2value(RRDSET *st, BUFFER *wb, calculated_number *n, const char *dimensio
1779 options = rrdr_check_options(r, options, dimensions);
1780
1781 if(dimensions)
1781 - rrdr_disable_not_selected_dimensions(r, dimensions);
1782 + rrdr_disable_not_selected_dimensions(r, options, dimensions);
1783
1784 if(db_after) *db_after = r->after;
1785 if(db_before) *db_before = r->before;
@@ -1806,7 +1807,7 @@ int rrd2format(RRDSET *st, BUFFER *wb, BUFFER *dimensions, uint32_t format, long
1807 options = rrdr_check_options(r, options, (dimensions)?buffer_tostring(dimensions):NULL);
1808
1809 if(dimensions)
1809 - rrdr_disable_not_selected_dimensions(r, buffer_tostring(dimensions));
1810 + rrdr_disable_not_selected_dimensions(r, options, buffer_tostring(dimensions));
1811
1812 if(latest_timestamp && rrdr_rows(r) > 0)
1813 *latest_timestamp = r->before;