[NO ISSUE][FUN] Drop fractional millis digits after 3rd precision
- user model changes: no
- storage format changes: no
- interface changes: no
Details: Modified DateFormatUtils reader to accept more
than 3 digits number as millisecond. Only digits upto
3 decimal value is maintained.
Change-Id: I03cfd5501ab14449c4bca74fe51432286e7aa3e5
Reviewed-on: https://asterix-gerrit.ics.uci.edu/3146
Reviewed-by: Michael Blow <mblow@apache.org>
Integration-Tests: Michael Blow <mblow@apache.org>
Tested-by: Michael Blow <mblow@apache.org>
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/temporal/DateTimeFormatUtils.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/temporal/DateTimeFormatUtils.java
index 98abb97..5e8ee90 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/temporal/DateTimeFormatUtils.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/temporal/DateTimeFormatUtils.java
@@ -585,6 +585,13 @@
} else if (processState == DateTimeProcessState.SECOND) {
sec = parsedValue;
} else if (processState == DateTimeProcessState.MILLISECOND) {
+ //read remaining millis values
+ while (dataStringPointer < dataLength && data[dataStart + dataStringPointer] >= '0'
+ && data[dataStart + dataStringPointer] <= '9') {
+ //parsedValue = parsedValue * 10 + (data[dataStart + dataStringPointer] - '0');
+ dataStringPointer++;
+ processFieldsCount++;
+ }
ms = parsedValue;
for (int i = processFieldsCount; i < 3; i++) {
ms *= 10;