mirror of
https://github.com/grafana/grafana.git
synced 2025-02-11 16:15:42 -06:00
Loki: Fix ad-hoc filter when used with parser (#38542)
* Fix ad hoc filter when used with parser * Update
This commit is contained in:
parent
2e772d41a7
commit
d1b6132302
@ -416,21 +416,11 @@ export class LokiDatasource extends DataSourceApi<LokiQuery, LokiOptions> {
|
||||
let expression = query.expr ?? '';
|
||||
switch (action.type) {
|
||||
case 'ADD_FILTER': {
|
||||
// Temporary fix for log queries that use parser. We don't know which labels are parsed and which are actual labels.
|
||||
// If query has parser, we treat all labels as parsed and use | key="value" syntax (same in ADD_FILTER_OUT)
|
||||
if (queryHasPipeParser(expression) && !isMetricsQuery(expression)) {
|
||||
expression = addParsedLabelToQuery(expression, action.key, action.value, '=');
|
||||
} else {
|
||||
expression = addLabelToQuery(expression, action.key, action.value, undefined, true);
|
||||
}
|
||||
expression = this.addLabelToQuery(expression, action.key, action.value, '=');
|
||||
break;
|
||||
}
|
||||
case 'ADD_FILTER_OUT': {
|
||||
if (queryHasPipeParser(expression) && !isMetricsQuery(expression)) {
|
||||
expression = addParsedLabelToQuery(expression, action.key, action.value, '!=');
|
||||
} else {
|
||||
expression = addLabelToQuery(expression, action.key, action.value, '!=', true);
|
||||
}
|
||||
expression = this.addLabelToQuery(expression, action.key, action.value, '!=');
|
||||
break;
|
||||
}
|
||||
default:
|
||||
@ -674,11 +664,21 @@ export class LokiDatasource extends DataSourceApi<LokiQuery, LokiOptions> {
|
||||
if (operator === '=~' || operator === '!~') {
|
||||
value = lokiRegularEscape(value);
|
||||
}
|
||||
return addLabelToQuery(acc, key, value, operator);
|
||||
|
||||
return this.addLabelToQuery(acc, key, value, operator);
|
||||
}, expr);
|
||||
|
||||
return expr;
|
||||
}
|
||||
|
||||
addLabelToQuery(queryExpr: string, key: string, value: string | number, operator: string) {
|
||||
if (queryHasPipeParser(queryExpr) && !isMetricsQuery(queryExpr)) {
|
||||
// If query has parser, we treat all labels as parsed and use | key="value" syntax
|
||||
return addParsedLabelToQuery(queryExpr, key, value, operator);
|
||||
} else {
|
||||
return addLabelToQuery(queryExpr, key, value, operator, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export function renderTemplate(aliasPattern: string, aliasData: { [key: string]: string }) {
|
||||
|
Loading…
Reference in New Issue
Block a user