Here is a patch for libdbi access.1) Sigma calculation had an error. The first data value in each bin didn't get squared.
2) "rrdfillmissing" was dummy. I have added code to do the work. The parameter has NOW to be in seconds. In doc it is given in steps. The size of steps depends to much on size of graph so I think its easier to use seconds and internal calculate the number of steps.
(I have mailed with Martin Sperl) /hjj
--- rrdgraph_libdbi.pod 2010-11-10 13:55:23.000000000 +0100 +++ rrdgraph_libdbi.pod.orig 2010-11-10 13:52:38.000000000 +0100 @@ -7 +7 @@ -E<lt>rrdfileE<gt> = B<sql//E<lt>libdbi driverE<gt>/E<lt>driver-option-nameE<gt>=E<lt>driver-option-valueE<gt>/...[/rrdminstepsize=E<lt>stepsizeE<gt>][/rrdfillmissing=E<lt>fill missing n secondsE<gt>]//E<lt>tableE<gt>/E<lt>unixtimestamp columnE<gt>/E<lt>data value columnE<gt>[/derive]/E<lt>where clause 1E<gt>/.../E<lt>where clause nE<gt>> +E<lt>rrdfileE<gt> = B<sql//E<lt>libdbi driverE<gt>/E<lt>driver-option-nameE<gt>=E<lt>driver-option-valueE<gt>/...[/rrdminstepsize=E<lt>stepsizeE<gt>][/rrdfillmissing=E<lt>fill missing n samplesE<gt>]//E<lt>tableE<gt>/E<lt>unixtimestamp columnE<gt>/E<lt>data value columnE<gt>[/derive]/E<lt>where clause 1E<gt>/.../E<lt>where clause nE<gt>> @@ -32 +32 @@ -=item B</rrdfillmissing>=B<E<lt>fill missing secondsE<gt>> +=item B</rrdfillmissing>=B<E<lt>fill missing stepsE<gt>> @@ -34 +34 @@ - defines the number of seconds to fill with the last value to avoid NaN boxes due to data-insertation jitter (default: 0 seconds) + defines the number of steps to fill with the last value to avoid NaN boxes due to data-insertation jitter (default: 0 steps)
--- rrd_fetch_libdbi.c 2010-11-10 09:24:40.000000000 +0100 +++ rrd_fetch_libdbi.c.orig 2010-04-07 15:04:33.000000000 +0200 @@ -617 +617 @@ - (*data)[idx*(*ds_cnt)+4]=r_value*r_value; /* SIGMA */ + (*data)[idx*(*ds_cnt)+4]=r_value; /* SIGMA */ @@ -654,24 +653,0 @@ - /* 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; - } - } - } -
_______________________________________________ rrd-developers mailing list rrd-developers@lists.oetiker.ch https://lists.oetiker.ch/cgi-bin/listinfo/rrd-developers