Revanth14 opened a new issue, #18352: URL: https://github.com/apache/iceberg/issues/18352
### Feature Request / Improvement The table spec and the OpenAPI spec disagree on how `binary` and `fixed` values are written as hex strings: - `format/spec.md`, Appendix D (JSON single-value serialization): "Stored as a hexadecimal string", with the example `"000102ff"` (lowercase), and no case rule. - `rest-catalog-open-api.yaml`, `BinaryTypeValue` / `FixedTypeValue`: "serialized as an uppercase hexadecimal string". Implementations differ: - Java's `SingleValueParser` writes uppercase (Guava `base16()`) and reads case-insensitively, upper-casing the input before decoding. - iceberg-go writes lowercase for binary/fixed defaults in table metadata (`initial-default` / `write-default`), and uppercase for expression literals. So both cases can already appear in table metadata. **Proposal:** - Readers **must** accept either case. Lowercase values can already be written by existing implementations, so a stricter rule would break existing tables. - Writers **should** emit uppercase, matching the OpenAPI schema and the reference implementation. - Update the Appendix D example to uppercase (`"000102FF"`), and add the reader rule to the OpenAPI descriptions. Happy to open a PR once there's agreement. ### Query engine None ### Willingness to contribute - [x] I can contribute this improvement/feature independently - [ ] I would be willing to contribute this improvement/feature with guidance from the Iceberg community - [ ] I cannot contribute this improvement/feature at this time -- 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]
