raulcd opened a new pull request, #47410:
URL: https://github.com/apache/arrow/pull/47410
### Rationale for this change
The Flight Server DoExchange method currently does not support Dictionary
replacement or Dictionary Deltas, similar to how the client currently behaves
or how we do for DoGet we can use an `ipc::RecordBatchWriter` with a custom
`IpcPayloadWriter` to do not reimplement Dictionary Replacement / Deltas logic.
### What changes are included in this PR?
Remove manually generating ipc Payloads by calling the individual payload
calls to use an `ipc::RecordBatchWriter` and a custom
`TransportMessagePayloadWriter` to modify the `IpcPayloads` into
`FlightPayloads`.
### Are these changes tested?
Yes, existing tests cover the DoExchange functionality and new test for
Python has been added where Dictionary deltas are being send via DoExchange.
The test was failing before this change because the dictionary wasn't updated:
```python
received_table = reader.read_all()
expected_table = simple_dicts_table()
> assert received_table.equals(expected_table)
E assert False
E + where False = equals(pyarrow.Table\nsome_dicts:
dictionary<values=string, indices=int64, ordered=0>\n----\nsome_dicts: [ --
dictionary:\n["foo... -- dictionary:\n["foo","baz","quux"] -- indices:\n[2,1],
-- dictionary:\n["foo","baz","quux","new"] -- indices:\n[0,3]])
E + where equals = pyarrow.Table\nsome_dicts:
dictionary<values=string, indices=int64, ordered=0>\n----\nsome_dicts: [ --
dictionary:\n["foo...ull], -- dictionary:\n["foo","baz","quux"] --
indices:\n[2,1], -- dictionary:\n["foo","baz","quux"] --
indices:\n[0,3]].equals
pyarrow/tests/test_flight.py:2596: AssertionError
==================================================================================
short test summary info
===================================================================================
FAILED
pyarrow/tests/test_flight.py::test_flight_dictionary_deltas_do_exchange -
assert False
```
### Are there any user-facing changes?
No, only that the expected dictionary replacement/deltas will work for
DoExchange.
--
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]