From a3b03ef0ca6eddf3a839201344dca9a584ee42c7 Mon Sep 17 00:00:00 2001 From: Nityananda Gohain Date: Thu, 10 Nov 2022 18:24:20 +0530 Subject: [PATCH] fix: parser updated to support escaped quotes in search (#1704) Co-authored-by: Palash Gupta --- pkg/query-service/app/logs/parser.go | 2 +- pkg/query-service/app/logs/parser_test.go | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/query-service/app/logs/parser.go b/pkg/query-service/app/logs/parser.go index 1ccb0dbc54..a1ab021e33 100644 --- a/pkg/query-service/app/logs/parser.go +++ b/pkg/query-service/app/logs/parser.go @@ -36,7 +36,7 @@ const ( DESC = "desc" ) -var tokenRegex, _ = regexp.Compile(`(?i)(and( )*?|or( )*?)?(([\w.-]+ (in|nin) \([^(]+\))|([\w.]+ (gt|lt|gte|lte) (')?[\S]+(')?)|([\w.]+ (contains|ncontains)) '[^']+')`) +var tokenRegex, _ = regexp.Compile(`(?i)(and( )*?|or( )*?)?(([\w.-]+ (in|nin) \([^(]+\))|([\w.]+ (gt|lt|gte|lte) (')?[\S]+(')?)|([\w.]+ (contains|ncontains)) [^\\]?'(.*?[^\\])')`) var operatorRegex, _ = regexp.Compile(`(?i)(?: )(in|nin|gt|lt|gte|lte|contains|ncontains)(?: )`) func ParseLogFilterParams(r *http.Request) (*model.LogsFilterParams, error) { diff --git a/pkg/query-service/app/logs/parser_test.go b/pkg/query-service/app/logs/parser_test.go index 439e323739..f4b75f41e0 100644 --- a/pkg/query-service/app/logs/parser_test.go +++ b/pkg/query-service/app/logs/parser_test.go @@ -29,8 +29,8 @@ var correctQueriesTest = []struct { }, { `contains search with a different attributes`, - `resource contains 'Hello, "World"'`, - []string{`resource ILIKE '%Hello, "World"%' `}, + `resource contains 'Hello, "World" and user\'s'`, + []string{`resource ILIKE '%Hello, "World" and user\'s%' `}, }, { `more than one continas`,