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

gian pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/druid.git


The following commit(s) were added to refs/heads/master by this push:
     new a02ebfb4393 Fix ExprEval of BigDecimal data type (#17889)
a02ebfb4393 is described below

commit a02ebfb4393f1bc088f6d2ebc4572a37f7090d8c
Author: Maytas Monsereenusorn <[email protected]>
AuthorDate: Tue Apr 8 10:33:08 2025 -0700

    Fix ExprEval of BigDecimal data type (#17889)
---
 processing/src/main/java/org/apache/druid/math/expr/ExprEval.java | 3 ++-
 processing/src/test/java/org/apache/druid/math/expr/EvalTest.java | 4 ++++
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/processing/src/main/java/org/apache/druid/math/expr/ExprEval.java 
b/processing/src/main/java/org/apache/druid/math/expr/ExprEval.java
index d390d616ba2..3634734bfe1 100644
--- a/processing/src/main/java/org/apache/druid/math/expr/ExprEval.java
+++ b/processing/src/main/java/org/apache/druid/math/expr/ExprEval.java
@@ -33,6 +33,7 @@ import org.apache.druid.segment.column.Types;
 import org.apache.druid.segment.nested.StructuredData;
 
 import javax.annotation.Nullable;
+import java.math.BigDecimal;
 import java.nio.ByteBuffer;
 import java.util.Arrays;
 import java.util.List;
@@ -388,7 +389,7 @@ public abstract class ExprEval<T>
       return new StringExprEval((String) val);
     }
     if (val instanceof Number) {
-      if (val instanceof Float || val instanceof Double) {
+      if (val instanceof Float || val instanceof Double || val instanceof 
BigDecimal) {
         return new DoubleExprEval((Number) val);
       }
       return new LongExprEval((Number) val);
diff --git a/processing/src/test/java/org/apache/druid/math/expr/EvalTest.java 
b/processing/src/test/java/org/apache/druid/math/expr/EvalTest.java
index f0395602222..b18b8cff3ea 100644
--- a/processing/src/test/java/org/apache/druid/math/expr/EvalTest.java
+++ b/processing/src/test/java/org/apache/druid/math/expr/EvalTest.java
@@ -33,6 +33,7 @@ import org.junit.Assert;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
+import java.math.BigDecimal;
 import java.nio.ByteBuffer;
 import java.util.Arrays;
 import java.util.HashMap;
@@ -1380,6 +1381,9 @@ public class EvalTest extends InitializedNullHandlingTest
     assertBestEffortOf(1L, ExpressionType.LONG, 1L);
     assertBestEffortOf(1, ExpressionType.LONG, 1L);
 
+    // BigDecimal
+    assertBestEffortOf(new BigDecimal("0.034"), ExpressionType.DOUBLE, 0.034);
+
     // by default, booleans are handled as longs
     assertBestEffortOf(true, ExpressionType.LONG, 1L);
     assertBestEffortOf(Arrays.asList(true, false), ExpressionType.LONG_ARRAY, 
new Object[]{1L, 0L});


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to