You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by li...@apache.org on 2023/06/09 17:05:39 UTC

[arrow-adbc] branch main updated: docs: move driver documentation to top-level (#746)

This is an automated email from the ASF dual-hosted git repository.

lidavidm pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-adbc.git


The following commit(s) were added to refs/heads/main by this push:
     new e013175b docs: move driver documentation to top-level (#746)
e013175b is described below

commit e013175b7e13c54d064ed3a52a4d18e1305892e5
Author: David Li <li...@gmail.com>
AuthorDate: Fri Jun 9 13:05:33 2023 -0400

    docs: move driver documentation to top-level (#746)
    
    - Drivers are now all listed together, instead of trying to split by
    language
    - Don't list pages under multiple indices; this is confusing
    - Update driver documentation pages (and add R in a few places)
    - Link to generated Go documentation
    
    Fixes #738.
---
 docs/source/driver/cpp/index.rst            |  32 ------
 docs/source/driver/{go => }/flight_sql.rst  |  37 ++++++-
 docs/source/driver/go/index.rst             |  33 ------
 docs/source/driver/java/flight_sql.rst      |  33 ------
 docs/source/driver/java/index.rst           |  31 ------
 docs/source/driver/java/jdbc.rst            |  32 ------
 docs/source/driver/jdbc.rst                 |  67 ++++++++++++
 docs/source/driver/{cpp => }/postgresql.rst |  67 ++++++++----
 docs/source/driver/{go => }/snowflake.rst   | 162 ++++++++++++++++++++--------
 docs/source/driver/{cpp => }/sqlite.rst     |  47 ++++++--
 docs/source/driver/status.rst               |   6 +-
 docs/source/go/index.rst                    |  25 -----
 docs/source/index.rst                       |  65 +++++------
 docs/source/python/quickstart.rst           |   6 +-
 14 files changed, 341 insertions(+), 302 deletions(-)

diff --git a/docs/source/driver/cpp/index.rst b/docs/source/driver/cpp/index.rst
deleted file mode 100644
index 0c411a00..00000000
--- a/docs/source/driver/cpp/index.rst
+++ /dev/null
@@ -1,32 +0,0 @@
-.. 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.
-
-============
-C/C++/Python
-============
-
-.. toctree::
-   :maxdepth: 1
-   :caption: Drivers
-
-   postgresql
-   sqlite
-
-The ADBC project ships some drivers.  Others may (eventually) be
-available from database vendors or third parties.  The drivers here
-implement the C API standard and are directly usable in C/C++.  They
-also provide Python bindings.
diff --git a/docs/source/driver/go/flight_sql.rst b/docs/source/driver/flight_sql.rst
similarity index 90%
rename from docs/source/driver/go/flight_sql.rst
rename to docs/source/driver/flight_sql.rst
index 2b487e3f..9ec20628 100644
--- a/docs/source/driver/go/flight_sql.rst
+++ b/docs/source/driver/flight_sql.rst
@@ -19,16 +19,25 @@
 Flight SQL Driver
 =================
 
+**Available for:** C/C++, GLib/Ruby, Go, Java, Python
+
 The Flight SQL Driver provides access to any database implementing a
 :doc:`arrow:format/FlightSql` compatible endpoint.
 
 Installation
 ============
 
-The Flight SQL driver is shipped as a standalone library.
-
 .. tab-set::
 
+   .. tab-item:: C/C++
+      :sync: cpp
+
+      For conda-forge users:
+
+      .. code-block:: shell
+
+         mamba install libadbc-driver-flightsql
+
    .. tab-item:: Go
       :sync: go
 
@@ -36,12 +45,30 @@ The Flight SQL driver is shipped as a standalone library.
 
          go get github.com/apache/arrow-adbc/go
 
+   .. tab-item:: Java
+      :sync: java
+
+      Add a dependency on ``org.apache.arrow.adbc:adbc-driver-flight-sql``.
+
+      For Maven users:
+
+      .. code-block:: xml
+
+         <dependency>
+           <groupId>org.apache.arrow.adbc</groupId>
+           <artifactId>adbc-driver-flight-sql</artifactId>
+         </dependency>
+
    .. tab-item:: Python
       :sync: python
 
       .. code-block:: shell
 
-         pip install adbc_driver_sqlite
+         # For conda-forge
+         mamba install adbc-driver-flightsql
+
+         # For pip
+         pip install adbc_driver_flightsql
 
 Usage
 =====
@@ -81,6 +108,10 @@ Supported Features
 The Flight SQL driver generally supports features defined in the ADBC
 API specification 1.0.0, as well as some additional, custom options.
 
+.. warning:: The Java driver does not support all options here.  See
+             `issue #745
+             <https://github.com/apache/arrow-adbc/issues/745>`_.
+
 Authentication
 --------------
 
diff --git a/docs/source/driver/go/index.rst b/docs/source/driver/go/index.rst
deleted file mode 100644
index 687c88a6..00000000
--- a/docs/source/driver/go/index.rst
+++ /dev/null
@@ -1,33 +0,0 @@
-.. 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.
-
-==
-Go
-==
-
-.. toctree::
-   :maxdepth: 1
-   :caption: Drivers
-
-   flight_sql
-   snowflake
-
-The ADBC project ships some drivers.  Others may (eventually) be
-available from database vendors or third parties.  The drivers here
-implement the Go API standard and are directly usable in Go.  They
-also provide bindings that let them be used through the C API
-standard, as well as Python bindings on top of that.
diff --git a/docs/source/driver/java/flight_sql.rst b/docs/source/driver/java/flight_sql.rst
deleted file mode 100644
index 90f63721..00000000
--- a/docs/source/driver/java/flight_sql.rst
+++ /dev/null
@@ -1,33 +0,0 @@
-.. 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.
-
-==========
-Flight SQL
-==========
-
-The Flight SQL Driver provides access to any database implementing a
-:doc:`arrow:format/FlightSql` compatible endpoint.
-
-Installation
-============
-
-Add a dependency on ``org.apache.arrow.adbc:adbc-driver-flight-sql``.
-
-Usage
-=====
-
-Provide the parameter ``adbc.url`` when creating the database.
diff --git a/docs/source/driver/java/index.rst b/docs/source/driver/java/index.rst
deleted file mode 100644
index 614754e3..00000000
--- a/docs/source/driver/java/index.rst
+++ /dev/null
@@ -1,31 +0,0 @@
-.. 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.
-
-====
-Java
-====
-
-.. toctree::
-   :maxdepth: 1
-   :caption: Drivers
-
-   flight_sql
-   jdbc
-
-The ADBC project ships some drivers.  Others may (eventually) be
-available from database vendors or third parties.  The drivers here
-implement the Java API standard.
diff --git a/docs/source/driver/java/jdbc.rst b/docs/source/driver/java/jdbc.rst
deleted file mode 100644
index 6409c960..00000000
--- a/docs/source/driver/java/jdbc.rst
+++ /dev/null
@@ -1,32 +0,0 @@
-.. 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.
-
-============
-JDBC Adapter
-============
-
-The JDBC Adapter provides access to any database with a JDBC driver.
-
-Installation
-============
-
-Add a dependency on ``org.apache.arrow.adbc:adbc-driver-jdbc``.
-
-Usage
-=====
-
-Provide the parameter ``adbc.url`` when creating the database.
diff --git a/docs/source/driver/jdbc.rst b/docs/source/driver/jdbc.rst
new file mode 100644
index 00000000..ed17f125
--- /dev/null
+++ b/docs/source/driver/jdbc.rst
@@ -0,0 +1,67 @@
+.. 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.
+
+============
+JDBC Adapter
+============
+
+**Available for:** Java
+
+The JDBC Adapter provides access to any database with a JDBC driver.
+
+Installation
+============
+
+.. tab-set::
+
+   .. tab-item:: Java
+      :sync: java
+
+      Add a dependency on ``org.apache.arrow.adbc:adbc-driver-flight-sql``.
+
+      For Maven users:
+
+      .. code-block:: xml
+
+         <dependency>
+           <groupId>org.apache.arrow.adbc</groupId>
+           <artifactId>adbc-driver-jdbc</artifactId>
+         </dependency>
+
+Usage
+=====
+
+To connect to a database, supply the JDBC URI as the "uri" parameter,
+or an instance of a ``javax.sql.DataSource`` as the
+"adbc.jdbc.datasource" parameter.
+
+.. tab-set::
+
+   .. tab-item:: Java
+      :sync: java
+
+      .. code-block:: java
+
+         final Map<String, Object> parameters = new HashMap<>();
+         parameters.put(AdbcDriver.PARAM_URL, "jdbc:postgresql://localhost:5432/postgres");
+         AdbcDatabase db = new JdbcDriver(allocator).open(parameters);
+
+Supported Features
+==================
+
+The Flight SQL driver generally supports features defined in the ADBC
+API specification 1.0.0.
diff --git a/docs/source/driver/cpp/postgresql.rst b/docs/source/driver/postgresql.rst
similarity index 68%
rename from docs/source/driver/cpp/postgresql.rst
rename to docs/source/driver/postgresql.rst
index c39d7cf3..570ac81f 100644
--- a/docs/source/driver/cpp/postgresql.rst
+++ b/docs/source/driver/postgresql.rst
@@ -19,6 +19,8 @@
 PostgreSQL Driver
 =================
 
+**Available for:** C/C++, GLib/Ruby, Go, Python, R
+
 The PostgreSQL driver provides access to any database that supports
 the PostgreSQL wire format.  It wraps `libpq`_, the client library for
 PostgreSQL.  The project owes credit to 0x0L's `pgeon`_ for the
@@ -29,32 +31,52 @@ overall approach.
 .. _libpq: https://www.postgresql.org/docs/current/libpq.html
 .. _pgeon: https://github.com/0x0L/pgeon
 
-Status
-======
-
-The PostgreSQL driver is experimental.  Performance/optimization and
-support for complex types and different ADBC features is still
-ongoing.
+.. note:: The PostgreSQL driver is experimental.
+          Performance/optimization and support for complex types and
+          different ADBC features is still ongoing.
 
 Installation
 ============
 
-The PostgreSQL driver is shipped as a standalone library.
-
 .. tab-set::
 
-   .. tab-item:: C++
+   .. tab-item:: C/C++
       :sync: cpp
 
-      See :ref:`contributing` to build and install the package from source.
+      For conda-forge users:
+
+      .. code-block:: shell
+
+         mamba install libadbc-driver-postgresql
+
+   .. tab-item:: Go
+      :sync: go
+
+      Install the C/C++ package and use the Go driver manager.
+
+      .. code-block:: shell
+
+         go get github.com/apache/arrow-adbc/go
 
    .. tab-item:: Python
       :sync: python
 
       .. code-block:: shell
 
+         # For conda-forge
+         mamba install adbc-driver-postgresql
+
+         # For pip
          pip install adbc_driver_postgresql
 
+   .. tab-item:: R
+      :sync: r
+
+      .. code-block:: r
+
+         # install.packages("remotes")
+         remotes::install_github("apache/arrow-adbc/r/adbcpostgresql")
+
 Usage
 =====
 
@@ -84,14 +106,29 @@ the :cpp:class:`AdbcDatabase`.  This should be a `connection URI
 
          import adbc_driver_postgresql.dbapi
 
-
-         uri = "postgresql://localhost:5433"
+         uri = "postgresql://user:pass@localhost:5433/postgres"
          with adbc_driver_postgresql.dbapi.connect(uri) as conn:
              pass
 
+   .. tab-item:: R
+      :sync: r
+
+      .. code-block:: r
+
+         library(adbcdrivermanager)
+
+         # Use the driver manager to connect to a database
+         uri <- Sys.getenv("ADBC_POSTGRESQL_TEST_URI")
+         db <- adbc_database_init(adbcpostgresql::adbcpostgresql(), uri = uri)
+         con <- adbc_connection_init(db)
+
 Supported Features
 ==================
 
+The PostgreSQL driver mostly supports features defined in the ADBC API
+specification 1.0.0, but not all cases are fully implemented
+(particularly around bind parameters and prepared statements).
+
 Bulk Ingestion
 --------------
 
@@ -103,12 +140,6 @@ Partitioned Result Sets
 
 Partitioned result sets are not supported.
 
-Performance
------------
-
-The driver makes use of COPY and the binary format to speed up result
-set reading.  Formal benchmarking is forthcoming.
-
 Transactions
 ------------
 
diff --git a/docs/source/driver/go/snowflake.rst b/docs/source/driver/snowflake.rst
similarity index 77%
rename from docs/source/driver/go/snowflake.rst
rename to docs/source/driver/snowflake.rst
index 37514561..273818db 100644
--- a/docs/source/driver/go/snowflake.rst
+++ b/docs/source/driver/snowflake.rst
@@ -19,21 +19,50 @@
 Snowflake Driver
 ================
 
+**Available for:** C/C++, GLib/Ruby, Go, Python, R
+
 The Snowflake Driver provides access to Snowflake Database Warehouses.
 
 Installation
 ============
 
-The Snowflake Driver is shipped as a standalone library
-
 .. tab-set::
 
-  .. tab-item:: Go
-    :sync: go
+   .. tab-item:: C/C++
+      :sync: cpp
+
+      For conda-forge users:
+
+      .. code-block:: shell
+
+         mamba install libadbc-driver-snowflake
+
+   .. tab-item:: Go
+      :sync: go
+
+      .. code-block:: shell
+
+        go get github.com/apache/arrow-adbc/go/adbc/driver/snowflake
+
+   .. tab-item:: Python
+      :sync: python
+
+      .. code-block:: shell
+
+         # For conda-forge
+         mamba install adbc-driver-snowflake
 
-    .. code-block:: shell
+         # For pip
+         pip install adbc_driver_snowflake
 
-      go get github.com/apache/arrow-adbc/go/adbc/driver/snowflake
+   .. tab-item:: R
+      :sync: r
+
+      .. code-block:: shell
+
+         # install.packages("remotes")
+         remotes::install_github("apache/arrow-adbc/r/adbcdrivermanager", build = FALSE)
+         remotes::install_github("apache/arrow-adbc/r/adbcsnowflake", build = FALSE)
 
 Usage
 =====
@@ -43,19 +72,41 @@ constructing the :cpp::class:`AdbcDatabase`.
 
 .. tab-set::
 
-  .. tab-item:: C++
-    :sync: cpp
+   .. tab-item:: C++
+      :sync: cpp
+
+      .. code-block:: cpp
+
+         #include "adbc.h"
+
+         // Ignoring error handling
+         struct AdbcDatabase database;
+         AdbcDatabaseNew(&database, nullptr);
+         AdbcDatabaseSetOption(&database, "driver", "adbc_driver_snowflake", nullptr);
+         AdbcDatabaseSetOption(&database, "uri", "<snowflake uri>", nullptr);
+         AdbcDatabaseInit(&database, nullptr);
+
+   .. tab-item:: Python
+      :sync: python
+
+      .. code-block:: python
+
+         import adbc_driver_snowflake.dbapi
+
+         with adbc_driver_snowflake.dbapi.connect("<snowflake uri>") as conn:
+             pass
+
+   .. tab-item:: R
+      :sync: r
 
-    .. code-block:: cpp
+      .. code-block:: r
 
-      #include "adbc.h"
+         library(adbcdrivermanager)
 
-      // Ignoring error handling
-      struct AdbcDatabase database;
-      AdbcDatabaseNew(&database, nullptr);
-      AdbcDatabaseSetOption(&database, "driver", "adbc_driver_snowflake", nullptr);
-      AdbcDatabaseSetOption(&database, "uri", "<snowflake uri>", nullptr);
-      AdbcDatabaseInit(&database, nullptr);
+         # Use the driver manager to connect to a database
+         uri <- Sys.getenv("ADBC_SNOWFLAKE_TEST_URI")
+         db <- adbc_database_init(adbcsnowflake::adbcsnowflake(), uri = uri)
+         con <- adbc_connection_init(db)
 
 URI Format
 ----------
@@ -294,33 +345,52 @@ Because Snowflake types do not necessary match up 1-to-1 with Arrow types
 the following is what should be expected when requesting data. Any conversions
 indicated are done to ensure consistency of the stream of record batches.
 
-+----------------+---------------+-----------------------------------------+
-| Snowflake Type | Arrow Type    | Notes                                   |
-+----------------+---------------+-----------------------------------------+
-| Integral Types | Int64         | All integral types in snowflake are     |
-|                |               | stored as 64-bit integers.              |
-+----------------+---------------+-----------------------------------------+
-| Float/Double   | Float64       | Snowflake does not distinguish between  |
-|                |               | float or double. All are 64-bit values  |
-+----------------+---------------+-----------------------------------------+
-| Decimal/Numeric| Int64/Float64 | If Scale == 0 then Int64 is used, else  |
-|                |               | Float64 is returned.                    |
-+----------------+---------------+-----------------------------------------+
-| Time           | Time64(ns)    | For ingestion, time32 will also work    |
-+----------------+---------------+-----------------------------------------+
-| Date           | Date32        | For ingestion, Date64 will also work    |
-+----------------+---------------+-----------------------------------------+
-| Timestamp_LTZ  | Timestamp(ns) | Local time zone will be used.           |
-| Timestamp_NTZ  |               | No timezone specified in Arrow type info|
-| Timestamp_TZ   |               | Values will be converted to UTC         |
-+----------------+---------------+-----------------------------------------+
-| Variant        | String        | Snowflake does not provide nested type  |
-| Object         |               | information. So each value will be a    |
-| Array          |               | string, similar to JSON, which can be   |
-|                |               | parsed. The ``logicalType`` metadata key|
-|                |               | will contain the snowflake field type.  |
-+----------------+---------------+-----------------------------------------+
-| Geography      | String        | There is no canonical Arrow type for    |
-| Geometry       |               | these and snowflake returns them as     |
-|                |               | strings.                                |
-+----------------+---------------+-----------------------------------------+
+.. list-table::
+   :header-rows: 1
+
+   * - Snowflake Type
+     - Arrow Type
+     - Notes
+
+   * - integral types
+     - int64
+     - All integral types in Snowflake are stored as 64-bit integers.
+
+   * - float/double
+     - float64
+     - Snowflake does not distinguish between float or double. Both are 64-bit values.
+
+   * - decimal/numeric
+     - int64/float64
+     - If scale == 0, then int64 is used, else float64.
+
+   * - time
+     - time64[ns]
+     - For ingestion, time32 can also be used.
+
+   * - date
+     - date32
+     - For ingestion, date64 can also be used.
+
+   * - | timestamp_ltz
+       | timestamp_ntz
+       | timestamp_tz
+     - timestamp[ns]
+     - Local time zone will be used. No timezone will be specified in
+       the Arrow type. Values will be converted to UTC.
+
+   * - | variant
+       | object
+       | array
+     - string
+     - Snowflake does not provide information about nested
+       types. Values will be strings in a format similar to JSON that
+       can be parsed. The Arrow type will contain a metadata key
+       ``logicalType`` with the Snowflake field type.
+
+   * - | geography
+       | geometry
+     - string
+     - There is no current canonical Arrow (extension) type for these
+       types, so they will be returned as the string values that
+       Snowflake provides.
diff --git a/docs/source/driver/cpp/sqlite.rst b/docs/source/driver/sqlite.rst
similarity index 74%
rename from docs/source/driver/cpp/sqlite.rst
rename to docs/source/driver/sqlite.rst
index 3b2b3800..4693b7d1 100644
--- a/docs/source/driver/cpp/sqlite.rst
+++ b/docs/source/driver/sqlite.rst
@@ -19,34 +19,47 @@
 SQLite Driver
 =============
 
-The SQLite driver provides access to SQLite databases.
+**Available for:** C/C++, GLib/Ruby, Go, Python, R
 
-Status
-======
+The SQLite driver provides access to SQLite databases.
 
-The SQLite driver is essentially a "reference" driver that was used
-during ADBC development.  It generally supports most ADBC features but
-has not received attention to optimization.
+This driver is essentially a "reference" driver that was used during
+ADBC development.  It generally supports most ADBC features but has
+not received attention to optimization.
 
 Installation
 ============
 
-The SQLite driver is shipped as a standalone library.
-
 .. tab-set::
 
-   .. tab-item:: C++
+   .. tab-item:: C/C++
       :sync: cpp
 
-      See :ref:`contributing` to build and install the package from source.
+      For conda-forge users:
+
+      .. code-block:: shell
+
+         mamba install libadbc-driver-sqlite
 
    .. tab-item:: Python
       :sync: python
 
       .. code-block:: shell
 
+         # For conda-forge
+         mamba install adbc-driver-sqlite
+
+         # For pip
          pip install adbc_driver_sqlite
 
+   .. tab-item:: R
+      :sync: r
+
+      .. code-block:: shell
+
+         # install.packages("remotes")
+         remotes::install_github("apache/arrow-adbc/r/adbcdrivermanager", build = FALSE)
+         remotes::install_github("apache/arrow-adbc/r/adbcsqlite", build = FALSE)
 
 Usage
 =====
@@ -69,7 +82,8 @@ shared across all connections.
          // Ignoring error handling
          struct AdbcDatabase database;
          AdbcDatabaseNew(&database, nullptr);
-         AdbcDatabaseSetOption(&database, "uri", "file:mydb.db", nullptr);
+         AdbcDatabaseSetOption(&database, "driver", "adbc_driver_sqlite", nullptr);
+         AdbcDatabaseSetOption(&database, "uri", "<sqlite uri>", nullptr);
          AdbcDatabaseInit(&database, nullptr);
 
    .. tab-item:: Python
@@ -82,6 +96,17 @@ shared across all connections.
          with adbc_driver_sqlite.dbapi.connect() as conn:
              pass
 
+   .. tab-item:: R
+      :sync: r
+
+      .. code-block:: r
+
+         library(adbcdrivermanager)
+
+         # Use the driver manager to connect to a database
+         db <- adbc_database_init(adbcsqlite::adbcsqlite(), uri = ":memory:")
+         con <- adbc_connection_init(db)
+
 Supported Features
 ==================
 
diff --git a/docs/source/driver/status.rst b/docs/source/driver/status.rst
index 58fbd579..fd1bb663 100644
--- a/docs/source/driver/status.rst
+++ b/docs/source/driver/status.rst
@@ -15,9 +15,9 @@
 .. specific language governing permissions and limitations
 .. under the License.
 
-============================================
-Driver Feature Support/Implementation Status
-============================================
+============================
+Driver Implementation Status
+============================
 
 Implementation Status
 =====================
diff --git a/docs/source/go/index.rst b/docs/source/go/index.rst
deleted file mode 100644
index 570eae94..00000000
--- a/docs/source/go/index.rst
+++ /dev/null
@@ -1,25 +0,0 @@
-.. 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.
-
-===
-Go
-===
-
-.. toctree::
-   :maxdepth: 2
-
-.. note:: Under construction
diff --git a/docs/source/index.rst b/docs/source/index.rst
index dad57ff1..a5540e64 100644
--- a/docs/source/index.rst
+++ b/docs/source/index.rst
@@ -19,57 +19,44 @@
 Apache Arrow ADBC
 =================
 
-ADBC (Arrow Database Connectivity) is an API specification for
-Arrow-based database access.  It provides a set of APIs in C, Go, and
-Java that define how to interact with databases, including executing
-queries and fetching metadata, that use Arrow data for result sets and
-query parameters.  These APIs are then implemented by drivers (or a
-driver manager) that use some underlying protocol to work with
-specific databases.
-
-ADBC aims to provide applications with a single, Arrow-based API to
-work with multiple databases, whether Arrow-native or not.
-Application code should not need to juggle conversions from
-non-Arrow-native datasources alongside bindings for multiple
-Arrow-native database protocols.
+To get started, choose a language and follow the Quickstart page.
 
 To learn more about ADBC, see the `introductory blog post
 <https://arrow.apache.org/blog/2023/01/05/introducing-arrow-adbc/>`_.
 
 .. toctree::
    :maxdepth: 1
-   :caption: Specifications
-
-   format/specification
-   format/versioning
-   format/comparison
 
    faq
 
 .. toctree::
-   :maxdepth: 2
-   :caption: Drivers
+   :maxdepth: 1
+   :caption: Supported Environments
 
-   driver/installation
-   driver/status
-   driver/cpp/index
-   driver/go/index
-   driver/java/index
+   C/C++ <cpp/index>
+   Go <https://pkg.go.dev/github.com/apache/arrow-adbc/go/adbc>
+   Java <java/index>
+   Python <python/index>
 
 .. toctree::
    :maxdepth: 1
-   :caption: Tutorials
+   :caption: Drivers
 
-   python/quickstart
+   driver/installation
+   driver/status
+   driver/flight_sql
+   driver/jdbc
+   driver/postgresql
+   driver/snowflake
+   driver/sqlite
 
 .. toctree::
    :maxdepth: 1
-   :caption: Language-Specific APIs
+   :caption: Specification
 
-   C/C++ <cpp/index>
-   Go <go/index>
-   Java <java/index>
-   Python <python/index>
+   format/specification
+   format/versioning
+   format/comparison
 
 .. toctree::
    :maxdepth: 1
@@ -79,6 +66,20 @@ To learn more about ADBC, see the `introductory blog post
    development/nightly
    development/releasing
 
+ADBC (Arrow Database Connectivity) is an API specification for
+Arrow-based database access.  It provides a set of APIs in C, Go, and
+Java that define how to interact with databases, including executing
+queries and fetching metadata, that use Arrow data for result sets and
+query parameters.  These APIs are then implemented by drivers (or a
+driver manager) that use some underlying protocol to work with
+specific databases.
+
+ADBC aims to provide applications with a single, Arrow-based API to
+work with multiple databases, whether Arrow-native or not.
+Application code should not need to juggle conversions from
+non-Arrow-native datasources alongside bindings for multiple
+Arrow-native database protocols.
+
 Indices and tables
 ==================
 
diff --git a/docs/source/python/quickstart.rst b/docs/source/python/quickstart.rst
index 8177607a..834005dd 100644
--- a/docs/source/python/quickstart.rst
+++ b/docs/source/python/quickstart.rst
@@ -15,9 +15,9 @@
 .. specific language governing permissions and limitations
 .. under the License.
 
-===================
-Quickstart (Python)
-===================
+==========
+Quickstart
+==========
 
 Here we'll briefly tour basic features of ADBC with the SQLite driver.