diff --git a/packages/grafana-data/src/transformations/matchers/valueMatchers/substringMatchers.test.ts b/packages/grafana-data/src/transformations/matchers/valueMatchers/substringMatchers.test.ts index aaa378a30d4..207bb44e699 100644 --- a/packages/grafana-data/src/transformations/matchers/valueMatchers/substringMatchers.test.ts +++ b/packages/grafana-data/src/transformations/matchers/valueMatchers/substringMatchers.test.ts @@ -9,7 +9,7 @@ describe('value substring to matcher', () => { fields: [ { name: 'temp', - values: ['24', null, '10', 'asd', '42', 'ASD'], + values: ['24', null, '10', 'asd', '42', 'ASD', [1, 2, 3]], }, ], }), @@ -53,6 +53,14 @@ describe('value substring to matcher', () => { expect(matcher(valueIndex, field, frame, data)).toBeFalsy(); }); + it('should be a mismatch if the option is an array / non-string and should not cause errors', () => { + const frame = data[0]; + const field = frame.fields[0]; + const valueIndex = 6; + + expect(matcher(valueIndex, field, frame, data)).toBeFalsy(); + }); + it('should not match when option value is different', () => { const frame = data[0]; const field = frame.fields[0]; diff --git a/packages/grafana-data/src/transformations/matchers/valueMatchers/substringMatchers.ts b/packages/grafana-data/src/transformations/matchers/valueMatchers/substringMatchers.ts index df31e054c72..e184e81afec 100644 --- a/packages/grafana-data/src/transformations/matchers/valueMatchers/substringMatchers.ts +++ b/packages/grafana-data/src/transformations/matchers/valueMatchers/substringMatchers.ts @@ -12,7 +12,11 @@ const isSubstringMatcher: ValueMatcherInfo = { return (valueIndex: number, field: Field) => { const value = field.values[valueIndex]; return ( - (value && options.value && value.toLowerCase().includes(options.value.toLowerCase())) || options.value === '' + (value && + options.value && + typeof value === 'string' && + value.toLowerCase().includes(options.value.toLowerCase())) || + options.value === '' ); }; },