Skip to content

Add RFC for ADBC Driver for Presto - #65

Open
jja725 wants to merge 4 commits into
prestodb:mainfrom
jja725:adbc-driver-rfc
Open

Add RFC for ADBC Driver for Presto#65
jja725 wants to merge 4 commits into
prestodb:mainfrom
jja725:adbc-driver-rfc

Conversation

@jja725

@jja725 jja725 commented Jul 31, 2026

Copy link
Copy Markdown

Summary

This RFC proposes an official ADBC (Arrow Database Connectivity) driver for Presto, implemented in Go on top of the ADBC driverbase-go framework and wrapping the Presto Go client v2 (RFC-0022).

  • Enables any ADBC-capable application (Python, R, Go, C/C++, Rust, Java) to query Presto and receive Arrow record batches through the standard ADBC driver manager
  • Requires no server-side changes — pure client-side component
  • Follows the same architecture as the existing Trino ADBC driver in the adbc-drivers organization
  • A working prototype exists at jja725/adbc-presto with 85 passing integration tests

Related:

jja725 and others added 2 commits July 31, 2026 00:17
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@jja725

jja725 commented Jul 31, 2026

Copy link
Copy Markdown
Author

@ethanyzhang @aditi-pandit would appreciate your feedback

@aditi-pandit
aditi-pandit requested review from BryanCutler, aditi-pandit and pdabre12 and a balanced review from Copilot August 17, 2026 17:15
Copilot stopped reviewing on behalf of aditi-pandit due to an error August 17, 2026 17:35

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Adds a new RFC proposing an official ADBC (Arrow Database Connectivity) driver for Presto, describing motivation, architecture, type mapping, packaging, and test/adoption plans.

Changes:

  • Introduces an RFC document outlining a Go-based ADBC driver for Presto built on driverbase-go and the Presto Go client v2.
  • Documents connection URI forms, TLS/auth behavior, and Presto-specific behavioral differences vs Trino.
  • Specifies an adoption plan and existing prototype test strategy.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread RFC-0026-adbc-driver-for-presto.md Outdated
Comment on lines +94 to +107
| Presto type | Arrow type (canonical, per `presto-common-arrow`) |
|---|---|
| `BOOLEAN` | `Bool` |
| `TINYINT` / `SMALLINT` / `INTEGER` / `BIGINT` | `Int8` / `Int16` / `Int32` / `Int64` |
| `REAL` / `DOUBLE` | `Float32` / `Float64` |
| `DECIMAL(p,s)` | `Decimal128(p,s)` |
| `VARCHAR` / `CHAR` | `Utf8` |
| `VARBINARY` | `Binary` |
| `DATE` | `Date32` |
| `TIME` | `Time` |
| `TIMESTAMP` | `Timestamp(ms)` |
| `ARRAY(T)` | `List` |
| `MAP(K,V)` | `Map` |
| `ROW(...)` | `Struct` |
Comment thread RFC-0026-adbc-driver-for-presto.md Outdated
Comment on lines +111 to +115
| Presto type | Initial driver mapping | Reason |
|---|---|---|
| `DECIMAL(p,s)` | `Utf8` (decimal string) | REST returns decimals as JSON strings; lossless as text |
| `ARRAY` / `MAP` / `ROW` | `Utf8` (JSON) | REST returns nested values as JSON; Go client exposes them as strings |
| `TIMESTAMP` / `TIME` | millisecond precision | Presto's REST responses carry millisecond precision |
Comment thread RFC-0026-adbc-driver-for-presto.md Outdated
Comment on lines +103 to +108
| `TIME` | `Time` |
| `TIMESTAMP` | `Timestamp(ms)` |
| `ARRAY(T)` | `List` |
| `MAP(K,V)` | `Map` |
| `ROW(...)` | `Struct` |

Comment thread RFC-0026-adbc-driver-for-presto.md Outdated
|---|---|---|
| `DECIMAL(p,s)` | `Utf8` (decimal string) | REST returns decimals as JSON strings; lossless as text |
| `ARRAY` / `MAP` / `ROW` | `Utf8` (JSON) | REST returns nested values as JSON; Go client exposes them as strings |
| `TIMESTAMP` / `TIME` | millisecond precision | Presto's REST responses carry millisecond precision |
@@ -0,0 +1,159 @@
# RFC: ADBC Driver for Presto

Proposers
jja725 added 2 commits August 17, 2026 14:03
… add ADBC API coverage

- Renumber to RFC-0027 (RFC-0026 is claimed by prestodb#64, the
  companion server-side ADBC connector RFC)
- Clarify that the presto-common-arrow mapping is Arrow-to-Presto and the
  driver defines the inverse direction, owning the CHAR extension
- Replace the partial deviation table with the complete result mapping:
  TIMESTAMP/TIME WITH TIME ZONE, intervals, IPADDRESS, UUID extension
  type, UNKNOWN, and an explicit Utf8 fallback rule for all other types
- Document nullability and field-metadata guarantees, SQL NULL vs JSON
  null semantics, and a planned opt-in Decimal128 decoding option
- Add an ADBC API coverage matrix (prepare, binding, transactions,
  cancellation, ExecutePartitions, Substrait)
- Enumerate recognized URI parameters, note the passthrough convention is
  inherited from the Go client v2 DSN, and document the loud failure mode
  for mistyped options
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants