>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]>