#1002977 rrdtool: "rrdtool fetch" outputs values even for CFs that are not stored

Package:
rrdtool
Source:
rrdtool
Description:
time-series data storage and display system (programs)
Submitter:
Vincent Lefevre
Date:
2022-01-02 03:33:02 UTC
Severity:
normal
#1002977#5
Date:
2022-01-02 03:17:35 UTC
From:
To:
I have created cpuload.rrd with

rrdtool create cpuload.rrd \
  DS:cpuload:GAUGE:600:0:U \
  RRA:AVERAGE:0.5:1:600 \
  RRA:AVERAGE:0.5:6:600 \
  RRA:AVERAGE:0.5:24:600 \
  RRA:AVERAGE:0.5:288:600 \
  RRA:MAX:0.5:1:600 \
  RRA:MAX:0.5:6:600 \
  RRA:MAX:0.5:24:600 \
  RRA:MAX:0.5:288:600

So there's AVERAGE and MAX, but not MIN.

As expected,

  rrdtool fetch cpuload.rrd AVERAGE -s -1080000

and

  rrdtool fetch cpuload.rrd MAX -s -1080000

both output values with step 1800.

But

  rrdtool fetch cpuload.rrd MIN -s -1080000

also outputs values. Selected step is 300, and most values
(for the oldest timestamps) are NaN. Instead, it should fail.

This is a regression.

#1002977#10
Date:
2022-01-02 03:31:26 UTC
From:
To:
In case you're wondering why I try to read values associated with a CF
that has not been declared with "rrdtool create", this is because this
is done via a Perl script on several .rrd files, via the RRDs Perl
module. For some of these files, MIN has been declared, but not all of
them, and the script doesn't know which CFs are used. So it tries all
of them. If a CF isn't used, it expects an error so that it can skip
it instead of getting unexpected results.