From c8f8ce1d767e9e3b9a14fc4cd0761f8c6b4f7d2d Mon Sep 17 00:00:00 2001 From: Matthias Queitsch Date: Tue, 15 Jul 2025 22:53:42 +0200 Subject: [PATCH 1/3] fix: `timestamp-millis` has primitve type `long` --- pyiceberg/utils/schema_conversion.py | 3 ++- tests/utils/test_schema_conversion.py | 14 +++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/pyiceberg/utils/schema_conversion.py b/pyiceberg/utils/schema_conversion.py index c73b3ada7d..81fb0ac32d 100644 --- a/pyiceberg/utils/schema_conversion.py +++ b/pyiceberg/utils/schema_conversion.py @@ -68,8 +68,9 @@ LOGICAL_FIELD_TYPE_MAPPING: Dict[Tuple[str, str], PrimitiveType] = { ("date", "int"): DateType(), + ("time-millis", "int"): TimeType(), ("time-micros", "long"): TimeType(), - ("timestamp-millis", "int"): TimestampType(), + ("timestamp-millis", "long"): TimestampType(), ("timestamp-micros", "long"): TimestampType(), ("uuid", "fixed"): UUIDType(), ("uuid", "string"): UUIDType(), diff --git a/tests/utils/test_schema_conversion.py b/tests/utils/test_schema_conversion.py index a5c45447ff..5fa05ecf3d 100644 --- a/tests/utils/test_schema_conversion.py +++ b/tests/utils/test_schema_conversion.py @@ -341,8 +341,20 @@ def test_convert_uuid_fixed_type() -> None: assert actual == UUIDType() +def test_convert_time_millis_type() -> None: + avro_logical_type = {"type": "int", "logicalType": "time-millis"} + actual = AvroSchemaConversion()._convert_logical_type(avro_logical_type) + assert actual == TimeType() + + +def test_convert_time_micros_type() -> None: + avro_logical_type = {"type": "long", "logicalType": "time-micros"} + actual = AvroSchemaConversion()._convert_logical_type(avro_logical_type) + assert actual == TimeType() + + def test_convert_timestamp_millis_type() -> None: - avro_logical_type = {"type": "int", "logicalType": "timestamp-millis"} + avro_logical_type = {"type": "long", "logicalType": "timestamp-millis"} actual = AvroSchemaConversion()._convert_logical_type(avro_logical_type) assert actual == TimestampType() From 68bd92b8902eea039ab410d73cb88644d68a3845 Mon Sep 17 00:00:00 2001 From: Matthias Queitsch Date: Tue, 15 Jul 2025 22:54:54 +0200 Subject: [PATCH 2/3] feat: add conversion for `time-millis` --- tests/utils/test_schema_conversion.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/utils/test_schema_conversion.py b/tests/utils/test_schema_conversion.py index 5fa05ecf3d..f35a74a9b4 100644 --- a/tests/utils/test_schema_conversion.py +++ b/tests/utils/test_schema_conversion.py @@ -33,6 +33,7 @@ NestedField, StringType, StructType, + TimeType, TimestampType, UnknownType, UUIDType, From fc6eb5350ee50ac465fc53d5807b7c778850cd52 Mon Sep 17 00:00:00 2001 From: Matthias Queitsch Date: Wed, 16 Jul 2025 06:48:01 +0200 Subject: [PATCH 3/3] fix: formatting --- tests/utils/test_schema_conversion.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/utils/test_schema_conversion.py b/tests/utils/test_schema_conversion.py index f35a74a9b4..e8cfd98f61 100644 --- a/tests/utils/test_schema_conversion.py +++ b/tests/utils/test_schema_conversion.py @@ -33,8 +33,8 @@ NestedField, StringType, StructType, - TimeType, TimestampType, + TimeType, UnknownType, UUIDType, )