From: oetiker Date: Thu, 23 Feb 2006 07:26:28 +0000 (+0000) Subject: separate matching of full and partial match evaluation for better result stability... X-Git-Url: https://git.octo.it/?p=rrdtool.git;a=commitdiff_plain;h=4e72db81565dc384eea4f56f6ad96b9bb3e6bbd9 separate matching of full and partial match evaluation for better result stability. The fetch result was dependent on the RRA ordering before. -- Jo Rhett jrhett svcolo.com git-svn-id: svn://svn.oetiker.ch/rrdtool/branches/1.2/program@766 a5681a0c-68f1-0310-ab6d-d61299d08faa --- diff --git a/src/rrd_fetch.c b/src/rrd_fetch.c index bc1557d..59f17c1 100644 --- a/src/rrd_fetch.c +++ b/src/rrd_fetch.c @@ -175,7 +175,7 @@ rrd_fetch_fn( FILE *in_file; time_t cal_start,cal_end, rra_start_time,rra_end_time; long best_full_rra=0, best_part_rra=0, chosen_rra=0, rra_pointer=0; - long best_step_diff=0, tmp_step_diff=0, tmp_match=0, best_match=0; + long best_full_step_diff=0, best_part_step_diff=0, tmp_step_diff=0, tmp_match=0, best_match=0; long full_match, rra_base; long start_offset, end_offset; int first_full = 1; @@ -239,9 +239,9 @@ fprintf(stderr,"Considering: start %10lu end %10lu step %5lu ", /* best full match */ if(cal_end >= *end && cal_start <= *start){ - if (first_full || (tmp_step_diff < best_step_diff)){ + if (first_full || (tmp_step_diff < best_full_step_diff)){ first_full=0; - best_step_diff = tmp_step_diff; + best_full_step_diff = tmp_step_diff; best_full_rra=i; #ifdef DEBUG fprintf(stderr,"best full match so far\n"); @@ -262,13 +262,13 @@ fprintf(stderr,"full match, not best\n"); if (first_part || (best_match < tmp_match) || (best_match == tmp_match && - tmp_step_diff < best_step_diff)){ + tmp_step_diff < best_part_step_diff)){ #ifdef DEBUG fprintf(stderr,"best partial so far\n"); #endif first_part=0; best_match = tmp_match; - best_step_diff = tmp_step_diff; + best_part_step_diff = tmp_step_diff; best_part_rra =i; } else { #ifdef DEBUG