diff --git a/src/rrd_fetch_libdbi.c b/src/rrd_fetch_libdbi.c
index fb0dc7e81aef9b3794e28fea962ec19fe8a040a3..b4f0fc7912f012e469423131cffcdb7340e180e9 100644 (file)
--- a/src/rrd_fetch_libdbi.c
+++ b/src/rrd_fetch_libdbi.c
char where[10240];
table_help.conn=NULL;
table_help.where=where;
- table_help.filtename=filename;
+ table_help.filename=filename;
/* some loop variables */
int i=0;
(*data)[idx*(*ds_cnt)+1]=r_value; /* AVG */
(*data)[idx*(*ds_cnt)+2]=r_value; /* MAX */
(*data)[idx*(*ds_cnt)+3]=1; /* COUNT */
- (*data)[idx*(*ds_cnt)+4]=r_value; /* SIGMA */
+ (*data)[idx*(*ds_cnt)+4]=r_value*r_value; /* SIGMA */
} else {
/* MIN */
if ((*data)[idx*(*ds_cnt)+0]>r_value) { (*data)[idx*(*ds_cnt)+0]=r_value; }
}
}
+ /* Fill in missing values */
+ fillmissing/=(*step);/* Convert from seconds to steps */
+ if (fillmissing>0) {
+ int copy_left=fillmissing;
+ for(idx=1;idx<rows;idx++) {
+ long count=(*data)[idx*(*ds_cnt)+3];
+ if (count==0) {
+ /* No data this bin */
+ if (copy_left>0) {
+ /* But we can copy from previous */
+ int idx_p=idx-1;
+ (*data)[idx*(*ds_cnt)+0]=(*data)[idx_p*(*ds_cnt)+0];
+ (*data)[idx*(*ds_cnt)+1]=(*data)[idx_p*(*ds_cnt)+1];
+ (*data)[idx*(*ds_cnt)+2]=(*data)[idx_p*(*ds_cnt)+2];
+ (*data)[idx*(*ds_cnt)+3]=(*data)[idx_p*(*ds_cnt)+3];
+ (*data)[idx*(*ds_cnt)+4]=(*data)[idx_p*(*ds_cnt)+4];
+ copy_left--;
+ }
+ }else{
+ copy_left=fillmissing;
+ }
+ }
+ }
+
/* and return OK */
return 0;
}