AbhishekPathania opened a new issue, #54649:
URL: https://github.com/apache/arrow/issues/54649

   ### Describe the bug, including details regarding any error messages, 
version, and platform.
   
   When a Flight SQL server returns `arrow-flight-reuse-connection://?` as the 
location of a `FlightEndpoint`, the ODBC driver fails with:
   
   ```
   No client transport implementation for arrow-flight-reuse-connection
   ```
   
   `FlightStreamChunkBuffer` only calls `DoGet` on the existing client when the 
location list is empty. For any other location it calls 
`FlightClient::Connect(endpoint_locations[0], ...)`, and no transport is 
registered for the reuse-connection scheme:
   
https://github.com/apache/arrow/blob/61f24ce27b0597258938566665d353ce54bccf60/cpp/src/arrow/flight/sql/odbc/odbc_impl/flight_sql_stream_chunk_buffer.cc#L36-L51
   
   GH-40345 (#40084) defined this location as "fetch on the current connection" 
and added support for it in C++, Java and Go, and the JDBC driver handles it in 
`ArrowFlightSqlClientHandler`. The ODBC driver came later and doesn't check for 
it. `GetInfo` reads through the same buffer, so the DSN dialog's Test 
Connection fails too.
   
   We hit this with a pyarrow-based Flight SQL proxy that rewrites endpoints to 
the reuse-connection location, using the ODBC driver built from 24.0.0 on 
Windows. A fix that treats the location like an empty list, plus a test in 
`flight_sql_stream_chunk_buffer_test.cc`, is ready, and I can open a PR.
   
   ### Component(s)
   
   C++, FlightRPC
   


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