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/08/09 05:01:55 UTC

[arrow] branch master updated: ARROW-6155: [Java] Extract a super interface for vectors whose elements reside in continuous memory segments

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 229fe33  ARROW-6155: [Java] Extract a super interface for vectors whose elements reside in continuous memory segments
229fe33 is described below

commit 229fe334da6de574cf4a06fd3da47e03639ccf7c
Author: liyafan82 <fa...@foxmail.com>
AuthorDate: Thu Aug 8 22:01:06 2019 -0700

    ARROW-6155: [Java] Extract a super interface for vectors whose elements reside in continuous memory segments
    
    For vectors whose data elements reside in continuous memory segments, they should implement a common super interface. This will avoid unnecessary code branches.
    
    For now, such vectors include fixed-width vectors and variable-width vectors. In the future, there can be more vectors included.
    
    Closes #5028 from liyafan82/fly_0807_addr and squashes the following commits:
    
    ed4e26f03 <liyafan82>  Extract a super interface for vectors whose elements reside in continuous memory segments
    
    Authored-by: liyafan82 <fa...@foxmail.com>
    Signed-off-by: Micah Kornfield <em...@gmail.com>
---
 .../java/org/apache/arrow/vector/BitVector.java    | 11 +++++++++++
 ...thVector.java => ElementAddressableVector.java} | 18 +++---------------
 .../org/apache/arrow/vector/FixedWidthVector.java  | 22 ++--------------------
 .../apache/arrow/vector/VariableWidthVector.java   | 19 +------------------
 4 files changed, 17 insertions(+), 53 deletions(-)

diff --git a/java/vector/src/main/java/org/apache/arrow/vector/BitVector.java b/java/vector/src/main/java/org/apache/arrow/vector/BitVector.java
index b1b10f9..c6bd324 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/BitVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/BitVector.java
@@ -20,6 +20,7 @@ package org.apache.arrow.vector;
 import static org.apache.arrow.vector.NullCheckingForGet.NULL_CHECKING_ENABLED;
 
 import org.apache.arrow.memory.BufferAllocator;
+import org.apache.arrow.memory.util.ArrowBufPointer;
 import org.apache.arrow.util.Preconditions;
 import org.apache.arrow.vector.complex.impl.BitReaderImpl;
 import org.apache.arrow.vector.complex.reader.FieldReader;
@@ -471,6 +472,16 @@ public class BitVector extends BaseFixedWidthVector {
     setToOne(index);
   }
 
+  @Override
+  public ArrowBufPointer getDataPointer(int index) {
+    throw new UnsupportedOperationException();
+  }
+
+  @Override
+  public ArrowBufPointer getDataPointer(int index, ArrowBufPointer reuse) {
+    throw new UnsupportedOperationException();
+  }
+
   /**
    * Set count bits to 1 in data starting at firstBitIndex.
    *
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/FixedWidthVector.java b/java/vector/src/main/java/org/apache/arrow/vector/ElementAddressableVector.java
similarity index 76%
copy from java/vector/src/main/java/org/apache/arrow/vector/FixedWidthVector.java
copy to java/vector/src/main/java/org/apache/arrow/vector/ElementAddressableVector.java
index 2dee1f4..f37a501 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/FixedWidthVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/ElementAddressableVector.java
@@ -17,25 +17,13 @@
 
 package org.apache.arrow.vector;
 
-
 import org.apache.arrow.memory.util.ArrowBufPointer;
 
 /**
- * Interface for all fixed width {@link ValueVector} (e.g. integer, fixed size binary, etc).
+ * Vector for which each data element resides in a continuous memory region,
+ * so it can be pointed to by an {@link org.apache.arrow.memory.util.ArrowBufPointer}.
  */
-public interface FixedWidthVector extends ValueVector {
-
-  /**
-   * Allocate a new memory space for this vector.  Must be called prior to using the ValueVector.
-   *
-   * @param valueCount Number of values in the vector.
-   */
-  void allocateNew(int valueCount);
-
-  /**
-   * Zero out the underlying buffer backing this vector.
-   */
-  void zeroVector();
+public interface ElementAddressableVector extends ValueVector {
 
   /**
    * Gets the pointer for the data at the given index.
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/FixedWidthVector.java b/java/vector/src/main/java/org/apache/arrow/vector/FixedWidthVector.java
index 2dee1f4..58effee 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/FixedWidthVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/FixedWidthVector.java
@@ -17,13 +17,10 @@
 
 package org.apache.arrow.vector;
 
-
-import org.apache.arrow.memory.util.ArrowBufPointer;
-
 /**
- * Interface for all fixed width {@link ValueVector} (e.g. integer, fixed size binary, etc).
+ * Interface for all fixed width {@link ElementAddressableVector} (e.g. integer, fixed size binary, etc).
  */
-public interface FixedWidthVector extends ValueVector {
+public interface FixedWidthVector extends ElementAddressableVector {
 
   /**
    * Allocate a new memory space for this vector.  Must be called prior to using the ValueVector.
@@ -36,19 +33,4 @@ public interface FixedWidthVector extends ValueVector {
    * Zero out the underlying buffer backing this vector.
    */
   void zeroVector();
-
-  /**
-   * Gets the pointer for the data at the given index.
-   * @param index the index for the data.
-   * @return the pointer to the data.
-   */
-  ArrowBufPointer getDataPointer(int index);
-
-  /**
-   * Gets the pointer for the data at the given index.
-   * @param index the index for the data.
-   * @param reuse the data pointer to fill, this avoids creating a new pointer object.
-   * @return the pointer to the data, it should be the same one as the input parameter
-   */
-  ArrowBufPointer getDataPointer(int index, ArrowBufPointer reuse);
 }
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/VariableWidthVector.java b/java/vector/src/main/java/org/apache/arrow/vector/VariableWidthVector.java
index 738ad85..3ba18bf 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/VariableWidthVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/VariableWidthVector.java
@@ -17,12 +17,10 @@
 
 package org.apache.arrow.vector;
 
-import org.apache.arrow.memory.util.ArrowBufPointer;
-
 /**
  * Interface vectors that contain variable width members (e.g. Strings, Lists, etc).
  */
-public interface VariableWidthVector extends ValueVector, DensityAwareVector {
+public interface VariableWidthVector extends ElementAddressableVector, DensityAwareVector {
 
   /**
    * Allocate a new memory space for this vector.  Must be called prior to using the ValueVector.
@@ -44,19 +42,4 @@ public interface VariableWidthVector extends ValueVector, DensityAwareVector {
    * @return the number of bytes in valueBuffer.
    */
   int sizeOfValueBuffer();
-
-  /**
-   * Gets the pointer for the data at the given index.
-   * @param index the index for the data.
-   * @return the pointer to the data.
-   */
-  ArrowBufPointer getDataPointer(int index);
-
-  /**
-   * Gets the pointer for the data at the given index.
-   * @param index the index for the data.
-   * @param reuse the data pointer to fill, this avoids creating a new pointer object.
-   * @return the pointer to the data, it should be the same one as the input parameter.
-   */
-  ArrowBufPointer getDataPointer(int index, ArrowBufPointer reuse);
 }