>From Peeyush Gupta <[email protected]>: Peeyush Gupta has submitted this change. ( 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 Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20960 Tested-by: Peeyush Gupta <[email protected]> Reviewed-by: Hussain Towaileb <[email protected]> --- M asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/IcebergParquetDataParser.java 1 file changed, 12 insertions(+), 3 deletions(-) Approvals: Hussain Towaileb: Looks good to me, approved Peeyush Gupta: Verified 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: merged Gerrit-Project: asterixdb Gerrit-Branch: lumina Gerrit-Change-Id: I5417542acabd0b3a3b7c4c7855909a397e1c66ae Gerrit-Change-Number: 20960 Gerrit-PatchSet: 2 Gerrit-Owner: Peeyush Gupta <[email protected]> Gerrit-Reviewer: Hussain Towaileb <[email protected]> Gerrit-Reviewer: Jenkins <[email protected]> Gerrit-Reviewer: Murtadha Hubail <[email protected]> Gerrit-Reviewer: Peeyush Gupta <[email protected]> Gerrit-CC: Anon. E. Moose #1000171
