X-Git-Url: https://git.octo.it/?p=rrdtool.git;a=blobdiff_plain;f=src%2Frrd_fetch.c;fp=src%2Frrd_fetch.c;h=47b41669fd25a390bbc2385b5e91663f6c1231de;hp=bbb5314f3f87182a96b6f0c732bebff2c3211f12;hb=48b7b284e76ed01af3bc0b87dd15fb860c017464;hpb=d85e6bdfe82fdc4d16898df43f8a5371503816ae diff --git a/src/rrd_fetch.c b/src/rrd_fetch.c index bbb5314..47b4166 100644 --- a/src/rrd_fetch.c +++ b/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