diff --git a/.gitignore b/.gitignore index 5e28b3685e4..0dafcbc26b3 100644 --- a/.gitignore +++ b/.gitignore @@ -26,4 +26,5 @@ MANIFEST cpp/.idea/ -python/.eggs/ \ No newline at end of file +python/.eggs/ +.idea/ diff --git a/java/vector/src/main/codegen/templates/FixedValueVectors.java b/java/vector/src/main/codegen/templates/FixedValueVectors.java index 5d92cd232ef..423f44b4245 100644 --- a/java/vector/src/main/codegen/templates/FixedValueVectors.java +++ b/java/vector/src/main/codegen/templates/FixedValueVectors.java @@ -717,6 +717,11 @@ public void setValueCount(int valueCount) { data.writerIndex(valueCount * ${type.width}); } } + + @Override + public void setLastSet(int value) { + this.getMutator().setLastSetValueCount(value); + } } <#-- type.major --> diff --git a/java/vector/src/main/codegen/templates/NullableValueVectors.java b/java/vector/src/main/codegen/templates/NullableValueVectors.java index 092097bb2bd..b0436f2f86d 100644 --- a/java/vector/src/main/codegen/templates/NullableValueVectors.java +++ b/java/vector/src/main/codegen/templates/NullableValueVectors.java @@ -699,6 +699,17 @@ public void reset(){ setCount = 0; <#if type.major = "VarLen">lastSet = -1; } + + @Override + public void setLastSetValueCount(int value) { + values.getMutator().setLastSetValueCount(value); + bits.getMutator().setLastSetValueCount(value); + } + } + + @Override + public void setLastSet(int value) { + this.getMutator().setLastSetValueCount(value); } } diff --git a/java/vector/src/main/java/org/apache/arrow/vector/BaseDataValueVector.java b/java/vector/src/main/java/org/apache/arrow/vector/BaseDataValueVector.java index 6d7d3f04a6d..0364d9b6d9b 100644 --- a/java/vector/src/main/java/org/apache/arrow/vector/BaseDataValueVector.java +++ b/java/vector/src/main/java/org/apache/arrow/vector/BaseDataValueVector.java @@ -140,4 +140,10 @@ public ArrowBuf unLoad() { * the value vector. The purpose is to move the value vector to a "mutate" state */ public void reset() {} + + /** + * Sets the last number of values stored in this vector to the given value count + * @param value the last count to set + */ + public abstract void setLastSet(int value); } diff --git a/java/vector/src/main/java/org/apache/arrow/vector/BaseValueVector.java b/java/vector/src/main/java/org/apache/arrow/vector/BaseValueVector.java index 2a61403c0dc..5f3c06a0eb5 100644 --- a/java/vector/src/main/java/org/apache/arrow/vector/BaseValueVector.java +++ b/java/vector/src/main/java/org/apache/arrow/vector/BaseValueVector.java @@ -87,6 +87,7 @@ public int getNullCount() { } public abstract static class BaseMutator implements ValueVector.Mutator { + private int lastSetValueCount; protected BaseMutator() { } @Override @@ -95,6 +96,12 @@ public void generateTestData(int values) {} //TODO: consider making mutator stateless(if possible) on another issue. @Override public void reset() {} + + public void setLastSetValueCount(int value) { + lastSetValueCount = value; + } + + public int getLastSetValueCount() { return lastSetValueCount; } } @Override diff --git a/java/vector/src/main/java/org/apache/arrow/vector/complex/FixedSizeListVector.java b/java/vector/src/main/java/org/apache/arrow/vector/complex/FixedSizeListVector.java index b6d938f3fd8..44a72f614f2 100644 --- a/java/vector/src/main/java/org/apache/arrow/vector/complex/FixedSizeListVector.java +++ b/java/vector/src/main/java/org/apache/arrow/vector/complex/FixedSizeListVector.java @@ -26,6 +26,7 @@ import java.util.List; import java.util.Objects; +import com.google.common.base.Throwables; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import com.google.common.collect.ObjectArrays; diff --git a/java/vector/src/main/java/org/apache/arrow/vector/complex/ListVector.java b/java/vector/src/main/java/org/apache/arrow/vector/complex/ListVector.java index 11e5dbf06dc..fe273f80c6d 100644 --- a/java/vector/src/main/java/org/apache/arrow/vector/complex/ListVector.java +++ b/java/vector/src/main/java/org/apache/arrow/vector/complex/ListVector.java @@ -25,6 +25,7 @@ import java.util.Collections; import java.util.List; +import com.google.common.base.Throwables; import com.google.common.collect.ImmutableList; import com.google.common.collect.ObjectArrays; @@ -410,5 +411,4 @@ public void setValueCount(int valueCount) { bits.getMutator().setValueCount(valueCount); } } - }