diff --git a/packages/grafana-prometheus/src/language_provider.test.ts b/packages/grafana-prometheus/src/language_provider.test.ts index dd7dec7ce71..e1496bd06d8 100644 --- a/packages/grafana-prometheus/src/language_provider.test.ts +++ b/packages/grafana-prometheus/src/language_provider.test.ts @@ -505,6 +505,20 @@ describe('Language completion provider', () => { ) ); }); + + it('should dont send match[] parameter if there is no metric', async () => { + const mockQueries: PromQuery[] = [ + { + refId: 'A', + expr: '', + }, + ]; + const fetchLabel = languageProvider.fetchLabels; + const requestSpy = jest.spyOn(languageProvider, 'request'); + await fetchLabel(tr, mockQueries); + expect(requestSpy).toHaveBeenCalled(); + expect(requestSpy.mock.calls[0][0].indexOf('match[]')).toEqual(-1); + }); }); }); diff --git a/packages/grafana-prometheus/src/language_provider.ts b/packages/grafana-prometheus/src/language_provider.ts index a6105c988a3..b7ec09163e9 100644 --- a/packages/grafana-prometheus/src/language_provider.ts +++ b/packages/grafana-prometheus/src/language_provider.ts @@ -219,11 +219,13 @@ export default class PromQlLanguageProvider extends LanguageProvider { const searchParams = new URLSearchParams({ ...timeParams }); queries?.forEach((q) => { const visualQuery = buildVisualQueryFromString(q.expr); - searchParams.append('match[]', visualQuery.query.metric); - if (visualQuery.query.binaryQueries) { - visualQuery.query.binaryQueries.forEach((bq) => { - searchParams.append('match[]', bq.query.metric); - }); + if (visualQuery.query.metric !== '') { + searchParams.append('match[]', visualQuery.query.metric); + if (visualQuery.query.binaryQueries) { + visualQuery.query.binaryQueries.forEach((bq) => { + searchParams.append('match[]', bq.query.metric); + }); + } } });