lidavidm commented on code in PR #4525: URL: https://github.com/apache/arrow-adbc/pull/4525#discussion_r3599698502
########## docs/source/driver/authoring.rst: ########## Review Comment: Maybe we should be more explicit that you can build and host a driver wherever, and that the Foundry can provide hosting/distribution/etc? ########## docs/source/driver/index.rst: ########## @@ -0,0 +1,288 @@ +.. Licensed to the Apache Software Foundation (ASF) under one +.. or more contributor license agreements. See the NOTICE file +.. distributed with this work for additional information +.. regarding copyright ownership. The ASF licenses this file +.. to you under the Apache License, Version 2.0 (the +.. "License"); you may not use this file except in compliance +.. with the License. You may obtain a copy of the License at +.. +.. http://www.apache.org/licenses/LICENSE-2.0 +.. +.. Unless required by applicable law or agreed to in writing, +.. software distributed under the License is distributed on an +.. "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +.. KIND, either express or implied. See the License for the +.. specific language governing permissions and limitations +.. under the License. + +======= +Drivers +======= + +.. |click-for-docs| raw:: html + + <span class="th-hint">(click for docs)</span> + +.. |click-for-readme| raw:: html + + <span class="th-hint">(click for README)</span> + +An ADBC driver lets you connect to a database, run queries, and exchange data in +Arrow format. + +.. _driver-table: + +Available Drivers +================= + +ADBC drivers are typically built, distributed, and used as **shared libraries** +(``.so``, ``.dll``, or ``.dylib`` files). One shared library works from any +language. An application uses an +:doc:`ADBC client library <../client_libraries>` to dynamically load the driver +at runtime, no matter which language the driver was written in. Every +driver in the table below is packaged this way. + +.. list-table:: + :header-rows: 1 + :widths: 38 22 22 18 + :class: driver-table driver-table-main + + * - Driver for |click-for-docs| + - Slug [#slug]_ + - Maintainer [#maintainer]_ + - Repo + * - `BigQuery <https://docs.adbc-drivers.org/drivers/bigquery/>`__ + - ``bigquery`` + - Foundry + - :iconlink:`fa-brands fa-github|https://github.com/adbc-drivers/bigquery|GitHub repository` + * - `ClickHouse <https://docs.adbc-drivers.org/drivers/clickhouse/>`__ + - ``clickhouse`` + - Vendor + - :iconlink:`fa-brands fa-github|https://github.com/adbc-drivers/clickhouse|GitHub repository` + * - `Databricks <https://docs.adbc-drivers.org/drivers/databricks/>`__ + - ``databricks`` + - Foundry + - :iconlink:`fa-brands fa-github|https://github.com/adbc-drivers/databricks|GitHub repository` + * - `Apache DataFusion <https://docs.adbc-drivers.org/drivers/datafusion/>`__ + - ``datafusion`` + - Foundry + - :iconlink:`fa-brands fa-github|https://github.com/adbc-drivers/datafusion|GitHub repository` + * - :doc:`DuckDB <duckdb>` [#duckdb]_ + - ``duckdb`` + - Vendor + - :iconlink:`fa-brands fa-github|https://github.com/duckdb/duckdb|GitHub repository` + * - `Exasol <https://docs.adbc-drivers.org/drivers/exasol/>`__ + - ``exasol`` + - Vendor + - :iconlink:`fa-brands fa-github|https://github.com/exasol/adbc-driver-exasol|GitHub repository` + * - :doc:`Apache Arrow Flight SQL <flight_sql>` [#compat-flightsql]_ + - ``flightsql`` + - ASF + - :iconlink:`fa-brands fa-github|https://github.com/apache/arrow-adbc/tree/main/go/adbc/driver/flightsql|GitHub repository` + * - `Microsoft SQL Server <https://docs.adbc-drivers.org/drivers/mssql/>`__ + - ``mssql`` + - Foundry + - :iconlink:`fa-brands fa-github|https://github.com/adbc-drivers/mssql|GitHub repository` + * - `MySQL/MariaDB <https://docs.adbc-drivers.org/drivers/mysql/>`__ [#compat-mysql]_ + - ``mysql`` + - Foundry + - :iconlink:`fa-brands fa-github|https://github.com/adbc-drivers/mysql|GitHub repository` + * - :doc:`PostgreSQL <postgresql>` [#compat-postgresql]_ + - ``postgresql`` + - ASF + - :iconlink:`fa-brands fa-github|https://github.com/apache/arrow-adbc/tree/main/c/driver/postgresql|GitHub repository` + * - `DuckDB Quack <https://docs.adbc-drivers.org/drivers/quack/>`__ + - ``quack`` + - Foundry + - :iconlink:`fa-brands fa-github|https://github.com/adbc-drivers/quack|GitHub repository` + * - `Amazon Redshift <https://docs.adbc-drivers.org/drivers/redshift/>`__ + - ``redshift`` + - Foundry + - :iconlink:`fa-brands fa-github|https://github.com/adbc-drivers/redshift|GitHub repository` + * - `SingleStore <https://docs.adbc-drivers.org/drivers/singlestore/>`__ + - ``singlestore`` + - Vendor + - :iconlink:`fa-brands fa-github|https://github.com/singlestore-labs/singlestore-adbc-connector|GitHub repository` + * - `Snowflake <https://docs.adbc-drivers.org/drivers/snowflake/>`__ + - ``snowflake`` + - Foundry + - :iconlink:`fa-brands fa-github|https://github.com/adbc-drivers/snowflake|GitHub repository` + * - `Apache Spark <https://docs.adbc-drivers.org/drivers/spark/>`__ + - ``spark`` + - Foundry + - :iconlink:`fa-brands fa-github|https://github.com/adbc-drivers/spark|GitHub repository` + * - :doc:`SQLite <sqlite>` + - ``sqlite`` + - ASF + - :iconlink:`fa-brands fa-github|https://github.com/apache/arrow-adbc/tree/main/c/driver/sqlite|GitHub repository` + * - `Trino <https://docs.adbc-drivers.org/drivers/trino/>`__ + - ``trino`` + - Foundry + - :iconlink:`fa-brands fa-github|https://github.com/adbc-drivers/trino|GitHub repository` + +.. [#slug] The **slug** is the short name a driver is known by. It is the name + you hand to a :doc:`client library <../client_libraries>` to load the + driver—either as the driver name (``postgresql``) or as the URI scheme + (``postgresql://``). Given this name, the client library + :ref:`searches for a matching driver manifest <driver-manifest-discovery>` + (``postgresql.toml``) that tells it which shared library to load. The same + slug is what you pass when :ref:`installing a driver <driver-table-install>`. +.. [#maintainer] See :ref:`Who Maintains These Drivers? <driver-table-maintainers>` + for what **ASF**, **Foundry**, and **Vendor** mean. +.. [#duckdb] ADBC support is built directly into DuckDB; installing the + ``duckdb`` driver fetches a prebuilt binary. This driver is also compatible + with MotherDuck. +.. [#compat-flightsql] This driver works with Flight SQL-compatible systems, + including Apache Doris, Dremio, GizmoSQL, InfluxDB, Sail, and StarRocks. +.. [#compat-mysql] This driver also works with MySQL-compatible systems including + TiDB and Vitess. +.. [#compat-postgresql] This driver also works with PostgreSQL wire + protocol-compatible systems, including CedarDB, Citus, CockroachDB, CrateDB, + Neon, ParadeDB, TimescaleDB, Yellowbrick, and YugabyteDB. + +.. _driver-table-install: + +Installing Drivers +================== + +Pre-built binaries for the drivers in the table above are available from the +`ADBC driver registry <https://dbc-cdn.columnar.tech>`__ hosted by +`Columnar <https://columnar.tech>`__, a company active in ADBC driver +development. Binaries are available for Windows (amd64), macOS (arm64), and +Linux (amd64 and arm64), and are code-signed and notarized by Columnar. + +Users and applications can download a driver from the registry manually, or with +the `dbc <https://docs.columnar.tech/dbc/>`__ command-line tool. With dbc +installed, install any driver by its slug: + +.. code-block:: shell + + dbc install <slug> # e.g. dbc install postgresql + +dbc installs both the driver's shared library and its +:term:`driver manifest` to a location where an ADBC client library can find the +driver by its slug. If you download a driver from the registry manually instead, +you'll need to install the shared library to the correct location yourself and +create a driver manifest for it, or else pass the full path to the shared +library in your application code, plus the entrypoint if the driver does not +use the default entrypoint name. +See :doc:`ADBC Driver Manager and Manifests <../format/driver_manifests>` for +details. + +Some drivers are also published to language-specific package registries. +Apache-maintained drivers are on +:doc:`PyPI, conda-forge, CRAN, and more <installation>`; some vendor +drivers list their own packages in each driver's documentation, linked from its +name in the table above. + +.. note:: + The `ADBC driver registry <https://dbc-cdn.columnar.tech/>`__ and the + `dbc <https://docs.columnar.tech/dbc/>`__ command-line tool for installing + drivers from it are provided by Columnar, and are maintained independently of + the Apache Arrow project. + +.. _driver-table-language-specific: + +Language-Specific Drivers +========================= + +Some drivers are built and packaged for a specific language or runtime rather +than as dynamically loadable shared libraries. They run directly on that runtime, +without crossing an FFI / ABI boundary, and are distributed through its package +registry. They can be used from any language that targets that runtime — for +example, the .NET drivers work from C#, F#, and other .NET languages, and the +Java driver works from Java, Kotlin, Scala, and other JVM languages. + +.. _driver-table-csharp: + +C#/.NET +------- + +Distributed as .NET packages on NuGet, for use from C#/.NET applications: + +.. list-table:: + :header-rows: 1 + :class: driver-table + + * - Driver for |click-for-readme| + - NuGet package + - Maintainer + * - `Apache Arrow Flight SQL <https://github.com/apache/arrow-adbc/tree/main/csharp/src/Drivers/FlightSql/README.md>`__ + - :package-badge:`NuGet|Apache.Arrow.Adbc.FlightSql|https://www.nuget.org/packages/Apache.Arrow.Adbc.FlightSql/` + - ASF + * - :doc:`Google BigQuery <./bigquery>` + - :package-badge:`NuGet|Apache.Arrow.Adbc.Drivers.BigQuery|https://www.nuget.org/packages/Apache.Arrow.Adbc.Drivers.BigQuery/` + - ASF + * - `Apache Hive / Impala / Spark <https://github.com/apache/arrow-adbc/blob/main/csharp/src/Drivers/Apache/readme.md>`__ + - :package-badge:`NuGet|Apache.Arrow.Adbc.Drivers.Apache|https://www.nuget.org/packages/Apache.Arrow.Adbc.Drivers.Apache/` + - ASF + * - `Databricks <https://github.com/apache/arrow-adbc/blob/main/csharp/src/Drivers/Databricks/readme.md>`__ + - :package-badge:`NuGet|Apache.Arrow.Adbc.Drivers.Databricks|https://www.nuget.org/packages/Apache.Arrow.Adbc.Drivers.Databricks/` + - ASF + +.. _driver-table-java: + +Java +---- + +Distributed as Maven packages, for use from Java applications: + +.. list-table:: + :header-rows: 1 + :class: driver-table + + * - Driver for |click-for-docs| + - Maven package + - Maintainer + * - `Apache Arrow Flight SQL <https://arrow.apache.org/adbc/current/java/api/org/apache/arrow/adbc/driver/flightsql/package-summary.html>`__ + - :package-badge:`Maven|org.apache.arrow.adbc:adbc-driver-flight-sql|https://central.sonatype.com/artifact/org.apache.arrow.adbc/adbc-driver-flight-sql` + - ASF + * - :doc:`./jdbc` + - :package-badge:`Maven|org.apache.arrow.adbc:adbc-driver-jdbc|https://central.sonatype.com/artifact/org.apache.arrow.adbc/adbc-driver-jdbc` + - ASF + * - :doc:`../java/jni` + - :package-badge:`Maven|org.apache.arrow.adbc:adbc-driver-jni|https://central.sonatype.com/artifact/org.apache.arrow.adbc/adbc-driver-jni` + - ASF + +.. _driver-table-maintainers: + +Who Maintains These Drivers? +============================ + +The ADBC project focuses primarily on the :doc:`ADBC standard <../format/specification>` +and :doc:`client libraries <../client_libraries>`, not on developing drivers +and shipping driver binaries. The **Maintainer** column in the tables above +identifies who maintains each driver: + +**ASF** + A few drivers are maintained within the Apache Arrow project under + Apache Software Foundation (ASF) governance, mostly for historical reasons. + +**Foundry** + Most drivers are maintained within the `ADBC Driver Foundry <https://adbc-drivers.org/>`__, + a community-governed project focused on growing the ADBC ecosystem. + +**Vendor** + Some drivers are maintained in independent repositories controlled + by database vendors. + +Have a Driver to Add? +===================== + +If you've developed a high-quality ADBC driver, made it freely available for +public use under a permissive license, and would like it listed here, +`open an issue <https://github.com/apache/arrow-adbc/issues/new>`__ on the +Apache Arrow ADBC repository with the details (name, database, repository URL, +package names) and we'll help get it added. + +If you're interested in developing a new driver, consider reaching out to the +`ADBC Driver Foundry <https://github.com/adbc-drivers/>`__ and see their +`Building Drivers <https://docs.adbc-drivers.org/building-drivers/>`__ guide. Review Comment: Shouldn't this link to the guide in _these_ docs? ########## docs/source/client_libraries.rst: ########## @@ -0,0 +1,105 @@ +.. Licensed to the Apache Software Foundation (ASF) under one +.. or more contributor license agreements. See the NOTICE file +.. distributed with this work for additional information +.. regarding copyright ownership. The ASF licenses this file +.. to you under the Apache License, Version 2.0 (the +.. "License"); you may not use this file except in compliance +.. with the License. You may obtain a copy of the License at +.. +.. http://www.apache.org/licenses/LICENSE-2.0 +.. +.. Unless required by applicable law or agreed to in writing, +.. software distributed under the License is distributed on an +.. "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +.. KIND, either express or implied. See the License for the +.. specific language governing permissions and limitations +.. under the License. + +================ +Client Libraries +================ + +ADBC client libraries let you connect to databases and execute queries from your language of choice. +Because most ADBC :doc:`drivers <driver/index>` expose the same :doc:`standard C ABI <format/specification>`, a single client library can generally use drivers written in any language through the same client API. + +.. note:: + + On this page we use the terms **client library** and **driver manager** + interchangeably. More precisely, the driver manager is the part of a client + library that dynamically loads ADBC driver shared libraries and forwards your + calls to them; the client library wraps that machinery in an API that feels + idiomatic in your language. + + The package names are, unfortunately, not consistent about this. Some are + named for the driver manager (Python's ``adbc-driver-manager``, R's + ``adbcdrivermanager``), while others are named for ADBC itself (C#'s + ``Apache.Arrow.Adbc.Client``, Ruby's ``red-adbc``). They all give you the + same thing: a way to load drivers and talk to databases from your language. + +Packages +======== + +The client library package for each language: + +.. list-table:: + :header-rows: 1 + :widths: 15 15 30 40 + + * - Language + - Package Manager + - Package + - Documentation + * - Python + - pip / conda + - ``adbc-driver-manager`` + - :doc:`Python Quickstart <python/quickstart>` + * - C/C++ + - various + - See quickstart + - :doc:`C/C++ Quickstart <cpp/quickstart>` + * - C# + - dotnet + - ``Apache.Arrow.Adbc.Client`` + - :doc:`C# Quickstart <csharp/quickstart>` + * - Go + - go + - ``github.com/apache/arrow-adbc/go/adbc`` + - `Go Documentation ↗ <https://pkg.go.dev/github.com/apache/arrow-adbc/go/adbc>`__ + * - Java + - Maven + - ``org.apache.arrow.adbc``: ``adbc-core``, ``adbc-driver-manager``, ``adbc-driver-jni`` + - :doc:`Java Quickstart <java/quickstart>` + * - JavaScript / TypeScript + - npm + - ``@apache-arrow/adbc-driver-manager`` + - :doc:`JavaScript Quickstart <javascript/quickstart>` + * - R + - CRAN / conda + - ``adbcdrivermanager`` + - :doc:`R Quickstart <r/quickstart>` + * - Ruby + - bundler + - ``red-adbc`` + - :doc:`Ruby Quickstart <ruby/quickstart>` + * - Rust + - cargo + - ``adbc_core``, ``adbc_driver_manager`` + - :doc:`Rust Quickstart <rust/quickstart>` + +Using a Client Library +====================== + +Client libraries provide a language-native interface on top of the ADBC API. +They handle loading drivers, managing connections, and converting results into idiomatic types for each language. +For example, Python exposes a `DBAPI 2.0 (PEP 249) <https://peps.python.org/pep-0249/>`__-style interface, Go uses ``database/sql``, and R uses DBI. + +A client library on its own can't talk to a database—it also needs a +:doc:`driver <driver/index>` for the database you want to connect to. +The client library loads the driver at runtime, so you install the client +library once and then add a driver for each database you use. +See :doc:`Drivers <driver/index>` for the full list of available drivers and how to install them. + Review Comment: We could also link to Integrations here and explain that various higher level tools (e.g. pandas) integrate with ADBC? ########## docs/source/driver/index.rst: ########## @@ -0,0 +1,288 @@ +.. Licensed to the Apache Software Foundation (ASF) under one +.. or more contributor license agreements. See the NOTICE file +.. distributed with this work for additional information +.. regarding copyright ownership. The ASF licenses this file +.. to you under the Apache License, Version 2.0 (the +.. "License"); you may not use this file except in compliance +.. with the License. You may obtain a copy of the License at +.. +.. http://www.apache.org/licenses/LICENSE-2.0 +.. +.. Unless required by applicable law or agreed to in writing, +.. software distributed under the License is distributed on an +.. "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +.. KIND, either express or implied. See the License for the +.. specific language governing permissions and limitations +.. under the License. + +======= +Drivers +======= + +.. |click-for-docs| raw:: html + + <span class="th-hint">(click for docs)</span> + +.. |click-for-readme| raw:: html + + <span class="th-hint">(click for README)</span> + +An ADBC driver lets you connect to a database, run queries, and exchange data in +Arrow format. + +.. _driver-table: + +Available Drivers +================= + +ADBC drivers are typically built, distributed, and used as **shared libraries** +(``.so``, ``.dll``, or ``.dylib`` files). One shared library works from any +language. An application uses an +:doc:`ADBC client library <../client_libraries>` to dynamically load the driver +at runtime, no matter which language the driver was written in. Every +driver in the table below is packaged this way. + +.. list-table:: + :header-rows: 1 + :widths: 38 22 22 18 + :class: driver-table driver-table-main + + * - Driver for |click-for-docs| + - Slug [#slug]_ + - Maintainer [#maintainer]_ + - Repo + * - `BigQuery <https://docs.adbc-drivers.org/drivers/bigquery/>`__ + - ``bigquery`` + - Foundry + - :iconlink:`fa-brands fa-github|https://github.com/adbc-drivers/bigquery|GitHub repository` + * - `ClickHouse <https://docs.adbc-drivers.org/drivers/clickhouse/>`__ + - ``clickhouse`` + - Vendor + - :iconlink:`fa-brands fa-github|https://github.com/adbc-drivers/clickhouse|GitHub repository` + * - `Databricks <https://docs.adbc-drivers.org/drivers/databricks/>`__ + - ``databricks`` + - Foundry + - :iconlink:`fa-brands fa-github|https://github.com/adbc-drivers/databricks|GitHub repository` + * - `Apache DataFusion <https://docs.adbc-drivers.org/drivers/datafusion/>`__ + - ``datafusion`` + - Foundry + - :iconlink:`fa-brands fa-github|https://github.com/adbc-drivers/datafusion|GitHub repository` + * - :doc:`DuckDB <duckdb>` [#duckdb]_ + - ``duckdb`` + - Vendor + - :iconlink:`fa-brands fa-github|https://github.com/duckdb/duckdb|GitHub repository` + * - `Exasol <https://docs.adbc-drivers.org/drivers/exasol/>`__ + - ``exasol`` + - Vendor + - :iconlink:`fa-brands fa-github|https://github.com/exasol/adbc-driver-exasol|GitHub repository` + * - :doc:`Apache Arrow Flight SQL <flight_sql>` [#compat-flightsql]_ + - ``flightsql`` + - ASF + - :iconlink:`fa-brands fa-github|https://github.com/apache/arrow-adbc/tree/main/go/adbc/driver/flightsql|GitHub repository` + * - `Microsoft SQL Server <https://docs.adbc-drivers.org/drivers/mssql/>`__ + - ``mssql`` + - Foundry + - :iconlink:`fa-brands fa-github|https://github.com/adbc-drivers/mssql|GitHub repository` + * - `MySQL/MariaDB <https://docs.adbc-drivers.org/drivers/mysql/>`__ [#compat-mysql]_ + - ``mysql`` + - Foundry + - :iconlink:`fa-brands fa-github|https://github.com/adbc-drivers/mysql|GitHub repository` + * - :doc:`PostgreSQL <postgresql>` [#compat-postgresql]_ + - ``postgresql`` + - ASF + - :iconlink:`fa-brands fa-github|https://github.com/apache/arrow-adbc/tree/main/c/driver/postgresql|GitHub repository` + * - `DuckDB Quack <https://docs.adbc-drivers.org/drivers/quack/>`__ + - ``quack`` + - Foundry + - :iconlink:`fa-brands fa-github|https://github.com/adbc-drivers/quack|GitHub repository` + * - `Amazon Redshift <https://docs.adbc-drivers.org/drivers/redshift/>`__ + - ``redshift`` + - Foundry + - :iconlink:`fa-brands fa-github|https://github.com/adbc-drivers/redshift|GitHub repository` + * - `SingleStore <https://docs.adbc-drivers.org/drivers/singlestore/>`__ + - ``singlestore`` + - Vendor + - :iconlink:`fa-brands fa-github|https://github.com/singlestore-labs/singlestore-adbc-connector|GitHub repository` + * - `Snowflake <https://docs.adbc-drivers.org/drivers/snowflake/>`__ + - ``snowflake`` + - Foundry + - :iconlink:`fa-brands fa-github|https://github.com/adbc-drivers/snowflake|GitHub repository` + * - `Apache Spark <https://docs.adbc-drivers.org/drivers/spark/>`__ + - ``spark`` + - Foundry + - :iconlink:`fa-brands fa-github|https://github.com/adbc-drivers/spark|GitHub repository` + * - :doc:`SQLite <sqlite>` + - ``sqlite`` + - ASF + - :iconlink:`fa-brands fa-github|https://github.com/apache/arrow-adbc/tree/main/c/driver/sqlite|GitHub repository` + * - `Trino <https://docs.adbc-drivers.org/drivers/trino/>`__ + - ``trino`` + - Foundry + - :iconlink:`fa-brands fa-github|https://github.com/adbc-drivers/trino|GitHub repository` + +.. [#slug] The **slug** is the short name a driver is known by. It is the name + you hand to a :doc:`client library <../client_libraries>` to load the + driver—either as the driver name (``postgresql``) or as the URI scheme + (``postgresql://``). Given this name, the client library + :ref:`searches for a matching driver manifest <driver-manifest-discovery>` + (``postgresql.toml``) that tells it which shared library to load. The same + slug is what you pass when :ref:`installing a driver <driver-table-install>`. +.. [#maintainer] See :ref:`Who Maintains These Drivers? <driver-table-maintainers>` + for what **ASF**, **Foundry**, and **Vendor** mean. +.. [#duckdb] ADBC support is built directly into DuckDB; installing the + ``duckdb`` driver fetches a prebuilt binary. This driver is also compatible + with MotherDuck. +.. [#compat-flightsql] This driver works with Flight SQL-compatible systems, + including Apache Doris, Dremio, GizmoSQL, InfluxDB, Sail, and StarRocks. +.. [#compat-mysql] This driver also works with MySQL-compatible systems including + TiDB and Vitess. +.. [#compat-postgresql] This driver also works with PostgreSQL wire + protocol-compatible systems, including CedarDB, Citus, CockroachDB, CrateDB, + Neon, ParadeDB, TimescaleDB, Yellowbrick, and YugabyteDB. + +.. _driver-table-install: + +Installing Drivers +================== + +Pre-built binaries for the drivers in the table above are available from the +`ADBC driver registry <https://dbc-cdn.columnar.tech>`__ hosted by +`Columnar <https://columnar.tech>`__, a company active in ADBC driver +development. Binaries are available for Windows (amd64), macOS (arm64), and +Linux (amd64 and arm64), and are code-signed and notarized by Columnar. + +Users and applications can download a driver from the registry manually, or with +the `dbc <https://docs.columnar.tech/dbc/>`__ command-line tool. With dbc +installed, install any driver by its slug: + +.. code-block:: shell + + dbc install <slug> # e.g. dbc install postgresql + +dbc installs both the driver's shared library and its +:term:`driver manifest` to a location where an ADBC client library can find the +driver by its slug. If you download a driver from the registry manually instead, +you'll need to install the shared library to the correct location yourself and +create a driver manifest for it, or else pass the full path to the shared +library in your application code, plus the entrypoint if the driver does not +use the default entrypoint name. +See :doc:`ADBC Driver Manager and Manifests <../format/driver_manifests>` for +details. + +Some drivers are also published to language-specific package registries. +Apache-maintained drivers are on +:doc:`PyPI, conda-forge, CRAN, and more <installation>`; some vendor +drivers list their own packages in each driver's documentation, linked from its +name in the table above. + +.. note:: + The `ADBC driver registry <https://dbc-cdn.columnar.tech/>`__ and the + `dbc <https://docs.columnar.tech/dbc/>`__ command-line tool for installing + drivers from it are provided by Columnar, and are maintained independently of + the Apache Arrow project. + +.. _driver-table-language-specific: + +Language-Specific Drivers +========================= + +Some drivers are built and packaged for a specific language or runtime rather +than as dynamically loadable shared libraries. They run directly on that runtime, +without crossing an FFI / ABI boundary, and are distributed through its package +registry. They can be used from any language that targets that runtime — for Review Comment: ```suggestion registry. They can be used from any language that targets that runtime. For ``` -- 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]
