Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: databricks/databricks-sql-python
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: main
Choose a base ref
...
head repository: databricks/databricks-sql-python
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: adbc-rust-backend
Choose a head ref
Checking mergeability… Don’t worry, you can still create the pull request.
  • 1 commit
  • 4 files changed
  • 1 contributor

Commits on Apr 29, 2026

  1. feat(backend): route use_sea=True through ADBC-Rust kernel via PyO3

    Adds a new backend, `AdbcDatabricksClient`, that delegates query
    execution to the `databricks_adbc_pyo3` extension module (PyO3 bindings
    over the Databricks ADBC Rust kernel). When `use_sea=True` is passed
    to `sql.connect`, requests now flow through the Rust kernel instead of
    the existing Python-SEA backend.
    
    This is the Python-side companion to the satellite PyO3 binding being
    prototyped in adbc-drivers/databricks#423. **Draft** while that binding
    is not yet on PyPI — `import databricks_adbc_pyo3` will fail unless the
    binding is installed locally via `maturin develop`.
    
    What's wired through the public API:
      - sql.connect(..., use_sea=True)                  → Rust kernel
      - cursor.execute(...)                             → SEA + CloudFetch
      - cursor.fetchone() / fetchmany(n) / fetchall()   → Row tuples
      - cursor.fetchall_arrow() / fetchmany_arrow(n)    → pyarrow.Table
      - cursor.description                              → PEP-249 7-tuples
      - iteration (`for row in cursor`), context mgrs
    
    What is NOT yet wired (raises NotImplementedError):
      - Parameterized queries (`parameters=[...]`)
      - Async execution (`async_op=True`)
      - Metadata methods (catalogs, schemas, tables, columns)
    
    Auth: PAT only for now; OAuth M2M / U2M / Azure SP / external credential
    providers are not yet plumbed through the Rust binding.
    
    Code layout:
      src/databricks/sql/backend/adbc/
        __init__.py       — re-exports AdbcDatabricksClient
        client.py         — DatabricksClient impl, delegates to PyO3
        result_set.py     — ResultSet impl over the streaming PyO3
                            ResultSet, with batch buffering for fetchone /
                            fetchmany.
    
    The old `backend/sea/` tree is left in place and unreachable from
    sql.connect; deletion is a separate cleanup once this backend reaches
    parity.
    vikrantpuppala committed Apr 29, 2026
    Configuration menu
    Copy the full SHA
    eebce74 View commit details
    Browse the repository at this point in the history
Loading