You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mi...@apache.org on 2012/03/14 23:09:34 UTC
svn commit: r1300753 - in /lucene/dev/trunk/lucene/core/src:
java/org/apache/lucene/util/PagedBytes.java
test/org/apache/lucene/util/TestPagedBytes.java
Author: mikemccand
Date: Wed Mar 14 22:09:34 2012
New Revision: 1300753
URL: http://svn.apache.org/viewvc?rev=1300753&view=rev
Log:
LUCENE-3841: add direct test for prefix-coded byte[] spanning two pages
Modified:
lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/util/PagedBytes.java
lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/util/TestPagedBytes.java
Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/util/PagedBytes.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/util/PagedBytes.java?rev=1300753&r1=1300752&r2=1300753&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/util/PagedBytes.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/util/PagedBytes.java Wed Mar 14 22:09:34 2012
@@ -214,8 +214,6 @@ public final class PagedBytes {
// VarDerefBytesImpl.finishInternal does its own
// prefix + byte[] writing which can span two blocks,
// so we support that here on decode:
- // we could some day relax that and span two blocks:
-
if (blockSize - offset >= length) {
// Within block
b.offset = offset;
Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/util/TestPagedBytes.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/util/TestPagedBytes.java?rev=1300753&r1=1300752&r2=1300753&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/util/TestPagedBytes.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/util/TestPagedBytes.java Wed Mar 14 22:09:34 2012
@@ -107,4 +107,27 @@ public class TestPagedBytes extends Luce
}
}
}
+
+ // LUCENE-3841: even though
+ // copyUsingLengthPrefix will never span two blocks, make
+ // sure if caller writes their own prefix followed by the
+ // bytes, it still works:
+ public void testLengthPrefixAcrossTwoBlocks() throws Exception {
+ final PagedBytes p = new PagedBytes(10);
+ final DataOutput out = p.getDataOutput();
+ final byte[] bytes1 = new byte[1000];
+ random.nextBytes(bytes1);
+ out.writeBytes(bytes1, 0, bytes1.length);
+ out.writeByte((byte) 40);
+ final byte[] bytes2 = new byte[40];
+ random.nextBytes(bytes2);
+ out.writeBytes(bytes2, 0, bytes2.length);
+
+ final PagedBytes.Reader reader = p.freeze(random.nextBoolean());
+ BytesRef answer = reader.fillSliceWithPrefix(new BytesRef(), 1000);
+ assertEquals(40, answer.length);
+ for(int i=0;i<40;i++) {
+ assertEquals(bytes2[i], answer.bytes[answer.offset + i]);
+ }
+ }
}