summaryrefslogtreecommitdiffstats
path: root/database
diff options
context:
space:
mode:
authorStelios Fragkakis <52996999+stelfrag@users.noreply.github.com>2020-09-24 13:05:15 +0300
committerGitHub <noreply@github.com>2020-09-24 13:05:15 +0300
commit80676423617d2587632eb69c9ea5a0ef0cb49d0c (patch)
tree960b8a1b7583801e13887d21ed456f46cbb851bd /database
parentb2ac03cf4bf6bf19783ff726585dc5b62bb55520 (diff)
Improved the data query when using the context parameter (#9978)
Diffstat (limited to 'database')
-rwxr-xr-xdatabase/engine/rrdengineapi.c3
-rw-r--r--database/engine/rrdengineapi.h2
-rw-r--r--database/rrd.h1
3 files changed, 4 insertions, 2 deletions
diff --git a/database/engine/rrdengineapi.c b/database/engine/rrdengineapi.c
index a8649a2238..4646e4e4af 100755
--- a/database/engine/rrdengineapi.c
+++ b/database/engine/rrdengineapi.c
@@ -376,7 +376,7 @@ static inline uint32_t *pginfo_to_points(struct rrdeng_page_info *page_info)
* @return number of regions with different data collection intervals.
*/
unsigned rrdeng_variable_step_boundaries(RRDSET *st, time_t start_time, time_t end_time,
- struct rrdeng_region_info **region_info_arrayp, unsigned *max_intervalp, RRDDIM *temp_rd)
+ struct rrdeng_region_info **region_info_arrayp, unsigned *max_intervalp, struct context_param *context_param_list)
{
struct pg_cache_page_index *page_index;
struct rrdengine_instance *ctx;
@@ -396,6 +396,7 @@ unsigned rrdeng_variable_step_boundaries(RRDSET *st, time_t start_time, time_t e
*region_info_arrayp = NULL;
page_info_array = NULL;
+ RRDDIM *temp_rd = context_param_list ? context_param_list->rd : NULL;
rrdset_rdlock(st);
for(rd_iter = temp_rd?temp_rd:st->dimensions, rd = NULL, min_time = (usec_t)-1 ; rd_iter ; rd_iter = rd_iter->next) {
/*
diff --git a/database/engine/rrdengineapi.h b/database/engine/rrdengineapi.h
index 8d4398c56b..41375b980c 100644
--- a/database/engine/rrdengineapi.h
+++ b/database/engine/rrdengineapi.h
@@ -43,7 +43,7 @@ extern void rrdeng_store_metric_next(RRDDIM *rd, usec_t point_in_time, storage_n
extern int rrdeng_store_metric_finalize(RRDDIM *rd);
extern unsigned
rrdeng_variable_step_boundaries(RRDSET *st, time_t start_time, time_t end_time,
- struct rrdeng_region_info **region_info_arrayp, unsigned *max_intervalp, RRDDIM *temp_rd);
+ struct rrdeng_region_info **region_info_arrayp, unsigned *max_intervalp, struct context_param *context_param_list);
extern void rrdeng_load_metric_init(RRDDIM *rd, struct rrddim_query_handle *rrdimm_handle,
time_t start_time, time_t end_time);
extern storage_number rrdeng_load_metric_next(struct rrddim_query_handle *rrdimm_handle, time_t *current_time);
diff --git a/database/rrd.h b/database/rrd.h
index 0825c955f8..06a9dc4cb9 100644
--- a/database/rrd.h
+++ b/database/rrd.h
@@ -13,6 +13,7 @@ typedef struct rrddimvar RRDDIMVAR;
typedef struct rrdcalc RRDCALC;
typedef struct rrdcalctemplate RRDCALCTEMPLATE;
typedef struct alarm_entry ALARM_ENTRY;
+typedef struct context_param CONTEXT_PARAM;
// forward declarations
struct rrddim_volatile;