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

   ### What feature or improvement would you like to see?
   
   While the best ADBC user experience for most users is to use vendor-specific 
packages (i.e., `adbc_driver_sqlite`), with the recent ADBC Manifests standards 
work, it seems like more and more users might use the Driver Manager packages 
in their language of choice. This presents an immediate problem of connecting 
the Driver Manager to a loadable driver.
   
   Prior to the Manifests work, my understanding was that we drivers would rely 
on OS-specific shared library loading mechanisms like `LD_LIBRARY_PATH`. Now 
with Manifests, Driver Managers should look through the Environment, User, and 
System config levels (in that order) first.
   
   Despite such convenient ways of providing drivers, Python (and I expect 
other Driver Manager impls) fail pretty cryptically,
   
   ```python
   >>> import adbc_driver_manager
   ...
   >>> adbc_driver_manager.AdbcDatabase(driver="sqlite")
   Traceback (most recent call last):
     File "<python-input-1>", line 1, in <module>
       adbc_driver_manager.AdbcDatabase(driver="sqlite")
       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
     File "adbc_driver_manager/_lib.pyx", line 569, in 
adbc_driver_manager._lib.AdbcDatabase.__init__
     File "adbc_driver_manager/_lib.pyx", line 261, in 
adbc_driver_manager._lib.check_error
   adbc_driver_manager.InternalError: INTERNAL: [Driver Manager] dlopen() 
failed: dlopen(sqlite, 0x0006): tried: 'sqlite' (no such file), 
'/System/Volumes/Preboot/Cryptexes/OSsqlite' (no such file), 
'/opt/homebrew/lib/sqlite' (no such file), 
'/System/Volumes/Preboot/Cryptexes/OS/opt/homebrew/lib/sqlite' (no such file), 
'/usr/lib/sqlite' (no such file, not in dyld cache), 'sqlite' (no such file)
   dlopen() failed: dlopen(libsqlite.dylib, 0x0006): tried: 'libsqlite.dylib' 
(no such file), '/System/Volumes/Preboot/Cryptexes/OSlibsqlite.dylib' (no such 
file), '/opt/homebrew/lib/libsqlite.dylib' (no such file), 
'/System/Volumes/Preboot/Cryptexes/OS/opt/homebrew/lib/libsqlite.dylib' (no 
such file), '/usr/lib/libsqlite.dylib' (no such file, not in dyld cache), 
'libsqlite.dylib' (no such file)
   ```
   
   Notably, the Manifest paths are not shown so it's not clear if any were 
searched and, if so, whether any candidate drivers were rejected due to errors 
like an invalid manifest, mismatch of platform, etc.
   
   Could a richer error report be bubble backed up to the user? Something like,
   
   ```
   Failed to load driver "sqlite". 
   Strategy: Search for manifest (no extension)
   Checked:
     ? Environment: ADBC_CONFIG_PATH not set, skipped.
     x User: Could not find driver manifest 
     x System: Could not find driver manifest 
     x OS: Call to dlopen failed...
   ```
   
   Aside: The reason I'm writing this issue is because I'm currently trying to 
test the new manifest support in the driver manager and I'm going to have to 
resort to debugging a C++ test to figure out if the issue is mine or if there's 
a 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