Merging of compressed string Fields may hit NPE
-----------------------------------------------
Key: LUCENE-1374
URL: https://issues.apache.org/jira/browse/LUCENE-1374
Project: Lucene - Java
Issue Type: Bug
Components: Index
Affects Versions: 2.4
Reporter: Michael McCandless
Assignee: Michael McCandless
Fix For: 2.4
This bug was introduced with LUCENE-1219 (only present on 2.4).
The bug happens when merging compressed string fields, but only if bulk-merging
code does not apply because the FieldInfos for the segment being merged are not
congruent. This test shows the bug:
{code}
public void testMergeCompressedFields() throws IOException {
File indexDir = new File(System.getProperty("tempDir"),
"mergecompressedfields");
Directory dir = FSDirectory.getDirectory(indexDir);
try {
for(int i=0;i<5;i++) {
// Must make a new writer & doc each time, w/
// different fields, so bulk merge of stored fields
// cannot run:
IndexWriter w = new IndexWriter(dir, new WhitespaceAnalyzer(), i==0,
IndexWriter.MaxFieldLength.UNLIMITED);
w.setMergeFactor(5);
w.setMergeScheduler(new SerialMergeScheduler());
Document doc = new Document();
doc.add(new Field("test1", "this is some data that will be compressed
this this this", Field.Store.COMPRESS, Field.Index.NO));
doc.add(new Field("test2", new byte[20], Field.Store.COMPRESS));
doc.add(new Field("field" + i, "random field", Field.Store.NO,
Field.Index.TOKENIZED));
w.addDocument(doc);
w.close();
}
byte[] cmp = new byte[20];
IndexReader r = IndexReader.open(dir);
for(int i=0;i<5;i++) {
Document doc = r.document(i);
assertEquals("this is some data that will be compressed this this
this", doc.getField("test1").stringValue());
byte[] b = doc.getField("test2").binaryValue();
assertTrue(Arrays.equals(b, cmp));
}
} finally {
dir.close();
_TestUtil.rmDir(indexDir);
}
}
{code}
It's because in FieldsReader, when we load a field "for merge" we create a
FieldForMerge instance which subsequently does not return the right values for
getBinary{Value,Length,Offset}.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]