mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2024-12-01 14:47:38 +00:00
app/vmselect/promql: properly return an empty result from limit_offset() if offset exceeds the number of inner time series
Updates https://github.com/VictoriaMetrics/VictoriaMetrics/issues/3312
This commit is contained in:
parent
4df78e8814
commit
aa31cc85f5
3 changed files with 13 additions and 0 deletions
|
@ -2290,6 +2290,16 @@ func TestExecSuccess(t *testing.T) {
|
||||||
resultExpected := []netstorage.Result{r}
|
resultExpected := []netstorage.Result{r}
|
||||||
f(q, resultExpected)
|
f(q, resultExpected)
|
||||||
})
|
})
|
||||||
|
t.Run(`limit_offset(too-big-offset)`, func(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
q := `limit_offset(1, 10, sort_by_label((
|
||||||
|
label_set(time()*1, "foo", "y"),
|
||||||
|
label_set(time()*2, "foo", "a"),
|
||||||
|
label_set(time()*3, "foo", "x"),
|
||||||
|
), "foo"))`
|
||||||
|
resultExpected := []netstorage.Result{}
|
||||||
|
f(q, resultExpected)
|
||||||
|
})
|
||||||
t.Run(`limit_offset NaN`, func(t *testing.T) {
|
t.Run(`limit_offset NaN`, func(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
// q returns 3 time series, where foo=3 contains only NaN values
|
// q returns 3 time series, where foo=3 contains only NaN values
|
||||||
|
|
|
@ -1878,6 +1878,8 @@ func transformLimitOffset(tfa *transformFuncArg) ([]*timeseries, error) {
|
||||||
rvs := removeEmptySeries(args[2])
|
rvs := removeEmptySeries(args[2])
|
||||||
if len(rvs) >= offset {
|
if len(rvs) >= offset {
|
||||||
rvs = rvs[offset:]
|
rvs = rvs[offset:]
|
||||||
|
} else {
|
||||||
|
rvs = nil
|
||||||
}
|
}
|
||||||
if len(rvs) > limit {
|
if len(rvs) > limit {
|
||||||
rvs = rvs[:limit]
|
rvs = rvs[:limit]
|
||||||
|
|
|
@ -15,6 +15,7 @@ The following tip changes can be tested by building VictoriaMetrics components f
|
||||||
|
|
||||||
## v1.79.x long-time support release (LTS)
|
## v1.79.x long-time support release (LTS)
|
||||||
|
|
||||||
|
* BUGFIX: [MetricsQL](https://docs.victoriametrics.com/MetricsQL.html): properly return an empty result from [limit_offset](https://docs.victoriametrics.com/MetricsQL.html#limit_offset) if the `offset` arg exceeds the number of inner time series. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/3312).
|
||||||
* BUGFIX: [vmagent](https://docs.victoriametrics.com/vmagent.html): properly discover GCE zones when `filter` option is set at [gce_sd_configs](https://docs.victoriametrics.com/sd_configs.html#gce_sd_configs). See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/3202).
|
* BUGFIX: [vmagent](https://docs.victoriametrics.com/vmagent.html): properly discover GCE zones when `filter` option is set at [gce_sd_configs](https://docs.victoriametrics.com/sd_configs.html#gce_sd_configs). See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/3202).
|
||||||
|
|
||||||
## [v1.79.5](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/tag/v1.79.5)
|
## [v1.79.5](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/tag/v1.79.5)
|
||||||
|
|
Loading…
Reference in a new issue