Skip to content

Instantly share code, notes, and snippets.

@ianmcook
Last active November 11, 2025 00:40
Show Gist options
  • Select an option

  • Save ianmcook/c5e2a6e980b3db29539b51a1dc7a0d45 to your computer and use it in GitHub Desktop.

Select an option

Save ianmcook/c5e2a6e980b3db29539b51a1dc7a0d45 to your computer and use it in GitHub Desktop.
Proposed APIs for passing solely a URI to the ADBC driver managers

C++

AdbcError error = {};
AdbcDatabase database = {};
AdbcDatabaseNew(&database, &error);

// AdbcDatabaseSetOption(&database, "driver", "<driver>", &error) // should be able to omit this...

AdbcDatabaseSetOption(&database, "uri", "<driver>:<scheme>://<address>", &error); // ...and include only this

Go

var drv drivermgr.Driver
db, err := drv.NewDatabase(map[string]string{
  "uri": "<driver>:<scheme>://<address>",
})

Java

Map<String, Object> params = new HashMap<>();

// I'm not sure if we need to do something like this:
JniDriver.PARAM_URI.set(params, "<driver>:<scheme>://<address>");

// ... or if we can just do this (which is simpler):
params.put("uri", "<driver>:<scheme>://<address>");

Python

Low-level API

db = adbc_driver_manager.AdbcDatabase(uri="<driver>:<scheme>://<address>")
con = adbc_driver_manager.AdbcConnection(db)

DBAPI API

con = dbapi.connect(uri="<driver>:<scheme>://<address>")

R

drv <- adbc_driver("<driver>:<scheme>://<address>")
db <- adbc_database_init(drv)
con <- adbc_connection_init(db)

Rust

let database = ManagedDatabase::from_uri(
    "<driver>:<scheme>://<address>",
    None,
    AdbcVersion::default(),
    LOAD_FLAG_DEFAULT,
    None,
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment