summaryrefslogtreecommitdiffstats
path: root/database/contexts/query_target.c
diff options
context:
space:
mode:
Diffstat (limited to 'database/contexts/query_target.c')
-rw-r--r--database/contexts/query_target.c38
1 files changed, 19 insertions, 19 deletions
diff --git a/database/contexts/query_target.c b/database/contexts/query_target.c
index 508977ce7a..e2e36a11ea 100644
--- a/database/contexts/query_target.c
+++ b/database/contexts/query_target.c
@@ -211,19 +211,19 @@ typedef struct query_target_locals {
QUERY_NODE *qn; // temp to pass on callbacks, ignore otherwise - no need to free
} QUERY_TARGET_LOCALS;
-struct storage_engine *query_metric_storage_engine(QUERY_TARGET *qt, QUERY_METRIC *qm, size_t tier) {
+STORAGE_ENGINE_ID query_metric_storage_engine(QUERY_TARGET *qt, QUERY_METRIC *qm, size_t tier) {
QUERY_NODE *qn = query_node(qt, qm->link.query_node_id);
- return qn->rrdhost->db[tier].eng;
+ return qn->rrdhost->db[tier].id;
}
static inline void query_metric_release(QUERY_TARGET *qt, QUERY_METRIC *qm) {
qm->plan.used = 0;
// reset the tiers
- for(size_t tier = 0; tier < storage_tiers ;tier++) {
+ for(size_t tier = 0; tier < rrdb.storage_tiers ;tier++) {
if(qm->tiers[tier].db_metric_handle) {
- STORAGE_ENGINE *eng = query_metric_storage_engine(qt, qm, tier);
- eng->api.metric_release(qm->tiers[tier].db_metric_handle);
+ STORAGE_ENGINE_ID storage_engine_id = query_metric_storage_engine(qt, qm, tier);
+ storage_engine_metric_release(storage_engine_id, qm->tiers[tier].db_metric_handle);
qm->tiers[tier].db_metric_handle = NULL;
}
}
@@ -240,26 +240,26 @@ static bool query_metric_add(QUERY_TARGET_LOCALS *qtl, QUERY_NODE *qn, QUERY_CON
size_t tiers_added = 0;
struct {
- STORAGE_ENGINE *eng;
+ STORAGE_ENGINE_ID storage_engine_id;
STORAGE_METRIC_HANDLE *db_metric_handle;
time_t db_first_time_s;
time_t db_last_time_s;
time_t db_update_every_s;
- } tier_retention[storage_tiers];
+ } tier_retention[rrdb.storage_tiers];
- for (size_t tier = 0; tier < storage_tiers; tier++) {
- STORAGE_ENGINE *eng = qn->rrdhost->db[tier].eng;
- tier_retention[tier].eng = eng;
+ for (size_t tier = 0; tier < rrdb.storage_tiers; tier++) {
+ STORAGE_ENGINE_ID storage_engine_id = qn->rrdhost->db[tier].id;
+ tier_retention[tier].storage_engine_id = storage_engine_id;
tier_retention[tier].db_update_every_s = (time_t) (qn->rrdhost->db[tier].tier_grouping * ri->update_every_s);
if(rm->rrddim && rm->rrddim->tiers[tier].db_metric_handle)
- tier_retention[tier].db_metric_handle = eng->api.metric_dup(rm->rrddim->tiers[tier].db_metric_handle);
+ tier_retention[tier].db_metric_handle = storage_engine_metric_dup(rm->rrddim->rrdset->storage_engine_id, rm->rrddim->tiers[tier].db_metric_handle);
else
- tier_retention[tier].db_metric_handle = eng->api.metric_get(qn->rrdhost->db[tier].instance, &rm->uuid);
+ tier_retention[tier].db_metric_handle = storage_engine_metric_get(qn->rrdhost->db[tier].id, qn->rrdhost->db[tier].instance, &rm->uuid);
if(tier_retention[tier].db_metric_handle) {
- tier_retention[tier].db_first_time_s = storage_engine_oldest_time_s(tier_retention[tier].eng->backend, tier_retention[tier].db_metric_handle);
- tier_retention[tier].db_last_time_s = storage_engine_latest_time_s(tier_retention[tier].eng->backend, tier_retention[tier].db_metric_handle);
+ tier_retention[tier].db_first_time_s = storage_engine_oldest_time_s(tier_retention[tier].storage_engine_id, tier_retention[tier].db_metric_handle);
+ tier_retention[tier].db_last_time_s = storage_engine_latest_time_s(tier_retention[tier].storage_engine_id, tier_retention[tier].db_metric_handle);
if(!common_first_time_s)
common_first_time_s = tier_retention[tier].db_first_time_s;
@@ -285,7 +285,7 @@ static bool query_metric_add(QUERY_TARGET_LOCALS *qtl, QUERY_NODE *qn, QUERY_CON
}
}
- for (size_t tier = 0; tier < storage_tiers; tier++) {
+ for (size_t tier = 0; tier < rrdb.storage_tiers; tier++) {
if(!qt->db.tiers[tier].update_every || (tier_retention[tier].db_update_every_s && tier_retention[tier].db_update_every_s < qt->db.tiers[tier].update_every))
qt->db.tiers[tier].update_every = tier_retention[tier].db_update_every_s;
@@ -329,8 +329,8 @@ static bool query_metric_add(QUERY_TARGET_LOCALS *qtl, QUERY_NODE *qn, QUERY_CON
if (!qt->db.last_time_s || common_last_time_s > qt->db.last_time_s)
qt->db.last_time_s = common_last_time_s;
- for (size_t tier = 0; tier < storage_tiers; tier++) {
- internal_fatal(tier_retention[tier].eng != query_metric_storage_engine(qt, qm, tier), "QUERY TARGET: storage engine mismatch");
+ for (size_t tier = 0; tier < rrdb.storage_tiers; tier++) {
+ internal_fatal(tier_retention[tier].storage_engine_id != query_metric_storage_engine(qt, qm, tier), "QUERY TARGET: storage engine mismatch");
qm->tiers[tier].db_metric_handle = tier_retention[tier].db_metric_handle;
qm->tiers[tier].db_first_time_s = tier_retention[tier].db_first_time_s;
qm->tiers[tier].db_last_time_s = tier_retention[tier].db_last_time_s;
@@ -341,9 +341,9 @@ static bool query_metric_add(QUERY_TARGET_LOCALS *qtl, QUERY_NODE *qn, QUERY_CON
}
// cleanup anything we allocated to the retention we will not use
- for(size_t tier = 0; tier < storage_tiers ;tier++) {
+ for(size_t tier = 0; tier < rrdb.storage_tiers ;tier++) {
if (tier_retention[tier].db_metric_handle)
- tier_retention[tier].eng->api.metric_release(tier_retention[tier].db_metric_handle);
+ storage_engine_metric_release(tier_retention[tier].storage_engine_id, tier_retention[tier].db_metric_handle);
}
return false;