You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by gi...@apache.org on 2023/08/28 12:36:53 UTC
[arrow-flight-sql-postgresql] branch asf-site updated: Publish
This is an automated email from the ASF dual-hosted git repository.
github-bot pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/arrow-flight-sql-postgresql.git
The following commit(s) were added to refs/heads/asf-site by this push:
new 9cdfef8 Publish
9cdfef8 is described below
commit 9cdfef8da55a4339d666bf2f9b768d1d918e5fca
Author: github-actions[bot] <gi...@users.noreply.github.com>
AuthorDate: Mon Aug 28 12:36:48 2023 +0000
Publish
---
devel/_sources/client.md.txt | 152 ++++
devel/_sources/configuration.md.txt | 85 ++
devel/_sources/index.md.txt | 40 +
devel/_sources/install.md.txt | 91 ++
devel/_sources/overview.md.txt | 45 +
devel/_sources/release-notes.md.txt | 26 +
devel/_static/basic.css | 925 +++++++++++++++++++++
devel/_static/doctools.js | 156 ++++
devel/_static/documentation_options.js | 13 +
devel/_static/file.png | Bin 0 -> 286 bytes
devel/_static/language_data.js | 199 +++++
devel/_static/logo-dark.png | Bin 0 -> 22461 bytes
devel/_static/logo-light.png | Bin 0 -> 11027 bytes
devel/_static/minus.png | Bin 0 -> 90 bytes
devel/_static/plus.png | Bin 0 -> 90 bytes
devel/_static/pygments.css | 152 ++++
devel/_static/scripts/bootstrap.js | 3 +
devel/_static/scripts/bootstrap.js.LICENSE.txt | 5 +
devel/_static/scripts/bootstrap.js.map | 1 +
devel/_static/scripts/pydata-sphinx-theme.js | 2 +
devel/_static/scripts/pydata-sphinx-theme.js.map | 1 +
devel/_static/searchtools.js | 574 +++++++++++++
devel/_static/sphinx_highlight.js | 154 ++++
devel/_static/styles/bootstrap.css | 6 +
devel/_static/styles/pydata-sphinx-theme.css | 1 +
devel/_static/styles/theme.css | 2 +
devel/_static/switcher.json | 17 +
devel/_static/tabs.css | 110 +++
devel/_static/tabs.js | 30 +
devel/_static/vendor/fontawesome/6.1.2/LICENSE.txt | 165 ++++
.../vendor/fontawesome/6.1.2/css/all.min.css | 5 +
.../fontawesome/6.1.2/webfonts/fa-brands-400.ttf | Bin 0 -> 181264 bytes
.../fontawesome/6.1.2/webfonts/fa-brands-400.woff2 | Bin 0 -> 105112 bytes
.../fontawesome/6.1.2/webfonts/fa-regular-400.ttf | Bin 0 -> 60236 bytes
.../6.1.2/webfonts/fa-regular-400.woff2 | Bin 0 -> 24028 bytes
.../fontawesome/6.1.2/webfonts/fa-solid-900.ttf | Bin 0 -> 389948 bytes
.../fontawesome/6.1.2/webfonts/fa-solid-900.woff2 | Bin 0 -> 154840 bytes
.../6.1.2/webfonts/fa-v4compatibility.ttf | Bin 0 -> 10084 bytes
.../6.1.2/webfonts/fa-v4compatibility.woff2 | Bin 0 -> 4776 bytes
devel/_static/webpack-macros.html | 30 +
devel/client.html | 889 ++++++++++++++++++++
devel/configuration.html | 520 ++++++++++++
devel/genindex.html | 363 ++++++++
devel/index.html | 465 +++++++++++
devel/install.html | 530 ++++++++++++
devel/objects.inv | Bin 0 -> 381 bytes
devel/overview.html | 472 +++++++++++
devel/release-notes.html | 478 +++++++++++
devel/search.html | 387 +++++++++
devel/searchindex.js | 1 +
index.html | 20 +-
51 files changed, 7114 insertions(+), 1 deletion(-)
diff --git a/devel/_sources/client.md.txt b/devel/_sources/client.md.txt
new file mode 100644
index 0000000..8fb20c9
--- /dev/null
+++ b/devel/_sources/client.md.txt
@@ -0,0 +1,152 @@
+<!--
+ 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
+
+## How to connect
+
+You must specify PostgreSQL user and PostgreSQL database to connect
+Apache Arrow Flight SQL endpoint.
+
+User name and password must be passed by `Handshake` call. Note that
+basic authentication is only supported for now. mTLS (mutual-TLS)
+isn't implemented yet. If you're interested in mTLS, please see the
+issue for it:
+https://github.com/apache/arrow-flight-sql-postgresql/issues/79
+
+You need to use a header to specify PostgreSQL database. The header
+name for PostgreSQL database is `x-flight-sql-database`.
+
+````{tab} Apache Arrow Flight SQL C++ client
+You need to use
+[`arrow::flight::FlightClient::AuthenticateBasicToken()`][arrow-flight-authenticate-basic]
+for authentication.
+
+You need to add a `x-flight-sql-database` header to
+[`arrow::flight::FlightCallOptions::headers`][arrow-flight-call-options-headers]
+for database.
+
+The following example uses `PGUSER` (fallback to `USER`) and
+`PGPASSWORD` environment variables like
+`libpq`. `AuthenticateBasicToken()` returns Bearer token on
+success. So the example users the returned Bearer token to request
+headers to use following requests.
+
+The following example uses `PGDATABASE` (fallback to `PGUSER`/`USER`)
+environment variable like `libpq`.
+
+```{literalinclude} ../../example/flight-sql/authenticate-password.cc
+:language: c++
+:linenos:
+:tab-width: 4
+:start-after: // Start authentication
+:end-before: // End authentication
+```
+````
+
+````{tab} ADBC Flight SQL driver
+You need to set the
+`username` and `password` options for authentication. See also the
+[Authentication][arrow-adbc-authentication] document.
+
+You need to set the
+`adbc.flight.sql.rpc.call_header.x-flight-sql-database` option for
+database. See also the [Custom Call
+Headers][arrow-adbc-custom-call-headers] document.
+
+```{literalinclude} ../../example/adbc/authenticate-password.c
+:language: c
+:linenos:
+:tab-width: 4
+:start-after: // Start authentication
+:end-before: // End authentication
+```
+````
+
+## How to query
+
+You can use an ad-hoc SQL statement or a prepared SQL statement to
+query.
+
+### Ad-hoc SQL statement
+
+````{tab} Apache Arrow Flight SQL C++ client
+
+You need to use
+[`arrow::flight::sql::FlightSqlClient::Execute()`][arrow-flight-sql-client-execute]
+to execute a query.
+
+You need to use
+[`arrow::flight::sql::FlightSqlClient::DoGet()`][arrow-flight-sql-client-do-get]
+to get results.
+
+```{literalinclude} ../../example/flight-sql/query-ad-hoc.cc
+:language: c++
+:linenos:
+:tab-width: 4
+:start-after: // Start query
+:end-before: // End query
+```
+````
+
+```{tab} ADBC Flight SQL driver
+TODO
+```
+
+### Prepared SQL statement
+
+````{tab} Apache Arrow Flight SQL C++ client
+You need to use
+[`arrow::flight::sql::FlightSqlClient::Prepare()`][arrow-flight-sql-client-prepare]
+to prepare a query.
+
+You need to use
+[`arrow::flight::sql::PreparedStatement::SetParameters()`][arrow-flight-sql-prepared-statement-set-parameters]
+to set parameters.
+
+You need to use
+[`arrow::flight::sql::PreparedStatement::Execute()`][arrow-flight-sql-prepared-statement-execute]
+to execute a prepared statement with parameters.
+
+You need to use
+[`arrow::flight::sql::FlightSqlClient::DoGet()`][arrow-flight-sql-client-do-get]
+to get results.
+
+```{literalinclude} ../../example/flight-sql/query-prepared.cc
+:language: c++
+:linenos:
+:tab-width: 4
+:start-after: // Start query
+:end-before: // End query
+```
+````
+
+```{tab} ADBC Flight SQL driver
+TODO
+```
+
+[arrow-adbc-authentication]: https://arrow.apache.org/adbc/current/driver/flight_sql.html#authentication
+[arrow-adbc-custom-call-headers]: https://arrow.apache.org/adbc/current/driver/flight_sql.html#custom-call-headers
+[arrow-flight-authenticate-basic]: https://arrow.apache.org/docs/cpp/api/flight.html#clients
+[arrow-flight-call-options-headers]: https://arrow.apache.org/docs/cpp/api/flight.html#_CPPv4N5arrow6flight17FlightCallOptions7headersE
+[arrow-flight-sql-client-do-get]: https://arrow.apache.org/docs/cpp/api/flightsql.html#_CPPv4N5arrow6flight3sql15FlightSqlClient5DoGetERK17FlightCallOptionsRK6Ticket
+[arrow-flight-sql-client-execute]: https://arrow.apache.org/docs/cpp/api/flightsql.html#_CPPv4N5arrow6flight3sql15FlightSqlClient7ExecuteERK17FlightCallOptionsRKNSt6stringERK11Transaction
+[arrow-flight-sql-client-prepare]: https://arrow.apache.org/docs/cpp/api/flightsql.html#_CPPv4N5arrow6flight3sql15FlightSqlClient7PrepareERK17FlightCallOptionsRKNSt6stringERK11Transaction
+[arrow-flight-sql-prepared-statement-execute]: https://arrow.apache.org/docs/cpp/api/flightsql.html#_CPPv4N5arrow6flight3sql17PreparedStatement7ExecuteERK17FlightCallOptions
+[arrow-flight-sql-prepared-statement-set-parameters]: https://arrow.apache.org/docs/cpp/api/flightsql.html#_CPPv4N5arrow6flight3sql17PreparedStatement13SetParametersENSt10shared_ptrI11RecordBatchEE
diff --git a/devel/_sources/configuration.md.txt b/devel/_sources/configuration.md.txt
new file mode 100644
index 0000000..ae220b9
--- /dev/null
+++ b/devel/_sources/configuration.md.txt
@@ -0,0 +1,85 @@
+<!--
+ 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.
+-->
+
+# Configuration
+
+## `shared_preload_libraries`
+
+You must add `arrow_flight_sql` to
+[`shared_preload_libraries`][postgresql-shared-preload-libraries].
+
+You need to restart your PostgreSQL after changing
+`shared_preload_libraries`.
+
+## `arrow_flight_sql.uri`
+
+The endpoint URI for Apache Arrow Flight SQL.
+
+The default is `grpc://127.0.0.1:15432`.
+
+If you want to use TLS to connect the Apache Arrow Flight SQL
+endpoint, you need to do the followings:
+
+1. Use `grpc+tls` schema such as `grpc+tls://127.0.0.1:15432` for
+ `arrow_flight_sql.uri`
+2. Prepare the standard PostgreSQL TLS configurations such as
+ [`ssl`][postgresql-ssl],
+ [`ssl_ca_file`][postgresql-ca-file]. Apache Arrow Flight SQL
+ adapter for PostgreSQL uses the PostgreSQL's TLS configurations. So
+ you don't need to prepare TLS related things only for Apache Arrow
+ Flight SQL for PostgreSQL. See also the PostgreSQL's [Secure TCP/IP
+ Connections with SSL][postgresql-ssl-tcp] documentation.
+
+Note that you also need to setup client side. For example, see the
+following documentations for the C++ implementation of Apache Arrow
+Flight SQL client:
+
+* [Enable TLS][arrow-flight-tls]
+
+```{note}
+mTLS (mutual-TLS) isn't implemented yet. If you're interested in mTLS,
+please see the issue for it: https://github.com/apache/arrow-flight-sql-postgresql/issues/79
+```
+
+## `arrow_flight_sql.session_timeout`
+
+The maximum session duration in seconds.
+
+The default is 300 seconds.
+
+-1 means no timeout.
+
+If no query is executed during the timeout, the session is closed
+automatically.
+
+## `arrow_flight_sql.max_n_rows_per_record_batch`
+
+The maximum number of rows per record batch.
+
+The default is 1 * 1024 * 1024 rows.
+
+If this value is small, total data exchange time will be slower.
+
+If this value is larger, latency will be larger.
+
+[arrow-flight-tls]: https://arrow.apache.org/docs/cpp/flight.html#enabling-tls
+[postgresql-ca-file]: https://www.postgresql.org/docs/current/runtime-config-connection.html#GUC-SSL-CA-FILE
+[postgresql-shared-preload-libraries]: https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-SHARED-PRELOAD-LIBRARIES
+[postgresql-ssl-tcp]: https://www.postgresql.org/docs/current/ssl-tcp.html
+[postgresql-ssl]: https://www.postgresql.org/docs/current/runtime-config-connection.html#GUC-SSL
diff --git a/devel/_sources/index.md.txt b/devel/_sources/index.md.txt
new file mode 100644
index 0000000..fedc6db
--- /dev/null
+++ b/devel/_sources/index.md.txt
@@ -0,0 +1,40 @@
+<!--
+ 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.
+-->
+
+# Apache Arrow Flight SQL adapter for PostgreSQL
+
+```{toctree}
+:maxdepth: 1
+release-notes.md
+```
+
+```{toctree}
+:maxdepth: 2
+overview.md
+install.md
+configuration.md
+client.md
+```
+
+
+## Indices and tables
+
+* {ref}`genindex`
+* {ref}`modindex`
+* {ref}`search`
diff --git a/devel/_sources/install.md.txt b/devel/_sources/install.md.txt
new file mode 100644
index 0000000..4daa30e
--- /dev/null
+++ b/devel/_sources/install.md.txt
@@ -0,0 +1,91 @@
+<!--
+ 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.
+-->
+
+# Install
+
+## Debian GNU/Linux and Ubuntu
+
+Supported versions:
+
+* Debian GNU/Linux bookworm
+* Ubuntu 22.04 LTS
+
+Enable the PostgreSQL APT repository:
+
+```bash
+sudo apt update
+sudo apt install -y ca-certificates gpg lsb-release wget
+wget -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | \
+ sudo gpg --no-default-keyring --keyring /usr/share/keyrings/pgdg.gpg --import -
+(echo "Types: deb"; \
+ echo "URIs: http://apt.postgresql.org/pub/repos/apt"; \
+ echo "Suites: $(lsb_release --codename --short)-pgdg"; \
+ echo "Components: main"; \
+ echo "Signed-By: /usr/share/keyrings/pgdg.gpg") | \
+ sudo tee /etc/apt/sources.list.d/pgdg.sources
+```
+
+Enable the Apache Arrow APT repository:
+
+```bash
+wget https://apache.jfrog.io/artifactory/arrow/$(lsb_release --id --short | tr 'A-Z' 'a-z')/apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb
+sudo apt install -y -V ./apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb
+rm apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb
+sudo apt update
+```
+
+Install `postgresql-15-pgdg-apache-arrow-flight-sql`:
+
+```bash
+sudo apt install -y postgresql-15-pgdg-apache-arrow-flight-sql
+```
+
+See {doc}`configuration` how to configure Apache Arrow Flight SQL adapter for PostgreSQL.
+
+## Source
+
+You need to install the followings before you build Apache Arrow
+Flight SQL adapter for PostgreSQL:
+
+* PostgreSQL: https://www.postgresql.org/download/
+* Apache Arrow C++ with Flight SQL support: https://arrow.apache.org/install/
+* Meson: https://mesonbuild.com/
+* Ninja: https://ninja-build.org/
+* C++ compiler such as `g++` and `clang++
+
+Here are command lines to build Apache Arrow Flight SQL adapter for
+PostgreSQL:
+
+```{note}
+Replase `${version}` with {{ env.config.version }} or define `version` variable with {{ env.config.version }}.
+```
+
+```bash
+wget "https://www.apache.org/dyn/closer.lua?action=download&filename=arrow/apache-arrow-flight-sql-postgresql-${version}/apache-arrow-flight-sql-postgresql-${version}.tar.gz"
+tar xfv apache-arrow-flight-sql-postgresql-${version}.tar.gz
+meson setup \
+ --prefix=/usr/local \
+ -Dpostgresql_dir=$(pg_config --bindir)/.. \
+ apache-arrow-flight-sql-postgresql-${version}.build \
+ apache-arrow-flight-sql-postgresql-${version}
+meson compile -C apache-arrow-flight-sql-postgresql-${version}.build
+sudo meson install -C apache-arrow-flight-sql-postgresql-${version}.build
+```
+
+See {doc}`configuration` how to configure Apache Arrow Flight SQL adapter for PostgreSQL.
diff --git a/devel/_sources/overview.md.txt b/devel/_sources/overview.md.txt
new file mode 100644
index 0000000..7d1521d
--- /dev/null
+++ b/devel/_sources/overview.md.txt
@@ -0,0 +1,45 @@
+<!--
+ 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.
+-->
+
+# Overview
+
+Apache Arrow Flight SQL adapter for PostgreSQL is a PostgreSQL
+extension that adds an [Apache Arrow Flight
+SQL][apache-arrow-flight-sql] endpoint to PostgreSQL.
+
+Apache Arrow Flight SQL is a protocol to use [Apache Arrow
+format][apache-arrow-format] to interact with SQL databases. You can
+use Apache Arrow Flight SQL instead of [the PostgreSQL wire
+protocol][postgresql-protocol] to interact with PostgreSQL by Apache
+Arrow Flight SQL adapter for PostgreSQL.
+
+Apache Arrow format is designed for fast typed table data exchange. If
+you want to get large data by `SELECT` or `INSERT`/`UPDATE` large
+data, Apache Arrow Flight SQL will be faster than the PostgreSQL wire
+protocol.
+
+See also [a simple benchmark result][benchmark-integer] that just
+executes `SELECT * FROM integer_only_table`. It shows that Apache
+Arrow Flight SQL is faster than the PostgreSQL wire protocol when
+result data is large.
+
+[apache-arrow-flight-sql]: https://arrow.apache.org/docs/format/FlightSql.html
+[apache-arrow-format]: https://arrow.apache.org/docs/format/Columnar.html
+[postgresql-protocol]: https://www.postgresql.org/docs/current/protocol.html
+[benchmark-integer]: https://github.com/apache/arrow-flight-sql-postgresql/tree/main/benchmark/integer
diff --git a/devel/_sources/release-notes.md.txt b/devel/_sources/release-notes.md.txt
new file mode 100644
index 0000000..f3159e3
--- /dev/null
+++ b/devel/_sources/release-notes.md.txt
@@ -0,0 +1,26 @@
+<!--
+ 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.
+-->
+
+# Release notes
+
+## 0.1.0
+
+### Improvements
+
+ * The initial release!
diff --git a/devel/_static/basic.css b/devel/_static/basic.css
new file mode 100644
index 0000000..e760386
--- /dev/null
+++ b/devel/_static/basic.css
@@ -0,0 +1,925 @@
+/*
+ * basic.css
+ * ~~~~~~~~~
+ *
+ * Sphinx stylesheet -- basic theme.
+ *
+ * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+/* -- main layout ----------------------------------------------------------- */
+
+div.clearer {
+ clear: both;
+}
+
+div.section::after {
+ display: block;
+ content: '';
+ clear: left;
+}
+
+/* -- relbar ---------------------------------------------------------------- */
+
+div.related {
+ width: 100%;
+ font-size: 90%;
+}
+
+div.related h3 {
+ display: none;
+}
+
+div.related ul {
+ margin: 0;
+ padding: 0 0 0 10px;
+ list-style: none;
+}
+
+div.related li {
+ display: inline;
+}
+
+div.related li.right {
+ float: right;
+ margin-right: 5px;
+}
+
+/* -- sidebar --------------------------------------------------------------- */
+
+div.sphinxsidebarwrapper {
+ padding: 10px 5px 0 10px;
+}
+
+div.sphinxsidebar {
+ float: left;
+ width: 270px;
+ margin-left: -100%;
+ font-size: 90%;
+ word-wrap: break-word;
+ overflow-wrap : break-word;
+}
+
+div.sphinxsidebar ul {
+ list-style: none;
+}
+
+div.sphinxsidebar ul ul,
+div.sphinxsidebar ul.want-points {
+ margin-left: 20px;
+ list-style: square;
+}
+
+div.sphinxsidebar ul ul {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+div.sphinxsidebar form {
+ margin-top: 10px;
+}
+
+div.sphinxsidebar input {
+ border: 1px solid #98dbcc;
+ font-family: sans-serif;
+ font-size: 1em;
+}
+
+div.sphinxsidebar #searchbox form.search {
+ overflow: hidden;
+}
+
+div.sphinxsidebar #searchbox input[type="text"] {
+ float: left;
+ width: 80%;
+ padding: 0.25em;
+ box-sizing: border-box;
+}
+
+div.sphinxsidebar #searchbox input[type="submit"] {
+ float: left;
+ width: 20%;
+ border-left: none;
+ padding: 0.25em;
+ box-sizing: border-box;
+}
+
+
+img {
+ border: 0;
+ max-width: 100%;
+}
+
+/* -- search page ----------------------------------------------------------- */
+
+ul.search {
+ margin: 10px 0 0 20px;
+ padding: 0;
+}
+
+ul.search li {
+ padding: 5px 0 5px 20px;
+ background-image: url(file.png);
+ background-repeat: no-repeat;
+ background-position: 0 7px;
+}
+
+ul.search li a {
+ font-weight: bold;
+}
+
+ul.search li p.context {
+ color: #888;
+ margin: 2px 0 0 30px;
+ text-align: left;
+}
+
+ul.keywordmatches li.goodmatch a {
+ font-weight: bold;
+}
+
+/* -- index page ------------------------------------------------------------ */
+
+table.contentstable {
+ width: 90%;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+table.contentstable p.biglink {
+ line-height: 150%;
+}
+
+a.biglink {
+ font-size: 1.3em;
+}
+
+span.linkdescr {
+ font-style: italic;
+ padding-top: 5px;
+ font-size: 90%;
+}
+
+/* -- general index --------------------------------------------------------- */
+
+table.indextable {
+ width: 100%;
+}
+
+table.indextable td {
+ text-align: left;
+ vertical-align: top;
+}
+
+table.indextable ul {
+ margin-top: 0;
+ margin-bottom: 0;
+ list-style-type: none;
+}
+
+table.indextable > tbody > tr > td > ul {
+ padding-left: 0em;
+}
+
+table.indextable tr.pcap {
+ height: 10px;
+}
+
+table.indextable tr.cap {
+ margin-top: 10px;
+ background-color: #f2f2f2;
+}
+
+img.toggler {
+ margin-right: 3px;
+ margin-top: 3px;
+ cursor: pointer;
+}
+
+div.modindex-jumpbox {
+ border-top: 1px solid #ddd;
+ border-bottom: 1px solid #ddd;
+ margin: 1em 0 1em 0;
+ padding: 0.4em;
+}
+
+div.genindex-jumpbox {
+ border-top: 1px solid #ddd;
+ border-bottom: 1px solid #ddd;
+ margin: 1em 0 1em 0;
+ padding: 0.4em;
+}
+
+/* -- domain module index --------------------------------------------------- */
+
+table.modindextable td {
+ padding: 2px;
+ border-collapse: collapse;
+}
+
+/* -- general body styles --------------------------------------------------- */
+
+div.body {
+ min-width: 360px;
+ max-width: 800px;
+}
+
+div.body p, div.body dd, div.body li, div.body blockquote {
+ -moz-hyphens: auto;
+ -ms-hyphens: auto;
+ -webkit-hyphens: auto;
+ hyphens: auto;
+}
+
+a.headerlink {
+ visibility: hidden;
+}
+
+a:visited {
+ color: #551A8B;
+}
+
+h1:hover > a.headerlink,
+h2:hover > a.headerlink,
+h3:hover > a.headerlink,
+h4:hover > a.headerlink,
+h5:hover > a.headerlink,
+h6:hover > a.headerlink,
+dt:hover > a.headerlink,
+caption:hover > a.headerlink,
+p.caption:hover > a.headerlink,
+div.code-block-caption:hover > a.headerlink {
+ visibility: visible;
+}
+
+div.body p.caption {
+ text-align: inherit;
+}
+
+div.body td {
+ text-align: left;
+}
+
+.first {
+ margin-top: 0 !important;
+}
+
+p.rubric {
+ margin-top: 30px;
+ font-weight: bold;
+}
+
+img.align-left, figure.align-left, .figure.align-left, object.align-left {
+ clear: left;
+ float: left;
+ margin-right: 1em;
+}
+
+img.align-right, figure.align-right, .figure.align-right, object.align-right {
+ clear: right;
+ float: right;
+ margin-left: 1em;
+}
+
+img.align-center, figure.align-center, .figure.align-center, object.align-center {
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+img.align-default, figure.align-default, .figure.align-default {
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.align-left {
+ text-align: left;
+}
+
+.align-center {
+ text-align: center;
+}
+
+.align-default {
+ text-align: center;
+}
+
+.align-right {
+ text-align: right;
+}
+
+/* -- sidebars -------------------------------------------------------------- */
+
+div.sidebar,
+aside.sidebar {
+ margin: 0 0 0.5em 1em;
+ border: 1px solid #ddb;
+ padding: 7px;
+ background-color: #ffe;
+ width: 40%;
+ float: right;
+ clear: right;
+ overflow-x: auto;
+}
+
+p.sidebar-title {
+ font-weight: bold;
+}
+
+nav.contents,
+aside.topic,
+div.admonition, div.topic, blockquote {
+ clear: left;
+}
+
+/* -- topics ---------------------------------------------------------------- */
+
+nav.contents,
+aside.topic,
+div.topic {
+ border: 1px solid #ccc;
+ padding: 7px;
+ margin: 10px 0 10px 0;
+}
+
+p.topic-title {
+ font-size: 1.1em;
+ font-weight: bold;
+ margin-top: 10px;
+}
+
+/* -- admonitions ----------------------------------------------------------- */
+
+div.admonition {
+ margin-top: 10px;
+ margin-bottom: 10px;
+ padding: 7px;
+}
+
+div.admonition dt {
+ font-weight: bold;
+}
+
+p.admonition-title {
+ margin: 0px 10px 5px 0px;
+ font-weight: bold;
+}
+
+div.body p.centered {
+ text-align: center;
+ margin-top: 25px;
+}
+
+/* -- content of sidebars/topics/admonitions -------------------------------- */
+
+div.sidebar > :last-child,
+aside.sidebar > :last-child,
+nav.contents > :last-child,
+aside.topic > :last-child,
+div.topic > :last-child,
+div.admonition > :last-child {
+ margin-bottom: 0;
+}
+
+div.sidebar::after,
+aside.sidebar::after,
+nav.contents::after,
+aside.topic::after,
+div.topic::after,
+div.admonition::after,
+blockquote::after {
+ display: block;
+ content: '';
+ clear: both;
+}
+
+/* -- tables ---------------------------------------------------------------- */
+
+table.docutils {
+ margin-top: 10px;
+ margin-bottom: 10px;
+ border: 0;
+ border-collapse: collapse;
+}
+
+table.align-center {
+ margin-left: auto;
+ margin-right: auto;
+}
+
+table.align-default {
+ margin-left: auto;
+ margin-right: auto;
+}
+
+table caption span.caption-number {
+ font-style: italic;
+}
+
+table caption span.caption-text {
+}
+
+table.docutils td, table.docutils th {
+ padding: 1px 8px 1px 5px;
+ border-top: 0;
+ border-left: 0;
+ border-right: 0;
+ border-bottom: 1px solid #aaa;
+}
+
+th {
+ text-align: left;
+ padding-right: 5px;
+}
+
+table.citation {
+ border-left: solid 1px gray;
+ margin-left: 1px;
+}
+
+table.citation td {
+ border-bottom: none;
+}
+
+th > :first-child,
+td > :first-child {
+ margin-top: 0px;
+}
+
+th > :last-child,
+td > :last-child {
+ margin-bottom: 0px;
+}
+
+/* -- figures --------------------------------------------------------------- */
+
+div.figure, figure {
+ margin: 0.5em;
+ padding: 0.5em;
+}
+
+div.figure p.caption, figcaption {
+ padding: 0.3em;
+}
+
+div.figure p.caption span.caption-number,
+figcaption span.caption-number {
+ font-style: italic;
+}
+
+div.figure p.caption span.caption-text,
+figcaption span.caption-text {
+}
+
+/* -- field list styles ----------------------------------------------------- */
+
+table.field-list td, table.field-list th {
+ border: 0 !important;
+}
+
+.field-list ul {
+ margin: 0;
+ padding-left: 1em;
+}
+
+.field-list p {
+ margin: 0;
+}
+
+.field-name {
+ -moz-hyphens: manual;
+ -ms-hyphens: manual;
+ -webkit-hyphens: manual;
+ hyphens: manual;
+}
+
+/* -- hlist styles ---------------------------------------------------------- */
+
+table.hlist {
+ margin: 1em 0;
+}
+
+table.hlist td {
+ vertical-align: top;
+}
+
+/* -- object description styles --------------------------------------------- */
+
+.sig {
+ font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace;
+}
+
+.sig-name, code.descname {
+ background-color: transparent;
+ font-weight: bold;
+}
+
+.sig-name {
+ font-size: 1.1em;
+}
+
+code.descname {
+ font-size: 1.2em;
+}
+
+.sig-prename, code.descclassname {
+ background-color: transparent;
+}
+
+.optional {
+ font-size: 1.3em;
+}
+
+.sig-paren {
+ font-size: larger;
+}
+
+.sig-param.n {
+ font-style: italic;
+}
+
+/* C++ specific styling */
+
+.sig-inline.c-texpr,
+.sig-inline.cpp-texpr {
+ font-family: unset;
+}
+
+.sig.c .k, .sig.c .kt,
+.sig.cpp .k, .sig.cpp .kt {
+ color: #0033B3;
+}
+
+.sig.c .m,
+.sig.cpp .m {
+ color: #1750EB;
+}
+
+.sig.c .s, .sig.c .sc,
+.sig.cpp .s, .sig.cpp .sc {
+ color: #067D17;
+}
+
+
+/* -- other body styles ----------------------------------------------------- */
+
+ol.arabic {
+ list-style: decimal;
+}
+
+ol.loweralpha {
+ list-style: lower-alpha;
+}
+
+ol.upperalpha {
+ list-style: upper-alpha;
+}
+
+ol.lowerroman {
+ list-style: lower-roman;
+}
+
+ol.upperroman {
+ list-style: upper-roman;
+}
+
+:not(li) > ol > li:first-child > :first-child,
+:not(li) > ul > li:first-child > :first-child {
+ margin-top: 0px;
+}
+
+:not(li) > ol > li:last-child > :last-child,
+:not(li) > ul > li:last-child > :last-child {
+ margin-bottom: 0px;
+}
+
+ol.simple ol p,
+ol.simple ul p,
+ul.simple ol p,
+ul.simple ul p {
+ margin-top: 0;
+}
+
+ol.simple > li:not(:first-child) > p,
+ul.simple > li:not(:first-child) > p {
+ margin-top: 0;
+}
+
+ol.simple p,
+ul.simple p {
+ margin-bottom: 0;
+}
+
+aside.footnote > span,
+div.citation > span {
+ float: left;
+}
+aside.footnote > span:last-of-type,
+div.citation > span:last-of-type {
+ padding-right: 0.5em;
+}
+aside.footnote > p {
+ margin-left: 2em;
+}
+div.citation > p {
+ margin-left: 4em;
+}
+aside.footnote > p:last-of-type,
+div.citation > p:last-of-type {
+ margin-bottom: 0em;
+}
+aside.footnote > p:last-of-type:after,
+div.citation > p:last-of-type:after {
+ content: "";
+ clear: both;
+}
+
+dl.field-list {
+ display: grid;
+ grid-template-columns: fit-content(30%) auto;
+}
+
+dl.field-list > dt {
+ font-weight: bold;
+ word-break: break-word;
+ padding-left: 0.5em;
+ padding-right: 5px;
+}
+
+dl.field-list > dd {
+ padding-left: 0.5em;
+ margin-top: 0em;
+ margin-left: 0em;
+ margin-bottom: 0em;
+}
+
+dl {
+ margin-bottom: 15px;
+}
+
+dd > :first-child {
+ margin-top: 0px;
+}
+
+dd ul, dd table {
+ margin-bottom: 10px;
+}
+
+dd {
+ margin-top: 3px;
+ margin-bottom: 10px;
+ margin-left: 30px;
+}
+
+.sig dd {
+ margin-top: 0px;
+ margin-bottom: 0px;
+}
+
+.sig dl {
+ margin-top: 0px;
+ margin-bottom: 0px;
+}
+
+dl > dd:last-child,
+dl > dd:last-child > :last-child {
+ margin-bottom: 0;
+}
+
+dt:target, span.highlighted {
+ background-color: #fbe54e;
+}
+
+rect.highlighted {
+ fill: #fbe54e;
+}
+
+dl.glossary dt {
+ font-weight: bold;
+ font-size: 1.1em;
+}
+
+.versionmodified {
+ font-style: italic;
+}
+
+.system-message {
+ background-color: #fda;
+ padding: 5px;
+ border: 3px solid red;
+}
+
+.footnote:target {
+ background-color: #ffa;
+}
+
+.line-block {
+ display: block;
+ margin-top: 1em;
+ margin-bottom: 1em;
+}
+
+.line-block .line-block {
+ margin-top: 0;
+ margin-bottom: 0;
+ margin-left: 1.5em;
+}
+
+.guilabel, .menuselection {
+ font-family: sans-serif;
+}
+
+.accelerator {
+ text-decoration: underline;
+}
+
+.classifier {
+ font-style: oblique;
+}
+
+.classifier:before {
+ font-style: normal;
+ margin: 0 0.5em;
+ content: ":";
+ display: inline-block;
+}
+
+abbr, acronym {
+ border-bottom: dotted 1px;
+ cursor: help;
+}
+
+.translated {
+ background-color: rgba(207, 255, 207, 0.2)
+}
+
+.untranslated {
+ background-color: rgba(255, 207, 207, 0.2)
+}
+
+/* -- code displays --------------------------------------------------------- */
+
+pre {
+ overflow: auto;
+ overflow-y: hidden; /* fixes display issues on Chrome browsers */
+}
+
+pre, div[class*="highlight-"] {
+ clear: both;
+}
+
+span.pre {
+ -moz-hyphens: none;
+ -ms-hyphens: none;
+ -webkit-hyphens: none;
+ hyphens: none;
+ white-space: nowrap;
+}
+
+div[class*="highlight-"] {
+ margin: 1em 0;
+}
+
+td.linenos pre {
+ border: 0;
+ background-color: transparent;
+ color: #aaa;
+}
+
+table.highlighttable {
+ display: block;
+}
+
+table.highlighttable tbody {
+ display: block;
+}
+
+table.highlighttable tr {
+ display: flex;
+}
+
+table.highlighttable td {
+ margin: 0;
+ padding: 0;
+}
+
+table.highlighttable td.linenos {
+ padding-right: 0.5em;
+}
+
+table.highlighttable td.code {
+ flex: 1;
+ overflow: hidden;
+}
+
+.highlight .hll {
+ display: block;
+}
+
+div.highlight pre,
+table.highlighttable pre {
+ margin: 0;
+}
+
+div.code-block-caption + div {
+ margin-top: 0;
+}
+
+div.code-block-caption {
+ margin-top: 1em;
+ padding: 2px 5px;
+ font-size: small;
+}
+
+div.code-block-caption code {
+ background-color: transparent;
+}
+
+table.highlighttable td.linenos,
+span.linenos,
+div.highlight span.gp { /* gp: Generic.Prompt */
+ user-select: none;
+ -webkit-user-select: text; /* Safari fallback only */
+ -webkit-user-select: none; /* Chrome/Safari */
+ -moz-user-select: none; /* Firefox */
+ -ms-user-select: none; /* IE10+ */
+}
+
+div.code-block-caption span.caption-number {
+ padding: 0.1em 0.3em;
+ font-style: italic;
+}
+
+div.code-block-caption span.caption-text {
+}
+
+div.literal-block-wrapper {
+ margin: 1em 0;
+}
+
+code.xref, a code {
+ background-color: transparent;
+ font-weight: bold;
+}
+
+h1 code, h2 code, h3 code, h4 code, h5 code, h6 code {
+ background-color: transparent;
+}
+
+.viewcode-link {
+ float: right;
+}
+
+.viewcode-back {
+ float: right;
+ font-family: sans-serif;
+}
+
+div.viewcode-block:target {
+ margin: -1px -10px;
+ padding: 0 10px;
+}
+
+/* -- math display ---------------------------------------------------------- */
+
+img.math {
+ vertical-align: middle;
+}
+
+div.body div.math p {
+ text-align: center;
+}
+
+span.eqno {
+ float: right;
+}
+
+span.eqno a.headerlink {
+ position: absolute;
+ z-index: 1;
+}
+
+div.math:hover a.headerlink {
+ visibility: visible;
+}
+
+/* -- printout stylesheet --------------------------------------------------- */
+
+@media print {
+ div.document,
+ div.documentwrapper,
+ div.bodywrapper {
+ margin: 0 !important;
+ width: 100%;
+ }
+
+ div.sphinxsidebar,
+ div.related,
+ div.footer,
+ #top-link {
+ display: none;
+ }
+}
\ No newline at end of file
diff --git a/devel/_static/doctools.js b/devel/_static/doctools.js
new file mode 100644
index 0000000..d06a71d
--- /dev/null
+++ b/devel/_static/doctools.js
@@ -0,0 +1,156 @@
+/*
+ * doctools.js
+ * ~~~~~~~~~~~
+ *
+ * Base JavaScript utilities for all Sphinx HTML documentation.
+ *
+ * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+"use strict";
+
+const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([
+ "TEXTAREA",
+ "INPUT",
+ "SELECT",
+ "BUTTON",
+]);
+
+const _ready = (callback) => {
+ if (document.readyState !== "loading") {
+ callback();
+ } else {
+ document.addEventListener("DOMContentLoaded", callback);
+ }
+};
+
+/**
+ * Small JavaScript module for the documentation.
+ */
+const Documentation = {
+ init: () => {
+ Documentation.initDomainIndexTable();
+ Documentation.initOnKeyListeners();
+ },
+
+ /**
+ * i18n support
+ */
+ TRANSLATIONS: {},
+ PLURAL_EXPR: (n) => (n === 1 ? 0 : 1),
+ LOCALE: "unknown",
+
+ // gettext and ngettext don't access this so that the functions
+ // can safely bound to a different name (_ = Documentation.gettext)
+ gettext: (string) => {
+ const translated = Documentation.TRANSLATIONS[string];
+ switch (typeof translated) {
+ case "undefined":
+ return string; // no translation
+ case "string":
+ return translated; // translation exists
+ default:
+ return translated[0]; // (singular, plural) translation tuple exists
+ }
+ },
+
+ ngettext: (singular, plural, n) => {
+ const translated = Documentation.TRANSLATIONS[singular];
+ if (typeof translated !== "undefined")
+ return translated[Documentation.PLURAL_EXPR(n)];
+ return n === 1 ? singular : plural;
+ },
+
+ addTranslations: (catalog) => {
+ Object.assign(Documentation.TRANSLATIONS, catalog.messages);
+ Documentation.PLURAL_EXPR = new Function(
+ "n",
+ `return (${catalog.plural_expr})`
+ );
+ Documentation.LOCALE = catalog.locale;
+ },
+
+ /**
+ * helper function to focus on search bar
+ */
+ focusSearchBar: () => {
+ document.querySelectorAll("input[name=q]")[0]?.focus();
+ },
+
+ /**
+ * Initialise the domain index toggle buttons
+ */
+ initDomainIndexTable: () => {
+ const toggler = (el) => {
+ const idNumber = el.id.substr(7);
+ const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`);
+ if (el.src.substr(-9) === "minus.png") {
+ el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`;
+ toggledRows.forEach((el) => (el.style.display = "none"));
+ } else {
+ el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`;
+ toggledRows.forEach((el) => (el.style.display = ""));
+ }
+ };
+
+ const togglerElements = document.querySelectorAll("img.toggler");
+ togglerElements.forEach((el) =>
+ el.addEventListener("click", (event) => toggler(event.currentTarget))
+ );
+ togglerElements.forEach((el) => (el.style.display = ""));
+ if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler);
+ },
+
+ initOnKeyListeners: () => {
+ // only install a listener if it is really needed
+ if (
+ !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS &&
+ !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS
+ )
+ return;
+
+ document.addEventListener("keydown", (event) => {
+ // bail for input elements
+ if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return;
+ // bail with special keys
+ if (event.altKey || event.ctrlKey || event.metaKey) return;
+
+ if (!event.shiftKey) {
+ switch (event.key) {
+ case "ArrowLeft":
+ if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break;
+
+ const prevLink = document.querySelector('link[rel="prev"]');
+ if (prevLink && prevLink.href) {
+ window.location.href = prevLink.href;
+ event.preventDefault();
+ }
+ break;
+ case "ArrowRight":
+ if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break;
+
+ const nextLink = document.querySelector('link[rel="next"]');
+ if (nextLink && nextLink.href) {
+ window.location.href = nextLink.href;
+ event.preventDefault();
+ }
+ break;
+ }
+ }
+
+ // some keyboard layouts may need Shift to get /
+ switch (event.key) {
+ case "/":
+ if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break;
+ Documentation.focusSearchBar();
+ event.preventDefault();
+ }
+ });
+ },
+};
+
+// quick alias for translations
+const _ = Documentation.gettext;
+
+_ready(Documentation.init);
diff --git a/devel/_static/documentation_options.js b/devel/_static/documentation_options.js
new file mode 100644
index 0000000..606c5b5
--- /dev/null
+++ b/devel/_static/documentation_options.js
@@ -0,0 +1,13 @@
+const DOCUMENTATION_OPTIONS = {
+ VERSION: '0.1.0',
+ LANGUAGE: 'en',
+ COLLAPSE_INDEX: false,
+ BUILDER: 'html',
+ FILE_SUFFIX: '.html',
+ LINK_SUFFIX: '.html',
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt',
+ NAVIGATION_WITH_KEYS: true,
+ SHOW_SEARCH_SUMMARY: true,
+ ENABLE_SEARCH_SHORTCUTS: true,
+};
\ No newline at end of file
diff --git a/devel/_static/file.png b/devel/_static/file.png
new file mode 100644
index 0000000..a858a41
Binary files /dev/null and b/devel/_static/file.png differ
diff --git a/devel/_static/language_data.js b/devel/_static/language_data.js
new file mode 100644
index 0000000..250f566
--- /dev/null
+++ b/devel/_static/language_data.js
@@ -0,0 +1,199 @@
+/*
+ * language_data.js
+ * ~~~~~~~~~~~~~~~~
+ *
+ * This script contains the language-specific data used by searchtools.js,
+ * namely the list of stopwords, stemmer, scorer and splitter.
+ *
+ * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"];
+
+
+/* Non-minified version is copied as a separate JS file, is available */
+
+/**
+ * Porter Stemmer
+ */
+var Stemmer = function() {
+
+ var step2list = {
+ ational: 'ate',
+ tional: 'tion',
+ enci: 'ence',
+ anci: 'ance',
+ izer: 'ize',
+ bli: 'ble',
+ alli: 'al',
+ entli: 'ent',
+ eli: 'e',
+ ousli: 'ous',
+ ization: 'ize',
+ ation: 'ate',
+ ator: 'ate',
+ alism: 'al',
+ iveness: 'ive',
+ fulness: 'ful',
+ ousness: 'ous',
+ aliti: 'al',
+ iviti: 'ive',
+ biliti: 'ble',
+ logi: 'log'
+ };
+
+ var step3list = {
+ icate: 'ic',
+ ative: '',
+ alize: 'al',
+ iciti: 'ic',
+ ical: 'ic',
+ ful: '',
+ ness: ''
+ };
+
+ var c = "[^aeiou]"; // consonant
+ var v = "[aeiouy]"; // vowel
+ var C = c + "[^aeiouy]*"; // consonant sequence
+ var V = v + "[aeiou]*"; // vowel sequence
+
+ var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0
+ var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1
+ var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1
+ var s_v = "^(" + C + ")?" + v; // vowel in stem
+
+ this.stemWord = function (w) {
+ var stem;
+ var suffix;
+ var firstch;
+ var origword = w;
+
+ if (w.length < 3)
+ return w;
+
+ var re;
+ var re2;
+ var re3;
+ var re4;
+
+ firstch = w.substr(0,1);
+ if (firstch == "y")
+ w = firstch.toUpperCase() + w.substr(1);
+
+ // Step 1a
+ re = /^(.+?)(ss|i)es$/;
+ re2 = /^(.+?)([^s])s$/;
+
+ if (re.test(w))
+ w = w.replace(re,"$1$2");
+ else if (re2.test(w))
+ w = w.replace(re2,"$1$2");
+
+ // Step 1b
+ re = /^(.+?)eed$/;
+ re2 = /^(.+?)(ed|ing)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ re = new RegExp(mgr0);
+ if (re.test(fp[1])) {
+ re = /.$/;
+ w = w.replace(re,"");
+ }
+ }
+ else if (re2.test(w)) {
+ var fp = re2.exec(w);
+ stem = fp[1];
+ re2 = new RegExp(s_v);
+ if (re2.test(stem)) {
+ w = stem;
+ re2 = /(at|bl|iz)$/;
+ re3 = new RegExp("([^aeiouylsz])\\1$");
+ re4 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+ if (re2.test(w))
+ w = w + "e";
+ else if (re3.test(w)) {
+ re = /.$/;
+ w = w.replace(re,"");
+ }
+ else if (re4.test(w))
+ w = w + "e";
+ }
+ }
+
+ // Step 1c
+ re = /^(.+?)y$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ re = new RegExp(s_v);
+ if (re.test(stem))
+ w = stem + "i";
+ }
+
+ // Step 2
+ re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ suffix = fp[2];
+ re = new RegExp(mgr0);
+ if (re.test(stem))
+ w = stem + step2list[suffix];
+ }
+
+ // Step 3
+ re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ suffix = fp[2];
+ re = new RegExp(mgr0);
+ if (re.test(stem))
+ w = stem + step3list[suffix];
+ }
+
+ // Step 4
+ re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;
+ re2 = /^(.+?)(s|t)(ion)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ re = new RegExp(mgr1);
+ if (re.test(stem))
+ w = stem;
+ }
+ else if (re2.test(w)) {
+ var fp = re2.exec(w);
+ stem = fp[1] + fp[2];
+ re2 = new RegExp(mgr1);
+ if (re2.test(stem))
+ w = stem;
+ }
+
+ // Step 5
+ re = /^(.+?)e$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ re = new RegExp(mgr1);
+ re2 = new RegExp(meq1);
+ re3 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+ if (re.test(stem) || (re2.test(stem) && !(re3.test(stem))))
+ w = stem;
+ }
+ re = /ll$/;
+ re2 = new RegExp(mgr1);
+ if (re.test(w) && re2.test(w)) {
+ re = /.$/;
+ w = w.replace(re,"");
+ }
+
+ // and turn initial Y back to y
+ if (firstch == "y")
+ w = firstch.toLowerCase() + w.substr(1);
+ return w;
+ }
+}
+
diff --git a/devel/_static/logo-dark.png b/devel/_static/logo-dark.png
new file mode 100644
index 0000000..1cf65f0
Binary files /dev/null and b/devel/_static/logo-dark.png differ
diff --git a/devel/_static/logo-light.png b/devel/_static/logo-light.png
new file mode 100644
index 0000000..ccf6c61
Binary files /dev/null and b/devel/_static/logo-light.png differ
diff --git a/devel/_static/minus.png b/devel/_static/minus.png
new file mode 100644
index 0000000..d96755f
Binary files /dev/null and b/devel/_static/minus.png differ
diff --git a/devel/_static/plus.png b/devel/_static/plus.png
new file mode 100644
index 0000000..7107cec
Binary files /dev/null and b/devel/_static/plus.png differ
diff --git a/devel/_static/pygments.css b/devel/_static/pygments.css
new file mode 100644
index 0000000..997797f
--- /dev/null
+++ b/devel/_static/pygments.css
@@ -0,0 +1,152 @@
+html[data-theme="light"] .highlight pre { line-height: 125%; }
+html[data-theme="light"] .highlight td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
+html[data-theme="light"] .highlight span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
+html[data-theme="light"] .highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
+html[data-theme="light"] .highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
+html[data-theme="light"] .highlight .hll { background-color: #7971292e }
+html[data-theme="light"] .highlight { background: #fefefe; color: #545454 }
+html[data-theme="light"] .highlight .c { color: #797129 } /* Comment */
+html[data-theme="light"] .highlight .err { color: #d91e18 } /* Error */
+html[data-theme="light"] .highlight .k { color: #7928a1 } /* Keyword */
+html[data-theme="light"] .highlight .l { color: #797129 } /* Literal */
+html[data-theme="light"] .highlight .n { color: #545454 } /* Name */
+html[data-theme="light"] .highlight .o { color: #008000 } /* Operator */
+html[data-theme="light"] .highlight .p { color: #545454 } /* Punctuation */
+html[data-theme="light"] .highlight .ch { color: #797129 } /* Comment.Hashbang */
+html[data-theme="light"] .highlight .cm { color: #797129 } /* Comment.Multiline */
+html[data-theme="light"] .highlight .cp { color: #797129 } /* Comment.Preproc */
+html[data-theme="light"] .highlight .cpf { color: #797129 } /* Comment.PreprocFile */
+html[data-theme="light"] .highlight .c1 { color: #797129 } /* Comment.Single */
+html[data-theme="light"] .highlight .cs { color: #797129 } /* Comment.Special */
+html[data-theme="light"] .highlight .gd { color: #007faa } /* Generic.Deleted */
+html[data-theme="light"] .highlight .ge { font-style: italic } /* Generic.Emph */
+html[data-theme="light"] .highlight .gh { color: #007faa } /* Generic.Heading */
+html[data-theme="light"] .highlight .gs { font-weight: bold } /* Generic.Strong */
+html[data-theme="light"] .highlight .gu { color: #007faa } /* Generic.Subheading */
+html[data-theme="light"] .highlight .kc { color: #7928a1 } /* Keyword.Constant */
+html[data-theme="light"] .highlight .kd { color: #7928a1 } /* Keyword.Declaration */
+html[data-theme="light"] .highlight .kn { color: #7928a1 } /* Keyword.Namespace */
+html[data-theme="light"] .highlight .kp { color: #7928a1 } /* Keyword.Pseudo */
+html[data-theme="light"] .highlight .kr { color: #7928a1 } /* Keyword.Reserved */
+html[data-theme="light"] .highlight .kt { color: #797129 } /* Keyword.Type */
+html[data-theme="light"] .highlight .ld { color: #797129 } /* Literal.Date */
+html[data-theme="light"] .highlight .m { color: #797129 } /* Literal.Number */
+html[data-theme="light"] .highlight .s { color: #008000 } /* Literal.String */
+html[data-theme="light"] .highlight .na { color: #797129 } /* Name.Attribute */
+html[data-theme="light"] .highlight .nb { color: #797129 } /* Name.Builtin */
+html[data-theme="light"] .highlight .nc { color: #007faa } /* Name.Class */
+html[data-theme="light"] .highlight .no { color: #007faa } /* Name.Constant */
+html[data-theme="light"] .highlight .nd { color: #797129 } /* Name.Decorator */
+html[data-theme="light"] .highlight .ni { color: #008000 } /* Name.Entity */
+html[data-theme="light"] .highlight .ne { color: #7928a1 } /* Name.Exception */
+html[data-theme="light"] .highlight .nf { color: #007faa } /* Name.Function */
+html[data-theme="light"] .highlight .nl { color: #797129 } /* Name.Label */
+html[data-theme="light"] .highlight .nn { color: #545454 } /* Name.Namespace */
+html[data-theme="light"] .highlight .nx { color: #545454 } /* Name.Other */
+html[data-theme="light"] .highlight .py { color: #007faa } /* Name.Property */
+html[data-theme="light"] .highlight .nt { color: #007faa } /* Name.Tag */
+html[data-theme="light"] .highlight .nv { color: #d91e18 } /* Name.Variable */
+html[data-theme="light"] .highlight .ow { color: #7928a1 } /* Operator.Word */
+html[data-theme="light"] .highlight .pm { color: #545454 } /* Punctuation.Marker */
+html[data-theme="light"] .highlight .w { color: #545454 } /* Text.Whitespace */
+html[data-theme="light"] .highlight .mb { color: #797129 } /* Literal.Number.Bin */
+html[data-theme="light"] .highlight .mf { color: #797129 } /* Literal.Number.Float */
+html[data-theme="light"] .highlight .mh { color: #797129 } /* Literal.Number.Hex */
+html[data-theme="light"] .highlight .mi { color: #797129 } /* Literal.Number.Integer */
+html[data-theme="light"] .highlight .mo { color: #797129 } /* Literal.Number.Oct */
+html[data-theme="light"] .highlight .sa { color: #008000 } /* Literal.String.Affix */
+html[data-theme="light"] .highlight .sb { color: #008000 } /* Literal.String.Backtick */
+html[data-theme="light"] .highlight .sc { color: #008000 } /* Literal.String.Char */
+html[data-theme="light"] .highlight .dl { color: #008000 } /* Literal.String.Delimiter */
+html[data-theme="light"] .highlight .sd { color: #008000 } /* Literal.String.Doc */
+html[data-theme="light"] .highlight .s2 { color: #008000 } /* Literal.String.Double */
+html[data-theme="light"] .highlight .se { color: #008000 } /* Literal.String.Escape */
+html[data-theme="light"] .highlight .sh { color: #008000 } /* Literal.String.Heredoc */
+html[data-theme="light"] .highlight .si { color: #008000 } /* Literal.String.Interpol */
+html[data-theme="light"] .highlight .sx { color: #008000 } /* Literal.String.Other */
+html[data-theme="light"] .highlight .sr { color: #d91e18 } /* Literal.String.Regex */
+html[data-theme="light"] .highlight .s1 { color: #008000 } /* Literal.String.Single */
+html[data-theme="light"] .highlight .ss { color: #007faa } /* Literal.String.Symbol */
+html[data-theme="light"] .highlight .bp { color: #797129 } /* Name.Builtin.Pseudo */
+html[data-theme="light"] .highlight .fm { color: #007faa } /* Name.Function.Magic */
+html[data-theme="light"] .highlight .vc { color: #d91e18 } /* Name.Variable.Class */
+html[data-theme="light"] .highlight .vg { color: #d91e18 } /* Name.Variable.Global */
+html[data-theme="light"] .highlight .vi { color: #d91e18 } /* Name.Variable.Instance */
+html[data-theme="light"] .highlight .vm { color: #797129 } /* Name.Variable.Magic */
+html[data-theme="light"] .highlight .il { color: #797129 } /* Literal.Number.Integer.Long */
+html[data-theme="dark"] .highlight pre { line-height: 125%; }
+html[data-theme="dark"] .highlight td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
+html[data-theme="dark"] .highlight span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
+html[data-theme="dark"] .highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
+html[data-theme="dark"] .highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
+html[data-theme="dark"] .highlight .hll { background-color: #ffd9002e }
+html[data-theme="dark"] .highlight { background: #2b2b2b; color: #f8f8f2 }
+html[data-theme="dark"] .highlight .c { color: #ffd900 } /* Comment */
+html[data-theme="dark"] .highlight .err { color: #ffa07a } /* Error */
+html[data-theme="dark"] .highlight .k { color: #dcc6e0 } /* Keyword */
+html[data-theme="dark"] .highlight .l { color: #ffd900 } /* Literal */
+html[data-theme="dark"] .highlight .n { color: #f8f8f2 } /* Name */
+html[data-theme="dark"] .highlight .o { color: #abe338 } /* Operator */
+html[data-theme="dark"] .highlight .p { color: #f8f8f2 } /* Punctuation */
+html[data-theme="dark"] .highlight .ch { color: #ffd900 } /* Comment.Hashbang */
+html[data-theme="dark"] .highlight .cm { color: #ffd900 } /* Comment.Multiline */
+html[data-theme="dark"] .highlight .cp { color: #ffd900 } /* Comment.Preproc */
+html[data-theme="dark"] .highlight .cpf { color: #ffd900 } /* Comment.PreprocFile */
+html[data-theme="dark"] .highlight .c1 { color: #ffd900 } /* Comment.Single */
+html[data-theme="dark"] .highlight .cs { color: #ffd900 } /* Comment.Special */
+html[data-theme="dark"] .highlight .gd { color: #00e0e0 } /* Generic.Deleted */
+html[data-theme="dark"] .highlight .ge { font-style: italic } /* Generic.Emph */
+html[data-theme="dark"] .highlight .gh { color: #00e0e0 } /* Generic.Heading */
+html[data-theme="dark"] .highlight .gs { font-weight: bold } /* Generic.Strong */
+html[data-theme="dark"] .highlight .gu { color: #00e0e0 } /* Generic.Subheading */
+html[data-theme="dark"] .highlight .kc { color: #dcc6e0 } /* Keyword.Constant */
+html[data-theme="dark"] .highlight .kd { color: #dcc6e0 } /* Keyword.Declaration */
+html[data-theme="dark"] .highlight .kn { color: #dcc6e0 } /* Keyword.Namespace */
+html[data-theme="dark"] .highlight .kp { color: #dcc6e0 } /* Keyword.Pseudo */
+html[data-theme="dark"] .highlight .kr { color: #dcc6e0 } /* Keyword.Reserved */
+html[data-theme="dark"] .highlight .kt { color: #ffd900 } /* Keyword.Type */
+html[data-theme="dark"] .highlight .ld { color: #ffd900 } /* Literal.Date */
+html[data-theme="dark"] .highlight .m { color: #ffd900 } /* Literal.Number */
+html[data-theme="dark"] .highlight .s { color: #abe338 } /* Literal.String */
+html[data-theme="dark"] .highlight .na { color: #ffd900 } /* Name.Attribute */
+html[data-theme="dark"] .highlight .nb { color: #ffd900 } /* Name.Builtin */
+html[data-theme="dark"] .highlight .nc { color: #00e0e0 } /* Name.Class */
+html[data-theme="dark"] .highlight .no { color: #00e0e0 } /* Name.Constant */
+html[data-theme="dark"] .highlight .nd { color: #ffd900 } /* Name.Decorator */
+html[data-theme="dark"] .highlight .ni { color: #abe338 } /* Name.Entity */
+html[data-theme="dark"] .highlight .ne { color: #dcc6e0 } /* Name.Exception */
+html[data-theme="dark"] .highlight .nf { color: #00e0e0 } /* Name.Function */
+html[data-theme="dark"] .highlight .nl { color: #ffd900 } /* Name.Label */
+html[data-theme="dark"] .highlight .nn { color: #f8f8f2 } /* Name.Namespace */
+html[data-theme="dark"] .highlight .nx { color: #f8f8f2 } /* Name.Other */
+html[data-theme="dark"] .highlight .py { color: #00e0e0 } /* Name.Property */
+html[data-theme="dark"] .highlight .nt { color: #00e0e0 } /* Name.Tag */
+html[data-theme="dark"] .highlight .nv { color: #ffa07a } /* Name.Variable */
+html[data-theme="dark"] .highlight .ow { color: #dcc6e0 } /* Operator.Word */
+html[data-theme="dark"] .highlight .pm { color: #f8f8f2 } /* Punctuation.Marker */
+html[data-theme="dark"] .highlight .w { color: #f8f8f2 } /* Text.Whitespace */
+html[data-theme="dark"] .highlight .mb { color: #ffd900 } /* Literal.Number.Bin */
+html[data-theme="dark"] .highlight .mf { color: #ffd900 } /* Literal.Number.Float */
+html[data-theme="dark"] .highlight .mh { color: #ffd900 } /* Literal.Number.Hex */
+html[data-theme="dark"] .highlight .mi { color: #ffd900 } /* Literal.Number.Integer */
+html[data-theme="dark"] .highlight .mo { color: #ffd900 } /* Literal.Number.Oct */
+html[data-theme="dark"] .highlight .sa { color: #abe338 } /* Literal.String.Affix */
+html[data-theme="dark"] .highlight .sb { color: #abe338 } /* Literal.String.Backtick */
+html[data-theme="dark"] .highlight .sc { color: #abe338 } /* Literal.String.Char */
+html[data-theme="dark"] .highlight .dl { color: #abe338 } /* Literal.String.Delimiter */
+html[data-theme="dark"] .highlight .sd { color: #abe338 } /* Literal.String.Doc */
+html[data-theme="dark"] .highlight .s2 { color: #abe338 } /* Literal.String.Double */
+html[data-theme="dark"] .highlight .se { color: #abe338 } /* Literal.String.Escape */
+html[data-theme="dark"] .highlight .sh { color: #abe338 } /* Literal.String.Heredoc */
+html[data-theme="dark"] .highlight .si { color: #abe338 } /* Literal.String.Interpol */
+html[data-theme="dark"] .highlight .sx { color: #abe338 } /* Literal.String.Other */
+html[data-theme="dark"] .highlight .sr { color: #ffa07a } /* Literal.String.Regex */
+html[data-theme="dark"] .highlight .s1 { color: #abe338 } /* Literal.String.Single */
+html[data-theme="dark"] .highlight .ss { color: #00e0e0 } /* Literal.String.Symbol */
+html[data-theme="dark"] .highlight .bp { color: #ffd900 } /* Name.Builtin.Pseudo */
+html[data-theme="dark"] .highlight .fm { color: #00e0e0 } /* Name.Function.Magic */
+html[data-theme="dark"] .highlight .vc { color: #ffa07a } /* Name.Variable.Class */
+html[data-theme="dark"] .highlight .vg { color: #ffa07a } /* Name.Variable.Global */
+html[data-theme="dark"] .highlight .vi { color: #ffa07a } /* Name.Variable.Instance */
+html[data-theme="dark"] .highlight .vm { color: #ffd900 } /* Name.Variable.Magic */
+html[data-theme="dark"] .highlight .il { color: #ffd900 } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/devel/_static/scripts/bootstrap.js b/devel/_static/scripts/bootstrap.js
new file mode 100644
index 0000000..766173a
--- /dev/null
+++ b/devel/_static/scripts/bootstrap.js
@@ -0,0 +1,3 @@
+/*! For license information please see bootstrap.js.LICENSE.txt */
+(()=>{"use strict";var t={d:(e,i)=>{for(var n in i)t.o(i,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:i[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{afterMain:()=>w,afterRead:()=>b,afterWrite:()=>C,applyStyles:()=>$,arrow:()=>G,auto:()=>r,basePlacements:()=>a,beforeMain:()=>v,bef [...]
+//# sourceMappingURL=bootstrap.js.map
\ No newline at end of file
diff --git a/devel/_static/scripts/bootstrap.js.LICENSE.txt b/devel/_static/scripts/bootstrap.js.LICENSE.txt
new file mode 100644
index 0000000..91ad10a
--- /dev/null
+++ b/devel/_static/scripts/bootstrap.js.LICENSE.txt
@@ -0,0 +1,5 @@
+/*!
+ * Bootstrap v5.2.3 (https://getbootstrap.com/)
+ * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ */
diff --git a/devel/_static/scripts/bootstrap.js.map b/devel/_static/scripts/bootstrap.js.map
new file mode 100644
index 0000000..d83e2f7
--- /dev/null
+++ b/devel/_static/scripts/bootstrap.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"scripts/bootstrap.js","mappings":";mBACA,IAAIA,EAAsB,CCA1BA,EAAwB,CAACC,EAASC,KACjC,IAAI,IAAIC,KAAOD,EACXF,EAAoBI,EAAEF,EAAYC,KAASH,EAAoBI,EAAEH,EAASE,IAC5EE,OAAOC,eAAeL,EAASE,EAAK,CAAEI,YAAY,EAAMC,IAAKN,EAAWC,IAE1E,ECNDH,EAAwB,CAACS,EAAKC,IAAUL,OAAOM,UAAUC,eAAeC,KAAKJ,EAAKC,GCClFV,EAAyBC,IACH,oBAAXa,QAA0BA,OAAOC,aAC1CV,OAAOC,eAAeL,EAASa,OAAOC,YAAa,CAAEC,MAAO,WAE7DX,OAAOC,eAAeL,EAAS,aAAc,CAAEe,OAAO,GAAO,ipBCLvD,IAAI,EAAM,MACNC,EAAS,SACTC,EAAQ,QACRC,EAAO,OACPC,EAAO,OA [...]
\ No newline at end of file
diff --git a/devel/_static/scripts/pydata-sphinx-theme.js b/devel/_static/scripts/pydata-sphinx-theme.js
new file mode 100644
index 0000000..3cbeb9b
--- /dev/null
+++ b/devel/_static/scripts/pydata-sphinx-theme.js
@@ -0,0 +1,2 @@
+(()=>{"use strict";function e(e){"loading"!=document.readyState?e():document.addEventListener("DOMContentLoaded",e)}var t=window.matchMedia("(prefers-color-scheme: dark)");function o(e){document.documentElement.dataset.theme=t.matches?"dark":"light"}function n(e){"light"!==e&&"dark"!==e&&"auto"!==e&&(console.error(`Got invalid theme mode: ${e}. Resetting to auto.`),e="auto");var n=t.matches?"dark":"light";document.documentElement.dataset.mode=e;var r="auto"==e?n:e;document.documentElemen [...]
+//# sourceMappingURL=pydata-sphinx-theme.js.map
\ No newline at end of file
diff --git a/devel/_static/scripts/pydata-sphinx-theme.js.map b/devel/_static/scripts/pydata-sphinx-theme.js.map
new file mode 100644
index 0000000..418212a
--- /dev/null
+++ b/devel/_static/scripts/pydata-sphinx-theme.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"scripts/pydata-sphinx-theme.js","mappings":"mBASO,SAASA,EAAcC,GACD,WAAvBC,SAASC,WAAyBF,IACjCC,SAASE,iBAAiB,mBAAoBH,EACrD,CCHA,IAAII,EAAcC,OAAOC,WAAW,gCAOpC,SAASC,EAAUC,GACjBP,SAASQ,gBAAgBC,QAAQC,MAAQP,EAAYQ,QACjD,OACA,OACN,CAQA,SAASC,EAASC,GACH,UAATA,GAA6B,SAATA,GAA4B,SAATA,IACzCC,QAAQC,MAAM,2BAA2BF,yBACzCA,EAAO,QAIT,IAAIG,EAAcb,EAAYQ,QAAU,OAAS,QACjDX,SAASQ,gBAAgBC,QAAQI,KAAOA,EACxC,IAAIH,EAAgB,QAARG,EAAiBG,EAAcH,EAC3Cb,SAASQ,gBAAgBC,QAAQC,MAAQA,EAGzCO,aAAaC,QAAQ,OAA [...]
\ No newline at end of file
diff --git a/devel/_static/searchtools.js b/devel/_static/searchtools.js
new file mode 100644
index 0000000..7918c3f
--- /dev/null
+++ b/devel/_static/searchtools.js
@@ -0,0 +1,574 @@
+/*
+ * searchtools.js
+ * ~~~~~~~~~~~~~~~~
+ *
+ * Sphinx JavaScript utilities for the full-text search.
+ *
+ * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+"use strict";
+
+/**
+ * Simple result scoring code.
+ */
+if (typeof Scorer === "undefined") {
+ var Scorer = {
+ // Implement the following function to further tweak the score for each result
+ // The function takes a result array [docname, title, anchor, descr, score, filename]
+ // and returns the new score.
+ /*
+ score: result => {
+ const [docname, title, anchor, descr, score, filename] = result
+ return score
+ },
+ */
+
+ // query matches the full name of an object
+ objNameMatch: 11,
+ // or matches in the last dotted part of the object name
+ objPartialMatch: 6,
+ // Additive scores depending on the priority of the object
+ objPrio: {
+ 0: 15, // used to be importantResults
+ 1: 5, // used to be objectResults
+ 2: -5, // used to be unimportantResults
+ },
+ // Used when the priority is not in the mapping.
+ objPrioDefault: 0,
+
+ // query found in title
+ title: 15,
+ partialTitle: 7,
+ // query found in terms
+ term: 5,
+ partialTerm: 2,
+ };
+}
+
+const _removeChildren = (element) => {
+ while (element && element.lastChild) element.removeChild(element.lastChild);
+};
+
+/**
+ * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping
+ */
+const _escapeRegExp = (string) =>
+ string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string
+
+const _displayItem = (item, searchTerms, highlightTerms) => {
+ const docBuilder = DOCUMENTATION_OPTIONS.BUILDER;
+ const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX;
+ const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX;
+ const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY;
+ const contentRoot = document.documentElement.dataset.content_root;
+
+ const [docName, title, anchor, descr, score, _filename] = item;
+
+ let listItem = document.createElement("li");
+ let requestUrl;
+ let linkUrl;
+ if (docBuilder === "dirhtml") {
+ // dirhtml builder
+ let dirname = docName + "/";
+ if (dirname.match(/\/index\/$/))
+ dirname = dirname.substring(0, dirname.length - 6);
+ else if (dirname === "index/") dirname = "";
+ requestUrl = contentRoot + dirname;
+ linkUrl = requestUrl;
+ } else {
+ // normal html builders
+ requestUrl = contentRoot + docName + docFileSuffix;
+ linkUrl = docName + docLinkSuffix;
+ }
+ let linkEl = listItem.appendChild(document.createElement("a"));
+ linkEl.href = linkUrl + anchor;
+ linkEl.dataset.score = score;
+ linkEl.innerHTML = title;
+ if (descr) {
+ listItem.appendChild(document.createElement("span")).innerHTML =
+ " (" + descr + ")";
+ // highlight search terms in the description
+ if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js
+ highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted"));
+ }
+ else if (showSearchSummary)
+ fetch(requestUrl)
+ .then((responseData) => responseData.text())
+ .then((data) => {
+ if (data)
+ listItem.appendChild(
+ Search.makeSearchSummary(data, searchTerms)
+ );
+ // highlight search terms in the summary
+ if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js
+ highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted"));
+ });
+ Search.output.appendChild(listItem);
+};
+const _finishSearch = (resultCount) => {
+ Search.stopPulse();
+ Search.title.innerText = _("Search Results");
+ if (!resultCount)
+ Search.status.innerText = Documentation.gettext(
+ "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories."
+ );
+ else
+ Search.status.innerText = _(
+ `Search finished, found ${resultCount} page(s) matching the search query.`
+ );
+};
+const _displayNextItem = (
+ results,
+ resultCount,
+ searchTerms,
+ highlightTerms,
+) => {
+ // results left, load the summary and display it
+ // this is intended to be dynamic (don't sub resultsCount)
+ if (results.length) {
+ _displayItem(results.pop(), searchTerms, highlightTerms);
+ setTimeout(
+ () => _displayNextItem(results, resultCount, searchTerms, highlightTerms),
+ 5
+ );
+ }
+ // search finished, update title and status message
+ else _finishSearch(resultCount);
+};
+
+/**
+ * Default splitQuery function. Can be overridden in ``sphinx.search`` with a
+ * custom function per language.
+ *
+ * The regular expression works by splitting the string on consecutive characters
+ * that are not Unicode letters, numbers, underscores, or emoji characters.
+ * This is the same as ``\W+`` in Python, preserving the surrogate pair area.
+ */
+if (typeof splitQuery === "undefined") {
+ var splitQuery = (query) => query
+ .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu)
+ .filter(term => term) // remove remaining empty strings
+}
+
+/**
+ * Search Module
+ */
+const Search = {
+ _index: null,
+ _queued_query: null,
+ _pulse_status: -1,
+
+ htmlToText: (htmlString) => {
+ const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html');
+ htmlElement.querySelectorAll(".headerlink").forEach((el) => { el.remove() });
+ const docContent = htmlElement.querySelector('[role="main"]');
+ if (docContent !== undefined) return docContent.textContent;
+ console.warn(
+ "Content block not found. Sphinx search tries to obtain it via '[role=main]'. Could you check your theme or template."
+ );
+ return "";
+ },
+
+ init: () => {
+ const query = new URLSearchParams(window.location.search).get("q");
+ document
+ .querySelectorAll('input[name="q"]')
+ .forEach((el) => (el.value = query));
+ if (query) Search.performSearch(query);
+ },
+
+ loadIndex: (url) =>
+ (document.body.appendChild(document.createElement("script")).src = url),
+
+ setIndex: (index) => {
+ Search._index = index;
+ if (Search._queued_query !== null) {
+ const query = Search._queued_query;
+ Search._queued_query = null;
+ Search.query(query);
+ }
+ },
+
+ hasIndex: () => Search._index !== null,
+
+ deferQuery: (query) => (Search._queued_query = query),
+
+ stopPulse: () => (Search._pulse_status = -1),
+
+ startPulse: () => {
+ if (Search._pulse_status >= 0) return;
+
+ const pulse = () => {
+ Search._pulse_status = (Search._pulse_status + 1) % 4;
+ Search.dots.innerText = ".".repeat(Search._pulse_status);
+ if (Search._pulse_status >= 0) window.setTimeout(pulse, 500);
+ };
+ pulse();
+ },
+
+ /**
+ * perform a search for something (or wait until index is loaded)
+ */
+ performSearch: (query) => {
+ // create the required interface elements
+ const searchText = document.createElement("h2");
+ searchText.textContent = _("Searching");
+ const searchSummary = document.createElement("p");
+ searchSummary.classList.add("search-summary");
+ searchSummary.innerText = "";
+ const searchList = document.createElement("ul");
+ searchList.classList.add("search");
+
+ const out = document.getElementById("search-results");
+ Search.title = out.appendChild(searchText);
+ Search.dots = Search.title.appendChild(document.createElement("span"));
+ Search.status = out.appendChild(searchSummary);
+ Search.output = out.appendChild(searchList);
+
+ const searchProgress = document.getElementById("search-progress");
+ // Some themes don't use the search progress node
+ if (searchProgress) {
+ searchProgress.innerText = _("Preparing search...");
+ }
+ Search.startPulse();
+
+ // index already loaded, the browser was quick!
+ if (Search.hasIndex()) Search.query(query);
+ else Search.deferQuery(query);
+ },
+
+ /**
+ * execute search (requires search index to be loaded)
+ */
+ query: (query) => {
+ const filenames = Search._index.filenames;
+ const docNames = Search._index.docnames;
+ const titles = Search._index.titles;
+ const allTitles = Search._index.alltitles;
+ const indexEntries = Search._index.indexentries;
+
+ // stem the search terms and add them to the correct list
+ const stemmer = new Stemmer();
+ const searchTerms = new Set();
+ const excludedTerms = new Set();
+ const highlightTerms = new Set();
+ const objectTerms = new Set(splitQuery(query.toLowerCase().trim()));
+ splitQuery(query.trim()).forEach((queryTerm) => {
+ const queryTermLower = queryTerm.toLowerCase();
+
+ // maybe skip this "word"
+ // stopwords array is from language_data.js
+ if (
+ stopwords.indexOf(queryTermLower) !== -1 ||
+ queryTerm.match(/^\d+$/)
+ )
+ return;
+
+ // stem the word
+ let word = stemmer.stemWord(queryTermLower);
+ // select the correct list
+ if (word[0] === "-") excludedTerms.add(word.substr(1));
+ else {
+ searchTerms.add(word);
+ highlightTerms.add(queryTermLower);
+ }
+ });
+
+ if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js
+ localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" "))
+ }
+
+ // console.debug("SEARCH: searching for:");
+ // console.info("required: ", [...searchTerms]);
+ // console.info("excluded: ", [...excludedTerms]);
+
+ // array of [docname, title, anchor, descr, score, filename]
+ let results = [];
+ _removeChildren(document.getElementById("search-progress"));
+
+ const queryLower = query.toLowerCase();
+ for (const [title, foundTitles] of Object.entries(allTitles)) {
+ if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) {
+ for (const [file, id] of foundTitles) {
+ let score = Math.round(100 * queryLower.length / title.length)
+ results.push([
+ docNames[file],
+ titles[file] !== title ? `${titles[file]} > ${title}` : title,
+ id !== null ? "#" + id : "",
+ null,
+ score,
+ filenames[file],
+ ]);
+ }
+ }
+ }
+
+ // search for explicit entries in index directives
+ for (const [entry, foundEntries] of Object.entries(indexEntries)) {
+ if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) {
+ for (const [file, id] of foundEntries) {
+ let score = Math.round(100 * queryLower.length / entry.length)
+ results.push([
+ docNames[file],
+ titles[file],
+ id ? "#" + id : "",
+ null,
+ score,
+ filenames[file],
+ ]);
+ }
+ }
+ }
+
+ // lookup as object
+ objectTerms.forEach((term) =>
+ results.push(...Search.performObjectSearch(term, objectTerms))
+ );
+
+ // lookup as search terms in fulltext
+ results.push(...Search.performTermsSearch(searchTerms, excludedTerms));
+
+ // let the scorer override scores with a custom scoring function
+ if (Scorer.score) results.forEach((item) => (item[4] = Scorer.score(item)));
+
+ // now sort the results by score (in opposite order of appearance, since the
+ // display function below uses pop() to retrieve items) and then
+ // alphabetically
+ results.sort((a, b) => {
+ const leftScore = a[4];
+ const rightScore = b[4];
+ if (leftScore === rightScore) {
+ // same score: sort alphabetically
+ const leftTitle = a[1].toLowerCase();
+ const rightTitle = b[1].toLowerCase();
+ if (leftTitle === rightTitle) return 0;
+ return leftTitle > rightTitle ? -1 : 1; // inverted is intentional
+ }
+ return leftScore > rightScore ? 1 : -1;
+ });
+
+ // remove duplicate search results
+ // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept
+ let seen = new Set();
+ results = results.reverse().reduce((acc, result) => {
+ let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(',');
+ if (!seen.has(resultStr)) {
+ acc.push(result);
+ seen.add(resultStr);
+ }
+ return acc;
+ }, []);
+
+ results = results.reverse();
+
+ // for debugging
+ //Search.lastresults = results.slice(); // a copy
+ // console.info("search results:", Search.lastresults);
+
+ // print the results
+ _displayNextItem(results, results.length, searchTerms, highlightTerms);
+ },
+
+ /**
+ * search for object names
+ */
+ performObjectSearch: (object, objectTerms) => {
+ const filenames = Search._index.filenames;
+ const docNames = Search._index.docnames;
+ const objects = Search._index.objects;
+ const objNames = Search._index.objnames;
+ const titles = Search._index.titles;
+
+ const results = [];
+
+ const objectSearchCallback = (prefix, match) => {
+ const name = match[4]
+ const fullname = (prefix ? prefix + "." : "") + name;
+ const fullnameLower = fullname.toLowerCase();
+ if (fullnameLower.indexOf(object) < 0) return;
+
+ let score = 0;
+ const parts = fullnameLower.split(".");
+
+ // check for different match types: exact matches of full name or
+ // "last name" (i.e. last dotted part)
+ if (fullnameLower === object || parts.slice(-1)[0] === object)
+ score += Scorer.objNameMatch;
+ else if (parts.slice(-1)[0].indexOf(object) > -1)
+ score += Scorer.objPartialMatch; // matches in last name
+
+ const objName = objNames[match[1]][2];
+ const title = titles[match[0]];
+
+ // If more than one term searched for, we require other words to be
+ // found in the name/title/description
+ const otherTerms = new Set(objectTerms);
+ otherTerms.delete(object);
+ if (otherTerms.size > 0) {
+ const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase();
+ if (
+ [...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0)
+ )
+ return;
+ }
+
+ let anchor = match[3];
+ if (anchor === "") anchor = fullname;
+ else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname;
+
+ const descr = objName + _(", in ") + title;
+
+ // add custom score for some objects according to scorer
+ if (Scorer.objPrio.hasOwnProperty(match[2]))
+ score += Scorer.objPrio[match[2]];
+ else score += Scorer.objPrioDefault;
+
+ results.push([
+ docNames[match[0]],
+ fullname,
+ "#" + anchor,
+ descr,
+ score,
+ filenames[match[0]],
+ ]);
+ };
+ Object.keys(objects).forEach((prefix) =>
+ objects[prefix].forEach((array) =>
+ objectSearchCallback(prefix, array)
+ )
+ );
+ return results;
+ },
+
+ /**
+ * search for full-text terms in the index
+ */
+ performTermsSearch: (searchTerms, excludedTerms) => {
+ // prepare search
+ const terms = Search._index.terms;
+ const titleTerms = Search._index.titleterms;
+ const filenames = Search._index.filenames;
+ const docNames = Search._index.docnames;
+ const titles = Search._index.titles;
+
+ const scoreMap = new Map();
+ const fileMap = new Map();
+
+ // perform the search on the required terms
+ searchTerms.forEach((word) => {
+ const files = [];
+ const arr = [
+ { files: terms[word], score: Scorer.term },
+ { files: titleTerms[word], score: Scorer.title },
+ ];
+ // add support for partial matches
+ if (word.length > 2) {
+ const escapedWord = _escapeRegExp(word);
+ Object.keys(terms).forEach((term) => {
+ if (term.match(escapedWord) && !terms[word])
+ arr.push({ files: terms[term], score: Scorer.partialTerm });
+ });
+ Object.keys(titleTerms).forEach((term) => {
+ if (term.match(escapedWord) && !titleTerms[word])
+ arr.push({ files: titleTerms[word], score: Scorer.partialTitle });
+ });
+ }
+
+ // no match but word was a required one
+ if (arr.every((record) => record.files === undefined)) return;
+
+ // found search word in contents
+ arr.forEach((record) => {
+ if (record.files === undefined) return;
+
+ let recordFiles = record.files;
+ if (recordFiles.length === undefined) recordFiles = [recordFiles];
+ files.push(...recordFiles);
+
+ // set score for the word in each file
+ recordFiles.forEach((file) => {
+ if (!scoreMap.has(file)) scoreMap.set(file, {});
+ scoreMap.get(file)[word] = record.score;
+ });
+ });
+
+ // create the mapping
+ files.forEach((file) => {
+ if (fileMap.has(file) && fileMap.get(file).indexOf(word) === -1)
+ fileMap.get(file).push(word);
+ else fileMap.set(file, [word]);
+ });
+ });
+
+ // now check if the files don't contain excluded terms
+ const results = [];
+ for (const [file, wordList] of fileMap) {
+ // check if all requirements are matched
+
+ // as search terms with length < 3 are discarded
+ const filteredTermCount = [...searchTerms].filter(
+ (term) => term.length > 2
+ ).length;
+ if (
+ wordList.length !== searchTerms.size &&
+ wordList.length !== filteredTermCount
+ )
+ continue;
+
+ // ensure that none of the excluded terms is in the search result
+ if (
+ [...excludedTerms].some(
+ (term) =>
+ terms[term] === file ||
+ titleTerms[term] === file ||
+ (terms[term] || []).includes(file) ||
+ (titleTerms[term] || []).includes(file)
+ )
+ )
+ break;
+
+ // select one (max) score for the file.
+ const score = Math.max(...wordList.map((w) => scoreMap.get(file)[w]));
+ // add result to the result list
+ results.push([
+ docNames[file],
+ titles[file],
+ "",
+ null,
+ score,
+ filenames[file],
+ ]);
+ }
+ return results;
+ },
+
+ /**
+ * helper function to return a node containing the
+ * search summary for a given text. keywords is a list
+ * of stemmed words.
+ */
+ makeSearchSummary: (htmlText, keywords) => {
+ const text = Search.htmlToText(htmlText);
+ if (text === "") return null;
+
+ const textLower = text.toLowerCase();
+ const actualStartPosition = [...keywords]
+ .map((k) => textLower.indexOf(k.toLowerCase()))
+ .filter((i) => i > -1)
+ .slice(-1)[0];
+ const startWithContext = Math.max(actualStartPosition - 120, 0);
+
+ const top = startWithContext === 0 ? "" : "...";
+ const tail = startWithContext + 240 < text.length ? "..." : "";
+
+ let summary = document.createElement("p");
+ summary.classList.add("context");
+ summary.textContent = top + text.substr(startWithContext, 240).trim() + tail;
+
+ return summary;
+ },
+};
+
+_ready(Search.init);
diff --git a/devel/_static/sphinx_highlight.js b/devel/_static/sphinx_highlight.js
new file mode 100644
index 0000000..8a96c69
--- /dev/null
+++ b/devel/_static/sphinx_highlight.js
@@ -0,0 +1,154 @@
+/* Highlighting utilities for Sphinx HTML documentation. */
+"use strict";
+
+const SPHINX_HIGHLIGHT_ENABLED = true
+
+/**
+ * highlight a given string on a node by wrapping it in
+ * span elements with the given class name.
+ */
+const _highlight = (node, addItems, text, className) => {
+ if (node.nodeType === Node.TEXT_NODE) {
+ const val = node.nodeValue;
+ const parent = node.parentNode;
+ const pos = val.toLowerCase().indexOf(text);
+ if (
+ pos >= 0 &&
+ !parent.classList.contains(className) &&
+ !parent.classList.contains("nohighlight")
+ ) {
+ let span;
+
+ const closestNode = parent.closest("body, svg, foreignObject");
+ const isInSVG = closestNode && closestNode.matches("svg");
+ if (isInSVG) {
+ span = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
+ } else {
+ span = document.createElement("span");
+ span.classList.add(className);
+ }
+
+ span.appendChild(document.createTextNode(val.substr(pos, text.length)));
+ const rest = document.createTextNode(val.substr(pos + text.length));
+ parent.insertBefore(
+ span,
+ parent.insertBefore(
+ rest,
+ node.nextSibling
+ )
+ );
+ node.nodeValue = val.substr(0, pos);
+ /* There may be more occurrences of search term in this node. So call this
+ * function recursively on the remaining fragment.
+ */
+ _highlight(rest, addItems, text, className);
+
+ if (isInSVG) {
+ const rect = document.createElementNS(
+ "http://www.w3.org/2000/svg",
+ "rect"
+ );
+ const bbox = parent.getBBox();
+ rect.x.baseVal.value = bbox.x;
+ rect.y.baseVal.value = bbox.y;
+ rect.width.baseVal.value = bbox.width;
+ rect.height.baseVal.value = bbox.height;
+ rect.setAttribute("class", className);
+ addItems.push({ parent: parent, target: rect });
+ }
+ }
+ } else if (node.matches && !node.matches("button, select, textarea")) {
+ node.childNodes.forEach((el) => _highlight(el, addItems, text, className));
+ }
+};
+const _highlightText = (thisNode, text, className) => {
+ let addItems = [];
+ _highlight(thisNode, addItems, text, className);
+ addItems.forEach((obj) =>
+ obj.parent.insertAdjacentElement("beforebegin", obj.target)
+ );
+};
+
+/**
+ * Small JavaScript module for the documentation.
+ */
+const SphinxHighlight = {
+
+ /**
+ * highlight the search words provided in localstorage in the text
+ */
+ highlightSearchWords: () => {
+ if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight
+
+ // get and clear terms from localstorage
+ const url = new URL(window.location);
+ const highlight =
+ localStorage.getItem("sphinx_highlight_terms")
+ || url.searchParams.get("highlight")
+ || "";
+ localStorage.removeItem("sphinx_highlight_terms")
+ url.searchParams.delete("highlight");
+ window.history.replaceState({}, "", url);
+
+ // get individual terms from highlight string
+ const terms = highlight.toLowerCase().split(/\s+/).filter(x => x);
+ if (terms.length === 0) return; // nothing to do
+
+ // There should never be more than one element matching "div.body"
+ const divBody = document.querySelectorAll("div.body");
+ const body = divBody.length ? divBody[0] : document.querySelector("body");
+ window.setTimeout(() => {
+ terms.forEach((term) => _highlightText(body, term, "highlighted"));
+ }, 10);
+
+ const searchBox = document.getElementById("searchbox");
+ if (searchBox === null) return;
+ searchBox.appendChild(
+ document
+ .createRange()
+ .createContextualFragment(
+ '<p class="highlight-link">' +
+ '<a href="javascript:SphinxHighlight.hideSearchWords()">' +
+ _("Hide Search Matches") +
+ "</a></p>"
+ )
+ );
+ },
+
+ /**
+ * helper function to hide the search marks again
+ */
+ hideSearchWords: () => {
+ document
+ .querySelectorAll("#searchbox .highlight-link")
+ .forEach((el) => el.remove());
+ document
+ .querySelectorAll("span.highlighted")
+ .forEach((el) => el.classList.remove("highlighted"));
+ localStorage.removeItem("sphinx_highlight_terms")
+ },
+
+ initEscapeListener: () => {
+ // only install a listener if it is really needed
+ if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return;
+
+ document.addEventListener("keydown", (event) => {
+ // bail for input elements
+ if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return;
+ // bail with special keys
+ if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return;
+ if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) {
+ SphinxHighlight.hideSearchWords();
+ event.preventDefault();
+ }
+ });
+ },
+};
+
+_ready(() => {
+ /* Do not call highlightSearchWords() when we are on the search page.
+ * It will highlight words from the *previous* search query.
+ */
+ if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords();
+ SphinxHighlight.initEscapeListener();
+});
diff --git a/devel/_static/styles/bootstrap.css b/devel/_static/styles/bootstrap.css
new file mode 100644
index 0000000..0aa5f54
--- /dev/null
+++ b/devel/_static/styles/bootstrap.css
@@ -0,0 +1,6 @@
+/*!
+ * Bootstrap v5.2.3 (https://getbootstrap.com/)
+ * Copyright 2011-2022 The Bootstrap Authors
+ * Copyright 2011-2022 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ */:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--b [...]
\ No newline at end of file
diff --git a/devel/_static/styles/pydata-sphinx-theme.css b/devel/_static/styles/pydata-sphinx-theme.css
new file mode 100644
index 0000000..ca295d8
--- /dev/null
+++ b/devel/_static/styles/pydata-sphinx-theme.css
@@ -0,0 +1 @@
+html{--pst-header-height:4rem;--pst-header-article-height:calc(var(--pst-header-height)*2/3);--pst-sidebar-secondary:17rem;--pst-font-size-base:1rem;--pst-font-size-h1:2.5rem;--pst-font-size-h2:2rem;--pst-font-size-h3:1.75rem;--pst-font-size-h4:1.5rem;--pst-font-size-h5:1.25rem;--pst-font-size-h6:1.1rem;--pst-font-size-milli:0.9rem;--pst-sidebar-font-size:0.9rem;--pst-sidebar-font-size-mobile:1.1rem;--pst-sidebar-header-font-size:1.2rem;--pst-sidebar-header-font-weight:600;--pst-admoniti [...]
\ No newline at end of file
diff --git a/devel/_static/styles/theme.css b/devel/_static/styles/theme.css
new file mode 100644
index 0000000..4519dd9
--- /dev/null
+++ b/devel/_static/styles/theme.css
@@ -0,0 +1,2 @@
+/* Provided by Sphinx's 'basic' theme, and included in the final set of assets */
+@import "../basic.css";
diff --git a/devel/_static/switcher.json b/devel/_static/switcher.json
new file mode 100644
index 0000000..5d13223
--- /dev/null
+++ b/devel/_static/switcher.json
@@ -0,0 +1,17 @@
+[
+ {
+ "name": "devel",
+ "url": "https://arrow.apache.org/flight-sql-postgresql/devel/",
+ "version": "devel"
+ },
+ {
+ "name": "current",
+ "url": "https://arrow.apache.org/flight-sql-postgresql/current/",
+ "version": "current"
+ },
+ {
+ "name": "0.1.0",
+ "url": "https://arrow.apache.org/flight-sql-postgresql/0.1.0/",
+ "version": "0.1.0"
+ }
+]
diff --git a/devel/_static/tabs.css b/devel/_static/tabs.css
new file mode 100644
index 0000000..13042e5
--- /dev/null
+++ b/devel/_static/tabs.css
@@ -0,0 +1,110 @@
+/* body[data-theme] { */
+:root {
+ --tabs--label-text: #4b5563;
+ --tabs--label-text--hover: #4b5563;
+ --tabs--label-text--active: #0ea5e9;
+ --tabs--label-text--active--hover: #0ea5e9;
+ --tabs--label-background: transparent;
+ --tabs--label-background--hover: transparent;
+ --tabs--label-background--active: transparent;
+ --tabs--label-background--active--hover: transparent;
+ --tabs--label-border: transparent;
+ --tabs--label-border--hover: #d1d5db;
+ --tabs--label-border--active: #0ea5e9;
+ --tabs--label-border--active--hover: #0ea5e9;
+ --tabs--padding-x: 1.25em;
+ --tabs--margin-x: 0;
+ --tabs--border: #e6e6e6;
+}
+
+/* Hide radio buttons */
+.tab-set > input {
+ position: absolute;
+ opacity: 0;
+}
+
+/* Tab set container */
+.tab-set {
+ border-radius: 2px;
+ display: flex;
+ flex-wrap: wrap;
+ margin: 0.75em 0;
+ position: relative;
+}
+
+/* Tab label */
+.tab-set > label {
+ z-index: 1;
+
+ width: auto;
+ border-bottom: 2px solid var(--tabs--label-border);
+ padding: 1em var(--tabs--padding-x) 0.5em;
+ margin-left: var(--tabs--margin-x);
+
+ color: var(--tabs--label-text);
+ background: var(--tabs--label-background);
+
+ transition: color 250ms;
+
+ cursor: pointer;
+
+ font-size: 0.875em;
+ font-weight: 700;
+}
+.tab-set > label:nth-child(2) {
+ margin-left: 0;
+}
+
+/* Hovered label */
+.tab-set > label:hover {
+ color: var(--tabs--label-text--hover);
+ background: var(--tabs--label-background--hover);
+ border-color: var(--tabs--label-border--hover);
+}
+
+/* Active tab label */
+.tab-set > input:checked + label {
+ color: var(--tabs--label-text--active);
+ background: var(--tabs--label-background--active);
+ border-color: var(--tabs--label-border--active);
+}
+.tab-set > input:checked + label:hover {
+ color: var(--tabs--label-text--active--hover);
+ background: var(--tabs--label-background--active--hover);
+ border-color: var(--tabs--label-border--active--hover);
+}
+
+/* Tab content */
+.tab-content {
+ order: 99;
+ display: none;
+ width: 100%;
+ box-shadow: 0 -0.0625rem var(--tabs--border);
+}
+
+/* Show content, when input is checked. */
+.tab-set > input:checked + label + .tab-content {
+ display: block;
+}
+.tab-content > p:first-child {
+ margin-top: 0.75rem;
+}
+/* Remove the top border on first code block */
+.tab-content > [class^="highlight-"]:first-child .highlight {
+ border-top: none;
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+}
+
+/* Remove margins on children */
+.tab-content > *:first-child {
+ margin-top: 0;
+}
+.tab-content > *:last-child {
+ margin-bottom: 0;
+}
+
+/* Remove margins on nested tabs */
+.tab-content > .tab-set {
+ margin: 0;
+}
diff --git a/devel/_static/tabs.js b/devel/_static/tabs.js
new file mode 100644
index 0000000..58d2cdd
--- /dev/null
+++ b/devel/_static/tabs.js
@@ -0,0 +1,30 @@
+var labels_by_text = {};
+
+function ready() {
+ var li = document.getElementsByClassName("tab-label");
+ const urlParams = new URLSearchParams(window.location.search);
+ const tabs = urlParams.getAll("tabs");
+
+ for (const label of li) {
+ label.onclick = onLabelClick;
+ const text = label.textContent;
+ if (!labels_by_text[text]) {
+ labels_by_text[text] = [];
+ }
+ labels_by_text[text].push(label);
+ }
+
+ for (const tab of tabs) {
+ for (label of labels_by_text[tab]) {
+ label.previousSibling.checked = true;
+ }
+ }
+}
+
+function onLabelClick() {
+ // Activate other labels with the same text.
+ for (label of labels_by_text[this.textContent]) {
+ label.previousSibling.checked = true;
+ }
+}
+document.addEventListener("DOMContentLoaded", ready, false);
diff --git a/devel/_static/vendor/fontawesome/6.1.2/LICENSE.txt b/devel/_static/vendor/fontawesome/6.1.2/LICENSE.txt
new file mode 100644
index 0000000..cc557ec
--- /dev/null
+++ b/devel/_static/vendor/fontawesome/6.1.2/LICENSE.txt
@@ -0,0 +1,165 @@
+Fonticons, Inc. (https://fontawesome.com)
+
+--------------------------------------------------------------------------------
+
+Font Awesome Free License
+
+Font Awesome Free is free, open source, and GPL friendly. You can use it for
+commercial projects, open source projects, or really almost whatever you want.
+Full Font Awesome Free license: https://fontawesome.com/license/free.
+
+--------------------------------------------------------------------------------
+
+# Icons: CC BY 4.0 License (https://creativecommons.org/licenses/by/4.0/)
+
+The Font Awesome Free download is licensed under a Creative Commons
+Attribution 4.0 International License and applies to all icons packaged
+as SVG and JS file types.
+
+--------------------------------------------------------------------------------
+
+# Fonts: SIL OFL 1.1 License
+
+In the Font Awesome Free download, the SIL OFL license applies to all icons
+packaged as web and desktop font files.
+
+Copyright (c) 2022 Fonticons, Inc. (https://fontawesome.com)
+with Reserved Font Name: "Font Awesome".
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+SIL OPEN FONT LICENSE
+Version 1.1 - 26 February 2007
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded,
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting — in part or in whole — any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
+
+--------------------------------------------------------------------------------
+
+# Code: MIT License (https://opensource.org/licenses/MIT)
+
+In the Font Awesome Free download, the MIT license applies to all non-font and
+non-icon files.
+
+Copyright 2022 Fonticons, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in the
+Software without restriction, including without limitation the rights to use, copy,
+modify, merge, publish, distribute, sublicense, and/or sell copies of the Software,
+and to permit persons to whom the Software is furnished to do so, subject to the
+following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+--------------------------------------------------------------------------------
+
+# Attribution
+
+Attribution is required by MIT, SIL OFL, and CC BY licenses. Downloaded Font
+Awesome Free files already contain embedded comments with sufficient
+attribution, so you shouldn't need to do anything additional when using these
+files normally.
+
+We've kept attribution comments terse, so we ask that you do not actively work
+to remove them from files, especially code. They're a great way for folks to
+learn about Font Awesome.
+
+--------------------------------------------------------------------------------
+
+# Brand Icons
+
+All brand icons are trademarks of their respective owners. The use of these
+trademarks does not indicate endorsement of the trademark holder by Font
+Awesome, nor vice versa. **Please do not use brand logos for any purpose except
+to represent the company, product, or service to which they refer.**
diff --git a/devel/_static/vendor/fontawesome/6.1.2/css/all.min.css b/devel/_static/vendor/fontawesome/6.1.2/css/all.min.css
new file mode 100644
index 0000000..aad4b1d
--- /dev/null
+++ b/devel/_static/vendor/fontawesome/6.1.2/css/all.min.css
@@ -0,0 +1,5 @@
+/*!
+ * Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com
+ * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+ * Copyright 2022 Fonticons, Inc.
+ */.fa{font-family:var(--fa-style-family,"Font Awesome 6 Free");font-weight:var(--fa-style,900)}.fa,.fa-brands,.fa-duotone,.fa-light,.fa-regular,.fa-solid,.fa-thin,.fab,.fad,.fal,.far,.fas,.fat{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display,inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-s [...]
\ No newline at end of file
diff --git a/devel/_static/vendor/fontawesome/6.1.2/webfonts/fa-brands-400.ttf b/devel/_static/vendor/fontawesome/6.1.2/webfonts/fa-brands-400.ttf
new file mode 100644
index 0000000..24ca8b1
Binary files /dev/null and b/devel/_static/vendor/fontawesome/6.1.2/webfonts/fa-brands-400.ttf differ
diff --git a/devel/_static/vendor/fontawesome/6.1.2/webfonts/fa-brands-400.woff2 b/devel/_static/vendor/fontawesome/6.1.2/webfonts/fa-brands-400.woff2
new file mode 100644
index 0000000..e67e5cd
Binary files /dev/null and b/devel/_static/vendor/fontawesome/6.1.2/webfonts/fa-brands-400.woff2 differ
diff --git a/devel/_static/vendor/fontawesome/6.1.2/webfonts/fa-regular-400.ttf b/devel/_static/vendor/fontawesome/6.1.2/webfonts/fa-regular-400.ttf
new file mode 100644
index 0000000..c5ac009
Binary files /dev/null and b/devel/_static/vendor/fontawesome/6.1.2/webfonts/fa-regular-400.ttf differ
diff --git a/devel/_static/vendor/fontawesome/6.1.2/webfonts/fa-regular-400.woff2 b/devel/_static/vendor/fontawesome/6.1.2/webfonts/fa-regular-400.woff2
new file mode 100644
index 0000000..7dca1d9
Binary files /dev/null and b/devel/_static/vendor/fontawesome/6.1.2/webfonts/fa-regular-400.woff2 differ
diff --git a/devel/_static/vendor/fontawesome/6.1.2/webfonts/fa-solid-900.ttf b/devel/_static/vendor/fontawesome/6.1.2/webfonts/fa-solid-900.ttf
new file mode 100644
index 0000000..43ba1cc
Binary files /dev/null and b/devel/_static/vendor/fontawesome/6.1.2/webfonts/fa-solid-900.ttf differ
diff --git a/devel/_static/vendor/fontawesome/6.1.2/webfonts/fa-solid-900.woff2 b/devel/_static/vendor/fontawesome/6.1.2/webfonts/fa-solid-900.woff2
new file mode 100644
index 0000000..4a7f966
Binary files /dev/null and b/devel/_static/vendor/fontawesome/6.1.2/webfonts/fa-solid-900.woff2 differ
diff --git a/devel/_static/vendor/fontawesome/6.1.2/webfonts/fa-v4compatibility.ttf b/devel/_static/vendor/fontawesome/6.1.2/webfonts/fa-v4compatibility.ttf
new file mode 100644
index 0000000..243bc25
Binary files /dev/null and b/devel/_static/vendor/fontawesome/6.1.2/webfonts/fa-v4compatibility.ttf differ
diff --git a/devel/_static/vendor/fontawesome/6.1.2/webfonts/fa-v4compatibility.woff2 b/devel/_static/vendor/fontawesome/6.1.2/webfonts/fa-v4compatibility.woff2
new file mode 100644
index 0000000..e18a16d
Binary files /dev/null and b/devel/_static/vendor/fontawesome/6.1.2/webfonts/fa-v4compatibility.woff2 differ
diff --git a/devel/_static/webpack-macros.html b/devel/_static/webpack-macros.html
new file mode 100644
index 0000000..58db785
--- /dev/null
+++ b/devel/_static/webpack-macros.html
@@ -0,0 +1,30 @@
+<!--
+ AUTO-GENERATED from webpack.config.js, do **NOT** edit by hand.
+ These are re-used in layout.html
+-->
+{# Load FontAwesome icons #}
+{% macro head_pre_icons() %}
+ <link href="{{ pathto('_static/vendor/fontawesome/6.1.2/css/all.min.css', 1) }}?digest=e353d410970836974a52" rel="stylesheet" />
+ <link rel="preload" as="font" type="font/woff2" crossorigin href="{{ pathto('_static/vendor/fontawesome/6.1.2/webfonts/fa-solid-900.woff2', 1) }}" />
+<link rel="preload" as="font" type="font/woff2" crossorigin href="{{ pathto('_static/vendor/fontawesome/6.1.2/webfonts/fa-brands-400.woff2', 1) }}" />
+<link rel="preload" as="font" type="font/woff2" crossorigin href="{{ pathto('_static/vendor/fontawesome/6.1.2/webfonts/fa-regular-400.woff2', 1) }}" />
+{% endmacro %}
+
+{% macro head_pre_assets() %}
+ <!-- Loaded before other Sphinx assets -->
+ <link href="{{ pathto('_static/styles/theme.css', 1) }}?digest=e353d410970836974a52" rel="stylesheet" />
+<link href="{{ pathto('_static/styles/bootstrap.css', 1) }}?digest=e353d410970836974a52" rel="stylesheet" />
+<link href="{{ pathto('_static/styles/pydata-sphinx-theme.css', 1) }}?digest=e353d410970836974a52" rel="stylesheet" />
+{% endmacro %}
+
+{% macro head_js_preload() %}
+ <!-- Pre-loaded scripts that we'll load fully later -->
+ <link rel="preload" as="script" href="{{ pathto('_static/scripts/bootstrap.js', 1) }}?digest=e353d410970836974a52" />
+<link rel="preload" as="script" href="{{ pathto('_static/scripts/pydata-sphinx-theme.js', 1) }}?digest=e353d410970836974a52" />
+{% endmacro %}
+
+{% macro body_post() %}
+ <!-- Scripts loaded after <body> so the DOM is not blocked -->
+ <script src="{{ pathto('_static/scripts/bootstrap.js', 1) }}?digest=e353d410970836974a52"></script>
+<script src="{{ pathto('_static/scripts/pydata-sphinx-theme.js', 1) }}?digest=e353d410970836974a52"></script>
+{% endmacro %}
\ No newline at end of file
diff --git a/devel/client.html b/devel/client.html
new file mode 100644
index 0000000..44f5b34
--- /dev/null
+++ b/devel/client.html
@@ -0,0 +1,889 @@
+
+<!DOCTYPE html>
+
+
+<html lang="en" >
+
+ <head>
+ <meta charset="utf-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
+
+ <title>Client — Apache Arrow Flight SQL adapter for PostgreSQL 0.1.0 documentation</title>
+
+
+
+ <script data-cfasync="false">
+ document.documentElement.dataset.mode = localStorage.getItem("mode") || "";
+ document.documentElement.dataset.theme = localStorage.getItem("theme") || "light";
+ </script>
+
+ <!-- Loaded before other Sphinx assets -->
+ <link href="_static/styles/theme.css?digest=e353d410970836974a52" rel="stylesheet" />
+<link href="_static/styles/bootstrap.css?digest=e353d410970836974a52" rel="stylesheet" />
+<link href="_static/styles/pydata-sphinx-theme.css?digest=e353d410970836974a52" rel="stylesheet" />
+
+
+ <link href="_static/vendor/fontawesome/6.1.2/css/all.min.css?digest=e353d410970836974a52" rel="stylesheet" />
+ <link rel="preload" as="font" type="font/woff2" crossorigin href="_static/vendor/fontawesome/6.1.2/webfonts/fa-solid-900.woff2" />
+<link rel="preload" as="font" type="font/woff2" crossorigin href="_static/vendor/fontawesome/6.1.2/webfonts/fa-brands-400.woff2" />
+<link rel="preload" as="font" type="font/woff2" crossorigin href="_static/vendor/fontawesome/6.1.2/webfonts/fa-regular-400.woff2" />
+
+ <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=a746c00c" />
+ <link rel="stylesheet" type="text/css" href="_static/tabs.css?v=4c969af8" />
+
+ <!-- Pre-loaded scripts that we'll load fully later -->
+ <link rel="preload" as="script" href="_static/scripts/bootstrap.js?digest=e353d410970836974a52" />
+<link rel="preload" as="script" href="_static/scripts/pydata-sphinx-theme.js?digest=e353d410970836974a52" />
+
+ <script src="_static/documentation_options.js?v=38b66d78"></script>
+ <script src="_static/doctools.js?v=888ff710"></script>
+ <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
+ <script src="_static/tabs.js?v=3ee01567"></script>
+ <script>DOCUMENTATION_OPTIONS.pagename = 'client';</script>
+ <script>
+ DOCUMENTATION_OPTIONS.theme_switcher_json_url = 'https://arrow.apache.org/flight-sql-postgresql/devel/_static/switcher.json';
+ DOCUMENTATION_OPTIONS.theme_switcher_version_match = '0.1.0';
+ </script>
+ <link rel="index" title="Index" href="genindex.html" />
+ <link rel="search" title="Search" href="search.html" />
+ <link rel="prev" title="Configuration" href="configuration.html" />
+ <meta name="viewport" content="width=device-width, initial-scale=1"/>
+ <meta name="docsearch:language" content="en"/>
+ </head>
+
+
+ <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode="">
+
+
+
+ <a class="skip-link" href="#main-content">Skip to main content</a>
+
+ <input type="checkbox"
+ class="sidebar-toggle"
+ name="__primary"
+ id="__primary"/>
+ <label class="overlay overlay-primary" for="__primary"></label>
+
+ <input type="checkbox"
+ class="sidebar-toggle"
+ name="__secondary"
+ id="__secondary"/>
+ <label class="overlay overlay-secondary" for="__secondary"></label>
+
+ <div class="search-button__wrapper">
+ <div class="search-button__overlay"></div>
+ <div class="search-button__search-container">
+<form class="bd-search d-flex align-items-center"
+ action="search.html"
+ method="get">
+ <i class="fa-solid fa-magnifying-glass"></i>
+ <input type="search"
+ class="form-control"
+ name="q"
+ id="search-input"
+ placeholder="Search the docs ..."
+ aria-label="Search the docs ..."
+ autocomplete="off"
+ autocorrect="off"
+ autocapitalize="off"
+ spellcheck="false"/>
+ <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span>
+</form></div>
+ </div>
+
+ <nav class="bd-header navbar navbar-expand-lg bd-navbar">
+<div class="bd-header__inner bd-page-width">
+ <label class="sidebar-toggle primary-toggle" for="__primary">
+ <span class="fa-solid fa-bars"></span>
+ </label>
+
+ <div class="navbar-header-items__start">
+
+ <div class="navbar-item">
+
+
+<a class="navbar-brand logo" href="index.html">
+
+
+
+
+
+
+
+
+
+ <img src="_static/logo-light.png" class="logo__image only-light" alt="Apache Arrow Flight SQL adapter for PostgreSQL"/>
+ <script>document.write(`<img src="_static/logo-dark.png" class="logo__image only-dark" alt="Apache Arrow Flight SQL adapter for PostgreSQL"/>`);</script>
+
+
+</a></div>
+
+ </div>
+
+
+ <div class="col-lg-9 navbar-header-items">
+
+
+ <div class="navbar-header-items__end">
+
+ <div class="navbar-item navbar-persistent--container">
+
+<script>
+document.write(`
+ <button class="btn btn-sm navbar-btn search-button search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
+ <i class="fa-solid fa-magnifying-glass"></i>
+ </button>
+`);
+</script>
+ </div>
+
+
+ <div class="navbar-item">
+<script>
+document.write(`
+ <button class="theme-switch-button btn btn-sm btn-outline-primary navbar-btn rounded-circle" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
+ <span class="theme-switch" data-mode="light"><i class="fa-solid fa-sun"></i></span>
+ <span class="theme-switch" data-mode="dark"><i class="fa-solid fa-moon"></i></span>
+ <span class="theme-switch" data-mode="auto"><i class="fa-solid fa-circle-half-stroke"></i></span>
+ </button>
+`);
+</script></div>
+
+ <div class="navbar-item"><ul class="navbar-icon-links navbar-nav"
+ aria-label="Icon Links">
+ <li class="nav-item">
+
+
+
+
+
+
+
+
+ <a href="https://github.com/apache/arrow-flight-sql-postgresql" title="GitHub" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-github"></i></span>
+ <label class="sr-only">GitHub</label></a>
+ </li>
+</ul></div>
+
+ <div class="navbar-item">
+<script>
+document.write(`
+ <div class="version-switcher__container dropdown">
+ <button type="button" class="version-switcher__button btn btn-sm navbar-btn dropdown-toggle" data-bs-toggle="dropdown">
+ 0.1.0 <!-- this text may get changed later by javascript -->
+ <span class="caret"></span>
+ </button>
+ <div class="version-switcher__menu dropdown-menu list-group-flush py-0">
+ <!-- dropdown will be populated by javascript on page load -->
+ </div>
+ </div>
+`);
+</script></div>
+
+ </div>
+
+ </div>
+
+
+ <div class="navbar-persistent--mobile">
+<script>
+document.write(`
+ <button class="btn btn-sm navbar-btn search-button search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
+ <i class="fa-solid fa-magnifying-glass"></i>
+ </button>
+`);
+</script>
+ </div>
+
+
+
+ <label class="sidebar-toggle secondary-toggle" for="__secondary">
+ <span class="fa-solid fa-outdent"></span>
+ </label>
+
+</div>
+
+ </nav>
+
+ <div class="bd-container">
+ <div class="bd-container__inner bd-page-width">
+
+ <div class="bd-sidebar-primary bd-sidebar hide-on-wide">
+
+
+
+ <div class="sidebar-header-items sidebar-primary__section">
+
+
+
+
+ <div class="sidebar-header-items__end">
+
+ <div class="navbar-item">
+<script>
+document.write(`
+ <button class="theme-switch-button btn btn-sm btn-outline-primary navbar-btn rounded-circle" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
+ <span class="theme-switch" data-mode="light"><i class="fa-solid fa-sun"></i></span>
+ <span class="theme-switch" data-mode="dark"><i class="fa-solid fa-moon"></i></span>
+ <span class="theme-switch" data-mode="auto"><i class="fa-solid fa-circle-half-stroke"></i></span>
+ </button>
+`);
+</script></div>
+
+ <div class="navbar-item"><ul class="navbar-icon-links navbar-nav"
+ aria-label="Icon Links">
+ <li class="nav-item">
+
+
+
+
+
+
+
+
+ <a href="https://github.com/apache/arrow-flight-sql-postgresql" title="GitHub" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-github"></i></span>
+ <label class="sr-only">GitHub</label></a>
+ </li>
+</ul></div>
+
+ <div class="navbar-item">
+<script>
+document.write(`
+ <div class="version-switcher__container dropdown">
+ <button type="button" class="version-switcher__button btn btn-sm navbar-btn dropdown-toggle" data-bs-toggle="dropdown">
+ 0.1.0 <!-- this text may get changed later by javascript -->
+ <span class="caret"></span>
+ </button>
+ <div class="version-switcher__menu dropdown-menu list-group-flush py-0">
+ <!-- dropdown will be populated by javascript on page load -->
+ </div>
+ </div>
+`);
+</script></div>
+
+ </div>
+
+ </div>
+
+
+ <div class="sidebar-primary-items__end sidebar-primary__section">
+ </div>
+
+ <div id="rtd-footer-container"></div>
+
+
+ </div>
+
+ <main id="main-content" class="bd-main">
+
+
+ <div class="bd-content">
+ <div class="bd-article-container">
+
+ <div class="bd-header-article">
+<div class="header-article-items header-article__inner">
+
+ <div class="header-article-items__start">
+
+ <div class="header-article-item">
+
+
+
+<nav aria-label="Breadcrumbs">
+ <ul class="bd-breadcrumbs" role="navigation" aria-label="Breadcrumb">
+
+ <li class="breadcrumb-item breadcrumb-home">
+ <a href="index.html" class="nav-link" aria-label="Home">
+ <i class="fa-solid fa-home"></i>
+ </a>
+ </li>
+ <li class="breadcrumb-item active" aria-current="page">Client</li>
+ </ul>
+</nav>
+</div>
+
+ </div>
+
+
+</div>
+</div>
+
+
+
+
+<div id="searchbox"></div>
+ <article class="bd-article" role="main">
+
+ <!--
+ 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.
+-->
+<section class="tex2jax_ignore mathjax_ignore" id="client">
+<h1>Client<a class="headerlink" href="#client" title="Link to this heading">#</a></h1>
+<section id="how-to-connect">
+<h2>How to connect<a class="headerlink" href="#how-to-connect" title="Link to this heading">#</a></h2>
+<p>You must specify PostgreSQL user and PostgreSQL database to connect
+Apache Arrow Flight SQL endpoint.</p>
+<p>User name and password must be passed by <code class="docutils literal notranslate"><span class="pre">Handshake</span></code> call. Note that
+basic authentication is only supported for now. mTLS (mutual-TLS)
+isn’t implemented yet. If you’re interested in mTLS, please see the
+issue for it:
+<a class="github reference external" href="https://github.com/apache/arrow-flight-sql-postgresql/issues/79">apache/arrow-flight-sql-postgresql#79</a></p>
+<p>You need to use a header to specify PostgreSQL database. The header
+name for PostgreSQL database is <code class="docutils literal notranslate"><span class="pre">x-flight-sql-database</span></code>.</p>
+<div class="tab-set docutils">
+<input checked="True" class="tab-input" id="tab-set--0-input--1" name="tab-set--0" type="radio"><label class="tab-label" for="tab-set--0-input--1">Apache Arrow Flight SQL C++ client</label><div class="tab-content docutils">
+<p>You need to use
+<a class="reference external" href="https://arrow.apache.org/docs/cpp/api/flight.html#clients"><code class="docutils literal notranslate"><span class="pre">arrow::flight::FlightClient::AuthenticateBasicToken()</span></code></a>
+for authentication.</p>
+<p>You need to add a <code class="docutils literal notranslate"><span class="pre">x-flight-sql-database</span></code> header to
+<a class="reference external" href="https://arrow.apache.org/docs/cpp/api/flight.html#_CPPv4N5arrow6flight17FlightCallOptions7headersE"><code class="docutils literal notranslate"><span class="pre">arrow::flight::FlightCallOptions::headers</span></code></a>
+for database.</p>
+<p>The following example uses <code class="docutils literal notranslate"><span class="pre">PGUSER</span></code> (fallback to <code class="docutils literal notranslate"><span class="pre">USER</span></code>) and
+<code class="docutils literal notranslate"><span class="pre">PGPASSWORD</span></code> environment variables like
+<code class="docutils literal notranslate"><span class="pre">libpq</span></code>. <code class="docutils literal notranslate"><span class="pre">AuthenticateBasicToken()</span></code> returns Bearer token on
+success. So the example users the returned Bearer token to request
+headers to use following requests.</p>
+<p>The following example uses <code class="docutils literal notranslate"><span class="pre">PGDATABASE</span></code> (fallback to <code class="docutils literal notranslate"><span class="pre">PGUSER</span></code>/<code class="docutils literal notranslate"><span class="pre">USER</span></code>)
+environment variable like <code class="docutils literal notranslate"><span class="pre">libpq</span></code>.</p>
+<div class="highlight-c++ notranslate"><div class="highlight"><pre><span></span><span class="linenos"> 1</span><span class="cp">#include</span><span class="w"> </span><span class="cpf"><cstdlib></span>
+<span class="linenos"> 2</span><span class="cp">#include</span><span class="w"> </span><span class="cpf"><fstream></span>
+<span class="linenos"> 3</span><span class="cp">#include</span><span class="w"> </span><span class="cpf"><iostream></span>
+<span class="linenos"> 4</span>
+<span class="linenos"> 5</span><span class="cp">#include</span><span class="w"> </span><span class="cpf"><arrow/flight/sql/client.h></span>
+<span class="linenos"> 6</span>
+<span class="linenos"> 7</span><span class="k">namespace</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos"> 8</span><span class="n">std</span><span class="o">::</span><span class="n">string</span>
+<span class="linenos"> 9</span><span class="nf">getenv</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="o">*</span><span class="w"> </span><span class="n">name</span><span class="p">)</span>
+<span class="linenos"> 10</span><span class="p">{</span>
+<span class="linenos"> 11</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">value</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">getenv</span><span class="p">(</span><span class="n">name</span><span class="p">);</span>
+<span class="linenos"> 12</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
+<span class="linenos"> 13</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos"> 14</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">(</span><span class="n">value</span><span class="p">);</span>
+<span class="linenos"> 15</span><span class="w"> </span><span class="p">}</span>
+<span class="linenos"> 16</span><span class="w"> </span><span class="k">else</span>
+<span class="linenos"> 17</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos"> 18</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">(</span><span class="s">""</span><span class="p">);</span>
+<span class="linenos"> 19</span><span class="w"> </span><span class="p">}</span>
+<span class="linenos"> 20</span><span class="p">}</span>
+<span class="linenos"> 21</span>
+<span class="linenos"> 22</span><span class="n">arrow</span><span class="o">::</span><span class="n">Status</span>
+<span class="linenos"> 23</span><span class="nf">run</span><span class="p">()</span>
+<span class="linenos"> 24</span><span class="p">{</span>
+<span class="linenos"> 25</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">uri</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">getenv</span><span class="p">(</span><span class="s">"PGFLIGHTSQLURI"</span><span class="p">);</span>
+<span class="linenos"> 26</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">uri</span><span class="p">.</span><span class="n">empty</span><span class="p">())</span>
+<span class="linenos"> 27</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos"> 28</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">host</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">getenv</span><span class="p">(</span><span class="s">"PGHOST"</span><span class="p">);</span>
+<span class="linenos"> 29</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">host</span><span class="p">.</span><span class="n">empty</span><span class="p">())</span>
+<span class="linenos"> 30</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos"> 31</span><span class="w"> </span><span class="n">host</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"localhost"</span><span class="p">;</span>
+<span class="linenos"> 32</span><span class="w"> </span><span class="p">}</span>
+<span class="linenos"> 33</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">sslmode</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">getenv</span><span class="p">(</span><span class="s">"PGSSLMODE"</span><span class="p">);</span>
+<span class="linenos"> 34</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">sslmode</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="s">"require"</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="n">sslmode</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="s">"verify-ca&quo [...]
+<span class="linenos"> 35</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos"> 36</span><span class="w"> </span><span class="n">uri</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">(</span><span class="s">"grpc+tls://"</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">host</span><span class="w"> </span><span class="o">+</span><span [...]
+<span class="linenos"> 37</span><span class="w"> </span><span class="p">}</span>
+<span class="linenos"> 38</span><span class="w"> </span><span class="k">else</span>
+<span class="linenos"> 39</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos"> 40</span><span class="w"> </span><span class="n">uri</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">(</span><span class="s">"grpc://"</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">host</span><span class="w"> </span><span class="o">+</span><span clas [...]
+<span class="linenos"> 41</span><span class="w"> </span><span class="p">}</span>
+<span class="linenos"> 42</span><span class="w"> </span><span class="p">}</span>
+<span class="linenos"> 43</span><span class="w"> </span><span class="n">ARROW_ASSIGN_OR_RAISE</span><span class="p">(</span><span class="k">auto</span><span class="w"> </span><span class="n">location</span><span class="p">,</span><span class="w"> </span><span class="n">arrow</span><span class="o">::</span><span class="n">flight</span><span class="o">::</span><span class="n">Location</span><span class="o">::</span><span class="n">Parse</span><span class="p">(</span><span class="n">uri< [...]
+<span class="linenos"> 44</span><span class="w"> </span><span class="n">arrow</span><span class="o">::</span><span class="n">flight</span><span class="o">::</span><span class="n">FlightClientOptions</span><span class="w"> </span><span class="n">client_options</span><span class="p">;</span>
+<span class="linenos"> 45</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">sslrootcert</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">getenv</span><span class="p">(</span><span class="s">"PGSSLROOTCERT"</span><span class="p">);</span>
+<span class="linenos"> 46</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">sslrootcert</span><span class="p">.</span><span class="n">empty</span><span class="p">())</span>
+<span class="linenos"> 47</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos"> 48</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">home</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">getenv</span><span class="p">(</span><span class="s">"HOME"</span><span class="p">);</span>
+<span class="linenos"> 49</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">home</span><span class="p">.</span><span class="n">empty</span><span class="p">())</span>
+<span class="linenos"> 50</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos"> 51</span><span class="w"> </span><span class="n">sslrootcert</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">home</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s">"/.postgresql/root.crt"</span><span class="p">;</span>
+<span class="linenos"> 52</span><span class="w"> </span><span class="p">}</span>
+<span class="linenos"> 53</span><span class="w"> </span><span class="p">}</span>
+<span class="linenos"> 54</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">sslrootcert</span><span class="p">.</span><span class="n">empty</span><span class="p">())</span>
+<span class="linenos"> 55</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos"> 56</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">ifstream</span><span class="w"> </span><span class="n">input</span><span class="p">(</span><span class="n">sslrootcert</span><span class="p">);</span>
+<span class="linenos"> 57</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">input</span><span class="p">)</span>
+<span class="linenos"> 58</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos"> 59</span><span class="w"> </span><span class="n">client_options</span><span class="p">.</span><span class="n">tls_root_certs</span><span class="w"> </span><span class="o">=</span>
+<span class="linenos"> 60</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">istreambuf_iterator</span><span class="o"><</span><span class="kt">char</span><span class="o">></span><span class="p">{</span><span class="n">input</span><span class="p">},</span><span class="w"> </span><span class="p">{});</span>
+<span class="linenos"> 61</span><span class="w"> </span><span class="p">}</span>
+<span class="linenos"> 62</span><span class="w"> </span><span class="p">}</span>
+<span class="linenos"> 63</span><span class="w"> </span><span class="n">ARROW_ASSIGN_OR_RAISE</span><span class="p">(</span><span class="k">auto</span><span class="w"> </span><span class="n">client</span><span class="p">,</span>
+<span class="linenos"> 64</span><span class="w"> </span><span class="n">arrow</span><span class="o">::</span><span class="n">flight</span><span class="o">::</span><span class="n">FlightClient</span><span class="o">::</span><span class="n">Connect</span><span class="p">(</span><span class="n">location</span><span class="p">,</span><span class="w"> </span><span class="n">client_options</span><span class="p">));</span>
+<span class="linenos"> 65</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">user</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">getenv</span><span class="p">(</span><span class="s">"PGUSER"</span><span class="p">);</span>
+<span class="linenos"> 66</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">user</span><span class="p">.</span><span class="n">empty</span><span class="p">())</span>
+<span class="linenos"> 67</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos"> 68</span><span class="w"> </span><span class="n">user</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">getenv</span><span class="p">(</span><span class="s">"USER"</span><span class="p">);</span>
+<span class="linenos"> 69</span><span class="w"> </span><span class="p">}</span>
+<span class="linenos"> 70</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">password</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">getenv</span><span class="p">(</span><span class="s">"PGPASSWORD"</span><span class="p">);</span>
+<span class="linenos"> 71</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">password</span><span class="p">.</span><span class="n">empty</span><span class="p">())</span>
+<span class="linenos"> 72</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos"> 73</span><span class="w"> </span><span class="n">password</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">""</span><span class="p">;</span>
+<span class="linenos"> 74</span><span class="w"> </span><span class="p">}</span>
+<span class="linenos"> 75</span><span class="w"> </span><span class="n">arrow</span><span class="o">::</span><span class="n">flight</span><span class="o">::</span><span class="n">FlightCallOptions</span><span class="w"> </span><span class="n">call_options</span><span class="p">;</span>
+<span class="linenos"> 76</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">database</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">getenv</span><span class="p">(</span><span class="s">"PGDATABASE"</span><span class="p">);</span>
+<span class="linenos"> 77</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">database</span><span class="p">.</span><span class="n">empty</span><span class="p">())</span>
+<span class="linenos"> 78</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos"> 79</span><span class="w"> </span><span class="n">database</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">user</span><span class="p">;</span>
+<span class="linenos"> 80</span><span class="w"> </span><span class="p">}</span>
+<span class="linenos"> 81</span><span class="w"> </span><span class="n">call_options</span><span class="p">.</span><span class="n">headers</span><span class="p">.</span><span class="n">emplace_back</span><span class="p">(</span><span class="s">"x-flight-sql-database"</span><span class="p">,</span><span class="w"> </span><span class="n">database</span><span class="p">);</span>
+<span class="linenos"> 82</span><span class="w"> </span><span class="n">ARROW_ASSIGN_OR_RAISE</span><span class="p">(</span><span class="k">auto</span><span class="w"> </span><span class="n">bearer_token</span><span class="p">,</span>
+<span class="linenos"> 83</span><span class="w"> </span><span class="n">client</span><span class="o">-></span><span class="n">AuthenticateBasicToken</span><span class="p">(</span><span class="n">call_options</span><span class="p">,</span><span class="w"> </span><span class="n">user</span><span class="p">,</span><span class="w"> </span><span class="n">password</span><span class="p">));</span>
+<span class="linenos"> 84</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">auto</span><span class="o">&</span><span class="w"> </span><span class="n">bearer_name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">bearer_token</span><span class="p">.</span><span class="n">first</span><span class="p">;</span>
+<span class="linenos"> 85</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">auto</span><span class="o">&</span><span class="w"> </span><span class="n">bearer_value</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">bearer_token</span><span class="p">.</span><span class="n">second</span><span class="p">;</span>
+<span class="linenos"> 86</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">bearer_name</span><span class="p">.</span><span class="n">empty</span><span class="p">()</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="o">!</span><span class="n">bearer_value</span><span class="p">.</span><span class="n">empty</span><span class="p">())</span>
+<span class="linenos"> 87</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos"> 88</span><span class="w"> </span><span class="n">call_options</span><span class="p">.</span><span class="n">headers</span><span class="p">.</span><span class="n">emplace_back</span><span class="p">(</span><span class="n">bearer_name</span><span class="p">,</span><span class="w"> </span><span class="n">bearer_value</span><span class="p">);</span>
+<span class="linenos"> 89</span><span class="w"> </span><span class="p">}</span>
+<span class="linenos"> 90</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">client</span><span class="o">-></span><span class="n">Close</span><span class="p">();</span>
+<span class="linenos"> 91</span><span class="p">}</span>
+<span class="linenos"> 92</span><span class="p">};</span><span class="w"> </span><span class="c1">// namespace</span>
+<span class="linenos"> 93</span>
+<span class="linenos"> 94</span><span class="kt">int</span>
+<span class="linenos"> 95</span><span class="nf">main</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">argc</span><span class="p">,</span><span class="w"> </span><span class="kt">char</span><span class="o">**</span><span class="w"> </span><span class="n">argv</span><span class="p">)</span>
+<span class="linenos"> 96</span><span class="p">{</span>
+<span class="linenos"> 97</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">status</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">run</span><span class="p">();</span>
+<span class="linenos"> 98</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">status</span><span class="p">.</span><span class="n">ok</span><span class="p">())</span>
+<span class="linenos"> 99</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos">100</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">"Authenticated!"</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
+<span class="linenos">101</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">EXIT_SUCCESS</span><span class="p">;</span>
+<span class="linenos">102</span><span class="w"> </span><span class="p">}</span>
+<span class="linenos">103</span><span class="w"> </span><span class="k">else</span>
+<span class="linenos">104</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos">105</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cerr</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">status</span><span class="p">.</span><span class="n">ToString</span><span class="p">()</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">endl</span><span [...]
+<span class="linenos">106</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">EXIT_FAILURE</span><span class="p">;</span>
+<span class="linenos">107</span><span class="w"> </span><span class="p">}</span>
+<span class="linenos">108</span><span class="p">}</span>
+</pre></div>
+</div>
+</div>
+<input class="tab-input" id="tab-set--0-input--2" name="tab-set--0" type="radio"><label class="tab-label" for="tab-set--0-input--2">ADBC Flight SQL driver</label><div class="tab-content docutils">
+<p>You need to set the
+<code class="docutils literal notranslate"><span class="pre">username</span></code> and <code class="docutils literal notranslate"><span class="pre">password</span></code> options for authentication. See also the
+<a class="reference external" href="https://arrow.apache.org/adbc/current/driver/flight_sql.html#authentication">Authentication</a> document.</p>
+<p>You need to set the
+<code class="docutils literal notranslate"><span class="pre">adbc.flight.sql.rpc.call_header.x-flight-sql-database</span></code> option for
+database. See also the <a class="reference external" href="https://arrow.apache.org/adbc/current/driver/flight_sql.html#custom-call-headers">Custom Call
+Headers</a> document.</p>
+<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="linenos"> 1</span><span class="cp">#include</span><span class="w"> </span><span class="cpf"><stdio.h></span>
+<span class="linenos"> 2</span><span class="cp">#include</span><span class="w"> </span><span class="cpf"><stdlib.h></span>
+<span class="linenos"> 3</span><span class="cp">#include</span><span class="w"> </span><span class="cpf"><string.h></span>
+<span class="linenos"> 4</span>
+<span class="linenos"> 5</span><span class="cp">#include</span><span class="w"> </span><span class="cpf"><adbc.h></span>
+<span class="linenos"> 6</span>
+<span class="linenos"> 7</span><span class="cp">#ifndef ADBC_ERROR_INIT</span>
+<span class="linenos"> 8</span><span class="cp"># define ADBC_ERROR_INIT \</span>
+<span class="linenos"> 9</span><span class="cp"> { \</span>
+<span class="linenos"> 10</span><span class="cp"> 0 \</span>
+<span class="linenos"> 11</span><span class="cp"> }</span>
+<span class="linenos"> 12</span><span class="cp">#endif</span>
+<span class="linenos"> 13</span>
+<span class="linenos"> 14</span><span class="k">static</span><span class="w"> </span><span class="n">AdbcStatusCode</span>
+<span class="linenos"> 15</span><span class="nf">database_init</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">AdbcDatabase</span><span class="o">*</span><span class="w"> </span><span class="n">database</span><span class="p">,</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">AdbcError</span><span class="o">*</span><span class="w"> </span><span class="n">error</span><span class="p">)</span>
+<span class="linenos"> 16</span><span class="p">{</span>
+<span class="linenos"> 17</span><span class="w"> </span><span class="n">AdbcStatusCode</span><span class="w"> </span><span class="n">code</span><span class="p">;</span>
+<span class="linenos"> 18</span><span class="w"> </span><span class="n">code</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">AdbcDatabaseSetOption</span><span class="p">(</span><span class="n">database</span><span class="p">,</span><span class="w"> </span><span class="s">"driver"</span><span class="p">,</span><span class="w"> </span><span class="s">"adbc_driver_flightsql"</span><span class="p">,</span><span class="w"> < [...]
+<span class="linenos"> 19</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">code</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">ADBC_STATUS_OK</span><span class="p">)</span>
+<span class="linenos"> 20</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos"> 21</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">code</span><span class="p">;</span>
+<span class="linenos"> 22</span><span class="w"> </span><span class="p">}</span>
+<span class="linenos"> 23</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="o">*</span><span class="w"> </span><span class="n">uri</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">getenv</span><span class="p">(</span><span class="s">"PGFLIGHTSQLURI"</span><span class="p">);</span>
+<span class="linenos"> 24</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="n">uri_buffer</span><span class="p">[</span><span class="mi">4096</span><span class="p">];</span>
+<span class="linenos"> 25</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">uri</span><span class="p">)</span>
+<span class="linenos"> 26</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos"> 27</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="o">*</span><span class="w"> </span><span class="n">host</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">getenv</span><span class="p">(</span><span class="s">"PGHOST"</span><span class="p">);</span>
+<span class="linenos"> 28</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">host</span><span class="p">)</span>
+<span class="linenos"> 29</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos"> 30</span><span class="w"> </span><span class="n">host</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"localhost"</span><span class="p">;</span>
+<span class="linenos"> 31</span><span class="w"> </span><span class="p">}</span>
+<span class="linenos"> 32</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="o">*</span><span class="w"> </span><span class="n">sslmode</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">getenv</span><span class="p">(</span><span class="s">"PGSSLMODE"</span><span class="p">);</span>
+<span class="linenos"> 33</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">sslmode</span><span class="w"> </span><span class="o">&&</span>
+<span class="linenos"> 34</span><span class="w"> </span><span class="p">((</span><span class="n">strcmp</span><span class="p">(</span><span class="n">sslmode</span><span class="p">,</span><span class="w"> </span><span class="s">"require"</span><span class="p">)</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span cl [...]
+<span class="linenos"> 35</span><span class="w"> </span><span class="p">(</span><span class="n">strcmp</span><span class="p">(</span><span class="n">sslmode</span><span class="p">,</span><span class="w"> </span><span class="s">"verify-full"</span><span class="p">)</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">0</span><span class="p">)))</span>
+<span class="linenos"> 36</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos"> 37</span><span class="w"> </span><span class="n">snprintf</span><span class="p">(</span><span class="n">uri_buffer</span><span class="p">,</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="n">uri_buffer</span><span class="p">),</span><span class="w"> </span><span class="s">"grpc+tls://%s:15432"</span><span class="p">,</span><span class="w"> </span><span class="n">host</span><span class="p">);</span>
+<span class="linenos"> 38</span><span class="w"> </span><span class="p">}</span>
+<span class="linenos"> 39</span><span class="w"> </span><span class="k">else</span>
+<span class="linenos"> 40</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos"> 41</span><span class="w"> </span><span class="n">snprintf</span><span class="p">(</span><span class="n">uri_buffer</span><span class="p">,</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="n">uri_buffer</span><span class="p">),</span><span class="w"> </span><span class="s">"grpc://%s:15432"</span><span class="p">,</span><span class="w"> </span><span class="n">host</span><span class="p">);</span>
+<span class="linenos"> 42</span><span class="w"> </span><span class="p">}</span>
+<span class="linenos"> 43</span><span class="w"> </span><span class="n">uri</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">uri_buffer</span><span class="p">;</span>
+<span class="linenos"> 44</span><span class="w"> </span><span class="p">}</span>
+<span class="linenos"> 45</span><span class="w"> </span><span class="n">code</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">AdbcDatabaseSetOption</span><span class="p">(</span><span class="n">database</span><span class="p">,</span><span class="w"> </span><span class="s">"uri"</span><span class="p">,</span><span class="w"> </span><span class="n">uri</span><span class="p">,</span><span class="w"> </span><span class="n">error</span [...]
+<span class="linenos"> 46</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">code</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">ADBC_STATUS_OK</span><span class="p">)</span>
+<span class="linenos"> 47</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos"> 48</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">code</span><span class="p">;</span>
+<span class="linenos"> 49</span><span class="w"> </span><span class="p">}</span>
+<span class="linenos"> 50</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="o">*</span><span class="w"> </span><span class="n">sslrootcert</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">getenv</span><span class="p">(</span><span class="s">"PGSSLROOTCERT"</span><span class="p">);</span>
+<span class="linenos"> 51</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="n">sslrootcert_buffer</span><span class="p">[</span><span class="mi">4096</span><span class="p">];</span>
+<span class="linenos"> 52</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">sslrootcert</span><span class="p">)</span>
+<span class="linenos"> 53</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos"> 54</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="o">*</span><span class="w"> </span><span class="n">home</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">getenv</span><span class="p">(</span><span class="s">"HOME"</span><span class="p">);</span>
+<span class="linenos"> 55</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">home</span><span class="p">)</span>
+<span class="linenos"> 56</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos"> 57</span><span class="w"> </span><span class="n">snprintf</span><span class="p">(</span><span class="n">sslrootcert_buffer</span><span class="p">,</span>
+<span class="linenos"> 58</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="n">sslrootcert_buffer</span><span class="p">),</span>
+<span class="linenos"> 59</span><span class="w"> </span><span class="s">"%s/.postgresql/root.crt"</span><span class="p">,</span>
+<span class="linenos"> 60</span><span class="w"> </span><span class="n">home</span><span class="p">);</span>
+<span class="linenos"> 61</span><span class="w"> </span><span class="n">sslrootcert</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sslrootcert_buffer</span><span class="p">;</span>
+<span class="linenos"> 62</span><span class="w"> </span><span class="p">}</span>
+<span class="linenos"> 63</span><span class="w"> </span><span class="p">}</span>
+<span class="linenos"> 64</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">sslrootcert</span><span class="p">)</span>
+<span class="linenos"> 65</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos"> 66</span><span class="w"> </span><span class="kt">FILE</span><span class="o">*</span><span class="w"> </span><span class="n">input</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">fopen</span><span class="p">(</span><span class="n">sslrootcert</span><span class="p">,</span><span class="w"> </span><span class="s">"r"</span><span class="p">);</span>
+<span class="linenos"> 67</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">input</span><span class="p">)</span>
+<span class="linenos"> 68</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos"> 69</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="n">sslrootcert_data</span><span class="p">[</span><span class="mi">40960</span><span class="p">];</span>
+<span class="linenos"> 70</span><span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">read_size</span><span class="w"> </span><span class="o">=</span>
+<span class="linenos"> 71</span><span class="w"> </span><span class="n">fread</span><span class="p">(</span><span class="n">sslrootcert_data</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="n">sslrootcert_data</span><span class="p">),</span><span class="w"> </span><span class="n">input</span><span class="p">);</span>
+<span class="linenos"> 72</span><span class="w"> </span><span class="n">fclose</span><span class="p">(</span><span class="n">input</span><span class="p">);</span>
+<span class="linenos"> 73</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">read_size</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="n">sslrootcert_data</span><span class="p">))</span>
+<span class="linenos"> 74</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos"> 75</span><span class="w"> </span><span class="n">code</span><span class="w"> </span><span class="o">=</span>
+<span class="linenos"> 76</span><span class="w"> </span><span class="n">AdbcDatabaseSetOption</span><span class="p">(</span><span class="n">database</span><span class="p">,</span>
+<span class="linenos"> 77</span><span class="w"> </span><span class="s">"adbc.flight.sql.client_option.tls_root_certs"</span><span class="p">,</span>
+<span class="linenos"> 78</span><span class="w"> </span><span class="n">sslrootcert_data</span><span class="p">,</span>
+<span class="linenos"> 79</span><span class="w"> </span><span class="n">error</span><span class="p">);</span>
+<span class="linenos"> 80</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">code</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">ADBC_STATUS_OK</span><span class="p">)</span>
+<span class="linenos"> 81</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos"> 82</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">code</span><span class="p">;</span>
+<span class="linenos"> 83</span><span class="w"> </span><span class="p">}</span>
+<span class="linenos"> 84</span><span class="w"> </span><span class="p">}</span>
+<span class="linenos"> 85</span><span class="w"> </span><span class="p">}</span>
+<span class="linenos"> 86</span><span class="w"> </span><span class="p">}</span>
+<span class="linenos"> 87</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="o">*</span><span class="w"> </span><span class="n">user</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">getenv</span><span class="p">(</span><span class="s">"PGUSER"</span><span class="p">);</span>
+<span class="linenos"> 88</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">user</span><span class="p">)</span>
+<span class="linenos"> 89</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos"> 90</span><span class="w"> </span><span class="n">user</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">getenv</span><span class="p">(</span><span class="s">"USER"</span><span class="p">);</span>
+<span class="linenos"> 91</span><span class="w"> </span><span class="p">}</span>
+<span class="linenos"> 92</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">user</span><span class="p">)</span>
+<span class="linenos"> 93</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos"> 94</span><span class="w"> </span><span class="n">code</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">AdbcDatabaseSetOption</span><span class="p">(</span><span class="n">database</span><span class="p">,</span><span class="w"> </span><span class="s">"username"</span><span class="p">,</span><span class="w"> </span><span class="n">user</span><span class="p">,</span><span class="w"> </span><span class="n">e [...]
+<span class="linenos"> 95</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">code</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">ADBC_STATUS_OK</span><span class="p">)</span>
+<span class="linenos"> 96</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos"> 97</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">code</span><span class="p">;</span>
+<span class="linenos"> 98</span><span class="w"> </span><span class="p">}</span>
+<span class="linenos"> 99</span><span class="w"> </span><span class="p">}</span>
+<span class="linenos">100</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="o">*</span><span class="w"> </span><span class="n">password</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">getenv</span><span class="p">(</span><span class="s">"PGPASSWORD"</span><span class="p">);</span>
+<span class="linenos">101</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">password</span><span class="p">)</span>
+<span class="linenos">102</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos">103</span><span class="w"> </span><span class="n">code</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">AdbcDatabaseSetOption</span><span class="p">(</span><span class="n">database</span><span class="p">,</span><span class="w"> </span><span class="s">"password"</span><span class="p">,</span><span class="w"> </span><span class="n">password</span><span class="p">,</span><span class="w"> </span><span class=" [...]
+<span class="linenos">104</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">code</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">ADBC_STATUS_OK</span><span class="p">)</span>
+<span class="linenos">105</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos">106</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">code</span><span class="p">;</span>
+<span class="linenos">107</span><span class="w"> </span><span class="p">}</span>
+<span class="linenos">108</span><span class="w"> </span><span class="p">}</span>
+<span class="linenos">109</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="o">*</span><span class="w"> </span><span class="n">database_name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">getenv</span><span class="p">(</span><span class="s">"PGDATABASE"</span><span class="p">);</span>
+<span class="linenos">110</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">database_name</span><span class="p">)</span>
+<span class="linenos">111</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos">112</span><span class="w"> </span><span class="n">database_name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">user</span><span class="p">;</span>
+<span class="linenos">113</span><span class="w"> </span><span class="p">}</span>
+<span class="linenos">114</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">database_name</span><span class="p">)</span>
+<span class="linenos">115</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos">116</span><span class="w"> </span><span class="n">code</span><span class="w"> </span><span class="o">=</span>
+<span class="linenos">117</span><span class="w"> </span><span class="n">AdbcDatabaseSetOption</span><span class="p">(</span><span class="n">database</span><span class="p">,</span>
+<span class="linenos">118</span><span class="w"> </span><span class="s">"adbc.flight.sql.rpc.call_header.x-flight-sql-database"</span><span class="p">,</span>
+<span class="linenos">119</span><span class="w"> </span><span class="n">database_name</span><span class="p">,</span>
+<span class="linenos">120</span><span class="w"> </span><span class="n">error</span><span class="p">);</span>
+<span class="linenos">121</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">code</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">ADBC_STATUS_OK</span><span class="p">)</span>
+<span class="linenos">122</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos">123</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">code</span><span class="p">;</span>
+<span class="linenos">124</span><span class="w"> </span><span class="p">}</span>
+<span class="linenos">125</span><span class="w"> </span><span class="p">}</span>
+<span class="linenos">126</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">AdbcDatabaseInit</span><span class="p">(</span><span class="n">database</span><span class="p">,</span><span class="w"> </span><span class="n">error</span><span class="p">);</span>
+<span class="linenos">127</span><span class="p">}</span>
+<span class="linenos">128</span>
+<span class="linenos">129</span><span class="k">static</span><span class="w"> </span><span class="n">AdbcStatusCode</span>
+<span class="linenos">130</span><span class="nf">run</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">AdbcError</span><span class="o">*</span><span class="w"> </span><span class="n">error</span><span class="p">)</span>
+<span class="linenos">131</span><span class="p">{</span>
+<span class="linenos">132</span><span class="w"> </span><span class="n">AdbcStatusCode</span><span class="w"> </span><span class="n">code</span><span class="p">;</span>
+<span class="linenos">133</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">AdbcDatabase</span><span class="w"> </span><span class="n">database</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+<span class="linenos">134</span><span class="w"> </span><span class="n">code</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">AdbcDatabaseNew</span><span class="p">(</span><span class="o">&</span><span class="n">database</span><span class="p">,</span><span class="w"> </span><span class="n">error</span><span class="p">);</span>
+<span class="linenos">135</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">code</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">ADBC_STATUS_OK</span><span class="p">)</span>
+<span class="linenos">136</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos">137</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">code</span><span class="p">;</span>
+<span class="linenos">138</span><span class="w"> </span><span class="p">}</span>
+<span class="linenos">139</span><span class="w"> </span><span class="n">code</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">database_init</span><span class="p">(</span><span class="o">&</span><span class="n">database</span><span class="p">,</span><span class="w"> </span><span class="n">error</span><span class="p">);</span>
+<span class="linenos">140</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">code</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">ADBC_STATUS_OK</span><span class="p">)</span>
+<span class="linenos">141</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos">142</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">AdbcConnection</span><span class="w"> </span><span class="n">connection</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+<span class="linenos">143</span><span class="w"> </span><span class="n">code</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">AdbcConnectionNew</span><span class="p">(</span><span class="o">&</span><span class="n">connection</span><span class="p">,</span><span class="w"> </span><span class="n">error</span><span class="p">);</span>
+<span class="linenos">144</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">code</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">ADBC_STATUS_OK</span><span class="p">)</span>
+<span class="linenos">145</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos">146</span><span class="w"> </span><span class="n">code</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">AdbcConnectionInit</span><span class="p">(</span><span class="o">&</span><span class="n">connection</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">database</span><span class="p">,</span><span class="w"> </span><span class="n">error</span><span class="p">) [...]
+<span class="linenos">147</span><span class="w"> </span><span class="n">AdbcConnectionRelease</span><span class="p">(</span><span class="o">&</span><span class="n">connection</span><span class="p">,</span><span class="w"> </span><span class="n">error</span><span class="p">);</span>
+<span class="linenos">148</span><span class="w"> </span><span class="p">}</span>
+<span class="linenos">149</span><span class="w"> </span><span class="p">}</span>
+<span class="linenos">150</span><span class="w"> </span><span class="n">AdbcDatabaseRelease</span><span class="p">(</span><span class="o">&</span><span class="n">database</span><span class="p">,</span><span class="w"> </span><span class="n">error</span><span class="p">);</span>
+<span class="linenos">151</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">code</span><span class="p">;</span>
+<span class="linenos">152</span><span class="p">}</span>
+<span class="linenos">153</span>
+<span class="linenos">154</span><span class="kt">int</span>
+<span class="linenos">155</span><span class="nf">main</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">argc</span><span class="p">,</span><span class="w"> </span><span class="kt">char</span><span class="o">**</span><span class="w"> </span><span class="n">argv</span><span class="p">)</span>
+<span class="linenos">156</span><span class="p">{</span>
+<span class="linenos">157</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">AdbcError</span><span class="w"> </span><span class="n">error</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ADBC_ERROR_INIT</span><span class="p">;</span>
+<span class="linenos">158</span><span class="w"> </span><span class="n">AdbcStatusCode</span><span class="w"> </span><span class="n">code</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">run</span><span class="p">(</span><span class="o">&</span><span class="n">error</span><span class="p">);</span>
+<span class="linenos">159</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">code</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">ADBC_STATUS_OK</span><span class="p">)</span>
+<span class="linenos">160</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos">161</span><span class="w"> </span><span class="n">printf</span><span class="p">(</span><span class="s">"Authenticated!</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span>
+<span class="linenos">162</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">EXIT_SUCCESS</span><span class="p">;</span>
+<span class="linenos">163</span><span class="w"> </span><span class="p">}</span>
+<span class="linenos">164</span><span class="w"> </span><span class="k">else</span>
+<span class="linenos">165</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos">166</span><span class="w"> </span><span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span><span class="w"> </span><span class="s">"%s</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">error</span><span class="p">.</span><span class="n">message</span><span class="p">);</span>
+<span class="linenos">167</span><span class="w"> </span><span class="n">error</span><span class="p">.</span><span class="n">release</span><span class="p">(</span><span class="o">&</span><span class="n">error</span><span class="p">);</span>
+<span class="linenos">168</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">EXIT_FAILURE</span><span class="p">;</span>
+<span class="linenos">169</span><span class="w"> </span><span class="p">}</span>
+<span class="linenos">170</span><span class="p">}</span>
+</pre></div>
+</div>
+</div>
+</div>
+</section>
+<section id="how-to-query">
+<h2>How to query<a class="headerlink" href="#how-to-query" title="Link to this heading">#</a></h2>
+<p>You can use an ad-hoc SQL statement or a prepared SQL statement to
+query.</p>
+<section id="ad-hoc-sql-statement">
+<h3>Ad-hoc SQL statement<a class="headerlink" href="#ad-hoc-sql-statement" title="Link to this heading">#</a></h3>
+<div class="tab-set docutils">
+<input checked="True" class="tab-input" id="tab-set--1-input--1" name="tab-set--1" type="radio"><label class="tab-label" for="tab-set--1-input--1">Apache Arrow Flight SQL C++ client</label><div class="tab-content docutils">
+<p>You need to use
+<a class="reference external" href="https://arrow.apache.org/docs/cpp/api/flightsql.html#_CPPv4N5arrow6flight3sql15FlightSqlClient7ExecuteERK17FlightCallOptionsRKNSt6stringERK11Transaction"><code class="docutils literal notranslate"><span class="pre">arrow::flight::sql::FlightSqlClient::Execute()</span></code></a>
+to execute a query.</p>
+<p>You need to use
+<a class="reference external" href="https://arrow.apache.org/docs/cpp/api/flightsql.html#_CPPv4N5arrow6flight3sql15FlightSqlClient5DoGetERK17FlightCallOptionsRK6Ticket"><code class="docutils literal notranslate"><span class="pre">arrow::flight::sql::FlightSqlClient::DoGet()</span></code></a>
+to get results.</p>
+<div class="highlight-c++ notranslate"><div class="highlight"><pre><span></span><span class="linenos"> 1</span><span class="n">arrow</span><span class="o">::</span><span class="n">Status</span>
+<span class="linenos"> 2</span><span class="nf">run</span><span class="p">()</span>
+<span class="linenos"> 3</span><span class="p">{</span>
+<span class="linenos"> 4</span><span class="w"> </span><span class="n">arrow</span><span class="o">::</span><span class="n">flight</span><span class="o">::</span><span class="n">FlightCallOptions</span><span class="w"> </span><span class="n">call_options</span><span class="p">;</span>
+<span class="linenos"> 5</span><span class="w"> </span><span class="n">ARROW_ASSIGN_OR_RAISE</span><span class="p">(</span><span class="k">auto</span><span class="w"> </span><span class="n">sql_client</span><span class="p">,</span><span class="w"> </span><span class="n">connect</span><span class="p">(</span><span class="n">call_options</span><span class="p">));</span>
+<span class="linenos"> 6</span><span class="w"> </span><span class="n">ARROW_ASSIGN_OR_RAISE</span><span class="p">(</span>
+<span class="linenos"> 7</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">info</span><span class="p">,</span>
+<span class="linenos"> 8</span><span class="w"> </span><span class="n">sql_client</span><span class="o">-></span><span class="n">Execute</span><span class="p">(</span><span class="n">call_options</span><span class="p">,</span><span class="w"> </span><span class="s">"SELECT 1 AS number, 'hello' AS string"</span><span class="p">));</span>
+<span class="linenos"> 9</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="k">auto</span><span class="o">&</span><span class="w"> </span><span class="n">endpoint</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="n">info</span><span class="o">-></span><span class="n">endpoints</span><span class="p">())</span>
+<span class="linenos">10</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos">11</span><span class="w"> </span><span class="n">ARROW_ASSIGN_OR_RAISE</span><span class="p">(</span><span class="k">auto</span><span class="w"> </span><span class="n">reader</span><span class="p">,</span>
+<span class="linenos">12</span><span class="w"> </span><span class="n">sql_client</span><span class="o">-></span><span class="n">DoGet</span><span class="p">(</span><span class="n">call_options</span><span class="p">,</span><span class="w"> </span><span class="n">endpoint</span><span class="p">.</span><span class="n">ticket</span><span class="p">));</span>
+<span class="linenos">13</span><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="nb">true</span><span class="p">)</span>
+<span class="linenos">14</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos">15</span><span class="w"> </span><span class="n">ARROW_ASSIGN_OR_RAISE</span><span class="p">(</span><span class="k">auto</span><span class="w"> </span><span class="n">chunk</span><span class="p">,</span><span class="w"> </span><span class="n">reader</span><span class="o">-></span><span class="n">Next</span><span class="p">());</span>
+<span class="linenos">16</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">chunk</span><span class="p">.</span><span class="n">data</span><span class="p">)</span>
+<span class="linenos">17</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos">18</span><span class="w"> </span><span class="k">break</span><span class="p">;</span>
+<span class="linenos">19</span><span class="w"> </span><span class="p">}</span>
+<span class="linenos">20</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">chunk</span><span class="p">.</span><span class="n">data</span><span class="o">-></span><span class="n">ToString</span><span class="p">()</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">std</span>< [...]
+<span class="linenos">21</span><span class="w"> </span><span class="p">}</span>
+<span class="linenos">22</span><span class="w"> </span><span class="p">}</span>
+<span class="linenos">23</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">sql_client</span><span class="o">-></span><span class="n">Close</span><span class="p">();</span>
+<span class="linenos">24</span><span class="p">}</span>
+</pre></div>
+</div>
+</div>
+<input class="tab-input" id="tab-set--1-input--2" name="tab-set--1" type="radio"><label class="tab-label" for="tab-set--1-input--2">ADBC Flight SQL driver</label><div class="tab-content docutils">
+<p>TODO</p>
+</div>
+</div>
+</section>
+<section id="prepared-sql-statement">
+<h3>Prepared SQL statement<a class="headerlink" href="#prepared-sql-statement" title="Link to this heading">#</a></h3>
+<div class="tab-set docutils">
+<input checked="True" class="tab-input" id="tab-set--2-input--1" name="tab-set--2" type="radio"><label class="tab-label" for="tab-set--2-input--1">Apache Arrow Flight SQL C++ client</label><div class="tab-content docutils">
+<p>You need to use
+<a class="reference external" href="https://arrow.apache.org/docs/cpp/api/flightsql.html#_CPPv4N5arrow6flight3sql15FlightSqlClient7PrepareERK17FlightCallOptionsRKNSt6stringERK11Transaction"><code class="docutils literal notranslate"><span class="pre">arrow::flight::sql::FlightSqlClient::Prepare()</span></code></a>
+to prepare a query.</p>
+<p>You need to use
+<a class="reference external" href="https://arrow.apache.org/docs/cpp/api/flightsql.html#_CPPv4N5arrow6flight3sql17PreparedStatement13SetParametersENSt10shared_ptrI11RecordBatchEE"><code class="docutils literal notranslate"><span class="pre">arrow::flight::sql::PreparedStatement::SetParameters()</span></code></a>
+to set parameters.</p>
+<p>You need to use
+<a class="reference external" href="https://arrow.apache.org/docs/cpp/api/flightsql.html#_CPPv4N5arrow6flight3sql17PreparedStatement7ExecuteERK17FlightCallOptions"><code class="docutils literal notranslate"><span class="pre">arrow::flight::sql::PreparedStatement::Execute()</span></code></a>
+to execute a prepared statement with parameters.</p>
+<p>You need to use
+<a class="reference external" href="https://arrow.apache.org/docs/cpp/api/flightsql.html#_CPPv4N5arrow6flight3sql15FlightSqlClient5DoGetERK17FlightCallOptionsRK6Ticket"><code class="docutils literal notranslate"><span class="pre">arrow::flight::sql::FlightSqlClient::DoGet()</span></code></a>
+to get results.</p>
+<div class="highlight-c++ notranslate"><div class="highlight"><pre><span></span><span class="linenos"> 1</span><span class="n">arrow</span><span class="o">::</span><span class="n">Status</span>
+<span class="linenos"> 2</span><span class="nf">run</span><span class="p">()</span>
+<span class="linenos"> 3</span><span class="p">{</span>
+<span class="linenos"> 4</span><span class="w"> </span><span class="n">arrow</span><span class="o">::</span><span class="n">flight</span><span class="o">::</span><span class="n">FlightCallOptions</span><span class="w"> </span><span class="n">call_options</span><span class="p">;</span>
+<span class="linenos"> 5</span><span class="w"> </span><span class="n">ARROW_ASSIGN_OR_RAISE</span><span class="p">(</span><span class="k">auto</span><span class="w"> </span><span class="n">sql_client</span><span class="p">,</span><span class="w"> </span><span class="n">connect</span><span class="p">(</span><span class="n">call_options</span><span class="p">));</span>
+<span class="linenos"> 6</span><span class="w"> </span><span class="n">ARROW_ASSIGN_OR_RAISE</span><span class="p">(</span><span class="k">auto</span><span class="w"> </span><span class="n">statement</span><span class="p">,</span>
+<span class="linenos"> 7</span><span class="w"> </span><span class="n">sql_client</span><span class="o">-></span><span class="n">Prepare</span><span class="p">(</span><span class="n">call_options</span><span class="p">,</span>
+<span class="linenos"> 8</span><span class="w"> </span><span class="s">"SELECT i "</span>
+<span class="linenos"> 9</span><span class="w"> </span><span class="s">" FROM generate_series(1, 100) "</span>
+<span class="linenos">10</span><span class="w"> </span><span class="s">" AS series (i) "</span>
+<span class="linenos">11</span><span class="w"> </span><span class="s">" WHERE i < $1"</span><span class="p">));</span>
+<span class="linenos">12</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">schema</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">arrow</span><span class="o">::</span><span class="n">schema</span><span class="p">({</span><span class="n">arrow</span><span class="o">::</span><span class="n">field</span><span class="p">(</span><span class="s">"i"</span><span class="p">,</span><span clas [...]
+<span class="linenos">13</span><span class="w"> </span><span class="n">ARROW_ASSIGN_OR_RAISE</span><span class="p">(</span>
+<span class="linenos">14</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">record_batch_builder</span><span class="p">,</span>
+<span class="linenos">15</span><span class="w"> </span><span class="n">arrow</span><span class="o">::</span><span class="n">RecordBatchBuilder</span><span class="o">::</span><span class="n">Make</span><span class="p">(</span><span class="n">schema</span><span class="p">,</span><span class="w"> </span><span class="n">arrow</span><span class="o">::</span><span class="n">default_memory_pool</span><span class="p">()));</span>
+<span class="linenos">16</span><span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">i_builder</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">record_batch_builder</span><span class="o">-></span><span class="n">GetFieldAs</span><span class="o"><</span><span class="n">arrow</span><span class="o">::</span><span class="n">Int32Builder</span><span class="o">></span><span class="p">(</span><span cla [...]
+<span class="linenos">17</span><span class="w"> </span><span class="n">ARROW_RETURN_NOT_OK</span><span class="p">(</span><span class="n">i_builder</span><span class="o">-></span><span class="n">Append</span><span class="p">(</span><span class="mi">10</span><span class="p">));</span>
+<span class="linenos">18</span><span class="w"> </span><span class="n">ARROW_ASSIGN_OR_RAISE</span><span class="p">(</span><span class="k">auto</span><span class="w"> </span><span class="n">record_batch</span><span class="p">,</span><span class="w"> </span><span class="n">record_batch_builder</span><span class="o">-></span><span class="n">Flush</span><span class="p">());</span>
+<span class="linenos">19</span><span class="w"> </span><span class="n">ARROW_RETURN_NOT_OK</span><span class="p">(</span><span class="n">statement</span><span class="o">-></span><span class="n">SetParameters</span><span class="p">(</span><span class="n">record_batch</span><span class="p">));</span>
+<span class="linenos">20</span><span class="w"> </span><span class="n">ARROW_ASSIGN_OR_RAISE</span><span class="p">(</span><span class="k">auto</span><span class="w"> </span><span class="n">info</span><span class="p">,</span><span class="w"> </span><span class="n">statement</span><span class="o">-></span><span class="n">Execute</span><span class="p">());</span>
+<span class="linenos">21</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="k">auto</span><span class="o">&</span><span class="w"> </span><span class="n">endpoint</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="n">info</span><span class="o">-></span><span class="n">endpoints</span><span class="p">())</span>
+<span class="linenos">22</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos">23</span><span class="w"> </span><span class="n">ARROW_ASSIGN_OR_RAISE</span><span class="p">(</span><span class="k">auto</span><span class="w"> </span><span class="n">reader</span><span class="p">,</span>
+<span class="linenos">24</span><span class="w"> </span><span class="n">sql_client</span><span class="o">-></span><span class="n">DoGet</span><span class="p">(</span><span class="n">call_options</span><span class="p">,</span><span class="w"> </span><span class="n">endpoint</span><span class="p">.</span><span class="n">ticket</span><span class="p">));</span>
+<span class="linenos">25</span><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="nb">true</span><span class="p">)</span>
+<span class="linenos">26</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos">27</span><span class="w"> </span><span class="n">ARROW_ASSIGN_OR_RAISE</span><span class="p">(</span><span class="k">auto</span><span class="w"> </span><span class="n">chunk</span><span class="p">,</span><span class="w"> </span><span class="n">reader</span><span class="o">-></span><span class="n">Next</span><span class="p">());</span>
+<span class="linenos">28</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">chunk</span><span class="p">.</span><span class="n">data</span><span class="p">)</span>
+<span class="linenos">29</span><span class="w"> </span><span class="p">{</span>
+<span class="linenos">30</span><span class="w"> </span><span class="k">break</span><span class="p">;</span>
+<span class="linenos">31</span><span class="w"> </span><span class="p">}</span>
+<span class="linenos">32</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">chunk</span><span class="p">.</span><span class="n">data</span><span class="o">-></span><span class="n">ToString</span><span class="p">()</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">std</span>< [...]
+<span class="linenos">33</span><span class="w"> </span><span class="p">}</span>
+<span class="linenos">34</span><span class="w"> </span><span class="p">}</span>
+<span class="linenos">35</span><span class="w"> </span><span class="n">ARROW_RETURN_NOT_OK</span><span class="p">(</span><span class="n">statement</span><span class="o">-></span><span class="n">Close</span><span class="p">());</span>
+<span class="linenos">36</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">sql_client</span><span class="o">-></span><span class="n">Close</span><span class="p">();</span>
+<span class="linenos">37</span><span class="p">}</span>
+</pre></div>
+</div>
+</div>
+<input class="tab-input" id="tab-set--2-input--2" name="tab-set--2" type="radio"><label class="tab-label" for="tab-set--2-input--2">ADBC Flight SQL driver</label><div class="tab-content docutils">
+<p>TODO</p>
+</div>
+</div>
+</section>
+</section>
+</section>
+
+
+ </article>
+
+
+
+ <footer class="bd-footer-article">
+
+<div class="footer-article-items footer-article__inner">
+
+ <div class="footer-article-item"><!-- Previous / next buttons -->
+<div class="prev-next-area">
+ <a class="left-prev"
+ href="configuration.html"
+ title="previous page">
+ <i class="fa-solid fa-angle-left"></i>
+ <div class="prev-next-info">
+ <p class="prev-next-subtitle">previous</p>
+ <p class="prev-next-title">Configuration</p>
+ </div>
+ </a>
+</div></div>
+
+</div>
+
+ </footer>
+
+ </div>
+
+
+
+ <div class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner">
+
+ <div class="sidebar-secondary-item">
+ <div class="page-toc tocsection onthispage">
+ <i class="fa-solid fa-list"></i> On this page
+ </div>
+ <nav class="bd-toc-nav page-toc">
+ <ul class="visible nav section-nav flex-column">
+<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#how-to-connect">How to connect</a></li>
+<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#how-to-query">How to query</a><ul class="nav section-nav flex-column">
+<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#ad-hoc-sql-statement">Ad-hoc SQL statement</a></li>
+<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#prepared-sql-statement">Prepared SQL statement</a></li>
+</ul>
+</li>
+</ul>
+ </nav></div>
+
+ <div class="sidebar-secondary-item">
+
+ <div class="tocsection editthispage">
+ <a href="https://github.com/apache/arrow-flight-sql-postgresql/edit/main/docs/source/client.md">
+ <i class="fa-solid fa-pencil"></i>
+
+
+
+ Edit on GitHub
+
+
+ </a>
+ </div>
+</div>
+
+ <div class="sidebar-secondary-item">
+ <div class="tocsection sourcelink">
+ <a href="_sources/client.md.txt">
+ <i class="fa-solid fa-file-lines"></i> Show Source
+ </a>
+ </div>
+</div>
+
+</div></div>
+
+
+ </div>
+ <footer class="bd-footer-content">
+
+ </footer>
+
+ </main>
+ </div>
+ </div>
+
+ <!-- Scripts loaded after <body> so the DOM is not blocked -->
+ <script src="_static/scripts/bootstrap.js?digest=e353d410970836974a52"></script>
+<script src="_static/scripts/pydata-sphinx-theme.js?digest=e353d410970836974a52"></script>
+
+ <footer class="bd-footer">
+<div class="bd-footer__inner bd-page-width">
+
+ <div class="footer-items__start">
+
+ <div class="footer-item">
+ <p class="copyright">
+
+ © Copyright 2022-2023, Apache Arrow Developers.
+ <br/>
+
+ </p>
+</div>
+
+ <div class="footer-item">
+ <p class="sphinx-version">
+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.2.4.
+ <br/>
+ </p>
+</div>
+
+ </div>
+
+
+ <div class="footer-items__end">
+
+ <div class="footer-item"><p class="theme-version">
+ Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.13.3.
+</p></div>
+
+ </div>
+
+</div>
+
+ </footer>
+ </body>
+</html>
\ No newline at end of file
diff --git a/devel/configuration.html b/devel/configuration.html
new file mode 100644
index 0000000..741ed38
--- /dev/null
+++ b/devel/configuration.html
@@ -0,0 +1,520 @@
+
+<!DOCTYPE html>
+
+
+<html lang="en" >
+
+ <head>
+ <meta charset="utf-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
+
+ <title>Configuration — Apache Arrow Flight SQL adapter for PostgreSQL 0.1.0 documentation</title>
+
+
+
+ <script data-cfasync="false">
+ document.documentElement.dataset.mode = localStorage.getItem("mode") || "";
+ document.documentElement.dataset.theme = localStorage.getItem("theme") || "light";
+ </script>
+
+ <!-- Loaded before other Sphinx assets -->
+ <link href="_static/styles/theme.css?digest=e353d410970836974a52" rel="stylesheet" />
+<link href="_static/styles/bootstrap.css?digest=e353d410970836974a52" rel="stylesheet" />
+<link href="_static/styles/pydata-sphinx-theme.css?digest=e353d410970836974a52" rel="stylesheet" />
+
+
+ <link href="_static/vendor/fontawesome/6.1.2/css/all.min.css?digest=e353d410970836974a52" rel="stylesheet" />
+ <link rel="preload" as="font" type="font/woff2" crossorigin href="_static/vendor/fontawesome/6.1.2/webfonts/fa-solid-900.woff2" />
+<link rel="preload" as="font" type="font/woff2" crossorigin href="_static/vendor/fontawesome/6.1.2/webfonts/fa-brands-400.woff2" />
+<link rel="preload" as="font" type="font/woff2" crossorigin href="_static/vendor/fontawesome/6.1.2/webfonts/fa-regular-400.woff2" />
+
+ <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=a746c00c" />
+ <link rel="stylesheet" type="text/css" href="_static/tabs.css?v=4c969af8" />
+
+ <!-- Pre-loaded scripts that we'll load fully later -->
+ <link rel="preload" as="script" href="_static/scripts/bootstrap.js?digest=e353d410970836974a52" />
+<link rel="preload" as="script" href="_static/scripts/pydata-sphinx-theme.js?digest=e353d410970836974a52" />
+
+ <script src="_static/documentation_options.js?v=38b66d78"></script>
+ <script src="_static/doctools.js?v=888ff710"></script>
+ <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
+ <script src="_static/tabs.js?v=3ee01567"></script>
+ <script>DOCUMENTATION_OPTIONS.pagename = 'configuration';</script>
+ <script>
+ DOCUMENTATION_OPTIONS.theme_switcher_json_url = 'https://arrow.apache.org/flight-sql-postgresql/devel/_static/switcher.json';
+ DOCUMENTATION_OPTIONS.theme_switcher_version_match = '0.1.0';
+ </script>
+ <link rel="index" title="Index" href="genindex.html" />
+ <link rel="search" title="Search" href="search.html" />
+ <link rel="next" title="Client" href="client.html" />
+ <link rel="prev" title="Install" href="install.html" />
+ <meta name="viewport" content="width=device-width, initial-scale=1"/>
+ <meta name="docsearch:language" content="en"/>
+ </head>
+
+
+ <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode="">
+
+
+
+ <a class="skip-link" href="#main-content">Skip to main content</a>
+
+ <input type="checkbox"
+ class="sidebar-toggle"
+ name="__primary"
+ id="__primary"/>
+ <label class="overlay overlay-primary" for="__primary"></label>
+
+ <input type="checkbox"
+ class="sidebar-toggle"
+ name="__secondary"
+ id="__secondary"/>
+ <label class="overlay overlay-secondary" for="__secondary"></label>
+
+ <div class="search-button__wrapper">
+ <div class="search-button__overlay"></div>
+ <div class="search-button__search-container">
+<form class="bd-search d-flex align-items-center"
+ action="search.html"
+ method="get">
+ <i class="fa-solid fa-magnifying-glass"></i>
+ <input type="search"
+ class="form-control"
+ name="q"
+ id="search-input"
+ placeholder="Search the docs ..."
+ aria-label="Search the docs ..."
+ autocomplete="off"
+ autocorrect="off"
+ autocapitalize="off"
+ spellcheck="false"/>
+ <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span>
+</form></div>
+ </div>
+
+ <nav class="bd-header navbar navbar-expand-lg bd-navbar">
+<div class="bd-header__inner bd-page-width">
+ <label class="sidebar-toggle primary-toggle" for="__primary">
+ <span class="fa-solid fa-bars"></span>
+ </label>
+
+ <div class="navbar-header-items__start">
+
+ <div class="navbar-item">
+
+
+<a class="navbar-brand logo" href="index.html">
+
+
+
+
+
+
+
+
+
+ <img src="_static/logo-light.png" class="logo__image only-light" alt="Apache Arrow Flight SQL adapter for PostgreSQL"/>
+ <script>document.write(`<img src="_static/logo-dark.png" class="logo__image only-dark" alt="Apache Arrow Flight SQL adapter for PostgreSQL"/>`);</script>
+
+
+</a></div>
+
+ </div>
+
+
+ <div class="col-lg-9 navbar-header-items">
+
+
+ <div class="navbar-header-items__end">
+
+ <div class="navbar-item navbar-persistent--container">
+
+<script>
+document.write(`
+ <button class="btn btn-sm navbar-btn search-button search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
+ <i class="fa-solid fa-magnifying-glass"></i>
+ </button>
+`);
+</script>
+ </div>
+
+
+ <div class="navbar-item">
+<script>
+document.write(`
+ <button class="theme-switch-button btn btn-sm btn-outline-primary navbar-btn rounded-circle" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
+ <span class="theme-switch" data-mode="light"><i class="fa-solid fa-sun"></i></span>
+ <span class="theme-switch" data-mode="dark"><i class="fa-solid fa-moon"></i></span>
+ <span class="theme-switch" data-mode="auto"><i class="fa-solid fa-circle-half-stroke"></i></span>
+ </button>
+`);
+</script></div>
+
+ <div class="navbar-item"><ul class="navbar-icon-links navbar-nav"
+ aria-label="Icon Links">
+ <li class="nav-item">
+
+
+
+
+
+
+
+
+ <a href="https://github.com/apache/arrow-flight-sql-postgresql" title="GitHub" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-github"></i></span>
+ <label class="sr-only">GitHub</label></a>
+ </li>
+</ul></div>
+
+ <div class="navbar-item">
+<script>
+document.write(`
+ <div class="version-switcher__container dropdown">
+ <button type="button" class="version-switcher__button btn btn-sm navbar-btn dropdown-toggle" data-bs-toggle="dropdown">
+ 0.1.0 <!-- this text may get changed later by javascript -->
+ <span class="caret"></span>
+ </button>
+ <div class="version-switcher__menu dropdown-menu list-group-flush py-0">
+ <!-- dropdown will be populated by javascript on page load -->
+ </div>
+ </div>
+`);
+</script></div>
+
+ </div>
+
+ </div>
+
+
+ <div class="navbar-persistent--mobile">
+<script>
+document.write(`
+ <button class="btn btn-sm navbar-btn search-button search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
+ <i class="fa-solid fa-magnifying-glass"></i>
+ </button>
+`);
+</script>
+ </div>
+
+
+
+ <label class="sidebar-toggle secondary-toggle" for="__secondary">
+ <span class="fa-solid fa-outdent"></span>
+ </label>
+
+</div>
+
+ </nav>
+
+ <div class="bd-container">
+ <div class="bd-container__inner bd-page-width">
+
+ <div class="bd-sidebar-primary bd-sidebar hide-on-wide">
+
+
+
+ <div class="sidebar-header-items sidebar-primary__section">
+
+
+
+
+ <div class="sidebar-header-items__end">
+
+ <div class="navbar-item">
+<script>
+document.write(`
+ <button class="theme-switch-button btn btn-sm btn-outline-primary navbar-btn rounded-circle" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
+ <span class="theme-switch" data-mode="light"><i class="fa-solid fa-sun"></i></span>
+ <span class="theme-switch" data-mode="dark"><i class="fa-solid fa-moon"></i></span>
+ <span class="theme-switch" data-mode="auto"><i class="fa-solid fa-circle-half-stroke"></i></span>
+ </button>
+`);
+</script></div>
+
+ <div class="navbar-item"><ul class="navbar-icon-links navbar-nav"
+ aria-label="Icon Links">
+ <li class="nav-item">
+
+
+
+
+
+
+
+
+ <a href="https://github.com/apache/arrow-flight-sql-postgresql" title="GitHub" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-github"></i></span>
+ <label class="sr-only">GitHub</label></a>
+ </li>
+</ul></div>
+
+ <div class="navbar-item">
+<script>
+document.write(`
+ <div class="version-switcher__container dropdown">
+ <button type="button" class="version-switcher__button btn btn-sm navbar-btn dropdown-toggle" data-bs-toggle="dropdown">
+ 0.1.0 <!-- this text may get changed later by javascript -->
+ <span class="caret"></span>
+ </button>
+ <div class="version-switcher__menu dropdown-menu list-group-flush py-0">
+ <!-- dropdown will be populated by javascript on page load -->
+ </div>
+ </div>
+`);
+</script></div>
+
+ </div>
+
+ </div>
+
+
+ <div class="sidebar-primary-items__end sidebar-primary__section">
+ </div>
+
+ <div id="rtd-footer-container"></div>
+
+
+ </div>
+
+ <main id="main-content" class="bd-main">
+
+
+ <div class="bd-content">
+ <div class="bd-article-container">
+
+ <div class="bd-header-article">
+<div class="header-article-items header-article__inner">
+
+ <div class="header-article-items__start">
+
+ <div class="header-article-item">
+
+
+
+<nav aria-label="Breadcrumbs">
+ <ul class="bd-breadcrumbs" role="navigation" aria-label="Breadcrumb">
+
+ <li class="breadcrumb-item breadcrumb-home">
+ <a href="index.html" class="nav-link" aria-label="Home">
+ <i class="fa-solid fa-home"></i>
+ </a>
+ </li>
+ <li class="breadcrumb-item active" aria-current="page">Configuration</li>
+ </ul>
+</nav>
+</div>
+
+ </div>
+
+
+</div>
+</div>
+
+
+
+
+<div id="searchbox"></div>
+ <article class="bd-article" role="main">
+
+ <!--
+ 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.
+-->
+<section class="tex2jax_ignore mathjax_ignore" id="configuration">
+<h1>Configuration<a class="headerlink" href="#configuration" title="Link to this heading">#</a></h1>
+<section id="shared-preload-libraries">
+<h2><code class="docutils literal notranslate"><span class="pre">shared_preload_libraries</span></code><a class="headerlink" href="#shared-preload-libraries" title="Link to this heading">#</a></h2>
+<p>You must add <code class="docutils literal notranslate"><span class="pre">arrow_flight_sql</span></code> to
+<a class="reference external" href="https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-SHARED-PRELOAD-LIBRARIES"><code class="docutils literal notranslate"><span class="pre">shared_preload_libraries</span></code></a>.</p>
+<p>You need to restart your PostgreSQL after changing
+<code class="docutils literal notranslate"><span class="pre">shared_preload_libraries</span></code>.</p>
+</section>
+<section id="arrow-flight-sql-uri">
+<h2><code class="docutils literal notranslate"><span class="pre">arrow_flight_sql.uri</span></code><a class="headerlink" href="#arrow-flight-sql-uri" title="Link to this heading">#</a></h2>
+<p>The endpoint URI for Apache Arrow Flight SQL.</p>
+<p>The default is <code class="docutils literal notranslate"><span class="pre">grpc://127.0.0.1:15432</span></code>.</p>
+<p>If you want to use TLS to connect the Apache Arrow Flight SQL
+endpoint, you need to do the followings:</p>
+<ol class="arabic simple">
+<li><p>Use <code class="docutils literal notranslate"><span class="pre">grpc+tls</span></code> schema such as <code class="docutils literal notranslate"><span class="pre">grpc+tls://127.0.0.1:15432</span></code> for
+<code class="docutils literal notranslate"><span class="pre">arrow_flight_sql.uri</span></code></p></li>
+<li><p>Prepare the standard PostgreSQL TLS configurations such as
+<a class="reference external" href="https://www.postgresql.org/docs/current/runtime-config-connection.html#GUC-SSL"><code class="docutils literal notranslate"><span class="pre">ssl</span></code></a>,
+<a class="reference external" href="https://www.postgresql.org/docs/current/runtime-config-connection.html#GUC-SSL-CA-FILE"><code class="docutils literal notranslate"><span class="pre">ssl_ca_file</span></code></a>. Apache Arrow Flight SQL
+adapter for PostgreSQL uses the PostgreSQL’s TLS configurations. So
+you don’t need to prepare TLS related things only for Apache Arrow
+Flight SQL for PostgreSQL. See also the PostgreSQL’s <a class="reference external" href="https://www.postgresql.org/docs/current/ssl-tcp.html">Secure TCP/IP
+Connections with SSL</a> documentation.</p></li>
+</ol>
+<p>Note that you also need to setup client side. For example, see the
+following documentations for the C++ implementation of Apache Arrow
+Flight SQL client:</p>
+<ul class="simple">
+<li><p><a class="reference external" href="https://arrow.apache.org/docs/cpp/flight.html#enabling-tls">Enable TLS</a></p></li>
+</ul>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<p>mTLS (mutual-TLS) isn’t implemented yet. If you’re interested in mTLS,
+please see the issue for it: <a class="github reference external" href="https://github.com/apache/arrow-flight-sql-postgresql/issues/79">apache/arrow-flight-sql-postgresql#79</a></p>
+</div>
+</section>
+<section id="arrow-flight-sql-session-timeout">
+<h2><code class="docutils literal notranslate"><span class="pre">arrow_flight_sql.session_timeout</span></code><a class="headerlink" href="#arrow-flight-sql-session-timeout" title="Link to this heading">#</a></h2>
+<p>The maximum session duration in seconds.</p>
+<p>The default is 300 seconds.</p>
+<p>-1 means no timeout.</p>
+<p>If no query is executed during the timeout, the session is closed
+automatically.</p>
+</section>
+<section id="arrow-flight-sql-max-n-rows-per-record-batch">
+<h2><code class="docutils literal notranslate"><span class="pre">arrow_flight_sql.max_n_rows_per_record_batch</span></code><a class="headerlink" href="#arrow-flight-sql-max-n-rows-per-record-batch" title="Link to this heading">#</a></h2>
+<p>The maximum number of rows per record batch.</p>
+<p>The default is 1 * 1024 * 1024 rows.</p>
+<p>If this value is small, total data exchange time will be slower.</p>
+<p>If this value is larger, latency will be larger.</p>
+</section>
+</section>
+
+
+ </article>
+
+
+
+ <footer class="bd-footer-article">
+
+<div class="footer-article-items footer-article__inner">
+
+ <div class="footer-article-item"><!-- Previous / next buttons -->
+<div class="prev-next-area">
+ <a class="left-prev"
+ href="install.html"
+ title="previous page">
+ <i class="fa-solid fa-angle-left"></i>
+ <div class="prev-next-info">
+ <p class="prev-next-subtitle">previous</p>
+ <p class="prev-next-title">Install</p>
+ </div>
+ </a>
+ <a class="right-next"
+ href="client.html"
+ title="next page">
+ <div class="prev-next-info">
+ <p class="prev-next-subtitle">next</p>
+ <p class="prev-next-title">Client</p>
+ </div>
+ <i class="fa-solid fa-angle-right"></i>
+ </a>
+</div></div>
+
+</div>
+
+ </footer>
+
+ </div>
+
+
+
+ <div class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner">
+
+ <div class="sidebar-secondary-item">
+ <div class="page-toc tocsection onthispage">
+ <i class="fa-solid fa-list"></i> On this page
+ </div>
+ <nav class="bd-toc-nav page-toc">
+ <ul class="visible nav section-nav flex-column">
+<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#shared-preload-libraries"><code class="docutils literal notranslate"><span class="pre">shared_preload_libraries</span></code></a></li>
+<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#arrow-flight-sql-uri"><code class="docutils literal notranslate"><span class="pre">arrow_flight_sql.uri</span></code></a></li>
+<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#arrow-flight-sql-session-timeout"><code class="docutils literal notranslate"><span class="pre">arrow_flight_sql.session_timeout</span></code></a></li>
+<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#arrow-flight-sql-max-n-rows-per-record-batch"><code class="docutils literal notranslate"><span class="pre">arrow_flight_sql.max_n_rows_per_record_batch</span></code></a></li>
+</ul>
+ </nav></div>
+
+ <div class="sidebar-secondary-item">
+
+ <div class="tocsection editthispage">
+ <a href="https://github.com/apache/arrow-flight-sql-postgresql/edit/main/docs/source/configuration.md">
+ <i class="fa-solid fa-pencil"></i>
+
+
+
+ Edit on GitHub
+
+
+ </a>
+ </div>
+</div>
+
+ <div class="sidebar-secondary-item">
+ <div class="tocsection sourcelink">
+ <a href="_sources/configuration.md.txt">
+ <i class="fa-solid fa-file-lines"></i> Show Source
+ </a>
+ </div>
+</div>
+
+</div></div>
+
+
+ </div>
+ <footer class="bd-footer-content">
+
+ </footer>
+
+ </main>
+ </div>
+ </div>
+
+ <!-- Scripts loaded after <body> so the DOM is not blocked -->
+ <script src="_static/scripts/bootstrap.js?digest=e353d410970836974a52"></script>
+<script src="_static/scripts/pydata-sphinx-theme.js?digest=e353d410970836974a52"></script>
+
+ <footer class="bd-footer">
+<div class="bd-footer__inner bd-page-width">
+
+ <div class="footer-items__start">
+
+ <div class="footer-item">
+ <p class="copyright">
+
+ © Copyright 2022-2023, Apache Arrow Developers.
+ <br/>
+
+ </p>
+</div>
+
+ <div class="footer-item">
+ <p class="sphinx-version">
+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.2.4.
+ <br/>
+ </p>
+</div>
+
+ </div>
+
+
+ <div class="footer-items__end">
+
+ <div class="footer-item"><p class="theme-version">
+ Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.13.3.
+</p></div>
+
+ </div>
+
+</div>
+
+ </footer>
+ </body>
+</html>
\ No newline at end of file
diff --git a/devel/genindex.html b/devel/genindex.html
new file mode 100644
index 0000000..a07b022
--- /dev/null
+++ b/devel/genindex.html
@@ -0,0 +1,363 @@
+
+<!DOCTYPE html>
+
+
+<html lang="en" >
+
+ <head>
+ <meta charset="utf-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>Index — Apache Arrow Flight SQL adapter for PostgreSQL 0.1.0 documentation</title>
+
+
+
+ <script data-cfasync="false">
+ document.documentElement.dataset.mode = localStorage.getItem("mode") || "";
+ document.documentElement.dataset.theme = localStorage.getItem("theme") || "light";
+ </script>
+
+ <!-- Loaded before other Sphinx assets -->
+ <link href="_static/styles/theme.css?digest=e353d410970836974a52" rel="stylesheet" />
+<link href="_static/styles/bootstrap.css?digest=e353d410970836974a52" rel="stylesheet" />
+<link href="_static/styles/pydata-sphinx-theme.css?digest=e353d410970836974a52" rel="stylesheet" />
+
+
+ <link href="_static/vendor/fontawesome/6.1.2/css/all.min.css?digest=e353d410970836974a52" rel="stylesheet" />
+ <link rel="preload" as="font" type="font/woff2" crossorigin href="_static/vendor/fontawesome/6.1.2/webfonts/fa-solid-900.woff2" />
+<link rel="preload" as="font" type="font/woff2" crossorigin href="_static/vendor/fontawesome/6.1.2/webfonts/fa-brands-400.woff2" />
+<link rel="preload" as="font" type="font/woff2" crossorigin href="_static/vendor/fontawesome/6.1.2/webfonts/fa-regular-400.woff2" />
+
+ <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=a746c00c" />
+ <link rel="stylesheet" type="text/css" href="_static/tabs.css?v=4c969af8" />
+
+ <!-- Pre-loaded scripts that we'll load fully later -->
+ <link rel="preload" as="script" href="_static/scripts/bootstrap.js?digest=e353d410970836974a52" />
+<link rel="preload" as="script" href="_static/scripts/pydata-sphinx-theme.js?digest=e353d410970836974a52" />
+
+ <script src="_static/documentation_options.js?v=38b66d78"></script>
+ <script src="_static/doctools.js?v=888ff710"></script>
+ <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
+ <script src="_static/tabs.js?v=3ee01567"></script>
+ <script>DOCUMENTATION_OPTIONS.pagename = 'genindex';</script>
+ <script>
+ DOCUMENTATION_OPTIONS.theme_switcher_json_url = 'https://arrow.apache.org/flight-sql-postgresql/devel/_static/switcher.json';
+ DOCUMENTATION_OPTIONS.theme_switcher_version_match = '0.1.0';
+ </script>
+ <link rel="index" title="Index" href="#" />
+ <link rel="search" title="Search" href="search.html" />
+ <meta name="viewport" content="width=device-width, initial-scale=1"/>
+ <meta name="docsearch:language" content="en"/>
+ </head>
+
+
+ <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode="">
+
+
+
+ <a class="skip-link" href="#main-content">Skip to main content</a>
+
+ <input type="checkbox"
+ class="sidebar-toggle"
+ name="__primary"
+ id="__primary"/>
+ <label class="overlay overlay-primary" for="__primary"></label>
+
+ <input type="checkbox"
+ class="sidebar-toggle"
+ name="__secondary"
+ id="__secondary"/>
+ <label class="overlay overlay-secondary" for="__secondary"></label>
+
+ <div class="search-button__wrapper">
+ <div class="search-button__overlay"></div>
+ <div class="search-button__search-container">
+<form class="bd-search d-flex align-items-center"
+ action="search.html"
+ method="get">
+ <i class="fa-solid fa-magnifying-glass"></i>
+ <input type="search"
+ class="form-control"
+ name="q"
+ id="search-input"
+ placeholder="Search the docs ..."
+ aria-label="Search the docs ..."
+ autocomplete="off"
+ autocorrect="off"
+ autocapitalize="off"
+ spellcheck="false"/>
+ <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span>
+</form></div>
+ </div>
+
+ <nav class="bd-header navbar navbar-expand-lg bd-navbar">
+<div class="bd-header__inner bd-page-width">
+ <label class="sidebar-toggle primary-toggle" for="__primary">
+ <span class="fa-solid fa-bars"></span>
+ </label>
+
+ <div class="navbar-header-items__start">
+
+ <div class="navbar-item">
+
+
+<a class="navbar-brand logo" href="index.html">
+
+
+
+
+
+
+
+
+
+ <img src="_static/logo-light.png" class="logo__image only-light" alt="Apache Arrow Flight SQL adapter for PostgreSQL"/>
+ <script>document.write(`<img src="_static/logo-dark.png" class="logo__image only-dark" alt="Apache Arrow Flight SQL adapter for PostgreSQL"/>`);</script>
+
+
+</a></div>
+
+ </div>
+
+
+ <div class="col-lg-9 navbar-header-items">
+
+
+ <div class="navbar-header-items__end">
+
+ <div class="navbar-item navbar-persistent--container">
+
+<script>
+document.write(`
+ <button class="btn btn-sm navbar-btn search-button search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
+ <i class="fa-solid fa-magnifying-glass"></i>
+ </button>
+`);
+</script>
+ </div>
+
+
+ <div class="navbar-item">
+<script>
+document.write(`
+ <button class="theme-switch-button btn btn-sm btn-outline-primary navbar-btn rounded-circle" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
+ <span class="theme-switch" data-mode="light"><i class="fa-solid fa-sun"></i></span>
+ <span class="theme-switch" data-mode="dark"><i class="fa-solid fa-moon"></i></span>
+ <span class="theme-switch" data-mode="auto"><i class="fa-solid fa-circle-half-stroke"></i></span>
+ </button>
+`);
+</script></div>
+
+ <div class="navbar-item"><ul class="navbar-icon-links navbar-nav"
+ aria-label="Icon Links">
+ <li class="nav-item">
+
+
+
+
+
+
+
+
+ <a href="https://github.com/apache/arrow-flight-sql-postgresql" title="GitHub" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-github"></i></span>
+ <label class="sr-only">GitHub</label></a>
+ </li>
+</ul></div>
+
+ <div class="navbar-item">
+<script>
+document.write(`
+ <div class="version-switcher__container dropdown">
+ <button type="button" class="version-switcher__button btn btn-sm navbar-btn dropdown-toggle" data-bs-toggle="dropdown">
+ 0.1.0 <!-- this text may get changed later by javascript -->
+ <span class="caret"></span>
+ </button>
+ <div class="version-switcher__menu dropdown-menu list-group-flush py-0">
+ <!-- dropdown will be populated by javascript on page load -->
+ </div>
+ </div>
+`);
+</script></div>
+
+ </div>
+
+ </div>
+
+
+ <div class="navbar-persistent--mobile">
+<script>
+document.write(`
+ <button class="btn btn-sm navbar-btn search-button search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
+ <i class="fa-solid fa-magnifying-glass"></i>
+ </button>
+`);
+</script>
+ </div>
+
+
+
+</div>
+
+ </nav>
+
+ <div class="bd-container">
+ <div class="bd-container__inner bd-page-width">
+
+ <div class="bd-sidebar-primary bd-sidebar hide-on-wide">
+
+
+
+ <div class="sidebar-header-items sidebar-primary__section">
+
+
+
+
+ <div class="sidebar-header-items__end">
+
+ <div class="navbar-item">
+<script>
+document.write(`
+ <button class="theme-switch-button btn btn-sm btn-outline-primary navbar-btn rounded-circle" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
+ <span class="theme-switch" data-mode="light"><i class="fa-solid fa-sun"></i></span>
+ <span class="theme-switch" data-mode="dark"><i class="fa-solid fa-moon"></i></span>
+ <span class="theme-switch" data-mode="auto"><i class="fa-solid fa-circle-half-stroke"></i></span>
+ </button>
+`);
+</script></div>
+
+ <div class="navbar-item"><ul class="navbar-icon-links navbar-nav"
+ aria-label="Icon Links">
+ <li class="nav-item">
+
+
+
+
+
+
+
+
+ <a href="https://github.com/apache/arrow-flight-sql-postgresql" title="GitHub" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-github"></i></span>
+ <label class="sr-only">GitHub</label></a>
+ </li>
+</ul></div>
+
+ <div class="navbar-item">
+<script>
+document.write(`
+ <div class="version-switcher__container dropdown">
+ <button type="button" class="version-switcher__button btn btn-sm navbar-btn dropdown-toggle" data-bs-toggle="dropdown">
+ 0.1.0 <!-- this text may get changed later by javascript -->
+ <span class="caret"></span>
+ </button>
+ <div class="version-switcher__menu dropdown-menu list-group-flush py-0">
+ <!-- dropdown will be populated by javascript on page load -->
+ </div>
+ </div>
+`);
+</script></div>
+
+ </div>
+
+ </div>
+
+
+ <div class="sidebar-primary-items__end sidebar-primary__section">
+ </div>
+
+ <div id="rtd-footer-container"></div>
+
+
+ </div>
+
+ <main id="main-content" class="bd-main">
+
+
+ <div class="bd-content">
+ <div class="bd-article-container">
+
+ <div class="bd-header-article"></div>
+
+
+
+
+<div id="searchbox"></div>
+ <article class="bd-article" role="main">
+
+
+<h1 id="index">Index</h1>
+
+<div class="genindex-jumpbox">
+
+</div>
+
+
+ </article>
+
+
+
+ <footer class="bd-footer-article">
+
+<div class="footer-article-items footer-article__inner">
+
+ <div class="footer-article-item"><!-- Previous / next buttons -->
+<div class="prev-next-area">
+</div></div>
+
+</div>
+
+ </footer>
+
+ </div>
+
+
+
+
+ </div>
+ <footer class="bd-footer-content">
+
+ </footer>
+
+ </main>
+ </div>
+ </div>
+
+ <!-- Scripts loaded after <body> so the DOM is not blocked -->
+ <script src="_static/scripts/bootstrap.js?digest=e353d410970836974a52"></script>
+<script src="_static/scripts/pydata-sphinx-theme.js?digest=e353d410970836974a52"></script>
+
+ <footer class="bd-footer">
+<div class="bd-footer__inner bd-page-width">
+
+ <div class="footer-items__start">
+
+ <div class="footer-item">
+ <p class="copyright">
+
+ © Copyright 2022-2023, Apache Arrow Developers.
+ <br/>
+
+ </p>
+</div>
+
+ <div class="footer-item">
+ <p class="sphinx-version">
+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.2.4.
+ <br/>
+ </p>
+</div>
+
+ </div>
+
+
+ <div class="footer-items__end">
+
+ <div class="footer-item"><p class="theme-version">
+ Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.13.3.
+</p></div>
+
+ </div>
+
+</div>
+
+ </footer>
+ </body>
+</html>
\ No newline at end of file
diff --git a/devel/index.html b/devel/index.html
new file mode 100644
index 0000000..2f0e055
--- /dev/null
+++ b/devel/index.html
@@ -0,0 +1,465 @@
+
+<!DOCTYPE html>
+
+
+<html lang="en" >
+
+ <head>
+ <meta charset="utf-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
+
+ <title>Apache Arrow Flight SQL adapter for PostgreSQL — Apache Arrow Flight SQL adapter for PostgreSQL 0.1.0 documentation</title>
+
+
+
+ <script data-cfasync="false">
+ document.documentElement.dataset.mode = localStorage.getItem("mode") || "";
+ document.documentElement.dataset.theme = localStorage.getItem("theme") || "light";
+ </script>
+
+ <!-- Loaded before other Sphinx assets -->
+ <link href="_static/styles/theme.css?digest=e353d410970836974a52" rel="stylesheet" />
+<link href="_static/styles/bootstrap.css?digest=e353d410970836974a52" rel="stylesheet" />
+<link href="_static/styles/pydata-sphinx-theme.css?digest=e353d410970836974a52" rel="stylesheet" />
+
+
+ <link href="_static/vendor/fontawesome/6.1.2/css/all.min.css?digest=e353d410970836974a52" rel="stylesheet" />
+ <link rel="preload" as="font" type="font/woff2" crossorigin href="_static/vendor/fontawesome/6.1.2/webfonts/fa-solid-900.woff2" />
+<link rel="preload" as="font" type="font/woff2" crossorigin href="_static/vendor/fontawesome/6.1.2/webfonts/fa-brands-400.woff2" />
+<link rel="preload" as="font" type="font/woff2" crossorigin href="_static/vendor/fontawesome/6.1.2/webfonts/fa-regular-400.woff2" />
+
+ <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=a746c00c" />
+ <link rel="stylesheet" type="text/css" href="_static/tabs.css?v=4c969af8" />
+
+ <!-- Pre-loaded scripts that we'll load fully later -->
+ <link rel="preload" as="script" href="_static/scripts/bootstrap.js?digest=e353d410970836974a52" />
+<link rel="preload" as="script" href="_static/scripts/pydata-sphinx-theme.js?digest=e353d410970836974a52" />
+
+ <script src="_static/documentation_options.js?v=38b66d78"></script>
+ <script src="_static/doctools.js?v=888ff710"></script>
+ <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
+ <script src="_static/tabs.js?v=3ee01567"></script>
+ <script>DOCUMENTATION_OPTIONS.pagename = 'index';</script>
+ <script>
+ DOCUMENTATION_OPTIONS.theme_switcher_json_url = 'https://arrow.apache.org/flight-sql-postgresql/devel/_static/switcher.json';
+ DOCUMENTATION_OPTIONS.theme_switcher_version_match = '0.1.0';
+ </script>
+ <link rel="index" title="Index" href="genindex.html" />
+ <link rel="search" title="Search" href="search.html" />
+ <link rel="next" title="Release notes" href="release-notes.html" />
+ <meta name="viewport" content="width=device-width, initial-scale=1"/>
+ <meta name="docsearch:language" content="en"/>
+ </head>
+
+
+ <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode="">
+
+
+
+ <a class="skip-link" href="#main-content">Skip to main content</a>
+
+ <input type="checkbox"
+ class="sidebar-toggle"
+ name="__primary"
+ id="__primary"/>
+ <label class="overlay overlay-primary" for="__primary"></label>
+
+ <input type="checkbox"
+ class="sidebar-toggle"
+ name="__secondary"
+ id="__secondary"/>
+ <label class="overlay overlay-secondary" for="__secondary"></label>
+
+ <div class="search-button__wrapper">
+ <div class="search-button__overlay"></div>
+ <div class="search-button__search-container">
+<form class="bd-search d-flex align-items-center"
+ action="search.html"
+ method="get">
+ <i class="fa-solid fa-magnifying-glass"></i>
+ <input type="search"
+ class="form-control"
+ name="q"
+ id="search-input"
+ placeholder="Search the docs ..."
+ aria-label="Search the docs ..."
+ autocomplete="off"
+ autocorrect="off"
+ autocapitalize="off"
+ spellcheck="false"/>
+ <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span>
+</form></div>
+ </div>
+
+ <nav class="bd-header navbar navbar-expand-lg bd-navbar">
+<div class="bd-header__inner bd-page-width">
+ <label class="sidebar-toggle primary-toggle" for="__primary">
+ <span class="fa-solid fa-bars"></span>
+ </label>
+
+ <div class="navbar-header-items__start">
+
+ <div class="navbar-item">
+
+
+<a class="navbar-brand logo" href="#">
+
+
+
+
+
+
+
+
+
+ <img src="_static/logo-light.png" class="logo__image only-light" alt="Apache Arrow Flight SQL adapter for PostgreSQL"/>
+ <script>document.write(`<img src="_static/logo-dark.png" class="logo__image only-dark" alt="Apache Arrow Flight SQL adapter for PostgreSQL"/>`);</script>
+
+
+</a></div>
+
+ </div>
+
+
+ <div class="col-lg-9 navbar-header-items">
+
+
+ <div class="navbar-header-items__end">
+
+ <div class="navbar-item navbar-persistent--container">
+
+<script>
+document.write(`
+ <button class="btn btn-sm navbar-btn search-button search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
+ <i class="fa-solid fa-magnifying-glass"></i>
+ </button>
+`);
+</script>
+ </div>
+
+
+ <div class="navbar-item">
+<script>
+document.write(`
+ <button class="theme-switch-button btn btn-sm btn-outline-primary navbar-btn rounded-circle" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
+ <span class="theme-switch" data-mode="light"><i class="fa-solid fa-sun"></i></span>
+ <span class="theme-switch" data-mode="dark"><i class="fa-solid fa-moon"></i></span>
+ <span class="theme-switch" data-mode="auto"><i class="fa-solid fa-circle-half-stroke"></i></span>
+ </button>
+`);
+</script></div>
+
+ <div class="navbar-item"><ul class="navbar-icon-links navbar-nav"
+ aria-label="Icon Links">
+ <li class="nav-item">
+
+
+
+
+
+
+
+
+ <a href="https://github.com/apache/arrow-flight-sql-postgresql" title="GitHub" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-github"></i></span>
+ <label class="sr-only">GitHub</label></a>
+ </li>
+</ul></div>
+
+ <div class="navbar-item">
+<script>
+document.write(`
+ <div class="version-switcher__container dropdown">
+ <button type="button" class="version-switcher__button btn btn-sm navbar-btn dropdown-toggle" data-bs-toggle="dropdown">
+ 0.1.0 <!-- this text may get changed later by javascript -->
+ <span class="caret"></span>
+ </button>
+ <div class="version-switcher__menu dropdown-menu list-group-flush py-0">
+ <!-- dropdown will be populated by javascript on page load -->
+ </div>
+ </div>
+`);
+</script></div>
+
+ </div>
+
+ </div>
+
+
+ <div class="navbar-persistent--mobile">
+<script>
+document.write(`
+ <button class="btn btn-sm navbar-btn search-button search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
+ <i class="fa-solid fa-magnifying-glass"></i>
+ </button>
+`);
+</script>
+ </div>
+
+
+
+ <label class="sidebar-toggle secondary-toggle" for="__secondary">
+ <span class="fa-solid fa-outdent"></span>
+ </label>
+
+</div>
+
+ </nav>
+
+ <div class="bd-container">
+ <div class="bd-container__inner bd-page-width">
+
+ <div class="bd-sidebar-primary bd-sidebar hide-on-wide">
+
+
+
+ <div class="sidebar-header-items sidebar-primary__section">
+
+
+
+
+ <div class="sidebar-header-items__end">
+
+ <div class="navbar-item">
+<script>
+document.write(`
+ <button class="theme-switch-button btn btn-sm btn-outline-primary navbar-btn rounded-circle" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
+ <span class="theme-switch" data-mode="light"><i class="fa-solid fa-sun"></i></span>
+ <span class="theme-switch" data-mode="dark"><i class="fa-solid fa-moon"></i></span>
+ <span class="theme-switch" data-mode="auto"><i class="fa-solid fa-circle-half-stroke"></i></span>
+ </button>
+`);
+</script></div>
+
+ <div class="navbar-item"><ul class="navbar-icon-links navbar-nav"
+ aria-label="Icon Links">
+ <li class="nav-item">
+
+
+
+
+
+
+
+
+ <a href="https://github.com/apache/arrow-flight-sql-postgresql" title="GitHub" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-github"></i></span>
+ <label class="sr-only">GitHub</label></a>
+ </li>
+</ul></div>
+
+ <div class="navbar-item">
+<script>
+document.write(`
+ <div class="version-switcher__container dropdown">
+ <button type="button" class="version-switcher__button btn btn-sm navbar-btn dropdown-toggle" data-bs-toggle="dropdown">
+ 0.1.0 <!-- this text may get changed later by javascript -->
+ <span class="caret"></span>
+ </button>
+ <div class="version-switcher__menu dropdown-menu list-group-flush py-0">
+ <!-- dropdown will be populated by javascript on page load -->
+ </div>
+ </div>
+`);
+</script></div>
+
+ </div>
+
+ </div>
+
+
+ <div class="sidebar-primary-items__end sidebar-primary__section">
+ </div>
+
+ <div id="rtd-footer-container"></div>
+
+
+ </div>
+
+ <main id="main-content" class="bd-main">
+
+
+ <div class="bd-content">
+ <div class="bd-article-container">
+
+ <div class="bd-header-article"></div>
+
+
+
+
+<div id="searchbox"></div>
+ <article class="bd-article" role="main">
+
+ <!--
+ 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.
+-->
+<section class="tex2jax_ignore mathjax_ignore" id="apache-arrow-flight-sql-adapter-for-postgresql">
+<h1>Apache Arrow Flight SQL adapter for PostgreSQL<a class="headerlink" href="#apache-arrow-flight-sql-adapter-for-postgresql" title="Link to this heading">#</a></h1>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="release-notes.html">Release notes</a></li>
+</ul>
+</div>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="overview.html">Overview</a></li>
+<li class="toctree-l1"><a class="reference internal" href="install.html">Install</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="install.html#debian-gnu-linux-and-ubuntu">Debian GNU/Linux and Ubuntu</a></li>
+<li class="toctree-l2"><a class="reference internal" href="install.html#source">Source</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="configuration.html">Configuration</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="configuration.html#shared-preload-libraries"><code class="docutils literal notranslate"><span class="pre">shared_preload_libraries</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="configuration.html#arrow-flight-sql-uri"><code class="docutils literal notranslate"><span class="pre">arrow_flight_sql.uri</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="configuration.html#arrow-flight-sql-session-timeout"><code class="docutils literal notranslate"><span class="pre">arrow_flight_sql.session_timeout</span></code></a></li>
+<li class="toctree-l2"><a class="reference internal" href="configuration.html#arrow-flight-sql-max-n-rows-per-record-batch"><code class="docutils literal notranslate"><span class="pre">arrow_flight_sql.max_n_rows_per_record_batch</span></code></a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="client.html">Client</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="client.html#how-to-connect">How to connect</a></li>
+<li class="toctree-l2"><a class="reference internal" href="client.html#how-to-query">How to query</a></li>
+</ul>
+</li>
+</ul>
+</div>
+<section id="indices-and-tables">
+<h2>Indices and tables<a class="headerlink" href="#indices-and-tables" title="Link to this heading">#</a></h2>
+<ul class="simple">
+<li><p><a class="reference internal" href="genindex.html"><span class="std std-ref">Index</span></a></p></li>
+<li><p><a class="reference internal" href="py-modindex.html"><span class="std std-ref">Module Index</span></a></p></li>
+<li><p><a class="reference internal" href="search.html"><span class="std std-ref">Search Page</span></a></p></li>
+</ul>
+</section>
+</section>
+
+
+ </article>
+
+
+
+ <footer class="bd-footer-article">
+
+<div class="footer-article-items footer-article__inner">
+
+ <div class="footer-article-item"><!-- Previous / next buttons -->
+<div class="prev-next-area">
+ <a class="right-next"
+ href="release-notes.html"
+ title="next page">
+ <div class="prev-next-info">
+ <p class="prev-next-subtitle">next</p>
+ <p class="prev-next-title">Release notes</p>
+ </div>
+ <i class="fa-solid fa-angle-right"></i>
+ </a>
+</div></div>
+
+</div>
+
+ </footer>
+
+ </div>
+
+
+
+ <div class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner">
+
+ <div class="sidebar-secondary-item">
+ <div class="page-toc tocsection onthispage">
+ <i class="fa-solid fa-list"></i> On this page
+ </div>
+ <nav class="bd-toc-nav page-toc">
+ <ul class="visible nav section-nav flex-column">
+<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#indices-and-tables">Indices and tables</a></li>
+</ul>
+ </nav></div>
+
+ <div class="sidebar-secondary-item">
+
+ <div class="tocsection editthispage">
+ <a href="https://github.com/apache/arrow-flight-sql-postgresql/edit/main/docs/source/index.md">
+ <i class="fa-solid fa-pencil"></i>
+
+
+
+ Edit on GitHub
+
+
+ </a>
+ </div>
+</div>
+
+ <div class="sidebar-secondary-item">
+ <div class="tocsection sourcelink">
+ <a href="_sources/index.md.txt">
+ <i class="fa-solid fa-file-lines"></i> Show Source
+ </a>
+ </div>
+</div>
+
+</div></div>
+
+
+ </div>
+ <footer class="bd-footer-content">
+
+ </footer>
+
+ </main>
+ </div>
+ </div>
+
+ <!-- Scripts loaded after <body> so the DOM is not blocked -->
+ <script src="_static/scripts/bootstrap.js?digest=e353d410970836974a52"></script>
+<script src="_static/scripts/pydata-sphinx-theme.js?digest=e353d410970836974a52"></script>
+
+ <footer class="bd-footer">
+<div class="bd-footer__inner bd-page-width">
+
+ <div class="footer-items__start">
+
+ <div class="footer-item">
+ <p class="copyright">
+
+ © Copyright 2022-2023, Apache Arrow Developers.
+ <br/>
+
+ </p>
+</div>
+
+ <div class="footer-item">
+ <p class="sphinx-version">
+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.2.4.
+ <br/>
+ </p>
+</div>
+
+ </div>
+
+
+ <div class="footer-items__end">
+
+ <div class="footer-item"><p class="theme-version">
+ Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.13.3.
+</p></div>
+
+ </div>
+
+</div>
+
+ </footer>
+ </body>
+</html>
\ No newline at end of file
diff --git a/devel/install.html b/devel/install.html
new file mode 100644
index 0000000..cbdec9f
--- /dev/null
+++ b/devel/install.html
@@ -0,0 +1,530 @@
+
+<!DOCTYPE html>
+
+
+<html lang="en" >
+
+ <head>
+ <meta charset="utf-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
+
+ <title>Install — Apache Arrow Flight SQL adapter for PostgreSQL 0.1.0 documentation</title>
+
+
+
+ <script data-cfasync="false">
+ document.documentElement.dataset.mode = localStorage.getItem("mode") || "";
+ document.documentElement.dataset.theme = localStorage.getItem("theme") || "light";
+ </script>
+
+ <!-- Loaded before other Sphinx assets -->
+ <link href="_static/styles/theme.css?digest=e353d410970836974a52" rel="stylesheet" />
+<link href="_static/styles/bootstrap.css?digest=e353d410970836974a52" rel="stylesheet" />
+<link href="_static/styles/pydata-sphinx-theme.css?digest=e353d410970836974a52" rel="stylesheet" />
+
+
+ <link href="_static/vendor/fontawesome/6.1.2/css/all.min.css?digest=e353d410970836974a52" rel="stylesheet" />
+ <link rel="preload" as="font" type="font/woff2" crossorigin href="_static/vendor/fontawesome/6.1.2/webfonts/fa-solid-900.woff2" />
+<link rel="preload" as="font" type="font/woff2" crossorigin href="_static/vendor/fontawesome/6.1.2/webfonts/fa-brands-400.woff2" />
+<link rel="preload" as="font" type="font/woff2" crossorigin href="_static/vendor/fontawesome/6.1.2/webfonts/fa-regular-400.woff2" />
+
+ <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=a746c00c" />
+ <link rel="stylesheet" type="text/css" href="_static/tabs.css?v=4c969af8" />
+
+ <!-- Pre-loaded scripts that we'll load fully later -->
+ <link rel="preload" as="script" href="_static/scripts/bootstrap.js?digest=e353d410970836974a52" />
+<link rel="preload" as="script" href="_static/scripts/pydata-sphinx-theme.js?digest=e353d410970836974a52" />
+
+ <script src="_static/documentation_options.js?v=38b66d78"></script>
+ <script src="_static/doctools.js?v=888ff710"></script>
+ <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
+ <script src="_static/tabs.js?v=3ee01567"></script>
+ <script>DOCUMENTATION_OPTIONS.pagename = 'install';</script>
+ <script>
+ DOCUMENTATION_OPTIONS.theme_switcher_json_url = 'https://arrow.apache.org/flight-sql-postgresql/devel/_static/switcher.json';
+ DOCUMENTATION_OPTIONS.theme_switcher_version_match = '0.1.0';
+ </script>
+ <link rel="index" title="Index" href="genindex.html" />
+ <link rel="search" title="Search" href="search.html" />
+ <link rel="next" title="Configuration" href="configuration.html" />
+ <link rel="prev" title="Overview" href="overview.html" />
+ <meta name="viewport" content="width=device-width, initial-scale=1"/>
+ <meta name="docsearch:language" content="en"/>
+ </head>
+
+
+ <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode="">
+
+
+
+ <a class="skip-link" href="#main-content">Skip to main content</a>
+
+ <input type="checkbox"
+ class="sidebar-toggle"
+ name="__primary"
+ id="__primary"/>
+ <label class="overlay overlay-primary" for="__primary"></label>
+
+ <input type="checkbox"
+ class="sidebar-toggle"
+ name="__secondary"
+ id="__secondary"/>
+ <label class="overlay overlay-secondary" for="__secondary"></label>
+
+ <div class="search-button__wrapper">
+ <div class="search-button__overlay"></div>
+ <div class="search-button__search-container">
+<form class="bd-search d-flex align-items-center"
+ action="search.html"
+ method="get">
+ <i class="fa-solid fa-magnifying-glass"></i>
+ <input type="search"
+ class="form-control"
+ name="q"
+ id="search-input"
+ placeholder="Search the docs ..."
+ aria-label="Search the docs ..."
+ autocomplete="off"
+ autocorrect="off"
+ autocapitalize="off"
+ spellcheck="false"/>
+ <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span>
+</form></div>
+ </div>
+
+ <nav class="bd-header navbar navbar-expand-lg bd-navbar">
+<div class="bd-header__inner bd-page-width">
+ <label class="sidebar-toggle primary-toggle" for="__primary">
+ <span class="fa-solid fa-bars"></span>
+ </label>
+
+ <div class="navbar-header-items__start">
+
+ <div class="navbar-item">
+
+
+<a class="navbar-brand logo" href="index.html">
+
+
+
+
+
+
+
+
+
+ <img src="_static/logo-light.png" class="logo__image only-light" alt="Apache Arrow Flight SQL adapter for PostgreSQL"/>
+ <script>document.write(`<img src="_static/logo-dark.png" class="logo__image only-dark" alt="Apache Arrow Flight SQL adapter for PostgreSQL"/>`);</script>
+
+
+</a></div>
+
+ </div>
+
+
+ <div class="col-lg-9 navbar-header-items">
+
+
+ <div class="navbar-header-items__end">
+
+ <div class="navbar-item navbar-persistent--container">
+
+<script>
+document.write(`
+ <button class="btn btn-sm navbar-btn search-button search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
+ <i class="fa-solid fa-magnifying-glass"></i>
+ </button>
+`);
+</script>
+ </div>
+
+
+ <div class="navbar-item">
+<script>
+document.write(`
+ <button class="theme-switch-button btn btn-sm btn-outline-primary navbar-btn rounded-circle" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
+ <span class="theme-switch" data-mode="light"><i class="fa-solid fa-sun"></i></span>
+ <span class="theme-switch" data-mode="dark"><i class="fa-solid fa-moon"></i></span>
+ <span class="theme-switch" data-mode="auto"><i class="fa-solid fa-circle-half-stroke"></i></span>
+ </button>
+`);
+</script></div>
+
+ <div class="navbar-item"><ul class="navbar-icon-links navbar-nav"
+ aria-label="Icon Links">
+ <li class="nav-item">
+
+
+
+
+
+
+
+
+ <a href="https://github.com/apache/arrow-flight-sql-postgresql" title="GitHub" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-github"></i></span>
+ <label class="sr-only">GitHub</label></a>
+ </li>
+</ul></div>
+
+ <div class="navbar-item">
+<script>
+document.write(`
+ <div class="version-switcher__container dropdown">
+ <button type="button" class="version-switcher__button btn btn-sm navbar-btn dropdown-toggle" data-bs-toggle="dropdown">
+ 0.1.0 <!-- this text may get changed later by javascript -->
+ <span class="caret"></span>
+ </button>
+ <div class="version-switcher__menu dropdown-menu list-group-flush py-0">
+ <!-- dropdown will be populated by javascript on page load -->
+ </div>
+ </div>
+`);
+</script></div>
+
+ </div>
+
+ </div>
+
+
+ <div class="navbar-persistent--mobile">
+<script>
+document.write(`
+ <button class="btn btn-sm navbar-btn search-button search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
+ <i class="fa-solid fa-magnifying-glass"></i>
+ </button>
+`);
+</script>
+ </div>
+
+
+
+ <label class="sidebar-toggle secondary-toggle" for="__secondary">
+ <span class="fa-solid fa-outdent"></span>
+ </label>
+
+</div>
+
+ </nav>
+
+ <div class="bd-container">
+ <div class="bd-container__inner bd-page-width">
+
+ <div class="bd-sidebar-primary bd-sidebar hide-on-wide">
+
+
+
+ <div class="sidebar-header-items sidebar-primary__section">
+
+
+
+
+ <div class="sidebar-header-items__end">
+
+ <div class="navbar-item">
+<script>
+document.write(`
+ <button class="theme-switch-button btn btn-sm btn-outline-primary navbar-btn rounded-circle" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
+ <span class="theme-switch" data-mode="light"><i class="fa-solid fa-sun"></i></span>
+ <span class="theme-switch" data-mode="dark"><i class="fa-solid fa-moon"></i></span>
+ <span class="theme-switch" data-mode="auto"><i class="fa-solid fa-circle-half-stroke"></i></span>
+ </button>
+`);
+</script></div>
+
+ <div class="navbar-item"><ul class="navbar-icon-links navbar-nav"
+ aria-label="Icon Links">
+ <li class="nav-item">
+
+
+
+
+
+
+
+
+ <a href="https://github.com/apache/arrow-flight-sql-postgresql" title="GitHub" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-github"></i></span>
+ <label class="sr-only">GitHub</label></a>
+ </li>
+</ul></div>
+
+ <div class="navbar-item">
+<script>
+document.write(`
+ <div class="version-switcher__container dropdown">
+ <button type="button" class="version-switcher__button btn btn-sm navbar-btn dropdown-toggle" data-bs-toggle="dropdown">
+ 0.1.0 <!-- this text may get changed later by javascript -->
+ <span class="caret"></span>
+ </button>
+ <div class="version-switcher__menu dropdown-menu list-group-flush py-0">
+ <!-- dropdown will be populated by javascript on page load -->
+ </div>
+ </div>
+`);
+</script></div>
+
+ </div>
+
+ </div>
+
+
+ <div class="sidebar-primary-items__end sidebar-primary__section">
+ </div>
+
+ <div id="rtd-footer-container"></div>
+
+
+ </div>
+
+ <main id="main-content" class="bd-main">
+
+
+ <div class="bd-content">
+ <div class="bd-article-container">
+
+ <div class="bd-header-article">
+<div class="header-article-items header-article__inner">
+
+ <div class="header-article-items__start">
+
+ <div class="header-article-item">
+
+
+
+<nav aria-label="Breadcrumbs">
+ <ul class="bd-breadcrumbs" role="navigation" aria-label="Breadcrumb">
+
+ <li class="breadcrumb-item breadcrumb-home">
+ <a href="index.html" class="nav-link" aria-label="Home">
+ <i class="fa-solid fa-home"></i>
+ </a>
+ </li>
+ <li class="breadcrumb-item active" aria-current="page">Install</li>
+ </ul>
+</nav>
+</div>
+
+ </div>
+
+
+</div>
+</div>
+
+
+
+
+<div id="searchbox"></div>
+ <article class="bd-article" role="main">
+
+ <!--
+ 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.
+-->
+<section class="tex2jax_ignore mathjax_ignore" id="install">
+<h1>Install<a class="headerlink" href="#install" title="Link to this heading">#</a></h1>
+<section id="debian-gnu-linux-and-ubuntu">
+<h2>Debian GNU/Linux and Ubuntu<a class="headerlink" href="#debian-gnu-linux-and-ubuntu" title="Link to this heading">#</a></h2>
+<p>Supported versions:</p>
+<ul class="simple">
+<li><p>Debian GNU/Linux bookworm</p></li>
+<li><p>Ubuntu 22.04 LTS</p></li>
+</ul>
+<p>Enable the PostgreSQL APT repository:</p>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>sudo<span class="w"> </span>apt<span class="w"> </span>update
+sudo<span class="w"> </span>apt<span class="w"> </span>install<span class="w"> </span>-y<span class="w"> </span>ca-certificates<span class="w"> </span>gpg<span class="w"> </span>lsb-release<span class="w"> </span>wget
+wget<span class="w"> </span>-O<span class="w"> </span>-<span class="w"> </span>https://www.postgresql.org/media/keys/ACCC4CF8.asc<span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="se">\</span>
+<span class="w"> </span>sudo<span class="w"> </span>gpg<span class="w"> </span>--no-default-keyring<span class="w"> </span>--keyring<span class="w"> </span>/usr/share/keyrings/pgdg.gpg<span class="w"> </span>--import<span class="w"> </span>-
+<span class="o">(</span><span class="nb">echo</span><span class="w"> </span><span class="s2">"Types: deb"</span><span class="p">;</span><span class="w"> </span><span class="se">\</span>
+<span class="w"> </span><span class="nb">echo</span><span class="w"> </span><span class="s2">"URIs: http://apt.postgresql.org/pub/repos/apt"</span><span class="p">;</span><span class="w"> </span><span class="se">\</span>
+<span class="w"> </span><span class="nb">echo</span><span class="w"> </span><span class="s2">"Suites: </span><span class="k">$(</span>lsb_release<span class="w"> </span>--codename<span class="w"> </span>--short<span class="k">)</span><span class="s2">-pgdg"</span><span class="p">;</span><span class="w"> </span><span class="se">\</span>
+<span class="w"> </span><span class="nb">echo</span><span class="w"> </span><span class="s2">"Components: main"</span><span class="p">;</span><span class="w"> </span><span class="se">\</span>
+<span class="w"> </span><span class="nb">echo</span><span class="w"> </span><span class="s2">"Signed-By: /usr/share/keyrings/pgdg.gpg"</span><span class="o">)</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="se">\</span>
+<span class="w"> </span>sudo<span class="w"> </span>tee<span class="w"> </span>/etc/apt/sources.list.d/pgdg.sources
+</pre></div>
+</div>
+<p>Enable the Apache Arrow APT repository:</p>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>wget<span class="w"> </span>https://apache.jfrog.io/artifactory/arrow/<span class="k">$(</span>lsb_release<span class="w"> </span>--id<span class="w"> </span>--short<span class="w"> </span><span class="p">|</span><span class="w"> </span>tr<span class="w"> </span><span class="s1">'A-Z'</span><span class="w"> </span><span class="s1">'a-z'</span><span class="k">)</span>/apache-arrow-apt-source-l [...]
+sudo<span class="w"> </span>apt<span class="w"> </span>install<span class="w"> </span>-y<span class="w"> </span>-V<span class="w"> </span>./apache-arrow-apt-source-latest-<span class="k">$(</span>lsb_release<span class="w"> </span>--codename<span class="w"> </span>--short<span class="k">)</span>.deb
+rm<span class="w"> </span>apache-arrow-apt-source-latest-<span class="k">$(</span>lsb_release<span class="w"> </span>--codename<span class="w"> </span>--short<span class="k">)</span>.deb
+sudo<span class="w"> </span>apt<span class="w"> </span>update
+</pre></div>
+</div>
+<p>Install <code class="docutils literal notranslate"><span class="pre">postgresql-15-pgdg-apache-arrow-flight-sql</span></code>:</p>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>sudo<span class="w"> </span>apt<span class="w"> </span>install<span class="w"> </span>-y<span class="w"> </span>postgresql-15-pgdg-apache-arrow-flight-sql
+</pre></div>
+</div>
+<p>See <a class="reference internal" href="configuration.html"><span class="doc">Configuration</span></a> how to configure Apache Arrow Flight SQL adapter for PostgreSQL.</p>
+</section>
+<section id="source">
+<h2>Source<a class="headerlink" href="#source" title="Link to this heading">#</a></h2>
+<p>You need to install the followings before you build Apache Arrow
+Flight SQL adapter for PostgreSQL:</p>
+<ul class="simple">
+<li><p>PostgreSQL: <a class="reference external" href="https://www.postgresql.org/download/">https://www.postgresql.org/download/</a></p></li>
+<li><p>Apache Arrow C++ with Flight SQL support: <a class="reference external" href="https://arrow.apache.org/install/">https://arrow.apache.org/install/</a></p></li>
+<li><p>Meson: <a class="reference external" href="https://mesonbuild.com/">https://mesonbuild.com/</a></p></li>
+<li><p>Ninja: <a class="reference external" href="https://ninja-build.org/">https://ninja-build.org/</a></p></li>
+<li><p>C++ compiler such as <code class="docutils literal notranslate"><span class="pre">g++</span></code> and `clang++</p></li>
+</ul>
+<p>Here are command lines to build Apache Arrow Flight SQL adapter for
+PostgreSQL:</p>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<p>Replase <code class="docutils literal notranslate"><span class="pre">${version}</span></code> with 0.1.0 or define <code class="docutils literal notranslate"><span class="pre">version</span></code> variable with 0.1.0.</p>
+</div>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>wget<span class="w"> </span><span class="s2">"https://www.apache.org/dyn/closer.lua?action=download&filename=arrow/apache-arrow-flight-sql-postgresql-</span><span class="si">${</span><span class="nv">version</span><span class="si">}</span><span class="s2">/apache-arrow-flight-sql-postgresql-</span><span class="si">${</span><span class="nv">version</span><span class="si">}</span><span class="s2">.tar [...]
+tar<span class="w"> </span>xfv<span class="w"> </span>apache-arrow-flight-sql-postgresql-<span class="si">${</span><span class="nv">version</span><span class="si">}</span>.tar.gz
+meson<span class="w"> </span>setup<span class="w"> </span><span class="se">\</span>
+<span class="w"> </span>--prefix<span class="o">=</span>/usr/local<span class="w"> </span><span class="se">\</span>
+<span class="w"> </span>-Dpostgresql_dir<span class="o">=</span><span class="k">$(</span>pg_config<span class="w"> </span>--bindir<span class="k">)</span>/..<span class="w"> </span><span class="se">\</span>
+<span class="w"> </span>apache-arrow-flight-sql-postgresql-<span class="si">${</span><span class="nv">version</span><span class="si">}</span>.build<span class="w"> </span><span class="se">\</span>
+<span class="w"> </span>apache-arrow-flight-sql-postgresql-<span class="si">${</span><span class="nv">version</span><span class="si">}</span>
+meson<span class="w"> </span>compile<span class="w"> </span>-C<span class="w"> </span>apache-arrow-flight-sql-postgresql-<span class="si">${</span><span class="nv">version</span><span class="si">}</span>.build
+sudo<span class="w"> </span>meson<span class="w"> </span>install<span class="w"> </span>-C<span class="w"> </span>apache-arrow-flight-sql-postgresql-<span class="si">${</span><span class="nv">version</span><span class="si">}</span>.build
+</pre></div>
+</div>
+<p>See <a class="reference internal" href="configuration.html"><span class="doc">Configuration</span></a> how to configure Apache Arrow Flight SQL adapter for PostgreSQL.</p>
+</section>
+</section>
+
+
+ </article>
+
+
+
+ <footer class="bd-footer-article">
+
+<div class="footer-article-items footer-article__inner">
+
+ <div class="footer-article-item"><!-- Previous / next buttons -->
+<div class="prev-next-area">
+ <a class="left-prev"
+ href="overview.html"
+ title="previous page">
+ <i class="fa-solid fa-angle-left"></i>
+ <div class="prev-next-info">
+ <p class="prev-next-subtitle">previous</p>
+ <p class="prev-next-title">Overview</p>
+ </div>
+ </a>
+ <a class="right-next"
+ href="configuration.html"
+ title="next page">
+ <div class="prev-next-info">
+ <p class="prev-next-subtitle">next</p>
+ <p class="prev-next-title">Configuration</p>
+ </div>
+ <i class="fa-solid fa-angle-right"></i>
+ </a>
+</div></div>
+
+</div>
+
+ </footer>
+
+ </div>
+
+
+
+ <div class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner">
+
+ <div class="sidebar-secondary-item">
+ <div class="page-toc tocsection onthispage">
+ <i class="fa-solid fa-list"></i> On this page
+ </div>
+ <nav class="bd-toc-nav page-toc">
+ <ul class="visible nav section-nav flex-column">
+<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#debian-gnu-linux-and-ubuntu">Debian GNU/Linux and Ubuntu</a></li>
+<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#source">Source</a></li>
+</ul>
+ </nav></div>
+
+ <div class="sidebar-secondary-item">
+
+ <div class="tocsection editthispage">
+ <a href="https://github.com/apache/arrow-flight-sql-postgresql/edit/main/docs/source/install.md">
+ <i class="fa-solid fa-pencil"></i>
+
+
+
+ Edit on GitHub
+
+
+ </a>
+ </div>
+</div>
+
+ <div class="sidebar-secondary-item">
+ <div class="tocsection sourcelink">
+ <a href="_sources/install.md.txt">
+ <i class="fa-solid fa-file-lines"></i> Show Source
+ </a>
+ </div>
+</div>
+
+</div></div>
+
+
+ </div>
+ <footer class="bd-footer-content">
+
+ </footer>
+
+ </main>
+ </div>
+ </div>
+
+ <!-- Scripts loaded after <body> so the DOM is not blocked -->
+ <script src="_static/scripts/bootstrap.js?digest=e353d410970836974a52"></script>
+<script src="_static/scripts/pydata-sphinx-theme.js?digest=e353d410970836974a52"></script>
+
+ <footer class="bd-footer">
+<div class="bd-footer__inner bd-page-width">
+
+ <div class="footer-items__start">
+
+ <div class="footer-item">
+ <p class="copyright">
+
+ © Copyright 2022-2023, Apache Arrow Developers.
+ <br/>
+
+ </p>
+</div>
+
+ <div class="footer-item">
+ <p class="sphinx-version">
+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.2.4.
+ <br/>
+ </p>
+</div>
+
+ </div>
+
+
+ <div class="footer-items__end">
+
+ <div class="footer-item"><p class="theme-version">
+ Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.13.3.
+</p></div>
+
+ </div>
+
+</div>
+
+ </footer>
+ </body>
+</html>
\ No newline at end of file
diff --git a/devel/objects.inv b/devel/objects.inv
new file mode 100644
index 0000000..514060d
Binary files /dev/null and b/devel/objects.inv differ
diff --git a/devel/overview.html b/devel/overview.html
new file mode 100644
index 0000000..7fb0299
--- /dev/null
+++ b/devel/overview.html
@@ -0,0 +1,472 @@
+
+<!DOCTYPE html>
+
+
+<html lang="en" >
+
+ <head>
+ <meta charset="utf-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
+
+ <title>Overview — Apache Arrow Flight SQL adapter for PostgreSQL 0.1.0 documentation</title>
+
+
+
+ <script data-cfasync="false">
+ document.documentElement.dataset.mode = localStorage.getItem("mode") || "";
+ document.documentElement.dataset.theme = localStorage.getItem("theme") || "light";
+ </script>
+
+ <!-- Loaded before other Sphinx assets -->
+ <link href="_static/styles/theme.css?digest=e353d410970836974a52" rel="stylesheet" />
+<link href="_static/styles/bootstrap.css?digest=e353d410970836974a52" rel="stylesheet" />
+<link href="_static/styles/pydata-sphinx-theme.css?digest=e353d410970836974a52" rel="stylesheet" />
+
+
+ <link href="_static/vendor/fontawesome/6.1.2/css/all.min.css?digest=e353d410970836974a52" rel="stylesheet" />
+ <link rel="preload" as="font" type="font/woff2" crossorigin href="_static/vendor/fontawesome/6.1.2/webfonts/fa-solid-900.woff2" />
+<link rel="preload" as="font" type="font/woff2" crossorigin href="_static/vendor/fontawesome/6.1.2/webfonts/fa-brands-400.woff2" />
+<link rel="preload" as="font" type="font/woff2" crossorigin href="_static/vendor/fontawesome/6.1.2/webfonts/fa-regular-400.woff2" />
+
+ <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=a746c00c" />
+ <link rel="stylesheet" type="text/css" href="_static/tabs.css?v=4c969af8" />
+
+ <!-- Pre-loaded scripts that we'll load fully later -->
+ <link rel="preload" as="script" href="_static/scripts/bootstrap.js?digest=e353d410970836974a52" />
+<link rel="preload" as="script" href="_static/scripts/pydata-sphinx-theme.js?digest=e353d410970836974a52" />
+
+ <script src="_static/documentation_options.js?v=38b66d78"></script>
+ <script src="_static/doctools.js?v=888ff710"></script>
+ <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
+ <script src="_static/tabs.js?v=3ee01567"></script>
+ <script>DOCUMENTATION_OPTIONS.pagename = 'overview';</script>
+ <script>
+ DOCUMENTATION_OPTIONS.theme_switcher_json_url = 'https://arrow.apache.org/flight-sql-postgresql/devel/_static/switcher.json';
+ DOCUMENTATION_OPTIONS.theme_switcher_version_match = '0.1.0';
+ </script>
+ <link rel="index" title="Index" href="genindex.html" />
+ <link rel="search" title="Search" href="search.html" />
+ <link rel="next" title="Install" href="install.html" />
+ <link rel="prev" title="Release notes" href="release-notes.html" />
+ <meta name="viewport" content="width=device-width, initial-scale=1"/>
+ <meta name="docsearch:language" content="en"/>
+ </head>
+
+
+ <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode="">
+
+
+
+ <a class="skip-link" href="#main-content">Skip to main content</a>
+
+ <input type="checkbox"
+ class="sidebar-toggle"
+ name="__primary"
+ id="__primary"/>
+ <label class="overlay overlay-primary" for="__primary"></label>
+
+ <input type="checkbox"
+ class="sidebar-toggle"
+ name="__secondary"
+ id="__secondary"/>
+ <label class="overlay overlay-secondary" for="__secondary"></label>
+
+ <div class="search-button__wrapper">
+ <div class="search-button__overlay"></div>
+ <div class="search-button__search-container">
+<form class="bd-search d-flex align-items-center"
+ action="search.html"
+ method="get">
+ <i class="fa-solid fa-magnifying-glass"></i>
+ <input type="search"
+ class="form-control"
+ name="q"
+ id="search-input"
+ placeholder="Search the docs ..."
+ aria-label="Search the docs ..."
+ autocomplete="off"
+ autocorrect="off"
+ autocapitalize="off"
+ spellcheck="false"/>
+ <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span>
+</form></div>
+ </div>
+
+ <nav class="bd-header navbar navbar-expand-lg bd-navbar">
+<div class="bd-header__inner bd-page-width">
+ <label class="sidebar-toggle primary-toggle" for="__primary">
+ <span class="fa-solid fa-bars"></span>
+ </label>
+
+ <div class="navbar-header-items__start">
+
+ <div class="navbar-item">
+
+
+<a class="navbar-brand logo" href="index.html">
+
+
+
+
+
+
+
+
+
+ <img src="_static/logo-light.png" class="logo__image only-light" alt="Apache Arrow Flight SQL adapter for PostgreSQL"/>
+ <script>document.write(`<img src="_static/logo-dark.png" class="logo__image only-dark" alt="Apache Arrow Flight SQL adapter for PostgreSQL"/>`);</script>
+
+
+</a></div>
+
+ </div>
+
+
+ <div class="col-lg-9 navbar-header-items">
+
+
+ <div class="navbar-header-items__end">
+
+ <div class="navbar-item navbar-persistent--container">
+
+<script>
+document.write(`
+ <button class="btn btn-sm navbar-btn search-button search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
+ <i class="fa-solid fa-magnifying-glass"></i>
+ </button>
+`);
+</script>
+ </div>
+
+
+ <div class="navbar-item">
+<script>
+document.write(`
+ <button class="theme-switch-button btn btn-sm btn-outline-primary navbar-btn rounded-circle" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
+ <span class="theme-switch" data-mode="light"><i class="fa-solid fa-sun"></i></span>
+ <span class="theme-switch" data-mode="dark"><i class="fa-solid fa-moon"></i></span>
+ <span class="theme-switch" data-mode="auto"><i class="fa-solid fa-circle-half-stroke"></i></span>
+ </button>
+`);
+</script></div>
+
+ <div class="navbar-item"><ul class="navbar-icon-links navbar-nav"
+ aria-label="Icon Links">
+ <li class="nav-item">
+
+
+
+
+
+
+
+
+ <a href="https://github.com/apache/arrow-flight-sql-postgresql" title="GitHub" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-github"></i></span>
+ <label class="sr-only">GitHub</label></a>
+ </li>
+</ul></div>
+
+ <div class="navbar-item">
+<script>
+document.write(`
+ <div class="version-switcher__container dropdown">
+ <button type="button" class="version-switcher__button btn btn-sm navbar-btn dropdown-toggle" data-bs-toggle="dropdown">
+ 0.1.0 <!-- this text may get changed later by javascript -->
+ <span class="caret"></span>
+ </button>
+ <div class="version-switcher__menu dropdown-menu list-group-flush py-0">
+ <!-- dropdown will be populated by javascript on page load -->
+ </div>
+ </div>
+`);
+</script></div>
+
+ </div>
+
+ </div>
+
+
+ <div class="navbar-persistent--mobile">
+<script>
+document.write(`
+ <button class="btn btn-sm navbar-btn search-button search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
+ <i class="fa-solid fa-magnifying-glass"></i>
+ </button>
+`);
+</script>
+ </div>
+
+
+
+ <label class="sidebar-toggle secondary-toggle" for="__secondary">
+ <span class="fa-solid fa-outdent"></span>
+ </label>
+
+</div>
+
+ </nav>
+
+ <div class="bd-container">
+ <div class="bd-container__inner bd-page-width">
+
+ <div class="bd-sidebar-primary bd-sidebar hide-on-wide">
+
+
+
+ <div class="sidebar-header-items sidebar-primary__section">
+
+
+
+
+ <div class="sidebar-header-items__end">
+
+ <div class="navbar-item">
+<script>
+document.write(`
+ <button class="theme-switch-button btn btn-sm btn-outline-primary navbar-btn rounded-circle" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
+ <span class="theme-switch" data-mode="light"><i class="fa-solid fa-sun"></i></span>
+ <span class="theme-switch" data-mode="dark"><i class="fa-solid fa-moon"></i></span>
+ <span class="theme-switch" data-mode="auto"><i class="fa-solid fa-circle-half-stroke"></i></span>
+ </button>
+`);
+</script></div>
+
+ <div class="navbar-item"><ul class="navbar-icon-links navbar-nav"
+ aria-label="Icon Links">
+ <li class="nav-item">
+
+
+
+
+
+
+
+
+ <a href="https://github.com/apache/arrow-flight-sql-postgresql" title="GitHub" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-github"></i></span>
+ <label class="sr-only">GitHub</label></a>
+ </li>
+</ul></div>
+
+ <div class="navbar-item">
+<script>
+document.write(`
+ <div class="version-switcher__container dropdown">
+ <button type="button" class="version-switcher__button btn btn-sm navbar-btn dropdown-toggle" data-bs-toggle="dropdown">
+ 0.1.0 <!-- this text may get changed later by javascript -->
+ <span class="caret"></span>
+ </button>
+ <div class="version-switcher__menu dropdown-menu list-group-flush py-0">
+ <!-- dropdown will be populated by javascript on page load -->
+ </div>
+ </div>
+`);
+</script></div>
+
+ </div>
+
+ </div>
+
+
+ <div class="sidebar-primary-items__end sidebar-primary__section">
+ </div>
+
+ <div id="rtd-footer-container"></div>
+
+
+ </div>
+
+ <main id="main-content" class="bd-main">
+
+
+ <div class="bd-content">
+ <div class="bd-article-container">
+
+ <div class="bd-header-article">
+<div class="header-article-items header-article__inner">
+
+ <div class="header-article-items__start">
+
+ <div class="header-article-item">
+
+
+
+<nav aria-label="Breadcrumbs">
+ <ul class="bd-breadcrumbs" role="navigation" aria-label="Breadcrumb">
+
+ <li class="breadcrumb-item breadcrumb-home">
+ <a href="index.html" class="nav-link" aria-label="Home">
+ <i class="fa-solid fa-home"></i>
+ </a>
+ </li>
+ <li class="breadcrumb-item active" aria-current="page">Overview</li>
+ </ul>
+</nav>
+</div>
+
+ </div>
+
+
+</div>
+</div>
+
+
+
+
+<div id="searchbox"></div>
+ <article class="bd-article" role="main">
+
+ <!--
+ 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.
+-->
+<section class="tex2jax_ignore mathjax_ignore" id="overview">
+<h1>Overview<a class="headerlink" href="#overview" title="Link to this heading">#</a></h1>
+<p>Apache Arrow Flight SQL adapter for PostgreSQL is a PostgreSQL
+extension that adds an <a class="reference external" href="https://arrow.apache.org/docs/format/FlightSql.html">Apache Arrow Flight
+SQL</a> endpoint to PostgreSQL.</p>
+<p>Apache Arrow Flight SQL is a protocol to use <a class="reference external" href="https://arrow.apache.org/docs/format/Columnar.html">Apache Arrow
+format</a> to interact with SQL databases. You can
+use Apache Arrow Flight SQL instead of <a class="reference external" href="https://www.postgresql.org/docs/current/protocol.html">the PostgreSQL wire
+protocol</a> to interact with PostgreSQL by Apache
+Arrow Flight SQL adapter for PostgreSQL.</p>
+<p>Apache Arrow format is designed for fast typed table data exchange. If
+you want to get large data by <code class="docutils literal notranslate"><span class="pre">SELECT</span></code> or <code class="docutils literal notranslate"><span class="pre">INSERT</span></code>/<code class="docutils literal notranslate"><span class="pre">UPDATE</span></code> large
+data, Apache Arrow Flight SQL will be faster than the PostgreSQL wire
+protocol.</p>
+<p>See also <a class="reference external" href="https://github.com/apache/arrow-flight-sql-postgresql/tree/main/benchmark/integer">a simple benchmark result</a> that just
+executes <code class="docutils literal notranslate"><span class="pre">SELECT</span> <span class="pre">*</span> <span class="pre">FROM</span> <span class="pre">integer_only_table</span></code>. It shows that Apache
+Arrow Flight SQL is faster than the PostgreSQL wire protocol when
+result data is large.</p>
+</section>
+
+
+ </article>
+
+
+
+ <footer class="bd-footer-article">
+
+<div class="footer-article-items footer-article__inner">
+
+ <div class="footer-article-item"><!-- Previous / next buttons -->
+<div class="prev-next-area">
+ <a class="left-prev"
+ href="release-notes.html"
+ title="previous page">
+ <i class="fa-solid fa-angle-left"></i>
+ <div class="prev-next-info">
+ <p class="prev-next-subtitle">previous</p>
+ <p class="prev-next-title">Release notes</p>
+ </div>
+ </a>
+ <a class="right-next"
+ href="install.html"
+ title="next page">
+ <div class="prev-next-info">
+ <p class="prev-next-subtitle">next</p>
+ <p class="prev-next-title">Install</p>
+ </div>
+ <i class="fa-solid fa-angle-right"></i>
+ </a>
+</div></div>
+
+</div>
+
+ </footer>
+
+ </div>
+
+
+
+ <div class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner">
+
+ <div class="sidebar-secondary-item">
+
+ <div class="tocsection editthispage">
+ <a href="https://github.com/apache/arrow-flight-sql-postgresql/edit/main/docs/source/overview.md">
+ <i class="fa-solid fa-pencil"></i>
+
+
+
+ Edit on GitHub
+
+
+ </a>
+ </div>
+</div>
+
+ <div class="sidebar-secondary-item">
+ <div class="tocsection sourcelink">
+ <a href="_sources/overview.md.txt">
+ <i class="fa-solid fa-file-lines"></i> Show Source
+ </a>
+ </div>
+</div>
+
+</div></div>
+
+
+ </div>
+ <footer class="bd-footer-content">
+
+ </footer>
+
+ </main>
+ </div>
+ </div>
+
+ <!-- Scripts loaded after <body> so the DOM is not blocked -->
+ <script src="_static/scripts/bootstrap.js?digest=e353d410970836974a52"></script>
+<script src="_static/scripts/pydata-sphinx-theme.js?digest=e353d410970836974a52"></script>
+
+ <footer class="bd-footer">
+<div class="bd-footer__inner bd-page-width">
+
+ <div class="footer-items__start">
+
+ <div class="footer-item">
+ <p class="copyright">
+
+ © Copyright 2022-2023, Apache Arrow Developers.
+ <br/>
+
+ </p>
+</div>
+
+ <div class="footer-item">
+ <p class="sphinx-version">
+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.2.4.
+ <br/>
+ </p>
+</div>
+
+ </div>
+
+
+ <div class="footer-items__end">
+
+ <div class="footer-item"><p class="theme-version">
+ Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.13.3.
+</p></div>
+
+ </div>
+
+</div>
+
+ </footer>
+ </body>
+</html>
\ No newline at end of file
diff --git a/devel/release-notes.html b/devel/release-notes.html
new file mode 100644
index 0000000..a355296
--- /dev/null
+++ b/devel/release-notes.html
@@ -0,0 +1,478 @@
+
+<!DOCTYPE html>
+
+
+<html lang="en" >
+
+ <head>
+ <meta charset="utf-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
+
+ <title>Release notes — Apache Arrow Flight SQL adapter for PostgreSQL 0.1.0 documentation</title>
+
+
+
+ <script data-cfasync="false">
+ document.documentElement.dataset.mode = localStorage.getItem("mode") || "";
+ document.documentElement.dataset.theme = localStorage.getItem("theme") || "light";
+ </script>
+
+ <!-- Loaded before other Sphinx assets -->
+ <link href="_static/styles/theme.css?digest=e353d410970836974a52" rel="stylesheet" />
+<link href="_static/styles/bootstrap.css?digest=e353d410970836974a52" rel="stylesheet" />
+<link href="_static/styles/pydata-sphinx-theme.css?digest=e353d410970836974a52" rel="stylesheet" />
+
+
+ <link href="_static/vendor/fontawesome/6.1.2/css/all.min.css?digest=e353d410970836974a52" rel="stylesheet" />
+ <link rel="preload" as="font" type="font/woff2" crossorigin href="_static/vendor/fontawesome/6.1.2/webfonts/fa-solid-900.woff2" />
+<link rel="preload" as="font" type="font/woff2" crossorigin href="_static/vendor/fontawesome/6.1.2/webfonts/fa-brands-400.woff2" />
+<link rel="preload" as="font" type="font/woff2" crossorigin href="_static/vendor/fontawesome/6.1.2/webfonts/fa-regular-400.woff2" />
+
+ <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=a746c00c" />
+ <link rel="stylesheet" type="text/css" href="_static/tabs.css?v=4c969af8" />
+
+ <!-- Pre-loaded scripts that we'll load fully later -->
+ <link rel="preload" as="script" href="_static/scripts/bootstrap.js?digest=e353d410970836974a52" />
+<link rel="preload" as="script" href="_static/scripts/pydata-sphinx-theme.js?digest=e353d410970836974a52" />
+
+ <script src="_static/documentation_options.js?v=38b66d78"></script>
+ <script src="_static/doctools.js?v=888ff710"></script>
+ <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
+ <script src="_static/tabs.js?v=3ee01567"></script>
+ <script>DOCUMENTATION_OPTIONS.pagename = 'release-notes';</script>
+ <script>
+ DOCUMENTATION_OPTIONS.theme_switcher_json_url = 'https://arrow.apache.org/flight-sql-postgresql/devel/_static/switcher.json';
+ DOCUMENTATION_OPTIONS.theme_switcher_version_match = '0.1.0';
+ </script>
+ <link rel="index" title="Index" href="genindex.html" />
+ <link rel="search" title="Search" href="search.html" />
+ <link rel="next" title="Overview" href="overview.html" />
+ <link rel="prev" title="Apache Arrow Flight SQL adapter for PostgreSQL" href="index.html" />
+ <meta name="viewport" content="width=device-width, initial-scale=1"/>
+ <meta name="docsearch:language" content="en"/>
+ </head>
+
+
+ <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode="">
+
+
+
+ <a class="skip-link" href="#main-content">Skip to main content</a>
+
+ <input type="checkbox"
+ class="sidebar-toggle"
+ name="__primary"
+ id="__primary"/>
+ <label class="overlay overlay-primary" for="__primary"></label>
+
+ <input type="checkbox"
+ class="sidebar-toggle"
+ name="__secondary"
+ id="__secondary"/>
+ <label class="overlay overlay-secondary" for="__secondary"></label>
+
+ <div class="search-button__wrapper">
+ <div class="search-button__overlay"></div>
+ <div class="search-button__search-container">
+<form class="bd-search d-flex align-items-center"
+ action="search.html"
+ method="get">
+ <i class="fa-solid fa-magnifying-glass"></i>
+ <input type="search"
+ class="form-control"
+ name="q"
+ id="search-input"
+ placeholder="Search the docs ..."
+ aria-label="Search the docs ..."
+ autocomplete="off"
+ autocorrect="off"
+ autocapitalize="off"
+ spellcheck="false"/>
+ <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span>
+</form></div>
+ </div>
+
+ <nav class="bd-header navbar navbar-expand-lg bd-navbar">
+<div class="bd-header__inner bd-page-width">
+ <label class="sidebar-toggle primary-toggle" for="__primary">
+ <span class="fa-solid fa-bars"></span>
+ </label>
+
+ <div class="navbar-header-items__start">
+
+ <div class="navbar-item">
+
+
+<a class="navbar-brand logo" href="index.html">
+
+
+
+
+
+
+
+
+
+ <img src="_static/logo-light.png" class="logo__image only-light" alt="Apache Arrow Flight SQL adapter for PostgreSQL"/>
+ <script>document.write(`<img src="_static/logo-dark.png" class="logo__image only-dark" alt="Apache Arrow Flight SQL adapter for PostgreSQL"/>`);</script>
+
+
+</a></div>
+
+ </div>
+
+
+ <div class="col-lg-9 navbar-header-items">
+
+
+ <div class="navbar-header-items__end">
+
+ <div class="navbar-item navbar-persistent--container">
+
+<script>
+document.write(`
+ <button class="btn btn-sm navbar-btn search-button search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
+ <i class="fa-solid fa-magnifying-glass"></i>
+ </button>
+`);
+</script>
+ </div>
+
+
+ <div class="navbar-item">
+<script>
+document.write(`
+ <button class="theme-switch-button btn btn-sm btn-outline-primary navbar-btn rounded-circle" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
+ <span class="theme-switch" data-mode="light"><i class="fa-solid fa-sun"></i></span>
+ <span class="theme-switch" data-mode="dark"><i class="fa-solid fa-moon"></i></span>
+ <span class="theme-switch" data-mode="auto"><i class="fa-solid fa-circle-half-stroke"></i></span>
+ </button>
+`);
+</script></div>
+
+ <div class="navbar-item"><ul class="navbar-icon-links navbar-nav"
+ aria-label="Icon Links">
+ <li class="nav-item">
+
+
+
+
+
+
+
+
+ <a href="https://github.com/apache/arrow-flight-sql-postgresql" title="GitHub" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-github"></i></span>
+ <label class="sr-only">GitHub</label></a>
+ </li>
+</ul></div>
+
+ <div class="navbar-item">
+<script>
+document.write(`
+ <div class="version-switcher__container dropdown">
+ <button type="button" class="version-switcher__button btn btn-sm navbar-btn dropdown-toggle" data-bs-toggle="dropdown">
+ 0.1.0 <!-- this text may get changed later by javascript -->
+ <span class="caret"></span>
+ </button>
+ <div class="version-switcher__menu dropdown-menu list-group-flush py-0">
+ <!-- dropdown will be populated by javascript on page load -->
+ </div>
+ </div>
+`);
+</script></div>
+
+ </div>
+
+ </div>
+
+
+ <div class="navbar-persistent--mobile">
+<script>
+document.write(`
+ <button class="btn btn-sm navbar-btn search-button search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
+ <i class="fa-solid fa-magnifying-glass"></i>
+ </button>
+`);
+</script>
+ </div>
+
+
+
+ <label class="sidebar-toggle secondary-toggle" for="__secondary">
+ <span class="fa-solid fa-outdent"></span>
+ </label>
+
+</div>
+
+ </nav>
+
+ <div class="bd-container">
+ <div class="bd-container__inner bd-page-width">
+
+ <div class="bd-sidebar-primary bd-sidebar hide-on-wide">
+
+
+
+ <div class="sidebar-header-items sidebar-primary__section">
+
+
+
+
+ <div class="sidebar-header-items__end">
+
+ <div class="navbar-item">
+<script>
+document.write(`
+ <button class="theme-switch-button btn btn-sm btn-outline-primary navbar-btn rounded-circle" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
+ <span class="theme-switch" data-mode="light"><i class="fa-solid fa-sun"></i></span>
+ <span class="theme-switch" data-mode="dark"><i class="fa-solid fa-moon"></i></span>
+ <span class="theme-switch" data-mode="auto"><i class="fa-solid fa-circle-half-stroke"></i></span>
+ </button>
+`);
+</script></div>
+
+ <div class="navbar-item"><ul class="navbar-icon-links navbar-nav"
+ aria-label="Icon Links">
+ <li class="nav-item">
+
+
+
+
+
+
+
+
+ <a href="https://github.com/apache/arrow-flight-sql-postgresql" title="GitHub" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-github"></i></span>
+ <label class="sr-only">GitHub</label></a>
+ </li>
+</ul></div>
+
+ <div class="navbar-item">
+<script>
+document.write(`
+ <div class="version-switcher__container dropdown">
+ <button type="button" class="version-switcher__button btn btn-sm navbar-btn dropdown-toggle" data-bs-toggle="dropdown">
+ 0.1.0 <!-- this text may get changed later by javascript -->
+ <span class="caret"></span>
+ </button>
+ <div class="version-switcher__menu dropdown-menu list-group-flush py-0">
+ <!-- dropdown will be populated by javascript on page load -->
+ </div>
+ </div>
+`);
+</script></div>
+
+ </div>
+
+ </div>
+
+
+ <div class="sidebar-primary-items__end sidebar-primary__section">
+ </div>
+
+ <div id="rtd-footer-container"></div>
+
+
+ </div>
+
+ <main id="main-content" class="bd-main">
+
+
+ <div class="bd-content">
+ <div class="bd-article-container">
+
+ <div class="bd-header-article">
+<div class="header-article-items header-article__inner">
+
+ <div class="header-article-items__start">
+
+ <div class="header-article-item">
+
+
+
+<nav aria-label="Breadcrumbs">
+ <ul class="bd-breadcrumbs" role="navigation" aria-label="Breadcrumb">
+
+ <li class="breadcrumb-item breadcrumb-home">
+ <a href="index.html" class="nav-link" aria-label="Home">
+ <i class="fa-solid fa-home"></i>
+ </a>
+ </li>
+ <li class="breadcrumb-item active" aria-current="page">Release notes</li>
+ </ul>
+</nav>
+</div>
+
+ </div>
+
+
+</div>
+</div>
+
+
+
+
+<div id="searchbox"></div>
+ <article class="bd-article" role="main">
+
+ <!--
+ 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.
+-->
+<section class="tex2jax_ignore mathjax_ignore" id="release-notes">
+<h1>Release notes<a class="headerlink" href="#release-notes" title="Link to this heading">#</a></h1>
+<section id="id1">
+<h2>0.1.0<a class="headerlink" href="#id1" title="Link to this heading">#</a></h2>
+<section id="improvements">
+<h3>Improvements<a class="headerlink" href="#improvements" title="Link to this heading">#</a></h3>
+<ul class="simple">
+<li><p>The initial release!</p></li>
+</ul>
+</section>
+</section>
+</section>
+
+
+ </article>
+
+
+
+ <footer class="bd-footer-article">
+
+<div class="footer-article-items footer-article__inner">
+
+ <div class="footer-article-item"><!-- Previous / next buttons -->
+<div class="prev-next-area">
+ <a class="left-prev"
+ href="index.html"
+ title="previous page">
+ <i class="fa-solid fa-angle-left"></i>
+ <div class="prev-next-info">
+ <p class="prev-next-subtitle">previous</p>
+ <p class="prev-next-title">Apache Arrow Flight SQL adapter for PostgreSQL</p>
+ </div>
+ </a>
+ <a class="right-next"
+ href="overview.html"
+ title="next page">
+ <div class="prev-next-info">
+ <p class="prev-next-subtitle">next</p>
+ <p class="prev-next-title">Overview</p>
+ </div>
+ <i class="fa-solid fa-angle-right"></i>
+ </a>
+</div></div>
+
+</div>
+
+ </footer>
+
+ </div>
+
+
+
+ <div class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner">
+
+ <div class="sidebar-secondary-item">
+ <div class="page-toc tocsection onthispage">
+ <i class="fa-solid fa-list"></i> On this page
+ </div>
+ <nav class="bd-toc-nav page-toc">
+ <ul class="visible nav section-nav flex-column">
+<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#id1">0.1.0</a><ul class="nav section-nav flex-column">
+<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#improvements">Improvements</a></li>
+</ul>
+</li>
+</ul>
+ </nav></div>
+
+ <div class="sidebar-secondary-item">
+
+ <div class="tocsection editthispage">
+ <a href="https://github.com/apache/arrow-flight-sql-postgresql/edit/main/docs/source/release-notes.md">
+ <i class="fa-solid fa-pencil"></i>
+
+
+
+ Edit on GitHub
+
+
+ </a>
+ </div>
+</div>
+
+ <div class="sidebar-secondary-item">
+ <div class="tocsection sourcelink">
+ <a href="_sources/release-notes.md.txt">
+ <i class="fa-solid fa-file-lines"></i> Show Source
+ </a>
+ </div>
+</div>
+
+</div></div>
+
+
+ </div>
+ <footer class="bd-footer-content">
+
+ </footer>
+
+ </main>
+ </div>
+ </div>
+
+ <!-- Scripts loaded after <body> so the DOM is not blocked -->
+ <script src="_static/scripts/bootstrap.js?digest=e353d410970836974a52"></script>
+<script src="_static/scripts/pydata-sphinx-theme.js?digest=e353d410970836974a52"></script>
+
+ <footer class="bd-footer">
+<div class="bd-footer__inner bd-page-width">
+
+ <div class="footer-items__start">
+
+ <div class="footer-item">
+ <p class="copyright">
+
+ © Copyright 2022-2023, Apache Arrow Developers.
+ <br/>
+
+ </p>
+</div>
+
+ <div class="footer-item">
+ <p class="sphinx-version">
+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.2.4.
+ <br/>
+ </p>
+</div>
+
+ </div>
+
+
+ <div class="footer-items__end">
+
+ <div class="footer-item"><p class="theme-version">
+ Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.13.3.
+</p></div>
+
+ </div>
+
+</div>
+
+ </footer>
+ </body>
+</html>
\ No newline at end of file
diff --git a/devel/search.html b/devel/search.html
new file mode 100644
index 0000000..5a5e6c0
--- /dev/null
+++ b/devel/search.html
@@ -0,0 +1,387 @@
+
+<!DOCTYPE html>
+
+
+<html lang="en" >
+
+ <head>
+ <meta charset="utf-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Search - Apache Arrow Flight SQL adapter for PostgreSQL 0.1.0 documentation</title>
+
+
+
+ <script data-cfasync="false">
+ document.documentElement.dataset.mode = localStorage.getItem("mode") || "";
+ document.documentElement.dataset.theme = localStorage.getItem("theme") || "light";
+ </script>
+
+ <!-- Loaded before other Sphinx assets -->
+ <link href="_static/styles/theme.css?digest=e353d410970836974a52" rel="stylesheet" />
+<link href="_static/styles/bootstrap.css?digest=e353d410970836974a52" rel="stylesheet" />
+<link href="_static/styles/pydata-sphinx-theme.css?digest=e353d410970836974a52" rel="stylesheet" />
+
+
+ <link href="_static/vendor/fontawesome/6.1.2/css/all.min.css?digest=e353d410970836974a52" rel="stylesheet" />
+ <link rel="preload" as="font" type="font/woff2" crossorigin href="_static/vendor/fontawesome/6.1.2/webfonts/fa-solid-900.woff2" />
+<link rel="preload" as="font" type="font/woff2" crossorigin href="_static/vendor/fontawesome/6.1.2/webfonts/fa-brands-400.woff2" />
+<link rel="preload" as="font" type="font/woff2" crossorigin href="_static/vendor/fontawesome/6.1.2/webfonts/fa-regular-400.woff2" />
+
+ <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=a746c00c" />
+ <link rel="stylesheet" type="text/css" href="_static/tabs.css?v=4c969af8" />
+
+ <!-- Pre-loaded scripts that we'll load fully later -->
+ <link rel="preload" as="script" href="_static/scripts/bootstrap.js?digest=e353d410970836974a52" />
+<link rel="preload" as="script" href="_static/scripts/pydata-sphinx-theme.js?digest=e353d410970836974a52" />
+
+ <script src="_static/documentation_options.js?v=38b66d78"></script>
+ <script src="_static/doctools.js?v=888ff710"></script>
+ <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
+ <script src="_static/tabs.js?v=3ee01567"></script>
+ <script>DOCUMENTATION_OPTIONS.pagename = 'search';</script>
+ <script>
+ DOCUMENTATION_OPTIONS.theme_switcher_json_url = 'https://arrow.apache.org/flight-sql-postgresql/devel/_static/switcher.json';
+ DOCUMENTATION_OPTIONS.theme_switcher_version_match = '0.1.0';
+ </script>
+ <script src="_static/searchtools.js"></script>
+ <script src="_static/language_data.js"></script>
+ <script src="searchindex.js"></script>
+ <link rel="index" title="Index" href="genindex.html" />
+ <link rel="search" title="Search" href="#" />
+ <meta name="viewport" content="width=device-width, initial-scale=1"/>
+ <meta name="docsearch:language" content="en"/>
+ </head>
+
+
+ <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode="">
+
+
+
+ <a class="skip-link" href="#main-content">Skip to main content</a>
+
+ <input type="checkbox"
+ class="sidebar-toggle"
+ name="__primary"
+ id="__primary"/>
+ <label class="overlay overlay-primary" for="__primary"></label>
+
+ <input type="checkbox"
+ class="sidebar-toggle"
+ name="__secondary"
+ id="__secondary"/>
+ <label class="overlay overlay-secondary" for="__secondary"></label>
+
+ <div class="search-button__wrapper">
+ <div class="search-button__overlay"></div>
+ <div class="search-button__search-container">
+<form class="bd-search d-flex align-items-center"
+ action="#"
+ method="get">
+ <i class="fa-solid fa-magnifying-glass"></i>
+ <input type="search"
+ class="form-control"
+ name="q"
+ id="search-input"
+ placeholder="Search the docs ..."
+ aria-label="Search the docs ..."
+ autocomplete="off"
+ autocorrect="off"
+ autocapitalize="off"
+ spellcheck="false"/>
+ <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span>
+</form></div>
+ </div>
+
+ <nav class="bd-header navbar navbar-expand-lg bd-navbar">
+<div class="bd-header__inner bd-page-width">
+ <label class="sidebar-toggle primary-toggle" for="__primary">
+ <span class="fa-solid fa-bars"></span>
+ </label>
+
+ <div class="navbar-header-items__start">
+
+ <div class="navbar-item">
+
+
+<a class="navbar-brand logo" href="index.html">
+
+
+
+
+
+
+
+
+
+ <img src="_static/logo-light.png" class="logo__image only-light" alt="Apache Arrow Flight SQL adapter for PostgreSQL"/>
+ <script>document.write(`<img src="_static/logo-dark.png" class="logo__image only-dark" alt="Apache Arrow Flight SQL adapter for PostgreSQL"/>`);</script>
+
+
+</a></div>
+
+ </div>
+
+
+ <div class="col-lg-9 navbar-header-items">
+
+
+ <div class="navbar-header-items__end">
+
+ <div class="navbar-item navbar-persistent--container">
+
+<script>
+document.write(`
+ <button class="btn btn-sm navbar-btn search-button search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
+ <i class="fa-solid fa-magnifying-glass"></i>
+ </button>
+`);
+</script>
+ </div>
+
+
+ <div class="navbar-item">
+<script>
+document.write(`
+ <button class="theme-switch-button btn btn-sm btn-outline-primary navbar-btn rounded-circle" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
+ <span class="theme-switch" data-mode="light"><i class="fa-solid fa-sun"></i></span>
+ <span class="theme-switch" data-mode="dark"><i class="fa-solid fa-moon"></i></span>
+ <span class="theme-switch" data-mode="auto"><i class="fa-solid fa-circle-half-stroke"></i></span>
+ </button>
+`);
+</script></div>
+
+ <div class="navbar-item"><ul class="navbar-icon-links navbar-nav"
+ aria-label="Icon Links">
+ <li class="nav-item">
+
+
+
+
+
+
+
+
+ <a href="https://github.com/apache/arrow-flight-sql-postgresql" title="GitHub" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-github"></i></span>
+ <label class="sr-only">GitHub</label></a>
+ </li>
+</ul></div>
+
+ <div class="navbar-item">
+<script>
+document.write(`
+ <div class="version-switcher__container dropdown">
+ <button type="button" class="version-switcher__button btn btn-sm navbar-btn dropdown-toggle" data-bs-toggle="dropdown">
+ 0.1.0 <!-- this text may get changed later by javascript -->
+ <span class="caret"></span>
+ </button>
+ <div class="version-switcher__menu dropdown-menu list-group-flush py-0">
+ <!-- dropdown will be populated by javascript on page load -->
+ </div>
+ </div>
+`);
+</script></div>
+
+ </div>
+
+ </div>
+
+
+ <div class="navbar-persistent--mobile">
+<script>
+document.write(`
+ <button class="btn btn-sm navbar-btn search-button search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
+ <i class="fa-solid fa-magnifying-glass"></i>
+ </button>
+`);
+</script>
+ </div>
+
+
+
+</div>
+
+ </nav>
+
+ <div class="bd-container">
+ <div class="bd-container__inner bd-page-width">
+
+ <div class="bd-sidebar-primary bd-sidebar hide-on-wide">
+
+
+
+ <div class="sidebar-header-items sidebar-primary__section">
+
+
+
+
+ <div class="sidebar-header-items__end">
+
+ <div class="navbar-item">
+<script>
+document.write(`
+ <button class="theme-switch-button btn btn-sm btn-outline-primary navbar-btn rounded-circle" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
+ <span class="theme-switch" data-mode="light"><i class="fa-solid fa-sun"></i></span>
+ <span class="theme-switch" data-mode="dark"><i class="fa-solid fa-moon"></i></span>
+ <span class="theme-switch" data-mode="auto"><i class="fa-solid fa-circle-half-stroke"></i></span>
+ </button>
+`);
+</script></div>
+
+ <div class="navbar-item"><ul class="navbar-icon-links navbar-nav"
+ aria-label="Icon Links">
+ <li class="nav-item">
+
+
+
+
+
+
+
+
+ <a href="https://github.com/apache/arrow-flight-sql-postgresql" title="GitHub" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-github"></i></span>
+ <label class="sr-only">GitHub</label></a>
+ </li>
+</ul></div>
+
+ <div class="navbar-item">
+<script>
+document.write(`
+ <div class="version-switcher__container dropdown">
+ <button type="button" class="version-switcher__button btn btn-sm navbar-btn dropdown-toggle" data-bs-toggle="dropdown">
+ 0.1.0 <!-- this text may get changed later by javascript -->
+ <span class="caret"></span>
+ </button>
+ <div class="version-switcher__menu dropdown-menu list-group-flush py-0">
+ <!-- dropdown will be populated by javascript on page load -->
+ </div>
+ </div>
+`);
+</script></div>
+
+ </div>
+
+ </div>
+
+
+ <div class="sidebar-primary-items__end sidebar-primary__section">
+ </div>
+
+ <div id="rtd-footer-container"></div>
+
+
+ </div>
+
+ <main id="main-content" class="bd-main">
+
+
+ <div class="bd-content">
+ <div class="bd-article-container">
+
+ <div class="bd-header-article"></div>
+
+
+ <div class="bd-search-container">
+ <h1>Search</h1>
+ <noscript>
+ <div class="admonition error">
+ <p class="admonition-title">Error</p>
+ <p>Please activate JavaScript to enable the search functionality.</p>
+ </div>
+ </noscript>
+
+<form class="bd-search d-flex align-items-center"
+ action="#"
+ method="get">
+ <i class="fa-solid fa-magnifying-glass"></i>
+ <input type="search"
+ class="form-control"
+ name="q"
+ id="search-input"
+ placeholder="Search the docs ..."
+ aria-label="Search the docs ..."
+ autocomplete="off"
+ autocorrect="off"
+ autocapitalize="off"
+ spellcheck="false"/>
+ <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span>
+</form>
+ <div id="search-results"></div>
+ </div>
+ <script>
+ // Activate the search field on page load
+ let searchInput = document.querySelector("form.bd-search input");
+ if (searchInput) {
+ searchInput.focus();
+ searchInput.select();
+ console.log("[PST]: Set focus on search field.");
+ }
+ </script>
+
+
+
+ <footer class="bd-footer-article">
+
+<div class="footer-article-items footer-article__inner">
+
+ <div class="footer-article-item"><!-- Previous / next buttons -->
+<div class="prev-next-area">
+</div></div>
+
+</div>
+
+ </footer>
+
+ </div>
+
+
+
+
+ </div>
+ <footer class="bd-footer-content">
+
+ </footer>
+
+ </main>
+ </div>
+ </div>
+
+ <!-- Scripts loaded after <body> so the DOM is not blocked -->
+ <script src="_static/scripts/bootstrap.js?digest=e353d410970836974a52"></script>
+<script src="_static/scripts/pydata-sphinx-theme.js?digest=e353d410970836974a52"></script>
+
+ <footer class="bd-footer">
+<div class="bd-footer__inner bd-page-width">
+
+ <div class="footer-items__start">
+
+ <div class="footer-item">
+ <p class="copyright">
+
+ © Copyright 2022-2023, Apache Arrow Developers.
+ <br/>
+
+ </p>
+</div>
+
+ <div class="footer-item">
+ <p class="sphinx-version">
+ Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.2.4.
+ <br/>
+ </p>
+</div>
+
+ </div>
+
+
+ <div class="footer-items__end">
+
+ <div class="footer-item"><p class="theme-version">
+ Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.13.3.
+</p></div>
+
+ </div>
+
+</div>
+
+ </footer>
+ </body>
+</html>
\ No newline at end of file
diff --git a/devel/searchindex.js b/devel/searchindex.js
new file mode 100644
index 0000000..30876e2
--- /dev/null
+++ b/devel/searchindex.js
@@ -0,0 +1 @@
+Search.setIndex({"docnames": ["client", "configuration", "index", "install", "overview", "release-notes"], "filenames": ["client.md", "configuration.md", "index.md", "install.md", "overview.md", "release-notes.md"], "titles": ["Client", "Configuration", "Apache Arrow Flight SQL adapter for PostgreSQL", "Install", "Overview", "Release notes"], "terms": {"you": [0, 1, 3, 4], "must": [0, 1], "specifi": 0, "postgresql": [0, 1, 3, 4], "user": 0, "databas": [0, 4], "apach": [0, 1, 3, 4], "arro [...]
\ No newline at end of file
diff --git a/index.html b/index.html
index 66b2719..b1fa92d 100644
--- a/index.html
+++ b/index.html
@@ -1,7 +1,25 @@
<!DOCTYPE html>
+<!--
+ 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.
+-->
<html>
<head>
- <meta http-equiv="Refresh" content="0; url=current/index.html">
+ <meta http-equiv="Refresh" content="0; url=current/">
</head>
<body>
</body>