projects
/
rrdtool.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
I was just taking a look at the development RRDtool build (I'm looking
[rrdtool.git]
/
src
/
rrd_fetch.c
diff --git
a/src/rrd_fetch.c
b/src/rrd_fetch.c
index
3260904
..
d5c5709
100644
(file)
--- a/
src/rrd_fetch.c
+++ b/
src/rrd_fetch.c
@@
-5,6
+5,10
@@
*****************************************************************************
* $Id$
* $Log$
*****************************************************************************
* $Id$
* $Log$
+ * Revision 1.6 2003/01/16 23:27:54 oetiker
+ * fix border condition in rra selection of rrd_fetch
+ * -- Stanislav Sinyagin <ssinyagin@yahoo.com>
+ *
* Revision 1.5 2002/06/23 22:29:40 alex
* Added "step=1800" and such to "DEF"
* Cleaned some of the signed vs. unsigned problems
* Revision 1.5 2002/06/23 22:29:40 alex
* Added "step=1800" and such to "DEF"
* Cleaned some of the signed vs. unsigned problems
@@
-222,11
+226,12
@@
fprintf(stderr,"Considering: start %10lu end %10lu step %5lu ",
cal_start,cal_end,
rrd.stat_head->pdp_step * rrd.rra_def[i].pdp_cnt);
#endif
cal_start,cal_end,
rrd.stat_head->pdp_step * rrd.rra_def[i].pdp_cnt);
#endif
+ /* we need step difference in either full or partial case */
+ tmp_step_diff = labs(*step - (rrd.stat_head->pdp_step
+ * rrd.rra_def[i].pdp_cnt));
/* best full match */
if(cal_end >= *end
&& cal_start <= *start){
/* best full match */
if(cal_end >= *end
&& cal_start <= *start){
- tmp_step_diff = labs(*step - (rrd.stat_head->pdp_step
- * rrd.rra_def[i].pdp_cnt));
if (first_full || (tmp_step_diff < best_step_diff)){
first_full=0;
best_step_diff = tmp_step_diff;
if (first_full || (tmp_step_diff < best_step_diff)){
first_full=0;
best_step_diff = tmp_step_diff;
@@
-247,12
+252,16
@@
fprintf(stderr,"full match, not best\n");
tmp_match -= (cal_start-*start);
if (cal_end<*end)
tmp_match -= (*end-cal_end);
tmp_match -= (cal_start-*start);
if (cal_end<*end)
tmp_match -= (*end-cal_end);
- if (first_part || best_match < tmp_match){
+ if (first_part ||
+ (best_match < tmp_match) ||
+ (best_match == tmp_match &&
+ tmp_step_diff < best_step_diff)){
#ifdef DEBUG
fprintf(stderr,"best partial so far\n");
#endif
first_part=0;
best_match = tmp_match;
#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_rra =i;
} else {
#ifdef DEBUG
best_part_rra =i;
} else {
#ifdef DEBUG