diff --git a/ci/test_package.py b/ci/test_package.py index e558469..c552ebd 100644 --- a/ci/test_package.py +++ b/ci/test_package.py @@ -17,9 +17,7 @@ def test_package() -> None: - with adbc_driver_manager.dbapi.connect( - driver="datafusion", autocommit=True - ) as conn: + with adbc_driver_manager.dbapi.connect("datafusion://", autocommit=True) as conn: with conn.cursor() as cursor: cursor.adbc_statement.set_sql_query("SELECT 1") handle, _ = cursor.adbc_statement.execute_query() diff --git a/src/lib.rs b/src/lib.rs index a355ede..65f9489 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -284,9 +284,22 @@ impl Optionable for DataFusionDatabase { fn set_option( &mut self, key: Self::Option, - _value: adbc_core::options::OptionValue, + value: adbc_core::options::OptionValue, ) -> adbc_core::error::Result<()> { - Err(ErrorHelper::set_unknown_option(&key).to_adbc()) + match key { + OptionDatabase::Uri => { + // only support "datafusion://" for now + let uri = ErrorHelper::option_as_string(&key, &value).map_err(|e| e.to_adbc())?; + if uri == "datafusion://" { + Ok(()) + } else { + Err(ErrorHelper::set_invalid_option(&key, &value) + .message("only 'datafusion://' is accepted") + .to_adbc()) + } + } + _ => Err(ErrorHelper::set_unknown_option(&key).to_adbc()), + } } fn get_option_string(&self, key: Self::Option) -> adbc_core::error::Result { diff --git a/validation/tests/test_connection.py b/validation/tests/test_connection.py index 21e591d..b6ee6ec 100644 --- a/validation/tests/test_connection.py +++ b/validation/tests/test_connection.py @@ -13,6 +13,7 @@ # limitations under the License. +import adbc_driver_manager.dbapi import adbc_drivers_validation.tests.connection as connection_tests from . import datafusion @@ -25,3 +26,15 @@ def pytest_generate_tests(metafunc) -> None: class TestConnection(connection_tests.TestConnection): pass + + +def test_uri(driver, driver_path) -> None: + with adbc_driver_manager.dbapi.connect( + driver=driver_path, + uri="datafusion://", + autocommit=True, + ) as conn: + with conn.cursor() as cursor: + cursor.adbc_statement.set_sql_query("SELECT 1") + handle, _ = cursor.adbc_statement.execute_query() + assert handle is not None