wjones127 commented on code in PR #428: URL: https://github.com/apache/arrow-adbc/pull/428#discussion_r1100780974
########## adbc.h: ########## @@ -1183,7 +1204,11 @@ AdbcStatusCode AdbcStatementExecutePartitions(struct AdbcStatement* statement, /// driver. /// /// Although drivers may choose any name for this function, the -/// recommended name is "AdbcDriverInit". +/// recommended name is "AdbcDriverInit". If you use the recommended +/// name, then driver managers will be able to automatically find +/// the entrypoint function. Drivers may also expose the same function +/// under a unique symbol so that multiple drivers can be statically +/// linked into a single binary without any conflicts. Review Comment: In what I've implemented so far, the only non-mangled symbol Rust drivers exposed is `AdbcDriverInit` (or whatever they implementor chooses to call it). So "native Rust drivers" aren't treated any different from those implemented in other languages. Does that answer your question? I'm not sure I fully understood it. If a Rust application decided to statically link an AdbcDriver that was packaged as a Rust crate (either because it is implemented in Rust or else we wrapped another implementation into a crate), they would do something like: ```rust use sqlite_adbc_driver::AdbcDriverInit; use arrow_adbc::driver_manager::AdbcDriver; let driver = AdbcDriver::load_from_init(AdbcDriverInit, ADBC_VERSION_1_0_0); ``` -- 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]
