File tree Expand file tree Collapse file tree
vector/src/main/java/org/apache/arrow/vector/complex Expand file tree Collapse file tree Original file line number Diff line number Diff 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}
Original file line number Diff line number Diff line change 1919import static org .apache .arrow .memory .util .LargeMemoryUtil .checkedCastToInt ;
2020
2121import org .apache .arrow .vector .ValueVector ;
22- import org .apache .arrow .vector .complex .BaseLargeRepeatedValueViewVector ;
2322import org .apache .arrow .vector .complex .LargeListViewVector ;
2423import org .apache .arrow .vector .complex .reader .FieldReader ;
2524import 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 ) {
Original file line number Diff line number Diff line change 1717package org .apache .arrow .vector .complex .impl ;
1818
1919import org .apache .arrow .vector .ValueVector ;
20- import org .apache .arrow .vector .complex .BaseRepeatedValueViewVector ;
2120import org .apache .arrow .vector .complex .ListViewVector ;
2221import org .apache .arrow .vector .complex .reader .FieldReader ;
2322import 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 ) {
You can’t perform that action at this time.
0 commit comments