diff --git a/engine/filtering.go b/engine/filtering.go index 5bdff49c957..fefa8bbe68b 100644 --- a/engine/filtering.go +++ b/engine/filtering.go @@ -23,8 +23,12 @@ func getExpressionValue(values []*parser.Value, fields []string, point *protocol case parser.ValueBool: value, _ := strconv.ParseBool(value.Name) fieldValues = append(fieldValues, &protocol.FieldValue{BoolValue: &value}) - case parser.ValueString, parser.ValueRegex: + case parser.ValueString: fieldValues = append(fieldValues, &protocol.FieldValue{StringValue: &value.Name}) + case parser.ValueRegex: + regex, _ := value.GetCompiledRegex() + regexStr := regex.String() + fieldValues = append(fieldValues, &protocol.FieldValue{StringValue: ®exStr}) case parser.ValueTableName, parser.ValueSimpleName: diff --git a/integration/data_test.go b/integration/data_test.go index dd3af4d67d0..69dc6619565 100644 --- a/integration/data_test.go +++ b/integration/data_test.go @@ -932,6 +932,20 @@ func (self *DataTestSuite) ExplainsWithLocalAggregator(c *C) (Fun, Fun) { } } +func (self *DataTestSuite) InsensitiveRegexMatching(c *C) (Fun, Fun) { + return func(client Client) { + data := `[{"name":"foo","columns":["value"],"points":[["Paul"]]}]` + client.WriteJsonData(data, c) + }, func(client Client) { + series := client.RunQuery("select * from foo where value =~ /paul/i", c, "m") + c.Assert(series, HasLen, 1) + c.Assert(series[0].Name, Equals, "foo") + maps := ToMap(series[0]) + c.Assert(maps, HasLen, 1) + c.Assert(maps[0]["value"], Equals, "Paul") + } +} + func (self *DataTestSuite) DifferentColumnsInOnePost(c *C) (Fun, Fun) { return func(client Client) { data := `[{"name":"foo","columns":["val0", "val1"],"points":[["a", 1]]},{"name":"foo","columns":["val0"],"points":[["b"]]}]`