rohilsurana opened a new pull request, #880: URL: https://github.com/apache/iceberg-go/pull/880
## Description The `equality_ids` field (field-id 135) in the manifest entry's `data_file` struct is currently defined with `LongSchema` (Avro `long` / 64-bit) for its array element type. The [Iceberg spec](https://iceberg.apache.org/spec/#manifests) defines this field as `list<int>` (Avro `int` / 32-bit), and the [Java implementation](https://github.com/apache/iceberg/blob/main/core/src/main/java/org/apache/iceberg/BaseFile.java#L365) reads it as `int[]` via `ArrayUtil.toIntArray`. This mismatch causes failures when other Iceberg implementations read manifests containing equality delete files written by iceberg-go: **Apache Spark / Java runtime:** ``` java.lang.ClassCastException: class java.lang.Long cannot be cast to class java.lang.Integer at org.apache.iceberg.util.ArrayUtil.toIntArray(ArrayUtil.java:50) at org.apache.iceberg.BaseFile.internalSet(BaseFile.java:336) ``` ### Spec reference [Iceberg Table Spec — Manifests — Data File fields](https://iceberg.apache.org/spec/#manifests): | Field id | Field name | Type | |----------|----------------|------------| | 135 | equality_ids | list\<int\> | ### How to reproduce 1. Write an Iceberg V2 table with equality delete files using iceberg-go (e.g., via `RowDelta.AddDeletes`) 2. Read the table with Spark: `SELECT * FROM table` → `ClassCastException` -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
