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]