Index: CHANGES.txt =================================================================== --- CHANGES.txt (revision 618764) +++ CHANGES.txt (working copy) @@ -44,6 +44,10 @@ 2. LUCENE-1163: Fixed bug in CharArraySet.contains(char[] buffer, int offset, int len) that was ignoring offset and thus giving the wrong answer. (Thomas Peuss via Mike McCandless) + + 3. LUCENE-1168: Fixed corruption cases when autoCommit=false and + documents have mixed term vectors (Suresh Guvvala via Mike + McCandless). New features Index: src/test/org/apache/lucene/index/TestIndexWriter.java =================================================================== --- src/test/org/apache/lucene/index/TestIndexWriter.java (revision 618764) +++ src/test/org/apache/lucene/index/TestIndexWriter.java (working copy) @@ -2682,4 +2682,146 @@ reader.close(); dir.close(); } + + // LUCENE-1168 + public void testTermVectorCorruption() throws IOException { + + Directory dir = new MockRAMDirectory(); + for(int iter=0;iter<4;iter++) { + final boolean autoCommit = 1==iter/2; + IndexWriter writer = new IndexWriter(dir, + autoCommit, new StandardAnalyzer(), + IndexWriter.MaxFieldLength.LIMITED); + writer.setMaxBufferedDocs(2); + writer.setRAMBufferSizeMB(IndexWriter.DISABLE_AUTO_FLUSH); + writer.setMergeScheduler(new SerialMergeScheduler()); + writer.setMergePolicy(new LogDocMergePolicy()); + + Document document = new Document(); + + Field storedField = new Field("stored", "stored", Field.Store.YES, + Field.Index.NO); + document.add(storedField); + writer.addDocument(document); + writer.addDocument(document); + + document = new Document(); + document.add(storedField); + Field termVectorField = new Field("termVector", "termVector", + Field.Store.NO, Field.Index.UN_TOKENIZED, + Field.TermVector.WITH_POSITIONS_OFFSETS); + + document.add(termVectorField); + writer.addDocument(document); + writer.optimize(); + writer.close(); + + IndexReader reader = IndexReader.open(dir); + for(int i=0;i