diff options
Diffstat (limited to 'database/contexts/query_target.c')
-rw-r--r-- | database/contexts/query_target.c | 38 |
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; |