Skip to content

Commit c8f8ce1

Browse files
committed
fix: timestamp-millis has primitve type long
1 parent ad8263b commit c8f8ce1

2 files changed

Lines changed: 15 additions & 2 deletions

File tree

pyiceberg/utils/schema_conversion.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,9 @@
6868

6969
LOGICAL_FIELD_TYPE_MAPPING: Dict[Tuple[str, str], PrimitiveType] = {
7070
("date", "int"): DateType(),
71+
("time-millis", "int"): TimeType(),
7172
("time-micros", "long"): TimeType(),
72-
("timestamp-millis", "int"): TimestampType(),
73+
("timestamp-millis", "long"): TimestampType(),
7374
("timestamp-micros", "long"): TimestampType(),
7475
("uuid", "fixed"): UUIDType(),
7576
("uuid", "string"): UUIDType(),

tests/utils/test_schema_conversion.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -341,8 +341,20 @@ def test_convert_uuid_fixed_type() -> None:
341341
assert actual == UUIDType()
342342

343343

344+
def test_convert_time_millis_type() -> None:
345+
avro_logical_type = {"type": "int", "logicalType": "time-millis"}
346+
actual = AvroSchemaConversion()._convert_logical_type(avro_logical_type)
347+
assert actual == TimeType()
348+
349+
350+
def test_convert_time_micros_type() -> None:
351+
avro_logical_type = {"type": "long", "logicalType": "time-micros"}
352+
actual = AvroSchemaConversion()._convert_logical_type(avro_logical_type)
353+
assert actual == TimeType()
354+
355+
344356
def test_convert_timestamp_millis_type() -> None:
345-
avro_logical_type = {"type": "int", "logicalType": "timestamp-millis"}
357+
avro_logical_type = {"type": "long", "logicalType": "timestamp-millis"}
346358
actual = AvroSchemaConversion()._convert_logical_type(avro_logical_type)
347359
assert actual == TimestampType()
348360

0 commit comments

Comments
 (0)