[email protected] has uploaded a new change for review.

  https://asterix-gerrit.ics.uci.edu/3131

Change subject: MB32699 : preserve user specified DateTime separator - user 
model changes: no - storage format changes: no - interface changes:
......................................................................

MB32699 : preserve user specified DateTime separator
- user model changes: no
- storage format changes: no
- interface changes:

Details: Changed interface for dateTime input and output
to keep track of user specified dateTime separator.
By default the separator 'T' is used.

Change-Id: I09478c76cb85a02048b1d36f8fbaafa4efcb0e4f
---
M 
asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/temporal/DateTimeFormatUtils.java
1 file changed, 15 insertions(+), 5 deletions(-)


  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb 
refs/changes/31/3131/1

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..9310cda 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
@@ -274,14 +274,14 @@
     public boolean parseDateTime(AMutableInt64 outChronon, byte[] data, int 
dataStart, int dataLength, byte[] format,
             int formatStart, int formatLength, DateTimeParseMode parseMode, 
boolean raiseParseDataError)
             throws AsterixTemporalTypeParseException {
-        return parseDateTime(outChronon, null, null, data, dataStart, 
dataLength, format, formatStart, formatLength,
-                parseMode, raiseParseDataError, (byte) '\0');
+        return parseDateTime(outChronon, null, null, null, data, dataStart, 
dataLength, format, formatStart,
+                formatLength, parseMode, raiseParseDataError, (byte) '\0');
     }
 
     public boolean parseDateTime(AMutableInt64 outChronon, Mutable<Boolean> 
outTimeZoneExists,
-            AMutableInt32 outTimeZone, byte[] data, int dataStart, int 
dataLength, byte[] format, int formatStart,
-            int formatLength, DateTimeParseMode parseMode, boolean 
raiseParseDataError, byte altSeparatorChar)
-            throws AsterixTemporalTypeParseException {
+            AMutableInt32 outTimeZone, Mutable<Byte> dateTimeSeparator, byte[] 
data, int dataStart, int dataLength,
+            byte[] format, int formatStart, int formatLength, 
DateTimeParseMode parseMode, boolean raiseParseDataError,
+            byte altSeparatorChar) throws AsterixTemporalTypeParseException {
         int year = 0, month = 0, day = 0, hour = 0, min = 0, sec = 0, ms = 0, 
timezone = 0;
         boolean timezoneExists = false;
 
@@ -291,6 +291,10 @@
         int dataStringPointer = 0, formatPointer = 0;
 
         byte separatorChar = '\0';
+
+        byte lastSeparatorChar = '\0';
+
+        byte dateTimeSeparatorChar = '\0';
 
         DateTimeProcessState processState;
 
@@ -541,6 +545,7 @@
                     dataStringPointer += processedWeekdayFieldsCount;
                     break;
                 case HOUR:
+                    dateTimeSeparatorChar = lastSeparatorChar;
                 case MINUTE:
                 case SECOND:
                 case MILLISECOND:
@@ -757,6 +762,7 @@
                                 return false;
                             }
                         }
+                        lastSeparatorChar = b;
                         dataStringPointer++;
                     }
                     break;
@@ -786,7 +792,11 @@
 
         long chronon = parseMode == DateTimeParseMode.TIME_ONLY ? 
CAL.getChronon(hour, min, sec, ms, timezone)
                 : CAL.getChronon(year, month, day, hour, min, sec, ms, 
timezone);
+
         outChronon.setValue(chronon);
+        if (dateTimeSeparator != null) {
+            dateTimeSeparator.setValue(dateTimeSeparatorChar);
+        }
         if (outTimeZoneExists != null) {
             outTimeZoneExists.setValue(timezoneExists);
         }

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/3131
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I09478c76cb85a02048b1d36f8fbaafa4efcb0e4f
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: [email protected]

Reply via email to