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 c16ca323b433e..698ddac466041 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 @@ -366,7 +366,7 @@ protected boolean compareBaseFixedWidthVectors(Range range) { return false; } } else { - boolean ret = ((BitVector) leftVector).get(leftIndex) == ((BitVector) rightVector).get(leftIndex); + boolean ret = ((BitVector) leftVector).get(leftIndex) == ((BitVector) rightVector).get(rightIndex); if (!ret) { return false; } diff --git a/java/vector/src/test/java/org/apache/arrow/vector/compare/TestRangeEqualsVisitor.java b/java/vector/src/test/java/org/apache/arrow/vector/compare/TestRangeEqualsVisitor.java index 4495881ad78a1..ab8c6c634891e 100644 --- a/java/vector/src/test/java/org/apache/arrow/vector/compare/TestRangeEqualsVisitor.java +++ b/java/vector/src/test/java/org/apache/arrow/vector/compare/TestRangeEqualsVisitor.java @@ -27,6 +27,7 @@ import org.apache.arrow.memory.BufferAllocator; import org.apache.arrow.memory.RootAllocator; import org.apache.arrow.vector.BigIntVector; +import org.apache.arrow.vector.BitVector; import org.apache.arrow.vector.Float4Vector; import org.apache.arrow.vector.Float8Vector; import org.apache.arrow.vector.IntVector; @@ -181,6 +182,28 @@ public void testListVectorRangeEquals() { } } + @Test + public void testBitVectorRangeEquals() { + try (final BitVector vector1 = new BitVector("v1", allocator); + final BitVector vector2 = new BitVector("v2", allocator);) { + + boolean[] v1 = new boolean[]{true, false, true, true, true}; + boolean[] v2 = new boolean[]{false, true, true, true, false}; + vector1.setValueCount(5); + for (int i = 0; i < 5; i ++) { + vector1.set(i, v1[i] ? 1 : 0); + } + vector2.setValueCount(5); + for (int i = 0; i < 5; i ++) { + vector2.set(i, v2[i] ? 1 : 0); + } + + RangeEqualsVisitor visitor = new RangeEqualsVisitor(vector1, vector2); + assertTrue(visitor.compareBaseFixedWidthVectors(new Range(1, 0, 4))); + assertFalse(visitor.compareBaseFixedWidthVectors(new Range(0, 0, 5))); + } + } + @Test public void testFixedSizeListVectorRangeEquals() { try (final FixedSizeListVector vector1 = FixedSizeListVector.empty("list", 2, allocator);