diff --git a/app/vmselect/promql/exec_test.go b/app/vmselect/promql/exec_test.go index 6dfeed585..48a5b9fe8 100644 --- a/app/vmselect/promql/exec_test.go +++ b/app/vmselect/promql/exec_test.go @@ -369,6 +369,17 @@ func TestExecSuccess(t *testing.T) { resultExpected := []netstorage.Result{r} f(q, resultExpected) }) + t.Run("timestamp(time()>=1600)", func(t *testing.T) { + t.Parallel() + q := `timestamp(time()>=1600)` + r := netstorage.Result{ + MetricName: metricNameExpected, + Values: []float64{nan, nan, nan, 1600, 1800, 2000}, + Timestamps: timestampsExpected, + } + resultExpected := []netstorage.Result{r} + f(q, resultExpected) + }) t.Run("time()/100", func(t *testing.T) { t.Parallel() q := `time()/100` diff --git a/app/vmselect/promql/transform.go b/app/vmselect/promql/transform.go index 70e29201b..388b91276 100644 --- a/app/vmselect/promql/transform.go +++ b/app/vmselect/promql/transform.go @@ -1121,7 +1121,10 @@ func transformTimestamp(tfa *transformFuncArg) ([]*timeseries, error) { ts.MetricName.ResetMetricGroup() values := ts.Values for i, t := range ts.Timestamps { - values[i] = float64(t) / 1e3 + v := values[i] + if !math.IsNaN(v) { + values[i] = float64(t) / 1e3 + } } } return rvs, nil