This is an automated email from the ASF dual-hosted git repository.
rongr 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 7cccc5e92a [multistage] add fromDateTime malformed handling
option(#11258)
7cccc5e92a is described below
commit 7cccc5e92a1977069b92c5250750178b384473b2
Author: Rong Rong <[email protected]>
AuthorDate: Mon Sep 25 11:32:04 2023 -0700
[multistage] add fromDateTime malformed handling option(#11258)
Co-authored-by: Rong Rong <[email protected]>
---
.../pinot/common/function/DateTimePatternHandler.java | 13 +++++++++++++
.../pinot/common/function/scalar/DateTimeFunctions.java | 5 +++++
.../pinot/core/data/function/DateTimeFunctionsTest.java | 8 ++++++++
3 files changed, 26 insertions(+)
diff --git
a/pinot-common/src/main/java/org/apache/pinot/common/function/DateTimePatternHandler.java
b/pinot-common/src/main/java/org/apache/pinot/common/function/DateTimePatternHandler.java
index 2da3107853..ab563e6080 100644
---
a/pinot-common/src/main/java/org/apache/pinot/common/function/DateTimePatternHandler.java
+++
b/pinot-common/src/main/java/org/apache/pinot/common/function/DateTimePatternHandler.java
@@ -46,6 +46,19 @@ public class DateTimePatternHandler {
return dateTimeFormatter.parseMillis(dateTimeString);
}
+ /**
+ * Converts the dateTimeString of the pattern/timezone and return default
value when exception occurs.
+ */
+ public static long parseDateTimeStringToEpochMillis(String dateTimeString,
String pattern, String timezoneId,
+ long defaultVal) {
+ try {
+ DateTimeFormatter dateTimeFormatter = getDateTimeFormatter(pattern,
timezoneId);
+ return dateTimeFormatter.parseMillis(dateTimeString);
+ } catch (Exception e) {
+ return defaultVal;
+ }
+ }
+
/**
* Converts the millis representing seconds since epoch into a string of
passed pattern
*/
diff --git
a/pinot-common/src/main/java/org/apache/pinot/common/function/scalar/DateTimeFunctions.java
b/pinot-common/src/main/java/org/apache/pinot/common/function/scalar/DateTimeFunctions.java
index 77db5d7fcd..7c28c589a7 100644
---
a/pinot-common/src/main/java/org/apache/pinot/common/function/scalar/DateTimeFunctions.java
+++
b/pinot-common/src/main/java/org/apache/pinot/common/function/scalar/DateTimeFunctions.java
@@ -512,6 +512,11 @@ public class DateTimeFunctions {
return
DateTimePatternHandler.parseDateTimeStringToEpochMillis(dateTimeString,
pattern, timeZoneId);
}
+ @ScalarFunction
+ public static long fromDateTime(String dateTimeString, String pattern,
String timeZoneId, long defaultVal) {
+ return
DateTimePatternHandler.parseDateTimeStringToEpochMillis(dateTimeString,
pattern, timeZoneId, defaultVal);
+ }
+
@ScalarFunction
public static long[] fromDateTimeMV(String[] dateTimeString, String pattern,
String timeZoneId) {
long[] results = new long[dateTimeString.length];
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 279302d264..4ae6c573ab 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
@@ -241,6 +241,14 @@ public class DateTimeFunctionsTest {
"fromDateTime(dateTime, 'yyyy-MM-dd''T''HH:mm:ss.SSS''Z''')",
Lists.newArrayList("dateTime"), row113, null
});
+ // fromDateTime with malformed dateTime and default Value should return -1
+ GenericRow row114 = new GenericRow();
+ row114.putValue("dateTime", "malformed_string");
+ inputs.add(new Object[]{
+ "fromDateTime(dateTime, 'yyyy-MM-dd''T''HH:mm:ss.SSS''Z''', 'UTC',
-1)", Lists.newArrayList("dateTime"),
+ row114, -1L
+ });
+
// timezone_hour and timezone_minute
List<String> expectedArguments = Collections.singletonList("tz");
GenericRow row120 = new GenericRow();
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]