rustyconover opened a new issue, #135:
URL: https://github.com/apache/arrow-swift/issues/135

   ## Describe the enhancement requested
   
   The Arrow IPC spec supports `custom_metadata` (key-value pairs) on 
RecordBatch messages via the `Message.custom_metadata` field. The Swift 
FlatBuffers generated code (`org_apache_arrow_flatbuf_Message`) already has 
full read/write support for this field, but the Swift `RecordBatch` model, 
reader, and writer all ignore it.
   
   ### Proposed changes
   
   - Add a `customMetadata: [String: String]` property to `RecordBatch` 
(defaulting to `[:]` for backward compatibility)
   - Add `addMetadata` builder methods on `RecordBatch.Builder`
   - Serialize metadata into the FlatBuffers `Message` wrapper when writing 
(covers file, streaming, and Flight paths via `toMessage`)
   - Deserialize metadata from the FlatBuffers `Message` wrapper when reading 
(covers `readFile`, `readStreaming`, and `fromMessage`)
   
   ### Design notes
   
   - `[String: String]` matches the pragmatic API used by pyarrow and most 
Arrow consumers. Duplicate keys from other implementations are deduplicated 
(last wins). Dictionary order is not preserved across round-trips.
   - Flight support comes for free since `toMessage(batch:)` delegates to 
`writeRecordBatch`.
   - `ArrowTable.from(recordBatches:)` does not propagate per-batch metadata, 
which is expected since `ArrowTable` is a table-level abstraction.
   
   ### Files affected
   
   | File | Change |
   |------|--------|
   | `Sources/Arrow/ArrowTable.swift` | Add `customMetadata` property and 
builder methods |
   | `Sources/Arrow/ArrowWriter.swift` | Serialize metadata into FlatBuffers 
Message |
   | `Sources/Arrow/ArrowReader.swift` | Deserialize metadata from FlatBuffers 
Message |
   | `Tests/ArrowTests/IPCTests.swift` | Round-trip, builder API, 
cross-language, and multi-batch tests |
   
   I have an implementation ready and will open a PR referencing this issue.


-- 
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]

Reply via email to