← All databases

Database · MySQL wire

SingleStore into Apache Arrow with ADBC

SingleStore 9.1.1 (MySQL 5.7.32 wire), read and written through adbcBridge — the ADBC driver that loads the database's ODBC driver — verified on Linux, macOS arm64 and Windows x64. Everything below is the compatibility matrix's record for this row.

Status

Linux✓ pass

PASS

macOS arm64✓ pass

PASS (MySQL (via ODBC) 05.07.000032, @@memsql_version 9.1.1; MariaDB Connector/ODBC 3.2.9 built from source against unixODBC 2.3.12 — MySQL's own connector is iODBC-only on macOS; server amd64-emulated, singlestoredb-dev has no arm64 manifest; fetch ~55k rows/s, ingest ~116k rows/s warm)

Windows x64✓ pass

PASS (MySQL (via ODBC) 5.7.32, @@memsql_version 9.1.1; MySQL Connector/ODBC 26.7.0 myodbc26w.dll, the entry verbatim with NO_SSPS=1 from the placeholder; singlestoredb-dev runs native amd64 under Docker Desktop, healthy in ~15 s; fetch 720–780k rows/s, ingest 61k rows/s on the first run and 107k warm — SingleStore compiles each query shape on first sight, as on Linux)

Driver and connection string

ODBC driver
MySQL Connector/ODBC 9.4 (MySQL wire)
Wire
MySQL wire
adbcBridge
0.1.1 (release)

The connection string the matrix used, as the connection strings reference records it (MySQL 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=13320;User=root;Password=adbc;{plugin_dir}{no_ssps}

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=13320;User=root;Password=adbc;")
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 SingleStore 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

no driver quirks and no tolerance flag the mysql entry does not already have (TINYINT(1) booleans, ANSI_QUOTES) — a distributed HTAP engine whose tables are columnstore by default and whose MySQL mode takes that entry's types unchanged; columnstore and rowstore were probed side by side and behave identically on every point the workload checks.

What this stack needed

MeasuredVerified on Linux and macOS

Native ADBC driver, compared

SingleStore speaks the MySQL wire protocol, so the ADBC Driver Foundry's native MySQL ADBC driver (0.6.0) can be pointed at it too. On 2026-09-05 the same seven-step ADBC workload (connect, SELECT 1, DDL and inserts and a read, a 1,000-row adbc_ingest, table schema, catalog listing, read back) ran through both:

PathResultFirst error
Native ADBC driver✓ all seven steps
adbcBridge over ODBC✓ all seven steps

Where the native driver stops it is by design of that driver, not a defect of SingleStore; the full table for all 28 wire-compatible databases, with each first error, is in the note.

Read next