You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by cu...@apache.org on 2019/08/12 23:44:02 UTC

[arrow] branch master updated: ARROW-6215: [Java] Fix case when ZeroVector is compared against other vector types

This is an automated email from the ASF dual-hosted git repository.

cutlerb 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 1a3eab5  ARROW-6215: [Java] Fix case when ZeroVector is compared against other vector types
1a3eab5 is described below

commit 1a3eab50ea49414494d4f7ed91d1e2e3a6f8919f
Author: Bryan Cutler <cu...@gmail.com>
AuthorDate: Mon Aug 12 16:43:47 2019 -0700

    ARROW-6215: [Java] Fix case when ZeroVector is compared against other vector types
    
    This fixes a bug that when a ZeroVector is compared with a vector of any other type, it always returns true. Instead of hard-coding a return value of `true` in `ZeroVector.accept`, the `RangeEqualsVisitor` is used to compare the vector types.
    
    Closes #5070 from BryanCutler/java-RangeEqualsVisitor-fix-ZeroVector-ARROW-6215 and squashes the following commits:
    
    7ad41be <Bryan Cutler> Fix case when ZeroVector is compared against other vector types
    
    Authored-by: Bryan Cutler <cu...@gmail.com>
    Signed-off-by: Bryan Cutler <cu...@gmail.com>
---
 .../src/main/java/org/apache/arrow/vector/ZeroVector.java   |  2 +-
 .../org/apache/arrow/vector/compare/RangeEqualsVisitor.java |  2 +-
 .../test/java/org/apache/arrow/vector/TestValueVector.java  | 13 +++++++++++++
 3 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/java/vector/src/main/java/org/apache/arrow/vector/ZeroVector.java b/java/vector/src/main/java/org/apache/arrow/vector/ZeroVector.java
index 4d5826c..4a9f30a 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/ZeroVector.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/ZeroVector.java
@@ -268,6 +268,6 @@ public class ZeroVector implements FieldVector {
 
   @Override
   public boolean accept(RangeEqualsVisitor visitor) {
-    return true;
+    return visitor.visit(this);
   }
 }
diff --git a/java/vector/src/main/java/org/apache/arrow/vector/compare/RangeEqualsVisitor.java b/java/vector/src/main/java/org/apache/arrow/vector/compare/RangeEqualsVisitor.java
index 19cf79e..a5826e7 100644
--- a/java/vector/src/main/java/org/apache/arrow/vector/compare/RangeEqualsVisitor.java
+++ b/java/vector/src/main/java/org/apache/arrow/vector/compare/RangeEqualsVisitor.java
@@ -76,7 +76,7 @@ public class RangeEqualsVisitor {
   }
 
   public boolean visit(ZeroVector left) {
-    return true;
+    return compareValueVector(left, right);
   }
 
   public boolean visit(ValueVector left) {
diff --git a/java/vector/src/test/java/org/apache/arrow/vector/TestValueVector.java b/java/vector/src/test/java/org/apache/arrow/vector/TestValueVector.java
index b553f31..d344246 100644
--- a/java/vector/src/test/java/org/apache/arrow/vector/TestValueVector.java
+++ b/java/vector/src/test/java/org/apache/arrow/vector/TestValueVector.java
@@ -2266,6 +2266,19 @@ public class TestValueVector {
   }
 
   @Test
+  public void testZeroVectorNotEquals() {
+    try (final IntVector intVector = new IntVector("int", allocator);
+         final ZeroVector zeroVector = new ZeroVector()) {
+
+      VectorEqualsVisitor zeroVisitor = new VectorEqualsVisitor(zeroVector);
+      assertFalse(intVector.accept(zeroVisitor));
+
+      VectorEqualsVisitor intVisitor = new VectorEqualsVisitor(intVector);
+      assertFalse(zeroVector.accept(intVisitor));
+    }
+  }
+
+  @Test
   public void testIntVectorEqualsWithNull() {
     try (final IntVector vector1 = new IntVector("int", allocator);
         final IntVector vector2 = new IntVector("int", allocator)) {