LUCENE-7262: Fix NPE, this should lazy-init in start()

This commit is contained in:
David Smiley 2016-05-02 22:39:32 -04:00
parent 70bcd562f9
commit 91153b9627
2 changed files with 8 additions and 7 deletions

View File

@ -19,9 +19,6 @@ package org.apache.lucene.spatial.composite;
import java.io.IOException; import java.io.IOException;
import java.util.Map; import java.util.Map;
import org.locationtech.spatial4j.shape.Shape;
import org.locationtech.spatial4j.shape.SpatialRelation;
import org.apache.lucene.index.LeafReaderContext; import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.queries.function.FunctionValues; import org.apache.lucene.queries.function.FunctionValues;
import org.apache.lucene.queries.function.ValueSource; import org.apache.lucene.queries.function.ValueSource;
@ -38,6 +35,8 @@ import org.apache.lucene.spatial.prefix.AbstractVisitingPrefixTreeQuery;
import org.apache.lucene.spatial.prefix.tree.Cell; import org.apache.lucene.spatial.prefix.tree.Cell;
import org.apache.lucene.spatial.prefix.tree.SpatialPrefixTree; import org.apache.lucene.spatial.prefix.tree.SpatialPrefixTree;
import org.apache.lucene.util.DocIdSetBuilder; import org.apache.lucene.util.DocIdSetBuilder;
import org.locationtech.spatial4j.shape.Shape;
import org.locationtech.spatial4j.shape.SpatialRelation;
/** /**
* A spatial Intersects predicate that distinguishes an approximated match from an exact match based on which cells * A spatial Intersects predicate that distinguishes an approximated match from an exact match based on which cells
@ -163,8 +162,8 @@ public class IntersectsRPTVerifyQuery extends Query {
// TODO consider if IntersectsPrefixTreeQuery should simply do this and provide both sets // TODO consider if IntersectsPrefixTreeQuery should simply do this and provide both sets
class IntersectsDifferentiatingVisitor extends VisitorTemplate { class IntersectsDifferentiatingVisitor extends VisitorTemplate {
DocIdSetBuilder approxBuilder = new DocIdSetBuilder(maxDoc, terms); DocIdSetBuilder approxBuilder;
DocIdSetBuilder exactBuilder = new DocIdSetBuilder(maxDoc, terms); DocIdSetBuilder exactBuilder;
boolean approxIsEmpty = true; boolean approxIsEmpty = true;
boolean exactIsEmpty = true; boolean exactIsEmpty = true;
DocIdSet exactDocIdSet; DocIdSet exactDocIdSet;
@ -176,6 +175,8 @@ public class IntersectsRPTVerifyQuery extends Query {
@Override @Override
protected void start() throws IOException { protected void start() throws IOException {
approxBuilder = new DocIdSetBuilder(maxDoc, terms);
exactBuilder = new DocIdSetBuilder(maxDoc, terms);
} }
@Override @Override

View File

@ -18,7 +18,6 @@ package org.apache.lucene.spatial.prefix;
import java.io.IOException; import java.io.IOException;
import org.locationtech.spatial4j.shape.Shape;
import org.apache.lucene.index.LeafReader; import org.apache.lucene.index.LeafReader;
import org.apache.lucene.index.LeafReaderContext; import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.index.PostingsEnum; import org.apache.lucene.index.PostingsEnum;
@ -35,6 +34,7 @@ import org.apache.lucene.search.Weight;
import org.apache.lucene.spatial.prefix.tree.SpatialPrefixTree; import org.apache.lucene.spatial.prefix.tree.SpatialPrefixTree;
import org.apache.lucene.util.BitSet; import org.apache.lucene.util.BitSet;
import org.apache.lucene.util.DocIdSetBuilder; import org.apache.lucene.util.DocIdSetBuilder;
import org.locationtech.spatial4j.shape.Shape;
/** /**
* Base class for Lucene Queries on SpatialPrefixTree fields. * Base class for Lucene Queries on SpatialPrefixTree fields.
@ -105,7 +105,7 @@ public abstract class AbstractPrefixTreeQuery extends Query {
protected final LeafReaderContext context; protected final LeafReaderContext context;
protected final int maxDoc; protected final int maxDoc;
protected final Terms terms; protected final Terms terms; // maybe null
protected final TermsEnum termsEnum;//remember to check for null! protected final TermsEnum termsEnum;//remember to check for null!
protected PostingsEnum postingsEnum; protected PostingsEnum postingsEnum;