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