balicat opened a new pull request, #285:
URL: https://github.com/apache/arrow-dotnet/pull/285

   ## Summary
   
   Resolves #184.
   
   The Arrow Flight `FlightRecordBatchStreamReader` hierarchy creates 
`RecordBatchReaderImplementation` (which extends `ArrowReaderImplementation`) 
but never passes an `ICompressionCodecFactory`. This means that when a Flight 
server sends compressed IPC record batches, the client fails to decompress them 
— even though the base `ArrowReaderImplementation` already has full compression 
support via its `ICompressionCodecFactory` constructor parameter.
   
   This PR threads `ICompressionCodecFactory` through the entire reader chain:
   
   - **`RecordBatchReaderImplementation`** — accepts optional 
`ICompressionCodecFactory` and passes it to the `ArrowReaderImplementation` 
base constructor
   - **`FlightRecordBatchStreamReader`** — accepts optional 
`ICompressionCodecFactory` and passes it to `RecordBatchReaderImplementation`
   - **`FlightClientRecordBatchStreamReader`** — passes through to base
   - **`FlightServerRecordBatchStreamReader`** — passes through to base (both 
constructors)
   - **`FlightClient`** — new constructor overloads that accept 
`ICompressionCodecFactory`, stored as a field and passed to readers in 
`GetStream()` and `DoExchange()`
   
   All new parameters default to `null`, so this is fully backward compatible 
with no breaking API changes.
   
   ### Usage
   
   ```csharp
   // Before (compressed Flight data fails to decompress):
   var client = new FlightClient(channel);
   
   // After (compressed Flight data is handled transparently):
   var client = new FlightClient(channel, new CompressionCodecFactory());
   ```
   
   ## Test plan
   
   - [ ] Verify existing Flight tests pass unchanged (backward compatibility 
via `null` defaults)
   - [ ] Test with a Flight server sending LZ4/ZSTD compressed record batches
   - [ ] Confirm `GetStream()` and `DoExchange()` correctly decompress data 
when `ICompressionCodecFactory` is provided
   
   🤖 Generated with [Claude Code](https://claude.com/claude-code)


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