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 2019/07/20 05:41:07 UTC
[arrow] branch master updated: ARROW-5918: [Java] Add get to
BaseIntVector interface
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 57940e7 ARROW-5918: [Java] Add get to BaseIntVector interface
57940e7 is described below
commit 57940e7a2d060ea8a7820fe6f7a3af6c176fb89b
Author: tianchen <ni...@alibaba-inc.com>
AuthorDate: Fri Jul 19 22:39:42 2019 -0700
ARROW-5918: [Java] Add get to BaseIntVector interface
Related to [ARROW-5918](https://issues.apache.org/jira/browse/ARROW-5918).
Author: tianchen <ni...@alibaba-inc.com>
Closes #4859 from tianchen92/ARROW-5918 and squashes the following commits:
3732a78b3 <tianchen> update javadoc and add unsafe method in BaseIntVector
1562ae183 <tianchen> fix 2
7ddce1208 <tianchen> fix
26d30be87 <tianchen> fix
e65473cf9 <tianchen> fix comments
fe9c2ecda <tianchen> fix
9b8afa6a0 <tianchen> enable null checking
9f2fc0910 <tianchen> fix
5739cc409 <tianchen> ARROW-5918: Add get to BaseIntVector interface
---
.../main/java/org/apache/arrow/vector/BaseIntVector.java | 16 +++++++++++++++-
.../main/java/org/apache/arrow/vector/BigIntVector.java | 10 ++++++++++
.../src/main/java/org/apache/arrow/vector/IntVector.java | 10 ++++++++++
.../java/org/apache/arrow/vector/SmallIntVector.java | 10 ++++++++++
.../main/java/org/apache/arrow/vector/TinyIntVector.java | 10 ++++++++++
.../main/java/org/apache/arrow/vector/UInt1Vector.java | 10 ++++++++++
.../main/java/org/apache/arrow/vector/UInt2Vector.java | 10 ++++++++++
.../main/java/org/apache/arrow/vector/UInt4Vector.java | 10 ++++++++++
.../main/java/org/apache/arrow/vector/UInt8Vector.java | 10 ++++++++++
.../arrow/vector/dictionary/DictionaryEncoder.java | 7 ++++---
10 files changed, 99 insertions(+), 4 deletions(-)
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/BaseIntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/BaseIntVector.java
index 6b5b53a..57ad645 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/BaseIntVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/BaseIntVector.java
@@ -23,7 +23,21 @@ package org.apache.arrow.vector;
public interface BaseIntVector extends ValueVector {
/**
- * set value at specific index, note this value may need to be need truncated.
+ * Sets the value at index, note this value may need to be need truncated.
+ * Note this is safe version (i.e. call setSafe method in vector)
*/
void setWithPossibleTruncate(int index, long value);
+
+ /**
+ * Sets the value at index, note this value may need to be need truncated.
+ * Note this is unsafe version (i.e. call set method in vector)
+ */
+ void setUnsafeWithPossibleTruncate(int index, long value);
+
+ /**
+ * Gets the value at index.
+ * This value may have been extended to long and will throw {@link NullPointerException}
+ * if the value is null. Note null check could be turned off via {@link NullCheckingForGet}.
+ */
+ long getValueAsLong(int index);
}
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/BigIntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/BigIntVector.java
index 2c75a8d..8b9404b 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/BigIntVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/BigIntVector.java
@@ -327,6 +327,16 @@ public class BigIntVector extends BaseFixedWidthVector implements BaseIntVector
this.setSafe(index, value);
}
+ @Override
+ public void setUnsafeWithPossibleTruncate(int index, long value) {
+ this.set(index, value);
+ }
+
+ @Override
+ public long getValueAsLong(int index) {
+ return this.get(index);
+ }
+
private class TransferImpl implements TransferPair {
BigIntVector to;
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/IntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/IntVector.java
index e4deaba..61235e0 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/IntVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/IntVector.java
@@ -331,6 +331,16 @@ public class IntVector extends BaseFixedWidthVector implements BaseIntVector {
this.setSafe(index, (int) value);
}
+ @Override
+ public void setUnsafeWithPossibleTruncate(int index, long value) {
+ this.set(index, (int) value);
+ }
+
+ @Override
+ public long getValueAsLong(int index) {
+ return this.get(index);
+ }
+
private class TransferImpl implements TransferPair {
IntVector to;
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java
index f1f064b..52ecd59 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/SmallIntVector.java
@@ -358,6 +358,16 @@ public class SmallIntVector extends BaseFixedWidthVector implements BaseIntVecto
this.setSafe(index, (int) value);
}
+ @Override
+ public void setUnsafeWithPossibleTruncate(int index, long value) {
+ this.set(index, (int) value);
+ }
+
+ @Override
+ public long getValueAsLong(int index) {
+ return this.get(index);
+ }
+
private class TransferImpl implements TransferPair {
SmallIntVector to;
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java b/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java
index d74adf2..ebac2fc 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/TinyIntVector.java
@@ -359,6 +359,16 @@ public class TinyIntVector extends BaseFixedWidthVector implements BaseIntVector
this.setSafe(index, (int) value);
}
+ @Override
+ public void setUnsafeWithPossibleTruncate(int index, long value) {
+ this.set(index, (int) value);
+ }
+
+ @Override
+ public long getValueAsLong(int index) {
+ return this.get(index);
+ }
+
private class TransferImpl implements TransferPair {
TinyIntVector to;
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java
index 8e6d4fe..df3759e 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/UInt1Vector.java
@@ -322,6 +322,16 @@ public class UInt1Vector extends BaseFixedWidthVector implements BaseIntVector {
this.setSafe(index, (int) value);
}
+ @Override
+ public void setUnsafeWithPossibleTruncate(int index, long value) {
+ this.set(index, (int) value);
+ }
+
+ @Override
+ public long getValueAsLong(int index) {
+ return this.get(index);
+ }
+
private class TransferImpl implements TransferPair {
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java
index 53bb167..e39e5e2 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/UInt2Vector.java
@@ -302,6 +302,16 @@ public class UInt2Vector extends BaseFixedWidthVector implements BaseIntVector {
this.setSafe(index, (int) value);
}
+ @Override
+ public void setUnsafeWithPossibleTruncate(int index, long value) {
+ this.set(index, (int) value);
+ }
+
+ @Override
+ public long getValueAsLong(int index) {
+ return this.get(index);
+ }
+
private class TransferImpl implements TransferPair {
UInt2Vector to;
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/UInt4Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/UInt4Vector.java
index b54b3f7..8657f06 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/UInt4Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/UInt4Vector.java
@@ -292,6 +292,16 @@ public class UInt4Vector extends BaseFixedWidthVector implements BaseIntVector {
this.setSafe(index, (int) value);
}
+ @Override
+ public void setUnsafeWithPossibleTruncate(int index, long value) {
+ this.set(index, (int) value);
+ }
+
+ @Override
+ public long getValueAsLong(int index) {
+ return this.get(index);
+ }
+
private class TransferImpl implements TransferPair {
UInt4Vector to;
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/UInt8Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/UInt8Vector.java
index 2451ab5..62a5ba5 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/UInt8Vector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/UInt8Vector.java
@@ -293,6 +293,16 @@ public class UInt8Vector extends BaseFixedWidthVector implements BaseIntVector {
this.setSafe(index, value);
}
+ @Override
+ public void setUnsafeWithPossibleTruncate(int index, long value) {
+ this.set(index, value);
+ }
+
+ @Override
+ public long getValueAsLong(int index) {
+ return this.get(index);
+ }
+
private class TransferImpl implements TransferPair {
UInt8Vector to;
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/dictionary/DictionaryEncoder.java b/java/vector/src/main/java/org/apache/arrow/vector/dictionary/DictionaryEncoder.java
index ed69df3..9b16bb1 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/dictionary/DictionaryEncoder.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/dictionary/DictionaryEncoder.java
@@ -98,10 +98,11 @@ public class DictionaryEncoder {
// copy the dictionary values into the decoded vector
TransferPair transfer = dictionaryVector.getTransferPair(indices.getAllocator());
transfer.getTo().allocateNewSafe();
+
+ BaseIntVector baseIntVector = (BaseIntVector) indices;
for (int i = 0; i < count; i++) {
- Object index = indices.getObject(i);
- if (index != null) {
- int indexAsInt = ((Number) index).intValue();
+ if (!baseIntVector.isNull(i)) {
+ int indexAsInt = (int) baseIntVector.getValueAsLong(i);
if (indexAsInt > dictionaryCount) {
throw new IllegalArgumentException("Provided dictionary does not contain value for index " + indexAsInt);
}