Citus into Apache Arrow through ADBC, using psqlodbc 16 — distributed tables included (adbcBridge 0.1.0) #8811
singhpratech
started this conversation in
Show and tell
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
adbcBridge is a small Apache-2.0 ADBC driver written in C11 that loads an ODBC driver and exposes it through the Arrow ADBC C ABI: block-cursor reads straight into Arrow record batches, bulk ingest, metadata, partitioned parallel reads. I ran Citus through it as one of 46 databases in a single compatibility workload and wanted to share the entry here.
What was verified (Citus 14.1 on PostgreSQL 18; driver: psqlodbc 16):
What the compatibility entry records: no quirks. Citus is an extension on stock PostgreSQL, so the array-ingest form applies and is used, distributed tables included — the entry also ingests into and reads back a
create_distributed_table()hash-distributed table. A fresh single node needs no registration:create_distributed_table()registers the coordinator itself withshouldhaveshardson; if the coordinator was registered withcitus_set_coordinator_host()alone,shouldhaveshardshas to be set too, orcreate_distributed_table()fails withreplication_factor (1) exceeds number of worker nodes (0)(Citus 14.1.0 on PostgreSQL 18.4,citusdata/citus:latest). Measured: ingest 107k rows/s (array binding), fetch 1.86M rows/s. Full entry: docs/COMPATIBILITY.md.The
postgresqlADBC driver may also work with Citus over its wire protocol; this path goes through psqlodbc and records exactly what it needed, so it is a second, documented route rather than a replacement.Trying it (Python; Rust, Go, Java, C# and R are on the docs site):
Links: repository · docs · upstream notes · PyPI
It is a 0.1.0. If the entry says something wrong about Citus, or you run a version or driver I didn't, an issue on the repository with the details is the most useful thing you could send.
All reactions