X-Git-Url: https://git.tokkee.org/?p=rrdtool-all.git;a=blobdiff_plain;f=program%2Fsrc%2Frrd_fetch.c;h=47b41669fd25a390bbc2385b5e91663f6c1231de;hp=bbb5314f3f87182a96b6f0c732bebff2c3211f12;hb=624c179153ca5878269ea9eaa79516832bbf20b1;hpb=1ac92c058b74b6c85e2761bea8e68d9469dc9ffe diff --git a/program/src/rrd_fetch.c b/program/src/rrd_fetch.c index bbb5314f..47b41669 100644 --- a/program/src/rrd_fetch.c +++ b/program/src/rrd_fetch.c @@ -270,7 +270,34 @@ int rrd_fetch_fn( /* find the rra which best matches the requirements */ for (i = 0; (unsigned) i < rrd.stat_head->rra_cnt; i++) { - if (cf_conv(rrd.rra_def[i].cf_nam) == cf_idx) { + enum cf_en rratype=cf_conv(rrd.rra_def[i].cf_nam); + /* handle this RRA */ + if ( + /* if we found a direct match */ + (rratype == cf_idx) + || + /*if we found a DS with interval 1 + and CF (requested,available) are MIN,MAX,AVERAGE,LAST + */ + ( + /* only if we are on interval 1 */ + (rrd.rra_def[i].pdp_cnt==1) + && ( + /* and requested CF is MIN,MAX,AVERAGE,LAST */ + (cf_idx == CF_MINIMUM) + ||(cf_idx == CF_MAXIMUM) + ||(cf_idx == CF_AVERAGE) + ||(cf_idx == CF_LAST) + ) + && ( + /* and found CF is MIN,MAX,AVERAGE,LAST */ + (rratype == CF_MINIMUM) + ||(rratype == CF_MAXIMUM) + ||(rratype == CF_AVERAGE) + ||(rratype == CF_LAST) + ) + ) + ){ cal_end = (rrd.live_head->last_up - (rrd.live_head->last_up % (rrd.rra_def[i].pdp_cnt