app/vmselect/prometheus: do not add __name__!= filter when searching for all the matching metric names via /api/v1/label/__name__/values with non-empty label filter

This should reduce query time.
Updates https://github.com/VictoriaMetrics/VictoriaMetrics/issues/343
This commit is contained in:
Aliaksandr Valialkin 2020-02-28 23:35:47 +02:00
parent 43754ff420
commit 7d178a40bd

View File

@ -283,16 +283,18 @@ func labelValuesWithMatches(labelName string, matches []string, start, end int64
if err != nil {
return nil, err
}
// Add `labelName!=''` tag filter in order to filter out series without the labelName.
key := []byte(labelName)
if string(key) == "__name__" {
key = nil
}
for i, tfs := range tagFilterss {
tagFilterss[i] = append(tfs, storage.TagFilter{
Key: key,
IsNegative: true,
})
// There is no need in adding `__name__!=''` filter, since all the time series should
// already have non-empty name.
if labelName != "__name__" {
key := []byte(labelName)
for i, tfs := range tagFilterss {
tagFilterss[i] = append(tfs, storage.TagFilter{
Key: key,
IsNegative: true,
})
}
}
if start >= end {
end = start + defaultStep