bodar / lazyrecords

Think LINQ for Java
8 stars 4 forks source link

Equals char in query causes StandardParser to fail #1

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
    @Test
    public void supportsEqualsInQuery() throws Exception {
        PredicateParser predicateParser = new StandardParser();
        Predicate<Record> predicate = predicateParser.parse("name:Dan=*", Sequences.<Keyword<?>>empty());

        Keyword<String> name = keyword("name", String.class);
        assertThat(predicate.matches(Record.constructors.record().set(name, "Dan= Bod")), is(true));
        assertThat(predicate.matches(Record.constructors.record().set(name, "Dan=")), is(true));
        assertThat(predicate.matches(Record.constructors.record().set(name, "Bod")), is(false));

        assertLuceneSyntax(predicate);
        assertSqlSyntax(predicate);
    }

Original issue reported on code.google.com by songsti...@gmail.com on 3 Dec 2012 at 2:30

GoogleCodeExporter commented 9 years ago
You just need to quote the non-wildcard bit:

name:"Dan="*

Original comment by daniel.bodart@gmail.com on 12 Nov 2013 at 2:29

GoogleCodeExporter commented 9 years ago
Also, '=' is now a legal delimiter, just like ':' is. So "Dan=Bod" and 
"Dan:Bod" are equivalent.

Original comment by spmil...@gmail.com on 12 Nov 2013 at 2:48