You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by no...@apache.org on 2016/03/09 17:00:49 UTC
[38/50] [abbrv] lucene-solr git commit: LUCENE-7083: default points
merge logic should not ask a reader to merge points on a field that doesn't
exist in that segment
LUCENE-7083: default points merge logic should not ask a reader to merge points on a field that doesn't exist in that segment
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/2cac33a5
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/2cac33a5
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/2cac33a5
Branch: refs/heads/apiv2
Commit: 2cac33a5ce7b64713eba6e22d5f7c9122ab8eafe
Parents: 9393a31
Author: Mike McCandless <mi...@apache.org>
Authored: Tue Mar 8 13:28:28 2016 -0500
Committer: Mike McCandless <mi...@apache.org>
Committed: Tue Mar 8 13:28:28 2016 -0500
----------------------------------------------------------------------
.../org/apache/lucene/codecs/PointsWriter.java | 6 ++++++
.../org/apache/lucene/index/IndexWriter.java | 1 +
.../apache/lucene/index/TestPointValues.java | 20 ++++++++++++++++++++
3 files changed, 27 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/2cac33a5/lucene/core/src/java/org/apache/lucene/codecs/PointsWriter.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/codecs/PointsWriter.java b/lucene/core/src/java/org/apache/lucene/codecs/PointsWriter.java
index 56689ec..53db281 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/PointsWriter.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/PointsWriter.java
@@ -54,6 +54,12 @@ public abstract class PointsWriter implements Closeable {
// This segment has no points
continue;
}
+ FieldInfo readerFieldInfo = mergeState.fieldInfos[i].fieldInfo(fieldName);
+ if (readerFieldInfo == null) {
+ // This segment never saw this field
+ continue;
+ }
+
MergeState.DocMap docMap = mergeState.docMaps[i];
int docBase = mergeState.docBase[i];
pointsReader.intersect(fieldInfo.name,
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/2cac33a5/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java b/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
index 57ce3dd..66a0e73 100644
--- a/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
+++ b/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
@@ -4116,6 +4116,7 @@ public class IndexWriter implements Closeable, TwoPhaseCommit, Accountable {
(mergeState.mergeFieldInfos.hasDocValues() ? "docValues" : "no docValues") + "; " +
(mergeState.mergeFieldInfos.hasProx() ? "prox" : "no prox") + "; " +
(mergeState.mergeFieldInfos.hasProx() ? "freqs" : "no freqs") + "; " +
+ (mergeState.mergeFieldInfos.hasPointValues() ? "points" : "no points") + "; " +
String.format(Locale.ROOT,
"%.1f sec (%.1f sec stopped, %.1f sec paused) to merge segment [%.2f MB, %.2f MB/sec]",
sec,
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/2cac33a5/lucene/core/src/test/org/apache/lucene/index/TestPointValues.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestPointValues.java b/lucene/core/src/test/org/apache/lucene/index/TestPointValues.java
index 7231b1a..9ced11a 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestPointValues.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestPointValues.java
@@ -39,6 +39,7 @@ import org.apache.lucene.index.PointValues.IntersectVisitor;
import org.apache.lucene.index.PointValues.Relation;
import org.apache.lucene.index.PointValues;
import org.apache.lucene.store.Directory;
+import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.IOUtils;
import org.apache.lucene.util.LuceneTestCase;
import org.apache.lucene.util.TestUtil;
@@ -562,4 +563,23 @@ public class TestPointValues extends LuceneTestCase {
r.close();
dir.close();
}
+
+ public void testPointsFieldMissingFromOneSegment() throws Exception {
+ Directory dir = FSDirectory.open(createTempDir());
+ IndexWriterConfig iwc = new IndexWriterConfig(null);
+ IndexWriter w = new IndexWriter(dir, iwc);
+ Document doc = new Document();
+ doc.add(new StringField("id", "0", Field.Store.NO));
+ doc.add(new IntPoint("int0", 0));
+ w.addDocument(doc);
+ w.commit();
+
+ doc = new Document();
+ doc.add(new IntPoint("int1", 17));
+ w.addDocument(doc);
+ w.forceMerge(1);
+
+ w.close();
+ dir.close();
+ }
}