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);
         }