You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by em...@apache.org on 2020/04/11 05:28:12 UTC
[arrow] branch master updated: ARROW-8158: [Java] Getting length of
data buffer and base variable width vector
This is an automated email from the ASF dual-hosted git repository.
emkornfield pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow.git
The following commit(s) were added to refs/heads/master by this push:
new a2376a2 ARROW-8158: [Java] Getting length of data buffer and base variable width vector
a2376a2 is described below
commit a2376a22b3bad46da5a800bfeaac48977e718099
Author: tianchen <ni...@alibaba-inc.com>
AuthorDate: Fri Apr 10 22:27:45 2020 -0700
ARROW-8158: [Java] Getting length of data buffer and base variable width vector
For string data buffer and base variable width vector can we have a way to get length of the data?
For instance, in ArrowColumnVector in StringAccessor we use stringResult.start and stringResult.end, instead we would like to get length of the data through an exposed function.
Now we have getStartOffset in BaseVariableVector and getElementStartIndex/getElementEndIndex in BaseListVector. To be consistent, we add getEndOffset for BaseVariableVector.
Closes #6684 from tianchen92/ARROW-8158
Authored-by: tianchen <ni...@alibaba-inc.com>
Signed-off-by: Micah Kornfield <em...@gmail.com>
---
.../arrow/vector/BaseVariableWidthVector.java | 9 +++++++-
.../org/apache/arrow/vector/TestValueVector.java | 24 ++++++++++++++++++++++
2 files changed, 32 insertions(+), 1 deletion(-)
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/BaseVariableWidthVector.java b/java/vector/src/main/java/org/apache/arrow/vector/BaseVariableWidthVector.java
index 5a595cb..0b8cbb9 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/BaseVariableWidthVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/BaseVariableWidthVector.java
@@ -1215,7 +1215,7 @@ public abstract class BaseVariableWidthVector extends BaseValueVector
return getStartOffset(index);
}
- protected final int getStartOffset(int index) {
+ public final int getStartOffset(int index) {
return offsetBuffer.getInt(index * OFFSET_WIDTH);
}
@@ -1393,4 +1393,11 @@ public abstract class BaseVariableWidthVector extends BaseValueVector
public <OUT, IN> OUT accept(VectorVisitor<OUT, IN> visitor, IN value) {
return visitor.visit(this, value);
}
+
+ /**
+ * Gets the ending offset of a record, given its index.
+ */
+ public final int getEndOffset(int index) {
+ return offsetBuffer.getInt((index + 1) * OFFSET_WIDTH);
+ }
}
diff --git a/java/vector/src/test/java/org/apache/arrow/vector/TestValueVector.java b/java/vector/src/test/java/org/apache/arrow/vector/TestValueVector.java
index 65bc963..61cf853 100644
--- a/java/vector/src/test/java/org/apache/arrow/vector/TestValueVector.java
+++ b/java/vector/src/test/java/org/apache/arrow/vector/TestValueVector.java
@@ -2701,4 +2701,28 @@ public class TestValueVector {
}
writer.endList();
}
+
+ @Test
+ public void testVariableVectorGetEndOffset() {
+ try (final VarCharVector vector1 = new VarCharVector("v1", allocator);
+ final VarBinaryVector vector2 = new VarBinaryVector("v2", allocator)) {
+
+ setVector(vector1, STR1, null, STR2);
+ setVector(vector2, STR1, STR2, STR3);
+
+ assertEquals(0, vector1.getStartOffset(0));
+ assertEquals(STR1.length, vector1.getEndOffset(0));
+ assertEquals(STR1.length, vector1.getStartOffset(1));
+ assertEquals(STR1.length, vector1.getEndOffset(1));
+ assertEquals(STR1.length, vector1.getStartOffset(2));
+ assertEquals(STR1.length + STR2.length, vector1.getEndOffset(2));
+
+ assertEquals(0, vector2.getStartOffset(0));
+ assertEquals(STR1.length, vector2.getEndOffset(0));
+ assertEquals(STR1.length, vector2.getStartOffset(1));
+ assertEquals(STR1.length + STR2.length, vector2.getEndOffset(1));
+ assertEquals(STR1.length + STR2.length, vector2.getStartOffset(2));
+ assertEquals(STR1.length + STR2.length + STR3.length, vector2.getEndOffset(2));
+ }
+ }
}