>From Peeyush Gupta <[email protected]>:

Peeyush Gupta has uploaded this change for review. ( 
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20960?usp=email )


Change subject: [ASTERIXDB-3634][EXT] Error reading iceberg timestamp data type
......................................................................

[ASTERIXDB-3634][EXT] Error reading iceberg timestamp data type

- user model changes: no
- storage format changes: no
- interface changes: no

Ext-ref: MB-70741, MB-70462
Change-Id: I5417542acabd0b3a3b7c4c7855909a397e1c66ae
---
M 
asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/IcebergParquetDataParser.java
1 file changed, 12 insertions(+), 3 deletions(-)



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

diff --git 
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/IcebergParquetDataParser.java
 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/IcebergParquetDataParser.java
index 91974a8..7266f2c 100644
--- 
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/IcebergParquetDataParser.java
+++ 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/IcebergParquetDataParser.java
@@ -28,6 +28,7 @@
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
+import java.time.OffsetDateTime;
 import java.time.ZoneId;
 import java.util.ArrayList;
 import java.util.List;
@@ -174,6 +175,7 @@
             case TIMESTAMP:
             case TIMESTAMP_NANO:
                 serializeTimestamp(value, out);
+                return;
             case GEOMETRY:
             case GEOGRAPHY:
             case VARIANT:
@@ -336,9 +338,16 @@
     }

     public void serializeTimestamp(Object value, DataOutput output) throws 
HyracksDataException {
-        LocalDateTime localDateTime = (LocalDateTime) value;
-        ZoneId zoneId = parserContext.getTimeZoneId();
-        long timeStampInMillis = 
localDateTime.atZone(zoneId).toInstant().toEpochMilli();
+        long timeStampInMillis;
+        if (value instanceof OffsetDateTime) {
+            // Timezone aware: Iceberg returns OffsetDateTime
+            timeStampInMillis = ((OffsetDateTime) 
value).toInstant().toEpochMilli();
+        } else {
+            // No timezone: Iceberg returns LocalDateTime
+            LocalDateTime localDateTime = (LocalDateTime) value;
+            ZoneId zoneId = parserContext.getTimeZoneId();
+            timeStampInMillis = 
localDateTime.atZone(zoneId).toInstant().toEpochMilli();
+        }
         if (parserContext.isTimestampAsLong()) {
             serializeLong(timeStampInMillis, output);
         } else {

--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20960?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://asterix-gerrit.ics.uci.edu/settings?usp=email

Gerrit-MessageType: newchange
Gerrit-Project: asterixdb
Gerrit-Branch: lumina
Gerrit-Change-Id: I5417542acabd0b3a3b7c4c7855909a397e1c66ae
Gerrit-Change-Number: 20960
Gerrit-PatchSet: 1
Gerrit-Owner: Peeyush Gupta <[email protected]>

Reply via email to