mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2025-03-21 15:45:01 +00:00
![]() ### Describe Your Changes Previously, "selector @ another_selector" assumed that "another_selector" metric is supposed to exist since "start" used in the query. If the query was evaluated in the following case (timestamps): - start - 2, end - 10 - "another_selector" 5,6,7,8,9,10 - "selector" The resulting "at" timestamp would be taken from NaN (as `int64(NaN * 1000)`), causing a panic or invalid behavior later. Note that type cast of `NaN` to int64 is also platform-dependent, so value of `int64(math.NaN() * 1000)` can produce `0` or max int64 on different platforms and versions of Go. This commit changes this and checks for the first non-NaN value. This makes it easier to use for users as series are not always aligned and returning an error in this case would disallow using this for some time ranges. See: https://github.com/VictoriaMetrics/VictoriaMetrics/issues/8444 ### Checklist The following checks are **mandatory**: - [x] My change adheres [VictoriaMetrics contributing guidelines](https://docs.victoriametrics.com/contributing/). --------- Signed-off-by: Zakhar Bessarab <z.bessarab@victoriametrics.com> Signed-off-by: hagen1778 <roman@victoriametrics.com> Co-authored-by: hagen1778 <roman@victoriametrics.com> |
||
---|---|---|
.. | ||
active_queries.go | ||
aggr.go | ||
aggr_incremental.go | ||
aggr_incremental_test.go | ||
aggr_test.go | ||
binary_op.go | ||
eval.go | ||
eval_test.go | ||
exec.go | ||
exec_test.go | ||
memory_limiter.go | ||
memory_limiter_test.go | ||
parse_cache.go | ||
parse_cache_test.go | ||
parse_cache_timing_test.go | ||
parser.go | ||
rollup.go | ||
rollup_result_cache.go | ||
rollup_result_cache_test.go | ||
rollup_test.go | ||
rollup_timing_test.go | ||
timeseries.go | ||
timeseries_test.go | ||
transform.go | ||
transform_test.go | ||
tzdata.go |