[
https://issues.apache.org/jira/browse/LUCENE-5450?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13904405#comment-13904405
]
Robert Muir commented on LUCENE-5450:
-------------------------------------
Hi Tim, thanks for reporting the bug.
Personally, i don't like the use of the static isEmpty method with instanceofs,
because it makes it harder for people to implement their own queries.
An alternative solution (that is no change in behavior and no api change today,
since getField() is currently null in those cases) is to just add the proper
null checks?
> NPE and Illegal Argument Exception in wrapped SpanMultiTerms with no matches
> ----------------------------------------------------------------------------
>
> Key: LUCENE-5450
> URL: https://issues.apache.org/jira/browse/LUCENE-5450
> Project: Lucene - Core
> Issue Type: Bug
> Components: core/search
> Affects Versions: 5.0
> Reporter: Tim Allison
> Attachments: LUCENE-5450.patch, LUCENE-5450.patch
>
>
> There are problems with the handling of wrapped span multiterms that don't
> have any matches.
> 1) In the test framework, when AssertingIndexSearcher does a rewrite and then
> checks for equality, there's an NPE for SpanNear and SpanOr:
> {noformat}
> java.lang.NullPointerException
> at
> __randomizedtesting.SeedInfo.seed([8E96A398C89A703B:338EB53A2EDBE8CC]:0)
> at
> org.apache.lucene.search.spans.SpanOrQuery.addClause(SpanOrQuery.java:57)
> at
> org.apache.lucene.search.spans.SpanOrQuery.<init>(SpanOrQuery.java:49)
> at org.apache.lucene.search.spans.SpanOrQuery.clone(SpanOrQuery.java:86)
> at org.apache.lucene.search.spans.SpanOrQuery.clone(SpanOrQuery.java:39)
> at
> org.apache.lucene.search.QueryUtils.checkHashEquals(QueryUtils.java:57)
> at org.apache.lucene.search.QueryUtils.check(QueryUtils.java:52)
> at
> org.apache.lucene.search.AssertingIndexSearcher.rewrite(AssertingIndexSearcher.java:80)
> at
> org.apache.lucene.search.IndexSearcher.createNormalizedWeight(IndexSearcher.java:675)
> at
> org.apache.lucene.search.AssertingIndexSearcher.createNormalizedWeight(AssertingIndexSearcher.java:59)
> at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:273)
> at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:261)
> at
> org.apache.lucene.search.spans.TestSpanMultiTermQueryWrapper.testNoSuchMultiTermsInOr(TestSpanMultiTermQueryWrapper.java:177)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> at java.lang.reflect.Method.invoke(Unknown Source)
> at
> com.carrotsearch.randomizedtesting.RandomizedRunner.invoke(RandomizedRunner.java:1559)
> ...
> {noformat}
> 2) The same issue is causing a "Clauses must have same field" illegal
> argument exception in a SpanNotQuery.
> {noformat}
> java.lang.IllegalArgumentException: Clauses must have same field.
> at
> __randomizedtesting.SeedInfo.seed([779E5DD7E7523C72:4C2ECAAB938038F9]:0)
> at
> org.apache.lucene.search.spans.SpanNotQuery.<init>(SpanNotQuery.java:66)
> at
> org.apache.lucene.search.spans.SpanNotQuery.clone(SpanNotQuery.java:99)
> at
> org.apache.lucene.search.spans.SpanNotQuery.clone(SpanNotQuery.java:36)
> at
> org.apache.lucene.search.QueryUtils.checkHashEquals(QueryUtils.java:57)
> at org.apache.lucene.search.QueryUtils.check(QueryUtils.java:52)
> at
> org.apache.lucene.search.AssertingIndexSearcher.rewrite(AssertingIndexSearcher.java:80)
> at
> org.apache.lucene.search.IndexSearcher.createNormalizedWeight(IndexSearcher.java:675)
> at
> org.apache.lucene.search.AssertingIndexSearcher.createNormalizedWeight(AssertingIndexSearcher.java:59)
> at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:273)
> at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:261)
> at
> org.apache.lucene.search.spans.TestSpanMultiTermQueryWrapper.testNoSuchMultiTermsInNotNear(TestSpanMultiTermQueryWrapper.java:144)
> ...
> {noformat}
> The basic problem is that an empty SpanQuery (SpanOrQuery with zero clauses)
> does not have a field, and much of our code assumes that the field is not
> null.
> Test case and patch on way.
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]