suremarc commented on issue #37741:
URL: https://github.com/apache/arrow/issues/37741#issuecomment-1924698064
I have started looking into implementing this on the Go client side, and I'm
running into some difficulties. Namely, the existing interface for
`PreparedStatement.Execute` returns a `*FlightInfo`, but `DoExchange` skips
`GetFlightInfo` altogether. The Rust client also presents a similar interface,
and I would guess that most clients in other languages do the same.
Of course, one can always drop down to raw Flight/FlightSQL calls without
using the abstraction of prepared statement "handles", but this just moves
complexity to consumers of the library and makes me worry if the `DoExchange`
protocol for prepared statements will actually be adopted in the ecosystem.
So we have a few options:
1. Change `PreparedStatement.Execute` to fetch the flight streams instead of
just returning the FlightInfo
* Pros: simpler for users, and hides details like using DoPut/DoExchange
* Cons: disruptive breaking change, less control over consumption of the
flight streams.
2. Add a new `PreparedStatement.DoExchange` method, separate from the
existing `Execute` implementation that uses `DoPut`
* Pros: less disruptive
* Cons: dispatching to the correct implementation is still forced on
users of this library
@alamb do you have any thoughts on this?
--
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]