diff --git a/VENDOR.hbase/hbase-trunk/src/main/java/org/apache/hadoop/hbase/io/encoding/FastDiffDeltaEncoder.java b/VENDOR.hbase/hbase-trunk/src/main/java/org/apache/hadoop/hbase/io/encoding/FastDiffDeltaEncoder.java index 0e494b5..d3b592a 100644 --- a/VENDOR.hbase/hbase-trunk/src/main/java/org/apache/hadoop/hbase/io/encoding/FastDiffDeltaEncoder.java +++ b/VENDOR.hbase/hbase-trunk/src/main/java/org/apache/hadoop/hbase/io/encoding/FastDiffDeltaEncoder.java @@ -334,7 +334,7 @@ public class FastDiffDeltaEncoder extends BufferedDataBlockEncoder { // length first as an optimization. if (valueLength == this.prevState.valueLength) { if (valueLength == getCommonPrefixLength(value, valueOffset, valueLength, - this.prevState.value, this.prevState.valueLength, + this.prevState.value, this.prevState.valueOffset, this.prevState.valueLength)) { // if common prefix consists of whole value length flag |= FLAG_SAME_VALUE; diff --git a/VENDOR.hbase/hbase-trunk/src/test/java/org/apache/hadoop/hbase/io/encoding/TestDataBlockEncoders.java b/VENDOR.hbase/hbase-trunk/src/test/java/org/apache/hadoop/hbase/io/encoding/TestDataBlockEncoders.java index 404c1b7..9f9d41a 100644 --- a/VENDOR.hbase/hbase-trunk/src/test/java/org/apache/hadoop/hbase/io/encoding/TestDataBlockEncoders.java +++ b/VENDOR.hbase/hbase-trunk/src/test/java/org/apache/hadoop/hbase/io/encoding/TestDataBlockEncoders.java @@ -117,6 +117,26 @@ public class TestDataBlockEncoders { } /** + * Test KeyValues with negative timestamp. + * @throws IOException On test failure. + */ + @Test + public void testZeroByte() throws IOException { + List kvList = new ArrayList(); + byte[] row = Bytes.toBytes("abcd"); + byte[] family = new byte[] { 'f' }; + byte[] qualifier0 = new byte[] { 'b' }; + byte[] qualifier1 = new byte[] { 'c' }; + byte[] value0 = new byte[] { 'd' }; + byte[] value1 = new byte[] { 0x00 }; + kvList.add(new KeyValue(row, family, qualifier0, 0, Type.Put, value0)); + kvList.add(new KeyValue(row, family, qualifier1, 0, Type.Put, value1)); + testEncodersOnDataset( + RedundantKVGenerator.convertKvToByteBuffer(kvList, + includesMemstoreTS)); + } + + /** * Test whether compression -> decompression gives the consistent results on * pseudorandom sample. * @throws IOException On test failure. @@ -339,4 +359,4 @@ public class TestDataBlockEncoders { assertEquals("Input of two methods is changed", onDataset, dataset); } } -} \ No newline at end of file +}