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