Skip to content

Commit 4590f14

Browse files
committed
PARQUET-246: fix incomplete state reset in DeltaByteArrayWriter.reset()
...thod Author: Alex Levenson <alexlevenson@twitter.com> Author: Konstantin Shaposhnikov <Konstantin.Shaposhnikov@sc.com> Author: kostya-sh <kostya-sh@users.noreply.github.com> Closes #171 from kostya-sh/PARQUET-246 and squashes the following commits: 75950c5 [kostya-sh] Merge pull request #1 from isnotinvain/PR-171 a718309 [Konstantin Shaposhnikov] Merge remote-tracking branch 'refs/remotes/origin/master' into PARQUET-246 0367588 [Alex Levenson] Add regression test for PR-171 94e8fda [Alex Levenson] Merge branch 'master' into PR-171 0a9ac9f [Konstantin Shaposhnikov] [PARQUET-246] bugfix: reset all DeltaByteArrayWriter state in reset() method
1 parent 2e62764 commit 4590f14

2 files changed

Lines changed: 25 additions & 15 deletions

File tree

parquet-column/src/main/java/org/apache/parquet/column/values/deltastrings/DeltaByteArrayWriter.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ public Encoding getEncoding() {
6666
public void reset() {
6767
prefixLengthWriter.reset();
6868
suffixWriter.reset();
69+
previous = new byte[0];
6970
}
7071

7172
@Override

parquet-column/src/test/java/org/apache/parquet/column/values/deltastrings/TestDeltaByteArray.java

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -34,29 +34,18 @@ public class TestDeltaByteArray {
3434
static String[] randvalues = Utils.getRandomStringSamples(10000, 32);
3535

3636
@Test
37-
public void testSerialization () throws IOException {
37+
public void testSerialization () throws Exception {
3838
DeltaByteArrayWriter writer = new DeltaByteArrayWriter(64 * 1024, 64 * 1024);
3939
DeltaByteArrayReader reader = new DeltaByteArrayReader();
4040

41-
Utils.writeData(writer, values);
42-
Binary[] bin = Utils.readData(reader, writer.getBytes().toByteArray(), values.length);
43-
44-
for(int i =0; i< bin.length ; i++) {
45-
Assert.assertEquals(Binary.fromString(values[i]), bin[i]);
46-
}
41+
assertReadWrite(writer, reader, values);
4742
}
4843

4944
@Test
50-
public void testRandomStrings() throws IOException {
45+
public void testRandomStrings() throws Exception {
5146
DeltaByteArrayWriter writer = new DeltaByteArrayWriter(64 * 1024, 64 * 1024);
5247
DeltaByteArrayReader reader = new DeltaByteArrayReader();
53-
54-
Utils.writeData(writer, randvalues);
55-
Binary[] bin = Utils.readData(reader, writer.getBytes().toByteArray(), randvalues.length);
56-
57-
for(int i =0; i< bin.length ; i++) {
58-
Assert.assertEquals(Binary.fromString(randvalues[i]), bin[i]);
59-
}
48+
assertReadWrite(writer, reader, randvalues);
6049
}
6150

6251
@Test
@@ -81,4 +70,24 @@ public void testLengths() throws IOException {
8170
Assert.assertEquals(0, bin[1]);
8271
Assert.assertEquals(7, bin[2]);
8372
}
73+
74+
private void assertReadWrite(DeltaByteArrayWriter writer, DeltaByteArrayReader reader, String[] vals) throws Exception {
75+
Utils.writeData(writer, vals);
76+
Binary[] bin = Utils.readData(reader, writer.getBytes().toByteArray(), vals.length);
77+
78+
for(int i = 0; i< bin.length ; i++) {
79+
Assert.assertEquals(Binary.fromString(vals[i]), bin[i]);
80+
}
81+
}
82+
83+
@Test
84+
public void testWriterReset() throws Exception {
85+
DeltaByteArrayWriter writer = new DeltaByteArrayWriter(64 * 1024, 64 * 1024);
86+
87+
assertReadWrite(writer, new DeltaByteArrayReader(), values);
88+
89+
writer.reset();
90+
91+
assertReadWrite(writer, new DeltaByteArrayReader(), values);
92+
}
8493
}

0 commit comments

Comments
 (0)