From 9d8bb4645293148025266b47abca7d7245fb7cd5 Mon Sep 17 00:00:00 2001 From: siddharth Date: Mon, 17 Jul 2017 19:31:32 -0700 Subject: [PATCH 1/3] DX-8267: Expose the ability to set last set value --- .gitignore | 3 ++- .../apache/arrow/vector/BaseDataValueVector.java | 13 +++++++++++++ .../org/apache/arrow/vector/BaseValueVector.java | 6 ++++++ .../arrow/vector/complex/FixedSizeListVector.java | 11 +++++++++++ .../org/apache/arrow/vector/complex/ListVector.java | 10 ++++++++++ 5 files changed, 42 insertions(+), 1 deletion(-) 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/java/org/apache/arrow/vector/BaseDataValueVector.java b/java/vector/src/main/java/org/apache/arrow/vector/BaseDataValueVector.java index 6d7d3f04a6d..e30292596ff 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 @@ -19,6 +19,7 @@ import java.util.ArrayList; import java.util.List; +import java.lang.reflect.Field; import org.apache.arrow.memory.BufferAllocator; import org.apache.arrow.vector.schema.ArrowFieldNode; @@ -27,6 +28,8 @@ import org.apache.arrow.vector.util.CallBack; import org.apache.arrow.vector.util.TransferPair; +import com.google.common.base.Throwables; + public abstract class BaseDataValueVector extends BaseValueVector implements BufferBacked { @@ -140,4 +143,14 @@ public ArrowBuf unLoad() { * the value vector. The purpose is to move the value vector to a "mutate" state */ public void reset() {} + + public void setLastSet(int value) { + try { + Field f = this.getMutator().getClass().getDeclaredField("lastSet"); + f.setAccessible(true); + f.set(this.getMutator(), value); + } catch (Exception ex) { + throw Throwables.propagate(ex); + } + } } 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..4a8f27e25a8 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 @@ -116,5 +116,11 @@ public static boolean checkBufRefs(final ValueVector vv) { public BufferAllocator getAllocator() { return allocator; } + + /** + * 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/complex/FixedSizeListVector.java b/java/vector/src/main/java/org/apache/arrow/vector/complex/FixedSizeListVector.java index b6d938f3fd8..83eb86f7fb5 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; @@ -401,4 +402,14 @@ public void copyValueSafe(int from, int to) { } } } + + public void setLastSet(int value) { + try { + java.lang.reflect.Field f = this.getMutator().getClass().getDeclaredField("lastSet"); + f.setAccessible(true); + f.set(this.getMutator(), value); + } catch (Exception ex) { + throw Throwables.propagate(ex); + } + } } 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..10601bb664a 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; @@ -411,4 +412,13 @@ public void setValueCount(int valueCount) { } } + public void setLastSet(int value) { + try { + java.lang.reflect.Field f = this.getMutator().getClass().getDeclaredField("lastSet"); + f.setAccessible(true); + f.set(this.getMutator(), value); + } catch (Exception ex) { + throw Throwables.propagate(ex); + } + } } From a07cd69c1802a39c0c33d1316c6a45559b6491cf Mon Sep 17 00:00:00 2001 From: siddharth Date: Mon, 17 Jul 2017 19:31:32 -0700 Subject: [PATCH 2/3] DX-8267: Expose the ability to set last set value --- .../main/codegen/templates/FixedValueVectors.java | 8 ++++++++ .../codegen/templates/NullableValueVectors.java | 14 ++++++++++++++ .../org/apache/arrow/vector/BaseValueVector.java | 5 +++++ 3 files changed, 27 insertions(+) diff --git a/java/vector/src/main/codegen/templates/FixedValueVectors.java b/java/vector/src/main/codegen/templates/FixedValueVectors.java index 5d92cd232ef..390f69d46fd 100644 --- a/java/vector/src/main/codegen/templates/FixedValueVectors.java +++ b/java/vector/src/main/codegen/templates/FixedValueVectors.java @@ -717,6 +717,14 @@ public void setValueCount(int valueCount) { data.writerIndex(valueCount * ${type.width}); } } + + /** + * Sets the last number of values stored in this vector to the given value count + * @param value the last count to set + */ + 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..11cfe4cc89e 100644 --- a/java/vector/src/main/codegen/templates/NullableValueVectors.java +++ b/java/vector/src/main/codegen/templates/NullableValueVectors.java @@ -699,6 +699,20 @@ 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); + } + } + + /** + * Sets the last number of values stored in this vector to the given value count + * @param value the last count to set + */ + public void setLastSet(int value) { + this.getMutator().setLastSetValueCount(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 4a8f27e25a8..4141ccbdbe4 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 { + public int lastSetValueCount; protected BaseMutator() { } @Override @@ -95,6 +96,10 @@ 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; + } } @Override From 4629f81efa95fbca4c18a925ca28396e13081498 Mon Sep 17 00:00:00 2001 From: siddharth Date: Wed, 19 Jul 2017 10:02:20 -0700 Subject: [PATCH 3/3] DX-8267: expose the ability to set last set value count Change-Id: I515e1fb16b0350a0289cfd48e92af0a1b5a461a9 --- .../codegen/templates/FixedValueVectors.java | 5 +---- .../codegen/templates/NullableValueVectors.java | 5 +---- .../arrow/vector/BaseDataValueVector.java | 17 +++++------------ .../apache/arrow/vector/BaseValueVector.java | 10 +++------- .../vector/complex/FixedSizeListVector.java | 10 ---------- .../apache/arrow/vector/complex/ListVector.java | 10 ---------- 6 files changed, 10 insertions(+), 47 deletions(-) diff --git a/java/vector/src/main/codegen/templates/FixedValueVectors.java b/java/vector/src/main/codegen/templates/FixedValueVectors.java index 390f69d46fd..423f44b4245 100644 --- a/java/vector/src/main/codegen/templates/FixedValueVectors.java +++ b/java/vector/src/main/codegen/templates/FixedValueVectors.java @@ -718,10 +718,7 @@ public void setValueCount(int valueCount) { } } - /** - * Sets the last number of values stored in this vector to the given value count - * @param value the last count to set - */ + @Override public void setLastSet(int value) { this.getMutator().setLastSetValueCount(value); } diff --git a/java/vector/src/main/codegen/templates/NullableValueVectors.java b/java/vector/src/main/codegen/templates/NullableValueVectors.java index 11cfe4cc89e..b0436f2f86d 100644 --- a/java/vector/src/main/codegen/templates/NullableValueVectors.java +++ b/java/vector/src/main/codegen/templates/NullableValueVectors.java @@ -707,10 +707,7 @@ public void setLastSetValueCount(int value) { } } - /** - * Sets the last number of values stored in this vector to the given value count - * @param value the last count to set - */ + @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 e30292596ff..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 @@ -19,7 +19,6 @@ import java.util.ArrayList; import java.util.List; -import java.lang.reflect.Field; import org.apache.arrow.memory.BufferAllocator; import org.apache.arrow.vector.schema.ArrowFieldNode; @@ -28,8 +27,6 @@ import org.apache.arrow.vector.util.CallBack; import org.apache.arrow.vector.util.TransferPair; -import com.google.common.base.Throwables; - public abstract class BaseDataValueVector extends BaseValueVector implements BufferBacked { @@ -144,13 +141,9 @@ public ArrowBuf unLoad() { */ public void reset() {} - public void setLastSet(int value) { - try { - Field f = this.getMutator().getClass().getDeclaredField("lastSet"); - f.setAccessible(true); - f.set(this.getMutator(), value); - } catch (Exception ex) { - throw Throwables.propagate(ex); - } - } + /** + * 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 4141ccbdbe4..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,7 +87,7 @@ public int getNullCount() { } public abstract static class BaseMutator implements ValueVector.Mutator { - public int lastSetValueCount; + private int lastSetValueCount; protected BaseMutator() { } @Override @@ -100,6 +100,8 @@ public void reset() {} public void setLastSetValueCount(int value) { lastSetValueCount = value; } + + public int getLastSetValueCount() { return lastSetValueCount; } } @Override @@ -121,11 +123,5 @@ public static boolean checkBufRefs(final ValueVector vv) { public BufferAllocator getAllocator() { return allocator; } - - /** - * 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/complex/FixedSizeListVector.java b/java/vector/src/main/java/org/apache/arrow/vector/complex/FixedSizeListVector.java index 83eb86f7fb5..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 @@ -402,14 +402,4 @@ public void copyValueSafe(int from, int to) { } } } - - public void setLastSet(int value) { - try { - java.lang.reflect.Field f = this.getMutator().getClass().getDeclaredField("lastSet"); - f.setAccessible(true); - f.set(this.getMutator(), value); - } catch (Exception ex) { - throw Throwables.propagate(ex); - } - } } 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 10601bb664a..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 @@ -411,14 +411,4 @@ public void setValueCount(int valueCount) { bits.getMutator().setValueCount(valueCount); } } - - public void setLastSet(int value) { - try { - java.lang.reflect.Field f = this.getMutator().getClass().getDeclaredField("lastSet"); - f.setAccessible(true); - f.set(this.getMutator(), value); - } catch (Exception ex) { - throw Throwables.propagate(ex); - } - } }