This is an automated email from the ASF dual-hosted git repository. opwvhk pushed a commit to branch branch-1.12 in repository https://gitbox.apache.org/repos/asf/avro.git
commit ce6dad81055a6890200e1706df1767c7af76d7e9 Author: rdifrango <ron.difra...@gmail.com> AuthorDate: Fri May 30 10:18:35 2025 -0400 AVRO-4110: Double Values Fail when using Min/Max (#3292) (cherry picked from commit b8a3655fef9901e3d043e830f6ff6fb5f543fda7) --- .../main/java/org/apache/avro/generic/PrimitivesArrays.java | 2 +- .../java/org/apache/avro/generic/PrimitivesArraysTest.java | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/lang/java/avro/src/main/java/org/apache/avro/generic/PrimitivesArrays.java b/lang/java/avro/src/main/java/org/apache/avro/generic/PrimitivesArrays.java index 87be036468..6107ad382d 100644 --- a/lang/java/avro/src/main/java/org/apache/avro/generic/PrimitivesArrays.java +++ b/lang/java/avro/src/main/java/org/apache/avro/generic/PrimitivesArrays.java @@ -623,7 +623,7 @@ public class PrimitivesArrays { if (o == null) { return null; } - return this.set(i, o.floatValue()); + return this.set(i, o.doubleValue()); } public double set(int i, double o) { diff --git a/lang/java/avro/src/test/java/org/apache/avro/generic/PrimitivesArraysTest.java b/lang/java/avro/src/test/java/org/apache/avro/generic/PrimitivesArraysTest.java index 7d199bf92c..ad83c6ae14 100644 --- a/lang/java/avro/src/test/java/org/apache/avro/generic/PrimitivesArraysTest.java +++ b/lang/java/avro/src/test/java/org/apache/avro/generic/PrimitivesArraysTest.java @@ -276,5 +276,18 @@ class PrimitivesArraysTest { for (int i = 1; i <= 100; i++) { Assertions.assertEquals((101 - i) * 3.0d, doubleArray.get(i - 1)); } + + doubleArray.add(Double.MAX_VALUE); + doubleArray.add(Double.MIN_VALUE); + Assertions.assertEquals(102, doubleArray.size()); + Assertions.assertEquals(Double.MAX_VALUE, doubleArray.get(100)); + Assertions.assertEquals(Double.MIN_VALUE, doubleArray.get(101)); + + // Flip the positions to make sure they still work + doubleArray.set(101, Double.MAX_VALUE); + doubleArray.set(100, Double.MIN_VALUE); + Assertions.assertEquals(102, doubleArray.size()); + Assertions.assertEquals(Double.MAX_VALUE, doubleArray.get(101)); + Assertions.assertEquals(Double.MIN_VALUE, doubleArray.get(100)); } }