Skip to content

Commit 1a084bb

Browse files
DX-122953 Complete empty list split transfer
1 parent 6525bbe commit 1a084bb

2 files changed

Lines changed: 10 additions & 0 deletions

File tree

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
@@ -586,6 +586,7 @@ public void splitAndTransfer(int startIndex, int length) {
586586
to.setValueCount(length);
587587
} else {
588588
to.ensureEmptyOffsetBufferCapacity(OFFSET_WIDTH);
589+
dataTransferPair.splitAndTransfer(0, 0);
589590
to.setValueCount(0);
590591
}
591592
}

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,10 @@
2828
import java.util.HashMap;
2929
import java.util.List;
3030
import java.util.Map;
31+
import org.apache.arrow.memory.ArrowBuf;
3132
import org.apache.arrow.memory.BufferAllocator;
3233
import org.apache.arrow.memory.RootAllocator;
34+
import org.apache.arrow.vector.complex.BaseRepeatedValueVector;
3335
import org.apache.arrow.vector.complex.DenseUnionVector;
3436
import org.apache.arrow.vector.complex.FixedSizeListVector;
3537
import org.apache.arrow.vector.complex.LargeListViewVector;
@@ -115,6 +117,8 @@ public void testWithEmptyVector() {
115117
TransferPair transferPair = listVector.getTransferPair(allocator);
116118
transferPair.splitAndTransfer(0, 0);
117119
assertEquals(0, transferPair.getTo().getValueCount());
120+
transferPair.getTo().clear();
121+
listVector.clear();
118122
// BaseFixedWidthVector
119123
IntVector intVector = new IntVector("", allocator);
120124
transferPair = intVector.getTransferPair(allocator);
@@ -911,6 +915,11 @@ public void testListVectorZeroStartIndexAndLength() {
911915

912916
tp.splitAndTransfer(0, 0);
913917
assertEquals(valueCount, newListVector.getValueCount());
918+
List<ArrowBuf> buffers = newListVector.getFieldBuffers();
919+
ArrowBuf offsetBuffer = buffers.get(1);
920+
assertEquals(BaseRepeatedValueVector.OFFSET_WIDTH, offsetBuffer.readableBytes());
921+
assertTrue(offsetBuffer.capacity() >= BaseRepeatedValueVector.OFFSET_WIDTH);
922+
assertEquals(0, offsetBuffer.getInt(0));
914923

915924
newListVector.clear();
916925
}

0 commit comments

Comments
 (0)