You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by ad...@apache.org on 2017/06/29 15:22:15 UTC
arrow git commit: ARROW-1162: Empty data vector transfer between list vectors should no…
Repository: arrow
Updated Branches:
refs/heads/master bddb2197d -> 65558dbb9
ARROW-1162: Empty data vector transfer between list vectors should no…
…t trigger callback
@adeneche please review.
Author: Sudheesh Katkam <su...@dremio.com>
Closes #791 from sudheeshkatkam/ARROW-1162 and squashes the following commits:
390458e [Sudheesh Katkam] ARROW-1162: Empty data vector transfer between list vectors should not trigger callback
Project: http://git-wip-us.apache.org/repos/asf/arrow/repo
Commit: http://git-wip-us.apache.org/repos/asf/arrow/commit/65558dbb
Tree: http://git-wip-us.apache.org/repos/asf/arrow/tree/65558dbb
Diff: http://git-wip-us.apache.org/repos/asf/arrow/diff/65558dbb
Branch: refs/heads/master
Commit: 65558dbb927c045f104988c1c7632872cb95752b
Parents: bddb219
Author: Sudheesh Katkam <su...@dremio.com>
Authored: Thu Jun 29 08:22:07 2017 -0700
Committer: adeneche <ad...@apache.org>
Committed: Thu Jun 29 08:22:07 2017 -0700
----------------------------------------------------------------------
.../vector/complex/BaseRepeatedValueVector.java | 5 ++-
.../vector/TestBufferOwnershipTransfer.java | 39 ++++++++++++++++++++
2 files changed, 43 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/arrow/blob/65558dbb/java/vector/src/main/java/org/apache/arrow/vector/complex/BaseRepeatedValueVector.java
----------------------------------------------------------------------
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/complex/BaseRepeatedValueVector.java b/java/vector/src/main/java/org/apache/arrow/vector/complex/BaseRepeatedValueVector.java
index 5ff4c2c..3bfa8e7 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/complex/BaseRepeatedValueVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/complex/BaseRepeatedValueVector.java
@@ -27,6 +27,7 @@ import org.apache.arrow.vector.FieldVector;
import org.apache.arrow.vector.UInt4Vector;
import org.apache.arrow.vector.ValueVector;
import org.apache.arrow.vector.ZeroVector;
+import org.apache.arrow.vector.types.pojo.ArrowType.ArrowTypeID;
import org.apache.arrow.vector.types.pojo.FieldType;
import org.apache.arrow.vector.util.CallBack;
import org.apache.arrow.vector.util.SchemaChangeRuntimeException;
@@ -164,7 +165,9 @@ public abstract class BaseRepeatedValueVector extends BaseValueVector implements
vector = fieldType.createNewSingleVector(DATA_VECTOR_NAME, allocator, callBack);
// returned vector must have the same field
created = true;
- if (callBack != null) {
+ if (callBack != null &&
+ // not a schema change if changing from ZeroVector to ZeroVector
+ (fieldType.getType().getTypeID() != ArrowTypeID.Null)) {
callBack.doWork();
}
}
http://git-wip-us.apache.org/repos/asf/arrow/blob/65558dbb/java/vector/src/test/java/org/apache/arrow/vector/TestBufferOwnershipTransfer.java
----------------------------------------------------------------------
diff --git a/java/vector/src/test/java/org/apache/arrow/vector/TestBufferOwnershipTransfer.java b/java/vector/src/test/java/org/apache/arrow/vector/TestBufferOwnershipTransfer.java
index fa65787..08e3700 100644
--- a/java/vector/src/test/java/org/apache/arrow/vector/TestBufferOwnershipTransfer.java
+++ b/java/vector/src/test/java/org/apache/arrow/vector/TestBufferOwnershipTransfer.java
@@ -18,9 +18,15 @@
package org.apache.arrow.vector;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.memory.RootAllocator;
+import org.apache.arrow.vector.complex.ListVector;
+import org.apache.arrow.vector.types.pojo.ArrowType;
+import org.apache.arrow.vector.types.pojo.FieldType;
+import org.apache.arrow.vector.util.CallBack;
import org.junit.Test;
public class TestBufferOwnershipTransfer {
@@ -62,4 +68,37 @@ public class TestBufferOwnershipTransfer {
int expected = 8*4096 + 4*4096 + 4096;
assertEquals(expected, childAllocator2.getAllocatedMemory());
}
+
+ private static class Pointer<T> {
+ T value;
+ }
+
+ private static CallBack newTriggerCallback(final Pointer<Boolean> trigger) {
+ trigger.value = false;
+ return new CallBack() {
+ @Override
+ public void doWork() {
+ trigger.value = true;
+ }
+ };
+ }
+
+ @Test
+ public void emptyListTransferShouldNotTriggerSchemaChange() {
+ final BufferAllocator allocator = new RootAllocator(Integer.MAX_VALUE);
+
+ final Pointer<Boolean> trigger1 = new Pointer<>();
+ final Pointer<Boolean> trigger2 = new Pointer<>();
+ final ListVector v1 = new ListVector("v1", allocator,
+ FieldType.nullable(ArrowType.Null.INSTANCE),
+ newTriggerCallback(trigger1));
+ final ListVector v2 = new ListVector("v2", allocator,
+ FieldType.nullable(ArrowType.Null.INSTANCE),
+ newTriggerCallback(trigger2));
+
+ v1.makeTransferPair(v2).transfer();
+
+ assertFalse(trigger1.value);
+ assertFalse(trigger2.value);
+ }
}