diff --git a/public/app/plugins/datasource/loki/components/monaco-query-field/monaco-completion-provider/completions.test.ts b/public/app/plugins/datasource/loki/components/monaco-query-field/monaco-completion-provider/completions.test.ts index 6fcb67ff375..a113a23a65b 100644 --- a/public/app/plugins/datasource/loki/components/monaco-query-field/monaco-completion-provider/completions.test.ts +++ b/public/app/plugins/datasource/loki/components/monaco-query-field/monaco-completion-provider/completions.test.ts @@ -24,7 +24,7 @@ const history = [ ]; const labelNames = ['place', 'source']; -const labelValues = ['moon', 'luna']; +const labelValues = ['moon', 'luna', 'server\\1']; const extractedLabelKeys = ['extracted', 'label']; const otherLabels: Label[] = [ { @@ -244,6 +244,11 @@ describe('getCompletions', () => { label: 'luna', type: 'LABEL_VALUE', }, + { + insertText: '"server\\\\1"', + label: 'server\\1', + type: 'LABEL_VALUE', + }, ]); completions = await getCompletions({ ...situation, betweenQuotes: true }, completionProvider); @@ -259,6 +264,11 @@ describe('getCompletions', () => { label: 'luna', type: 'LABEL_VALUE', }, + { + insertText: 'server\\\\1', + label: 'server\\1', + type: 'LABEL_VALUE', + }, ]); }); diff --git a/public/app/plugins/datasource/loki/components/monaco-query-field/monaco-completion-provider/completions.ts b/public/app/plugins/datasource/loki/components/monaco-query-field/monaco-completion-provider/completions.ts index 098c02c1c04..c82a18752c0 100644 --- a/public/app/plugins/datasource/loki/components/monaco-query-field/monaco-completion-provider/completions.ts +++ b/public/app/plugins/datasource/loki/components/monaco-query-field/monaco-completion-provider/completions.ts @@ -1,3 +1,4 @@ +import { escapeLabelValueInExactSelector } from '../../../languageUtils'; import { AGGREGATION_OPERATORS, RANGE_VEC_FUNCTIONS } from '../../../syntax'; import { CompletionDataProvider } from './CompletionDataProvider'; @@ -197,7 +198,7 @@ async function getLabelValuesForMetricCompletions( return values.map((text) => ({ type: 'LABEL_VALUE', label: text, - insertText: betweenQuotes ? text : `"${text}"`, + insertText: betweenQuotes ? escapeLabelValueInExactSelector(text) : `"${escapeLabelValueInExactSelector(text)}"`, })); }