Skip to content

Commit 65049c6

Browse files
committed
Fix multi-value selection
1 parent 9e32e86 commit 65049c6

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

finder/tagged.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ func TaggedTermWhereN(term *TaggedTerm, useCarbonBehaviour, dontMatchMissingTags
192192
} else if len(values) > 1 {
193193
w := where.New()
194194
for _, v := range values {
195-
w.And(where.ArrayHas("Tags", v))
195+
w.Or(where.ArrayHas("Tags", v))
196196
}
197197
return w.String(), nil
198198
} else {

finder/tagged_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ func TestTaggedWhere(t *testing.T) {
6565
{"seriesByTag('name=m{in}')", 0, "Tag1='__name__=min'", "", false},
6666
{"seriesByTag('name=m{in,ax}')", 0, "Tag1 IN ('__name__=min','__name__=max')", "", false},
6767
{"seriesByTag('name=m{in,ax')", 0, "", "", true},
68-
{"seriesByTag('name=value','what={avg,max}')", 0, "(Tag1='__name__=value') AND ((has(Tags, 'what=avg')) AND (has(Tags, 'what=max')))", "", false},
68+
{"seriesByTag('name=value','what={avg,max}')", 0, "(Tag1='__name__=value') AND ((has(Tags, 'what=avg')) OR (has(Tags, 'what=max')))", "", false},
6969
{"seriesByTag('name=value','what!={avg,max}')", 0, "(Tag1='__name__=value') AND (NOT arrayExists((x) -> x IN ('what=avg','what=max'), Tags))", "", false},
7070
// grafana workaround for multi-value variables default, masked with *
7171
{"seriesByTag('name=value','what=~*')", 0, "(Tag1='__name__=value') AND (arrayExists((x) -> x LIKE 'what=%', Tags))", "", false}, // If All masked to value with *
@@ -164,7 +164,7 @@ func TestTaggedWhere_UseCarbonBehaviourFlag(t *testing.T) {
164164
{"seriesByTag('name=m{in}')", 0, "Tag1='__name__=min'", "", false},
165165
{"seriesByTag('name=m{in,ax}')", 0, "Tag1 IN ('__name__=min','__name__=max')", "", false},
166166
{"seriesByTag('name=m{in,ax')", 0, "", "", true},
167-
{"seriesByTag('name=value','what={avg,max}')", 0, "(Tag1='__name__=value') AND ((has(Tags, 'what=avg')) AND (has(Tags, 'what=max')))", "", false},
167+
{"seriesByTag('name=value','what={avg,max}')", 0, "(Tag1='__name__=value') AND ((has(Tags, 'what=avg')) OR (has(Tags, 'what=max')))", "", false},
168168
{"seriesByTag('name=value','what!={avg,max}')", 0, "(Tag1='__name__=value') AND (NOT arrayExists((x) -> x IN ('what=avg','what=max'), Tags))", "", false},
169169
// grafana workaround for multi-value variables default, masked with *
170170
{"seriesByTag('name=value','what=~*')", 0, "(Tag1='__name__=value') AND (arrayExists((x) -> x LIKE 'what=%', Tags))", "", false}, // If All masked to value with *
@@ -264,7 +264,7 @@ func TestTaggedWhere_DontMatchMissingTagsFlag(t *testing.T) {
264264
{"seriesByTag('name=m{in}')", 0, "Tag1='__name__=min'", "", false},
265265
{"seriesByTag('name=m{in,ax}')", 0, "Tag1 IN ('__name__=min','__name__=max')", "", false},
266266
{"seriesByTag('name=m{in,ax')", 0, "", "", true},
267-
{"seriesByTag('name=value','what={avg,max}')", 0, "(Tag1='__name__=value') AND ((has(Tags, 'what=avg')) AND (has(Tags, 'what=max')))", "", false},
267+
{"seriesByTag('name=value','what={avg,max}')", 0, "(Tag1='__name__=value') AND ((has(Tags, 'what=avg')) OR (has(Tags, 'what=max')))", "", false},
268268
// {"seriesByTag('name=value','what!={avg,max}')", 0, "(Tag1='__name__=value') AND (NOT arrayExists((x) -> x IN ('what=avg','what=max'), Tags))", "", false},
269269
{"seriesByTag('name=value','what!={avg,max}')", 0, "(Tag1='__name__=value') AND (arrayExists((x) -> x LIKE 'what=%', Tags) AND NOT arrayExists((x) -> x IN ('what=avg','what=max'), Tags))", "", false},
270270
// grafana workaround for multi-value variables default, masked with *
@@ -365,7 +365,7 @@ func TestTaggedWhere_BothFeatureFlags(t *testing.T) {
365365
{"seriesByTag('name=m{in}')", 0, "Tag1='__name__=min'", "", false},
366366
{"seriesByTag('name=m{in,ax}')", 0, "Tag1 IN ('__name__=min','__name__=max')", "", false},
367367
{"seriesByTag('name=m{in,ax')", 0, "", "", true},
368-
{"seriesByTag('name=value','what={avg,max}')", 0, "(Tag1='__name__=value') AND ((has(Tags, 'what=avg')) AND (has(Tags, 'what=max')))", "", false},
368+
{"seriesByTag('name=value','what={avg,max}')", 0, "(Tag1='__name__=value') AND ((has(Tags, 'what=avg')) OR (has(Tags, 'what=max')))", "", false},
369369
// {"seriesByTag('name=value','what!={avg,max}')", 0, "(Tag1='__name__=value') AND (NOT arrayExists((x) -> x IN ('what=avg','what=max'), Tags))", "", false},
370370
{"seriesByTag('name=value','what!={avg,max}')", 0, "(Tag1='__name__=value') AND (arrayExists((x) -> x LIKE 'what=%', Tags) AND NOT arrayExists((x) -> x IN ('what=avg','what=max'), Tags))", "", false},
371371
// grafana workaround for multi-value variables default, masked with *

0 commit comments

Comments
 (0)