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]

Reply via email to