zeroshade commented on issue #41556:
URL: https://github.com/apache/arrow/issues/41556#issuecomment-2096706042

   @matthewmturner I just want to clarify something, the response from `DoPut` 
is a `PutResult` message that contains a single `bytes` field named 
`app_metadata`. In the case of the `DoPut` for `DoPutPreparedStatementResult` 
we were deserializing the `app_metadata` directly into a 
`DoPutPreparedStatementResult`, which contains the handle as a `bytes` member. 
Are you expecting the `app_metadata` of `PutResult` to be a an `Any` protobuf 
in order to retrieve the `DoPutPreparedStatementResult`? Or are you expecting 
the `handle` member to be an `Any`?
   
   @lidavidm Since previously `DoPutPreparedStatement` didn't return anything 
until we added the `DoPutPreparedStatementResult` for updating the handle, 
there wasn't a convention for what should be returned. Looking at the results 
from the other messages I see the following general convention:
   
   * Responses from requests that go through the underlying `DoAction` 
(BeginSavepointResult, BeginTransactionResult, CancelQueryResult) are assumed 
to be serialized in an `Any`
   * responses from `DoPut` such as `DoPutUpdateResult`, are not assumed to be 
serialized as an `Any` inside of the `app_metadata` field of `PutResult`.
   
   That said, it does appear that the Go implementation is outnumbered here as 
the C++ implementation *does* assume an `Any` wrapper around the 
`DoPutPreparedStatementResult`, but it just seems odd to me as it breaks the 
existing convention that we had, leaving it to be kind of arbitrary and not 
documented anywhere.
   
   


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