summaryrefslogtreecommitdiffstats
path: root/web/api/queries/query.c
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2023-02-13 17:15:59 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2023-02-13 17:15:59 +0000
commitff2a76910f4b4da1741e9888f673343099784045 (patch)
tree347a727d55562dd12b4c49bff87322abc28255b9 /web/api/queries/query.c
parentAdding upstream version 1.38.0. (diff)
downloadnetdata-ff2a76910f4b4da1741e9888f673343099784045.tar.xz
netdata-ff2a76910f4b4da1741e9888f673343099784045.zip
Adding upstream version 1.38.1.upstream/1.38.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'web/api/queries/query.c')
-rw-r--r--web/api/queries/query.c28
1 files changed, 19 insertions, 9 deletions
diff --git a/web/api/queries/query.c b/web/api/queries/query.c
index 1f10c513..df7e0979 100644
--- a/web/api/queries/query.c
+++ b/web/api/queries/query.c
@@ -2273,9 +2273,11 @@ RRDR *rrd2rrdr(ONEWAYALLOC *owa, QUERY_TARGET *qt) {
r->internal.grouping_reset(r);
if(ops[c]) {
- r->od[c] |= RRDR_DIMENSION_SELECTED;
+ r->od[c] |= RRDR_DIMENSION_QUERIED;
rrd2rrdr_query_execute(r, c, ops[c]);
}
+ else
+ continue;
global_statistics_rrdr_query_completed(
1,
@@ -2385,15 +2387,23 @@ RRDR *rrd2rrdr(ONEWAYALLOC *owa, QUERY_TARGET *qt) {
// free all resources used by the grouping method
r->internal.grouping_free(r);
- // when all the dimensions are zero, we should return all of them
- if(unlikely((qt->window.options & RRDR_OPTION_NONZERO) && !dimensions_nonzero && !(r->result_options & RRDR_RESULT_OPTION_CANCEL))) {
- // all the dimensions are zero
- // mark them as NONZERO to send them all
- for(size_t c = 0, max = qt->query.used; c < max ; c++) {
- if(unlikely(r->od[c] & RRDR_DIMENSION_HIDDEN)) continue;
- r->od[c] |= RRDR_DIMENSION_NONZERO;
+ if(likely(dimensions_used)) {
+ // when all the dimensions are zero, we should return all of them
+ if (unlikely((qt->window.options & RRDR_OPTION_NONZERO) && !dimensions_nonzero &&
+ !(r->result_options & RRDR_RESULT_OPTION_CANCEL))) {
+ // all the dimensions are zero
+ // mark them as NONZERO to send them all
+ for (size_t c = 0, max = qt->query.used; c < max; c++) {
+ if (unlikely(r->od[c] & RRDR_DIMENSION_HIDDEN)) continue;
+ if (unlikely(!(r->od[c] & RRDR_DIMENSION_QUERIED))) continue;
+ r->od[c] |= RRDR_DIMENSION_NONZERO;
+ }
}
+
+ return r;
}
- return r;
+ // we couldn't query any dimension
+ rrdr_free(owa, r);
+ return NULL;
}