[rrd-users] CDEF:a=TIME throws error

Alex van den Bogaerdt alex at vandenbogaerdt.nl
Sat May 8 19:04:27 CEST 2010

----- Original Message ----- 
From: "itsmemattchung" <itsmemattchung at gmail.com>
To: <rrd-users at lists.oetiker.ch>
Sent: Saturday, May 08, 2010 6:35 PM
Subject: [rrd-users] CDEF:a=TIME throws error

> I have followed the documentation
> http://oss.oetiker.ch/rrdtool/tut/cdeftutorial.en.html
> in order to calculate the derivative by using
> CDEF:b=PREV(a)

Which is, unfortunately, incorrect.

My name is still on the tutorial, but the data filtering was not written by 
me. Nevertheless, sorry for the confusion.

I have no idea who made that contribution, hopefully Tobi can tell and ask 
him/her for a fix.

> "rrdtool.error: rpn expressions without DEF or CDEF variables are not
> supported "
> After searching around on google and through existing tickets, I ran 
> across
> http://oss.oetiker.ch/rrdtool-trac/ticket/182 which states exactly what I 
> am
> experiencing.
> Unfortunately, I am having a hard time interpreting what oetiker posted

Think of DEF and CDEF as working on arrays. Each array member is an interval 
of time combined with a rate valid during that interval.  The array members 
are better known as "steps", or "intervals", or CDPs (Consolidated Data 

What TIME does, is to take the timestamp of such an interval.  You can then 
do whatever it is you need to do. But, in order for RRDtool to find the 
timestamp of such an interval, it first needs the array of intervals.  In 
"CDEF:time=TIME" there is no data thus no array thus no interval thus no 

Quick fix is to put DEF "var" on the stack and remove it again: 
I haven't verified that this will make the example work, but try it.

> When would the syntax from the tutorial (CDEF:a=TIME) be appropriate? If
> possible, can someone please elaborate on why that doesn't work, or point 
> be
> in the right direction so I can better understand?

I hope this helped.

More information about the rrd-users mailing list