diff --git a/src/rrd_fetch_libdbi.c b/src/rrd_fetch_libdbi.c
index fb0dc7e81aef9b3794e28fea962ec19fe8a040a3..21fbc083c7575494adfcf26600f69a4de740a47a 100644 (file)
--- a/src/rrd_fetch_libdbi.c
+++ b/src/rrd_fetch_libdbi.c
unsigned long minstepsize=300;
/* by default assume unixtimestamp */
int isunixtime=1;
+ long gmt_offset=0;
/* the result-set */
long r_timestamp,l_timestamp,d_timestamp;
double r_value,l_value,d_value;
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;
return -1;
}
/* if we have leading '*', then we have a TIMEDATE Field*/
- if (table_help.timestamp[0]=='*') { isunixtime=0; table_help.timestamp++; }
+ if (table_help.timestamp[0]=='*') {
+ struct tm tm;
+ time_t t=time(NULL);
+ localtime_r(&t,&tm);
+ gmt_offset=tm.tm_gmtoff;
+ isunixtime=0; table_help.timestamp++;
+ }
/* hex-unescape the value */
if(_inline_unescape(table_help.timestamp)) { return -1; }
while((r_status=_sql_fetchrow(&table_help,&r_timestamp,&r_value,derive))>0) {
/* processing of value */
/* calculate index for the timestamp */
+ r_timestamp-=gmt_offset;
idx=(r_timestamp-(*start))/(*step);
/* some out of bounds checks on idx */
if (idx<0) { idx=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; }