Index: lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestQPHelper.java =================================================================== --- lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestQPHelper.java (revision 1345628) +++ lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestQPHelper.java (working copy) @@ -40,6 +40,7 @@ import org.apache.lucene.index.IndexReader; import org.apache.lucene.index.IndexWriter; import org.apache.lucene.index.Term; +import org.apache.lucene.queryparser.classic.QueryParser; import org.apache.lucene.queryparser.flexible.core.QueryNodeException; import org.apache.lucene.queryparser.flexible.core.messages.QueryParserMessages; import org.apache.lucene.queryparser.flexible.core.nodes.FuzzyQueryNode; @@ -1301,5 +1302,17 @@ w.close(); dir.close(); } + + public void testFoo() throws Exception { + StandardQueryParser qp = new StandardQueryParser(new MockAnalyzer(random())); + String query = "(field:[1 TO *] AND field:[* TO 2]) AND field2:(z)"; + BooleanQuery q = new BooleanQuery(); + BooleanQuery bq = new BooleanQuery(); + bq.add(TermRangeQuery.newStringRange("field", "1", null, true, true), BooleanClause.Occur.MUST); + bq.add(TermRangeQuery.newStringRange("field", null, "2", true, true), BooleanClause.Occur.MUST); + q.add(bq, BooleanClause.Occur.MUST); + q.add(new TermQuery(new Term("field2", "z")), BooleanClause.Occur.MUST); + assertEquals(q, qp.parse(query, "foo")); + } } Index: lucene/queryparser/src/test/org/apache/lucene/queryparser/util/QueryParserTestBase.java =================================================================== --- lucene/queryparser/src/test/org/apache/lucene/queryparser/util/QueryParserTestBase.java (revision 1345628) +++ lucene/queryparser/src/test/org/apache/lucene/queryparser/util/QueryParserTestBase.java (working copy) @@ -1361,4 +1361,16 @@ assertEquals(query, qp.parse(query.toString())); } + public void testFoo() throws Exception { + QueryParser qp = new QueryParser(TEST_VERSION_CURRENT, "key", new MockAnalyzer(random())); + String query = "(field:[1 TO *] AND field:[* TO 2]) AND field2:(z)"; + BooleanQuery q = new BooleanQuery(); + BooleanQuery bq = new BooleanQuery(); + bq.add(TermRangeQuery.newStringRange("field", "1", null, true, true), BooleanClause.Occur.MUST); + bq.add(TermRangeQuery.newStringRange("field", null, "2", true, true), BooleanClause.Occur.MUST); + q.add(bq, BooleanClause.Occur.MUST); + q.add(new TermQuery(new Term("field2", "z")), BooleanClause.Occur.MUST); + assertEquals(q, qp.parse(query)); + } + }