|
@@ -29,6 +29,7 @@ import org.apache.lucene.index.NoMergePolicy;
|
|
|
import org.apache.lucene.index.Term;
|
|
|
import org.apache.lucene.queries.spans.SpanNearQuery;
|
|
|
import org.apache.lucene.queries.spans.SpanTermQuery;
|
|
|
+import org.apache.lucene.search.BooleanClause;
|
|
|
import org.apache.lucene.search.BooleanClause.Occur;
|
|
|
import org.apache.lucene.search.BooleanQuery;
|
|
|
import org.apache.lucene.search.Collector;
|
|
@@ -1105,6 +1106,22 @@ public class QueryPhaseTests extends IndexShardTestCase {
|
|
|
);
|
|
|
}
|
|
|
|
|
|
+ public void testTooManyClauses() throws Exception {
|
|
|
+ indexDocs();
|
|
|
+ var oldCount = IndexSearcher.getMaxClauseCount();
|
|
|
+ try {
|
|
|
+ var query = new BooleanQuery.Builder().add(new BooleanClause(new MatchAllDocsQuery(), Occur.SHOULD))
|
|
|
+ .add(new MatchAllDocsQuery(), Occur.SHOULD)
|
|
|
+ .build();
|
|
|
+ try (TestSearchContext context = createContext(newContextSearcher(reader), query)) {
|
|
|
+ IndexSearcher.setMaxClauseCount(1);
|
|
|
+ expectThrows(IllegalArgumentException.class, context::rewrittenQuery);
|
|
|
+ }
|
|
|
+ } finally {
|
|
|
+ IndexSearcher.setMaxClauseCount(oldCount);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
private static ContextIndexSearcher noCollectionContextSearcher(IndexReader reader) throws IOException {
|
|
|
return earlyTerminationContextSearcher(reader, 0);
|
|
|
}
|