From b7a3d575dacb3acbb28873dd5def3dca016e3531 Mon Sep 17 00:00:00 2001 From: Aliaksandr Valialkin Date: Sun, 29 Sep 2024 11:12:22 +0200 Subject: [PATCH] lib/logstorage: allow using `-` instead of `!` in front of `(...)` --- lib/logstorage/parser.go | 2 +- lib/logstorage/parser_test.go | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/logstorage/parser.go b/lib/logstorage/parser.go index 2ec250030..ca4dcc45b 100644 --- a/lib/logstorage/parser.go +++ b/lib/logstorage/parser.go @@ -840,7 +840,7 @@ func parseGenericFilter(lex *lexer, fieldName string) (filter, error) { } return f, nil case lex.isKeyword("("): - if !lex.isSkippedSpace && !lex.isPrevToken("", ":", "(", "!", "not") { + if !lex.isSkippedSpace && !lex.isPrevToken("", ":", "(", "!", "-", "not") { return nil, fmt.Errorf("missing whitespace before the search word %q", lex.prevToken) } return parseParensFilter(lex, fieldName) diff --git a/lib/logstorage/parser_test.go b/lib/logstorage/parser_test.go index 359347704..36cf65da6 100644 --- a/lib/logstorage/parser_test.go +++ b/lib/logstorage/parser_test.go @@ -646,6 +646,8 @@ func TestParseQuerySuccess(t *testing.T) { f(`not(foo)`, `!foo`) f(`not (foo)`, `!foo`) f(`not ( foo or bar )`, `!(foo or bar)`) + f(`!(foo or bar)`, `!(foo or bar)`) + f(`-(foo or bar)`, `!(foo or bar)`) f(`foo:!""`, `!foo:""`) f("_msg:foo", "foo") f("'foo:bar'", `"foo:bar"`)