From 416320dc5ff0b86592e88277c283362763216110 Mon Sep 17 00:00:00 2001 From: Kaviraj Kanagaraj Date: Wed, 23 Aug 2023 11:18:38 +0200 Subject: [PATCH] Revert "Stopped String() from doubly escaping regex characters" (#10318) Reverts grafana/loki#10277 This currently breaks and cause panics for query with regex label matcher. Reverting it till we find the fix. --- pkg/logql/log/label_filter.go | 10 ---------- pkg/logql/syntax/parser_test.go | 10 ---------- 2 files changed, 20 deletions(-) diff --git a/pkg/logql/log/label_filter.go b/pkg/logql/log/label_filter.go index 279669e5a7..1fda5430b7 100644 --- a/pkg/logql/log/label_filter.go +++ b/pkg/logql/log/label_filter.go @@ -368,16 +368,6 @@ type lineFilterLabelFilter struct { filter Filterer } -// overrides the matcher.String() function in case there is a regexpFilter -func (s *lineFilterLabelFilter) String() string { - if unwrappedFilter, ok := s.filter.(regexpFilter); ok { - rStr := unwrappedFilter.String() - str := fmt.Sprintf(`%s%s"%s"`, s.Matcher.Name, s.Matcher.Type, rStr) - return str - } - return s.Matcher.String() -} - func (s *lineFilterLabelFilter) Process(_ int64, line []byte, lbs *LabelsBuilder) ([]byte, bool) { v := labelValue(s.Name, lbs) return line, s.filter.Filter(unsafeGetBytes(v)) diff --git a/pkg/logql/syntax/parser_test.go b/pkg/logql/syntax/parser_test.go index c7ff022a15..6294324d59 100644 --- a/pkg/logql/syntax/parser_test.go +++ b/pkg/logql/syntax/parser_test.go @@ -3465,13 +3465,3 @@ func TestNoOpLabelToString(t *testing.T) { require.NoError(t, err) require.Len(t, stages, 0) } - -// Tests that the regex part of expr doesn't get doubly escaped when we call expr.String() -func TestParseSampleExpr_String(t *testing.T) { - query := `sum(rate({cluster="beep", namespace="boop"} | msg=~` + "`" + `.*?(GET|POST|PUT|DELETE|PATCH|HEAD|OPTIONS) /loki/api/(?i)(\d+[a-z]|[a-z]+\d)\w*/query_range` + "`" + `[1d]))` - expr, err := ParseSampleExpr(query) - require.NoError(t, err) - // need to change some backticks to " in order for query to be exactly equal to expr.String(), otherwise it's the same query - expected := `sum(rate({cluster="beep", namespace="boop"} | msg=~".*?(GET|POST|PUT|DELETE|PATCH|HEAD|OPTIONS) /loki/api/(?i)(\d+[a-z]|[a-z]+\d)\w*/query_range"[1d]))` - require.Equal(t, expected, expr.String()) -}