lidavidm commented on PR #1717:
URL: https://github.com/apache/arrow-adbc/pull/1717#issuecomment-2051293841

   Cool. Yes, there's reusable support for exposing a C ABI (just like C++ 
drivers) from Go. This is used for 2 drivers (Snowflake, Flight SQL) and a 
testing driver: https://github.com/apache/arrow-adbc/tree/main/go/adbc/pkg The 
C# bindings use this already.
   
   > Do you think it is worth writing/documenting this somewhere if it isn't 
yet? Maybe guidelines for adding new drivers? Because that's a question we had 
early on (and in hindsight we should have asked!). :)
   
   Yes, sorry, I feel bad about this because it is more of a learned experience 
having worked with gRPC and packaging for a while. Basically, it's gRPC that's 
the issue: it has global state and only one copy of it can be in a process at a 
time. But Python wheels require all libraries to be bundled. Hence every Python 
package that uses gRPC must individually bundle gRPC, which runs into the first 
problem. That said I can't guarantee that it will fail, it really depends on 
how exactly everything was built and whether gRPC manages to stomp over itself.
   
   The other issue is Protobuf, which uses a global registry, and so you can't 
have two packages that both use the same Protobuf definitions. (They _may_ have 
fixed this in the past year or so when they changed the internal 
implementation? Not sure.)


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