Skip to content

Commit 5b2225e

Browse files
committed
[ARROW-6738][Java] Fix the bug with decimal vector
1 parent 4d8b570 commit 5b2225e

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

java/vector/src/main/java/org/apache/arrow/vector/compare/RangeEqualsVisitor.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,15 @@
2424
import org.apache.arrow.util.Preconditions;
2525
import org.apache.arrow.vector.BaseFixedWidthVector;
2626
import org.apache.arrow.vector.BaseVariableWidthVector;
27+
import org.apache.arrow.vector.DecimalVector;
2728
import org.apache.arrow.vector.NullVector;
2829
import org.apache.arrow.vector.ValueVector;
2930
import org.apache.arrow.vector.complex.BaseRepeatedValueVector;
3031
import org.apache.arrow.vector.complex.FixedSizeListVector;
3132
import org.apache.arrow.vector.complex.ListVector;
3233
import org.apache.arrow.vector.complex.NonNullableStructVector;
3334
import org.apache.arrow.vector.complex.UnionVector;
35+
import org.apache.arrow.vector.types.pojo.ArrowType;
3436

3537
/**
3638
* Visitor to compare a range of values for vectors.
@@ -244,7 +246,23 @@ protected boolean compareStructVectors(Range range) {
244246
return true;
245247
}
246248

249+
private boolean compareDecimalVectorTypes() {
250+
ArrowType.Decimal leftType = (ArrowType.Decimal) left.getField().getType();
251+
ArrowType.Decimal rightType = (ArrowType.Decimal) right.getField().getType();
252+
253+
if (leftType.getPrecision() != rightType.getPrecision() || leftType.getScale() != rightType.getScale()) {
254+
return false;
255+
}
256+
return true;
257+
}
258+
247259
protected boolean compareBaseFixedWidthVectors(Range range) {
260+
if (left instanceof DecimalVector) {
261+
if (!compareDecimalVectorTypes()) {
262+
return false;
263+
}
264+
}
265+
248266
BaseFixedWidthVector leftVector = (BaseFixedWidthVector) left;
249267
BaseFixedWidthVector rightVector = (BaseFixedWidthVector) right;
250268

java/vector/src/test/java/org/apache/arrow/vector/TestValueVector.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2320,7 +2320,7 @@ public void testDecimalVectorEquals() {
23202320
VectorEqualsVisitor visitor2 = new VectorEqualsVisitor();
23212321

23222322
assertTrue(visitor1.vectorEquals(vector1, vector2));
2323-
assertTrue(visitor2.vectorEquals(vector1, vector3));
2323+
assertFalse(visitor2.vectorEquals(vector1, vector3));
23242324
}
23252325
}
23262326

0 commit comments

Comments
 (0)