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]
