metegenez opened a new issue, #4210:
URL: https://github.com/apache/arrow-adbc/issues/4210

   ### What feature or improvement would you like to see?
   
   Following up on the discussion in 
https://github.com/apache/arrow-adbc/discussions/4206#discussioncomment-16550014
   
   - **Go-based drivers** (Flight SQL, Snowflake): `dlclose` hangs or crashes 
because the Go runtime does not support clean unload (golang/go#11100). The 
Rust driver manager already works around this by skipping `dlclose` (#3844), 
but this is not documented in the C API.
   - **C/C++ drivers** (SQLite, PostgreSQL): presumably safe, but not 
documented either.
   - **Rust drivers**: untested per maintainer.
   
   Embedders integrating the C driver manager (e.g., StarRocks, DuckDB) 
currently have to discover this through the Rust manager's changelog or by 
debugging hangs at process shutdown.
   
   **Proposal**: add a section to the C driver manager (maybe for JNI part as 
well) documentation covering:
   
   1. `dlclose` must not be called on Go-based driver handles. Driver handles 
should stay resident until process exit.
   2. Cleanup should go through the ADBC API only: `AdbcStatementRelease` -> 
`AdbcConnectionRelease` -> `AdbcDatabaseRelease`.
   3. Multiple Go-based drivers can be `dlopen`-ed in the same process on Linux 
and ARM macOS, but not on Intel macOS (due to an unresolved Go runtime bug).


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