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

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


The following commit(s) were added to refs/heads/master by this push:
     new 1238c1a43f fixing dateTimeConvert with double scientific notation 
values (#11528)
1238c1a43f is described below

commit 1238c1a43fe47fe4ace9108d2a8828eca3222df6
Author: Xiang Fu <[email protected]>
AuthorDate: Wed Sep 6 11:28:29 2023 -0700

    fixing dateTimeConvert with double scientific notation values (#11528)
---
 .../org/apache/pinot/core/data/function/DateTimeFunctionsTest.java    | 3 +++
 .../src/main/java/org/apache/pinot/spi/data/DateTimeFormatSpec.java   | 4 +++-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git 
a/pinot-core/src/test/java/org/apache/pinot/core/data/function/DateTimeFunctionsTest.java
 
b/pinot-core/src/test/java/org/apache/pinot/core/data/function/DateTimeFunctionsTest.java
index b82df0bfe2..279302d264 100644
--- 
a/pinot-core/src/test/java/org/apache/pinot/core/data/function/DateTimeFunctionsTest.java
+++ 
b/pinot-core/src/test/java/org/apache/pinot/core/data/function/DateTimeFunctionsTest.java
@@ -531,6 +531,9 @@ public class DateTimeFunctionsTest {
     testDateTimeConvert("20180418T01:00:00", 
"1:HOURS:SIMPLE_DATE_FORMAT:yyyyMMdd''T''HH:mm:ss",
         "1:MILLISECONDS:SIMPLE_DATE_FORMAT:yyyy-MM-dd HH:mm:ss.SSS 
tz(America/Los_Angeles)", "1:DAYS",
         "2018-04-17 00:00:00.000");
+    // Test time value with scientific number
+    testDateTimeConvert(1.50598536E12/* 20170921T02:16:00 */, 
"1:MILLISECONDS:EPOCH",
+        "1:DAYS:SIMPLE_DATE_FORMAT:yyyyMMdd", "1:DAYS", "20170921");
   }
 
   @Test
diff --git 
a/pinot-spi/src/main/java/org/apache/pinot/spi/data/DateTimeFormatSpec.java 
b/pinot-spi/src/main/java/org/apache/pinot/spi/data/DateTimeFormatSpec.java
index fc9bc9259e..a4f47c9399 100644
--- a/pinot-spi/src/main/java/org/apache/pinot/spi/data/DateTimeFormatSpec.java
+++ b/pinot-spi/src/main/java/org/apache/pinot/spi/data/DateTimeFormatSpec.java
@@ -19,6 +19,7 @@
 package org.apache.pinot.spi.data;
 
 import com.google.common.base.Preconditions;
+import java.math.BigDecimal;
 import java.sql.Timestamp;
 import java.util.Objects;
 import java.util.concurrent.TimeUnit;
@@ -301,7 +302,8 @@ public class DateTimeFormatSpec {
   public long fromFormatToMillis(String dateTimeValue) {
     switch (_patternSpec.getTimeFormat()) {
       case EPOCH:
-        return TimeUnit.MILLISECONDS.convert(Long.parseLong(dateTimeValue) * 
_size, _unitSpec.getTimeUnit());
+        return TimeUnit.MILLISECONDS.convert((new 
BigDecimal(dateTimeValue).longValue() * _size),
+            _unitSpec.getTimeUnit());
       case TIMESTAMP:
         return TimestampUtils.toMillisSinceEpoch(dateTimeValue);
       case SIMPLE_DATE_FORMAT:


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

Reply via email to