From d4b090124cf7dc81d534604f93f2d5f4e37e3fad Mon Sep 17 00:00:00 2001 From: Darkheir Date: Tue, 22 Jul 2025 14:16:54 +0200 Subject: [PATCH] feat: Support spaces between field name and value --- query-grammar/src/query_grammar.rs | 6 +++++- src/query/query_parser/query_parser.rs | 9 +++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/query-grammar/src/query_grammar.rs b/query-grammar/src/query_grammar.rs index 0030c776c..356c9f3e1 100644 --- a/query-grammar/src/query_grammar.rs +++ b/query-grammar/src/query_grammar.rs @@ -36,7 +36,7 @@ fn field_name(inp: &str) -> IResult<&str, String> { alt((first_char, escape_sequence())), many0(alt((simple_char, escape_sequence(), char('\\')))), )), - char(':'), + tuple((multispace0, char(':'), multispace0)), ), |(first_char, next)| once(first_char).chain(next).collect(), )(inp) @@ -1283,6 +1283,10 @@ mod test { super::field_name("~my~field:a"), Ok(("a", "~my~field".to_string())) ); + assert_eq!( + super::field_name(".my.field.name : a"), + Ok(("a", ".my.field.name".to_string())) + ); for special_char in SPECIAL_CHARS.iter() { let query = &format!("\\{special_char}my\\{special_char}field:a"); assert_eq!( diff --git a/src/query/query_parser/query_parser.rs b/src/query/query_parser/query_parser.rs index bdcb58187..7900d7837 100644 --- a/src/query/query_parser/query_parser.rs +++ b/src/query/query_parser/query_parser.rs @@ -1790,6 +1790,15 @@ mod test { } } + #[test] + fn test_space_before_value() { + test_parse_query_to_logical_ast_helper( + "title: a", + r#"Term(field=0, type=Str, "a")"#, + false, + ); + } + #[test] fn test_escaped_field() { let mut schema_builder = Schema::builder();