From 0a9ac9f55c345dc397331d741149e83e987d6d94 Mon Sep 17 00:00:00 2001 From: Konstantin Shaposhnikov Date: Wed, 8 Apr 2015 17:33:17 +0800 Subject: [PATCH 1/2] [PARQUET-246] bugfix: reset all DeltaByteArrayWriter state in reset() method --- .../parquet/column/values/deltastrings/DeltaByteArrayWriter.java | 1 + 1 file changed, 1 insertion(+) diff --git a/parquet-column/src/main/java/parquet/column/values/deltastrings/DeltaByteArrayWriter.java b/parquet-column/src/main/java/parquet/column/values/deltastrings/DeltaByteArrayWriter.java index 0d1200a092..f352f757ae 100644 --- a/parquet-column/src/main/java/parquet/column/values/deltastrings/DeltaByteArrayWriter.java +++ b/parquet-column/src/main/java/parquet/column/values/deltastrings/DeltaByteArrayWriter.java @@ -66,6 +66,7 @@ public Encoding getEncoding() { public void reset() { prefixLengthWriter.reset(); suffixWriter.reset(); + previous = new byte[0]; } @Override From 0367588373dddae5e9251bfd9d29791758496e9a Mon Sep 17 00:00:00 2001 From: Alex Levenson Date: Tue, 16 Jun 2015 16:38:17 -0700 Subject: [PATCH 2/2] Add regression test for PR-171 --- .../deltastrings/TestDeltaByteArray.java | 39 ++++++++++++------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/parquet-column/src/test/java/org/apache/parquet/column/values/deltastrings/TestDeltaByteArray.java b/parquet-column/src/test/java/org/apache/parquet/column/values/deltastrings/TestDeltaByteArray.java index 693557a580..b62ef8447f 100644 --- a/parquet-column/src/test/java/org/apache/parquet/column/values/deltastrings/TestDeltaByteArray.java +++ b/parquet-column/src/test/java/org/apache/parquet/column/values/deltastrings/TestDeltaByteArray.java @@ -34,29 +34,18 @@ public class TestDeltaByteArray { static String[] randvalues = Utils.getRandomStringSamples(10000, 32); @Test - public void testSerialization () throws IOException { + public void testSerialization () throws Exception { DeltaByteArrayWriter writer = new DeltaByteArrayWriter(64 * 1024, 64 * 1024); DeltaByteArrayReader reader = new DeltaByteArrayReader(); - Utils.writeData(writer, values); - Binary[] bin = Utils.readData(reader, writer.getBytes().toByteArray(), values.length); - - for(int i =0; i< bin.length ; i++) { - Assert.assertEquals(Binary.fromString(values[i]), bin[i]); - } + assertReadWrite(writer, reader, values); } @Test - public void testRandomStrings() throws IOException { + public void testRandomStrings() throws Exception { DeltaByteArrayWriter writer = new DeltaByteArrayWriter(64 * 1024, 64 * 1024); DeltaByteArrayReader reader = new DeltaByteArrayReader(); - - Utils.writeData(writer, randvalues); - Binary[] bin = Utils.readData(reader, writer.getBytes().toByteArray(), randvalues.length); - - for(int i =0; i< bin.length ; i++) { - Assert.assertEquals(Binary.fromString(randvalues[i]), bin[i]); - } + assertReadWrite(writer, reader, randvalues); } @Test @@ -81,4 +70,24 @@ public void testLengths() throws IOException { Assert.assertEquals(0, bin[1]); Assert.assertEquals(7, bin[2]); } + + private void assertReadWrite(DeltaByteArrayWriter writer, DeltaByteArrayReader reader, String[] vals) throws Exception { + Utils.writeData(writer, vals); + Binary[] bin = Utils.readData(reader, writer.getBytes().toByteArray(), vals.length); + + for(int i = 0; i< bin.length ; i++) { + Assert.assertEquals(Binary.fromString(vals[i]), bin[i]); + } + } + + @Test + public void testWriterReset() throws Exception { + DeltaByteArrayWriter writer = new DeltaByteArrayWriter(64 * 1024, 64 * 1024); + + assertReadWrite(writer, new DeltaByteArrayReader(), values); + + writer.reset(); + + assertReadWrite(writer, new DeltaByteArrayReader(), values); + } }