Skip to content

Commit 5d1aa38

Browse files
committed
Use list view accessors in union readers
1 parent ff04d15 commit 5d1aa38

3 files changed

Lines changed: 22 additions & 15 deletions

File tree

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -960,4 +960,18 @@ public void validate() {
960960
public void endValue(int index, int size) {
961961
sizeBuffer.setInt((long) index * SIZE_WIDTH, size);
962962
}
963+
964+
/** Get data vector start index with the given list index. */
965+
public int getElementStartIndex(int index) {
966+
return offsetBuffer.getInt((long) index * OFFSET_WIDTH);
967+
}
968+
969+
private int getElementSize(int index) {
970+
return sizeBuffer.getInt((long) index * SIZE_WIDTH);
971+
}
972+
973+
/** Get data vector end index with the given list index. */
974+
public int getElementEndIndex(int index) {
975+
return getElementStartIndex(index) + getElementSize(index);
976+
}
963977
}

vector/src/main/java/org/apache/arrow/vector/complex/impl/UnionLargeListViewReader.java

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import static org.apache.arrow.memory.util.LargeMemoryUtil.checkedCastToInt;
2020

2121
import org.apache.arrow.vector.ValueVector;
22-
import org.apache.arrow.vector.complex.BaseLargeRepeatedValueViewVector;
2322
import org.apache.arrow.vector.complex.LargeListViewVector;
2423
import org.apache.arrow.vector.complex.reader.FieldReader;
2524
import org.apache.arrow.vector.holders.UnionHolder;
@@ -67,16 +66,12 @@ public void setPosition(int index) {
6766
vector.getOffsetBuffer(),
6867
vector.getSizeBuffer(),
6968
index,
70-
BaseLargeRepeatedValueViewVector.OFFSET_WIDTH,
71-
BaseLargeRepeatedValueViewVector.SIZE_WIDTH);
69+
LargeListViewVector.OFFSET_WIDTH,
70+
LargeListViewVector.SIZE_WIDTH);
7271

7372
super.setPosition(index);
74-
currentOffset =
75-
vector
76-
.getOffsetBuffer()
77-
.getInt(index * (long) BaseLargeRepeatedValueViewVector.OFFSET_WIDTH);
78-
size =
79-
vector.getSizeBuffer().getInt(index * (long) BaseLargeRepeatedValueViewVector.SIZE_WIDTH);
73+
currentOffset = vector.getElementStartIndex(index);
74+
size = vector.getElementEndIndex(index) - currentOffset;
8075
}
8176

8277
private void setEmptyPosition(int index) {

vector/src/main/java/org/apache/arrow/vector/complex/impl/UnionListViewReader.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
package org.apache.arrow.vector.complex.impl;
1818

1919
import org.apache.arrow.vector.ValueVector;
20-
import org.apache.arrow.vector.complex.BaseRepeatedValueViewVector;
2120
import org.apache.arrow.vector.complex.ListViewVector;
2221
import org.apache.arrow.vector.complex.reader.FieldReader;
2322
import org.apache.arrow.vector.holders.UnionHolder;
@@ -65,13 +64,12 @@ public void setPosition(int index) {
6564
vector.getOffsetBuffer(),
6665
vector.getSizeBuffer(),
6766
index,
68-
BaseRepeatedValueViewVector.OFFSET_WIDTH,
69-
BaseRepeatedValueViewVector.SIZE_WIDTH);
67+
ListViewVector.OFFSET_WIDTH,
68+
ListViewVector.SIZE_WIDTH);
7069

7170
super.setPosition(index);
72-
currentOffset =
73-
vector.getOffsetBuffer().getInt(index * (long) BaseRepeatedValueViewVector.OFFSET_WIDTH);
74-
size = vector.getSizeBuffer().getInt(index * (long) BaseRepeatedValueViewVector.SIZE_WIDTH);
71+
currentOffset = vector.getElementStartIndex(index);
72+
size = vector.getElementEndIndex(index) - currentOffset;
7573
}
7674

7775
private void setEmptyPosition(int index) {

0 commit comments

Comments
 (0)