Skip to content

Commit e822ea7

Browse files
minji-kimStevenMPhillips
authored andcommitted
ARROW-46: ListVector should initialize bits in allocateNew
1 parent 31def7d commit e822ea7

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

java/vector/src/main/java/org/apache/arrow/vector/complex/ListVector.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ public UnionListWriter getWriter() {
7272
@Override
7373
public void allocateNew() throws OutOfMemoryException {
7474
super.allocateNewSafe();
75+
bits.allocateNewSafe();
7576
}
7677

7778
public void transferTo(ListVector target) {

java/vector/src/test/java/org/apache/arrow/vector/TestValueVector.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,13 @@
2424
import java.nio.charset.Charset;
2525

2626
import org.apache.arrow.memory.RootAllocator;
27+
import org.apache.arrow.vector.complex.ListVector;
2728
import org.apache.arrow.vector.complex.MapVector;
2829
import org.apache.arrow.vector.complex.RepeatedListVector;
2930
import org.apache.arrow.vector.complex.RepeatedMapVector;
3031
import org.apache.arrow.vector.types.MaterializedField;
32+
import org.apache.arrow.vector.types.Types;
33+
import org.apache.arrow.vector.types.Types.MinorType;
3134
import org.apache.arrow.vector.util.BasicTypeHelper;
3235
import org.apache.arrow.vector.util.OversizedAllocationException;
3336
import org.apache.arrow.vector.holders.BitHolder;
@@ -518,4 +521,21 @@ public void testVVInitialCapacity() throws Exception {
518521
}
519522
}
520523

524+
@Test
525+
public void testListVectorShouldNotThrowOversizedAllocationException() throws Exception {
526+
final MaterializedField field = MaterializedField.create(EMPTY_SCHEMA_PATH,
527+
Types.optional(MinorType.LIST));
528+
ListVector vector = new ListVector(field, allocator, null);
529+
ListVector vectorFrom = new ListVector(field, allocator, null);
530+
vectorFrom.allocateNew();
531+
532+
for (int i = 0; i < 10000; i++) {
533+
vector.allocateNew();
534+
vector.copyFromSafe(0, 0, vectorFrom);
535+
vector.clear();
536+
}
537+
538+
vectorFrom.clear();
539+
vector.clear();
540+
}
521541
}

0 commit comments

Comments
 (0)