diff --git a/parquet-column/src/main/java/org/apache/parquet/column/values/deltastrings/DeltaByteArrayWriter.java b/parquet-column/src/main/java/org/apache/parquet/column/values/deltastrings/DeltaByteArrayWriter.java index 8c71d5d580..eb33d30156 100644 --- a/parquet-column/src/main/java/org/apache/parquet/column/values/deltastrings/DeltaByteArrayWriter.java +++ b/parquet-column/src/main/java/org/apache/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 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); + } }