Skip to content

About

Generic ODBC driver for Warp SQL over HTTP/HTTPS and Apache Arrow IPC

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Warp SQL ODBC

Build and tests Release Apache 2.0

The generic Warp SQL ODBC driver connects ODBC applications to any compatible Warp SQL server over HTTP/HTTPS, using the native C++ client and Apache Arrow IPC. It has no Flight SQL, gRPC or protobuf transport.

It retains the GizmoSQL ODBC driver's ODBC compatibility layer and regression suites. Product drivers build this code and supply only their branding, URI translation and session initialization hooks. Hardcharger ODBC is one such wrapper.

Install

On macOS 15+ (Apple Silicon), install and register the driver with brew install gizmodata/tap/warpsql-odbc.

Or download a package from Releases.

Platform Package
Windows x64 Warp-SQL-ODBC-Driver-x64.msi, signed DLL and ZIP
macOS 15+ (Apple Silicon) warpsql-odbc-macos-arm64.tar.gz
Linux x64 warpsql-odbc-linux-amd64.tar.gz
Linux ARM64 warpsql-odbc-linux-arm64.tar.gz

The Windows MSI installs and registers Warp SQL ODBC Driver. Both DLL and MSI are signed with GizmoData's EV code-signing certificate, SHA-256 and an RFC 3161 timestamp. Publication requires Authenticode Valid, signtool verify /pa, installation and live tests through the installed signed driver.

On macOS install unixODBC (brew install unixodbc). Linux requires unixODBC and glibc 2.39 or later (Ubuntu 24.04 or equivalent). Extract the archive into a permanent directory, then register the library in odbcinst.ini (odbcinst -j shows its location):

[Warp SQL ODBC Driver]
Description = Warp SQL ODBC Driver
Driver = /absolute/path/lib/libwarpsql-odbc.dylib

Use libwarpsql-odbc.so on Linux. Arrow, Warp SQL, Boost and OpenSSL are linked statically; unixODBC's installer library and the platform C/C++ runtime are system dependencies.

Connect

import pyodbc

with pyodbc.connect(
    "Driver={Warp SQL ODBC Driver};"
    "uri=warp://localhost:31337?tls=false;"
    "uid=hardcharger;pwd=change-me;",
    autocommit=True,
) as connection:
    print(connection.execute("SELECT CAST(? AS VARCHAR), 42", "hello").fetchone())
URI Meaning
warp://host HTTPS, port 443, base path /warp
warp://host:31337?tls=false Explicit plain HTTP
https://host:port/custom/warp HTTPS at a custom protocol mount
http://host:port Plain HTTP, default port 80

TLS is on by default and never falls back to plaintext. Credentials belong in ODBC properties, never the URI. Only warp:// accepts the tls query parameter; unknown or duplicate parameters, fragments and invalid ports are refused without echoing credentials. IPv6 addresses use brackets. Explicit ODBC properties override URI values. The generic driver refuses product schemes; use the Hardcharger wrapper for hardcharger://.

ODBC host/port connection strings and DSNs are supported too:

[Warp SQL]
Driver = Warp SQL ODBC Driver
uri = warp://db.example.com:31337
uid = your-username
pwd = your-password

Options

Property names are case insensitive. Standard ODBC braces and doubled closing braces escape values containing semicolons or braces.

Property Default Meaning
uri warp://, https:// or http:// connection URI
host, port localhost, 443 Connection address when no URI supplies one
uid / user / user id, pwd / password Password credentials
authType basic basic/password, token/access_token, token_exchange, external, client_certificate/mtls
token Bearer access token, or IdP subject token for token_exchange
useEncryption true HTTPS; set false explicitly for HTTP
trustedCerts system trust PEM CA bundle path
disableCertificateVerification false Development-only verification bypass
clientCertificate, clientKey PEM mutual-TLS certificate and key
basePath /warp Protocol mount path
defaultCatalog, defaultSchema server defaults Initial session catalog and schema
queryTag JSON object sent as Warp SQL's query tag
oauthTimeoutSeconds, oauthBrowser 300, system browser Browser sign-in deadline and browser executable (none prints the URL)
StringColumnLength 1024 fallback Variable-length column size
UseWideChar true Windows; false Unix Report strings as wide ODBC types

Browser and certificate sign-in require the corresponding server capabilities. Password and certificate credentials renew through the native client; external access tokens and browser sign-ins need fresh credentials when they expire. SQL_ATTR_LOGIN_TIMEOUT controls connection establishment. SQL_ATTR_QUERY_TIMEOUT sets the server statement timeout. SQLCancel interrupts execution or fetch through Warp SQL.

Prepared parameters, row binding, SQLGetData, catalog/schema/table/column/type discovery, primary and foreign keys, commit and rollback are supported. pyodbc defaults to autocommit off: commit or roll back explicitly. Changing autocommit off to on commits; disconnect rolls back.

Build, tests and product wrappers

See BUILDING.md, test parity and RELEASING.md. The inherited suites run against a real released Hardcharger 2.0.0 server on all four platforms, over HTTP and verified TLS.

Product wrappers pin this repository as a submodule, set WARP_ODBC_PROFILE_SOURCE, WARP_ODBC_LIBRARY_NAME and WARP_ODBC_PRODUCT_NAME, then add_subdirectory it. The profile implements GetDriverProfile, TranslateProductUri and InitializeProductSession from driver_profile.h. WARP_ODBC_PROFILE_TEST_SOURCES adds wrapper tests to the same unit binary. The reusable CI workflow runs the same core suites, optional wrapper suites, packaging, signing and release gates. Wrappers ship one self-contained library, without a separate generic-driver installation or a second copy of the ODBC implementation.

License

Apache-2.0; see LICENSE and NOTICE. The ODBC layer derives from Dremio and GizmoData's GizmoSQL driver. Binary packages include complete dependency licenses. Native dependencies are pinned: Warp SQL 1.0.1, Arrow 26.0.0, Boost 1.92.0 (Unix), spdlog 1.17.0 and GoogleTest 1.14.0; Windows uses the pinned vcpkg baseline in CI.

GizmoData
Built by GizmoData™

About

Generic ODBC driver for Warp SQL over HTTP/HTTPS and Apache Arrow IPC

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages