← All databases

Database · PostgreSQL wire

ArcadeDB into Apache Arrow with ADBC

ArcadeDB 26.9 (PostgreSQL wire), read and written through adbcBridge — the ADBC driver that loads the database's ODBC driver — read-only on Linux, macOS arm64 and Windows x64. Everything below is the compatibility matrix's record for this row.

Status

Linux✓ read

PASS

macOS arm64✓ read

PASS (ArcadeDB, PostgreSQL wire 12.0.0; read-only fixture)

Windows x64✓ read

PASS (ArcadeDB, PostgreSQL wire 12.0.0; psqlodbc 18.00.0002; read-only fixture)

Driver and connection string

ODBC driver
psqlodbc 16 (PG wire)
Wire
PostgreSQL wire
adbcBridge
0.1.3 (release)

The connection string the matrix used, as the connection strings reference records it (PostgreSQL wire); {drv} is the driver library or its name from odbcinst.ini, and the host, port and credentials are the test server's.

Driver={drv};Server=127.0.0.1;Port=15441;Database=adbc;Uid=root;Pwd=Adbc2026;BoolsAsChar=0;

Python

import adbcbridge

# {drv}: the ODBC driver library (path), or its name from odbcinst.ini
conn = adbcbridge.connect(uri="Driver={drv};Server=127.0.0.1;Port=15441;Database=adbc;Uid=root;Pwd=Adbc2026;BoolsAsChar=0;")
with conn.cursor() as cur:
    cur.execute("SELECT * FROM my_table")
    table = cur.fetch_arrow_table()      # pyarrow.Table

Polars and pandas

import polars as pl, pandas as pd

df = pl.read_database("SELECT * FROM my_table", connection=conn)   # Polars, Arrow-native
pdf = pd.read_sql("SELECT * FROM my_table", conn)                   # pandas 2.2+, ADBC connection

pip install adbcbridge brings the driver library; the ArcadeDB ODBC driver is installed the way its vendor documents, then named in Driver=. Rust, Go, C# and Java use the same connection string through their ADBC driver managers — see the docs.

What the matrix recorded

multi-model engine behind the PG wire: no CREATE TABLE at all (a table is a document type plus one CREATE PROPERTY per column), so adbc_ingest's generated DDL has nowhere to go and the entry runs the read side — queries, parameters and the catalog all work; driver quirks handled: psqlodbc's SQLColumns and SQLTables(SQL_ALL_TABLE_TYPES) are queries its parser will not run -- SQLColumns answers SQL_SUCCESS with zero rows, SQLTables(SQL_ALL_TABLE_TYPES) answers SQL_ERROR -- so GetObjects describes a zero-row SELECT and GetTableTypes falls back to the types the server's own tables have; BoolsAsChar=0, ISO-8601 T timestamp literals, @rid/@type/@cat in every SELECT *; also traverses a small graph (vertices, edges, expand(out())); fetch 332k rows/s.

What this stack needed

Read next