- Transparently auto-recover Thrift connections to Reyden / Real-Time warehouses: when a warehouse rejects the default Thrift protocol (SQLSTATE
KP001), the session is re-opened on the SEA/kernel backend and the warehouse is remembered so later connections skip Thrift. Applies only when no backend was chosen explicitly (WithUseKernel). Note: recovery requires adatabricks_kernelbuild, since the kernel backend is otherwise not linked in.
- Pin the seven per-platform kernel bindings modules to v1.0.0.
- Disable kernel telemetry by default when
enableTelemetryis unset; explicittrueandfalsevalues are unchanged (#464). - Bump
golang.org/x/cryptoto v0.55.0 for security scanning (#464).
- New experimental SEA/kernel backend (opt-in). Set
WithUseKernel(true)(oruseKernel=truein the DSN) to route execution through the Statement Execution API instead of Thrift, backed by the Rustdatabricks-sql-kernelover cgo. It requires a build with-tags databricks_kernelandCGO_ENABLED=1; the default Thrift build is unchanged and returns a clear error if the kernel backend is selected without the tag. The prebuilt kernel binaries ship as per-platform Go modules, sogo getpulls the one for your platform automatically — no Rust toolchain or build step — across 7 platforms (linux amd64/arm64/arm, darwin amd64/arm64, windows amd64/arm64). Kernel-backend features in this release: mTLS client certificates (WithKernelClientCertificate), identity federation (WithFederatedTokenProvider*), U2M on-disk token cache (WithTokenCache), configurable request timeout, opt-in lossy float64 decimals (WithKernelDecimalAsFloat),GetArrowBatcheson the publicRowsinterface, kernel logs routed through the driver logger, cause-categorized telemetry errors, and an Azure U2M OAuth fix (#393, #399, #412, #440). - Bump
golang.org/x/modto v0.40.0 to clear CVE-2026-56864 / CVE-2026-56865 (#460)
- Minimum Go version is now 1.25.0 (previously 1.20): the
godirective was raised to 1.25.0 while clearing OSV-Scanner findings and updating dependencies. Consumers building with an older toolchain will need to upgrade Go (#368) - Fix panic in
InitThriftClientwhen the endpoint URL is malformed: the thrift transport was type-asserted to*thrift.THttpClientbefore the error fromNewTHttpClientWithOptionswas checked, so a URL that fails to parse (nil transport) causedinterface conversion: thrift.TTransport is nil, not *thrift.THttpClient; the error is now returned instead (#394) - Stop using
html/templatein the U2M OAuth callback page. Reachable use ofhtml/templatedisabled the Go linker's dead-code elimination for the entire binary of any application importing this driver; the page is now rendered with plain string building and explicit HTML escaping, restoring full DCE (#343) - Fix DECIMAL precision loss inside complex types: DECIMAL values nested in STRUCT, ARRAY, and MAP columns are now rendered losslessly with their exact scale (e.g.
19.99instead of19.990000000000002), matching the behavior of top-level DECIMAL columns (#253)
- Expose native Arrow decimal handling: add the
WithArrowNativeDecimalconnector option and theuseArrowNativeDecimalDSN parameter so DECIMAL columns can be returned as native Arrowdecimal128(viaGetArrowBatches) instead of strings. When scanned throughdatabase/sql, native DECIMAL values are returned as lossless, scale-applied strings (#274)
- Add SPOG (unified) host support: extract the org-id from the cluster HTTP path for non-Thrift requests, and fix U2M/M2M OAuth on unified AWS hosts (#367, #374)
- Cap CloudFetch Arrow batches to the server-declared row count to avoid over-reading (#372)
- Detach result streaming from
QueryContextcancellation so in-flight results aren't dropped when the query context is cancelled (#373)
- Retry transient S3 errors in CloudFetch downloads and staging PUT/GET/REMOVE operations (#355, #361)
- Telemetry: normalize host key for per-host client + breaker registries; stop retrying into 429s, honour Retry-After, fix userAgent (#354, #364)
- Bump dependencies to clear Go-1.20-compatible CVEs: golang-jwt, x/net, protobuf, go-jose v3.0.5 (CVE-2026-34986) (#360, #363)
- Fix CloudFetch goroutine leak that retained Arrow buffers after Close (#357)
- Enable telemetry by default with DSN-controlled priority (#320, #321, #322, #349)
- Add SPOG (Custom URL) routing support via
x-databricks-org-idheader (#347) - Add statement-level query tag support (#341)
- Add AI coding agent detection to User-Agent header (#326)
- Fix CloudFetch returning stale column names from cached results (#351)
- Fix resource leak: close staging Rows in execStagingOperation (#325)
- Add token federation / token provider support for OAuth (#290, #291, #292)
- Internal: add foundational telemetry infrastructure, disabled by default (#297, #304, #305, #311, #319)
- Fix type inference for int64/uint64 (BIGINT) and float64 (DOUBLE) (#316)
- Fix context loss in polling and connection close operations (#295)
- CloudFetch: allow configuration of HTTP client (#308)
- Add metric view metadata support (#286)
- Added support for query tags
- Passing session params in open session request instead of SET commands (#283)
- Add Arrow IPC Iterator
- Add schema to ArrowBatchIterator (#267)
- Update thrift client library after cleaning up unused fields and structs (#268)
- Add nil handling for isStagingOperation to handle older DBR versions (#266)
- Security: Fix CVE-2024-45337 - Update golang.org/x/crypto (#264)
- Enable cloud fetch mode by default (#260)
- Handle thrift protocol version for conditional feature support (direct results, LZ4 compression, Arrow support, parameterized queries) (#261)
- Support positional query parameters (#247)
- Add custom auth headers into cloud fetch request (#249)
- Security: GO-2024-2947 - Update go-retryablehttp (#251)
- Security: CVE-2025-27144 - Resolve vulnerability in go-jose (#258)
- Bugfix: Handle incorrect EOF in fetchResultPage when TFetchResults call fails with an error (#255)
- Fix CloudFetch "row number N is not contained in any arrow batch" error (#234)
- Security: Resolve HIGH vulnerability in x/net (CVE-2023-39325) (#233 by @anthonycrobinson)
- Expose
dbsql.ConnOptiontype (#202 by @shelldandy) - Fix a connection leak in PingContext (#240 by @jackyhu-db)
- Added connection option
WithSkipTLSHostVerify(#225 by @jackyhu-db)
- Fix: handle
nilvalues passed as query parameter (#199 by @esdrasbeleza) - Fix: provide content length on staging file put (#217 by @candiduslynx)
- Fix formatting of *float64 parameters (#215 by @esdrasbeleza)
- Fix: use correct tenant ID for different Azure domains (#210 by @tubiskasaroos)
- Added OAuth support for GCP (#189 by @rcypher-databricks)
- Staging operations: stream files instead of loading into memory (#197 by @mdibaiee)
- Staging operations: don't panic on REMOVE (#205 by @candiduslynx)
- Fix formatting of Date/Time query parameters (#207 by @candiduslynx)
- Bug fix for ArrowBatchIterator.HasNext(). Incorrectly returned true for result sets with zero rows.
- Added .us domain to inference list for AWS OAuth
- Bug fix for OAuth m2m scopes, updated m2m authenticator to use "all-apis" scope.
- Logging improvements
- Added handling for staging remove
- Named parameter support
- Better handling of bad connection errors and specifying server protocol
- OAuth implementation
- Expose Arrow batches to users
- Add support for staging operations
- Improve error information when query terminates in unexpected state
- Do not override global logger time format
- Enable Transport configuration for http client
- fix: update arrow to v12
- Updated doc.go for retrieving query id and connection id
- Bug fix issue 147: BUG with reading table that contains copied map
- Allow WithServerHostname to specify protocol
- bug fix for panic when executing non record producing statements using DB.Query()/DB.QueryExec()
- allow client provided authenticator
- more robust retry behaviour
- bug fix for null values in complex types
- Improved error types and info
- Feat: Support ability to retry on specific failures
- Fetch results in arrow format
- Improve error message and retry behaviour
Fixing cancel race condition
- Package doc (doc.go)
- Handle FLOAT values as float32
- Fix for result.AffectedRows
- Use new ctx when closing operation after cancel
- Set default port to 443
- Package doc (doc.go)
- Handle FLOAT values as float32
- Fix for result.AffectedRows
- Add or edit documentation above methods
- Tweaks to readme
- Use new ctx when closing operation after cancel
- Handle parsing negative years in dates
- fix thread safety issue
- Don't ignore error in InitThriftClient
- Close optimization for Rows
- Close operation after executing statement
- Minor change to examples
- P&R improvements
- Fix thread safety issue in connector
- Support for DirectResults
- Support for context cancellation and timeout
- Session parameters (e.g.: timezone)
- Thrift Protocol update
- Several logging improvements
- Added better examples. See workflow
- Added dbsql.NewConnector() function to help initialize DB
- Many other small improvements and bug fixes
- Removed support for client-side query parameterization
- Removed need to start DSN with "databricks://"
- Fix: Could not fetch rowsets greater than the value of
maxRows(#18) - Updated default user agent
- Updated README and CONTRIBUTING
- Add escaping of string parameters.
- Fix timeout units to be milliseconds instead of nanos.
- Fix module name
- Initial release